NEWS 56.8 KB
Newer Older
1
ver 0.20 (not yet released)
2 3
* protocol
  - "commands" returns playlist commands only if playlist_directory configured
4
  - "search"/"find" have a "window" parameter
5
  - report song duration with milliseconds precision
6
  - "sticker find" can match sticker values
7
  - drop the "file:///" prefix for absolute file paths
8
  - add range parameter to command "plchanges" and "plchangesposid"
9
  - send verbose error message to client
10
* tags
11 12 13
  - ape, ogg: drop support for non-standard tag "album artist"
    affected filetypes: vorbis, flac, opus & all files with ape2 tags
    (most importantly some mp3s)
14 15
  - id3: remove the "id3v1_encoding" setting; by definition, all ID3v1 tags
    are ISO-Latin-1
16
  - ape: support APE replay gain on remote files
17
  - read ID3 tags from NFS/SMB
18
* decoder
19
  - improved error logging
20
  - report I/O errors to clients
21
  - ffmpeg: support ReplayGain and MixRamp
22
  - ffmpeg: support stream tags
23
  - gme: add option "accuracy"
24
  - mad: reduce memory usage while scanning tags
25
  - mpcdec: read the bit rate
xent's avatar
xent committed
26
* playlist
27
  - cue: don't skip pregap
xent's avatar
xent committed
28
  - embcue: fix last track
29
  - flac: new plugin which reads the "CUESHEET" metadata block
30
* output
31
  - alsa: fix multi-channel order
32
  - alsa: remove option "use_mmap"
33
  - alsa: support DSD_U32
34
  - alsa: disable DoP if it fails
35
  - jack: reduce CPU usage
36
  - pulse: set channel map to WAVE-EX
37
  - recorder: record tags
38
  - recorder: allow dynamic file names
39 40
* mixer
  - null: new plugin
41 42 43
* resampler
  - new block "resampler" in configuration file
    replacing the old "samplerate_converter" setting
44
  - soxr: allow multi-threaded resampling
45
* reset song priority on playback
46
* write database and state file atomically
47
* always write UTF-8 to the log file.
48
* remove dependency on GLib
49
* support libsystemd (instead of the older libsystemd-daemon)
50 51
* database
  - proxy: add TCP keepalive option
52 53
* update
  - apply .mpdignore matches to subdirectories
54

Max Kellermann's avatar
Max Kellermann committed
55
ver 0.19.15 (2016/04/30)
56
* decoder
57
  - ffmpeg: support FFmpeg 3.0
58
  - ffmpeg: use as fallback instead of "mad" if no plugin matches
59
  - opus: support bigger OpusTags packets
60
* fix more build failures on non-glibc builds due to constexpr Mutex
61
* fix build failure due to missing include
62
* fix unit test on Alpha
63

Max Kellermann's avatar
Max Kellermann committed
64
ver 0.19.14 (2016/03/18)
65
* decoder
66
  - dsdiff: fix off-by-one buffer overflow
67
  - opus: limit tag size to 64 kB
68 69
* archive
  - iso9660: fix buffer overflow
70
* fix quadratic runtime bug in the tag pool
71
* fix build failures on non-glibc builds due to constexpr Mutex
72

Max Kellermann's avatar
Max Kellermann committed
73
ver 0.19.13 (2016/02/23)
74 75
* tags
  - aiff, riff: fix ID3 chunk padding
76 77
* decoder
  - ffmpeg: support the TAK codec
78
* fix disappearing duration of remote songs during playback
79
* initialize supplementary groups with glibc 2.19+
80

Max Kellermann's avatar
Max Kellermann committed
81
ver 0.19.12 (2015/12/15)
82
* fix assertion failure on malformed UTF-8 tag
83
* fix build failure on non-Linux systems
84
* fix LimitRTTIME in systemd unit file
85

Max Kellermann's avatar
Max Kellermann committed
86
ver 0.19.11 (2015/10/27)
87 88
* tags
  - ape: fix buffer overflow
89 90
* decoder
  - ffmpeg: fix crash due to wrong avio_alloc_context() call
91
  - gme: don't loop forever, fall back to GME's default play length
92 93
* encoder
  - flac: fix crash with 32 bit playback
94 95
* mixer
  - fix mixer lag after enabling/disabling output
96

Max Kellermann's avatar
Max Kellermann committed
97
ver 0.19.10 (2015/06/21)
98
* input
99
  - curl: fix deadlock on small responses
100
  - smbclient: fix DFF playback
101 102
* decoder
  - ffmpeg: improve seeking accuracy
103
  - fix stuck stream tags
104 105
* encoder
  - opus: fix bogus granulepos
106 107
* output
  - fix failure to open device right after booting
108 109
* neighbor
  - nfs: fix deadlock when connecting
110
* fix "single" mode breakage due to queue edits
111

Max Kellermann's avatar
Max Kellermann committed
112
ver 0.19.9 (2015/02/06)
113 114
* decoder
  - dsdiff, dsf: raise ID3 tag limit to 1 MB
115
* playlist: fix loading duplicate tag types from state file
116
* despotify: remove defunct plugin
117
* fix clock integer overflow on OS X
118
* fix gcc 5.0 warnings
119
* fix build failure with uClibc
120
* fix build failure on non-POSIX operating systems
121
* fix dependency issue on parallel Android build
122
* fix database/state file saving on Windows
123

Max Kellermann's avatar
Max Kellermann committed
124
ver 0.19.8 (2015/01/14)
125
* input
126
  - curl: fix bug after rewinding from end-of-file
127
  - mms: reduce delay at the beginning of playback
128 129
* decoder
  - dsdiff, dsf: allow ID3 tags larger than 4 kB
130
  - ffmpeg: support interleaved floating point
131
* fix clang 3.6 warnings
132
* fix build failure on NetBSD
133

Max Kellermann's avatar
Max Kellermann committed
134
ver 0.19.7 (2014/12/17)
135 136
* input
  - nfs: fix crash while canceling a failing file open operation
137
  - nfs: fix memory leak on connection failure
138
  - nfs: fix reconnect after mount failure
139
  - nfs: implement mount timeout (60 seconds)
140 141
* storage
  - nfs: implement I/O timeout (60 seconds)
142
* playlist
143
  - embcue: fix filename suffix detection
144
  - don't skip non-existent songs in "listplaylist"
145 146
* decoder
  - ffmpeg: fix time stamp underflow
147
* fix memory allocator bug on Windows
148

Max Kellermann's avatar
Max Kellermann committed
149
ver 0.19.6 (2014/12/08)
150 151 152
* decoder
  - ffmpeg: support FFmpeg 2.5
* fix build failure with musl
153 154
* android
  - update libFLAC to 1.3.1
155
  - update FFmpeg to 2.5
156

Max Kellermann's avatar
Max Kellermann committed
157
ver 0.19.5 (2014/11/26)
158 159
* input
  - nfs: fix crash on connection failure
160 161
* archive
  - zzip: fix crash after seeking
162 163
* decoder
  - dsdiff, dsf, opus: fix deadlock while seeking
164
  - mp4v2: remove because of incompatible license
165

Max Kellermann's avatar
Max Kellermann committed
166
ver 0.19.4 (2014/11/18)
167 168
* protocol
  - workaround for buggy clients that send "add /"
169
* decoder
170
  - ffmpeg: support opus
171
  - opus: add MIME types audio/ogg and application/ogg
172 173
* fix crash on failed filename charset conversion
* fix local socket detection from uid=0 (root)
174

Max Kellermann's avatar
Max Kellermann committed
175
ver 0.19.3 (2014/11/11)
176 177
* protocol
  - fix "(null)" result string to "list" when AlbumArtist is disabled
178 179
* database
  - upnp: fix breakage due to malformed URIs
180 181
* input
  - curl: another fix for redirected streams
182 183
* decoder
  - audiofile: fix crash while playing streams
184
  - audiofile: fix bit rate calculation
185
  - ffmpeg: support opus
186
  - opus: fix bogus duration on streams
187
  - opus: support chained streams
188
  - opus: improved error logging
189
* fix distorted audio with soxr resampler
190
* fix build failure on Mac OS X with non-Apple compilers
191

Max Kellermann's avatar
Max Kellermann committed
192
ver 0.19.2 (2014/11/02)
193 194
* input
  - curl: fix redirected streams
195
* playlist
196
  - don't allow empty playlist name
197
  - m3u: don't ignore unterminated last line
198
  - m3u: recognize the file suffix ".m3u8"
199
* decoder
200
  - ignore URI query string for plugin detection
201
  - faad: remove workaround for ancient libfaad2 ABI bug
202
  - ffmpeg: recognize MIME type audio/aacp
203
  - mad: fix negative replay gain values
204 205
* output
  - fix memory leak after filter initialization error
206
  - fall back to PCM if given DSD sample rate is not supported
207
* fix assertion failure on unsupported PCM conversion
208
* auto-disable plugins that require GLib when --disable-glib is used
209

Max Kellermann's avatar
Max Kellermann committed
210
ver 0.19.1 (2014/10/19)
211 212
* input
  - mms: fix deadlock bug
213 214
* playlist
  - extm3u: fix Extended M3U detection
215
  - m3u, extm3u, cue: fix truncated lines
