Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Merged release 0.15.7 from branch 'v0.15.x' | Max Kellermann | 2009-12-27 | 5 | -6/+12 |
|\ | | | | | | | | | | | | | Conflicts: NEWS configure.ac src/decoder_api.c | ||||
| * | mpd version 0.15.7release-0.15.7 | Avuton Olrich | 2009-12-27 | 2 | -2/+2 |
| | | |||||
| * | dbUtils: return multiple tag values per song | Max Kellermann | 2009-12-27 | 2 | -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 failure | Max Kellermann | 2009-12-26 | 2 | -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 seeking | Max Kellermann | 2009-12-26 | 2 | -3/+3 |
| | | | | | | | | | | First multiply the floating point return value of decoder_seek_where(), then cast to integer. | ||||
| * | Makefile.am: create doxygen output directory | Max Kellermann | 2009-12-26 | 1 | -0/+1 |
| | | |||||
* | | playlist_list: wait for the input stream to become ready | Max Kellermann | 2009-12-27 | 1 | -0/+10 |
| | | | | | | | | Without this, seeking may cause MPD to crash. | ||||
* | | playlist/cue: fill song.start_ms, .end_ms | Max Kellermann | 2009-12-27 | 2 | -0/+4 |
| | | | | | | | | This patch adds practical usefulness to the CUE playlist plugin. | ||||
* | | decoder, player: support song ranges | Max Kellermann | 2009-12-27 | 2 | -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 lookup | Max Kellermann | 2009-12-27 | 2 | -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 range | Max Kellermann | 2009-12-27 | 4 | -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 directory | Max Kellermann | 2009-12-27 | 1 | -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 Kellermann | 2009-12-27 | 2 | -0/+42 |
| | | |||||
* | | playlist/cue: return the original song URI | Max Kellermann | 2009-12-27 | 1 | -10/+1 |
| | | | | | | | | The caller should be responsible for building the absolute URI. | ||||
* | | playlist_queue: pass const string to playlist_open_path_into_queue() | Max Kellermann | 2009-12-27 | 1 | -1/+1 |
| | | |||||
* | | song: added function song_get_duration() | Max Kellermann | 2009-12-26 | 4 | -4/+14 |
| | | |||||
* | | playlist_queue: try open by URI first | Max Kellermann | 2009-12-26 | 1 | -10/+21 |
| | | | | | | | | If that fails, try opening the file as a stream. | ||||
* | | playlist_list: use uri_get_suffix() | Max Kellermann | 2009-12-26 | 1 | -4/+2 |
| | | |||||
* | | uri: check presence of slash in suffix | Max Kellermann | 2009-12-26 | 1 | -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 Kellermann | 2009-12-26 | 22 | -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 plugin | Max Kellermann | 2009-12-25 | 8 | -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 plugin | Max Kellermann | 2009-12-25 | 3 | -0/+205 |
| | | |||||
* | | filter_plugin: allow open() to force an input format | Max Kellermann | 2009-12-25 | 8 | -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 samples | Max Kellermann | 2009-12-25 | 1 | -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 Kellermann | 2009-12-25 | 1 | -8/+9 |
| | | | | | | | | Detect misconfiguration during MPD startup, not when playback begins. | ||||
* | | filter/route: route_filter_parse() returns bool | Max Kellermann | 2009-12-25 | 1 | -3/+6 |
| | | | | | | | | Indicate success and error. | ||||
* | | filter_registry: removed the "chain" plugin from filter_plugins | Max Kellermann | 2009-12-25 | 1 | -1/+0 |
| | | | | | | | | This plugin cannot be configured. | ||||
* | | filter/chain: return NULL if a filter() method has failed | Max Kellermann | 2009-12-25 | 1 | -1/+1 |
| | | | | | | | | Don't close child filters in the filter() method. | ||||
* | | playlist: added CUE playlist plugin | Max Kellermann | 2009-12-16 | 4 | -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 match | Max Kellermann | 2009-12-16 | 1 | -2/+54 |
| | | | | | | | | When no plugin matches the URI scheme, try the file name suffix. | ||||
* | | playlist_list: check if open method is present | Max Kellermann | 2009-12-16 | 1 | -2/+6 |
| | | | | | | | | | | Use open_uri() / open_stream() only after checking that they are implemented. | ||||
* | | cue_tag: added song duration support | Max Kellermann | 2009-12-16 | 1 | -2/+10 |
| | | | | | | | | | | Get duration from track_get_length(). | ||||
* | | cue_tag: check cd_get_track()!=NULL | Max Kellermann | 2009-12-16 | 1 | -3/+5 |
| | | |||||
* | | cue_tag: added function cue_tag() | Max Kellermann | 2009-12-16 | 2 | -17/+29 |
| | | | | | | | | Merge code from cue_tag_file() and cue_tag_string(). | ||||
* | | cue_tag: merged code into cue_tag_merge() | Max Kellermann | 2009-12-16 | 1 | -22/+18 |
| | | |||||
* | | cue_tag: pass "const" string to cue_tag_string() | Max Kellermann | 2009-12-16 | 2 | -2/+2 |
| | | |||||
* | | cue_tag: changed runtime checks to assertions | Max Kellermann | 2009-12-16 | 1 | -14/+9 |
| | | | | | | | | It's illegal to pass NULL here. This should not be ignored silently. | ||||
* | | cue_tag: fixed indent and code style | Max Kellermann | 2009-12-16 | 2 | -78/+43 |
| | | |||||
* | | cue_tag: tag_new() cannot fail | Max Kellermann | 2009-12-16 | 1 | -22/+10 |
| | | | | | | | | Removed the NULL check. | ||||
* | | cue_tag: include cleanup | Max Kellermann | 2009-12-16 | 2 | -2/+5 |
| | | |||||
* | | archive_plugin: use GError in the open() method | Max Kellermann | 2009-12-16 | 7 | -14/+23 |
| | | |||||
* | | input/archive: check for archive_file_open() errors | Max Kellermann | 2009-12-16 | 1 | -0/+2 |
| | | | | | | | | | | This fixes a NULL pointer dereference in case of archive plugin failure. | ||||
* | | archive_plugin: wrap method calls | Max Kellermann | 2009-12-16 | 9 | -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 Kellermann | 2009-12-16 | 4 | -4/+4 |
| | | |||||
* | | archive: added a C header for each plugin | Max Kellermann | 2009-12-16 | 8 | -4/+84 |
| | | | | | | | | | | Moved the archive plugin "extern" declarations into each plugin header. | ||||
* | | archive/bz2: removed the bz2_context typedef | Max Kellermann | 2009-12-16 | 1 | -13/+13 |
| | | | | | | | | Use the raw struct name instead. | ||||
* | | archive/bz2: renamed archive sources and plugin variables | Max Kellermann | 2009-12-16 | 3 | -4/+4 |
| | | |||||
* | | archive/iso: renamed plugin to "iso9660" | Max Kellermann | 2009-12-16 | 5 | -41/+52 |
| | | | | | | | | Based on libiso9660. | ||||
* | | archive/bz2: use g_path_get_basename() | Max Kellermann | 2009-12-16 | 1 | -10/+1 |
| | | | | | | | | | | Use g_path_get_basename() instead of manually filtering the path name. Big advantage: g_path_get_basename() cannot fail. | ||||
* | | updated mp4ff decoder about input_stream_seek | Alam Arias | 2009-12-16 | 1 | -2/+2 |
| | |