1 ver 0.15.7 (2009/??/??)
4 ver 0.15.6 (2009/11/18)
6 - lastfm: fixed variable name in GLib<2.16 code path
7 - input/mms: require libmms 0.4
9 - zzip: require libzzip 0.13
11 - id3: allow 4 MB RIFF/AIFF tags
13 - ffmpeg: convert metadata
14 - ffmpeg: align the output buffer
15 - oggflac: rewind stream after FLAC detection
16 - flac: fixed CUE seeking range check
17 - flac: fixed NULL pointer dereference in CUE code
18 * output_thread: check again if output is open on PAUSE
19 * update: delete ignored symlinks from database
20 * database: increased maximum line length to 32 kB
21 * sticker: added fallback for sqlite3_prepare_v2()
24 ver 0.15.5 (2009/10/18)
26 - curl: don't abort if a packet has only metadata
27 - curl: fixed endless loop during buffering
29 - riff, aiff: fixed "limited range" gcc warning
31 - flac: fixed two memory leaks in the CUE tag loader
32 * decoder_thread: change the fallback decoder name to "mad"
33 * output_thread: check again if output is open on CANCEL
34 * update: fixed memory leak during container scan
37 ver 0.15.4 (2009/10/03)
39 - vorbis: revert "faster tag scanning with ov_test_callback()"
40 - faad: skip assertion failure on large ID3 tags
41 - ffmpeg: use the "artist" tag if "author" is not present
43 - osx: fix the OS X 10.6 build
46 ver 0.15.3 (2009/08/29)
48 - vorbis: faster tag scanning with ov_test_callback()
50 - fix stuttering due to uninitialized variable
51 * update: don't re-read unchanged container files
54 ver 0.15.2 (2009/08/15)
56 - ape: check the tag size (fixes integer underflow)
57 - ape: added protection against large memory allocations
59 - mad: skip ID3 frames when libid3tag is disabled
60 - flac: parse all replaygain tags
61 - flac: don't allocate cuesheet twice (memleak)
63 - shout: fixed stuck pause bug
64 - shout: minimize the unpause latency
65 * update: free empty path string (memleak)
66 * update: free temporary string in container scan (memleak)
67 * directory: free empty directories after removing them (memleak)
70 ver 0.15.1 (2009/07/15)
72 - flac: fix assertion failure in tag_free() call
74 - httpd: include sys/types.h (fixes Mac OS X)
76 - don't resume playback when stopping during pause
77 * database: fixed NULL pointer dereference after charset change
78 * log: fix double free() bug during shutdown
84 - added support for the MMS protocol
85 - hide HTTP password in playlist
86 - lastfm: new input plugin for last.fm radio (experimental and incomplete!)
87 - curl: moved proxy settings to "input" block
89 - support the "album artist" tag
90 - support MusicBrainz tags
91 - parse RVA2 tags in mp3 files
92 - parse ID3 tags in AIFF/RIFF/WAV files
93 - ffmpeg: support new metadata API
94 - ffmpeg: added support for the tags comment, genre, year
96 - audiofile: streaming support added
97 - audiofile: added 24 bit support
98 - modplug: another MOD plugin, based on libmodplug
99 - mikmod disabled by default, due to severe security issues in libmikmod
100 - sidplay: new decoder plugin for C64 SID (using libsidplay2)
101 - fluidsynth: new decoder plugin for MIDI files (using libfluidsynth,
102 experimental due to shortcomings in libfluidsynth)
103 - wildmidi: another decoder plugin for MIDI files (using libwildmidi)
104 - flac: parse stream tags
105 - mpcdec: support the new libmpcdec SV8 API
106 - added configuration option to disable decoder plugins
107 - flac: support embedded cuesheets
108 - ffmpeg: updated list of supported formats
110 - added option to disable audio outputs by default
111 - wait 10 seconds before reopening after play failure
112 - shout: enlarged buffer size to 32 kB
113 - null: allow disabling synchronization
114 - mvp: fall back to stereo
115 - mvp: fall back to 16 bit audio samples
116 - mvp: check for reopen errors
117 - mvp: fixed default device detection
118 - pipe: new audio output plugin which runs a command
119 - alsa: better period_time default value for high sample rates
120 - solaris: new audio output plugin for Solaris /dev/audio
121 - httpd: new audio output plugin for web based streaming, similar to icecast
124 - "playlistinfo" and "move" supports a range now
125 - added "sticker database", command "sticker", which allows clients
126 to implement features like "song rating"
127 - added "consume" command which removes a song after play
128 - added "single" command, if activated, stops playback after current song or
129 repeats the song if "repeat" is active.
131 - rewritten mixer code to support multiple mixers
132 - new pulseaudio mixer
133 - alsa: new mixer_index option supports choosing between multiple
134 identically-named controls on a device.
135 * Add audio archive extraction support:
139 * the option "error_file" was removed, all messages are logged into
141 * support logging to syslog
142 * fall back to XDG music directory if no music_directory is configured
143 * failure to read the state file is non-fatal
144 * --create-db starts the MPD daemon instead of exiting
145 * playlist_directory and music_directory are optional
146 * playlist: recalculate the queued song after random is toggled
147 * playlist: don't unpause on delete
148 * pause when all audio outputs fail to play
149 * daemon: ignore "user" setting if already running as that user
150 * listen: fix broken client IP addresses in log
151 * listen: bind failure on secondary address is non-fatal
152 * 24/32 bit audio support
153 * print available protocols in --version
154 * fill buffer after seeking
155 * choose the fallback resampler at runtime
156 * steps taken towards win32 compatibility
157 * require glib 2.6 or greater
158 * built-in documentation using doxygen and docbook
161 ver 0.14.2 (2009/02/13)
163 - define HAVE_FFMPEG after all checks
165 - ffmpeg: added support for the tags comment, genre, year
166 - ffmpeg: don't warn of empty packet output
167 - ffmpeg: check if the time stamp is valid
168 - ffmpeg: fixed seek integer overflow
169 - ffmpeg: enable WAV streaming
170 - ffmpeg: added TTA support
171 - wavpack: pass NULL if the .wvc file fails to open
172 - mikmod: call MikMod_Exit() only in the finish() method
173 - aac: fix stream metadata
175 - jack: allocate ring buffers before connecting
176 - jack: clear "shutdown" flag on reconnect
177 - jack: reduced sleep time to 1ms
178 - shout: fixed memory leak in the mp3 encoder
179 - shout: switch to blocking mode
180 - shout: use libshout's synchronization
181 - shout: don't postpone metadata
182 - shout: clear buffer before calling the encoder
183 * mapper: remove trailing slashes from music_directory
184 * player: set player error when output device fails
185 * update: recursively purge deleted directories
186 * update: free deleted subdirectories
188 ver 0.14.1 (2009/01/17)
190 - mp4: support the writer/composer tag
191 - id3: strip leading and trailing whitespace from ID3 tags
192 - oggvorbis: fix tremor support
193 - oggvorbis: disable seeking on remote files
195 - jack: allocate default port names (fixes a crash)
197 - refresh stats after update
198 - save the database even if it is empty
200 - use select() to eliminate busy loop during connect
201 - honour http_proxy_* config directives
202 - fix assertion failure on "connection refused"
203 - fix assertion failure with empty HTTP responses
204 * corrected the sample calculation in the fallback resampler
205 * log: automatically append newline
206 * fix setenv() conflict on Solaris
207 * configure.ac: check for pkg-config before using it
208 * fix minor memory leak in decoder_tag()
209 * fix cross-fading bug: it used to play some chunks of the new song twice
211 - fix assertion failure during playlist load
212 - implement Fisher-Yates shuffle properly
213 - safely search the playlist for deleted song
214 * use custom PRNG for volume dithering (speedup)
215 * detect libid3tag without pkg-config
217 ver 0.14 (2008/12/25)
219 - wait 10 seconds before reopening a failed device
222 - shout: block while trying to connect instead of failing
223 - shout: new timeout parameter
224 - shout: support mp3 encoding and the shoutcast protocol
225 - shout: send silence during pause, so clients don't get disconnected
228 - wavpack: new plugin
229 - aac: stream support added
230 - mod: disabled by default due to critical bugs in all libmikmod versions
232 - "addid" takes optional second argument to specify position
233 - "idle" notifies the client when a notable change occurs
234 * Zeroconf support using Bonjour
235 * New zeroconf_enabled option so that Zeroconf support can be disabled
236 * Stop the player/decode processes when not playing to allow the CPU to sleep
237 * Fix a bug where closing an ALSA dmix device could cause MPD to hang
238 * Support for reading ReplayGain from LAME tags on MP3s
239 * MPD is now threaded, which greatly improves performance and stability
240 * memory usage reduced by merging duplicate tags in the database
241 * support connecting via unix domain socket
242 * allow authenticated local users to add any local file to the playlist
243 * 24 bit audio support
244 * optimized PCM conversions and dithering
245 * much code has been replaced by using GLib
246 * the HTTP client has been replaced with libcurl
247 * symbolic links in the music directory can be disabled; the default
248 is to ignore symlinks pointing outside the music directory
250 ver 0.13.0 (2007/5/28)
251 * New JACK audio output
252 * Support for "file" as an alternative to "filename" in search, find, and list
253 * FLAC 1.1.3 API support
254 * New playlistadd command for adding to stored playlists
255 * New playlistclear command for clearing stored playlists
256 * Fix a bug where "find any" and "list <type> any" wouldn't return any results
257 * Make "list any" return an error instead of no results and an OK
258 * New gapless_mp3_playback option to disable gapless MP3 playback
259 * Support for seeking HTTP streams
260 * Zeroconf support using Avahi
261 * libsamplerate support for high quality audio resampling
262 * ID3v2 "Original Artist/Performer" tag support
263 * New playlistsearch command for searching the playlist (similar to "search")
264 * New playlistfind command for finding songs in the playlist (similar to "find")
265 * libmikmod 3.2.0 beta support
266 * New tagtypes command for retrieving a list of available tag types
267 * Fix a bug where no ACK was returned if loading a playlist failed
268 * Fix a bug where db_update in stats would be 0 after initial database creation
269 * New count command for getting stats on found songs (similar to "find")
270 * New playlistmove command for moving songs in stored playlists
271 * New playlistdelete command for deleting songs from stored playlists
272 * New rename command for renaming stored playlists
273 * Increased default buffer_before_play from 0% to 10% to prevent skipping
274 * Lots of bug fixes, cleaned up code, and performance improvements
276 ver 0.12.2 (2007/3/20)
277 * Fix a bug where clients could cause MPD to segfault
279 ver 0.12.1 (2006/10/10)
280 * Fix segfault when scanning an MP3 that has a Xing tag with 0 frames
281 * Fix segfault when there's no audio output specified and one can't be detected
282 * Fix handling of escaping in quotes
283 * Allow a quality of -1 to be specified for shout outputs
284 * A few minor cleanups
286 ver 0.12.0 (2006/9/22)
287 * New audio output code which supports:
288 * A plugin-like architecture
289 * Non-libao ("native") outputs:
295 * Shout (Icecast or Shoutcast)
296 * Playing through multiple outputs at once
297 * Enabling/disabling outputs while MPD is running
298 * Saving output state (enabled/disabled) to the state_file
301 * Gapless MP3 playback
302 * MP3 ReplayGain support (using ID3v2 tags only)
303 * Support for MP2 files if MP3 support is enabled
304 * Composer, Performer, Comment, and Disc metadata support
305 * New outputs command for listing available audio outputs
306 * New enableoutput and disableoutput commands for enabling/disabling outputs
307 * New plchangesposid command for a stripped down version of plchanges
308 * New addid command for adding to the playlist and returning a song ID
309 * New commands and notcommands commands for checking available commands
310 * Can now specify any supported metadata type or "any" in search, find, and list
311 * New volume_normalization parameter for enabling Audio Compress normalization
312 * New metadata_to_use parameter for choosing supported metadata types
313 * New pid_file parameter for saving the MPD process ID to the specified file
314 * The db_file parameter is now required
315 * The port parameter is now optional (defaults to 6600)
316 * Can specify bind_to_address multiple times
317 * New --kill argument for killing MPD if pid_file is specified
318 * Removed --update-db argument (use the update function in your client instead)
319 * New mpdconf.example
320 * New mpd.conf man page
321 * Removed bundled libmad and libid3tag
322 * Lots of bug fixes, cleaned up code, and performance improvements
324 ver 0.11.5 (2004/11/1)
325 1) New id3v1_encoding config option to configure the id3v1 tag encoding (patch
327 2) Strip '\r' from m3u playlists (thank you windows)
328 3) Use random() instead of rand() for playlist randomizing
329 4) Fix a bug trying skipping some commented lines in m3u playlist files
330 5) Fix a bug when fetching metadata from streams that may cause certain
332 6) Fix a bug where replaygain preamp was used on files w/o replaygain tags
333 7) Fix a busy loop when trying to prebuffer a nonexistant or missing stream
334 8) Fix a bug in forgetting to remove leading ' ' in content-type for http
336 9) Check for ice-name in http headers
337 10) Be sure the strip all '\n' chars in tags
338 11) Set $HOME env variable when setuid'ing, this should fix the /root/.mcop
339 errors triggered by arts/libao
341 ver 0.11.4 (2004/7/26)
342 1) Fixed a segfault when decoding mp3's with corrupt id3v2 tags
343 2) Fixed a memory leak when encountering id3v2 tags in mp3 decoder
345 ver 0.11.3 (2004/7/21)
346 1) Add support for http authentication for streams
347 2) Added replaygain pre-amp support
348 3) Better error handling for fread() in inputStream_file
349 4) Fixed a bug so that when a freeAllInterfaces is called, it sets
350 max_interface_connections to 0. This prevents potential segfaults and other
351 nastiness for forked processes, like the player and update-er (do to
352 interfacePrintWithFD()).
353 5) Allow blockingWrite() to handle errors more gracefully (for example, if the
354 disc is full, and thus the write() fails or can't be completed, we just skip
355 this write() and continue, instead of getting stuck in an infinite loop until
356 the write() becomes successful)
357 6) Updated mpdconf.example from sbh/avuton
358 7) If "user" is specified, then convert ~ in paths to the user's home path
359 specified by "user" config paramter (not the actual current user running mpd).
361 ver 0.11.2 (2004/7/5)
362 1) Work around in computing total time for mp3's whose first valid mpeg frame is
364 2) Fix mp3 and mp4 decoders when seeking past the end of the file
365 3) Fix replaygain for flac and vorbis
366 4) Fix memory leaks in flac decoder (from normalperson)
367 5) Fix Several other bugs in playlist.c and directory.c (from normalperson)
369 ver 0.11.1 (2004/6/24)
370 1) Fix a bug that caused "popping" at the beginning of mp3's
371 2) Fix playlistid command
372 3) Fix move commands so they don't mess up the song id's
373 4) Added support for HTTP Proxy
374 5) Detect and skip recursive links in the music directory
375 6) Fix addPathToDB() so updating on a specific path doesn't exist correctly adds
376 the parent directories to the DB
378 ver 0.11.0 (2004/6/18)
379 1) Support for playing mp3 and Ogg Vorbis streams
380 2) Non-blocking Update
381 3) Replaygain support for Ogg Vorbis and FLAC (by Eric Moore aka AliasMrJones)
382 4) audio_output_format option that allows for all audio output to be converted
383 to a format compatible with any sound card
384 5) Own routines for to always support UTF-8 <-> ISO-8859-1 conversion
385 6) Added "Id" and "Pos" metadata for songs in playlist
386 7) Added commands: plchanges, currentsong, playid, seekid, playlistid, moveid,
388 8) UTF-8 validation of all tags
389 9) Update specific files/directories (for fast, incremental updating)
390 10) Added ACK error codes
392 12) Added command_list_ok_begin
393 13) Play after stop resumes from last position in the playlist
394 14) Play while pause resumes playback
395 15) Better signal handling by mackstann
396 16) Cleanup decoder interface (now called InputPlugins)
397 17) --create-db no long starts the daemon
398 18) --no-daemon outputs to log files
399 19) --stdout sends output to stdout/stderr
400 20) Default port is now 6600
401 21) Lots of other cleanups and Bugfixes
403 ver 0.10.4 (2004/5/26)
404 1) Fix configure problems on OpenBSD with langinfo and iconv
405 2) Fix an infinte loop when writing to an interface and it has expired
406 3) Fix a segfault in decoding flac's
407 4) Ingore CRC stuff in mp3's since some encoders did not compute the CRC
409 5) Fix a segfault in processing faulty mp4 metadata
411 ver 0.10.3 (2004/4/2)
412 1) Fix a segfault when a blanck line is sent from a client
413 2) Fix for loading playlists on platforms where char is unsigned
414 3) When pausing, release audio device after we say pause is successful (this
415 makes pause appear to not lag)
416 4) When returning errors for unknown types by player, be sure to copy the
418 5) add --disable-alsa for disabling alsa mixer support
419 6) Use select() for a portable usleep()
420 7) For alsa mixer, default to "Master' element, not first element
422 ver 0.10.2 (2004/3/25)
423 1) Add suport for AAC
424 2) Substitute '\n' with ' ' in tag info
425 3) Remove empty directories from db
426 4) Resume from current position in song when using state file
427 5) Pause now closes the music device, and reopens it on resuming
428 6) Fix unnecessary big endian byte swapping
429 7) If locale is "C" or "POSIX", then use ISO-8859-1 as the fs charset
430 8) Fix a bug where alsa mixer wasn't detecting volume changes
431 9) For alsa and software mixer, show volume to be the same as it was set (even
432 if its not the exact volume)
433 10) Report bitrate for wave files
434 11) Compute song length of CBR mp3's more accurately
436 ver 0.10.1 (2004/3/7)
437 1) Check to see if we need to add "-lm" when linking mpd
438 2) Fix issues with skipping bad frames in an mp3 (this way we get the correct
440 3) Fix crossfading bug with ogg's
441 4) Updated libmad and libid3tag included w/ source to 0.15.1b
443 ver 0.10.0 (2004/3/3)
444 1) Use UTF-8 for all client communications
445 2) Crossfading support
446 3) Password Authentication (all in plaintext)
448 5) Buffer Size is configurable
449 6) Reduced Memory consumption (use directory tree for search and find)
450 7) Bitrate support for Flac
451 8) setvol command (deprecates volume command)
452 9) add command takes directories
453 10) Path's in config file now work with ~
454 11) Add samplerate,bits, and channels to status
455 12) Reenable playTime in stats display
456 13) Fix a segfault when doing: add ""
457 14) Fix a segfault with flac vorbis comments simply being "="
458 15) Fix a segfault/bug in queueNextSong with repeat+random
459 16) Fix a bug, where one process may segfault, and cause more processes to spawn
460 w/o killing ones that lost their parent.
461 17) Fix a bug when the OSS device was unable to fetch the current volume,
462 it would close the device (when it maybe previously closed by the exact same
464 18) command.c cleanup by mackstann
465 19) directory.c and command.c cleanup by tw-nym
467 ver 0.9.4 (2004/1/21)
468 1) Fix a bug where updated tag info wasn't being detected
469 2) Set the default audio write size to 1024 bytes (should decrease cpu load a
470 bit on some machines).
471 3) Make audio write size configurable via "audio_write_size" config option
472 4) Tweak output buffer size for connections by detecting the kernel output
475 ver 0.9.3 (2003/10/31)
476 1) Store total time/length of songs in db and display in *info commands
477 2) Display instantaneous bitrate in status command
478 3) Add Wave Support using libaudiofile (Patch from normalperson)
479 4) Command code cleanup (Patch from tw-nym)
480 5) Optimize listing of playlists (10-100x faster)
481 6) Optimize interface output (write in 4kB chunks instead of on every '\n')
482 7) Fix bug that prevented rm command from working
483 8) Fix bug where deleting current song skips the next song
484 9) Use iconv to convert vorbis comments from UTF-8 to Latin1
486 ver 0.9.2 (2003/10/6)
487 1) Fix FreeBSD Compilation Problems
488 2) Fix bug in move command
489 3) Add mixer_control options to configure which mixer control/device mpd
491 4) Randomize on play -1
492 5) Fix a bug in toggling repeat off and at the end of the playlist
494 ver 0.9.1 (2003/9/30)
495 1) Fix a statement in the middle of declarations in listen.c, causes error for
498 ver 0.9.0 (2003/9/30)
500 2) Alsa Mixer Support
501 3) Save and Restore "state"
502 4) Default config file locations (.mpdconf and /etc/mpd.conf)
503 5) Make db file locations configurable
504 6) Move songs around in the playlist
506 8) Use Xing tags for mp3's
507 9) Remove stop_on_error
509 11) Playlists can be loaded and deleted from subdirectories
510 12) Complete rewrite of player layer (fork()'s only once, opens and closes
511 audio device as needed).
512 13) Eliminate use and dependence of SIGIO
514 15) Solaris compilations fixes
515 16) Support for different log levels
516 17) Timestamps for log entries
517 18) "user" config parameter for setuid (patch from Nagilum)
518 19) Other misc features and bug fixes
521 1) Fix a memory leak. When closing a interface, was called close() on the fd
522 instead of calling fclose() on the fp that was opened with fdopen().
524 ver 0.8.6 (2003/8/25)
525 1) Fix a memory leak when a buffered existed, and a connection was unexpectedly
526 closed, and i wasn't free'ing the buffer apropriatly.
528 ver 0.8.5 (2003/8/17)
529 1) Fix a bug where an extra end of line is returned when attempting to play a
530 non existing file. This causes parsing errors for clients.
532 ver 0.8.4 (2003/8/13)
533 1) Fix a bug where garbage is returned with errors in "list" command
535 ver 0.8.3 (2003/8/12)
536 1) Fix a compilation error on older linux systems
537 2) Fix a bug in searching by title
538 3) Add "list" command
539 4) Add config options for specifying libao driver/plugin and options
540 5) Add config option to specify which address to bind to
541 6) Add support for loading and saving absolute pathnames in saved playlists
542 7) Playlist no longer creates duplicate entries for song data (more me
544 8) Songs deleted from the db are now removed for the playlist as well
546 ver 0.8.2 (2003/7/22)
547 1) Increased the connection que for listen() from 0 to 5
548 2) Cleanup configure makefiles so that mpd uses MPD_LIBS and MPD_CFLAGS
549 rather than LIBS and CFLAGS
550 3) Put a cap on the number of commands per command list
551 4) Put a cap on the maximum number of buffered output lines
552 5) Get rid of TIME_WAIT/EADDRINUSE socket problem
553 6) Use asynchronious IO (i.e. trigger SIGIO instead so we can sleep in
554 select() calls longer)
556 ver 0.8.1 (2003/7/11)
558 2) Fix for rare segfault when updating
559 3) Fix bug where client was being hungup on when done playing current song
560 4) Fix bug when playing flac's where it incorrectly reports an error
561 5) Make stop playlist on error configurable
562 6) Configure checks for installed libmad and libid3tag and uses those if found
563 7) Use buffer->finished in *_decode's instead of depending on catching signals
567 2) Make playlist max length configurable
568 3) New backward compatible status (backward compatible for 0.8.0 on)
569 4) listall command now can take a directory as an argument
570 5) Buffer rewritten to use shared memory instead of sockets
571 6) Playlist adding done using db
572 7) Add sort to list, and use binary search for finding
573 8) New "stats" command
574 9) Command list (for faster adding of large batches of files)
575 10) Add buffered chunks before play
576 11) Useful error reporting to clients (part of status command)
577 12) Use libid3tag for reading id3 tags (more stable)
578 13) Non-blocking output to clients
579 14) Fix bug when removing items from directory
580 15) Fix bug when playing mono mp3's
581 16) Fix bug when attempting to delete files when using samba
582 17) Lots of other bug fixes I can't remember
584 ver 0.7.0 (2003/6/20)
585 1) use mad instead of mpg123 for mp3 decoding
587 3) repeate playlist support
588 4) use autoconf/automake (i.e. "configure")
589 5) configurable max connections
591 ver 0.6.2 (2003/6/11)
592 1) Buffer support for ogg
593 2) new config file options: "connection_timeout" and "mpg123_ignore_junk"
594 3) new commands: "next", "previous", and "listall"
595 Thanks to Niklas Hofer for "next" and "previous" patches!
596 4) Search by filename
597 5) bug fix for pause when playing mp3's
599 ver 0.6.1 (2003/5/29)
600 1) Add conf file support
601 2) Fix a bug when doing mp3stop (do wait3(NULL,WNOHANG|WUNTRACED,NULL))
602 3) Fix a bug when fork'ing, fflush file buffers before forking so the
603 child doesn't print the same stuff in the buffer.
605 ver 0.6.0 (2003/5/25)
606 1) Add ogg vorbis support
607 2) Fix two bugs relating to tables, one for search by title, and one where we
608 freed the tables before directories, causing a segfault
609 3) The info command has been removed.
612 Initial release(s). Support for MP3 via mpg123