Max Kellermann's avatar
Max Kellermann committed
216
* fix build failure on Mac OS X
217
* add missing file systemd/mpd.socket to tarball
218

Max Kellermann's avatar
Max Kellermann committed
219
ver 0.19 (2014/10/10)
220
* protocol
221 222
  - new commands "addtagid", "cleartagid", "listfiles", "listmounts",
    "listneighbors", "mount", "rangeid", "unmount"
223
  - "lsinfo" and "readcomments" allowed for remote files
224
  - "listneighbors" lists file servers on the local network
225
  - "playlistadd" supports file:///
226
  - "idle" with unrecognized event name fails
227
  - "list" on album artist falls back to the artist tag
228
  - "list" and "count" allow grouping
229
  - new "search"/"find" filter "modified-since"
230
  - "seek*" allows fractional position
231
  - close connection after syntax error
232
* database
233
  - proxy: forward "idle" events
234
  - proxy: forward the "update" command
235
  - proxy: copy "Last-Modified" from remote directories
236
  - simple: compress the database file using gzip
237
  - upnp: new plugin
238
  - cancel the update on shutdown
239 240
* storage
  - music_directory can point to a remote file server
241
  - nfs: new plugin
242
  - smbclient: new plugin
243
* playlist
244
  - cue: fix bogus duration of the last track
245
  - cue: restore CUE tracks from state file
246
  - soundcloud: use https instead of http
247
  - soundcloud: add default API key
248 249
* archive
  - read tags from songs in an archive
250 251
* input
  - alsa: new input plugin
252
  - curl: options "verify_peer" and "verify_host"
253
  - ffmpeg: update offset after seeking
254
  - ffmpeg: improved error messages
255
  - mms: non-blocking I/O
256
  - nfs: new input plugin
257
  - smbclient: new input plugin
258 259
* filter
  - volume: improved software volume dithering
260 261
* decoder:
  - vorbis, flac, opus: honor DESCRIPTION= tag in Xiph-based files as a comment to the song
262
  - audiofile: support scanning remote files
263
  - audiofile: log libaudiofile errors
264
  - dsdiff, dsf: report bit rate
265
  - dsdiff, dsf: implement seeking
266
  - dsf: support DSD512
267
  - dsf: support multi-channel files
268
  - dsf: fix big-endian bugs
269
  - dsf: fix noise at end of malformed file
270
  - mpg123: support ID3v2, ReplayGain and MixRamp
271
  - sndfile: support scanning remote files
272
  - sndfile: support tags "comment", "album", "track", "genre"
273 274
  - sndfile: native floating point playback
  - sndfile: optimized 16 bit playback
275
  - mp4v2: support playback of MP4 files.
Andrée Ekroth's avatar
Andrée Ekroth committed
276 277
* encoder:
  - shine: new encoder plugin
278 279
* output
  - alsa: support native DSD playback
280
  - alsa: rename "DSD over USB" to "DoP"
281
  - osx: fix hang after (un)plugging headphones
282 283 284
* threads:
  - the update thread runs at "idle" priority
  - the output thread runs at "real-time" priority
285
  - increase kernel timer slack on Linux
286
  - name each thread (for debugging)
287 288
* configuration
  - allow playlist directory without music directory
289
  - use XDG to auto-detect "music_directory" and "db_file"
290
* add tags "AlbumSort", "MUSICBRAINZ_RELEASETRACKID"
291
* disable global Latin-1 fallback for tag values
292
* new resampler option using libsoxr
293
* ARM NEON optimizations
294
* install systemd unit for socket activation
Max Kellermann's avatar
Max Kellermann committed
295
* Android port
Max Kellermann's avatar
Max Kellermann committed
296

Max Kellermann's avatar
Max Kellermann committed
297
ver 0.18.23 (2015/02/06)
298
* despotify: remove defunct plugin
299
* fix clock integer overflow on OS X
300
* fix gcc 5.0 warnings
301

302
ver 0.18.22 (2015/01/14)
303
* fix clang 3.6 warnings
304

Max Kellermann's avatar
Max Kellermann committed
305
ver 0.18.21 (2014/12/17)
306 307
* playlist
  - embcue: fix filename suffix detection
308 309
* decoder
  - ffmpeg: fix time stamp underflow
310

Max Kellermann's avatar
Max Kellermann committed
311
ver 0.18.20 (2014/12/08)
312 313
* decoder
  - ffmpeg: support FFmpeg 2.5
314
* fix build failure with musl
315

Max Kellermann's avatar
Max Kellermann committed
316
ver 0.18.19 (2014/11/26)
317 318
* archive
  - zzip: fix crash after seeking
319

Max Kellermann's avatar
Max Kellermann committed
320
ver 0.18.18 (2014/11/18)
321 322
* decoder
  - ffmpeg: support opus
323
* fix crash on failed filename charset conversion
324
* fix local socket detection from uid=0 (root)
325

Max Kellermann's avatar
Max Kellermann committed
326
ver 0.18.17 (2014/11/02)
327
* playlist
328
  - don't allow empty playlist name
329
  - m3u: recognize the file suffix ".m3u8"
330
* decoder
331
  - ignore URI query string for plugin detection
332
  - faad: remove workaround for ancient libfaad2 ABI bug
333
  - ffmpeg: recognize MIME type audio/aacp
334

Max Kellermann's avatar
Max Kellermann committed
335
ver 0.18.16 (2014/09/26)
336
* fix DSD breakage due to typo in configure.ac
337

Max Kellermann's avatar
Max Kellermann committed
338
ver 0.18.15 (2014/09/26)
339 340
* command
  - list: reset used size after the list has been processed
341
* fix MixRamp
342
* work around build failure on NetBSD
343

Max Kellermann's avatar
Max Kellermann committed
344
ver 0.18.14 (2014/09/11)
345 346
* protocol
  - fix range parser bug on certain 32 bit architectures
347 348
* decoder
  - audiofile: fix crash after seeking
349
  - ffmpeg: fix crash with ffmpeg/libav version 11
350
  - fix assertion failure after seeking
351

Max Kellermann's avatar
Max Kellermann committed
352
ver 0.18.13 (2014/08/31)
353 354
* protocol
  - don't change song on "seekcur" in random mode
Max Kellermann's avatar
Max Kellermann committed
355

356
* decoder
357
  - dsdiff, dsf: fix endless loop on malformed file
358
  - ffmpeg: support ffmpeg/libav version 11
359
  - gme: fix song duration
360 361
* output
  - alsa: fix endless loop at end of file in dsd_usb mode
362
* fix state file saver
363
* fix build failure on Darwin
364

Max Kellermann's avatar
Max Kellermann committed
365
ver 0.18.12 (2014/07/30)
366 367
* database
  - proxy: fix build failure with libmpdclient 2.2
368
  - proxy: fix add/search and other commands with libmpdclient < 2.9
369 370
* decoder
  - audiofile: improve responsiveness
371
  - audiofile: fix WAV stream playback
372
  - dsdiff, dsf: fix stream playback
373
  - dsdiff: fix metadata parser bug (uninitialized variables)
374
  - faad: estimate song duration for remote files
375
  - sndfile: improve responsiveness
376
* randomize next song when enabling "random" mode while not playing
377
* randomize next song when adding to single-song queue
378

Max Kellermann's avatar
Max Kellermann committed
379
ver 0.18.11 (2014/05/12)
380 381
* decoder
  - opus: fix missing song length on high-latency files
382
* fix race condition when using GLib event loop (non-Linux)
383

Max Kellermann's avatar
Max Kellermann committed
384
ver 0.18.10 (2014/04/10)
385
* decoder
386
  - ffmpeg: fix seeking bug
387
  - ffmpeg: handle unknown stream start time
388
  - gme: fix memory leak
389
  - sndfile: work around libsndfile bug on partial read
390
* don't interrupt playback when current song gets deleted
391

Max Kellermann's avatar
Max Kellermann committed
392
ver 0.18.9 (2014/03/02)
393 394
* protocol
  - "findadd" requires the "add" permission
395 396
* output
  - alsa: improved workaround for noise after manual song change
397 398
* decoder
  - vorbis: fix linker failure when libvorbis/libogg are static
399 400
* encoder
  - vorbis: fix another linker failure
401 402
* output
  - pipe: fix hanging child process due to blocked signals
403
* fix build failure due to missing signal.h include
404

Max Kellermann's avatar
Max Kellermann committed
405
ver 0.18.8 (2014/02/07)
406 407
* decoder
  - ffmpeg: support libav v10_alpha1
408 409
* encoder
  - vorbis: fix linker failure
410 411
* output
  - roar: documentation
412
* more robust Icy-Metadata parser
413
* fix Solaris build failure
414

415
ver 0.18.7 (2014/01/13)
416
* playlist
417
  - pls: fix crash after parser error
418
  - soundcloud: fix build failure with libyajl 2.0.1
419 420
* decoder
  - faad: fix memory leak
421
  - mpcdec: reject libmpcdec SV7 in configure script
422 423
* daemon: don't initialize supplementary groups when already running
  as the configured user
424

Max Kellermann's avatar
Max Kellermann committed
425
ver 0.18.6 (2013/12/24)
426 427
* input
  - cdio_paranoia: support libcdio-paranoia 0.90
