NEWS 55.3 KB
Newer Older
1
ver 0.19.17 (not yet released)
2 3
* decoder
  - flac: fix assertion failure while seeking
4
  - fix seek problems in several plugins
5
* fix spurious seek error "Failed to allocate silence buffer"
6
* replay gain: fix "replay_gain_handler mixer" setting
7
* DSD: use 0x69 as silence pattern
8
* fix use-after-free bug on "close"
9

Max Kellermann's avatar
Max Kellermann committed
10
ver 0.19.16 (2016/06/13)
11
* faster seeking
12 13
* fix system include path order
* add missing DocBook file to tarball
14

Max Kellermann's avatar
Max Kellermann committed
15
ver 0.19.15 (2016/04/30)
16
* decoder
17
  - ffmpeg: support FFmpeg 3.0
18
  - ffmpeg: use as fallback instead of "mad" if no plugin matches
19
  - opus: support bigger OpusTags packets
20
* fix more build failures on non-glibc builds due to constexpr Mutex
21
* fix build failure due to missing include
22
* fix unit test on Alpha
23

Max Kellermann's avatar
Max Kellermann committed
24
ver 0.19.14 (2016/03/18)
25
* decoder
26
  - dsdiff: fix off-by-one buffer overflow
27
  - opus: limit tag size to 64 kB
28 29
* archive
  - iso9660: fix buffer overflow
30
* fix quadratic runtime bug in the tag pool
31
* fix build failures on non-glibc builds due to constexpr Mutex
32

Max Kellermann's avatar
Max Kellermann committed
33
ver 0.19.13 (2016/02/23)
34 35
* tags
  - aiff, riff: fix ID3 chunk padding
36 37
* decoder
  - ffmpeg: support the TAK codec
38
* fix disappearing duration of remote songs during playback
39
* initialize supplementary groups with glibc 2.19+
40

Max Kellermann's avatar
Max Kellermann committed
41
ver 0.19.12 (2015/12/15)
42
* fix assertion failure on malformed UTF-8 tag
43
* fix build failure on non-Linux systems
44
* fix LimitRTTIME in systemd unit file
45

Max Kellermann's avatar
Max Kellermann committed
46
ver 0.19.11 (2015/10/27)
47 48
* tags
  - ape: fix buffer overflow
49 50
* decoder
  - ffmpeg: fix crash due to wrong avio_alloc_context() call
51
  - gme: don't loop forever, fall back to GME's default play length
52 53
* encoder
  - flac: fix crash with 32 bit playback
54 55
* mixer
  - fix mixer lag after enabling/disabling output
56

Max Kellermann's avatar
Max Kellermann committed
57
ver 0.19.10 (2015/06/21)
58
* input
59
  - curl: fix deadlock on small responses
60
  - smbclient: fix DFF playback
61 62
* decoder
  - ffmpeg: improve seeking accuracy
63
  - fix stuck stream tags
64 65
* encoder
  - opus: fix bogus granulepos
66 67
* output
  - fix failure to open device right after booting
68 69
* neighbor
  - nfs: fix deadlock when connecting
70
* fix "single" mode breakage due to queue edits
71

Max Kellermann's avatar
Max Kellermann committed
72
ver 0.19.9 (2015/02/06)
73 74
* decoder
  - dsdiff, dsf: raise ID3 tag limit to 1 MB
75
* playlist: fix loading duplicate tag types from state file
76
* despotify: remove defunct plugin
77
* fix clock integer overflow on OS X
78
* fix gcc 5.0 warnings
79
* fix build failure with uClibc
80
* fix build failure on non-POSIX operating systems
81
* fix dependency issue on parallel Android build
82
* fix database/state file saving on Windows
83

Max Kellermann's avatar
Max Kellermann committed
84
ver 0.19.8 (2015/01/14)
85
* input
86
  - curl: fix bug after rewinding from end-of-file
87
  - mms: reduce delay at the beginning of playback
88 89
* decoder
  - dsdiff, dsf: allow ID3 tags larger than 4 kB
90
  - ffmpeg: support interleaved floating point
91
* fix clang 3.6 warnings
92
* fix build failure on NetBSD
93

Max Kellermann's avatar
Max Kellermann committed
94
ver 0.19.7 (2014/12/17)
95 96
* input
  - nfs: fix crash while canceling a failing file open operation
97
  - nfs: fix memory leak on connection failure
98
  - nfs: fix reconnect after mount failure
99
  - nfs: implement mount timeout (60 seconds)
100 101
* storage
  - nfs: implement I/O timeout (60 seconds)
102
* playlist
103
  - embcue: fix filename suffix detection
104
  - don't skip non-existent songs in "listplaylist"
105 106
* decoder
  - ffmpeg: fix time stamp underflow
107
* fix memory allocator bug on Windows
108

Max Kellermann's avatar
Max Kellermann committed
109
ver 0.19.6 (2014/12/08)
110 111 112
* decoder
  - ffmpeg: support FFmpeg 2.5
* fix build failure with musl
113 114
* android
  - update libFLAC to 1.3.1
115
  - update FFmpeg to 2.5
116

Max Kellermann's avatar
Max Kellermann committed
117
ver 0.19.5 (2014/11/26)
118 119
* input
  - nfs: fix crash on connection failure
120 121
* archive
  - zzip: fix crash after seeking
122 123
* decoder
  - dsdiff, dsf, opus: fix deadlock while seeking
124
  - mp4v2: remove because of incompatible license
125

Max Kellermann's avatar
Max Kellermann committed
126
ver 0.19.4 (2014/11/18)
127 128
* protocol
  - workaround for buggy clients that send "add /"
129
* decoder
130
  - ffmpeg: support opus
131
  - opus: add MIME types audio/ogg and application/ogg
132 133
* fix crash on failed filename charset conversion
* fix local socket detection from uid=0 (root)
134

Max Kellermann's avatar
Max Kellermann committed
135
ver 0.19.3 (2014/11/11)
136 137
* protocol
  - fix "(null)" result string to "list" when AlbumArtist is disabled
138 139
* database
  - upnp: fix breakage due to malformed URIs
140 141
* input
  - curl: another fix for redirected streams
142 143
* decoder
  - audiofile: fix crash while playing streams
144
  - audiofile: fix bit rate calculation
145
  - ffmpeg: support opus
146
  - opus: fix bogus duration on streams
147
  - opus: support chained streams
148
  - opus: improved error logging
149
* fix distorted audio with soxr resampler
150
* fix build failure on Mac OS X with non-Apple compilers
151

Max Kellermann's avatar
Max Kellermann committed
152
ver 0.19.2 (2014/11/02)
153 154
* input
  - curl: fix redirected streams
155
* playlist
156
  - don't allow empty playlist name
