Max Kellermann
0cc3b98bd9
input/archive: don't initialize input_stream.ready
...
The archive plugin should decide this.
2009-12-31 16:26:34 +01:00
Max Kellermann
c157711eaf
archive/bz2: allocate buffer statically
...
Reduce the number of malloc()/free() calls.
2009-12-31 16:26:14 +01:00
Max Kellermann
2632794578
archive/bz2: added struct bz2_input_stream
...
Don't use the bz2_archive_file object for the input_stream.
2009-12-31 16:25:21 +01:00
Max Kellermann
3ddf7b620c
archive/iso9660: added struct iso9660_input_stream
...
Don't use the iso9660_archive_file object for the input_stream.
2009-12-31 16:13:09 +01:00
Max Kellermann
131cb0598a
archive/iso9660: set input_stream.{size,offset}
2009-12-31 16:13:09 +01:00
Max Kellermann
9862521aec
archive/zzip: added struct zzip_input_stream
...
Don't use the zzip_archive object for the input_stream.
2009-12-31 16:00:12 +01:00
Max Kellermann
55fbb67cfb
archive/zzip: set input_stream.{size,offset}
2009-12-31 15:59:43 +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
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
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
Max Kellermann
b04adde7ab
archive: added a C header for each plugin
...
Moved the archive plugin "extern" declarations into each plugin
header.
2009-12-16 15:57:16 +01:00
Max Kellermann
3f64ac04b8
archive/bz2: removed the bz2_context typedef
...
Use the raw struct name instead.
2009-12-16 15:56:42 +01:00
Max Kellermann
b009970af7
archive/bz2: renamed archive sources and plugin variables
2009-12-16 15:55:48 +01:00
Max Kellermann
bd97586cc4
archive/iso: renamed plugin to "iso9660"
...
Based on libiso9660.
2009-12-16 15:55:37 +01:00
Max Kellermann
c3e0fbd9e4
archive/bz2: use g_path_get_basename()
...
Use g_path_get_basename() instead of manually filtering the path
name. Big advantage: g_path_get_basename() cannot fail.
2009-12-16 15:53:57 +01:00
Alam Arias
b05ba0286e
updated mp4ff decoder about input_stream_seek
2009-12-16 06:47:15 +01:00
Max Kellermann
228b03edf8
input_stream: return errors with GError
2009-12-15 23:12:11 +01:00
Max Kellermann
d000d31355
encoder/flac: fix write callback prototype for libFLAC 1.1.2
2009-12-15 23:12:06 +01:00
Max Kellermann
3d95226f2b
decoder_internal: decoder_input_buffer() returns bool
...
This fixes a regression: a boolean value was returned from
decoder_input_buffer(), but the caller chose to do a "<= 0"
comparison.
2009-12-15 22:24:00 +01:00
Max Kellermann
b12072e6d9
input/archive: use g_path_is_absolute()
...
.. instead of manually checking pathname[0]=='/'.
g_path_is_absolute() is portable.
2009-12-15 21:26:16 +01:00
Max Kellermann
03427d4eff
archive/bz2: simplified error handling, short read
...
Don't attempt to fill the whole buffer in the read() method, return
whatever libbz2 provides with the first successful BZ2_bzDecompress().
2009-12-15 21:09:13 +01:00
Max Kellermann
a627a703ca
archive/bz2: no CamelCase
2009-12-15 20:53:29 +01:00
Max Kellermann
440cfc8052
archive/zzip: removed the "zip_context" typedef
...
Use the raw struct name.
2009-12-15 20:49:38 +01:00
Max Kellermann
c959148ed1
archive/zip: renamed plugin to "zzip"
...
This plugin is based on libzzip.
2009-12-15 20:29:44 +01:00
Max Kellermann
530e480748
Merge branch 'v0.15.x'
...
Conflicts:
src/archive/bz2_plugin.c
src/archive_api.h
src/input/file_input_plugin.c
test/run_input.c
2009-12-15 20:26:38 +01:00
Max Kellermann
9179f108a5
iso, zip: fixed memory leak in destructor
...
Free the "context" pointer in the method archive_plugin.close().
2009-12-15 19:57:00 +01:00
Max Kellermann
3411f6cffd
archive: close archive when stream is closed
...
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.
2009-12-15 19:45:50 +01:00
Max Kellermann
6c0f50efb5
archive/bz2: removed NULL check before g_free()
...
g_free(NULL) is allowed.
2009-12-15 19:42:54 +01:00
Max Kellermann
2234d491b7
input/archive: close the archive file on error
...
Fixed memory leak in error handler.
2009-12-15 19:41:00 +01:00
Max Kellermann
f01d7d230b
input/file: don't fall back to parent directory
...
This code has never made any sense, and has broken some of the archive
plugin.
2009-12-15 19:16:28 +01:00
Max Kellermann
95c3f283ea
input/file: don't fall back to parent directory
...
This code has never made any sense, and has broken some of the archive
plugin.
2009-12-15 19:03:11 +01:00
Max Kellermann
aef6609f4f
archive_api.h: moved struct archive_plugin to archive_plugin.h
2009-12-15 19:02:24 +01:00
Max Kellermann
6b728e4756
archive_list: don't include archive_api.h
...
Use struct forward declarations.
2009-12-15 19:02:17 +01:00
Max Kellermann
f1ecd9eac8
archive_list: iterate with NULL check
...
Don't use num_archive_plugins.
2009-12-15 15:31:00 +01:00
Max Kellermann
243c96304b
archive/bz2: bz2_fillbuffer() returns bool
2009-12-15 09:08:30 +01:00
Max Kellermann
e3597e648c
archive/bz2: fixed indentation
2009-12-15 09:00:34 +01:00
Max Kellermann
357037f7ab
archive/bz2: g_malloc() cannot fail
2009-12-15 09:00:18 +01:00
Max Kellermann
51d0687377
fixed several gcc warnings on unused debug variables
2009-12-14 23:22:51 +01:00
Max Kellermann
849d7895dc
decoder/mikmod: fixed gcc uninitialized warning
...
Removed local variable "sample_rate".
2009-12-14 23:20:14 +01:00
Max Kellermann
786c1f035f
input_plugin: method init() returns errors with GError
...
Not used by any plugin currently, but this eliminates the g_error()
call in input_plugin_config(), so it's worth it.
2009-12-14 23:16:18 +01:00
Max Kellermann
f70d2f58a1
input_stream: moved input_stream_global_init() to input_init.c
2009-12-14 22:53:13 +01:00
Max Kellermann
67b0ab717e
input_stream: moved plugin list to input_registry.c
2009-12-14 22:49:46 +01:00
Max Kellermann
f7420dbfe1
input_stream: make input_plugins NULL terminated
...
This is easier to traverse.
2009-12-14 22:43:00 +01:00
Max Kellermann
400600ffff
filter: added normalize filter plugin
...
Wrap the AudioCompress library in a filter plugin.
2009-12-14 22:24:00 +01:00
Albin Eldstål-Damlin
940e66bb89
Fix and use filter_configured_new()
2009-12-14 22:23:05 +01:00
Albin Eldstål-Damlin
69391dadda
Proper error reporting from filter_config
2009-12-14 22:18:28 +01:00
Albin Eldstål-Damlin
ff3393ebf1
Fixed memory leak on incorrect route configuration
2009-12-14 22:18:28 +01:00
Albin Eldstål-Damlin
0ac0bd26e7
Split filter_config into its own module
2009-12-14 22:12:58 +01:00
Albin Eldstål-Damlin
8587fcbb93
Error reporting, pcm_buffer, performance tweaks
2009-12-14 20:41:09 +01:00
Albin Eldstål-Damlin
a4fbf772c1
Initial filter chain and filter configuration for outputs.
2009-12-14 17:56:31 +01:00
Albin Eldstål-Damlin
e28c5a0beb
Initial (statically configured) route filter plugin
2009-12-14 17:41:28 +01:00
Albin Eldstål-Damlin
c38b9490a8
Minor documentation fix
2009-12-14 17:41:10 +01:00
Max Kellermann
c3085d7b61
Merge branch 'v0.15.x'
...
Conflicts:
src/decoder/ffmpeg_plugin.c
2009-12-14 17:40:50 +01:00
Max Kellermann
8f7bc70bf5
decoder/wavpack: don't use the nonstandard "uchar" type
...
Use the signed C99 type int8_t instead.
2009-12-11 12:45:57 +01:00
Max Kellermann
5a354a1ed4
mixer: explicitly close all mixers on shutdown
...
Mixers with the "global" flag set aren't closed automatically when the
output device is closed. Thus, they might still be open when MPD
shuts down.
2009-12-08 08:47:47 +01:00
Max Kellermann
f4b707b4ca
mapper: apply filesystem_charset to playlists
...
This fixes an inconsistency in the stored playlist subsystem: when
obtaining the list of playlists (listplaylist, listplaylistinfo), the
file names in the playlist directory are converted to UTF-8 (according
to filesystem_charset), but when saving or loading playlists, the
filesystem_charset setting was ignored.
2009-12-08 08:33:14 +01:00
Max Kellermann
cd69fee0a4
command: verify playlist name in the "rm" command
...
Call spl_valid_name() in spl_delete().
2009-12-08 08:32:26 +01:00
Max Kellermann
23e46b38ca
mapper: fix memory leak when playlist_directory is not set
...
Don't allocate the file name before the playlist_dir==NULL check.
2009-12-08 08:06:10 +01:00
Thomas Jansen
179502fe93
decoder_api: prefer stream_tag over decoder_tag
...
If both tags (stream and decoder) are present, we prefer the stream tag.
Fixes #2698 , where ICY tag contained useful information, but was
overwritten with bogus decoder tag data.
2009-12-07 14:52:48 +01:00
Viliam Mateicka
b6b377edd1
pcm_volume: change old code to use format instead of bits
2009-12-03 20:56:57 +01:00
Viliam Mateicka
a76097210f
encoders: remove unnessesary pointers to const strings
2009-12-03 20:43:13 +01:00
Viliam Mateicka
ac0bf1a445
httpd: use get_mime_type to determine encoder content
2009-12-03 20:27:08 +01:00
Viliam Mateicka
7b80e73810
encoders: implement new get_mime_types method
2009-12-03 20:11:32 +01:00
Viliam Mateicka
6d11711a01
encoder: add get_mime_type() method to determine content type by httpd output plugin
2009-12-03 19:39:34 +01:00
Viliam Mateicka
bae03e173e
pcm_mix: change old code to use format instead of bits
2009-12-03 17:03:21 +01:00
Viliam Mateicka
07b388f8d4
null_encoder: use pcm_buffer
2009-12-03 17:03:20 +01:00
Viliam Mateicka
4809213676
flac_encoder: add support for libFLAC < 1.1.3
2009-12-03 14:53:30 +01:00
Jeffrey Middleton
c77fa296bc
compress: add config.h
...
This includes some default values of #defined constants used in the
code; it won't compile without it.
2009-12-02 21:14:35 -06:00
Max Kellermann
c412d6251e
audio_format: changed "bits" to "enum sample_format"
...
This patch prepares support for floating point samples (and probably
other formats). It changes the meaning of the "bits" attribute from a
bit count to a symbolic value.
2009-12-02 22:29:50 +01:00
J. Shagam
4076523198
compress: upgraded to AudioCompress 2.0
...
Copied sources from
http://beesbuzz.biz/code/audiocompress/AudioCompress-2.0.tar.gz
[mk: created this patch under fluffy's name and fixed some gcc
signed/unsigned comparison warnings]
2009-12-02 18:11:53 +01:00
svitoos
7162fe85ce
tag_id3: fix ID3v1 charset conversion
...
If we define id3v1_encoding, then the tags are not added to the
database.
2009-11-30 17:42:46 +01:00
Max Kellermann
16123f1b8e
ffmpeg: don't try to force stereo
...
The plugin code tried to force libavcodec to supply stereo samples.
That however has never actually worked. By removing this code, we are
able to play surround files for the first time.
2009-11-30 09:59:05 +01:00
Max Kellermann
3857bb9990
decoder/mpcdec: set 24 bit sample format
...
This fixes a regression due to a typo caused by "decoder: use
audio_format_init_checked()".
2009-11-25 08:59:13 +01:00
Max Kellermann
300f936228
pcm_mix: implemented 32 bit support
2009-11-19 21:00:54 +01:00
Max Kellermann
1358428031
pcm_volume: implemented 32 bit support
...
Support 32 bit samples with software mixer.
2009-11-19 21:00:50 +01:00
Max Kellermann
c33bbd947b
Merged release 0.15.6 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
2009-11-19 19:59:34 +01:00
Max Kellermann
21fdf47b56
decoder/flac: fixed compiler warning
...
Removed the "vtrack" local variable (which triggered a gcc warning
because it was after the newly introduced NULL check), and run
strtol() on the original parameter.
2009-11-19 19:49:44 +01:00
Max Kellermann
97f8e017c4
decoder/flac: fixed NULL pointer dereference in CUE code
...
The function flac_vtrack_tnum() was missing a strrchr()==NULL check.
2009-11-18 19:55:38 +01:00
Viliam Mateicka
d37b4bb199
cmdline: print out list of encoders in --version info
2009-11-17 20:39:26 +01:00
Viliam Mateicka
ea92dee1ae
encoder: let wave encoder to use pcm_buffer, pcm conversion code cleanup
2009-11-17 20:39:21 +01:00
Viliam Mateicka
5420f9ae76
encoder: introducing flac encoder plugin
2009-11-17 19:41:35 +01:00
Max Kellermann
f51ba6464a
id3: allow 4 MB RIFF/AIFF tags
...
Allow RIFF/AIFF ID3 tags up to 4 MB (old limit was 256 kB). This
might still be too small for some users, and when somebody complains,
we might do something more clever (like streaming the data into
libid3tag?).
2009-11-15 18:44:53 +01:00
Max Kellermann
77b95d08a5
decoder/ffmpeg: align the output buffer
...
On some platforms, libavcodec wants the output buffer aligned to 16
bytes (because it uses SSE/Altivec internally). It will segfault when
you don't obey this rule.
2009-11-15 17:39:09 +01:00
Max Kellermann
39404725f0
output/openal: use audio_format_to_string()
2009-11-15 16:20:20 +01:00
Max Kellermann
5d1e5f4ea0
crossfade: use audio_format_valid() in assertion
2009-11-15 15:39:29 +01:00
Max Kellermann
141cbc60b9
decoder/audio: eliminate the "bits" variable
...
Pass the audiofile_setup_sample_format() result to
audio_format_init_checked().
2009-11-14 23:35:37 +01:00
Max Kellermann
2c1fb48318
decoder/audiofile: moved code to audiofile_setup_sample_format()
2009-11-14 23:22:14 +01:00
Max Kellermann
1dfadf4815
decoder/modplug: count frame position
...
Don't maintain the current time stamp in a floating point variable,
because this is subject to rounding errors.
2009-11-14 22:30:57 +01:00
Max Kellermann
f5b9e3c064
decoder/modplug: floating point division for song duration
...
More exact total time.
2009-11-14 22:27:27 +01:00
Max Kellermann
ff70dbd316
decoder/modplug: check ModPlug_Read() < 0
...
Negative return values are not documented here, but since the function
prototype is signed, let's be sure.
2009-11-14 22:27:04 +01:00
Max Kellermann
dd4625ce13
decoder/mikmod: count frame position
...
Don't maintain the current time stamp in a floating point variable,
because this is subject to rounding errors.
2009-11-14 02:24:42 +01:00
Max Kellermann
1648c7aa5b
decoder/mikmod: sample rate is configurable
...
The new option "sample_rate" sets the sample rate for libmikmod.
2009-11-14 02:24:42 +01:00
Max Kellermann
edaf017908
decoder/mikmod: set drv_name and drv_version from PACKAGE/VERSION
2009-11-14 02:24:42 +01:00
Max Kellermann
2c7bf61e68
decoder/mikmod: no CamelCase
2009-11-14 02:07:41 +01:00
Max Kellermann
7efb548921
decoder/mikmod: removed the struct mod_Data
2009-11-14 02:07:41 +01:00
Max Kellermann
0c5329aedc
decoder/mikmod: merged open()/close() into decode()
...
These functions are trivial, we don't need them separate.
2009-11-14 02:07:41 +01:00
Max Kellermann
2d236e281f
decoder/mikmod: static mod_Data object
...
Don't allocate this object, put it on the stack.
2009-11-14 02:07:41 +01:00
Max Kellermann
cef5dcc0a1
audio_format: added function audio_format_to_string()
...
Unified function for converting an audio_format object to a string,
for log messages and for the "status" command.
2009-11-14 01:15:26 +01:00
Max Kellermann
719990b1c5
decoder: use audio_format_init_checked()
...
Let the audio_check library verify the audio format in all (relevant,
i.e. non-hardcoded) plugins.
2009-11-14 00:47:22 +01:00
Max Kellermann
f47bb8c1db
audio_check: checker functions for audio_format attributes
...
These functions are a wrapper for audio_valid_X(). On error, they
return a GError object.
2009-11-14 00:47:19 +01:00
Max Kellermann
873025a495
decoder/sidplay: correctly calculate floating point time
...
Internally, use only the integer time. When needed, convert it to a
floating point seconds value.
2009-11-14 00:46:30 +01:00
Max Kellermann
409a3ed808
player_thread: corrected two assertions on "queued"
...
At this point, the function may be called from the SEEK handler.
2009-11-14 00:45:52 +01:00
Max Kellermann
76283c25a5
player_thread: initialize chunk->times in silence generator
...
When waiting for the decoder to provide more data, the player thread
generates silence chunks if needed. However, it forgot to initialize
the chunk.times attribute, which had now an undefined value. This
patch sets it to -1.0, meaning "value is undefined". Add a ">= 0.0"
check to audio_output_all_check(). This fixes spurious relative
seeking errors, because sometimes, the "elapsed" value falls back to
0.0.
2009-11-12 18:41:25 +01:00
Max Kellermann
b9866e43d3
player_control: hold lock while reading status
2009-11-12 18:40:36 +01:00
Max Kellermann
9947b82cad
added .#* to .gitignore
...
Temporary editor files.
2009-11-12 18:39:40 +01:00
Max Kellermann
5b82ffc291
include config.h in all sources
...
After we've been hit by Large File Support problems several times in
the past week (which only occur on 32 bit platforms, which I don't
have), this is yet another attempt to fix the issue.
2009-11-12 09:17:03 +01:00
Max Kellermann
8068fd5228
decoder/vorbis: fixed gcc "signed" warning
2009-11-12 09:16:34 +01:00
Max Kellermann
b9c610ac87
directory: include config.h
...
*sigh* another Large File breakage. ino_t/dev_t this time. We need
to include config.h in directory.h to get this straight.
2009-11-11 23:36:36 +01:00
Max Kellermann
59189160e3
decoder/wavpack: allow more than 2 channels
...
Remove the OPEN_2CH_MAX option. MPD's support for surround sound is
still clunky, but we're working on it.
2009-11-11 23:03:20 +01:00
Max Kellermann
ee5d3337a7
decoder/wavpack: activate 32 bit support
...
MPD has been supporting 32 bit samples since version 0.15. This patch
changes one check, and removes the 32->24 conversion code.
Note that WavPack floating point samples have 32 bits, and MPD doesn't
have a special check for floating point - therefore, this WavPack
plugin still returns 24 bit integer samples as before (until we have
float support in the MPD core).
2009-11-11 21:49:00 +01:00
Max Kellermann
4c6a8e3ca5
decoder/vorbis: initialize before entering the loop
...
Call decoder_initialize() before entering the loop. We don't need to
call ov_read() before ov_info(). When the stream number changes,
check if the audio format is still the same.
2009-11-11 21:34:55 +01:00
Max Kellermann
4f38cc9cae
decoder/vorbis: moved error strings to vorbis_strerror()
2009-11-11 21:12:10 +01:00
Max Kellermann
dfc09a37c9
decoder/vorbis: removed the OggCallbackData typedef
...
Use the struct name instead.
2009-11-11 21:09:08 +01:00
Max Kellermann
8588c21689
decoder/vorbis: fix typo in comment
2009-11-11 21:09:08 +01:00
Max Kellermann
2decc65b45
decoder/vorbis: removed redundant "bits" initialization
...
This is done by audio_format_init().
2009-11-11 21:03:04 +01:00
Max Kellermann
0fb877740b
decoder/flac: check "seekable" in libFLAC callbacks
...
Return FLAC__STREAM_DECODER_SEEK_STATUS_UNSUPPORTED if this input
stream does not support seeking.
2009-11-11 21:02:52 +01:00
Max Kellermann
37181c9181
decoder/flac: moved code to flac_data_get_audio_format()
...
Remove the audio_format attribute, add "frame_size" instead. The
audio_format initialization and check is moved both to
flac_data_get_audio_format().
2009-11-11 20:44:21 +01:00
Max Kellermann
08b139f37c
decoder/flac: use stream_info instead of audio_format
...
Use the sample rate stored in the stream_info struct instead of the
audio_format struct.
2009-11-11 20:36:53 +01:00
Max Kellermann
3973aeecd2
decoder/flac: use frame header instead of audio_format
...
When calculating the properties of the frame, use sample_rate and
other information from the frame header instead of the stored
audio_format object.
2009-11-11 20:36:46 +01:00
Max Kellermann
5b2d32b499
decoder/oggflac: moved stream_info check to oggflac_decode()
2009-11-11 20:36:21 +01:00
Max Kellermann
e0d5ee0045
decoder/flac: calculate time stamp from current frame
...
Don't update a float timestamp, this will make imprecisions add up
after a while. We already have the number of the current frame, let's
just calculate the float timestamp from that for every decoder_data()
command. For this, we need to add the attribute "first_frame", for
CUE sheet songs.
2009-11-11 20:18:39 +01:00
Max Kellermann
d35efddd65
decoder/flac: calculate bit rate in flac_common_write()
...
Removed the "bit_rate" attribute from the flac_data struct. Pass the
number of bytes since the last call to flac_common_write(), and let
it calculate the bit rate.
2009-11-11 19:52:14 +01:00
Max Kellermann
7b13776f2d
decoder/flac: store the whole stream info object, not duration
...
We don't want to work with floating point values if possible. Get the
integer number of frames from the FLAC__StreamMetadata_StreamInfo
object, and convert it into a float duration on demand. This patch
adds a check if the STREAMINFO packet has been received yet.
2009-11-11 19:25:15 +01:00
Max Kellermann
f937ec9a7c
decoder/flac: merge code into flac_decoder_initialize()
...
Wrapper for FLAC__stream_decoder_process_until_end_of_metadata(),
decoder_initialized().
2009-11-11 19:08:10 +01:00
Max Kellermann
a3f5284dc6
decoder/flac: merged code into flac_decoder_new()
...
Convenience wrapper for FLAC__stream_decoder_new() and
FLAC__stream_decoder_set_metadata_respond().
2009-11-11 19:07:30 +01:00
Max Kellermann
4a8cc87b4d
decoder/flac: free the "pathname" variable earlier
...
Free the pointer right after its last use, i.e. after the
FLAC__stream_decoder_init_file() call.
2009-11-11 19:05:24 +01:00
Max Kellermann
183725733a
decoder/flac: emulate FLAC__stream_decoder_init_stream()
...
Remove the wrapper flac_init().
2009-11-11 18:08:22 +01:00
Max Kellermann
3c1bacbdbc
decoder/flac: use the new API functions
...
Use the type and function names of the libFLAC 1.1.3 API. Map the new
API to the old one with macros.
2009-11-11 17:59:46 +01:00
Max Kellermann
d5ed23438a
decoder/flac: removed the fake flac_ogg_init() fallback
...
Don't even try to call it with an old libFLAC API.
2009-11-11 17:01:14 +01:00
Max Kellermann
5bbaf0c9f1
decoder/flac: moved code to flac_compat.h
2009-11-11 16:43:34 +01:00
Max Kellermann
f2f8290242
decoder/{flac,vorbis}: include config.h for LFS
...
Allow those plugins to open large files on 32 bit platforms.
2009-11-11 16:37:42 +01:00
Max Kellermann
c1186693b5
decoder/flac: merged code into flac_decoder_loop()
...
The decoder loop of flac_decode_internal(), flac_container_decode()
and flac_filedecode_internal() is merged into this one function. This
unifies the code, and uses the frame number to identify the end of a
CUE sub song.
2009-11-11 16:28:44 +01:00
Max Kellermann
80b220a3a6
decoder/flac: keep track of current frame number
...
We need this for more exact end-of-subsong detection for CUE files.
2009-11-11 15:31:17 +01:00
Max Kellermann
5cc3c4f503
Merge remote branch 'origin/v0.15.x'
2009-11-11 15:14:20 +01:00
Max Kellermann
96204ea3dc
fd_util: don't call fd_set_nonblock() if open() has failed
...
This fixes an assertion failure.
2009-11-11 14:30:38 +01:00
Max Kellermann
9d1a34e30b
added missing config.h includes for extended LFS support
...
All sources which might work with large files must include config.h,
to get Large File Support on 32 bit platforms.
2009-11-11 14:15:34 +01:00
Max Kellermann
69d9716f8b
update: added missing config.h includes
...
This broke sticker and archive support.
2009-11-11 14:13:24 +01:00
Max Kellermann
dca4d9cf83
decoder/flac: fixed CUE seeking range check
...
If flac_container_decode() gets a seek destination which is out of
range, it ignores the SEEK command (never finishes it). This leads to
MPD lockup, because the player thread waits for completion.
2009-11-11 08:55:55 +01:00
Max Kellermann
707b9fea17
decoder/flac: removed redundant NULL checks
...
After the decoder loop, "flac_dec" is always set.
2009-11-11 08:37:21 +01:00
Max Kellermann
68f77e4163
oggflac: rewind stream after FLAC detection
...
The oggflac plugin has been completely broken for quite a while and
nobody has noticed - maybe we should remove it?
2009-11-11 08:14:37 +01:00
Max Kellermann
d605329f83
decoder/flac: moved code to flac_pcm.c
2009-11-11 07:59:22 +01:00
Max Kellermann
f6e7dffada
decoder/flac: moved code to flac_metadata.c
2009-11-11 07:50:40 +01:00
Max Kellermann
43549db718
decoder/flac: return replay_gain_info object from helper function
...
Make the function more generic by not passing "struct flac_data" to
it.
2009-11-11 07:35:16 +01:00
Max Kellermann
7c0c8ca8d7
Merge branch 'master' of git://git.musicpd.org/metyl/mpd
2009-11-11 06:45:23 +01:00
Max Kellermann
884be8e2b3
decoder/flac: merged some code into flac_tag_apply_metadata()
2009-11-11 00:05:14 +01:00
Max Kellermann
305de100a7
decoder/oggflac: initialize the "tag" variable
2009-11-10 23:56:59 +01:00
Viliam Mateicka
79035d7ed9
wave_encoder: new encoder for streaming PCM wave files.
...
When using wave encoder with httpd audio output mpd can input this stream via http and audiofile decoder.
This for example opens simple way to configure lossless audio streaming port(like jack or pulseaudio does but without overhead).
Another possibility can be using it for gathering raw data for visualization plugins (If sync issue will be resolved)
2009-11-10 22:29:54 +00:00
Max Kellermann
c1a999c492
decoder/flac: don't use float to calculate song duration
...
Simple (up-rounding) integer division is good enough. We're casting
the result back to an integer anyway.
2009-11-10 22:03:58 +01:00
Max Kellermann
e51d9fc6a9
decoder/flac: pass VorbisComment to comments_to_tag()
2009-11-10 21:58:19 +01:00
Max Kellermann
2f69831fb8
decoder/flac: use pcm_buffer instead of fixed buffer
...
This is a great simplification for flac_common_write(), because we can
convert and submit all of the buffer in one turn. No more partial
buffers with complicated formulas.
2009-11-10 21:46:10 +01:00
Max Kellermann
b6a2ffd3d7
decoder/flac: added function flac_data_deinit()
...
Clean up tag and replay_gain_info there.
2009-11-10 21:42:15 +01:00
Max Kellermann
b722d3d7f3
configure.ac: require GLib 2.12
...
Drop the required GLib version from 2.16 to 2.12, because many current
systems still don't have GLib 2.16. This requires several new
compatibility functions in glib_compat.h.
2009-11-10 21:14:22 +01:00
Max Kellermann
de57c21a3b
Merge branch 'v0.15.x'
...
Conflicts:
src/input/lastfm_input_plugin.c
src/song_save.c
2009-11-10 21:13:03 +01:00
Max Kellermann
84917721c7
moved GLib compatibility code to glib_compat.h
2009-11-10 21:07:54 +01:00
Max Kellermann
937b2b1744
sticker: added fallback for sqlite3_prepare_v2()
...
This function was not present in SQLite < 3.4.
2009-11-10 20:55:29 +01:00
Max Kellermann
8c0680f6b9
input/lastfm: fixed variable name in GLib<2.16 code path
...
Should be "lastfm_user", not "lastfm_username".
2009-11-10 20:54:17 +01:00
Max Kellermann
118495d372
decoder/flac: pass void pointer to flac_convert()
...
That function diverts into various bit formats; it doesn't need a
typed pointer.
2009-11-10 19:57:58 +01:00
Max Kellermann
a6bee71f1a
decoder/flac: pass audio_format.bits to flac_convert()
...
Don't use audio_format_sample_size() for identifying the sample
format.
2009-11-10 19:57:28 +01:00
Max Kellermann
e0e6813a1d
fd_util: removed creat_cloexec()
...
Add a "mode" argument to open_cloexec() instead.
2009-11-10 16:53:24 +01:00
Max Kellermann
3d2a9d3545
fd_util: added function pipe_cloexec()
...
Same as pipe_cloexec_nonblock(), but doesn't set non-blocking mode.
2009-11-10 16:53:20 +01:00
Max Kellermann
6975c087e0
decoder_list: fix decoder_plugin_from_mime_type()
...
Copy'n'paste error: call decoder_plugin_supports_mime_type() instead
of decoder_plugin_supports_suffix().
2009-11-09 22:49:05 +01:00
Max Kellermann
54033c74e4
output/alsa: fill period buffer with silence before draining
...
ALSA passes full period buffers to the hardware. If an application
doesn't finish writing a period, libasound will nonetheless send the
partial buffer (with undefined trailing data). This causes noise at
the end of playback. This patch attempts to track the current
position within the period buffer, and generates silence at the end,
before calling snd_pcm_drain().
2009-11-09 22:22:31 +01:00
Max Kellermann
8420f1420f
player_thread: drain audio outputs at the end of the playlist
...
When there's no queued song, and the current one has finished playing,
first make sure that the hardware outputs have really finished playing
the last chunk: call the drain() method in all audio outputs. Without
this patch, MPD stopped playback shortly before the ALSA sound card
had finished playing.
2009-11-09 22:22:27 +01:00
Max Kellermann
3359f8785e
output_thread: added command DRAIN
...
This command manually drains the hardware buffer. This is useful when
the player thread want to make sure that everything has been played.
2009-11-09 22:16:26 +01:00
Max Kellermann
96b974bc45
player_control: removed the "volatile" attribute
...
Our use of the "volatile" keyword was wrong from the start, and now
that we have proper locking, we can safely remove all of them.
2009-11-09 20:33:45 +01:00
Max Kellermann
1a4025420c
fd_util: added missing NONBLOCK fallback for socket()
2009-11-08 22:24:02 +01:00
Max Kellermann
223b0db5bd
fd_util: relicense under BSD 2-clause
...
We'll copy this code to libmpdclient, and that's easier if its license
is BSD.
2009-11-08 22:15:22 +01:00
Max Kellermann
2f4144e1cd
utils: removed function set_nonblocking()
...
It's not used anymore, its features have been moved to fd_util.c.
2009-11-08 22:11:37 +01:00
Max Kellermann
f66edccffd
fd_util: added O_NONBLOCK functions
...
Changed the wrappers for pipe(), socket(), accept(). On WIN32, this
does not work for pipe().
2009-11-08 22:11:35 +01:00
Max Kellermann
b043ade456
fd_util: fixed typo in API documentation
2009-11-08 22:07:14 +01:00
Max Kellermann
217b494cc5
encoder/null: removed empty close() method
...
That's an optional method.
2009-11-08 21:44:01 +01:00
Max Kellermann
5ef62312af
encoder/null: removed unused audio_format attribute
2009-11-08 21:43:19 +01:00
Max Kellermann
5479ed7cfb
fd_util: added API documentation
2009-11-08 21:38:52 +01:00
Max Kellermann
cac63bfd21
fd_util: unexport fd_set_cloexec()
...
This function is used only internally.
2009-11-08 21:38:38 +01:00
Max Kellermann
1573ea1485
inotify: set close-on-exec flag
...
Added wrapper for inotify_init1() to fd_util.c.
2009-11-07 19:02:53 +01:00
Max Kellermann
e3af0032b2
set the close-on-exec flag on all file descriptors
...
Added the "fd_util" library, which attempts to use the new thread-safe
Linux system calls pipe2(), accept4() and the options O_CLOEXEC,
SOCK_CLOEXEC. Without these, it falls back to FD_CLOEXEC, which is
not thread safe.
This is particularly important for the "pipe" output plugin (and
others, such as JACK/PulseAudio), because we were heavily leaking file
descriptors to child processes.
2009-11-07 18:55:16 +01:00
Max Kellermann
9b21152600
decoder_thread: close input file
...
An input_stream_close() call was missing after today's code
reorganization.
2009-11-07 17:58:52 +01:00
Max Kellermann
c440faa94d
log: redirect stdout/stderr to /dev/null if syslog is used
...
Don't hold a file descriptor on root's tty when syslog is used for
logging.
2009-11-07 17:48:57 +01:00
Max Kellermann
375fd5ed4c
output/jack: added option "server_name"
2009-11-07 17:26:21 +01:00
Max Kellermann
ec25cda68b
output_all: automatically attempt to re-enable failed outputs
...
When an output's enable() method has failed, and playback starts,
retry to enable it. Without this, the user may be confused, because
he sees the device is "enabled" but cannot use it, and currently there
is no error message in the log.
2009-11-07 17:22:34 +01:00
Max Kellermann
c9f726048c
output/httpd: moved code to httpd_output_bind()
2009-11-07 16:52:44 +01:00
Max Kellermann
c2251dc5a2
exclude: use GPatternSpec instead of fnmatch()
...
GLib's version of fnmatch() is more portable.
2009-11-07 16:29:29 +01:00
Max Kellermann
a505cbc6c9
added missing source file decoder_print.c
2009-11-07 16:28:21 +01:00
Max Kellermann
c422344190
database: I/O error handling in db_save()
...
Check ferror() instead of the fprintf() return value.
2009-11-07 16:20:07 +01:00
Max Kellermann
1a4cfc3d90
update_walk: log new container files
2009-11-07 16:03:25 +01:00
Max Kellermann
2f1bd39be8
command: added command "decoders"
...
This command prints a list of decoder plugins and their suffixes /
MIME types.
2009-11-07 15:57:22 +01:00
Max Kellermann
4624dfcb30
decoder_list: moved print_all_decoders() to cmdline.c
...
Export the decoder_plugins array. The function
decoder_plugin_print_all_decoders() it is UI specific and should not
live in this backend library.
2009-11-07 15:46:45 +01:00
Max Kellermann
3546d931a1
decoder_thread: check for STOP before calling the plugin
...
Before calling the plugin's decode method, we should ensure that we
didn't receive a STOP command during initialization.
2009-11-07 15:37:18 +01:00
Max Kellermann
4dadb965a7
decoder_thread: moved code to decoder_input_stream_open()
...
This function opens the stream and waits for it to become ready;
meanwhile it checks for STOP commands. It is code moved from
decoder_run_stream().
2009-11-07 15:35:50 +01:00
Max Kellermann
f2184db1cd
decoder_thread: added local variable "dc" in decoder_run_file()
...
Simplify the expressions.
2009-11-07 15:24:38 +01:00
Max Kellermann
41f3f12709
output/jack: free source port names on exit
...
Make valgrind happy.
2009-11-07 15:17:48 +01:00
Max Kellermann
5d55b45654
decoder_list: pass previous plugin pointer to lookup functions
...
Remove the static integer hack, that's not thread safe and sucks.
2009-11-07 15:14:16 +01:00
Max Kellermann
e3da174fca
decoder_list: moved suffix/mime_type checks to decoder_plugin.c
2009-11-07 15:14:11 +01:00
Max Kellermann
bb862a8ceb
decoder_list: back to NULL terminated list
...
A NULL terminated list is easier to iterate.
2009-11-07 15:14:09 +01:00
Max Kellermann
9ba900486e
decoder_thread: open input stream on demand
...
Moved the global input stream opener to decoder_run_stream().
decoder_run_file() now opens the input stream each time a plugin
provides a stream decoder method.
2009-11-07 15:10:12 +01:00
Max Kellermann
587284bae6
decoder_thread: moved plugin loops to separate functions
...
Tame the large decoder_run_song() function.
2009-11-07 14:57:46 +01:00
Max Kellermann
4c7bfa514f
uri: added function attributes
...
Let gcc optimize a little bit more.
2009-11-07 14:17:28 +01:00
Max Kellermann
f9218423b9
utils: renamed stringFoundInStringArray()
...
No CamelCase. Use bool instead of int. Make both arguments
mandatory.
2009-11-06 19:50:47 +01:00
Max Kellermann
ba34d48cf0
output/jack: dynamic source port list
...
Same as the previous patch: create up to 16 configured source ports.
The plugin tries to do its best at guessing the right combination for
the given input file, the number of source and destination ports.
2009-11-06 18:58:35 +01:00
Max Kellermann
2598dd5109
output/jack: dynamic destination port list
...
Support up to 16 configured destination ports, that should really be
enough for everybody.
2009-11-06 18:55:26 +01:00
Max Kellermann
fac6e9ecdb
output/jack: renamed option "ports" to "destination_ports"
...
Be more clear which kind of port should be configured here.
2009-11-06 01:54:58 +01:00
Max Kellermann
dbbead6e72
output/jack: renamed "output ports" to "destination ports"
...
Use the same name as in the libjack API documentation.
2009-11-06 01:35:19 +01:00
Max Kellermann
8cb9f9b070
playlist_queue: use playlist plugins to load from playlist_directory
...
This patch allows the client to load a playlist file from the playlist
directory with a plugin. This can be used with the "load" command,
but the client has to pass the file name including the suffix. We
will probably use the music directory in the future, to support
playlist files inside the music directory.
2009-11-06 01:09:21 +01:00
Max Kellermann
61cb5df842
playlist_queue: moved code to playlist_open_remote_into_queue()
2009-11-06 01:07:42 +01:00
Max Kellermann
7e66f34154
playlist_list: added function playlist_list_open_path()
...
Added an interface for loading playlists from a local file.
2009-11-06 01:07:39 +01:00
Max Kellermann
f3203b5de5
playlist: added extm3u plugin
...
This new plugin parses extm3u files. Files without the "#EXTM3U"
header are still parsed by the plain old "m3u" plugin.
2009-11-06 00:41:42 +01:00
Max Kellermann
65e56ff829
playlist/{m3u,pls}: removed URI checks
...
The caller is responsible for verifying the song URI.
2009-11-06 00:36:32 +01:00
Max Kellermann
a4970c66ef
playlist_list: rewind the stream before opening the playlist
...
If one plugin has failed to open the playlist, it may have consumed a
part of the stream already. This may lead to a failure in all
following plugins. Fix: rewind the stream before each open() call.
2009-11-06 00:11:36 +01:00
Max Kellermann
945287358b
output/httpd: bind port when output is enabled
...
Implement the methods enable() and disable(). Bind the HTTP port in
the enable() method, but reject all incoming connections until the
output is opened.
2009-11-05 23:47:29 +01:00
Max Kellermann
979cd5a768
output/jack: support mono input
...
When MPD plays a mono song (audio_format.channel==1), connect only one
source port to both destination ports.
2009-11-05 20:02:04 +01:00
Max Kellermann
a68da8a475
output/jack: clear ring buffers before activating
...
After playback has stopped, the ring buffers may still contain
samples. These will be played when playback is started the next
time. We should clear the buffers each time.
2009-11-05 20:01:50 +01:00
Max Kellermann
2a9685cb3a
output/jack: use jack_client_open() instead of jack_client_new()
...
jack_client_new() is deprecated. This requires libjack 0.100
(released nearly 5 years ago). We havn't been testing older libjack
versions anyway.
As a side effect, there is the new option "autostart".
2009-11-05 20:01:18 +01:00
Max Kellermann
88abfc0d0f
output/jack: added option "client_name"
...
Instead of using MPD's audio output name (setting "name"), use a
separate configuration option. Change the default to "Music Player
Daemon".
2009-11-05 19:55:00 +01:00
Max Kellermann
4ec25b5d64
update_walk: log unrecognized files
...
When a song's tags could not be loaded during database update, log
this as a debug message. Same for a song being removed because its
updated tag could not be read.
2009-11-05 08:01:29 +01:00
Max Kellermann
e96dc9a14c
database: rescan after metadata_to_use change
...
Store a list of supported tag items in the database. When loading a
database which does not have a matching list, we must rescan in order
to get the missing information.
2009-11-04 18:48:22 +01:00
Max Kellermann
a434c35eb4
tag: added function tag_name_parse()
...
Convert a string into a tag_type enum.
2009-11-04 18:47:42 +01:00
Max Kellermann
7af8c88e37
song_save: explicitly parse the colon
...
Clear the colon. This simplifies all attribute parsers, because they
can now use strcmp() instead of strncmp().
2009-11-04 18:43:16 +01:00
Max Kellermann
a027bdf118
decoder_thread: initialize decoder_control.quit
...
If left uninitialized, then the decoder thread quits spuriously.
2009-11-04 09:44:50 +01:00
Max Kellermann
c043bf0f63
Merge branch 'master' of git://git.musicpd.org/romain/mpd
2009-11-04 09:20:13 +01:00
Romain Bignon
5744634094
sticker comments in code and example configuration file
...
Signed-off-by: Romain Bignon <romain@peerfuse.org>
2009-11-04 00:21:58 +01:00
Max Kellermann
a22c93b659
player_thread: on return, reset next_song only if queued
...
If no song was queued, then player_control.next_song might contain the
value for the next QUEUE command. We must not reset that.
2009-11-03 23:32:37 +01:00
Max Kellermann
507606bb78
player_thread: detect finished queued song
...
When the decoder finishes the "queued" song very quickly (before the
"current" song finishes playing), an assertion in do_play() fails
because it thinks that it should start decoding the queued song,
although that has in fact just finished.
2009-11-03 23:29:50 +01:00
Max Kellermann
f421c8a191
player_control: moved pc.next_song assertion into lock
...
The assertion shouldn't access player_control.next_song without
locking it.
2009-11-03 23:17:44 +01:00
Max Kellermann
d06f8baf69
player_thread: moved code to decoding_next_song()
...
Simplify several expressions.
2009-11-03 22:27:40 +01:00
Max Kellermann
56b8081af6
player_thread: lock player in player_check_decoder_startup()
...
Don't access attributes without the lock.
2009-11-03 21:23:48 +01:00
Max Kellermann
98d30ac9cf
decoder_control: pass pipe and buffer to dc_start()
...
Don't access decoder_control attributes directly.
2009-11-03 21:18:22 +01:00
Max Kellermann
98150f503a
player_thread: lock inside player_wait_for_decoder()
...
Lock the player_control object when modifying its attributes.
2009-11-03 21:02:54 +01:00
Max Kellermann
6c78c21fb8
player_thread: moved code to player_dc_start()
2009-11-03 21:01:56 +01:00
Max Kellermann
7fd2097a44
decoder_control: don't check command in decoder_is_starting()
...
Asynchronous decoder startup is gone, and we don't need to check
command==DECODE_COMMAND_START anymore.
2009-11-03 21:01:49 +01:00
Max Kellermann
89893faa19
decoder_control: merge next_song and current_song
...
These two variables are redundant, we need only one of them.
2009-11-03 20:02:19 +01:00
Max Kellermann
bfa7da943c
player_thread: don't set errored_song on audio error
...
It's not used if pc.error==PLAYER_ERROR_AUDIO.
2009-11-03 20:01:19 +01:00
Max Kellermann
734676fcfb
decoder_thread: unlock the decoder while checking the stream
...
This is only a slight change to the previous locking behaviour: keep
the decoder unlocked during the loop, and lock it only while checking
decoder_control.command.
2009-11-03 19:21:55 +01:00
Max Kellermann
acb265d082
player_thread: don't start the decoder asynchronously
...
The START command returns without blocking; we don't need the
asynchronous decoder start anymore.
2009-11-03 19:18:17 +01:00
Max Kellermann
77a647fc26
decoder_thread: open input stream after command finished
...
Return the result to the caller more quickly. This unifies error
handling: no error can be reported before the command is finished.
2009-11-03 19:17:52 +01:00
Max Kellermann
59ffb5b7c1
decoder_control: make the song objects const
...
They are just informational.
2009-11-03 19:16:25 +01:00
Jeffrey Middleton
4dc25d3908
alsa_plugin.c: workaround snd_pcm_drain bug
...
Reintroduce a fix from commit 52a0653
(Warren Dukes): "don't call
snd_pcm_drain unless we're already in the RUNNING state". This prevents
ALSA with dmix from sometimes hanging when snd_pcm_drain is called, e.g.
when moving from one song to the next (as in mantis issue 2634).
2009-11-02 23:58:15 -06:00
Max Kellermann
0f9f82f227
output_thread: moved code to ao_next_chunk()
2009-11-02 20:20:14 +01:00
Max Kellermann
55e3aa8179
output_thread: return from ao_play() if chunk->next is NULL
...
When the "next" chunk to be played is NULL, return from ao_play()
immediately, without going over the "while" loop (no-op).
2009-11-02 20:20:14 +01:00
Max Kellermann
408d52fe39
player_thread: check command before waiting during pause
...
While paused, the player thread re-locks its mutex and waits for a
signal. This is racy: when the command is set while the thread is
waiting for the lock, it may wait forever. This patch adds another
command check before player_wait().
2009-11-02 20:20:13 +01:00
Max Kellermann
b9013944dc
output: signal the output thread when CANCEL is finished
...
After CANCEL, the output thread waits for another signal before it
continues playback, to synchronize with the caller. There were some
situations where this signal wasn't sent properly. This patch adds an
explicit g_cond_signal() at two code positions.
2009-11-02 19:09:25 +01:00
Max Kellermann
e814f8d5bd
update: removed unused variable "update_notify"
...
That variable has been superseded by "remove_notify" (defined in
update_remove.c).
2009-11-02 17:22:41 +01:00
Max Kellermann
64a481d873
{decoder,player}_control: removed duplicate wakeups
...
Don't wake up the target thread in every iteration of the wait() loop.
Waking it up once, right after the command has been set, must be
enough.
2009-11-02 17:12:00 +01:00
Max Kellermann
93d8f9f00e
player_control: lock player before setting seek parameters
...
These parameters must be protected with a mutex, too. Wrap everything
inside player_lock()/player_unlock(), and use player_command_locked()
instead of player_command().
2009-11-02 17:02:05 +01:00
Max Kellermann
d1742a2330
output_thread: check command before g_cond_wait()
...
After CANCEL, call g_cond_wait() only if the new command is still
NONE. Problem is that ao_command_finished() has to unlock the
audio_output object, and in the meantime, the player thread might have
submitted a new command.
2009-11-02 17:01:17 +01:00
Max Kellermann
5555d30bbd
song_save: free song object on error
...
Fix a minor memory leak.
2009-11-01 17:51:32 +01:00
Max Kellermann
4b17aca747
song_save: load one song at a time
...
Changed songvec_load() to song_load(). Added start and end markers
for each song. Removed the "key" line, it's redundant.
2009-11-01 17:51:29 +01:00
Max Kellermann
63dda94a02
database: save database format version
2009-11-01 17:50:01 +01:00
Max Kellermann
7f9ee00980
directory_save: partially revert the g_str_has_prefix() patch
2009-11-01 17:49:49 +01:00
Max Kellermann
53a749780a
database: use strcmp() instead of g_str_has_prefix()
2009-11-01 15:54:06 +01:00
Max Kellermann
c504004702
database: removed redundant music_root allocation
...
The "music_root" global variable is allocated by db_init().
2009-11-01 15:51:19 +01:00
Max Kellermann
8bfe3497b0
replay_gain: trigger OPTIONS idle event on mode change
2009-11-01 15:44:56 +01:00
Max Kellermann
9bcfd3a47d
text_file: allocate line buffers dynamically
...
Use a single GString buffer object in all functions loading the
database. Enlarge it automatically for long lines. This eliminates
the maximum line length for tag values. There is still an upper limit
of 512 kB to prevent denial of service, but that's reasonable I guess.
2009-11-01 15:37:16 +01:00
Max Kellermann
451f932d80
directory_save: allocate directory object earlier, assign mtime
...
Allocate the directory object after the "directory:" line. Assign the
mtime from the input file to this new object, instead of to the parent
directory.
2009-11-01 15:34:14 +01:00
Max Kellermann
10b7608926
directory_save: free directory on error
...
Fix a minor memory leak in the error handler.
2009-11-01 15:34:13 +01:00
Max Kellermann
2cd8a9fecf
directory_save: abort on duplicate subdirectory
...
The old code tried to recover, but what's the point of that? If a
directory is duplicate, something is wrong with the database file.
2009-11-01 15:34:13 +01:00
Max Kellermann
22279127f9
directory_save: moved code to directory_load_subdir()
2009-11-01 15:34:12 +01:00
Max Kellermann
ad01e1249b
decoder_api: check decoder==NULL in decoder_read()
...
It's legal to pass decoder=NULL to decoder_read(). Add a check.
2009-11-01 15:34:12 +01:00
Max Kellermann
b242175e18
song_save: increased maximum line length to 32 kB
...
The line buffer had a fixed size of 5 kB, and was allocated on the
stack. This was too small for some users. As a hotfix, we're
increasing the buffer size to 32 kB now, allocated on the heap. In
MPD 0.16, we'll switch to dynamic allocation.
2009-11-01 15:27:55 +01:00
Max Kellermann
6ef428af2e
decoder_control: removed the global variable "dc"
...
Allocate a decoder_control object where needed, and pass it around.
This will allow more than one decoder thread one day.
2009-10-31 19:22:56 +01:00
Max Kellermann
806496dfc9
Merge branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
src/decoder/ffmpeg_plugin.c
src/update.c
2009-10-31 18:23:56 +01:00
Max Kellermann
3de912e2b9
decoder_control: removed unused DECODE_TYPE macros
2009-10-31 18:03:50 +01:00
Max Kellermann
9eadb517da
player_thread: simplified thread destruction
...
Simply use "return" instead of g_thread_exit().
2009-10-31 18:01:05 +01:00
Max Kellermann
1ae4e4dcd3
songvec: sort songs by album name first, then disc/track number
...
When the songs of two albums are in the same directory, all songs of
an album should be right next to each others.
2009-10-31 17:36:56 +01:00
Max Kellermann
d099a7e464
songvec: simplified compare_tag_item()
...
Moved some code to tag_get_value_checked(), to eliminate several NULL
checks.
2009-10-31 17:32:00 +01:00
Max Kellermann
25a806a347
player_control: protect command, state, error with a mutex
...
Use GMutex/GCond instead of the notify library. Manually lock the
player_control object before accessing the protected attributes. Use
the GCond object to notify the player thread and the main thread.
2009-10-31 17:02:12 +01:00
Max Kellermann
73cff374fd
{player,output}_thread: fixed elapsed_time quirks
...
Right after seeking and song change, the elapsed_time shows old
information, because the output thread didn't finish a full chunk
yet. This patch re-adds a second elapsed_time variable, and keeps
track of a fallback value, in case the output thread can't provide a
reliable value.
2009-10-30 16:28:15 +01:00
Max Kellermann
cec019efff
output_thread: return bool from ao_play()
...
Return false when there was no chunk in the pipe. If the function
returns true, then audio_output_task() will not wait for a notify from
the player thread. This fixes a race condition.
2009-10-29 23:35:27 +01:00
Max Kellermann
4748decd8d
player_thread: set error status in play_next_chunk()
...
Don't set the error in play_chunk(); do all the error handling in the
caller. The errored_song attribute isn't set anymore; it doesn't make
sense for PLAYER_ERROR_AUDIO.
2009-10-29 22:39:48 +01:00
Max Kellermann
975143ab47
output_control: fixed deadlock in audio_output_update()
...
Call a version of audio_output_close() which doesn't lock recursively.
2009-10-29 22:39:42 +01:00
Viliam Mateicka
bb5acc939f
httpd: add config option to limit number of clients
2009-10-29 22:38:18 +01:00
Max Kellermann
bde3d14339
output: consistently lock audio output objects
...
Always keep the audio_output object locked within the output thread,
unless a plugin method is called. This fixes several race conditions.
2009-10-29 17:06:40 +01:00
Max Kellermann
1403172ef3
output_plugin: added method "drain"
...
drain() is the opposite of cancel(): it waits until all data in the
buffer has finished playing. Instead of implicitly draining in the
close() method like the ALSA plugin has been doing it forever, let the
output thread decide whether to drain or to cancel.
2009-10-29 15:59:40 +01:00
Max Kellermann
f74ee1a352
output/alsa: don't recover on CANCEL
...
The recovery is for nothing if we get CLOSE afterwards. Let's not
recover in the cancel() method, and let the next play() call sort it
out.
2009-10-29 15:59:35 +01:00
Max Kellermann
cf8d278b78
output_thread: removed redundant filter_close() call
...
Don't call filter_close() right after ao_close().
2009-10-29 15:58:21 +01:00
Max Kellermann
82af161210
output/pulse: initialize pulse_output.mixer
...
This variable was uninitialized and led to crashes.
2009-10-29 15:58:18 +01:00
Max Kellermann
9fed97b1f1
decoder/ffmpeg: removed the "author" vs "artist" workaround
...
libavformat gives us the song artist in the "author" field. Since we
use av_metadata_conv(), we don't need to check for "artist".
2009-10-28 22:17:10 +01:00
Max Kellermann
04816a6369
decoder/ffmpeg: convert metadata
...
Convert the metadata with the libavformat function av_metadata_conv().
This ensures that canonical tag names are provided by libavformat, and
we can remove the "artist" vs "author" workaround.
2009-10-28 22:12:22 +01:00
Max Kellermann
d083032236
update: delete ignored symlinks from database
...
When you disable the "follow_outside_symlinks" or the
"follow_inside_symlinks" setting, the next update should remove the
now-ignored files from the database.
2009-10-27 22:06:28 +01:00
Alam Arias
83a9cf74fb
include pulse/version.h for PA_CHECK_VERSION
2009-10-27 07:46:53 +01:00
Viliam Mateicka
a13e9832e7
encoder: renaming none_encoder to null_encoder
2009-10-26 20:02:34 +01:00
Viliam Mateicka
f67426871b
mpd.conf: new bool config value for enabling/disabling inotify update
2009-10-26 19:14:40 +01:00
Viliam Mateicka
2bfddd4310
encoder: new encoder plugin which just pass data through
2009-10-24 19:01:15 +02:00
Viliam Mateicka
7b343eaf50
add --disable-inotify for configure to disable inotify when autodetected
2009-10-24 18:24:29 +02:00
Max Kellermann
ac830468bf
output/jack: implement methods enable()/disable()
...
Don't connect to JACK before MPD has daemonized.
2009-10-23 10:56:25 +02:00
Max Kellermann
7547b1170b
output/pulse: implement methods enable()/disable()
...
Don't connect to PulseAudio before MPD has daemonized.
2009-10-23 10:56:16 +02:00
Max Kellermann
e53ca368a5
output_plugin: added methods enable() and disable()
...
With these methods, an output plugin can allocate some global
resources only if it is actually enabled. The method enable() is
called after daemonization, which allows for more sophisticated
resource allocation during that method.
2009-10-23 10:55:52 +02:00
Max Kellermann
c426a0bc5c
output/pulse: call mixer on state changes
...
Don't let the mixer plugin "override" the libpulse callbacks.
Instead, add a "mixer" attribute to the pulse_output struct, and call
the mixer on all interesting events.
2009-10-23 10:33:26 +02:00
Max Kellermann
acc99da73d
mixer_control: don't close the mixer if set_volume() fails
...
A mixer is useful enough if it can be read. Setting it may be
found unavailable at runtime.
2009-10-23 10:33:23 +02:00
Max Kellermann
c4f895daf4
mixer_plugin: get_volume() may return -1 if unavailable
...
If the method get_volume() returns -1 and no error object is set, then
the volume is currently unavailable, but the mixer should not be
closed immediately.
2009-10-23 10:32:25 +02:00
Max Kellermann
ede828c910
mixer_control: allow methods "open" and "close" to be NULL
...
It's possible to have a mixer implementation which does not explicitly
need the methods open() and close().
2009-10-23 09:15:51 +02:00
Max Kellermann
7dd172efec
mixer/pulse: don't get volume if stream is not yet ready
...
Moved the check from pulse_mixer_open() to pulse_mixer_update().
2009-10-22 20:28:12 +02:00
Max Kellermann
80ac82c8fb
output/fifo: renamed source to fifo_output_plugin.c
2009-10-22 19:23:30 +02:00
Max Kellermann
a05d0d5d94
audio: removed function finishAudioConfig()
...
There's no point in clearing the audio format before exiting.
2009-10-22 17:12:32 +02:00
Max Kellermann
0107ef2aad
main: put #ifdef inside winsock_init()
...
This way, the function call in the main() function does not need
another pair of #ifdef/#endif.
2009-10-22 17:12:28 +02:00
SF Markus Elfring
a153f21315
permission: improve const-correctness
2009-10-22 17:11:39 +02:00
Max Kellermann
294aaf7a90
playlist: new ASX playlist plugin
...
Based on the XSPF playlist plugin.
2009-10-21 23:39:47 +02:00
Max Kellermann
2024763d2a
playlist/xspf: ignore text in root, playlist, tracklist
...
Added a missing "break".
2009-10-21 23:27:05 +02:00
Max Kellermann
9526fdbe73
audio_format: wildcards allowed in audio_format configuration
...
An asterisk means that this attribute should not be enforced, and
stays whatever it used to be. This way, some configuration values
work like masks.
2009-10-21 23:01:04 +02:00
Max Kellermann
a5c4566fa1
audio_parser: moved code to separate functions
2009-10-21 23:01:03 +02:00
Max Kellermann
2c05430002
output: convert config_audio_format to an audio_format struct
...
This allows more sophisticated audio format selection.
2009-10-21 22:37:28 +02:00
Max Kellermann
643650dba7
audio_parser: renamed parameter "error" to "error_r"
...
It's a double pointer.
2009-10-21 22:22:23 +02:00
Max Kellermann
8cb6854da4
audio: removed config_param.value NULL check
...
The value is always non-NULL.
2009-10-21 22:22:20 +02:00
Max Kellermann
83844ec239
output/jack: make ringbuffer_size a size_t
2009-10-21 21:39:26 +02:00
Max Kellermann
1bfd25be35
output/jack: connect to server on MPD startup
...
.. and keep up the JACK connection while MPD runs. Allocate the ring
buffers on the first open, and free them at MPD exit.
2009-10-21 21:37:11 +02:00
Max Kellermann
cee216f2dc
output/jack: removed the empty "cancel" method
...
JACK doesn't need cancel() because it won't do much anyway. Buffers
are small.
2009-10-21 21:01:00 +02:00
Max Kellermann
27c246e8d9
output/jack: renamed parameter "error" to "error_r"
...
It's a double pointer.
2009-10-21 20:13:39 +02:00
Max Kellermann
1ff39476eb
output/jack: implement the "pause" method
...
Don't disconnect from JACK during pause.
2009-10-21 18:33:05 +02:00
Max Kellermann
acfd9a73bc
output/jack: renamed source to jack_output_plugin.c
2009-10-21 18:33:01 +02:00
Max Kellermann
b479a264b6
pulse: code rewrite using the asynchronous libpulse API
...
This is a complete rewrite of the PulseAudio output plugin. It uses
the asynchronous API, which gives us more control over everything.
Additionally, it connects to the PulseAudio server on startup, and
keeps this connection up while MPD runs. During pause, instead of
closing the stream, it enables "cork".
2009-10-21 10:30:42 +02:00
Max Kellermann
ac32f36e4e
mixer_plugin: pass audio_output pointer to mixer_plugin.init()
...
This allows the mixer object to access its associated audio output
object.
2009-10-21 09:48:41 +02:00
Max Kellermann
b8ccc885c8
volume: added PIPE_EVENT_MIXER
...
Flush the hardware volume cache, and send the MIXER idle event. This
allows mixer plugins to detect volume changes.
2009-10-21 09:48:37 +02:00
Max Kellermann
1a6ed81193
output_thread: check again if output is open on PAUSE
...
Basically the same as the 0.15.5 patch "check again if output is open
on CANCEL". Same race condition, same fix.
2009-10-21 08:07:07 +02:00
Max Kellermann
4e2fb3fb89
mixer_plugin: use GError for error handling
2009-10-20 22:10:56 +02:00
Max Kellermann
9cd2129eeb
output_init: renamed parameter "error" to "error_r"
...
It's a double pointer.
2009-10-20 21:26:28 +02:00
Max Kellermann
097e200a97
mixer/{oss,alsa}: renamed the mixer source files
2009-10-20 21:23:05 +02:00
Max Kellermann
bd28caed3c
output/pulse: renamed context to "Music Player Daemon"
...
This looks nicer in the PulseAudio manager than just "mpd".
2009-10-20 21:07:38 +02:00
Max Kellermann
bc4266bef8
pulse: renamed source files
2009-10-20 21:05:11 +02:00
Max Kellermann
bc629c8a3e
pulse: announce "media.role=music"
...
This allows PulseAudio to do some advanced tweaks.
2009-10-20 21:02:10 +02:00
Max Kellermann
2e9e34aa40
main: call g_set_application_name()
...
I'm not sure about the advantages of calling g_set_application_name(),
because I don't use a task manager (except for ps and kill), but it
sure doesn't hurt.
2009-10-20 21:02:00 +02:00
Max Kellermann
c953d6409d
mapper, update, ...: use g_build_filename(), G_DIR_SEPARATOR, ...
...
Try to be as portable as possible, use GLib path name functions and
macros.
2009-10-20 21:01:55 +02:00
Max Kellermann
447e4d3583
Merged release 0.15.5 from branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
src/decoder/flac_plugin.c
src/update.c
2009-10-18 19:02:43 +02:00
Serge Ziryukin
33bf6c0978
decoder/vorbis: avoid unused symbol warnings from vorbisfile.h
...
svn r13289 of libvorbis introduced static callbacks (like OV_CALLBACKS_DEFAULT)
defined in "vorbisfile.h" header. First released version with this change is libvorbis-1.2.2.
In libversion-1.2.3 OV_EXCLUDE_STATIC_CALLBACKS define was added to avoid
warnings about unused static callbacks. Information on the OV_EXCLUDE_STATIC_CALLBACKS
can be found in http://svn.xiph.org/trunk/vorbis/CHANGES .
2009-10-18 18:35:02 +02:00
Max Kellermann
d69e0ab53a
command: omitting the range end is possible
...
When the range end is missing, then the maximum possible value is
assumed.
2009-10-18 01:24:49 +02:00
Max Kellermann
e7c267db4f
command: use GLib limit macros in check_range()
...
These are portable and don't require limits.h.
2009-10-18 01:24:45 +02:00
Max Kellermann
bddb6b4273
command: allow changing replay gain mode on-the-fly
...
The new command "replay_gain_mode" allows the user to switch the
replay gain mode on-the-fly. No more mpd.conf editing.
2009-10-17 22:58:19 +02:00
Max Kellermann
7ec32704f9
replay_gain: moved mode parser to replay_gain_set_mode_string()
2009-10-17 22:40:50 +02:00
Max Kellermann
8d217567c6
replay_gain: added setting "replaygain off"
...
There was no setting for disabling replay gain. It was off when the
"replaygain" setting was not there.
2009-10-17 21:38:45 +02:00
Max Kellermann
a17d814381
replay_gain: read configuration even when replay gain is disabled
...
It will be possible to enable replay gain at runtime even when it is
disabled in the configuration file. This patch enables the preamp
settings in this case.
2009-10-17 21:38:32 +02:00
Max Kellermann
5554633ab8
update: obey .mpdignore files
2009-10-16 18:11:43 +02:00
Max Kellermann
d09e19c3dc
decoder/flac: fixed two memory leaks in the CUE tag loader
...
Don't initialize "vc" and "cs" with FLAC__metadata_object_new(); that
value is overwritten by FLAC__metadata_get_tags() and
FLAC__metadata_get_cuesheet().
2009-10-16 17:39:17 +02:00
Max Kellermann
8ae5bc4d79
update: fixed memory leak during container scan
...
The return value of map_directory_child_fs() must be freed.
2009-10-16 17:38:15 +02:00
Max Kellermann
d1ba27d820
update: song_file_new() cannot fail
...
Removed the NULL check. If that NULL check was correct, that would
have been a memory leak (vtrack).
2009-10-16 17:37:54 +02:00
Max Kellermann
2c908fde1b
output_thread: check again if output is open on CANCEL
...
When the player thread unpauses, it sends CANCEL to the output thread,
after having checked that the output is still open. Problem is when
the output thread closes the device before it can process the CANCEL
command - race condition. This patch adds another "open" check inside
the output thread.
2009-10-16 15:09:22 +02:00
A. Klitzing
792010ba32
notify_queue: use g_timeout_add_seconds()
2009-10-15 21:22:39 +02:00
Max Kellermann
b69246c646
player_thread: don't call audio_output_all_check() if paused
...
When the audio output fails to open, MPD pauses playback, but doesn't
reset player.play_audio_format. This leads to an assertion failure in
audio_output_all_check() on the next REFRESH command, because no audio
output is open.
2009-10-15 20:47:00 +02:00
Qball Cow
f4ea9b7393
Add PLS Parser
2009-10-15 00:08:06 +02:00
Max Kellermann
1ff101c568
input/lastfm: removed obsolete last.fm input plugin
...
This has been replaced by the last.fm playlist plugin. The input
plugin has never worked well, and was just a playground to experiment
with the last.fm radio protocol.
2009-10-13 19:43:56 +02:00
Max Kellermann
a93ffdd1be
command: "load" supports remote playlists (m3u, xspf, lastfm://)
...
This patch integrates the playlist plugin API to the MPD core. We'll
be able to do much more in the future with that API, that's just the
beginning.
2009-10-13 18:53:33 +02:00
Max Kellermann
319149254d
main: initialize playlist plugins
2009-10-13 18:01:11 +02:00
Max Kellermann
f7ce4f6239
song: renamed attribute "url" to "uri"
2009-10-13 18:01:06 +02:00
Max Kellermann
28442cce9f
queue: no CamelCase
...
Renamed idToPosition.
2009-10-13 16:43:06 +02:00
Max Kellermann
f122e6d456
playlist: added plugin for last.fm radio
...
This plugin will replace the last.fm input plugin, once the playlist
API is integrated into MPD.
2009-10-13 16:32:10 +02:00
Max Kellermann
8391ac4cc8
playlist: added XSPF plugin
2009-10-13 16:31:07 +02:00
Max Kellermann
a61d0c9567
Merge branch 'v0.15.x'
2009-10-13 16:25:17 +02:00
Max Kellermann
6037beabe1
input/curl: fixed endless loop during buffering
...
When the connection is lost while buffering, the CURL input plugin may
enter an endless loop, because it does not check the EOF condition.
This patch makes fill_buffer() return success only if there's at least
one buffer, which is enough of a check.x
2009-10-13 16:24:28 +02:00
Max Kellermann
cb331ae436
playlist_list: pass configuration to playlist plugins
...
This patch completes the configuration support.
2009-10-13 16:19:21 +02:00
Max Kellermann
767e27c8f0
playlist/m3u: added plugin name
2009-10-13 16:13:36 +02:00
Max Kellermann
e78370e050
playlist_list: initialize the "playlist" variable
...
Prevent access on uninitialized variable if the plugin list is empty.
2009-10-13 16:13:33 +02:00
Max Kellermann
ea616b3ed4
tag: removed the "_ITEM_" suffix from the enum names
2009-10-13 16:12:45 +02:00
Max Kellermann
a9dc0e816c
state_file: use g_timeout_add_seconds()
2009-10-13 16:12:44 +02:00
Max Kellermann
4390d72b14
configure.ac: require GLib 2.16
...
Accidently, MPD has been using several GLib 2.16 functions for a
while, and nobody noticed yet. To simplify the code base, let's bump
the minimum GLib version for MPD to 2.16. That version is old enough,
and it's reasonable to expect users to have it.
2009-10-13 16:12:43 +02:00
Max Kellermann
2bf740fc71
playlist_plugin: new plugin API for playlist parsers
...
Based on this API, we will add parsers for EXTM3U, PLS, ASX, last.fm
radio and others.
There is no integration into the MPD core yet. Right now, we have a
command line test program. This is work in progress.
2009-10-12 22:34:04 +02:00
Max Kellermann
dbb1e732b8
text_input_stream: input_stream wrapper for reading text files
2009-10-12 22:30:59 +02:00
Max Kellermann
7ec503c4ec
song: moved code to song_update.c
...
Moved all the code which depends on the decoder plugins to a separate
source. That allows leaner test programs.
2009-10-12 22:30:50 +02:00
Max Kellermann
a07ab27dae
decoder_thread: removed redundant NULL assignments
...
The while() clause resets the "plugin" variable. We don't need to
reset it at the end of the loop body.
2009-10-11 23:44:21 +02:00
Max Kellermann
727c301fbc
input_stream: use "goffset" instead of "off_t"
...
The "off_t" type may change when you enable or disable large file
support on 32 bit platforms. This caused severe ABI problems within
MPD when we enabled LFS for the first time: two sources included
config.h and sys/types.h in different order, and had different off_t
sizes - leading to memory corruption because of ABI incompatibility.
This patch attempts to get rid of all public "off_t" uses: it removes
"off_t" from the input_stream ABI/API, and switches to GLib's 64 bit
"goffset" type. This may hurt 32 bit embedded platforms a tiny bit,
but that's not even measurable.
2009-10-11 23:32:22 +02:00
Max Kellermann
71f881d5cb
Merge branch 'v0.15.x'
...
Conflicts:
NEWS
configure.ac
2009-10-11 23:25:27 +02:00