428 429
* tags
  - riff: recognize upper-case "ID3" chunk name
430 431
* decoder
  - ffmpeg: use relative timestamps
Max Kellermann's avatar
Max Kellermann committed
432 433
* output
  - openal: fix build failure on Mac OS X
434
  - osx: fix build failure
435 436
* mixer
  - alsa: fix build failure with uClibc
437
* fix replay gain during cross-fade
438
* accept files without metadata
439

Max Kellermann's avatar
Max Kellermann committed
440
ver 0.18.5 (2013/11/23)
441 442
* configuration
  - fix crash when db_file is configured without music_directory
443
  - fix crash on "stats" without db_file/music_directory
444 445
* database
  - proxy: auto-reload statistics
446
  - proxy: provide "db_update" in "stats" response
447 448
* input
  - curl: work around stream resume bug (fixed in libcurl 7.32.0)
449 450
* decoder
  - fluidsynth: auto-detect by default
451
* clip 24 bit data from libsamplerate
452
* fix ia64, mipsel and other little-endian architectures
453 454 455
* fix build failures due to missing includes
* fix build failure with static libmpdclient

Max Kellermann's avatar
Max Kellermann committed
456
ver 0.18.4 (2013/11/13)
457 458
* decoder
  - dsdiff: fix byte order bug
459
* fix build failures due to missing includes
460
* libc++ compatibility
461

Max Kellermann's avatar
Max Kellermann committed
462
ver 0.18.3 (2013/11/08)
463
* fix stuck MPD after song change (0.18.2 regression)
464

Max Kellermann's avatar
Max Kellermann committed
465
ver 0.18.2 (2013/11/07)
466 467
* protocol:
  - "close" flushes the output buffer
468
* input:
469
  - cdio_paranoia: add setting "default_byte_order"
470
  - curl: fix bug with redirected streams
471 472
* playlist:
  - pls: fix reversed song order
473
* decoder:
474
  - audiofile: require libaudiofile 0.3 due to API breakage
475
  - dsf: enable DSD128
476
* enable buffering when starting playback (regression fix)
Max Kellermann's avatar
Max Kellermann committed
477
* fix build failures due to missing includes
478
* fix big-endian support
479

Max Kellermann's avatar
Max Kellermann committed
480
ver 0.18.1 (2013/11/04)
481 482
* protocol:
  - always ignore whitespace at the end of the line
483 484
* networking:
  - log UNIX domain path names instead of "localhost"
485
  - open listener sockets in the order they were configured
486
  - don't abort if IPv6 is not available
487 488
* output:
  - alsa: avoid endless loop in Raspberry Pi workaround
489 490
* filter:
  - autoconvert: fix "volume_normalization" with mp3 files
491
* add missing files to source tarball
492

Max Kellermann's avatar
Max Kellermann committed
493
ver 0.18 (2013/10/31)
494 495
* configuration:
  - allow tilde paths for socket
496
  - default filesystem charset is UTF-8 instead of ISO-8859-1
497
  - increase default buffer size to 4 MB
498
* protocol:
499
  - new command "readcomments" lists arbitrary file tags
500
  - new command "toggleoutput"
501
  - "find"/"search" with "any" does not match file name
502
  - "search" and "find" with base URI (keyword "base")
503
  - search for album artist falls back to the artist tag
504
  - re-add the "volume" command
505
* input:
Ales Guzik's avatar
Ales Guzik committed
506
  - curl: enable https
507
  - soup: plugin removed
508 509
* playlist:
  - lastfm: remove defunct Last.fm support
510
* decoder:
511
  - adplug: new decoder plugin using libadplug
512
  - dsf: don't play junk at the end of the "data" chunk
513
  - ffmpeg: drop support for pre-0.8 ffmpeg
514
  - flac: require libFLAC 1.2 or newer
515
  - flac: support FLAC files inside archives
516
  - opus: new decoder plugin for the Opus codec
517
  - vorbis: skip 16 bit quantisation, provide float samples
518
  - mikmod: add "loop" configuration parameter
519
  - modplug: add "loop_count" configuration parameter
520
  - mp4ff: obsolete plugin removed
521 522
* encoder:
  - opus: new encoder plugin for the Opus codec
523
  - vorbis: accept floating point input samples
524 525
* output:
  - new option "tags" may be used to disable sending tags to output
526
  - alsa: workaround for noise after manual song change
527
  - ffado: remove broken plugin
528
  - httpd: support HEAD requests
529
  - mvp: remove obsolete plugin
530
  - osx: disabled by default because it's unmaintained and unsupported
531
* improved decoder/output error reporting
532
* eliminate timer wakeup on idle MPD
533
* fix unresponsive MPD while waiting for stream
Max Kellermann's avatar
Max Kellermann committed
534
* port of the source code to C++11
Max Kellermann's avatar
Max Kellermann committed
535

Max Kellermann's avatar
Max Kellermann committed
536
ver 0.17.6 (2013/10/14)
537 538
* mixer:
  - alsa: fix busy loop when USB sound device gets unplugged
539 540
* decoder:
  - modplug: fix build with Debian package 1:0.8.8.4-4
Max Kellermann's avatar
Max Kellermann committed
541 542
* stored playlists:
  - fix loading playlists with references to local files
543
  - obey filesystem_charset for URLs
Max Kellermann's avatar
Max Kellermann committed
544

Max Kellermann's avatar
Max Kellermann committed
545
ver 0.17.5 (2013/08/04)
546 547
* protocol:
  - fix "playlistadd" with URI
548
  - fix "move" relative to current when there is no current song
549
* decoder:
550
  - ffmpeg: support "application/flv"
551
  - mikmod: adapt to libmikmod 3.2
552 553
* configure.ac:
  - detect system "ar"
Max Kellermann's avatar
Max Kellermann committed
554

Max Kellermann's avatar
Max Kellermann committed
555
ver 0.17.4 (2013/04/08)
556 557
* protocol:
  - allow to omit END in ranges (START:END)
558
  - don't emit IDLE_PLAYER before audio format is known
559 560
* decoder:
  - ffmpeg: support float planar audio (ffmpeg 1.1)
561
  - ffmpeg: fix AVFrame allocation
562 563
* player:
  - implement missing "idle" events on output errors
564
* clock: fix build failure
565

Avuton Olrich's avatar
Avuton Olrich committed
566
ver 0.17.3 (2013/01/06)
567
* output:
568
  - osx: fix pops during playback
569
  - recorder: fix I/O error check
570
  - shout: fix memory leak in error handler
571
  - recorder, shout: support Ogg packets that span more than one page
572 573
* decoder:
  - ffmpeg: ignore negative time stamps
574
  - ffmpeg: support planar audio
575 576
* playlist:
  - cue: fix memory leak
577
  - cue: fix CUE files with only one track
578

Avuton Olrich's avatar
Avuton Olrich committed
579
ver 0.17.2 (2012/09/30)
580 581
* protocol:
  - fix crash in local file check
582 583
* decoder:
  - fluidsynth: remove throttle (requires libfluidsynth 1.1)
584
  - fluidsynth: stop playback at end of file
585
  - fluidsynth: check MIDI file format while scanning
586
  - fluidsynth: add sample rate setting
587
  - wavpack: support all APEv2 tags
588 589
* output:
  - httpd: use monotonic clock, avoid hiccups after system clock adjustment
590
  - httpd: fix throttling bug after resuming playback
591 592
* playlist:
  - cue: map "PERFORMER" to "artist" or "album artist"
593
* mapper: fix non-UTF8 music directory name
594
* mapper: fix potential crash in file permission check
595
* playlist: fix use-after-free bug
596
* playlist: fix memory leak
597
* state_file: save song priorities
598
* player: disable cross-fading in "single" mode
599
* update: fix unsafe readlink() usage
600 601
* configure.ac:
  - don't auto-detect the vorbis encoder when Tremor is enabled
602

Avuton Olrich's avatar
Avuton Olrich committed
603
ver 0.17.1 (2012/07/31)
604 605
* protocol:
  - require appropriate permissions for searchadd{,pl}
606 607
* tags:
  - aiff: support the AIFC format
608
  - ape: check for ID3 if no usable APE tag was found
609 610
* playlist:
  - cue: support file types "MP3", "AIFF"
611 612
* output:
  - fix noisy playback with conversion and software volume
613

Max Kellermann's avatar
Max Kellermann committed
614
ver 0.17 (2012/06/27)
615 616
* protocol:
  - support client-to-client communication
617
  - "update" and "rescan" need only "CONTROL" permission
618
  - new command "seekcur" for simpler seeking within current song
619
  - new command "config" dumps location of music directory
620
  - add range parameter to command "load"
621
  - print extra "playlist" object for embedded CUE sheets
622
  - new commands "searchadd", "searchaddpl"
623 624
* input:
  - cdio_paranoia: new input plugin to play audio CDs
625
  - curl: enable CURLOPT_NETRC
626
  - curl: non-blocking I/O
627
  - soup: new input plugin based on libsoup
628 629
* tags:
  - RVA2: support separate album/track replay gain
630 631
* decoder:
  - mpg123: implement seeking
632
  - ffmpeg: drop support for pre-0.5 ffmpeg