157
  - m3u: don't ignore unterminated last line
158
  - m3u: recognize the file suffix ".m3u8"
159
* decoder
160
  - ignore URI query string for plugin detection
161
  - faad: remove workaround for ancient libfaad2 ABI bug
162
  - ffmpeg: recognize MIME type audio/aacp
163
  - mad: fix negative replay gain values
164 165
* output
  - fix memory leak after filter initialization error
166
  - fall back to PCM if given DSD sample rate is not supported
167
* fix assertion failure on unsupported PCM conversion
168
* auto-disable plugins that require GLib when --disable-glib is used
169

Max Kellermann's avatar
Max Kellermann committed
170
ver 0.19.1 (2014/10/19)
171 172
* input
  - mms: fix deadlock bug
173 174
* playlist
  - extm3u: fix Extended M3U detection
175
  - m3u, extm3u, cue: fix truncated lines
Max Kellermann's avatar
Max Kellermann committed
176
* fix build failure on Mac OS X
177
* add missing file systemd/mpd.socket to tarball
178

Max Kellermann's avatar
Max Kellermann committed
179
ver 0.19 (2014/10/10)
180
* protocol
181 182
  - new commands "addtagid", "cleartagid", "listfiles", "listmounts",
    "listneighbors", "mount", "rangeid", "unmount"
183
  - "lsinfo" and "readcomments" allowed for remote files
184
  - "listneighbors" lists file servers on the local network
185
  - "playlistadd" supports file:///
186
  - "idle" with unrecognized event name fails
187
  - "list" on album artist falls back to the artist tag
188
  - "list" and "count" allow grouping
189
  - new "search"/"find" filter "modified-since"
190
  - "seek*" allows fractional position
191
  - close connection after syntax error
192
* database
193
  - proxy: forward "idle" events
194
  - proxy: forward the "update" command
195
  - proxy: copy "Last-Modified" from remote directories
196
  - simple: compress the database file using gzip
197
  - upnp: new plugin
198
  - cancel the update on shutdown
199 200
* storage
  - music_directory can point to a remote file server
201
  - nfs: new plugin
202
  - smbclient: new plugin
203
* playlist
204
  - cue: fix bogus duration of the last track
205
  - cue: restore CUE tracks from state file
206
  - soundcloud: use https instead of http
207
  - soundcloud: add default API key
208 209
* archive
  - read tags from songs in an archive
210 211
* input
  - alsa: new input plugin
212
  - curl: options "verify_peer" and "verify_host"
213
  - ffmpeg: update offset after seeking
214
  - ffmpeg: improved error messages
215
  - mms: non-blocking I/O
216
  - nfs: new input plugin
217
  - smbclient: new input plugin
218 219
* filter
  - volume: improved software volume dithering
220 221
* decoder:
  - vorbis, flac, opus: honor DESCRIPTION= tag in Xiph-based files as a comment to the song
222
  - audiofile: support scanning remote files
223
  - audiofile: log libaudiofile errors
224
  - dsdiff, dsf: report bit rate
225
  - dsdiff, dsf: implement seeking
226
  - dsf: support DSD512
227
  - dsf: support multi-channel files
228
  - dsf: fix big-endian bugs
229
  - dsf: fix noise at end of malformed file
230
  - mpg123: support ID3v2, ReplayGain and MixRamp
231
  - sndfile: support scanning remote files
232
  - sndfile: support tags "comment", "album", "track", "genre"
233 234
  - sndfile: native floating point playback
  - sndfile: optimized 16 bit playback
235
  - mp4v2: support playback of MP4 files.
Andrée Ekroth's avatar
Andrée Ekroth committed
236 237
* encoder:
  - shine: new encoder plugin
238 239
* output
  - alsa: support native DSD playback
240
  - alsa: rename "DSD over USB" to "DoP"
241
  - osx: fix hang after (un)plugging headphones
242 243 244
* threads:
  - the update thread runs at "idle" priority
  - the output thread runs at "real-time" priority
245
  - increase kernel timer slack on Linux
246
  - name each thread (for debugging)
247 248
* configuration
  - allow playlist directory without music directory
249
  - use XDG to auto-detect "music_directory" and "db_file"
250
* add tags "AlbumSort", "MUSICBRAINZ_RELEASETRACKID"
251
* disable global Latin-1 fallback for tag values
252
* new resampler option using libsoxr
253
* ARM NEON optimizations
254
* install systemd unit for socket activation
Max Kellermann's avatar
Max Kellermann committed
255
* Android port
Max Kellermann's avatar
Max Kellermann committed
256

Max Kellermann's avatar
Max Kellermann committed
257
ver 0.18.23 (2015/02/06)
258
* despotify: remove defunct plugin
259
* fix clock integer overflow on OS X
260
* fix gcc 5.0 warnings
261

262
ver 0.18.22 (2015/01/14)
263
* fix clang 3.6 warnings
264

Max Kellermann's avatar
Max Kellermann committed
265
ver 0.18.21 (2014/12/17)
266 267
* playlist
  - embcue: fix filename suffix detection
268 269
* decoder
  - ffmpeg: fix time stamp underflow
270

Max Kellermann's avatar
Max Kellermann committed
271
ver 0.18.20 (2014/12/08)
272 273
* decoder
  - ffmpeg: support FFmpeg 2.5
274
* fix build failure with musl
275

Max Kellermann's avatar
Max Kellermann committed
276
ver 0.18.19 (2014/11/26)
277 278
* archive
  - zzip: fix crash after seeking
279

Max Kellermann's avatar
Max Kellermann committed
280
ver 0.18.18 (2014/11/18)
281 282
* decoder
  - ffmpeg: support opus
283
* fix crash on failed filename charset conversion
284
* fix local socket detection from uid=0 (root)
285

Max Kellermann's avatar
Max Kellermann committed
286
ver 0.18.17 (2014/11/02)
287
* playlist
288
  - don't allow empty playlist name
289
  - m3u: recognize the file suffix ".m3u8"
290
* decoder
291
  - ignore URI query string for plugin detection
292
  - faad: remove workaround for ancient libfaad2 ABI bug
293
  - ffmpeg: recognize MIME type audio/aacp
294

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

Max Kellermann's avatar
Max Kellermann committed
298
ver 0.18.15 (2014/09/26)
299 300
* command
  - list: reset used size after the list has been processed
301
* fix MixRamp
302
* work around build failure on NetBSD
303

Max Kellermann's avatar
Max Kellermann committed
304
ver 0.18.14 (2014/09/11)
305 306
* protocol
  - fix range parser bug on certain 32 bit architectures
307 308
* decoder
  - audiofile: fix crash after seeking
309
  - ffmpeg: fix crash with ffmpeg/libav version 11
310
  - fix assertion failure after seeking
