aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* audio_format: support packed 24 bit samplesMax Kellermann2010-01-169-1/+263
|
* output/alsa: probe all sample formats in a loopMax Kellermann2010-01-161-36/+34
| | | | | More code simplification. Probe all formats, no matter which input format.
* output/alsa: merged code into alsa_output_try_format()Max Kellermann2010-01-161-51/+71
| | | | | Remove the debug log messages, because they are duplicate (see ao_open() in output_thread.c).
* output/alsa: pass sample_format to get_bitformat()Max Kellermann2010-01-161-3/+3
|
* output/alsa: moved code to alsa_output_setup_format()Max Kellermann2010-01-161-72/+80
|
* decoder/flac: support streams without STREAMINFO blockMax Kellermann2010-01-062-1/+52
|
* decoder/flac: pass bits_per_sample to flac_sample_format()Max Kellermann2010-01-061-3/+3
| | | | Easier to reuse the function.
* decoder/flac: moved decoder initialization to _flac_common.cMax Kellermann2010-01-064-51/+23
| | | | | | Invoke decoder_initialized() in the libFLAC metadata callback. This merges code from the FLAC and the OggFLAC decoder plugin into the common library.
* decoder/flac: remember audio_format, not stream_infoMax Kellermann2010-01-064-25/+47
|
* decoder/flac: removed CUE sheet supportMax Kellermann2010-01-063-359/+1
| | | | This feature has been moved to the "flac" playlist plugin.
* playlist: added a FLAC playlist pluginMax Kellermann2010-01-063-0/+199
| | | | This playlist plugin handles FLAC files with embedded CUE sheets.
* decoder/flac: moved flac_tag_load() to flac_metadata.cMax Kellermann2010-01-063-53/+56
| | | | Make this code is reusable.
* tag: fixed memmove() size argument in tag_delete_item()Max Kellermann2010-01-061-1/+1
| | | | This function has always been broken, but fortunately nobody used it.
* playlist_queue: convert absolute pathsMax Kellermann2010-01-061-4/+16
| | | | Accept absolute paths if they point into the music directory.
* playlist_queue: use the "uri" variable earlierMax Kellermann2010-01-061-6/+7
| | | | Preparation for the next patch.
* input/rewind: enable the "rewind" wrapper for all non-seekable streamsMax Kellermann2010-01-042-15/+2
| | | | Don't limit the "rewind" input plugin to CURL streams.
* renamed decoder plugin sourcesMax Kellermann2010-01-0415-0/+0
| | | | Make it X_decoder_plugin.c.
* decoder/mad: fix build error without libid3tagMax Kellermann2010-01-041-1/+0
|
* replay_gain: moved code to replay_gain_config.cMax Kellermann2010-01-046-13/+7
|
* replay_gain: moved code to replay_gain_info.cMax Kellermann2010-01-049-52/+108
|
* replay_gain: refactor API, move code to replay_gain_state.cMax Kellermann2010-01-047-76/+207
| | | | | The replay_gain_state struct holds the precalculated scale factor, which is removed from struct replay_gain_info.
* decoder_api: added function decoder_replay_gain()Max Kellermann2010-01-0421-92/+99
| | | | | | This function replaces the replay_gain_info parameter for decoder_data(). This allows the decoder to announce replay gain changes, instead of having to pass the same object over and over.
* replay_gain: added function replay_gain_info_dup()Max Kellermann2010-01-042-0/+12
|
* replay_gain: removed overly verbose debug messageMax Kellermann2010-01-021-1/+0
| | | | Don't log "ReplayGain is missing".
* output_all: reset elapsed_time at song borderMax Kellermann2010-01-023-0/+16
| | | | | | | | Another quirk fixed: after the last chunk of a song has been played, the "elapsed_time" variable is set to the chunk's time stamp. When the client receives the PLAYER idle event and asks MPD for the current time stamp, MPD will return the last time stamp of the previous song when it hasn't played the first chunk of the current song yet.
* input_stream: return allocated input_stream objectsMax Kellermann2010-01-0121-299/+292
| | | | | | | | Major API redesign: don't let the caller allocate the input_stream object. Let each input plugin allocate its own (derived/extended) input_stream pointer. The "data" attribute can now be removed, and all input plugins simply cast the input_stream pointer to their own structure (with an "struct input_stream base" as the first attribute).
* Update copyright notices.Avuton Olrich2009-12-31382-383/+383
|
* decoder: switch a bunch of plugins to stream_tag()Max Kellermann2009-12-317-110/+45
| | | | | | | | | | This patch changes the following decoder plugins to implement stream_tag() instead of tag_dup(): faad, ffmpeg, mad, modplug, mp4ff, mpcdec, oggflac This simplifies their code, because they do not need to take care of opening/closing the stream.
* decoder_plugin: added method stream_tag()Max Kellermann2009-12-313-1/+49
| | | | | This is like tag_dup(), but works with an input_stream object instead of a file path.
* song_update: use decoder_plugin_tag_dup()Max Kellermann2009-12-311-1/+1
| | | | Minor code simplification.
* archive: use reference counting for archive+inputMax Kellermann2009-12-315-8/+32
| | | | | | | Make the input_stream implementation hold a reference on the archive_file object. Allow the caller to "close" the archive_file object immediately, no matter if the open_stream() method has succeeded or not.
* refcount: library for reference countingMax Kellermann2009-12-311-0/+66
|
* input/archive: don't initialize input_stream.readyMax Kellermann2009-12-314-2/+3
| | | | The archive plugin should decide this.
* archive/bz2: allocate buffer staticallyMax Kellermann2009-12-311-7/+3
| | | | Reduce the number of malloc()/free() calls.
* archive/bz2: added struct bz2_input_streamMax Kellermann2009-12-311-21/+32
| | | | Don't use the bz2_archive_file object for the input_stream.
* archive/iso9660: added struct iso9660_input_streamMax Kellermann2009-12-311-20/+32
| | | | Don't use the iso9660_archive_file object for the input_stream.
* archive/iso9660: set input_stream.{size,offset}Max Kellermann2009-12-311-8/+8
|
* archive/zzip: added struct zzip_input_streamMax Kellermann2009-12-311-19/+33
| | | | Don't use the zzip_archive object for the input_stream.
* archive/zzip: set input_stream.{size,offset}Max Kellermann2009-12-311-3/+5
|
* Merge vorbis+icy fixes from branch 'v0.15.x'Max Kellermann2009-12-309-185/+346
|\ | | | | | | | | | | | | | | | | Conflicts: Makefile.am NEWS configure.ac src/input/curl_input_plugin.c src/input_stream.c
| * input/curl: removed the built-in rewinding codeMax Kellermann2009-12-301-181/+10
| | | | | | | | This has been reimplemented in the "rewind" input plugin.
| * input/rewind: new input_stream wrapper to allow stream rewindingMax Kellermann2009-12-295-0/+312
| | | | | | | | | | | | | | | | | | | | | | | | This replaces the rewinding buffer code from the CURL input plugin. It is more generic, and allows rewinding even when the server sends Icy-Metadata (which would have been too difficult to implement within the CURL plugin). This is a rather complex patch for the stable branch (v0.15.x), but it fixes a serious problem: the "vorbis" decoder plugin was unable to play streams with Icy-Metadata, because it couldn't rewind the stream after detecting the codec (Vorbis vs. FLAC).
| * decoder/{ffmpeg,flac,vorbis}: added more flac/vorbis MIME typesMax Kellermann2009-12-294-4/+22
| | | | | | | | | | Support deprecated MIME types such as "audio/x-ogg". Support new types such as "audio/flac".
* | Merged release 0.15.7 from branch 'v0.15.x'Max Kellermann2009-12-273-5/+7
|\| | | | | | | | | | | | | Conflicts: NEWS configure.ac src/decoder_api.c
| * dbUtils: return multiple tag values per songMax Kellermann2009-12-271-1/+0
| | | | | | | | | | | | When collecting tag values for the result set, add all of a song's tag values of the searched type. This affects the "list" command. Previously, "list" only considered the first tag value of a song.
| * decoder_thread: eliminate jitter after seek failureMax Kellermann2009-12-261-1/+5
| | | | | | | | | | | | Don't clear the music pipe when seeking has failed - check the "seeking" flag instead of "command==SEEK". Clear the "seeking" flag in decoder_seek_error().
| * decoder/wavpack: allow fine-grained seekingMax Kellermann2009-12-261-3/+2
| | | | | | | | | | First multiply the floating point return value of decoder_seek_where(), then cast to integer.
* | playlist_list: wait for the input stream to become readyMax Kellermann2009-12-271-0/+10
| | | | | | | | Without this, seeking may cause MPD to crash.
* | playlist/cue: fill song.start_ms, .end_msMax Kellermann2009-12-271-0/+3
| | | | | | | | This patch adds practical usefulness to the CUE playlist plugin.
* | decoder, player: support song rangesMax Kellermann2009-12-272-5/+40
| | | | | | | | | | | | | | Seek the decoder to the start of the range before beginning with playback. Stop the decoder when the end of the range has been reached. Add the start position to the seek position. Expose the duration of the range, not the full song file.