Max Kellermann's avatar
Max Kellermann committed
633
  - ffmpeg: support WebM
634
  - oggflac: delete this obsolete plugin
635
  - dsdiff: new decoder plugin
636
* output:
637
  - alsa: support DSD-over-USB (dCS suggested standard)
638
  - httpd: support for streaming to a DLNA client
639
  - openal: improve buffer cancellation
640
  - osx: allow user to specify other audio devices
641
  - osx: implement 32 bit playback
642
  - shout: add possibility to set url
643
  - roar: new output plugin for RoarAudio
644
  - winmm: fail if wrong device specified instead of using default device
645 646
* mixer:
  - alsa: listen for external volume changes
647 648
* playlist:
  - allow references to songs outside the music directory
649
  - new CUE parser, without libcue
650
  - soundcloud: new plugin for accessing soundcloud.com
651
* state_file: add option "restore_paused"
652
* cue: show CUE track numbers
653
* allow port specification in "bind_to_address" settings
654
* support floating point samples
655
* systemd socket activation
656
* improve --version output
657
* WIN32: fix renaming of stored playlists with non-ASCII names
658 659


Avuton Olrich's avatar
Avuton Olrich committed
660
ver 0.16.8 (2012/04/04)
661
* fix for libsamplerate assertion failure
662 663
* decoder:
  - vorbis (and others): fix seeking at startup
664
  - ffmpeg: read the "year" tag
665 666
* encoder:
  - vorbis: generate end-of-stream packet before tag
667
  - vorbis: generate end-of-stream packet when playback ends
668
* output:
669
  - jack: check for connection failure before starting playback
670
  - jack: workaround for libjack1 crash bug
671
  - osx: fix stuttering due to buffering bug
672
* fix endless loop in text file reader
673
* update: skip symlinks in path that is to be updated
674 675


Avuton Olrich's avatar
Avuton Olrich committed
676
ver 0.16.7 (2012/02/04)
677 678
* input:
  - ffmpeg: support libavformat 0.7
679
* decoder:
680
  - ffmpeg: support libavformat 0.8, libavcodec 0.9
681
  - ffmpeg: support all MPD tags
682 683
* output:
  - httpd: fix excessive buffering
684
  - openal: force 16 bit playback, as 8 bit doesn't work
685
  - osx: remove sleep call from render callback
686
  - osx: clear render buffer when there's not enough data
687
* fix moving after current song
688 689


Avuton Olrich's avatar
Avuton Olrich committed
690
ver 0.16.6 (2011/12/01)
691 692
* decoder:
  - fix assertion failure when resuming streams
693
  - ffmpeg: work around bogus channel count
694
* encoder:
695
  - flac, null, wave: fix buffer corruption bug
696
  - wave: support packed 24 bit samples
697
* mapper: fix the bogus "not a directory" error message
698
* mapper: check "x" and "r" permissions on music directory
699
* log: print reason for failure
700
* event_pipe: fix WIN32 regression
701
* define WINVER in ./configure
702
* WIN32: autodetect filesystem encoding
703 704


Avuton Olrich's avatar
Avuton Olrich committed
705
ver 0.16.5 (2011/10/09)
706 707 708
* configure.ac
  - disable assertions in the non-debugging build
  - show solaris plugin result correctly
709
  - add option --enable-solaris-output
710
* pcm_format: fix 32-to-24 bit conversion (the "silence" bug)
711 712
* input:
  - rewind: reduce heap usage
713 714
* decoder:
  - ffmpeg: higher precision timestamps
715
  - ffmpeg: don't require key frame for seeking
716
  - fix CUE track seeking
717 718
* output:
  - openal: auto-fallback to mono if channel count is unsupported
719 720 721
* player:
  - make seeking to CUE track more reliable
  - the "seek" command works when MPD is stopped
722
  - restore song position from state file (bug fix)
723
  - fix crash that sometimes occurred when audio device fails on startup
724
  - fix absolute path support in playlists
725
* WIN32: close sockets properly
726
* install systemd service file if systemd is available
727 728


Avuton Olrich's avatar
Avuton Olrich committed
729
ver 0.16.4 (2011/09/01)
730
* don't abort configure when avahi is not found
731
* auto-detect libmad without pkg-config
Max Kellermann's avatar
Max Kellermann committed
732
* fix memory leaks
733
* don't resume playback when seeking to another song while paused
734
* apply follow_inside_symlinks to absolute symlinks
735
* fix playback discontinuation after seeking
736 737
* input:
  - curl: limit the receive buffer size
738
  - curl: implement a hard-coded timeout of 10 seconds
739 740
* decoder:
  - ffmpeg: workaround for semantic API change in recent ffmpeg versions
741
  - flac: validate the sample rate when scanning the tag
742
  - wavpack: obey all decoder commands, stop at CUE track border
743 744
* encoder:
  - vorbis: don't send end-of-stream on flush
745 746
* output:
  - alsa: fix SIGFPE when alsa announces a period size of 0
747
  - httpd: don't warn on client disconnect
748
  - osx: don't drain the buffer when closing
749
  - pulse: fix deadlock when resuming the stream
750
  - pulse: fix deadlock when the stream was suspended
751 752


Avuton Olrich's avatar
Avuton Olrich committed
753
ver 0.16.3 (2011/06/04)
754
* fix assertion failure in audio format mask parser
755
* fix NULL pointer dereference in playlist parser
756
* fix playlist files in base music directory
757
* database: allow directories with just playlists
758
* decoder:
759
  - ffmpeg: support libavcodec 0.7
760 761


Avuton Olrich's avatar
Avuton Olrich committed
762
ver 0.16.2 (2011/03/18)
763 764
* configure.ac:
  - fix bashism in tremor test
765 766
* decoder:
  - tremor: fix configure test
767
  - gme: detect end of song
768 769
* encoder:
  - vorbis: reset the Ogg stream after flush
770 771
* output:
  - httpd: fix uninitialized variable
772
  - httpd: include sys/socket.h
773
  - oss: AFMT_S24_PACKED is little-endian
774
  - oss: disable 24 bit playback on FreeBSD
775 776


Max Kellermann's avatar
Max Kellermann committed
777
ver 0.16.1 (2011/01/09)
778
* audio_check: fix parameter in prototype
779
* add void casts to suppress "result unused" warnings (clang)
780 781
* input:
  - ffado: disable by default
782 783
* decoder:
  - mad: work around build failure on Solaris
784
  - resolve modplug vs. libsndfile cflags/headers conflict
785 786
* output:
  - solaris: add missing parameter to open_cloexec() cal
787
  - osx: fix up audio format first, then apply it to device
788
* player_thread: discard empty chunks while cross-fading
789
* player_thread: fix assertion failure due to early seek
790
* output_thread: fix double lock
791 792


Avuton Olrich's avatar
Avuton Olrich committed
793
ver 0.16 (2010/12/11)
794 795
* protocol:
  - send song modification time to client
796
  - added "update" idle event
797
  - removed the deprecated "volume" command
798
  - added the "findadd" command
799
  - range support for "delete"
800
  - "previous" really plays the previous song
801
  - "addid" with negative position is deprecated