311

Max Kellermann's avatar
Max Kellermann committed
312
ver 0.18.13 (2014/08/31)
313 314
* protocol
  - don't change song on "seekcur" in random mode
Max Kellermann's avatar
Max Kellermann committed
315

316
* decoder
317
  - dsdiff, dsf: fix endless loop on malformed file
318
  - ffmpeg: support ffmpeg/libav version 11
319
  - gme: fix song duration
320 321
* output
  - alsa: fix endless loop at end of file in dsd_usb mode
322
* fix state file saver
323
* fix build failure on Darwin
324

Max Kellermann's avatar
Max Kellermann committed
325
ver 0.18.12 (2014/07/30)
326 327
* database
  - proxy: fix build failure with libmpdclient 2.2
328
  - proxy: fix add/search and other commands with libmpdclient < 2.9
329 330
* decoder
  - audiofile: improve responsiveness
331
  - audiofile: fix WAV stream playback
332
  - dsdiff, dsf: fix stream playback
333
  - dsdiff: fix metadata parser bug (uninitialized variables)
334
  - faad: estimate song duration for remote files
335
  - sndfile: improve responsiveness
336
* randomize next song when enabling "random" mode while not playing
337
* randomize next song when adding to single-song queue
338

Max Kellermann's avatar
Max Kellermann committed
339
ver 0.18.11 (2014/05/12)
340 341
* decoder
  - opus: fix missing song length on high-latency files
342
* fix race condition when using GLib event loop (non-Linux)
343

Max Kellermann's avatar
Max Kellermann committed
344
ver 0.18.10 (2014/04/10)
345
* decoder
346
  - ffmpeg: fix seeking bug
347
  - ffmpeg: handle unknown stream start time
348
  - gme: fix memory leak
349
  - sndfile: work around libsndfile bug on partial read
350
* don't interrupt playback when current song gets deleted
351

Max Kellermann's avatar
Max Kellermann committed
352
ver 0.18.9 (2014/03/02)
353 354
* protocol
  - "findadd" requires the "add" permission
355 356
* output
  - alsa: improved workaround for noise after manual song change
357 358
* decoder
  - vorbis: fix linker failure when libvorbis/libogg are static
359 360
* encoder
  - vorbis: fix another linker failure
361 362
* output
  - pipe: fix hanging child process due to blocked signals
363
* fix build failure due to missing signal.h include
364

Max Kellermann's avatar
Max Kellermann committed
365
ver 0.18.8 (2014/02/07)
366 367
* decoder
  - ffmpeg: support libav v10_alpha1
368 369
* encoder
  - vorbis: fix linker failure
370 371
* output
  - roar: documentation
372
* more robust Icy-Metadata parser
373
* fix Solaris build failure
374

375
ver 0.18.7 (2014/01/13)
376
* playlist
377
  - pls: fix crash after parser error
378
  - soundcloud: fix build failure with libyajl 2.0.1
379 380
* decoder
  - faad: fix memory leak
381
  - mpcdec: reject libmpcdec SV7 in configure script
382 383
* daemon: don't initialize supplementary groups when already running
  as the configured user
384

Max Kellermann's avatar
Max Kellermann committed
385
ver 0.18.6 (2013/12/24)
386 387
* input
  - cdio_paranoia: support libcdio-paranoia 0.90
388 389
* tags
  - riff: recognize upper-case "ID3" chunk name
390 391
* decoder
  - ffmpeg: use relative timestamps
Max Kellermann's avatar
Max Kellermann committed
392 393
* output
  - openal: fix build failure on Mac OS X
394
  - osx: fix build failure
395 396
* mixer
  - alsa: fix build failure with uClibc
397
* fix replay gain during cross-fade
398
* accept files without metadata
399

Max Kellermann's avatar
Max Kellermann committed
400
ver 0.18.5 (2013/11/23)
401 402
* configuration
  - fix crash when db_file is configured without music_directory
403
  - fix crash on "stats" without db_file/music_directory
404 405
* database
  - proxy: auto-reload statistics
406
  - proxy: provide "db_update" in "stats" response
407 408
* input
  - curl: work around stream resume bug (fixed in libcurl 7.32.0)
409 410
* decoder
  - fluidsynth: auto-detect by default
411
* clip 24 bit data from libsamplerate
412
* fix ia64, mipsel and other little-endian architectures
413 414 415
* fix build failures due to missing includes
* fix build failure with static libmpdclient

Max Kellermann's avatar
Max Kellermann committed
416
ver 0.18.4 (2013/11/13)
417 418
* decoder
  - dsdiff: fix byte order bug
419
* fix build failures due to missing includes
420
* libc++ compatibility
421

Max Kellermann's avatar
Max Kellermann committed
422
ver 0.18.3 (2013/11/08)
423
* fix stuck MPD after song change (0.18.2 regression)
424

Max Kellermann's avatar
Max Kellermann committed
425
ver 0.18.2 (2013/11/07)
426 427
* protocol:
  - "close" flushes the output buffer
428
* input:
429
  - cdio_paranoia: add setting "default_byte_order"
430
  - curl: fix bug with redirected streams
431 432
* playlist:
  - pls: fix reversed song order
433
* decoder:
434
  - audiofile: require libaudiofile 0.3 due to API breakage
435
  - dsf: enable DSD128
436
* enable buffering when starting playback (regression fix)
Max Kellermann's avatar
Max Kellermann committed
437
* fix build failures due to missing includes
438
* fix big-endian support
439

Max Kellermann's avatar
Max Kellermann committed
440
ver 0.18.1 (2013/11/04)
441 442
* protocol:
  - always ignore whitespace at the end of the line
443 444
* networking:
  - log UNIX domain path names instead of "localhost"
445
  - open listener sockets in the order they were configured
446
  - don't abort if IPv6 is not available
447 448
* output:
  - alsa: avoid endless loop in Raspberry Pi workaround
449 450
* filter:
  - autoconvert: fix "volume_normalization" with mp3 files
451
* add missing files to source tarball
452

Max Kellermann's avatar
Max Kellermann committed
453
ver 0.18 (2013/10/31)
454 455
* configuration:
  - allow tilde paths for socket
456
  - default filesystem charset is UTF-8 instead of ISO-8859-1
457
  - increase default buffer size to 4 MB
458
* protocol:
459
  - new command "readcomments" lists arbitrary file tags
460
  - new command "toggleoutput"
461
  - "find"/"search" with "any" does not match file name
462
  - "search" and "find" with base URI (keyword "base")
463
  - search for album artist falls back to the artist tag
464
  - re-add the "volume" command
465
* input:
Ales Guzik's avatar
Ales Guzik committed
466
  - curl: enable https
467
  - soup: plugin removed
