Max Kellermann
a0384aaead
Makefile.am: added unit tests for the archive plugins
2009-12-31 15:50:59 +01:00
Max Kellermann
efc885a9dc
Merge vorbis+icy fixes from branch 'v0.15.x'
...
Conflicts:
Makefile.am
NEWS
configure.ac
src/input/curl_input_plugin.c
src/input_stream.c
2009-12-30 23:24:11 +01:00
Max Kellermann
4419e5b90d
input/curl: removed the built-in rewinding code
...
This has been reimplemented in the "rewind" input plugin.
2009-12-30 22:52:24 +01:00
Max Kellermann
c88f95a2ea
input/rewind: new input_stream wrapper to allow stream rewinding
...
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-29 23:55:40 +01:00
Max Kellermann
c7d099c757
decoder/{ffmpeg,flac,vorbis}: added more flac/vorbis MIME types
...
Support deprecated MIME types such as "audio/x-ogg". Support new
types such as "audio/flac".
2009-12-29 22:33:46 +01:00
Max Kellermann
333e11d0eb
Merged release 0.15.7 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
src/decoder_api.c
2009-12-27 20:10:45 +01:00
Avuton Olrich
d38c09051c
Modify version string to post-release version 0.15.8~git
2009-12-27 08:31:47 -08:00
Avuton Olrich
b1cc760aa5
mpd version 0.15.7
2009-12-27 08:31:47 -08:00
Max Kellermann
58da24b1cb
playlist_list: wait for the input stream to become ready
...
Without this, seeking may cause MPD to crash.
2009-12-27 16:53:47 +01:00
Max Kellermann
d66c055fec
dbUtils: return multiple tag values per song
...
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-27 16:49:04 +01:00
Max Kellermann
bb4cef6a93
playlist/cue: fill song.start_ms, .end_ms
...
This patch adds practical usefulness to the CUE playlist plugin.
2009-12-27 16:08:53 +01:00
Max Kellermann
5787f73704
decoder, player: support song ranges
...
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-27 16:08:53 +01:00
Max Kellermann
201316cd67
playlist_queue: resolve relative URIs, database lookup
...
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-27 16:08:53 +01:00
Max Kellermann
a038bca745
song: added support for selecting a time range
...
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-27 14:46:04 +01:00
Max Kellermann
cf38505d8f
playlist_queue: load playlists from music directory
...
Try the playlist directory first, and if that file does not exist, try
the same relative path within the music directory.
2009-12-27 14:17:26 +01:00
Max Kellermann
af964e8929
uri: added function uri_safe_local()
2009-12-27 14:17:25 +01:00
Max Kellermann
554b2b0ed9
playlist/cue: return the original song URI
...
The caller should be responsible for building the absolute URI.
2009-12-27 14:17:21 +01:00
Max Kellermann
627975e897
playlist_queue: pass const string to playlist_open_path_into_queue()
2009-12-27 14:17:13 +01:00
Max Kellermann
6622d69fda
song: added function song_get_duration()
2009-12-26 13:56:35 +01:00
Max Kellermann
216dff98d2
playlist_queue: try open by URI first
...
If that fails, try opening the file as a stream.
2009-12-26 03:01:52 +01:00
Max Kellermann
032354e65c
playlist_list: use uri_get_suffix()
2009-12-26 03:01:50 +01:00
Max Kellermann
115d26608b
uri: check presence of slash in suffix
...
If there's a slash in the uri_get_suffix() return value, then it's
malformed. Return NULL in this case.
2009-12-26 03:01:48 +01:00
Max Kellermann
bad350bc18
decoder_api: added function decoder_timestamp()
...
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-26 03:01:43 +01:00
Max Kellermann
915d1d0738
decoder_thread: eliminate jitter after seek failure
...
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-26 02:58:30 +01:00
Max Kellermann
8a6d448aaf
decoder/wavpack: allow fine-grained seeking
...
First multiply the floating point return value of
decoder_seek_where(), then cast to integer.
2009-12-26 02:58:30 +01:00
Max Kellermann
a1939f3966
Makefile.am: create doxygen output directory
2009-12-26 02:58:30 +01:00
Max Kellermann
870436a592
output_init: use the normalize filter plugin
...
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-25 17:51:08 +01:00
Max Kellermann
6a17233f78
filter: added the "autoconvert" filter plugin
2009-12-25 17:51:05 +01:00
Max Kellermann
b54bde6f2b
filter_plugin: allow open() to force an input format
...
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-25 17:29:41 +01:00
Max Kellermann
d2051c7f50
filter/volume: support 32 bit samples
...
The pcm_volume library supports 32 bit samples, there's no reason to
disallow it in the filter plugin.
2009-12-25 17:29:27 +01:00
Max Kellermann
bd29f7e3c8
filter/route: check configured channel count in method init()
...
Detect misconfiguration during MPD startup, not when playback begins.
2009-12-25 16:39:47 +01:00
Max Kellermann
c3bb81abec
filter/route: route_filter_parse() returns bool
...
Indicate success and error.
2009-12-25 16:39:45 +01:00
Max Kellermann
d469c8137f
filter_registry: removed the "chain" plugin from filter_plugins
...
This plugin cannot be configured.
2009-12-25 16:39:41 +01:00
Max Kellermann
c374a7d3f4
filter/chain: return NULL if a filter() method has failed
...
Don't close child filters in the filter() method.
2009-12-25 16:28:17 +01:00
Max Kellermann
3679d5bd7a
playlist: added CUE playlist plugin
...
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-16 22:19:01 +01:00
Max Kellermann
c128f2dd7e
playlist_list: support URI suffix match
...
When no plugin matches the URI scheme, try the file name suffix.
2009-12-16 22:17:16 +01:00
Max Kellermann
843717d25c
playlist_list: check if open method is present
...
Use open_uri() / open_stream() only after checking that they are
implemented.
2009-12-16 22:16:47 +01:00
Max Kellermann
50ea6a4b5c
cue_tag: added song duration support
...
Get duration from track_get_length().
2009-12-16 22:15:27 +01:00
Max Kellermann
5649f22322
cue_tag: check cd_get_track()!=NULL
2009-12-16 20:55:19 +01:00
Max Kellermann
b89281411f
cue_tag: added function cue_tag()
...
Merge code from cue_tag_file() and cue_tag_string().
2009-12-16 20:49:03 +01:00
Max Kellermann
67c41033c1
cue_tag: merged code into cue_tag_merge()
2009-12-16 17:27:52 +01:00
Max Kellermann
59534b92d2
cue_tag: pass "const" string to cue_tag_string()
2009-12-16 17:26:20 +01:00
Max Kellermann
41a48b14e3
cue_tag: changed runtime checks to assertions
...
It's illegal to pass NULL here. This should not be ignored silently.
2009-12-16 17:26:20 +01:00
Max Kellermann
5821bd1a21
cue_tag: fixed indent and code style
2009-12-16 17:18:56 +01:00
Max Kellermann
c5cdac9609
cue_tag: tag_new() cannot fail
...
Removed the NULL check.
2009-12-16 17:18:23 +01:00
Max Kellermann
b7f55ad392
cue_tag: include cleanup
2009-12-16 17:13:26 +01:00
Max Kellermann
71fee09744
archive_plugin: use GError in the open() method
2009-12-16 17:10:19 +01:00
Max Kellermann
f9af1a445e
input/archive: check for archive_file_open() errors
...
This fixes a NULL pointer dereference in case of archive plugin
failure.
2009-12-16 17:10:15 +01:00
Max Kellermann
0bc8c0c1da
archive_plugin: wrap method calls
...
Make archive_file a "real" struct, extended by all plugins. Add the
plugin pointer to it. Wrap all method calls in functions.
2009-12-16 17:09:58 +01:00
Max Kellermann
74156d5bed
archive_plugin: pass const string to method open()
2009-12-16 17:09:29 +01:00