802
  - "load" supports remote playlists (extm3u, pls, asx, xspf, lastfm://)
803
  - allow changing replay gain mode on-the-fly
804
  - omitting the range end is possible
805
  - "update" checks if the path is malformed
806
* archive:
807
  - iso: renamed plugin to "iso9660"
808
  - zip: renamed plugin to "zzip"
809
* input:
810
  - lastfm: obsolete plugin removed
811
  - ffmpeg: new input plugin using libavformat's "avio" library
812
* tags:
Bart Nagel's avatar
Bart Nagel committed
813
  - added tags "ArtistSort", "AlbumArtistSort"
814
  - id3: revised "performer" tag support
815
  - id3: support multiple values
816
  - ape: MusicBrainz tags
817
  - ape: support multiple values
818
* decoders:
819
  - don't try a plugin twice (MIME type & suffix)
820
  - don't fall back to "mad" unless no plugin matches
821
  - ffmpeg: support multiple tags
822
  - ffmpeg: convert metadata to generic format
823
  - ffmpeg: implement the libavutil log callback
824
  - sndfile: new decoder plugin based on libsndfile
825
  - flac: moved CUE sheet support to a playlist plugin
826
  - flac: support streams without STREAMINFO block
827
  - mikmod: sample rate is configurable
828
  - mpg123: new decoder plugin based on libmpg123
Mike Dawson's avatar
Mike Dawson committed
829
  - sidplay: support sub-tunes
830
  - sidplay: implemented songlength database
831
  - sidplay: support seeking
832
  - sidplay: play monaural SID tunes in mono
833
  - sidplay: play mus, str, prg, x00 files
834
  - wavpack: activate 32 bit support
835
  - wavpack: allow more than 2 channels
836
  - mp4ff: rename plugin "mp4" to "mp4ff"
837 838
* encoders:
  - twolame: new encoder plugin based on libtwolame
839 840
  - flac: new encoder plugin based on libFLAC
  - wave: new encoder plugin for PCM WAV format
841 842
* output:
  - recorder: new output plugin for recording radio streams
843
  - alsa: don't recover on CANCEL
844
  - alsa: fill period buffer with silence before draining
845
  - openal: new output plugin
846
  - pulse: announce "media.role=music"
847
  - pulse: renamed context to "Music Player Daemon"
848
  - pulse: connect to server on MPD startup, implement pause
849
  - jack: require libjack 0.100
850
  - jack: don't disconnect during pause
851
  - jack: connect to server on MPD startup
852
  - jack: added options "client_name", "server_name"
853
  - jack: clear ring buffers before activating
854
  - jack: renamed option "ports" to "destination_ports"
855
  - jack: support more than two audio channels
856
  - httpd: bind port when output is enabled
857
  - httpd: added name/genre/website configuration
858
  - httpd: implement "pause"
859
  - httpd: bind_to_address support (including IPv6)
860
  - oss: 24 bit support via OSS4
861
  - win32: new output plugin for Windows Wave
862
  - shout, httpd: more responsive to control commands
863
  - wildcards allowed in audio_format configuration
864
  - consistently lock audio output objects
865 866
* player:
  - drain audio outputs at the end of the playlist
867 868
* mixers:
  - removed support for legacy mixer configuration
869 870
  - reimplemented software volume as mixer+filter plugin
  - per-device software/hardware mixer setting
871 872
* commands:
  - added new "status" line with more precise "elapsed time"
873 874 875
* update:
  - automatically update the database with Linux inotify
  - support .mpdignore files in the music directory
876
  - sort songs by album name first, then disc/track number
877
  - rescan after metadata_to_use change
878
* normalize: upgraded to AudioCompress 2.0
879
  - automatically convert to 16 bit samples
880 881
* replay gain:
  - reimplemented as a filter plugin
882
  - fall back to track gain if album gain is unavailable
883
  - optionally use hardware mixer to apply replay gain
884
  - added mode "auto"
885
  - parse replay gain from APE tags
886
* log unused/unknown block parameters
887
* removed the deprecated "error_file" option
888
* save state when stopped
889
* renamed option "--stdout" to "--stderr"
890
* removed options --create-db and --no-create-db
891
* state_file: save only if something has changed
892
* database: eliminated maximum line length
893
* log: redirect stdout/stderr to /dev/null if syslog is used
894
* set the close-on-exec flag on all file descriptors
895
* pcm_volume, pcm_mix: implemented 32 bit support
896
* support packed 24 bit samples
897
* CUE sheet support
898
* support for MixRamp tags
899
* obey $(sysconfdir) for default mpd.conf location
900
* build with large file support by default
901
* added test suite ("make check")
902
* require GLib 2.12
903
* added libwrap support
904
* make single mode 'sticky'
905 906


907
ver 0.15.17 (2011/??/??)
908 909
* encoder:
  - vorbis: reset the Ogg stream after flush
910 911
* decoders:
  - vorbis: fix tremor support
912 913


Avuton Olrich's avatar
Avuton Olrich committed
914
ver 0.15.16 (2011/03/13)
915 916
* output:
  - ao: initialize the ao_sample_format struct
917
  - jack: fix crash with mono playback
918 919
* encoders:
  - lame: explicitly configure the output sample rate
920
* update: log all file permission problems
921 922


Max Kellermann's avatar
Max Kellermann committed
923
ver 0.15.15 (2010/11/08)
924 925
* input:
  - rewind: fix assertion failure
926 927
* output:
  - shout: artist comes first in stream title
928 929


Avuton Olrich's avatar
Avuton Olrich committed
930
ver 0.15.14 (2010/11/06)
931
* player_thread: fix assertion failure due to wrong music pipe on seek
932
* output_thread: fix assertion failure due to race condition in OPEN
933 934
* input:
  - rewind: fix double free bug
935 936 937
* decoders:
  - mp4ff, ffmpeg: add extension ".m4b" (audio book)

938

Avuton Olrich's avatar
Avuton Olrich committed
939
ver 0.15.13 (2010/10/10)
940
* output_thread: fix race condition after CANCEL command
941 942
* output:
  - httpd: fix random data in stream title
943
  - httpd: MIME type audio/ogg for Ogg Vorbis
944 945
* input:
  - rewind: update MIME not only once
946
  - rewind: enable for MMS
947 948


Max Kellermann's avatar
Max Kellermann committed
949
ver 0.15.12 (2010/07/20)
950 951
* input:
  - curl: remove assertion after curl_multi_fdset()
952 953
* tags:
  - rva2: set "gain", not "peak"
954 955
* decoders:
  - wildmidi: support version 0.2.3
956 957


Avuton Olrich's avatar
Avuton Olrich committed
958
ver 0.15.11 (2010/06/14)
959 960
* tags:
  - ape: support album artist
961
* decoders:
962
  - mp4ff: support tags "album artist", "albumartist", "band"
963
  - mikmod: fix memory leak
964
  - vorbis: handle uri==NULL
965
  - ffmpeg: fix memory leak
966
  - ffmpeg: free AVFormatContext on error
967
  - ffmpeg: read more metadata
968
  - ffmpeg: fix libavformat 0.6 by using av_open_input_stream()
969
* playlist: emit IDLE_OPTIONS when resetting single mode
970
* listen: make get_remote_uid() work on BSD
971 972


Avuton Olrich's avatar
Avuton Olrich committed
973
ver 0.15.10 (2010/05/30)
974 975
* input:
  - mms: fix memory leak in error handler
976
  - mms: initialize the "eof" attribute
977 978
* decoders:
  - mad: properly calculate ID3 size without libid3tag
979 980


Avuton Olrich's avatar
Avuton Olrich committed
981
ver 0.15.9 (2010/03/21)
982 983
* decoders:
  - mad: fix crash when seeking at end of song
984
  - mpcdec: fix negative shift on fixed-point samples
985
  - mpcdec: fix replay gain formula with v8
986
* playlist: fix single+repeat in random mode
987
* player: postpone song tags during cross-fade
988 989


Avuton Olrich's avatar
Avuton Olrich committed
990
ver 0.15.8 (2010/01/17)
991 992
* input:
  - curl: allow rewinding with Icy-Metadata
993 994
* decoders:
  - ffmpeg, flac, vorbis: added more flac/vorbis MIME types
995
  - ffmpeg: enabled libavformat's file name extension detection
996
* dbUtils: return empty tag value only if no value was found
997
* decoder_thread: fix CUE track playback
998
* queue: don't repeat current song in consume mode
999 1000


Avuton Olrich's avatar
Avuton Olrich committed
1001
ver 0.15.7 (2009/12/27)
1002 1003
* archive:
  - close archive when stream is closed
1004
  - iso, zip: fixed memory leak in destructor
1005 1006
* input:
  - file: don't fall back to parent directory
1007
  - archive: fixed memory leak in error handler
1008 1009
* tags:
  - id3: fix ID3v1 charset conversion
1010
* decoders:
1011
  - eliminate jitter after seek failure
1012
  - ffmpeg: don't try to force stereo
1013
  - wavpack: allow fine-grained seeking
1014
* mixer: explicitly close all mixers on shutdown
1015
* mapper: fix memory leak when playlist_directory is not set
1016
* mapper: apply filesystem_charset to playlists
1017
* command: verify playlist name in the "rm" command
1018
* database: return multiple tag values per song
1019 1020


Avuton Olrich's avatar
Avuton Olrich committed
1021
ver 0.15.6 (2009/11/18)
1022 1023
* input:
  - lastfm: fixed variable name in GLib<2.16 code path
1024
  - input/mms: require libmms 0.4
1025 1026
* archive:
  - zzip: require libzzip 0.13
1027 1028
* tags:
  - id3: allow 4 MB RIFF/AIFF tags
1029 1030
* decoders:
  - ffmpeg: convert metadata
1031
  - ffmpeg: align the output buffer
1032
  - oggflac: rewind stream after FLAC detection
1033
  - flac: fixed CUE seeking range check
1034
  - flac: fixed NULL pointer dereference in CUE code
1035
* output_thread: check again if output is open on PAUSE
1036
* update: delete ignored symlinks from database
1037
* database: increased maximum line length to 32 kB
1038
* sticker: added fallback for sqlite3_prepare_v2()
1039 1040


Avuton Olrich's avatar
Avuton Olrich committed
1041
ver 0.15.5 (2009/10/18)
1042 1043
* input:
  - curl: don't abort if a packet has only metadata
1044
  - curl: fixed endless loop during buffering
1045 1046
* tags:
  - riff, aiff: fixed "limited range" gcc warning
1047 1048
* decoders:
  - flac: fixed two memory leaks in the CUE tag loader
1049
* decoder_thread: change the fallback decoder name to "mad"
1050
* output_thread: check again if output is open on CANCEL
1051
* update: fixed memory leak during container scan
1052 1053


Avuton Olrich's avatar
Avuton Olrich committed
1054
ver 0.15.4 (2009/10/03)
1055 1056
* decoders:
  - vorbis: revert "faster tag scanning with ov_test_callback()"
1057
  - faad: skip assertion failure on large ID3 tags
1058
  - ffmpeg: use the "artist" tag if "author" is not present
1059 1060
* output:
  - osx: fix the OS X 10.6 build
1061 1062


Avuton Olrich's avatar
Avuton Olrich committed
1063
ver 0.15.3 (2009/08/29)
1064 1065
* decoders:
  - vorbis: faster tag scanning with ov_test_callback()
1066 1067
* output:
  - fix stuttering due to uninitialized variable
1068
* update: don't re-read unchanged container files
1069 1070


Avuton Olrich's avatar
Avuton Olrich committed
1071
ver 0.15.2 (2009/08/15)
1072 1073
* tags:
  - ape: check the tag size (fixes integer underflow)
1074
  - ape: added protection against large memory allocations
1075 1076
* decoders:
  - mad: skip ID3 frames when libid3tag is disabled
1077
  - flac: parse all replaygain tags
1078
  - flac: don't allocate cuesheet twice (memleak)
1079 1080
* output:
  - shout: fixed stuck pause bug
1081
  - shout: minimize the unpause latency
1082
* update: free empty path string (memleak)
1083
* update: free temporary string in container scan (memleak)
1084
* directory: free empty directories after removing them (memleak)
1085 1086


Avuton Olrich's avatar
Avuton Olrich committed
1087
ver 0.15.1 (2009/07/15)
Max Kellermann's avatar
Max Kellermann committed
1088
* decoders:
1089
  - flac: fix assertion failure in tag_free() call
1090 1091
* output:
  - httpd: include sys/types.h (fixes Mac OS X)
1092 1093
* commands:
  - don't resume playback when stopping during pause
1094
* database: fixed NULL pointer dereference after charset change
1095
* log: fix double free() bug during shutdown
1096 1097


Avuton Olrich's avatar
Avuton Olrich committed
1098
ver 0.15 (2009/06/23)
Max Kellermann's avatar
Max Kellermann committed
1099 1100
* input:
  - parse Icy-Metadata
1101
  - added support for the MMS protocol
1102
  - hide HTTP password in playlist
1103
  - lastfm: new input plugin for last.fm radio (experimental and incomplete!)
1104
  - curl: moved proxy settings to "input" block
Max Kellermann's avatar
Max Kellermann committed
1105 1106
* tags:
  - support the "album artist" tag
1107
  - support MusicBrainz tags
Max Kellermann's avatar
Max Kellermann committed
1108
  - parse RVA2 tags in mp3 files
1109 1110 1111
  - parse ID3 tags in AIFF/RIFF/WAV files
  - ffmpeg: support new metadata API
  - ffmpeg: added support for the tags comment, genre, year
Max Kellermann's avatar
Max Kellermann committed
1112 1113
* decoders:
  - audiofile: streaming support added
1114
  - audiofile: added 24 bit support
Max Kellermann's avatar
Max Kellermann committed
1115 1116
  - modplug: another MOD plugin, based on libmodplug
  - mikmod disabled by default, due to severe security issues in libmikmod
1117
  - sidplay: new decoder plugin for C64 SID (using libsidplay2)
1118 1119
  - fluidsynth: new decoder plugin for MIDI files (using libfluidsynth,
    experimental due to shortcomings in libfluidsynth)
1120
  - wildmidi: another decoder plugin for MIDI files (using libwildmidi)
Max Kellermann's avatar
Max Kellermann committed
1121
  - flac: parse stream tags
1122
  - mpcdec: support the new libmpcdec SV8 API
1123
  - added configuration option to disable decoder plugins
1124 1125
  - flac: support embedded cuesheets
  - ffmpeg: updated list of supported formats
Max Kellermann's avatar
Max Kellermann committed
1126
* audio outputs:
1127
  - added option to disable audio outputs by default
1128
  - wait 10 seconds before reopening after play failure
Max Kellermann's avatar
Max Kellermann committed
1129
  - shout: enlarged buffer size to 32 kB
1130
  - null: allow disabling synchronization
1131
  - mvp: fall back to stereo
1132
  - mvp: fall back to 16 bit audio samples
1133
  - mvp: check for reopen errors
1134
  - mvp: fixed default device detection
1135
  - pipe: new audio output plugin which runs a command
1136
  - alsa: better period_time default value for high sample rates
1137
  - solaris: new audio output plugin for Solaris /dev/audio
1138 1139
  - httpd: new audio output plugin for web based streaming, similar to icecast
     but built in.
Max Kellermann's avatar
Max Kellermann committed
1140
* commands:
1141
  - "playlistinfo" and "move" supports a range now
Max Kellermann's avatar
Max Kellermann committed
1142
  - added "sticker database", command "sticker", which allows clients
1143 1144 1145 1146
     to implement features like "song rating"
  - added "consume" command which removes a song after play
  - added "single" command, if activated, stops playback after current song or
     repeats the song if "repeat" is active.
1147 1148 1149
* mixers:
  - rewritten mixer code to support multiple mixers
  - new pulseaudio mixer
1150 1151
  - alsa: new mixer_index option supports choosing between multiple
    identically-named controls on a device.
1152 1153 1154 1155
* Add audio archive extraction support:
  - bzip2
  - iso9660
  - zip
1156
* the option "error_file" was removed, all messages are logged into
1157
   "log_file"
Max Kellermann's avatar
Max Kellermann committed
1158
* support logging to syslog
1159
* fall back to XDG music directory if no music_directory is configured
1160
* failure to read the state file is non-fatal
1161
* --create-db starts the MPD daemon instead of exiting
1162
* playlist_directory and music_directory are optional
1163
* playlist: recalculate the queued song after random is toggled
1164
* playlist: don't unpause on delete
1165
* pause when all audio outputs fail to play
1166
* daemon: ignore "user" setting if already running as that user
1167
* listen: fix broken client IP addresses in log
1168
* listen: bind failure on secondary address is non-fatal
1169 1170
* 24/32 bit audio support
* print available protocols in --version
1171
* fill buffer after seeking
1172
* choose the fallback resampler at runtime
1173 1174 1175
* steps taken towards win32 compatibility
* require glib 2.6 or greater
* built-in documentation using doxygen and docbook
1176 1177


Avuton Olrich's avatar
Avuton Olrich committed
1178
ver 0.14.2 (2009/02/13)
1179 1180
* configure.ac:
  - define HAVE_FFMPEG after all checks
1181 1182
* decoders:
  - ffmpeg: added support for the tags comment, genre, year
1183
  - ffmpeg: don't warn of empty packet output
1184
  - ffmpeg: check if the time stamp is valid
1185
  - ffmpeg: fixed seek integer overflow
1186 1187
  - ffmpeg: enable WAV streaming
  - ffmpeg: added TTA support
1188
  - wavpack: pass NULL if the .wvc file fails to open
1189
  - mikmod: call MikMod_Exit() only in the finish() method
1190
  - aac: fix stream metadata
1191 1192
* audio outputs:
  - jack: allocate ring buffers before connecting
1193
  - jack: clear "shutdown" flag on reconnect
1194
  - jack: reduced sleep time to 1ms
1195
  - shout: fixed memory leak in the mp3 encoder
1196
  - shout: switch to blocking mode
1197
  - shout: use libshout's synchronization
1198
  - shout: don't postpone metadata
1199
  - shout: clear buffer before calling the encoder
1200
* mapper: remove trailing slashes from music_directory
1201
* player: set player error when output device fails
1202
* update: recursively purge deleted directories
1203
* update: free deleted subdirectories
1204

Avuton Olrich's avatar
Avuton Olrich committed
1205
ver 0.14.1 (2009/01/17)
1206 1207 1208
* decoders:
  - mp4: support the writer/composer tag
  - id3: strip leading and trailing whitespace from ID3 tags
1209
  - oggvorbis: fix tremor support
1210
  - oggvorbis: disable seeking on remote files
1211 1212 1213 1214 1215 1216 1217 1218
* audio outputs:
  - jack: allocate default port names (fixes a crash)
* update:
  - refresh stats after update
  - save the database even if it is empty
* input_curl:
  - use select() to eliminate busy loop during connect
  - honour http_proxy_* config directives
1219
  - fix assertion failure on "connection refused"
1220
  - fix assertion failure with empty HTTP responses
1221
* corrected the sample calculation in the fallback resampler
1222 1223 1224 1225 1226
* log: automatically append newline
* fix setenv() conflict on Solaris
* configure.ac: check for pkg-config before using it
* fix minor memory leak in decoder_tag()
* fix cross-fading bug: it used to play some chunks of the new song twice
1227 1228 1229 1230 1231 1232 1233
* playlist
  - fix assertion failure during playlist load
  - implement Fisher-Yates shuffle properly
  - safely search the playlist for deleted song
* use custom PRNG for volume dithering (speedup)
* detect libid3tag without pkg-config

Avuton Olrich's avatar
Avuton Olrich committed
1234
ver 0.14 (2008/12/25)
1235
* audio outputs:
1236
  - wait 10 seconds before reopening a failed device
1237 1238 1239 1240
  - fifo: new plugin
  - null: new plugin
  - shout: block while trying to connect instead of failing
  - shout: new timeout parameter
1241 1242
  - shout: support mp3 encoding and the shoutcast protocol
  - shout: send silence during pause, so clients don't get disconnected
1243
* decoders:
1244
  - ffmpeg: new plugin
1245
  - wavpack: new plugin
1246
  - aac: stream support added
1247
  - mod: disabled by default due to critical bugs in all libmikmod versions
1248 1249
* commands:
  - "addid" takes optional second argument to specify position
1250
  - "idle" notifies the client when a notable change occurs
1251
* Zeroconf support using Bonjour
1252
* New zeroconf_enabled option so that Zeroconf support can be disabled
1253 1254
* Stop the player/decode processes when not playing to allow the CPU to sleep
* Fix a bug where closing an ALSA dmix device could cause MPD to hang
1255
* Support for reading ReplayGain from LAME tags on MP3s
1256 1257 1258 1259 1260 1261 1262 1263
* MPD is now threaded, which greatly improves performance and stability
* memory usage reduced by merging duplicate tags in the database
* support connecting via unix domain socket
* allow authenticated local users to add any local file to the playlist
* 24 bit audio support
* optimized PCM conversions and dithering
* much code has been replaced by using GLib
* the HTTP client has been replaced with libcurl
1264 1265
* symbolic links in the music directory can be disabled; the default
  is to ignore symlinks pointing outside the music directory
1266

1267
ver 0.13.0 (2007/5/28)
1268 1269
* New JACK audio output
* Support for "file" as an alternative to "filename" in search, find, and list
Avuton Olrich's avatar
Avuton Olrich committed
1270
* FLAC 1.1.3 API support
1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282
* New playlistadd command for adding to stored playlists
* New playlistclear command for clearing stored playlists
* Fix a bug where "find any" and "list <type> any" wouldn't return any results
* Make "list any" return an error instead of no results and an OK
* New gapless_mp3_playback option to disable gapless MP3 playback
* Support for seeking HTTP streams
* Zeroconf support using Avahi
* libsamplerate support for high quality audio resampling
* ID3v2 "Original Artist/Performer" tag support
* New playlistsearch command for searching the playlist (similar to "search")
* New playlistfind command for finding songs in the playlist (similar to "find")
* libmikmod 3.2.0 beta support
1283
* New tagtypes command for retrieving a list of available tag types
1284
* Fix a bug where no ACK was returned if loading a playlist failed
1285
* Fix a bug where db_update in stats would be 0 after initial database creation
1286
* New count command for getting stats on found songs (similar to "find")
1287 1288
* New playlistmove command for moving songs in stored playlists
* New playlistdelete command for deleting songs from stored playlists
1289
* New rename command for renaming stored playlists
1290
* Increased default buffer_before_play from 0% to 10% to prevent skipping
1291 1292
* Lots of bug fixes, cleaned up code, and performance improvements

1293 1294 1295
ver 0.12.2 (2007/3/20)
* Fix a bug where clients could cause MPD to segfault

1296
ver 0.12.1 (2006/10/10)
1297 1298 1299 1300 1301 1302
* Fix segfault when scanning an MP3 that has a Xing tag with 0 frames
* Fix segfault when there's no audio output specified and one can't be detected
* Fix handling of escaping in quotes
* Allow a quality of -1 to be specified for shout outputs
* A few minor cleanups

1303
ver 0.12.0 (2006/9/22)
1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326
* New audio output code which supports:
  * A plugin-like architecture
  * Non-libao ("native") outputs:
    * ALSA
    * OSS
    * OS X
    * Media MVP
    * PulseAudio
    * Shout (Icecast or Shoutcast)
  * Playing through multiple outputs at once
  * Enabling/disabling outputs while MPD is running
  * Saving output state (enabled/disabled) to the state_file
* OggFLAC support
* Musepack support
* Gapless MP3 playback
* MP3 ReplayGain support (using ID3v2 tags only)
* Support for MP2 files if MP3 support is enabled
* Composer, Performer, Comment, and Disc metadata support
* New outputs command for listing available audio outputs
* New enableoutput and disableoutput commands for enabling/disabling outputs
* New plchangesposid command for a stripped down version of plchanges
* New addid command for adding to the playlist and returning a song ID
* New commands and notcommands commands for checking available commands
1327
* Can now specify any supported metadata type or "any" in search, find, and list
1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340
* New volume_normalization parameter for enabling Audio Compress normalization
* New metadata_to_use parameter for choosing supported metadata types
* New pid_file parameter for saving the MPD process ID to the specified file
* The db_file parameter is now required
* The port parameter is now optional (defaults to 6600)
* Can specify bind_to_address multiple times
* New --kill argument for killing MPD if pid_file is specified
* Removed --update-db argument (use the update function in your client instead)
* New mpdconf.example
* New mpd.conf man page 
* Removed bundled libmad and libid3tag
* Lots of bug fixes, cleaned up code, and performance improvements

1341
ver 0.11.5 (2004/11/1)
1342 1343
1) New id3v1_encoding config option to configure the id3v1 tag encoding (patch
from dottedmag)
1344 1345 1346
2) Strip '\r' from m3u playlists (thank you windows)
3) Use random() instead of rand() for playlist randomizing
4) Fix a bug trying skipping some commented lines in m3u playlist files
1347 1348
5) Fix a bug when fetching metadata from streams that may cause certain
weirdnesses
1349 1350
6) Fix a bug where replaygain preamp was used on files w/o replaygain tags
7) Fix a busy loop when trying to prebuffer a nonexistant or missing stream
1351 1352
8) Fix a bug in forgetting to remove leading ' ' in content-type for http
streams
1353 1354
9) Check for ice-name in http headers
10) Be sure the strip all '\n' chars in tags
1355 1356
11) Set $HOME env variable when setuid'ing, this should fix the /root/.mcop
errors triggered by arts/libao
1357