468 469
* playlist:
  - lastfm: remove defunct Last.fm support
470
* decoder:
471
  - adplug: new decoder plugin using libadplug
472
  - dsf: don't play junk at the end of the "data" chunk
473
  - ffmpeg: drop support for pre-0.8 ffmpeg
474
  - flac: require libFLAC 1.2 or newer
475
  - flac: support FLAC files inside archives
476
  - opus: new decoder plugin for the Opus codec
477
  - vorbis: skip 16 bit quantisation, provide float samples
478
  - mikmod: add "loop" configuration parameter
479
  - modplug: add "loop_count" configuration parameter
480
  - mp4ff: obsolete plugin removed
481 482
* encoder:
  - opus: new encoder plugin for the Opus codec
483
  - vorbis: accept floating point input samples
484 485
* output:
  - new option "tags" may be used to disable sending tags to output
486
  - alsa: workaround for noise after manual song change
487
  - ffado: remove broken plugin
488
  - httpd: support HEAD requests
489
  - mvp: remove obsolete plugin
490
  - osx: disabled by default because it's unmaintained and unsupported
491
* improved decoder/output error reporting
492
* eliminate timer wakeup on idle MPD
493
* fix unresponsive MPD while waiting for stream
Max Kellermann's avatar
Max Kellermann committed
494
* port of the source code to C++11
Max Kellermann's avatar
Max Kellermann committed
495

Max Kellermann's avatar
Max Kellermann committed
496
ver 0.17.6 (2013/10/14)
497 498
* mixer:
  - alsa: fix busy loop when USB sound device gets unplugged
499 500
* decoder:
  - modplug: fix build with Debian package 1:0.8.8.4-4
Max Kellermann's avatar
Max Kellermann committed
501 502
* stored playlists:
  - fix loading playlists with references to local files
503
  - obey filesystem_charset for URLs
Max Kellermann's avatar
Max Kellermann committed
504

Max Kellermann's avatar
Max Kellermann committed
505
ver 0.17.5 (2013/08/04)
506 507
* protocol:
  - fix "playlistadd" with URI
508
  - fix "move" relative to current when there is no current song
509
* decoder:
510
  - ffmpeg: support "application/flv"
511
  - mikmod: adapt to libmikmod 3.2
512 513
* configure.ac:
  - detect system "ar"
Max Kellermann's avatar
Max Kellermann committed
514

Max Kellermann's avatar
Max Kellermann committed
515
ver 0.17.4 (2013/04/08)
516 517
* protocol:
  - allow to omit END in ranges (START:END)
518
  - don't emit IDLE_PLAYER before audio format is known
519 520
* decoder:
  - ffmpeg: support float planar audio (ffmpeg 1.1)
521
  - ffmpeg: fix AVFrame allocation
522 523
* player:
  - implement missing "idle" events on output errors
524
* clock: fix build failure
525

Avuton Olrich's avatar
Avuton Olrich committed
526
ver 0.17.3 (2013/01/06)
527
* output:
528
  - osx: fix pops during playback
529
  - recorder: fix I/O error check
530
  - shout: fix memory leak in error handler
531
  - recorder, shout: support Ogg packets that span more than one page
532 533
* decoder:
  - ffmpeg: ignore negative time stamps
534
  - ffmpeg: support planar audio
535 536
* playlist:
  - cue: fix memory leak
537
  - cue: fix CUE files with only one track
538

Avuton Olrich's avatar
Avuton Olrich committed
539
ver 0.17.2 (2012/09/30)
540 541
* protocol:
  - fix crash in local file check
542 543
* decoder:
  - fluidsynth: remove throttle (requires libfluidsynth 1.1)
544
  - fluidsynth: stop playback at end of file
545
  - fluidsynth: check MIDI file format while scanning
546
  - fluidsynth: add sample rate setting
547
  - wavpack: support all APEv2 tags
548 549
* output:
  - httpd: use monotonic clock, avoid hiccups after system clock adjustment
550
  - httpd: fix throttling bug after resuming playback
551 552
* playlist:
  - cue: map "PERFORMER" to "artist" or "album artist"
553
* mapper: fix non-UTF8 music directory name
554
* mapper: fix potential crash in file permission check
555
* playlist: fix use-after-free bug
556
* playlist: fix memory leak
557
* state_file: save song priorities
558
* player: disable cross-fading in "single" mode
559
* update: fix unsafe readlink() usage
560 561
* configure.ac:
  - don't auto-detect the vorbis encoder when Tremor is enabled
562

Avuton Olrich's avatar
Avuton Olrich committed
563
ver 0.17.1 (2012/07/31)
564 565
* protocol:
  - require appropriate permissions for searchadd{,pl}
566 567
* tags:
  - aiff: support the AIFC format
568
  - ape: check for ID3 if no usable APE tag was found
569 570
* playlist:
  - cue: support file types "MP3", "AIFF"
571 572
* output:
  - fix noisy playback with conversion and software volume
573

Max Kellermann's avatar
Max Kellermann committed
574
ver 0.17 (2012/06/27)
575 576
* protocol:
  - support client-to-client communication
577
  - "update" and "rescan" need only "CONTROL" permission
578
  - new command "seekcur" for simpler seeking within current song
579
  - new command "config" dumps location of music directory
580
  - add range parameter to command "load"
581
  - print extra "playlist" object for embedded CUE sheets
582
  - new commands "searchadd", "searchaddpl"
583 584
* input:
  - cdio_paranoia: new input plugin to play audio CDs
585
  - curl: enable CURLOPT_NETRC
586
  - curl: non-blocking I/O
587
  - soup: new input plugin based on libsoup
588 589
* tags:
  - RVA2: support separate album/track replay gain
590 591
* decoder:
  - mpg123: implement seeking
592
  - ffmpeg: drop support for pre-0.5 ffmpeg
Max Kellermann's avatar
Max Kellermann committed
593
  - ffmpeg: support WebM
594
  - oggflac: delete this obsolete plugin
595
  - dsdiff: new decoder plugin
596
* output:
597
  - alsa: support DSD-over-USB (dCS suggested standard)
598
  - httpd: support for streaming to a DLNA client
599
  - openal: improve buffer cancellation
600
  - osx: allow user to specify other audio devices
601
  - osx: implement 32 bit playback
602
  - shout: add possibility to set url
603
  - roar: new output plugin for RoarAudio
604
  - winmm: fail if wrong device specified instead of using default device
605 606
* mixer:
  - alsa: listen for external volume changes
607 608
* playlist:
  - allow references to songs outside the music directory
609
  - new CUE parser, without libcue
610
  - soundcloud: new plugin for accessing soundcloud.com
