Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | 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 | 20 | -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. | ||||
* | output_init: use the normalize filter plugin | Max Kellermann | 2009-12-25 | 5 | -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. | ||||
* | filter: added the "autoconvert" filter plugin | Max Kellermann | 2009-12-25 | 2 | -0/+203 |
| | |||||
* | 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 | 3 | -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. | ||||
* | 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 | 8 | -12/+132 |
| | | | | | 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 | 7 | -4/+81 |
| | | | | | 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 | 2 | -3/+3 |
| | |||||
* | archive/iso: renamed plugin to "iso9660" | Max Kellermann | 2009-12-16 | 2 | -37/+47 |
| | | | | 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 |
| | |||||
* | input_stream: return errors with GError | Max Kellermann | 2009-12-15 | 32 | -160/+378 |
| | |||||
* | encoder/flac: fix write callback prototype for libFLAC 1.1.2 | Max Kellermann | 2009-12-15 | 1 | -1/+7 |
| | |||||
* | decoder_internal: decoder_input_buffer() returns bool | Max Kellermann | 2009-12-15 | 1 | -4/+4 |
| | | | | | | This fixes a regression: a boolean value was returned from decoder_input_buffer(), but the caller chose to do a "<= 0" comparison. | ||||
* | input/archive: use g_path_is_absolute() | Max Kellermann | 2009-12-15 | 1 | -1/+1 |
| | | | | | .. instead of manually checking pathname[0]=='/'. g_path_is_absolute() is portable. | ||||
* | archive/bz2: simplified error handling, short read | Max Kellermann | 2009-12-15 | 1 | -34/+23 |
| | | | | | Don't attempt to fill the whole buffer in the read() method, return whatever libbz2 provides with the first successful BZ2_bzDecompress(). | ||||
* | archive/bz2: no CamelCase | Max Kellermann | 2009-12-15 | 1 | -11/+10 |
| | |||||
* | archive/zzip: removed the "zip_context" typedef | Max Kellermann | 2009-12-15 | 1 | -11/+11 |
| | | | | Use the raw struct name. | ||||
* | archive/zip: renamed plugin to "zzip" | Max Kellermann | 2009-12-15 | 2 | -31/+31 |
| | | | | This plugin is based on libzzip. | ||||
* | Merge branch 'v0.15.x' | Max Kellermann | 2009-12-15 | 5 | -4/+15 |
|\ | | | | | | | | | | | | | | | Conflicts: src/archive/bz2_plugin.c src/archive_api.h src/input/file_input_plugin.c test/run_input.c | ||||
| * | iso, zip: fixed memory leak in destructor | Max Kellermann | 2009-12-15 | 2 | -2/+4 |
| | | | | | | | | Free the "context" pointer in the method archive_plugin.close(). | ||||
| * | archive: close archive when stream is closed | Max Kellermann | 2009-12-15 | 4 | -0/+9 |
| | | | | | | | | | | | | | | | | Fixes a memory leak: the "archive" input plugin opens the archive, but never closes it. This patch moves the responsibility for doing that to archive_plugin.open_stream(). This is an slight internal API change, but it is the simplest and least intrusive fix for the memory leak. |