1358 1359 1360 1361
ver 0.11.4 (2004/7/26)
1) Fixed a segfault when decoding mp3's with corrupt id3v2 tags
2) Fixed a memory leak when encountering id3v2 tags in mp3 decoder

Warren Dukes's avatar
Warren Dukes committed
1362 1363 1364 1365
ver 0.11.3 (2004/7/21)
1) Add support for http authentication for streams
2) Added replaygain pre-amp support
3) Better error handling for fread() in inputStream_file
1366 1367 1368 1369 1370 1371 1372 1373
4) Fixed a bug so that when a freeAllInterfaces is called, it sets
max_interface_connections to 0.  This prevents potential segfaults and other
nastiness for forked processes, like the player and update-er (do to
interfacePrintWithFD()).
5) Allow blockingWrite() to handle errors more gracefully (for example, if the
disc is full, and thus the write() fails or can't be completed, we just skip
this write() and continue, instead of getting stuck in an infinite loop until
the write() becomes successful)
Warren Dukes's avatar
Warren Dukes committed
1374
6) Updated mpdconf.example from sbh/avuton
1375 1376
7) If "user" is specified, then convert ~ in paths to the user's home path
specified by "user" config paramter (not the actual current user running mpd).
Warren Dukes's avatar
Warren Dukes committed
1377