611
* state_file: add option "restore_paused"
612
* cue: show CUE track numbers
613
* allow port specification in "bind_to_address" settings
614
* support floating point samples
615
* systemd socket activation
616
* improve --version output
617
* WIN32: fix renaming of stored playlists with non-ASCII names
618 619


Avuton Olrich's avatar
Avuton Olrich committed
620
ver 0.16.8 (2012/04/04)
621
* fix for libsamplerate assertion failure
622 623
* decoder:
  - vorbis (and others): fix seeking at startup
624
  - ffmpeg: read the "year" tag
625 626
* encoder:
  - vorbis: generate end-of-stream packet before tag
627
  - vorbis: generate end-of-stream packet when playback ends
628
* output:
629
  - jack: check for connection failure before starting playback
630
  - jack: workaround for libjack1 crash bug
631
  - osx: fix stuttering due to buffering bug
632
* fix endless loop in text file reader
633
* update: skip symlinks in path that is to be updated
634 635


Avuton Olrich's avatar
Avuton Olrich committed
636
ver 0.16.7 (2012/02/04)
637 638
* input:
  - ffmpeg: support libavformat 0.7
639
* decoder:
640
  - ffmpeg: support libavformat 0.8, libavcodec 0.9
641
  - ffmpeg: support all MPD tags
642 643
* output:
  - httpd: fix excessive buffering
644
  - openal: force 16 bit playback, as 8 bit doesn't work
645
  - osx: remove sleep call from render callback
646
  - osx: clear render buffer when there's not enough data
647
* fix moving after current song
648 649


Avuton Olrich's avatar
Avuton Olrich committed
650
ver 0.16.6 (2011/12/01)
651 652
* decoder:
  - fix assertion failure when resuming streams
653
  - ffmpeg: work around bogus channel count
654
* encoder:
655
  - flac, null, wave: fix buffer corruption bug
656
  - wave: support packed 24 bit samples
657
* mapper: fix the bogus "not a directory" error message
658
* mapper: check "x" and "r" permissions on music directory
659
* log: print reason for failure
660
* event_pipe: fix WIN32 regression
661
* define WINVER in ./configure
662
* WIN32: autodetect filesystem encoding
663 664


Avuton Olrich's avatar
Avuton Olrich committed
665
ver 0.16.5 (2011/10/09)
666 667 668
* configure.ac
  - disable assertions in the non-debugging build
  - show solaris plugin result correctly
669
  - add option --enable-solaris-output
670
* pcm_format: fix 32-to-24 bit conversion (the "silence" bug)
671 672
* input:
  - rewind: reduce heap usage
673 674
* decoder:
  - ffmpeg: higher precision timestamps
675
  - ffmpeg: don't require key frame for seeking
676
  - fix CUE track seeking
677 678
* output:
  - openal: auto-fallback to mono if channel count is unsupported
679 680 681
* player:
  - make seeking to CUE track more reliable
  - the "seek" command works when MPD is stopped
682
  - restore song position from state file (bug fix)
683
  - fix crash that sometimes occurred when audio device fails on startup
684
  - fix absolute path support in playlists
685
* WIN32: close sockets properly
686
* install systemd service file if systemd is available
687 688


Avuton Olrich's avatar
Avuton Olrich committed
689
ver 0.16.4 (2011/09/01)
690
* don't abort configure when avahi is not found
691
* auto-detect libmad without pkg-config
Max Kellermann's avatar
Max Kellermann committed
692
* fix memory leaks
693
* don't resume playback when seeking to another song while paused
694
* apply follow_inside_symlinks to absolute symlinks
695
* fix playback discontinuation after seeking
696 697
* input:
  - curl: limit the receive buffer size
698
  - curl: implement a hard-coded timeout of 10 seconds
699 700
* decoder:
  - ffmpeg: workaround for semantic API change in recent ffmpeg versions
701
  - flac: validate the sample rate when scanning the tag
702
  - wavpack: obey all decoder commands, stop at CUE track border
703 704
* encoder:
  - vorbis: don't send end-of-stream on flush
705 706
* output:
  - alsa: fix SIGFPE when alsa announces a period size of 0
707
  - httpd: don't warn on client disconnect
708
  - osx: don't drain the buffer when closing
709
  - pulse: fix deadlock when resuming the stream
710
  - pulse: fix deadlock when the stream was suspended
711 712


Avuton Olrich's avatar
Avuton Olrich committed
713
ver 0.16.3 (2011/06/04)
714
* fix assertion failure in audio format mask parser
715
* fix NULL pointer dereference in playlist parser
716
* fix playlist files in base music directory
717
* database: allow directories with just playlists
718
* decoder:
719
  - ffmpeg: support libavcodec 0.7
720 721


Avuton Olrich's avatar
Avuton Olrich committed
722
ver 0.16.2 (2011/03/18)
723 724
* configure.ac:
  - fix bashism in tremor test
725 726
* decoder:
  - tremor: fix configure test
727
  - gme: detect end of song
728 729
* encoder:
  - vorbis: reset the Ogg stream after flush
730 731
* output:
  - httpd: fix uninitialized variable
732
  - httpd: include sys/socket.h
733
  - oss: AFMT_S24_PACKED is little-endian
734
  - oss: disable 24 bit playback on FreeBSD
735 736


Max Kellermann's avatar
Max Kellermann committed
737
ver 0.16.1 (2011/01/09)
738
* audio_check: fix parameter in prototype
739
* add void casts to suppress "result unused" warnings (clang)
740 741
* input:
  - ffado: disable by default
742 743
* decoder:
  - mad: work around build failure on Solaris
744
  - resolve modplug vs. libsndfile cflags/headers conflict
745 746
* output:
  - solaris: add missing parameter to open_cloexec() cal
747
  - osx: fix up audio format first, then apply it to device
748
* player_thread: discard empty chunks while cross-fading
749
* player_thread: fix assertion failure due to early seek
750
* output_thread: fix double lock
751 752


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


867
ver 0.15.17 (2011/??/??)
868 869
* encoder:
  - vorbis: reset the Ogg stream after flush
870 871
* decoders:
  - vorbis: fix tremor support
872 873


Avuton Olrich's avatar
Avuton Olrich committed
874
ver 0.15.16 (2011/03/13)
875 876
* output:
  - ao: initialize the ao_sample_format struct
877
  - jack: fix crash with mono playback
878 879
* encoders:
  - lame: explicitly configure the output sample rate
880
* update: log all file permission problems
881 882


Max Kellermann's avatar
Max Kellermann committed
883
ver 0.15.15 (2010/11/08)
884 885
* input:
  - rewind: fix assertion failure
886 887
* output:
  - shout: artist comes first in stream title
888 889


