aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2010-01-02replay_gain: removed overly verbose debug messageMax Kellermann1-1/+0
Don't log "ReplayGain is missing".
2010-01-02output_all: reset elapsed_time at song borderMax Kellermann3-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.
2010-01-01input_stream: return allocated input_stream objectsMax Kellermann21-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).
2009-12-31Update copyright notices.Avuton Olrich382-383/+383
2009-12-31decoder: switch a bunch of plugins to stream_tag()Max Kellermann7-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.
2009-12-31decoder_plugin: added method stream_tag()Max Kellermann3-1/+49
This is like tag_dup(), but works with an input_stream object instead of a file path.
2009-12-31song_update: use decoder_plugin_tag_dup()Max Kellermann1-1/+1
Minor code simplification.
2009-12-31archive: use reference counting for archive+inputMax Kellermann5-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.
2009-12-31refcount: library for reference countingMax Kellermann1-0/+66
2009-12-31input/archive: don't initialize input_stream.readyMax Kellermann4-2/+3
The archive plugin should decide this.
2009-12-31archive/bz2: allocate buffer staticallyMax Kellermann1-7/+3
Reduce the number of malloc()/free() calls.
2009-12-31archive/bz2: added struct bz2_input_streamMax Kellermann1-21/+32
Don't use the bz2_archive_file object for the input_stream.
2009-12-31archive/iso9660: added struct iso9660_input_streamMax Kellermann1-20/+32
Don't use the iso9660_archive_file object for the input_stream.
2009-12-31archive/iso9660: set input_stream.{size,offset}Max Kellermann1-8/+8
2009-12-31archive/zzip: added struct zzip_input_streamMax Kellermann1-19/+33
Don't use the zzip_archive object for the input_stream.
2009-12-31archive/zzip: set input_stream.{size,offset}Max Kellermann1-3/+5
2009-12-30input/curl: removed the built-in rewinding codeMax Kellermann1-181/+10
This has been reimplemented in the "rewind" input plugin.
2009-12-29input/rewind: new input_stream wrapper to allow stream rewindingMax Kellermann5-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).
2009-12-29decoder/{ffmpeg,flac,vorbis}: added more flac/vorbis MIME typesMax Kellermann4-4/+22
Support deprecated MIME types such as "audio/x-ogg". Support new types such as "audio/flac".
2009-12-27playlist_list: wait for the input stream to become readyMax Kellermann1-0/+10
Without this, seeking may cause MPD to crash.
2009-12-27dbUtils: return multiple tag values per songMax Kellermann1-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.
2009-12-27playlist/cue: fill song.start_ms, .end_msMax Kellermann1-0/+3
This patch adds practical usefulness to the CUE playlist plugin.
2009-12-27decoder, player: support song rangesMax Kellermann2-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.
2009-12-27playlist_queue: resolve relative URIs, database lookupMax Kellermann2-18/+118
Prepend the playlist's base URI to relative song URIs. Look up songs in the database (if the URI refers to a local song file). Merge existing database metadata with metadata from the playlist plugin.
2009-12-27song: added support for selecting a time rangeMax Kellermann3-1/+30
Added attributes start_ms, end_ms. This allows us to address a portion of a song file (important for CUE support). There is no support yet for storing these attributes in the state file.
2009-12-27playlist_queue: load playlists from music directoryMax Kellermann1-4/+36
Try the playlist directory first, and if that file does not exist, try the same relative path within the music directory.
2009-12-27uri: added function uri_safe_local()Max Kellermann2-0/+42
2009-12-27playlist/cue: return the original song URIMax Kellermann1-10/+1
The caller should be responsible for building the absolute URI.
2009-12-27playlist_queue: pass const string to playlist_open_path_into_queue()Max Kellermann1-1/+1
2009-12-26song: added function song_get_duration()Max Kellermann4-4/+14
2009-12-26playlist_queue: try open by URI firstMax Kellermann1-10/+21
If that fails, try opening the file as a stream.
2009-12-26playlist_list: use uri_get_suffix()Max Kellermann1-4/+2
2009-12-26uri: check presence of slash in suffixMax Kellermann1-2/+9
If there's a slash in the uri_get_suffix() return value, then it's malformed. Return NULL in this case.
2009-12-26decoder_api: added function decoder_timestamp()Max Kellermann20-81/+59
Remove the data_time parameter from decoder_data(). This patch eliminates the timestamp counting in most decoder plugins, because the MPD core will do it automatically by default.
2009-12-26decoder_thread: eliminate jitter after seek failureMax Kellermann1-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().
2009-12-26decoder/wavpack: allow fine-grained seekingMax Kellermann1-3/+2
First multiply the floating point return value of decoder_seek_where(), then cast to integer.
2009-12-25output_init: use the normalize filter pluginMax Kellermann5-95/+11
Use the plugin instead of the glue code in normalize.c. This is used wrapped inside a "autoconv" filter, to enable normalization for all input file formats.
2009-12-25filter: added the "autoconvert" filter pluginMax Kellermann2-0/+203
2009-12-25filter_plugin: allow open() to force an input formatMax Kellermann8-40/+64
Make the audio_format argument non-const. Allow the open() method to modify it, to indicate that it wants a different input audio format than the one specified. Check that condition in chain_filter_open(), and fail.
2009-12-25filter/volume: support 32 bit samplesMax Kellermann1-8/+0
The pcm_volume library supports 32 bit samples, there's no reason to disallow it in the filter plugin.
2009-12-25filter/route: check configured channel count in method init()Max Kellermann1-8/+9
Detect misconfiguration during MPD startup, not when playback begins.
2009-12-25filter/route: route_filter_parse() returns boolMax Kellermann1-3/+6
Indicate success and error.
2009-12-25filter_registry: removed the "chain" plugin from filter_pluginsMax Kellermann1-1/+0
This plugin cannot be configured.
2009-12-25filter/chain: return NULL if a filter() method has failedMax Kellermann1-1/+1
Don't close child filters in the filter() method.
2009-12-16playlist: added CUE playlist pluginMax Kellermann3-0/+166
This plugin is the groundwork for MPD's future generic CUE sheet support. That's not complete yet, e.g. there is no way for a playlist plugin to address an arbitrary position within a music file.
2009-12-16playlist_list: support URI suffix matchMax Kellermann1-2/+54
When no plugin matches the URI scheme, try the file name suffix.
2009-12-16playlist_list: check if open method is presentMax Kellermann1-2/+6
Use open_uri() / open_stream() only after checking that they are implemented.
2009-12-16cue_tag: added song duration supportMax Kellermann1-2/+10
Get duration from track_get_length().
2009-12-16cue_tag: check cd_get_track()!=NULLMax Kellermann1-3/+5
2009-12-16cue_tag: added function cue_tag()Max Kellermann2-17/+29
Merge code from cue_tag_file() and cue_tag_string().