1378
ver 0.11.2 (2004/7/5) 
1379 1380
1) Work around in computing total time for mp3's whose first valid mpeg frame is
not layer III
1381 1382 1383 1384 1385
2) Fix mp3 and mp4 decoders when seeking past the end of the file
3) Fix replaygain for flac and vorbis
4) Fix memory leaks in flac decoder (from normalperson)
5) Fix Several other bugs in playlist.c and directory.c (from normalperson)

1386 1387 1388 1389 1390 1391
ver 0.11.1 (2004/6/24)
1) Fix a bug that caused "popping" at the beginning of mp3's
2) Fix playlistid command
3) Fix move commands so they don't mess up the song id's
4) Added support for HTTP Proxy
5) Detect and skip recursive links in the music directory
1392 1393
6) Fix addPathToDB() so updating on a specific path doesn't exist correctly adds
the parent directories to the DB
1394

1395
ver 0.11.0 (2004/6/18)
1396 1397 1398
1) Support for playing mp3 and Ogg Vorbis streams
2) Non-blocking Update
3) Replaygain support for Ogg Vorbis and FLAC (by Eric Moore aka AliasMrJones)
1399 1400
4) audio_output_format option that allows for all audio output to be converted
to a format compatible with any sound card
1401 1402
5) Own routines for to always support UTF-8 <-> ISO-8859-1 conversion
6) Added "Id" and "Pos" metadata for songs in playlist
1403 1404
7) Added commands: plchanges, currentsong, playid, seekid, playlistid, moveid,
swapid, deleteid
1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416
8) UTF-8 validation of all tags
9) Update specific files/directories (for fast, incremental updating)
10) Added ACK error codes
11) Mod file support
12) Added command_list_ok_begin
13) Play after stop resumes from last position in the playlist
14) Play while pause resumes playback
15) Better signal handling by mackstann
16) Cleanup decoder interface (now called InputPlugins)
17) --create-db no long starts the daemon
18) --no-daemon outputs to log files
19) --stdout sends output to stdout/stderr
1417 1418
20) Default port is now 6600
21) Lots of other cleanups and Bugfixes
1419

1420 1421 1422 1423
ver 0.10.4 (2004/5/26)
1) Fix configure problems on OpenBSD with langinfo and iconv
2) Fix an infinte loop when writing to an interface and it has expired
3) Fix a segfault in decoding flac's
1424 1425
4) Ingore CRC stuff in mp3's since some encoders did not compute the CRC
correctly
1426 1427
5) Fix a segfault in processing faulty mp4 metadata