Avuton Olrich's avatar
Avuton Olrich committed
890
ver 0.15.14 (2010/11/06)
891
* player_thread: fix assertion failure due to wrong music pipe on seek
892
* output_thread: fix assertion failure due to race condition in OPEN
893 894
* input:
  - rewind: fix double free bug
895 896 897
* decoders:
  - mp4ff, ffmpeg: add extension ".m4b" (audio book)

898

Avuton Olrich's avatar
Avuton Olrich committed
899
ver 0.15.13 (2010/10/10)
900
* output_thread: fix race condition after CANCEL command
901 902
* output:
  - httpd: fix random data in stream title
903
  - httpd: MIME type audio/ogg for Ogg Vorbis
904 905
* input:
  - rewind: update MIME not only once
906
  - rewind: enable for MMS
907 908


Max Kellermann's avatar
Max Kellermann committed
909
ver 0.15.12 (2010/07/20)
910 911
* input:
  - curl: remove assertion after curl_multi_fdset()
912 913
* tags:
  - rva2: set "gain", not "peak"
914 915
* decoders:
  - wildmidi: support version 0.2.3
916 917


Avuton Olrich's avatar
Avuton Olrich committed
918
ver 0.15.11 (2010/06/14)
919 920
* tags:
  - ape: support album artist
921
* decoders:
922
  - mp4ff: support tags "album artist", "albumartist", "band"
923
  - mikmod: fix memory leak
924
  - vorbis: handle uri==NULL
925
  - ffmpeg: fix memory leak
926
  - ffmpeg: free AVFormatContext on error
927
  - ffmpeg: read more metadata
928
  - ffmpeg: fix libavformat 0.6 by using av_open_input_stream()
929
* playlist: emit IDLE_OPTIONS when resetting single mode
930
* listen: make get_remote_uid() work on BSD
931 932


Avuton Olrich's avatar
Avuton Olrich committed
933
ver 0.15.10 (2010/05/30)
934 935
* input:
  - mms: fix memory leak in error handler
936
  - mms: initialize the "eof" attribute
937 938
* decoders:
  - mad: properly calculate ID3 size without libid3tag
939 940


Avuton Olrich's avatar
Avuton Olrich committed
941
ver 0.15.9 (2010/03/21)
942 943
* decoders:
  - mad: fix crash when seeking at end of song
944
  - mpcdec: fix negative shift on fixed-point samples
945
  - mpcdec: fix replay gain formula with v8
946
* playlist: fix single+repeat in random mode
947
* player: postpone song tags during cross-fade
948 949


Avuton Olrich's avatar
Avuton Olrich committed
950
ver 0.15.8 (2010/01/17)
951 952
* input:
  - curl: allow rewinding with Icy-Metadata
953 954
* decoders:
  - ffmpeg, flac, vorbis: added more flac/vorbis MIME types
955
  - ffmpeg: enabled libavformat's file name extension detection
956
* dbUtils: return empty tag value only if no value was found
957
* decoder_thread: fix CUE track playback
958
* queue: don't repeat current song in consume mode
959 960


Avuton Olrich's avatar
Avuton Olrich committed
961
ver 0.15.7 (2009/12/27)
962 963
* archive:
  - close archive when stream is closed
964
  - iso, zip: fixed memory leak in destructor
965 966
* input:
  - file: don't fall back to parent directory
967
  - archive: fixed memory leak in error handler
968 969
* tags:
  - id3: fix ID3v1 charset conversion
970
* decoders:
971
  - eliminate jitter after seek failure
972
  - ffmpeg: don't try to force stereo
973
  - wavpack: allow fine-grained seeking
974
* mixer: explicitly close all mixers on shutdown
975
* mapper: fix memory leak when playlist_directory is not set
976
* mapper: apply filesystem_charset to playlists
977
* command: verify playlist name in the "rm" command
978
* database: return multiple tag values per song
979 980


Avuton Olrich's avatar
Avuton Olrich committed
981
ver 0.15.6 (2009/11/18)
982 983
* input:
  - lastfm: fixed variable name in GLib<2.16 code path
984
  - input/mms: require libmms 0.4
985 986
* archive:
  - zzip: require libzzip 0.13
987 988
* tags:
  - id3: allow 4 MB RIFF/AIFF tags
989 990
* decoders:
  - ffmpeg: convert metadata
991
  - ffmpeg: align the output buffer
992
  - oggflac: rewind stream after FLAC detection
993
  - flac: fixed CUE seeking range check
994
  - flac: fixed NULL pointer dereference in CUE code
995
* output_thread: check again if output is open on PAUSE
996
* update: delete ignored symlinks from database
997
* database: increased maximum line length to 32 kB
998
* sticker: added fallback for sqlite3_prepare_v2()
999 1000


Avuton Olrich's avatar
Avuton Olrich committed
1001
ver 0.15.5 (2009/10/18)
1002 1003
* input:
  - curl: don't abort if a packet has only metadata
1004
  - curl: fixed endless loop during buffering
1005 1006
* tags:
  - riff, aiff: fixed "limited range" gcc warning
1007 1008
* decoders:
  - flac: fixed two memory leaks in the CUE tag loader
1009
* decoder_thread: change the fallback decoder name to "mad"
1010
* output_thread: check again if output is open on CANCEL
1011
* update: fixed memory leak during container scan
1012 1013


Avuton Olrich's avatar
Avuton Olrich committed
1014
ver 0.15.4 (2009/10/03)
1015 1016
* decoders:
  - vorbis: revert "faster tag scanning with ov_test_callback()"
1017
  - faad: skip assertion failure on large ID3 tags
1018
  - ffmpeg: use the "artist" tag if "author" is not present
1019 1020
* output:
  - osx: fix the OS X 10.6 build
1021 1022


Avuton Olrich's avatar
Avuton Olrich committed
1023
ver 0.15.3 (2009/08/29)
1024 1025
* decoders:
  - vorbis: faster tag scanning with ov_test_callback()
1026 1027
* output:
  - fix stuttering due to uninitialized variable
1028
* update: don't re-read unchanged container files
1029 1030


Avuton Olrich's avatar
Avuton Olrich committed
1031
ver 0.15.2 (2009/08/15)
1032 1033
* tags:
  - ape: check the tag size (fixes integer underflow)
1034
  - ape: added protection against large memory allocations
1035 1036
* decoders:
  - mad: skip ID3 frames when libid3tag is disabled
1037
  - flac: parse all replaygain tags
1038
  - flac: don't allocate cuesheet twice (memleak)
1039 1040
* output:
  - shout: fixed stuck pause bug
1041
  - shout: minimize the unpause latency
1042
* update: free empty path string (memleak)
1043
* update: free temporary string in container scan (memleak)
1044
* directory: free empty directories after removing them (memleak)
1045 1046


