Commit Graph

239 Commits

Author SHA1 Message Date
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
bc629c8a3e pulse: announce "media.role=music"
This allows PulseAudio to do some advanced tweaks.
2009-10-20 21:02:10 +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
Avuton Olrich
b2b300b635 Modify version string to post-release version 0.15.6~git 2009-10-18 09:50:17 -07:00
Avuton Olrich
7df1a2c77d mpd version 0.15.5 2009-10-18 09:50:16 -07: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
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
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
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
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
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
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
71f881d5cb Merge branch 'v0.15.x'
Conflicts:

	NEWS
	configure.ac
2009-10-11 23:25:27 +02:00
Max Kellermann
9a3f5ff977 riff, aiff: fixed "limited range" gcc warning
On 32 bit systems with large file support enabled (i.e. "sizeof(off_t)
> sizeof(size_t)") gcc emits a warning because a size_t cast to off_t
can never become negative.
2009-10-11 23:15:38 +02:00
Max Kellermann
a1d868eb56 decoder_thread: change the fallback decoder name to "mad"
When there is no Content-Type response header, try the "mad" decoder
plugin.  It uesd to be named "mp3", and we forgot to change the
fallback name in decoder_thread.c.
2009-10-11 23:14:16 +02:00
Max Kellermann
af92b1c2d8 input/curl: don't abort if a packet has only metadata
When a received chunk of data has only icy-metadata, there was no
usable data left for input_curl_read() to return, and thus it returned
0 bytes.  "0" however is a special value for "end of file" or
"error".  This patch makes input_curl_read() read more data from the
socket, until the read request can be fulfilled (or until there's
really EOF).
2009-10-11 23:13:49 +02:00
Max Kellermann
57f69a2915 doc/protocol.xml: "addid" with negative position is deprecated 2009-10-09 10:18:02 +02:00
Max Kellermann
a5960c20cc playlist_control: "previous" really plays the previous song
No more CD player emulation.  The current behaviour of "previous" is
difficult for a client to predict, because it does not definitely know
the current position within the song.  If a client wants to restart
the current song, it can always send "playid".
2009-10-08 20:33:50 +02:00
Alam Arias
81e56705ad configure.ac: build with large file support by default
This fixes mpg123 support.
2009-10-08 15:24:59 +02:00
Max Kellermann
ecb118f1ed state_file: save only if something has changed
If nothing has changed since the last save, don't save the state
file.  Saving will spin up the hard drive, which is undesirable on
hosts where MPD is idling in background.
2009-10-08 15:22:39 +02:00
Max Kellermann
7013f9fc31 Merged release 0.15.4 from branch 'v0.15.x'
Conflicts:
	NEWS
	configure.ac
2009-10-03 16:17:02 +02:00
Avuton Olrich
d6d4de1123 Modify version string to post-release version 0.15.5~git 2009-10-03 05:44:26 -07:00
Avuton Olrich
325e380b8e mpd version 0.15.4 2009-10-03 05:44:26 -07:00
Max Kellermann
31cabc751d command: range support for "delete" 2009-09-30 23:13:13 +02:00
Max Kellermann
65693d057b decoder/ffmpeg: use the "artist" tag if "author" is not present
Usually, we read our "artist" tag from ffmpeg's "author" tag.  In some
cases however (e.g. APE), this tag is named "artist".  This patch
implements a fallback: if no "author" is found, MPD tries to use
"artist".
2009-09-30 15:41:43 +02:00
Max Kellermann
b0f9a1454a decoder/faad: skip assertion failure on large ID3 tags
When the ID3 tag in an AAC file is larger than the current buffer, the
function decoder_buffer_consume() aborts.  By using the new function
decoder_buffer_skip() instead, we can safely skip the ID3 tag.
2009-09-30 15:22:47 +02:00
Max Kellermann
8f261af5c1 automatically update the database with Linux inotify
This patch implements a light-weight inotify library, and watches all
directories below the music directory.  It updates all directories
where files changed after a delay of 5 seconds.
2009-09-25 18:32:00 +02:00
Max Kellermann
a86f9b8035 cmdline: removed options --create-db and --no-create-db
Both options are deprecated, and should not be used anymore.  Many
users get confused by their presence.
2009-09-20 23:31:35 +02:00
Patrik Weiskircher
32f212cb86 output/osx: fix the OS X 10.6 build
Include CoreServices/CoreServices.h.
2009-09-20 23:30:37 +02:00
Patrik Weiskircher
803a698f98 output/osx: fix the OS X 10.6 build
Include CoreServices/CoreServices.h.
2009-09-20 23:28:07 +02:00
Max Kellermann
fdc479676f Merge branch 'v0.15.x'
Conflicts:
	NEWS
	configure.ac
	doc/mpdconf.example
2009-09-10 23:18:43 +02:00
Max Kellermann
a99202a8a4 decoder/vorbis: revert "faster tag scanning with ov_test_callback()"
This patch made ov_time_total() unusable, and MPD did not know the
duration of songs.
2009-09-10 23:04:01 +02:00
Serge Ziryukin
f5f4a9da6b doc: documented the "openal" output plugin settings 2009-09-06 22:22:17 +02:00
Mike Dawson
430b5b0490 decoder/sidplay: support seeking 2009-08-30 19:49:16 +02:00
Mike Dawson
cde9408bd8 decoder/sidplay: implemented songlength database
[mk: added autoconf test; fixed songlen_data_size type]
2009-08-30 19:49:04 +02:00
Mike Dawson
85ce9aa7de decoder/sidplay: subtunes 2009-08-30 19:48:56 +02:00
Max Kellermann
f2ff2409ad Merged release 0.15.3 from branch 'v0.15.x'
Conflicts:

	NEWS
	configure.ac
2009-08-30 09:42:12 +02:00
Avuton Olrich
e8569af35f Modify version string to post-release version 0.15.4~git 2009-08-29 22:59:24 -07:00
Avuton Olrich
7a690c6b70 mpd version 0.15.3 2009-08-29 22:59:24 -07:00
Max Kellermann
bff4c54ece decoder/mpg123: new decoder plugin based on libmpg123
Still missing:
- seeking
- tags
- streaming
- encodings other than MPG123_ENC_SIGNED_16
2009-08-26 20:08:13 +02:00
Anton Khirnov
df0c26a394 command: add "findadd" command. 2009-08-25 13:43:22 +02:00
Rasmus Steinke
408f723701 decoder/vorbis: faster tag scanning with ov_test_callback()
using ov_test_callback with function CALLBACKS_STREAMONLY will cause
scanning to stop after the comment field.  ov_open (and ov_test)
default to CALLBACKS_DEFAULT which scans the file structure causing a
huge slowdown.  The speed improvement is huge: It scanned my files
around 10x faster This procedure has been recommended by monthy (main
vorbis developer) and was said to be safe for scanning files.
2009-08-24 22:14:22 +02:00
Max Kellermann
4a0d4a02a6 output/recorder: new output plugin for recording radio streams
The recorder plugin writes audio played by MPD to a file.  This may be
useful for recording radio streams.

This implementation is incomplete, because support for tags is
missing, and MPD should be able to record each track to a different
file.
2009-08-24 18:57:06 +02:00
Max Kellermann
4231ec51c3 conf: removed the deprecated "error_file" option
This option was deprecated by the 0.15 release.  This patch makes this
option invalid.
2009-08-24 17:12:15 +02:00
Igor Kuzmin
9d42f4e0ed update: don't re-read unchanged container files
MPD checks if every flac (possibly other types as well) file contains
cuesheet on every update, which produces unneeded I/O. My music
collection is on NFS share, so it's quite noticeable. IMHO, it
shouldn't re-read unchanged files, so I wrote simple patch to fix it.
2009-08-19 21:21:29 +02:00
Max Kellermann
fd8aa54a90 output_init: initialize the "pause" flag
Fix stuttering due to uninitialized variable.
2009-08-18 11:32:54 +02:00
Max Kellermann
f401c1059c Merged release 0.15.2 from branch 'v0.15.x'
Conflicts:

	NEWS
	configure.ac
2009-08-15 21:18:38 +02:00
Avuton Olrich
48a80d0b85 Modify version string to post-release version 0.15.3~git 2009-08-15 11:57:50 -07:00
Avuton Olrich
5715534b53 mpd version 0.15.2 2009-08-15 11:57:50 -07:00
Max Kellermann
f38ce5408b output/shout: minimize the unpause latency
During the pause loop, manually sleep for 500ms if shout_delay()
returns a value greater than that.  Don't exhaust libshout's buffer.
2009-08-14 11:52:36 +02:00
Max Kellermann
7133f560ec output: fixed shout stuck pause bug
Explicitly make the output thread leave the ao_pause() loop.  This
patch is a workaround, and the "pause" flag is not managed in a
thread-safe way, but that's good enough for now.
2009-08-14 11:52:12 +02:00
Max Kellermann
7dddd9beda directory: free empty directories after removing them (memleak)
dirvec_delete() does not free the object, we have to call
directory_free() afterwards.
2009-08-14 11:52:00 +02:00
Max Kellermann
5d6f7803e1 update: free temporary string in container scan (memleak)
The return value of map_directory_child_fs() must be freed.
2009-08-14 11:51:51 +02:00
Max Kellermann
1c4f407a6d decoder/flac: don't allocate cuesheet twice (memleak)
The function flac_cue_track() first calls FLAC__metadata_object_new(),
then overwrites this pointer with FLAC__metadata_get_cuesheet().  This
allocate two FLAC__StreamMetadata objects, but the first pointer is
lost, and never freed.
2009-08-14 11:51:42 +02:00
Max Kellermann
e44f313912 update: free empty path string (memleak)
When you pass an empty string to directory_update_init(), it was not
freed by update_task().
2009-08-14 11:51:35 +02:00
Anton Khirnov
bff72634ca ffmpeg_plugin: convert metadata to generic format 2009-08-03 17:40:22 +02:00
Courtney Cavin
6d71094ce5 input/lastfm: use metadata
Added a patch to flush out the last.fm input plugin slightly. It
basically turns it into a wrapper for the appropriate plugin. Most
notably metadata is now extracted.
2009-07-28 16:41:50 +02:00
Max Kellermann
9322f04529 cmdline: obey $(sysconfdir) for default mpd.conf location
Instead of hard-coding the path "/etc/mpd.conf", use the configured
$(sysconfdir) path.  This can be set with:

 ./configure --sysconfdir=/etc

Note that this changes the default path to "/usr/local/etc/mpd.conf",
given the default prefix "/usr/local".  This is actually more correct
than the old default.
2009-07-28 16:17:18 +02:00
Max Kellermann
47ed89bd4c decoder/flac: parse all replaygain tags
The FLAC replaygain parser used the "||" operator.  This made the code
stop after the first value which was found.
2009-07-22 13:31:48 +02:00
Max Kellermann
322ef3cb80 mad: skip ID3 frames when libid3tag is disabled
When libid3tag is disabled, the libmad decoder plugin is unable to
identify ID3 frames.  If the file starts with an (unidentified) ID3
frame, it assumes that the file is not a valid MP3 song.  This patch
solves this by adding minimal stubs for the ID3 functions.
2009-07-22 12:57:03 +02:00
Max Kellermann
0ce727d5d4 ape: added protection against large memory allocations
The function tag_ape_load() retrieves a 32 bit unsigned integer from
the input file, and passes it to g_malloc().  This is dangerous, and
may be used for a denial of service attack on MPD.
2009-07-19 17:38:46 +02:00
Max Kellermann
a988b9b025 ape: check the tag size (fixes integer underflow)
The expression "tagLen - size > 0" may result in an integer underflow
and a buffer overflow, when "size" is larger than "tagLen".  "size" is
read from the input file, and must not be trusted.  This patch changes
the expression to "tagLen > size", which is a lot safer.
2009-07-18 22:45:56 +02:00
Max Kellermann
4100035b19 Merged release 0.15.1 from branch 'v0.15.x' 2009-07-16 07:37:13 +02:00
Avuton Olrich
19f1bfdf40 Modify version string to post-release version 0.15.2~git 2009-07-15 13:36:41 -07:00
Avuton Olrich
d7bad6ae02 mpd version 0.15.1 2009-07-15 13:36:41 -07:00
Max Kellermann
7261739526 cmdline: renamed option "--stdout" to "--stderr"
Since version 0.14, MPD has been logging to standard error instead of
standard output.  The option name should reflect that.  The old option
continues to work, we will remove it in a future MPD release.
2009-07-15 18:27:32 +02:00
Max Kellermann
6233de0546 encoder/twolame: new encoder plugin based on libtwolame
This encoder plugin is a replacement for the LAME encoder plugin for
those who prefer a "free" (non-patent encumbered) encoder library.
Most of the plugin source code is copied from the LAME encoder plugin,
since the LAME and TwoLAME APIs are nearly the same.
2009-07-14 23:07:41 +02:00
Max Kellermann
966a886ef5 NEWS: fixed typo 2009-07-14 14:24:02 +02:00
Serge Ziryukin
75c0a33ec5 flac: load external cue sheet when no internal one
External cue sheet file for "file.flac" should be named as "file.flac.cue".
2009-07-09 19:01:24 +02:00
Bart Nagel
8ae9b45da0 Implement ArtistSort tag 2009-07-09 19:00:41 +02:00
Max Kellermann
1eebbc746f decoder/sndfile: new decoder plugin based on libsndfile 2009-07-07 08:58:51 +02:00
Max Kellermann
adb2f66ced tag_id3: revised "performer" tag support
According to the ID3 2.4 documentation, "TOPE" is "Original
artist/performer", not "performer".  Removed "TOPE" support.  Instead,
map TPE3 ("Conductor/performer refinement") and TPE4 ("Interpreted,
remixed, or otherwise modified by") to "performer".
2009-07-07 08:00:21 +02:00
Max Kellermann
7246d67263 tag: added tag "AlbumArtistSort"
The tag_id3.c library supports both the documented "TSO2" tag, and the
inofficial TXXX/ALBUMARTISTSORT.

The Vorbis/FLAC decoder automatically supports the new tag, without
further change.
2009-07-07 07:36:25 +02:00
Max Kellermann
c0c5119788 decoder/flac: fix assertion failure in tag_free() call
Initialize flac_data.tag right after flac_data_init().  This way, the
"goto fail" won't jump to the point where tag_free(NULL) can be
called.
2009-07-06 22:09:30 +02:00
Max Kellermann
0275690b5c output: use the software mixer plugin
Do all the software volume stuff inside each output thread, not in the
player thread.  This allows one software mixer per output device, and
also allows the user to configure the mixer type (hardware or
software) for each audio output.

This moves the global "mixer_type" setting into the "audio_output"
section, deprecating the "mixer_enabled" flag.
2009-07-06 22:00:50 +02:00
Max Kellermann
206392ad1a command: removed the "volume" command
This command has been deprecated more than 5 years ago (0.10.0).  Its
implementation is a kludge, let's remove it now.
2009-07-06 21:51:00 +02:00
Max Kellermann
64ca94c910 output/httpd: include sys/types.h
On Mac OS X, the httpd plugin cannot be compiled, because OS X's
system headers do nto include sys/types.h, although they use
u_int32_t.
2009-07-06 14:40:06 +02:00
Max Kellermann
d4914fc9ef idle: added "update" event
Some clients have visual feedback for "database update is running".
Using the "database" idle event is unreliable, because it is only
emitted when the database was actually modified.  This patch adds the
"update" event, which is emitted when the update is started, and again
when the update is finished, disregarding whether it has been
modified.
2009-07-05 08:46:53 +02:00
Max Kellermann
46c19b8249 song_print: send song modification time to client
Added the response line "Last-Modified", which sends the modification
time in ISO 8601.  The same was already implemented for playlists.
2009-07-05 08:40:29 +02:00
Max Kellermann
badb827712 log: fix double free() bug during shutdown
Don't free an internal configuration value in log_init().  Call
config_get_path() instead of manually calling parsePath().
2009-07-05 07:14:24 +02:00
Max Kellermann
15d4c841ce database: fixed NULL pointer dereference after charset change
When the filesystem_charset is changed in mpd.conf, MPD should discard
the old database.  In this error branch, MPD did not fill the GError
object properly, and logged a warning message instead, which caused a
segmentation fault.
2009-06-30 16:29:40 +02:00
Max Kellermann
40851b7cac output_all: don't resume playback when stopping during pause
When MPD was paused, and the client sent the "stop" command (or
"clear"), a glitch caused MPD to continue playback for a split second.
This was because audio_output_all_cancel() calls
audio_output_all_update(), which reopens all output devices, and
re-ignites the playback loop.
2009-06-29 22:20:36 +02:00
Christopher Zimmerman
a641f562f3 playlist_state: save state when stopped
At the moment mpd doesn't store or restore the current track to/from
its state file when the daemon is stopped/started while in 'stopped'
state.  I believe the preferred behaviour would be to store and
restore the current track even when the daemon is in stopped state
when shutting down.

I made a small patch to adapt this behaviour. If you believe this is
not the preferred behaviour, maybe this should be realized as a
configuration option. I'm not sure how to do this, but made a small
comment, where one would have to put the option.
2009-06-26 09:26:12 +02:00
Max Kellermann
f8f5d40532 NEWS: updated NEWS file for 0.15.1 2009-06-25 11:29:08 +02:00
Max Kellermann
eacd604518 ffmpeg: support multiple tags
Call av_metadata_get() in a loop.
2009-06-25 08:43:59 +02:00
Max Kellermann
637c6a1850 conf: log unused/unknown block parameters 2009-06-25 08:42:25 +02:00
Max Kellermann
b1e95b1fa8 volume: removed support for legacy mixer configuration
The top-level "mixer_device" and "mixer_control" options have been
deprecated by MPD 0.15, and it's safe to remove them in MPD 0.16.
2009-06-25 08:37:51 +02:00
Max Kellermann
ce072b89d2 command: added new "status" line with more precise "elapsed time" 2009-06-25 08:37:34 +02:00
Avuton Olrich
f16d05c633 Modify version string to post-release version 0.16~git 2009-06-24 17:34:27 -07:00
Avuton Olrich
8758e97794 mpd version 0.15 2009-06-23 18:43:57 -07:00
Max Kellermann
d5ddecb15a listen: bind() failure on secondary address is non-fatal
Several users had problems with binding MPD to "localhost".  The cause
was duplicate /etc/hosts entries: the resolver library returns
127.0.0.1 twice, and of course, MPD attempts to bind to "both" of
them.  This patch makes failures non-fatal, given that at least one
address was bound successfully.  This is a workaround; users should
rather fix their /etc/hosts file.
2009-06-10 08:01:07 +02:00
Daniel Kahn Gillmor
05dfdfdb39 alsa_mixer: add mixer_index option
This allows you to select controls with duplicate names.
2009-04-28 09:15:48 +02:00
Max Kellermann
11bcd7f013 curl: moved proxy settings to "input" block
The old global settings "http_proxy_host", "http_proxy_port",
"http_proxy_user" and "http_proxy_password" continue to work.
2009-04-25 13:35:04 +02:00
Max Kellermann
472b994779 player_thread: pause when all audio outputs fail to play
When all audio outputs have been closed due to failures, pause the
playback instead of stopping it.  This way, the user may resume
at the current position after the problem has been dealt with.
2009-04-25 11:55:36 +02:00
Max Kellermann
54863dff8a NEWS: flagged some new features "experimental"
The "lastfm" input plugin is far from complete, because MPD does not
support nesting playlists yet.  The "fluidsynth" decoder plugin
suffers from shortcomings in the libfluidsynth library:

 http://www.mail-archive.com/fluid-dev@nongnu.org/msg01099.html
2009-04-02 07:12:38 +02:00