1428 1429 1430
ver 0.10.3 (2004/4/2)
1) Fix a segfault when a blanck line is sent from a client
2) Fix for loading playlists on platforms where char is unsigned
1431 1432 1433 1434
3) When pausing, release audio device after we say pause is successful (this
makes pause appear to not lag)
4) When returning errors for unknown types by player, be sure to copy the
filename
1435
5) add --disable-alsa for disabling alsa mixer support
Warren Dukes's avatar
Warren Dukes committed
1436
6) Use select() for a portable usleep()
1437
7) For alsa mixer, default to "Master' element, not first element
1438

Warren Dukes's avatar
Warren Dukes committed
1439 1440
ver 0.10.2 (2004/3/25)
1) Add suport for AAC
1441
2) Substitute '\n' with ' ' in tag info
Warren Dukes's avatar
Warren Dukes committed
1442 1443 1444 1445 1446
3) Remove empty directories from db
4) Resume from current position in song when using state file
5) Pause now closes the music device, and reopens it on resuming
6) Fix unnecessary big endian byte swapping
7) If locale is "C" or "POSIX", then use ISO-8859-1 as the fs charset
1447
8) Fix a bug where alsa mixer wasn't detecting volume changes
1448 1449
9) For alsa and software mixer, show volume to be the same as it was set (even
if its not the exact volume)
1450
10) Report bitrate for wave files
1451
11) Compute song length of CBR mp3's more accurately
Warren Dukes's avatar
Warren Dukes committed
1452

1453
ver 0.10.1 (2004/3/7)
1454
1) Check to see if we need to add "-lm" when linking mpd
1455 1456
2) Fix issues with skipping bad frames in an mp3 (this way we get the correct
samplerate and such)
1457
3) Fix crossfading bug with ogg's
1458
4) Updated libmad and libid3tag included w/ source to 0.15.1b
1459

1460
ver 0.10.0 (2004/3/3)
1461 1462 1463 1464 1465 1466 1467 1468 1469 1470
1) Use UTF-8 for all client communications
2) Crossfading support
3) Password Authentication (all in plaintext)
4) Software mixer
5) Buffer Size is configurable
6) Reduced Memory consumption (use directory tree for search and find)
7) Bitrate support for Flac
8) setvol command (deprecates volume command)
9) add command takes directories
10) Path's in config file now work with ~
Warren Dukes's avatar
Warren Dukes committed
1471 1472 1473 1474 1475
11) Add samplerate,bits, and channels to status
12) Reenable playTime in stats display
13) Fix a segfault when doing: add ""
14) Fix a segfault with flac vorbis comments simply being "="
15) Fix a segfault/bug in queueNextSong with repeat+random
1476 1477
16) Fix a bug, where one process may segfault, and cause more processes to spawn
w/o killing ones that lost their parent.
1478
17) Fix a bug when the OSS device was unable to fetch the current volume,
1479 1480
it would close the device (when it maybe previously closed by the exact same
code)
1481 1482
18) command.c cleanup by mackstann
19) directory.c and command.c cleanup by tw-nym
1483

Warren Dukes's avatar
Warren Dukes committed
1484 1485
ver 0.9.4 (2004/1/21)
1) Fix a bug where updated tag info wasn't being detected
1486 1487
2) Set the default audio write size to 1024 bytes (should decrease cpu load a
bit on some machines).
Warren Dukes's avatar
Warren Dukes committed
1488
3) Make audio write size configurable via "audio_write_size" config option
1489 1490
4) Tweak output buffer size for connections by detecting the kernel output
buffer size.
Warren Dukes's avatar
Warren Dukes committed
1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505

ver 0.9.3 (2003/10/31)
1) Store total time/length of songs in db and display in *info commands
2) Display instantaneous bitrate in status command
3) Add Wave Support using libaudiofile (Patch from normalperson)
4) Command code cleanup (Patch from tw-nym)
5) Optimize listing of playlists (10-100x faster)
6) Optimize interface output (write in 4kB chunks instead of on every '\n')
7) Fix bug that prevented rm command from working
8) Fix bug where deleting current song skips the next song
9) Use iconv to convert vorbis comments from UTF-8 to Latin1

ver 0.9.2 (2003/10/6)
1) Fix FreeBSD Compilation Problems
2) Fix bug in move command
1506 1507
3) Add mixer_control options to configure which mixer control/device mpd
controls
Warren Dukes's avatar
Warren Dukes committed
1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541
4) Randomize on play -1
5) Fix a bug in toggling repeat off and at the end of the playlist

ver 0.9.1 (2003/9/30)
1) Fix a statement in the middle of declarations in listen.c, causes error for
gcc 2.7

ver 0.9.0 (2003/9/30)
1) Random play mode
2) Alsa Mixer Support
3) Save and Restore "state"
4) Default config file locations (.mpdconf and /etc/mpd.conf)
5) Make db file locations configurable
6) Move songs around in the playlist
7) Gapless playback
8) Use Xing tags for mp3's
9) Remove stop_on_error
10) Seeking support
11) Playlists can be loaded and deleted from subdirectories
12) Complete rewrite of player layer (fork()'s only once, opens and closes
audio device as needed).
13) Eliminate use and dependence of SIGIO
14) IPv6 support
15) Solaris compilations fixes
16) Support for different log levels
17) Timestamps for log entries
18) "user" config parameter for setuid (patch from Nagilum)
19) Other misc features and bug fixes

ver 0.8.7 (2003/9/3)
1) Fix a memory leak.  When closing a interface, was called close() on the fd
instead of calling fclose() on the fp that was opened with fdopen().

ver 0.8.6 (2003/8/25)
1542 1543
1) Fix a memory leak when a buffered existed, and a connection was unexpectedly
closed, and i wasn't free'ing the buffer apropriatly.
Warren Dukes's avatar
Warren Dukes committed
1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629

ver 0.8.5 (2003/8/17)
1) Fix a bug where an extra end of line is returned when attempting to play a
non existing file.  This causes parsing errors for clients.

ver 0.8.4 (2003/8/13)
1) Fix a bug where garbage is returned with errors in "list" command

ver 0.8.3 (2003/8/12) 
1) Fix a compilation error on older linux systems
2) Fix a bug in searching by title
3) Add "list" command
4) Add config options for specifying libao driver/plugin and options
5) Add config option to specify which address to bind to
6) Add support for loading and saving absolute pathnames in saved playlists
7) Playlist no longer creates duplicate entries for song data (more me
efficient)
8) Songs deleted from the db are now removed for the playlist as well

ver 0.8.2 (2003/7/22)
1) Increased the connection que for listen() from 0 to 5
2) Cleanup configure makefiles so that mpd uses MPD_LIBS and MPD_CFLAGS
rather than LIBS and CFLAGS
3) Put a cap on the number of commands per command list
4) Put a cap on the maximum number of buffered output lines
5) Get rid of TIME_WAIT/EADDRINUSE socket problem
6) Use asynchronious IO (i.e. trigger SIGIO instead so we can sleep in
select() calls longer)

ver 0.8.1 (2003/7/11)
1) FreeBSD fixes
2) Fix for rare segfault when updating
3) Fix bug where client was being hungup on when done playing current song
4) Fix bug when playing flac's where it incorrectly reports an error
5) Make stop playlist on error configurable
6) Configure checks for installed libmad and libid3tag and uses those if found
7) Use buffer->finished in *_decode's instead of depending on catching signals

ver 0.8.0 (2003/7/6)
1) Flac support
2) Make playlist max length configurable
3) New backward compatible status (backward compatible for 0.8.0 on)
4) listall command now can take a directory as an argument
5) Buffer rewritten to use shared memory instead of sockets
6) Playlist adding done using db
7) Add sort to list, and use binary search for finding
8) New "stats" command
9) Command list (for faster adding of large batches of files)
10) Add buffered chunks before play
11) Useful error reporting to clients (part of status command)
12) Use libid3tag for reading id3 tags (more stable)
13) Non-blocking output to clients
14) Fix bug when removing items from directory
15) Fix bug when playing mono mp3's
16) Fix bug when attempting to delete files when using samba
17) Lots of other bug fixes I can't remember

ver 0.7.0 (2003/6/20)
1) use mad instead of mpg123 for mp3 decoding
2) volume support
3) repeate playlist support
4) use autoconf/automake (i.e. "configure")
5) configurable max connections

ver 0.6.2 (2003/6/11)
1) Buffer support for ogg
2) new config file options: "connection_timeout" and "mpg123_ignore_junk"
3) new commands: "next", "previous", and "listall"
Thanks to Niklas Hofer for "next" and "previous" patches!
4) Search by filename
5) bug fix for pause when playing mp3's

ver 0.6.1 (2003/5/29)
1) Add conf file support
2) Fix a bug when doing mp3stop (do wait3(NULL,WNOHANG|WUNTRACED,NULL))
3) Fix a bug when fork'ing, fflush file buffers before forking so the
child doesn't print the same stuff in the buffer.

ver 0.6.0 (2003/5/25)
1) Add ogg vorbis support
2) Fix two bugs relating to tables, one for search by title, and one where we
freed the tables before directories, causing a segfault
3) The info command has been removed.

ver 0.5.0-0.5.2
Initial release(s).  Support for MP3 via mpg123