Avuton Olrich's avatar
Avuton Olrich committed
1047
ver 0.15.1 (2009/07/15)
Max Kellermann's avatar
Max Kellermann committed
1048
* decoders:
1049
  - flac: fix assertion failure in tag_free() call
1050 1051
* output:
  - httpd: include sys/types.h (fixes Mac OS X)
1052 1053
* commands:
  - don't resume playback when stopping during pause
1054
* database: fixed NULL pointer dereference after charset change
1055
* log: fix double free() bug during shutdown
1056 1057


Avuton Olrich's avatar
Avuton Olrich committed
1058
ver 0.15 (2009/06/23)
Max Kellermann's avatar
Max Kellermann committed
1059 1060
* input:
  - parse Icy-Metadata
1061
  - added support for the MMS protocol
1062
  - hide HTTP password in playlist
1063
  - lastfm: new input plugin for last.fm radio (experimental and incomplete!)
1064
  - curl: moved proxy settings to "input" block
Max Kellermann's avatar
Max Kellermann committed
1065 1066
* tags:
  - support the "album artist" tag
1067
  - support MusicBrainz tags
Max Kellermann's avatar
Max Kellermann committed
1068
  - parse RVA2 tags in mp3 files
1069 1070 1071
  - 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
1072 1073
* decoders:
  - audiofile: streaming support added
1074
  - audiofile: added 24 bit support
Max Kellermann's avatar
Max Kellermann committed
1075 1076
  - modplug: another MOD plugin, based on libmodplug
  - mikmod disabled by default, due to severe security issues in libmikmod
1077
  - sidplay: new decoder plugin for C64 SID (using libsidplay2)
1078 1079
  - fluidsynth: new decoder plugin for MIDI files (using libfluidsynth,
    experimental due to shortcomings in libfluidsynth)
1080
  - wildmidi: another decoder plugin for MIDI files (using libwildmidi)
Max Kellermann's avatar
Max Kellermann committed
1081
  - flac: parse stream tags
1082
  - mpcdec: support the new libmpcdec SV8 API
1083
  - added configuration option to disable decoder plugins
1084 1085
  - flac: support embedded cuesheets
  - ffmpeg: updated list of supported formats
Max Kellermann's avatar
Max Kellermann committed
1086
* audio outputs:
1087
  - added option to disable audio outputs by default
1088
  - wait 10 seconds before reopening after play failure
Max Kellermann's avatar
Max Kellermann committed
1089
  - shout: enlarged buffer size to 32 kB
1090
  - null: allow disabling synchronization
1091
  - mvp: fall back to stereo
1092
  - mvp: fall back to 16 bit audio samples
1093
  - mvp: check for reopen errors
1094
  - mvp: fixed default device detection
1095
  - pipe: new audio output plugin which runs a command
1096
  - alsa: better period_time default value for high sample rates
1097
  - solaris: new audio output plugin for Solaris /dev/audio
1098 1099
  - httpd: new audio output plugin for web based streaming, similar to icecast
     but built in.
Max Kellermann's avatar
Max Kellermann committed
1100
* commands:
1101
  - "playlistinfo" and "move" supports a range now
Max Kellermann's avatar
Max Kellermann committed
1102
  - added "sticker database", command "sticker", which allows clients
1103 1104 1105 1106
     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.
1107 1108 1109
* mixers:
  - rewritten mixer code to support multiple mixers
  - new pulseaudio mixer
1110 1111
  - alsa: new mixer_index option supports choosing between multiple
    identically-named controls on a device.
1112 1113 1114 1115
* Add audio archive extraction support:
  - bzip2
  - iso9660
  - zip
1116
* the option "error_file" was removed, all messages are logged into
1117
   "log_file"
Max Kellermann's avatar
Max Kellermann committed
1118
* support logging to syslog
1119
* fall back to XDG music directory if no music_directory is configured
1120
* failure to read the state file is non-fatal
1121
* --create-db starts the MPD daemon instead of exiting
1122
* playlist_directory and music_directory are optional
1123
* playlist: recalculate the queued song after random is toggled
1124
* playlist: don't unpause on delete
1125
* pause when all audio outputs fail to play
1126
* daemon: ignore "user" setting if already running as that user
1127
* listen: fix broken client IP addresses in log
1128
* listen: bind failure on secondary address is non-fatal
1129 1130
* 24/32 bit audio support
* print available protocols in --version
1131
* fill buffer after seeking
1132
* choose the fallback resampler at runtime
1133 1134 1135
* steps taken towards win32 compatibility
* require glib 2.6 or greater
* built-in documentation using doxygen and docbook
1136 1137


Avuton Olrich's avatar
Avuton Olrich committed
1138
ver 0.14.2 (2009/02/13)
1139 1140
* configure.ac:
  - define HAVE_FFMPEG after all checks
1141 1142
* decoders:
  - ffmpeg: added support for the tags comment, genre, year
1143
  - ffmpeg: don't warn of empty packet output
1144
  - ffmpeg: check if the time stamp is valid
1145
  - ffmpeg: fixed seek integer overflow
1146 1147
  - ffmpeg: enable WAV streaming
  - ffmpeg: added TTA support
1148
  - wavpack: pass NULL if the .wvc file fails to open
1149
  - mikmod: call MikMod_Exit() only in the finish() method
1150
  - aac: fix stream metadata
1151 1152
* audio outputs:
  - jack: allocate ring buffers before connecting
1153
  - jack: clear "shutdown" flag on reconnect
1154
  - jack: reduced sleep time to 1ms
1155
  - shout: fixed memory leak in the mp3 encoder
1156
  - shout: switch to blocking mode
1157
  - shout: use libshout's synchronization
1158
  - shout: don't postpone metadata
1159
  - shout: clear buffer before calling the encoder
1160
* mapper: remove trailing slashes from music_directory
1161
* player: set player error when output device fails
1162
* update: recursively purge deleted directories
1163
* update: free deleted subdirectories
1164

Avuton Olrich's avatar
Avuton Olrich committed
1165
ver 0.14.1 (2009/01/17)
1166 1167 1168
* decoders:
  - mp4: support the writer/composer tag
  - id3: strip leading and trailing whitespace from ID3 tags
1169
  - oggvorbis: fix tremor support
1170
  - oggvorbis: disable seeking on remote files
1171 1172 1173 1174 1175 1176 1177 1178
* 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
1179
  - fix assertion failure on "connection refused"
1180
  - fix assertion failure with empty HTTP responses
1181
* corrected the sample calculation in the fallback resampler
1182 1183 1184 1185 1186
* 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
1187 1188 1189 1190 1191 1192 1193
* 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
1194
ver 0.14 (2008/12/25)
1195
* audio outputs:
1196
  - wait 10 seconds before reopening a failed device
