aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge vorbis+icy fixes from branch 'v0.15.x'Max Kellermann2009-12-3011-186/+357
|\ | | | | | | | | | | | | | | | | 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-297-1/+318
| | | | | | | | | | | | | | | | | | | | | | | | 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-295-4/+24
| | | | | | | | | | Support deprecated MIME types such as "audio/x-ogg". Support new types such as "audio/flac".
| * Modify version string to post-release version 0.15.8~gitAvuton Olrich2009-12-272-1/+4
| |
* | Merged release 0.15.7 from branch 'v0.15.x'Max Kellermann2009-12-275-6/+12
|\| | | | | | | | | | | | | Conflicts: NEWS configure.ac src/decoder_api.c
| * mpd version 0.15.7release-0.15.7Avuton Olrich2009-12-272-2/+2
| |
| * dbUtils: return multiple tag values per songMax Kellermann2009-12-272-1/+1
| | | | | | | | | | | | 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-262-1/+6
| | | | | | | | | | | | 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-262-3/+3
| | | | | | | | | | First multiply the floating point return value of decoder_seek_where(), then cast to integer.
| * Makefile.am: create doxygen output directoryMax Kellermann2009-12-261-0/+1
| |
* | 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-272-0/+4
| | | | | | | | 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.
* | playlist_queue: resolve relative URIs, database lookupMax Kellermann2009-12-272-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.
* | song: added support for selecting a time rangeMax Kellermann2009-12-274-1/+38
| | | | | | | | | | | | 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.
* | playlist_queue: load playlists from music directoryMax Kellermann2009-12-271-4/+36
| | | | | | | | | | Try the playlist directory first, and if that file does not exist, try the same relative path within the music directory.
* | uri: added function uri_safe_local()Max Kellermann2009-12-272-0/+42
| |
* | playlist/cue: return the original song URIMax Kellermann2009-12-271-10/+1
| | | | | | | | The caller should be responsible for building the absolute URI.
* | playlist_queue: pass const string to playlist_open_path_into_queue()Max Kellermann2009-12-271-1/+1
| |
* | song: added function song_get_duration()Max Kellermann2009-12-264-4/+14
| |
* | playlist_queue: try open by URI firstMax Kellermann2009-12-261-10/+21
| | | | | | | | If that fails, try opening the file as a stream.
* | playlist_list: use uri_get_suffix()Max Kellermann2009-12-261-4/+2
| |
* | uri: check presence of slash in suffixMax Kellermann2009-12-261-2/+9
| | | | | | | | | | If there's a slash in the uri_get_suffix() return value, then it's malformed. Return NULL in this case.
* | decoder_api: added function decoder_timestamp()Max Kellermann2009-12-2622-83/+73
| | | | | | | | | | | | 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.
* | output_init: use the normalize filter pluginMax Kellermann2009-12-258-113/+22
| | | | | | | | | | | | 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.
* | filter: added the "autoconvert" filter pluginMax Kellermann2009-12-253-0/+205
| |
* | filter_plugin: allow open() to force an input formatMax Kellermann2009-12-258-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.
* | filter/volume: support 32 bit samplesMax Kellermann2009-12-251-8/+0
| | | | | | | | | | The pcm_volume library supports 32 bit samples, there's no reason to disallow it in the filter plugin.
* | filter/route: check configured channel count in method init()Max Kellermann2009-12-251-8/+9
| | | | | | | | Detect misconfiguration during MPD startup, not when playback begins.
* | filter/route: route_filter_parse() returns boolMax Kellermann2009-12-251-3/+6
| | | | | | | | Indicate success and error.
* | filter_registry: removed the "chain" plugin from filter_pluginsMax Kellermann2009-12-251-1/+0
| | | | | | | | This plugin cannot be configured.
* | filter/chain: return NULL if a filter() method has failedMax Kellermann2009-12-251-1/+1
| | | | | | | | Don't close child filters in the filter() method.
* | playlist: added CUE playlist pluginMax Kellermann2009-12-164-0/+177
| | | | | | | | | | | | 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.
* | playlist_list: support URI suffix matchMax Kellermann2009-12-161-2/+54
| | | | | | | | When no plugin matches the URI scheme, try the file name suffix.
* | playlist_list: check if open method is presentMax Kellermann2009-12-161-2/+6
| | | | | | | | | | Use open_uri() / open_stream() only after checking that they are implemented.
* | cue_tag: added song duration supportMax Kellermann2009-12-161-2/+10
| | | | | | | | | | Get duration from track_get_length().
* | cue_tag: check cd_get_track()!=NULLMax Kellermann2009-12-161-3/+5
| |
* | cue_tag: added function cue_tag()Max Kellermann2009-12-162-17/+29
| | | | | | | | Merge code from cue_tag_file() and cue_tag_string().
* | cue_tag: merged code into cue_tag_merge()Max Kellermann2009-12-161-22/+18
| |
* | cue_tag: pass "const" string to cue_tag_string()Max Kellermann2009-12-162-2/+2
| |
* | cue_tag: changed runtime checks to assertionsMax Kellermann2009-12-161-14/+9
| | | | | | | | It's illegal to pass NULL here. This should not be ignored silently.
* | cue_tag: fixed indent and code styleMax Kellermann2009-12-162-78/+43
| |
* | cue_tag: tag_new() cannot failMax Kellermann2009-12-161-22/+10
| | | | | | | | Removed the NULL check.
* | cue_tag: include cleanupMax Kellermann2009-12-162-2/+5
| |
* | archive_plugin: use GError in the open() methodMax Kellermann2009-12-167-14/+23
| |
* | input/archive: check for archive_file_open() errorsMax Kellermann2009-12-161-0/+2
| | | | | | | | | | This fixes a NULL pointer dereference in case of archive plugin failure.
* | archive_plugin: wrap method callsMax Kellermann2009-12-169-12/+133
| | | | | | | | | | Make archive_file a "real" struct, extended by all plugins. Add the plugin pointer to it. Wrap all method calls in functions.
* | archive_plugin: pass const string to method open()Max Kellermann2009-12-164-4/+4
| |
* | archive: added a C header for each pluginMax Kellermann2009-12-168-4/+84
| | | | | | | | | | Moved the archive plugin "extern" declarations into each plugin header.