1197 1198 1199 1200
  - fifo: new plugin
  - null: new plugin
  - shout: block while trying to connect instead of failing
  - shout: new timeout parameter
1201 1202
  - shout: support mp3 encoding and the shoutcast protocol
  - shout: send silence during pause, so clients don't get disconnected
1203
* decoders:
1204
  - ffmpeg: new plugin
1205
  - wavpack: new plugin
1206
  - aac: stream support added
1207
  - mod: disabled by default due to critical bugs in all libmikmod versions
1208 1209
* commands:
  - "addid" takes optional second argument to specify position
1210
  - "idle" notifies the client when a notable change occurs
1211
* Zeroconf support using Bonjour
1212
* New zeroconf_enabled option so that Zeroconf support can be disabled
1213 1214
* 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
1215
* Support for reading ReplayGain from LAME tags on MP3s
1216 1217 1218 1219 1220 1221 1222 1223
* 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
1224 1225
* symbolic links in the music directory can be disabled; the default
  is to ignore symlinks pointing outside the music directory
1226

1227
ver 0.13.0 (2007/5/28)
1228 1229
* New JACK audio output
* Support for "file" as an alternative to "filename" in search, find, and list
Avuton Olrich's avatar
Avuton Olrich committed
1230
* FLAC 1.1.3 API support
1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242
* 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
1243
* New tagtypes command for retrieving a list of available tag types
1244
* Fix a bug where no ACK was returned if loading a playlist failed
1245
* Fix a bug where db_update in stats would be 0 after initial database creation
1246
* New count command for getting stats on found songs (similar to "find")
1247 1248
* New playlistmove command for moving songs in stored playlists
* New playlistdelete command for deleting songs from stored playlists
1249
* New rename command for renaming stored playlists
1250
* Increased default buffer_before_play from 0% to 10% to prevent skipping
1251 1252
* Lots of bug fixes, cleaned up code, and performance improvements

1253 1254 1255
ver 0.12.2 (2007/3/20)
* Fix a bug where clients could cause MPD to segfault

1256
ver 0.12.1 (2006/10/10)
1257 1258 1259 1260 1261 1262
* 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

1263
ver 0.12.0 (2006/9/22)
1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286
* 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
1287
* Can now specify any supported metadata type or "any" in search, find, and list
1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300
* 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

1301
ver 0.11.5 (2004/11/1)
1302 1303
1) New id3v1_encoding config option to configure the id3v1 tag encoding (patch
from dottedmag)
1304 1305 1306
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
1307 1308
5) Fix a bug when fetching metadata from streams that may cause certain
weirdnesses
1309 1310
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
1311 1312
8) Fix a bug in forgetting to remove leading ' ' in content-type for http
streams
1313 1314
9) Check for ice-name in http headers
10) Be sure the strip all '\n' chars in tags
1315 1316
11) Set $HOME env variable when setuid'ing, this should fix the /root/.mcop
errors triggered by arts/libao
1317

1318 1319 1320 1321
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
1322 1323 1324 1325
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
1326 1327 1328 1329 1330 1331 1332 1333
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
1334
6) Updated mpdconf.example from sbh/avuton
1335 1336
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
1337

1338
ver 0.11.2 (2004/7/5) 
1339 1340
1) Work around in computing total time for mp3's whose first valid mpeg frame is
not layer III
1341 1342 1343 1344 1345
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)

1346 1347 1348 1349 1350 1351
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
1352 1353
6) Fix addPathToDB() so updating on a specific path doesn't exist correctly adds
the parent directories to the DB
1354

1355
ver 0.11.0 (2004/6/18)
1356 1357 1358
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)
1359 1360
4) audio_output_format option that allows for all audio output to be converted
to a format compatible with any sound card
1361 1362
5) Own routines for to always support UTF-8 <-> ISO-8859-1 conversion
6) Added "Id" and "Pos" metadata for songs in playlist
1363 1364
7) Added commands: plchanges, currentsong, playid, seekid, playlistid, moveid,
swapid, deleteid
1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376
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
1377 1378
20) Default port is now 6600
21) Lots of other cleanups and Bugfixes
1379

1380 1381 1382 1383
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
1384 1385
4) Ingore CRC stuff in mp3's since some encoders did not compute the CRC
correctly
1386 1387
5) Fix a segfault in processing faulty mp4 metadata

1388 1389 1390
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
1391 1392 1393 1394
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
1395
5) add --disable-alsa for disabling alsa mixer support
Warren Dukes's avatar
Warren Dukes committed
1396
6) Use select() for a portable usleep()
1397
7) For alsa mixer, default to "Master' element, not first element
1398

Warren Dukes's avatar
Warren Dukes committed
1399 1400
ver 0.10.2 (2004/3/25)
1) Add suport for AAC
1401
2) Substitute '\n' with ' ' in tag info
Warren Dukes's avatar
Warren Dukes committed
1402 1403 1404 1405 1406
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
1407
8) Fix a bug where alsa mixer wasn't detecting volume changes
1408 1409
9) For alsa and software mixer, show volume to be the same as it was set (even
if its not the exact volume)
1410
10) Report bitrate for wave files
1411
11) Compute song length of CBR mp3's more accurately
Warren Dukes's avatar
Warren Dukes committed
1412

1413
ver 0.10.1 (2004/3/7)
1414
1) Check to see if we need to add "-lm" when linking mpd
1415 1416
2) Fix issues with skipping bad frames in an mp3 (this way we get the correct
samplerate and such)
1417
3) Fix crossfading bug with ogg's
1418
4) Updated libmad and libid3tag included w/ source to 0.15.1b
1419

1420
ver 0.10.0 (2004/3/3)
1421 1422 1423 1424 1425 1426 1427 1428 1429 1430
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
1431 1432 1433 1434 1435
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
1436 1437
16) Fix a bug, where one process may segfault, and cause more processes to spawn
w/o killing ones that lost their parent.
1438
17) Fix a bug when the OSS device was unable to fetch the current volume,
1439 1440
it would close the device (when it maybe previously closed by the exact same
code)
1441 1442
18) command.c cleanup by mackstann
19) directory.c and command.c cleanup by tw-nym
1443

Warren Dukes's avatar
Warren Dukes committed
1444 1445
ver 0.9.4 (2004/1/21)
1) Fix a bug where updated tag info wasn't being detected
1446 1447
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
1448
3) Make audio write size configurable via "audio_write_size" config option
1449 1450
4) Tweak output buffer size for connections by detecting the kernel output
buffer size.
Warren Dukes's avatar
Warren Dukes committed
1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465

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
1466 1467
3) Add mixer_control options to configure which mixer control/device mpd
controls
Warren Dukes's avatar
Warren Dukes committed
1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501
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)
1502 1503
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
1504 1505 1506 1507 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 1542 1543 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

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