NEWS 88.7 KB
Newer Older
1
ver 0.23.11 (not yet released)
2
* macOS: fix build failure "no archive members specified"
3 4
* Android/Windows
  - update OpenSSL to 3.0.7
5

Max Kellermann's avatar
Max Kellermann committed
6
ver 0.23.10 (2022/10/14)
7 8
* storage
  - curl: fix file time stamps
9 10
* decoder
  - ffmpeg: fix libfmt 9 compiler warning
11 12
* encoder
  - flac: fix failure when libFLAC is built without Ogg support
13 14
* output
  - alsa: fix crash bug
15 16
* Windows
  - log to stdout by default, don't require "log_file" setting
17

Max Kellermann's avatar
Max Kellermann committed
18
ver 0.23.9 (2022/08/18)
19 20
* input
  - cdio_paranoia: add options "mode" and "skip"
21 22
* decoder
  - ffmpeg: support FFmpeg 5.1
23 24
* filter
  - replay gain: fix delayed volume display with handler=mixer
guihkx's avatar
guihkx committed
25 26
* output
  - pipewire: set app icon
27
* fix bogus volume levels with multiple partitions
28
* improve iconv detection
29
* macOS: fix macOS 10 build problem (0.23.8 regression)
30 31
* Android
  - load mpd.conf from app data directory
32

Max Kellermann's avatar
Max Kellermann committed
33
ver 0.23.8 (2022/07/09)
34 35
* storage
  - curl: fix crash if web server does not understand WebDAV
36 37
* input
  - cdio_paranoia: fix crash if no drive was found
38
  - cdio_paranoia: faster cancellation
39
  - cdio_paranoia: don't scan for replay gain tags
40
  - pipewire: fix playback of very short tracks
41
  - pipewire: drop all buffers before manual song change
42
  - pipewire: fix stuttering after manual song change
43 44
  - snapcast: fix busy loop while paused
  - snapcast: fix stuttering after resuming playback
45 46
* mixer
  - better error messages
47
  - alsa: fix setting volume before playback starts
48
  - pipewire: fix crash bug
49
  - pipewire: fix volume change events with PipeWire 0.3.53
50
  - pipewire: don't force initial volume=100%
Max Kellermann's avatar
Max Kellermann committed
51
* support libfmt 9
52

Max Kellermann's avatar
Max Kellermann committed
53
ver 0.23.7 (2022/05/09)
54 55
* database
  - upnp: support pupnp 1.14
56
* decoder
57
  - ffmpeg: fix HLS seeking
58
  - opus: fix missing song length on high-latency files
59 60
* output
  - shout: require at least libshout 2.4.0
61
* mixer
62
  - pipewire: fix volume restore
63
  - software: update volume of disabled outputs
64
* support libiconv
65

Max Kellermann's avatar
Max Kellermann committed
66
ver 0.23.6 (2022/03/14)
67 68
* protocol
  - support filename "cover.webp" for "albumart" command
69
  - support "readcomments" and "readpicture" on CUE tracks
70
* decoder
71
  - ffmpeg: fix end-of-file check (update stuck at empty files)
72
  - opus: fix "readpicture" on Opus files
73 74
* output
  - pipewire: fix crash bug if setting volume before playback starts
75
  - wasapi: fix resume after pause
76

Max Kellermann's avatar
Max Kellermann committed
77
ver 0.23.5 (2021/12/01)
78
* protocol
79
  - support relative offsets for "searchadd"
80
  - fix "searchaddpl" bug (bogus error "Bad position")
81 82
* database
  - upnp: fix crash bug
83 84
* tags
  - fix MixRamp support
85
* migrate to PCRE2
86
* GCC 12 build fixes
87

Max Kellermann's avatar
Max Kellermann committed
88
ver 0.23.4 (2021/11/11)
89 90
* protocol
  - add optional position parameter to "searchaddpl"
91 92
* decoder
  - ffmpeg: support libavcodec 59
93 94
* output
  - alsa: add option "thesycon_dsd_workaround" to work around device bug
Max Kellermann's avatar
Max Kellermann committed
95
* fix crash on debug builds if startup fails
96 97 98
* systemd
  - remove "RuntimeDirectory" directive because it caused problems
  - ignore the "pid_file" setting if started as systemd service
99 100
* Windows
  - enable the "openmpt" decoder plugin
101

Max Kellermann's avatar
Max Kellermann committed
102
ver 0.23.3 (2021/10/31)
103
* protocol
104
  - add optional position parameter to "add" and "playlistadd"
105
  - allow range in "playlistdelete"
106
* database
107
  - fix scanning files with question mark in the name
108
  - inotify: fix use-after-free bug
109 110
* output
  - alsa: add option "stop_dsd_silence" to work around DSD DAC noise
111
* macOS: fix libfmt related build failure
112
* systemd: add "RuntimeDirectory" directive
113

Max Kellermann's avatar
Max Kellermann committed
114
ver 0.23.2 (2021/10/22)
115 116
* protocol
  - fix "albumart" timeout bug
117 118
* input
  - nfs: fix playback bug
119 120
* output
  - pipewire: send artist and title to PipeWire
121
  - pipewire: DSD support
122 123
* neighbor
  - mention failed plugin name in error message
124 125
* player
  - fix cross-fade regression
126
* fix crash with libfmt versions older than 7
127

Max Kellermann's avatar
Max Kellermann committed
128
ver 0.23.1 (2021/10/19)
129 130
* protocol
  - use decimal notation instead of scientific notation
131
  - "load" supports relative positions
132
* output
133
  - emit "mixer" idle event when replay gain changes volume
134
  - pipewire: emit "mixer" idle events on external volume change
135
  - pipewire: attempt to change the graph sample rate
136
  - snapcast: fix time stamp bug which caused "Failed to get chunk"
137
* fix libfmt linker problems
138
* fix broken password authentication
139

Max Kellermann's avatar
Max Kellermann committed
140
ver 0.23 (2021/10/14)
141 142
* protocol
  - new command "getvol"
143
  - show the audio format in "playlistinfo"
144
  - support "listfiles" with arbitrary storage plugins
145
  - support relative positions in "addid"
146
  - fix relative positions in "move" and "moveid"
147
  - add "position" parameter to "findadd" and "searchadd"
148
  - add position parameter to "load"
149 150
* database
  - proxy: require MPD 0.20 or later
151
  - proxy: require libmpdclient 2.11 or later
152
  - proxy: split search into chunks to avoid exceeding the output buffer
153
  - simple: add option to hide CUE target songs
154
  - upnp: support libnpupnp instead of libupnp
155 156
* archive
  - zzip, iso9660: ignore file names which are invalid UTF-8
157
* decoder
Max Kellermann's avatar
Max Kellermann committed
158
  - openmpt: new plugin
159
  - wavpack: fix WVC file support
160 161
* player
  - do not cross-fade songs shorter than 20 seconds
162
* output
163
  - oss: support DSD over PCM
164
  - pipewire: new plugin
165
  - snapcast: new plugin
166 167
* tags
  - new tags "ComposerSort", "Ensemble", "Movement", "MovementNumber", and "Location"
168
* split permission "player" from "control"
169
* add option "host_permissions"
170
* new build-time dependency: libfmt
171

Max Kellermann's avatar
Max Kellermann committed
172
ver 0.22.11 (2021/08/24)
173 174
* protocol
  - fix "albumart" crash
175 176
* filter
  - ffmpeg: pass "channel_layout" instead of "channels" to buffersrc
177
  - ffmpeg: fix "av_buffersink_get_frame() failed: Resource temporarily unavailable"
178
  - ffmpeg: support double-precision samples (by converting to single precision)
179 180
* Android
  - build with NDK r23
181
  - playlist_directory defaults to "/sdcard/Android/data/org.musicpd/files/playlists"
182

Max Kellermann's avatar
Max Kellermann committed
183
ver 0.22.10 (2021/08/06)
184 185
* protocol
  - support "albumart" for virtual tracks in CUE sheets
186 187
* database
  - simple: fix crash bug
188
  - simple: fix absolute paths in CUE "as_directory" entries
189
  - simple: prune CUE entries from database for non-existent songs
190 191
* input
  - curl: fix crash bug after stream with Icy metadata was closed by peer
192
  - tidal: remove defunct unmaintained plugin
193 194
* tags
  - fix crash caused by bug in TagBuilder and a few potential reference leaks
195
* output
196
  - httpd: fix missing tag after seeking into a new song
197
  - oss: fix channel order of multi-channel files
198 199
* mixer
  - alsa: fix yet more rounding errors
200

Max Kellermann's avatar
Max Kellermann committed
201
ver 0.22.9 (2021/06/23)
202 203
* database
  - simple: load all .mpdignore files of all parent directories
204 205
* tags
  - fix "readcomments" and "readpicture" on remote files with ID3 tags
206
* decoder
207
  - ffmpeg: support the tags "sort_album", "album-sort", "artist-sort"
208
  - ffmpeg: fix build failure with FFmpeg 3.4
209 210
* Android
  - fix auto-start on boot in Android 8 or later
211 212
* Windows
  - fix build failure with SQLite
213

Max Kellermann's avatar
Max Kellermann committed
214
ver 0.22.8 (2021/05/22)
215
* fix crash bug in "albumart" command (0.22.7 regression)
216

Max Kellermann's avatar
Max Kellermann committed
217
ver 0.22.7 (2021/05/19)
218 219
* protocol
  - don't use glibc extension to parse time stamps
220
  - optimize the "albumart" command
221 222
* input
  - curl: send user/password in the first request, save one roundtrip
223 224
* decoder
  - ffmpeg: fix build problem with FFmpeg 3.4
225
  - gme: support RSN files
226 227
* storage
  - curl: don't use glibc extension
228 229
* database
  - simple: fix database corruption bug
230
* output
231
  - fix crash when pausing with multiple partitions
232
  - jack: enable on Windows
233
  - httpd: send header "Access-Control-Allow-Origin: *"
234
  - wasapi: add algorithm for finding usable audio format
235
  - wasapi: use default device only if none was configured
236
  - wasapi: add DoP support
237

Max Kellermann's avatar
Max Kellermann committed
238
ver 0.22.6 (2021/02/16)
239
* fix missing tags on songs in queue
240

Max Kellermann's avatar
Max Kellermann committed
241
ver 0.22.5 (2021/02/15)
242 243
* protocol
  - error for malformed ranges instead of ignoring silently
244
  - better error message for open-ended range with "move"
245 246
* database
  - simple: fix missing CUE sheet metadata in "addid" command
247 248
* tags
  - id: translate TPE3 to Conductor, not Performer
249 250
* archive
  - iso9660: another fix for unaligned reads
251 252
* output
  - httpd: error handling on Windows improved
253
  - pulse: fix deadlock with "always_on"
254 255
* Windows:
  - enable https:// support (via Schannel)
256 257
* Android
  - work around "Permission denied" on mpd.conf
258

Max Kellermann's avatar
Max Kellermann committed
259
ver 0.22.4 (2021/01/21)
260
* protocol
261
  - add command "binarylimit" to allow larger chunk sizes
262
  - fix "readpicture" on 32 bit machines
263
  - show duration and tags of songs in virtual playlist (CUE) folders
264 265
* storage
  - curl: fix several WebDAV protocol bugs
266 267
* decoder
  - dsdiff: apply padding to odd-sized chunks
268 269
* filter
  - ffmpeg: detect the output sample format
270 271
* output
  - moveoutput: fix always_on and tag lost on move
272 273
* Android
  - enable https:// support (via OpenSSL)
274

Max Kellermann's avatar
Max Kellermann committed
275
ver 0.22.3 (2020/11/06)
276 277
* playlist
  - add option "as_directory", making CUE file expansion optional
278 279
* storage
  - curl: fix crash bug
280 281
* filter
  - fix garbage after "Audio format not supported by filter" message
282
  - ffmpeg: support planar output
283
  - ffmpeg: support sample formats other than 16 bit
284

Max Kellermann's avatar
Max Kellermann committed
285
ver 0.22.2 (2020/10/28)
286
* database
287 288
  - simple: purge songs and virtual directories for unavailable plugins
    on update
289 290
* input
  - qobuz/tidal: fix protocol errors due to newlines in error messages
291
  - smbclient: disable by default due to libsmbclient crash bug
292 293
* playlist
  - soundcloud: fix protocol errors due to newlines in error messages
294
* state_file: save on shutdown
295

Max Kellermann's avatar
Max Kellermann committed
296
ver 0.22.1 (2020/10/17)
297 298
* decoder
  - opus: apply the OpusHead output gain even if there is no EBU R128 tag
299
  - opus: fix track/album ReplayGain fallback
300 301
* output
  - alsa: don't deadlock when the ALSA driver is buggy
302
  - jack, pulse: reduce the delay when stopping or pausing playback
303
* playlist
304
  - cue: fix two crash bugs
305
* state_file: fix the state_file_interval setting
306

Max Kellermann's avatar
Max Kellermann committed
307
ver 0.22 (2020/09/23)
308 309 310
* protocol
  - "findadd"/"searchadd"/"searchaddpl" support the "sort" and
    "window" parameters
311
  - add command "readpicture" to download embedded pictures
312
  - command "moveoutput" moves an output between partitions
313
  - command "delpartition" deletes a partition
314
  - show partition name in "status" response
315
* tags
smutbert's avatar
smutbert committed
316
  - new tags "Grouping" (for ID3 "TIT1"), "Work" and "Conductor"
317
* input
318
  - curl: support "charset" parameter in URI fragment
319
  - ffmpeg: allow partial reads
320
  - io_uring: new plugin for local files on Linux (using liburing)
321
  - smbclient: close unused SMB/CIFS connections
322 323
* database
  - upnp: drop support for libupnp versions older than 1.8
324 325
* playlist
  - cue: integrate contents in database
326
* decoder
327
  - ffmpeg: support RTSP
328
  - mad: remove option "gapless", always do gapless
329
  - sidplay: add option "default_genre"
330
  - sidplay: map SID name field to "Album" tag
331
  - sidplay: add support for new song length format with libsidplayfp 2.0
332
  - vorbis, opus: improve seeking accuracy
333 334
* playlist
  - flac: support reading CUE sheets from remote FLAC files
335
* filter
336
  - ffmpeg: new plugin based on FFmpeg's libavfilter library
337
  - hdcd: new plugin based on FFmpeg's "af_hdcd" for HDCD playback
338
  - volume: convert S16 to S24 to preserve quality and reduce dithering noise
339
  - dsd: add integer-only DSD to PCM converter
340 341
* output
  - jack: add option "auto_destination_ports"
342
  - jack: report error details
343
  - pulse: add option "media_role"
344
  - solaris: support S8 and S32
345
* lower the real-time priority from 50 to 40
Max Kellermann's avatar
Max Kellermann committed
346
* switch to C++17
347
  - GCC 8 or clang 5 (or newer) recommended
348

Max Kellermann's avatar
Max Kellermann committed
349
ver 0.21.26 (2020/09/21)
350 351
* database
  - inotify: obey ".mpdignore" files
352
* output
353
  - osx: fix crash bug
354
  - sles: support floating point samples
355
* archive
356 357
  - bzip2: fix crash on corrupt bzip2 file
  - bzip2: flush output at end of input file
358
  - iso9660: fix unaligned reads
359
  - iso9660: support seeking
360
  - zzip: fix crash on corrupt ZIP file
361
* decoder
362
  - ffmpeg: remove "rtsp://" from the list of supported protocols
363
  - ffmpeg: add "hls+http://" to the list of supported protocols
364
  - opus: support the gain value from the Opus header
365
  - sndfile: fix lost samples at end of file
366
* fix "single" mode bug after resuming playback
367
* the default log_level is "default", not "info"
368

Max Kellermann's avatar
Max Kellermann committed
369
ver 0.21.25 (2020/07/06)
370 371
* protocol:
  - fix crash when using "rangeid" while playing
372 373
* database
  - simple: automatically scan new mounts
374
  - upnp: fix compatibility with Plex DLNA
375
* storage
376
  - fix disappearing mounts after mounting twice
377
  - udisks: fix reading ".mpdignore"
378
* input
379
  - file: detect premature end of file
380
  - smbclient: don't send credentials to MPD clients
381
* decoder
382
  - opus: apply pre-skip and end trimming
383
  - opus: fix memory leak
384 385
  - opus: fix crash bug
  - vorbis: fix crash bug
386 387
* output
  - osx: improve sample rate selection
388
  - osx: fix noise while stopping
389 390
* neighbor
  - upnp: fix crash during shutdown
391 392
* Windows/Android:
  - fix Boost detection after breaking change in Meson 0.54
393

Max Kellermann's avatar
Max Kellermann committed
394
ver 0.21.24 (2020/06/10)
395 396
* protocol
  - "tagtypes" requires no permissions
397 398
* database
  - simple: fix crash when mounting twice
399
* decoder
400
  - modplug: fix Windows build failure
401
  - wildmidi: attempt to detect WildMidi using pkg-config
402
  - wildmidi: fix Windows build failure
403 404
* player
  - don't restart current song if seeking beyond end
405
* Android
406
  - enable the decoder plugins GME, ModPlug and WildMidi
407 408
  - fix build failure with Android NDK r21
* Windows
409
  - fix stream playback
410
  - enable the decoder plugins GME, ModPlug and WildMidi
411
  - work around Meson bug breaking the Windows build with GCC 10
412
* fix unit test failure
413

Max Kellermann's avatar
Max Kellermann committed
414
ver 0.21.23 (2020/04/23)
415 416
* protocol
  - add tag fallback for AlbumSort
417 418
* storage
  - curl: fix corrupt "href" values in the presence of XML entities
419
  - curl: unescape "href" values
420 421
* input
  - nfs: fix crash bug
422
  - nfs: fix freeze bug on reconnect
423 424
* decoder
  - gme: adapt to API change in the upcoming version 0.7.0
425 426
* output
  - alsa: implement channel mapping for 5.0 and 7.0
427 428
* player
  - drain outputs at end of song in "single" mode
429 430
* Windows
  - fix case insensitive search
431

Max Kellermann's avatar
Max Kellermann committed
432
ver 0.21.22 (2020/04/02)
433
* database
434
  - simple: optimize startup
435 436
* input
  - curl: fix streaming errors on Android
437 438
* playlist
  - rss: support MIME type application/xml
439 440
* mixer
  - android: new mixer plugin for "sles" output
441 442
* Android
  - TV support
443 444
* Windows
  - fix time zone offset check
445
* fix build failures with uClibc-ng
446

Max Kellermann's avatar
Max Kellermann committed
447
ver 0.21.21 (2020/03/19)
448 449
* configuration
  - fix bug in "metadata_to_use" setting
450
* playlist
451
  - asx, xspf: fix corrupt tags in the presence of XML entities
452 453
* archive
  - iso9660: skip empty file names to work around libcdio bug
454 455
* decoder
  - gme: ignore empty tags
456 457
* output
  - solaris: port to NetBSD
458
* raise default "max_connections" value to 100
459

Max Kellermann's avatar
Max Kellermann committed
460
ver 0.21.20 (2020/02/16)
461
* decoder
462
  - audiofile, ffmpeg, sndfile: handle MIME type "audio/wav"
463
  - ffmpeg: fix playback of AIFF and TTA
464
  - vorbis, opus: fix seeking in small files
465
* fix backwards seeking on ARM (and other non-x86 CPUs)
466

Max Kellermann's avatar
Max Kellermann committed
467
ver 0.21.19 (2020/01/17)
468 469
* configuration
  - allow overriding top-level settings in includes
470 471
* output
  - pulse: obey Pulse's maximum sample rate (fixes DSD128 playback)
472
* fix build failure with clang 10
473
* fix build failure with Android NDK r20
474

Max Kellermann's avatar
Max Kellermann committed
475
ver 0.21.18 (2019/12/24)
476 477
* protocol
  - work around Mac OS X bug in the ISO 8601 parser
478 479
* output
  - alsa: fix hang bug with ALSA "null" outputs
480 481
* storage
  - curl: fix crash bug
482
* drop support for CURL versions older than 7.32.0
483
* reduce unnecessary CPU wakeups
484

Max Kellermann's avatar
Max Kellermann committed
485
ver 0.21.17 (2019/12/16)
486
* protocol
487 488
  - relax the ISO 8601 parser: allow omitting field separators, the
    time of day and the "Z" suffix
489 490
* archive
  - zzip: improve error reporting
491 492
* outputs
  - jack: mark ports as terminal
493
  - shout: declare metadata as UTF-8
494
* fix build failure with -Ddatabase=false
495

Max Kellermann's avatar
Max Kellermann committed
496
ver 0.21.16 (2019/10/16)
497 498
* queue
  - fix relative destination offset when moving a range
499 500
* storage
  - curl: request the "resourcetype" property to fix database update
501
  - curl: URL-encode more paths
502
  - curl: follow redirects for collections without trailing slash
503 504
* update
  - fix crash when music_directory is not a directory
505
* fix build with iconv() instead of ICU
506

Max Kellermann's avatar
Max Kellermann committed
507
ver 0.21.15 (2019/09/25)
508 509
* decoder
  - dsdiff, dsf: fix displayed bit rate
510
  - mpcdec: fix bogus ReplayGain values
511 512
* output
  - solaris: fix build with glibc 2.30
513

Max Kellermann's avatar
Max Kellermann committed
514
ver 0.21.14 (2019/08/21)
515 516
* decoder
  - sidplay: show track durations in database
517
  - sidplay: convert tag values from Windows-1252 charset
518
  - sidplay: strip text from "Date" tag
519 520
* player
  - fix crash after song change
521
  - fix seek position after restarting the decoder
522 523
* protocol
  - include command name in error responses
524

Max Kellermann's avatar
Max Kellermann committed
525
ver 0.21.13 (2019/08/06)
526 527
* input
  - cdio_paranoia: require libcdio-paranoia 10.2+0.93+1
528 529
* decoder
  - mad: fix crackling sound (0.21.12 regression)
530 531
* output
  - jack: improved Windows compatibility
532

Max Kellermann's avatar
Max Kellermann committed
533
ver 0.21.12 (2019/08/03)
534
* decoder
535
  - mad: update bit rate after seeking
536
  - mad: fix several bugs preventing the plugin from decoding the last frame
537
  - opus: ignore case in replay gain tag names
538
  - opus, vorbis: decode the "end of stream" packet
539 540
* output
  - jack: fix mono-to-stereo conversion
541 542
* player
  - don't restart unseekable song after failed seek attempt
543 544
* Windows
  - support backslash in relative URIs loaded from playlists
545

Max Kellermann's avatar
Max Kellermann committed
546
ver 0.21.11 (2019/07/03)
547 548
* input
  - tidal: deprecated because Tidal has changed the protocol
549 550
* decoder
  - wildmidi: log error if library initialization fails
551
* output
552
  - alsa: fix busy loop while draining
553
  - alsa: fix missing drain call
554
  - alsa: improve xrun-avoiding silence generator
555
  - alsa: log when generating silence due to slow decoder
556
  - alsa, osx: fix distortions with DSD_U32 and DoP on 32 bit CPUs
557 558
* protocol
  - fix "list" with multiple "group" levels
559

Max Kellermann's avatar
Max Kellermann committed
560
ver 0.21.10 (2019/06/05)
561 562
* decoder
  - opus: fix duplicate tags
563 564
* output
  - httpd: reject some well-known URIs
565
* fix crash bug (0.21.9 regression)
566

Max Kellermann's avatar
Max Kellermann committed
567
ver 0.21.9 (2019/05/20)
568 569
* input
  - buffer: fix deadlock bug
570 571
* Android
  - fix crash on ARMv7
572
  - request storage permission on Android 6+
573
* fix spurious "single" mode bug
574

Max Kellermann's avatar
Max Kellermann committed
575
ver 0.21.8 (2019/04/23)
576 577
* input
  - smbclient: download to buffer instead of throttling transfer
578 579
* output
  - httpd: add missing mutex lock
580
  - httpd: fix use-after-free bug
581 582
* playlist
  - soundcloud: fix "Unsupported URI scheme" (0.21.6 regression)
583
* fix Bonjour bug
584
* fix build failure with GCC 9
585
* fix build failure with -Ddatabase=false
586
* systemd: add user socket unit
587
* doc: "list file" is deprecated
588

Max Kellermann's avatar
Max Kellermann committed
589
ver 0.21.7 (2019/04/03)
590 591
* input
  - qobuz/tidal: scan tags when loading a playlist
592
* require Meson 0.49.0 for native libgcrypt-config support
593
* fix build failure with -Dlocal_socket=false
François Revol's avatar
François Revol committed
594 595
* Haiku
  - fix build
596
  - add version info
597

Max Kellermann's avatar
Max Kellermann committed
598
ver 0.21.6 (2019/03/17)
599 600
* protocol
  - allow loading playlists specified as absolute filesystem paths
601
  - fix negated filter expressions with multiple tag values
602
  - fix "list" with filter expression
603
  - omit empty playlist names in "listplaylists"
604 605
* input
  - cdio_paranoia: fix build failure due to missing #include
606 607
* decoder
  - opus: fix replay gain when there are no other tags
608
  - opus: fix seeking to beginning of song
609
  - vorbis: fix Tremor conflict resulting in crash
610 611
* output
  - pulse: work around error with unusual channel count
612
  - osx: fix build failure
613 614
* playlist
  - flac: fix use-after-free bug
615
* support abstract sockets on Linux
616 617
* Windows
  - remove the unused libwinpthread-1.dll dependency
618 619
* Android
  - enable SLES power saving mode
620

Max Kellermann's avatar
Max Kellermann committed
621
ver 0.21.5 (2019/02/22)
622 623
* protocol
  - fix deadlock in "albumart" command
624
  - fix "tagtypes disable" command
625 626
* database
  - simple: fix assertion failure
627
  - fix assertion failures with mount points
628 629
* storage
  - udisks: fix "AlreadyMounted" error
630
  - udisks: use relative path from mount URI
631
  - fix memory leak
632 633
* input
  - buffer: fix crash bug when playing remote WAV file
634 635
* tags
  - ape: map "Album Artist"
636 637
* output
  - shout: add support for TLS
638 639
* mixer
  - pulse: add "scale_volume" setting
640

Max Kellermann's avatar
Max Kellermann committed
641
ver 0.21.4 (2019/01/04)
642
* database
643
  - inotify: fix crash bug "terminate called after throwing ..."
644
  - upnp: implement "list ... group"
645 646
* output
  - httpd: declare protocol "HTTP/1.1" instead of "ICY"
647
* remove libwrap support
648 649
* Windows
  - fix "Failed to accept connection: unknown error"
650
* fix Haiku build
651

Max Kellermann's avatar
Max Kellermann committed
652
ver 0.21.3 (2018/11/16)
653 654
* output
  - alsa: fix crash bug
655
  - alsa: fix stuttering at start of playback
656
  - alsa: fix discarded samples at end of song
657
  - alsa: clear error after reopening device
658
* log: default to journal if MPD was started as systemd service
659

Max Kellermann's avatar
Max Kellermann committed
660
ver 0.21.2 (2018/11/12)
661 662
* protocol
  - operator "=~" matches a regular expression
663
  - operator "contains" matches substrings
664 665
* decoder
  - ffmpeg: require FFmpeg 3.1 or later
666
  - ffmpeg: fix broken sound with certain codecs
667
* output
668
  - alsa: fix high CPU usage with dmix
669
  - httpd: fix three crash bugs
670 671
* mixer
  - alsa: fix more rounding errors
672
* fix zlib support
673

Max Kellermann's avatar
Max Kellermann committed
674
ver 0.21.1 (2018/11/04)
675 676
* protocol
  - allow escaping quotes in filter expressions
677
  - operator "==" never searches substrings in filter expressions
678 679
* decoder
  - ffmpeg: fix build failure with non-standard FFmpeg installation path
680
  - flac: fix linker failure when building without FLAC support
681 682
* encoder
  - vorbis: fix linker failure when building without Vorbis decoder
683
* fix build failure on Linux-PowerPC
684
* fix build failure on FreeBSD
685
* eliminate DLL dependencies on Windows
686
* add warning about buggy Boost version 1.67
687
* require Meson 0.47.2 because a Meson 0.47.1 bug breaks our build
688

Max Kellermann's avatar
Max Kellermann committed
689
ver 0.21 (2018/10/31)
690 691
* configuration
  - add "include" directive, allows including config files
692
  - incremental "metadata_to_use" setting
693 694
* protocol
  - "tagtypes" can be used to hide tags
695
  - "find" and "search" can sort
696
  - "outputs" prints the plugin name
697
  - "outputset" sets runtime attributes
698
  - close connection when client sends HTTP request
699
  - new filter syntax for "find"/"search" etc. with negation
700 701
* database
  - simple: scan audio formats
702
  - proxy: require libmpdclient 2.9
703
  - proxy: forward `sort` and `window` to server
704
* player
705
  - hard-code "buffer_before_play" to 1 second, independent of audio format
706
  - "one-shot" single mode
707
* input
708
  - curl: download to buffer instead of throttling transfer
709
  - qobuz: new plugin to play Qobuz streams
710
  - tidal: new plugin to play Tidal streams
711
* tags
712
  - new tags "OriginalDate", "MUSICBRAINZ_WORKID"
713
* decoder
714
  - ffmpeg: require at least version 11.12
715
  - gme: try loading m3u sidecar files
716
  - hybrid_dsd: new decoder plugin
717
  - mad: move "gapless_mp3_playback" setting to "decoder" block
718
  - mikmod: require at least version 3.2
719
  - pcm: support audio/L24 (RFC 3190)
720
  - sidplay: support basic and kernal rom (libsidplayfp)
721 722
* resampler
  - soxr: flush resampler at end of song
723 724
* output
  - alsa: non-blocking mode
725
  - alsa: change "dop" and "allowed_formats" settings at runtime
726
  - ao: fix crash bug due to partial frames
727
  - shout: support the Shine encoder plugin
728
  - sndio: remove support for the broken RoarAudio sndio emulation
729
  - osx: initial support for DSD over PCM
Max Kellermann's avatar
Max Kellermann committed
730
  - roar: removed
731
  - httpd_output: support for unix sockets
732 733
* mixer
  - sndio: new mixer plugin
734 735
* encoder
  - opus: support for sending metadata using ogg stream chaining
736
* listen on $XDG_RUNTIME_DIR/mpd/socket by default
737
* append hostname to Zeroconf service name
738
* systemd watchdog support
Max Kellermann's avatar
Max Kellermann committed
739
* require GCC 6
740
* build with Meson instead of autotools
741
* use GTest instead of cppunit
742

Max Kellermann's avatar
Max Kellermann committed
743
ver 0.20.23 (2018/10/29)
744 745
* protocol
  - emit "player" idle event when restarting the current song
746
* fix broken float to s32 conversion
747
* new clang crash bug workaround
748

Max Kellermann's avatar
Max Kellermann committed
749
ver 0.20.22 (2018/10/23)
750 751
* protocol
  - add tag fallbacks for AlbumArtistSort, ArtistSort
752
  - fix empty string filter on fallback tags
753
  - "count group ..." can print an empty group
754
  - fix broken command "list ... group"
755 756
* storage
  - curl: URL-encode paths
757 758
* decoder
  - fluidsynth: adapt to API change in version 2.0
759 760 761
* Android
  - now runs as a service
  - add button to start/stop MPD
762
  - add option to auto-start on boot
763
* work around clang bug leading to crash
764
* install the SVG icon
765

Max Kellermann's avatar
Max Kellermann committed
766
ver 0.20.21 (2018/08/17)
767 768
* database
  - proxy: add "password" setting
769
  - proxy: support tags "ArtistSort", "AlbumArtistSort", "AlbumSort"
770
  - simple: allow .mpdignore comments only at start of line
771 772
* output
  - httpd: remove broken DLNA support code
773 774
* playlist
  - cue: support file type declaration "FLAC" (non-standard)
775
* URI schemes are case insensitive
776
* Android, Windows
777
  - enable the "curl" storage plugin
778

Max Kellermann's avatar
Max Kellermann committed
779
ver 0.20.20 (2018/05/22)
780 781
* protocol
  - fix "modified-since" filter regression
782 783
* output
  - pulse: cork stream when paused due to "single" mode
784 785
* decoder
  - dsdiff, dsf: support more MIME types
786
  - dsdiff, dsf: allow 4 MB ID3 tags
787
  - opus: support R128_ALBUM_GAIN tag
788 789
* Android, Windows
  - enable the "proxy" database plugin
790

Max Kellermann's avatar
Max Kellermann committed
791
ver 0.20.19 (2018/04/26)
792 793
* protocol
  - validate absolute seek time, reject negative values
794 795
* database
  - proxy: fix "search already in progress" errors
796
  - proxy: implement "list ... group"
797
* input
798
  - mms: fix lockup bug and a crash bug
799 800
* decoder
  - ffmpeg: fix av_register_all() deprecation warning (FFmpeg 4.0)
801 802
* player
  - fix spurious "Not seekable" error when switching radio streams
803
* macOS: fix crash bug
804

Max Kellermann's avatar
Max Kellermann committed
805
ver 0.20.18 (2018/02/24)
806 807
* input
  - curl: allow authentication methods other than "Basic"
808 809
* decoder
  - flac: improve seeking precision
810
* fix gapless CUE song transitions
811
* Android, Windows
812
  - enable the NFS storage plugin
813

Max Kellermann's avatar
Max Kellermann committed
814
ver 0.20.17 (2018/02/11)
815 816
* output
  - alsa: fix crash bug with 8 channels
817 818
* mixer
  - alsa: fix rounding error at volume 0
819
* fix real-time and idle scheduling with Musl
820 821
* Android
  - fix compatibility with Android 4.0
822

Max Kellermann's avatar
Max Kellermann committed
823
ver 0.20.16 (2018/02/03)
824 825
* output
  - pulse: fix crash during auto-detection
826 827
* database
  - simple: fix search within mount points
828
  - upnp: enable IPv6
829 830
* archive
  - iso9660: libcdio 2.0 compatibility
831
* fix crash in debug build on Haiku and other operating systems
832

Max Kellermann's avatar
Max Kellermann committed
833
ver 0.20.15 (2018/01/05)
834
* queue: fix crash after seek failure
835 836
* resampler
  - soxr: clear internal state after manual song change
837 838 839
* state file
  - make mount point restore errors non-fatal
  - fix crash when restoring mounts with incompatible database plugin
840 841
* Android
  - build without Ant
842
  - fix for SIGSYS crash
843

Max Kellermann's avatar
Max Kellermann committed
844
ver 0.20.14 (2018/01/01)
845 846
* database
  - simple: fix file corruption in the presence of mount points
847 848
* archive
  - bz2: fix deadlock
849
  - reduce lock contention, fixing lots of xrun problems
850
* fix Solaris build failure
851

Max Kellermann's avatar
Max Kellermann committed
852
ver 0.20.13 (2017/12/18)
853 854
* output
  - osx: set up ring buffer to hold at least 100ms
855 856
* mixer
  - alsa: fix rounding errors
857 858
* database
  - simple: don't purge mount points on update/rescan
859
  - simple: fix "mount" bug caused by bad compiler optimization
860
  - simple: fix "lsinfo" into mount points
861
  - upnp: work around libupnp 1.6.24 API breakage
862
* queue: fix spuriously misplaced prioritized songs
863
* save and restore mountpoints within the state file
864
* include Windows cross-build script in source tarball
865
* fix Windows build failures
866

Max Kellermann's avatar
Max Kellermann committed
867
ver 0.20.12 (2017/11/25)
868 869
* database
  - upnp: adapt to libupnp 1.8 API changes
870
* input
871 872
  - cdio_paranoia, ffmpeg, file, smbclient: reduce lock contention,
    fixing lots of xrun problems
873
  - curl: fix seeking
874
* decoder
875
  - ffmpeg: fix GCC 8 warning
876
  - vorbis: fix Tremor support
877 878
* player
  - log message when decoder is too slow
879 880
* encoder
  - vorbis: default to quality 3
881 882
* output
  - fix hanging playback with soxr resampler
883
  - httpd: flush encoder after tag; fixes corrupt Vorbis stream
884

Max Kellermann's avatar
Max Kellermann committed
885
ver 0.20.11 (2017/10/18)
886 887
* storage
  - curl: support Content-Type application/xml
888 889
* decoder
  - ffmpeg: more reliable song duration
890
  - gme: fix track numbering
891
* improve random song order when switching songs manually
892
* fix case insensitive search without libicu
893
* fix Unicode file names in playlists on Windows
894
* fix endless loop when accessing malformed file names in ZIP files
895

Max Kellermann's avatar
Max Kellermann committed
896
ver 0.20.10 (2017/08/24)
897 898
* decoder
  - ffmpeg: support MusicBrainz ID3v2 tags
899 900
* tags
  - aiff: fix FORM chunk size endianess (is big-endian)
Matthew Leon's avatar
Matthew Leon committed
901 902
* mixer
  - osx: add a mixer for OSX.
903
* fix crash when resuming playback before decoder is ready
904
* fix crash on Windows
905

Max Kellermann's avatar
Max Kellermann committed
906
ver 0.20.9 (2017/06/04)
907 908
* decoder
  - ffmpeg: support *.adx
909
* fix byte order detection on FreeBSD/aarch64
910
* fix more random crashes when compiled with clang
911

Max Kellermann's avatar
Max Kellermann committed
912
ver 0.20.8 (2017/05/19)
913 914
* output
  - osx: fix build failure due to missing "noexcept"
915 916
* playlist
  - m3u: support MIME type `audio/mpegurl`
917
* fix build failure with GCC 4.x
918

Max Kellermann's avatar
Max Kellermann committed
919
ver 0.20.7 (2017/05/15)
920 921
* database
  - simple: fix false positive directory loop detection with NFS
922
* enforce a reasonable minimum audio_buffer_size setting
923
* cap buffer_before_play at 80% to prevent deadlock
924
* fix random crashes when compiled with clang
925

Max Kellermann's avatar
Max Kellermann committed
926
ver 0.20.6 (2017/03/10)
927 928
* input
  - curl: fix headers after HTTP redirect to Shoutcast server
929
* decoder
930
  - ffmpeg: re-enable as fallback
931
  - mpcdec: fix crash (division by zero) after seeking
932
  - sidplay: make compatible with libsidplayfp < 1.8
933
* fix stream tags after automatic song change
934
* workaround for GCC 4.9.4 / libstdc++ bug (build failure)
935

Max Kellermann's avatar
Max Kellermann committed
936
ver 0.20.5 (2017/02/20)
937 938
* tags
  - id3: fix memory leak on corrupt ID3 tags
939 940
* decoder
  - sidplay: don't require libsidutils when building with libsidplayfp
941 942
* output
  - httpd: fix two buffer overflows in IcyMetaData length calculation
943 944
* mixer
  - alsa: fix crash bug
945

Max Kellermann's avatar
Max Kellermann committed
946
ver 0.20.4 (2017/02/01)
947 948
* input
  - nfs: fix freeze after reconnect
949 950
* output
  - sndio: work around a libroar C++ incompatibility
951
* workaround for GCC 4.9 "constexpr" bug
952
* fix FreeBSD build failure
953

Max Kellermann's avatar
Max Kellermann committed
954
ver 0.20.3 (2017/01/25)
955 956
* protocol
  - "playlistadd" creates new playlist if it does not exist, as documented
957 958
* database
  - proxy: fix error "terminate called after throwing ..."
959
  - proxy: make connect errors during startup non-fatal
960 961
* neighbor
  - upnp: fix premature expiry
962
* replay gain: don't reset ReplayGain levels when unpausing playback
963
* silence surround channels when converting from stereo
964
* use shortcuts such as "dsd64" in log messages
965

Max Kellermann's avatar
Max Kellermann committed
966
ver 0.20.2 (2017/01/15)
967 968
* input
  - alsa: fix crash bug
969
  - alsa: fix buffer overruns
970 971
* decoder
  - flac: add options "probesize" and "analyzeduration"
972 973
* resampler
  - libsamplerate: reset state after seeking
974
* output
975
  - fix static noise after changing to a different audio format
976
  - alsa: fix the DSD_U32 sample rate
977
  - alsa: fix the DSD_U32 byte order
978
  - alsa: support DSD_U16
979
  - recorder: fix error "Failed to create : No such file or directory"
980 981
* playlist
  - cue: fix skipping songs
982

Max Kellermann's avatar
Max Kellermann committed
983
ver 0.20.1 (2017/01/09)
984 985
* input
  - curl: fix crash bug
986
  - curl: fix freeze bug
987 988
* decoder
  - wavpack: fix crash bug
989 990
* storage
  - curl: new storage plugin for WebDAV (work in progress)
991 992
* mixer
  - alsa: normalize displayed volume according to human perception
993
* fix crash with volume_normalization enabled
994

Max Kellermann's avatar
Max Kellermann committed
995
ver 0.20 (2017/01/04)
996 997
* protocol
  - "commands" returns playlist commands only if playlist_directory configured
998
  - "search"/"find" have a "window" parameter
999
  - report song duration with milliseconds precision
1000
  - "sticker find" can match sticker values
1001
  - drop the "file:///" prefix for absolute file paths
1002
  - add range parameter to command "plchanges" and "plchangesposid"
1003
  - send verbose error message to client
1004 1005
* input
  - curl: fix memory leak
1006
* tags
1007 1008 1009
  - ape, ogg: drop support for non-standard tag "album artist"
    affected filetypes: vorbis, flac, opus & all files with ape2 tags
    (most importantly some mp3s)
1010 1011
  - id3: remove the "id3v1_encoding" setting; by definition, all ID3v1 tags
    are ISO-Latin-1
1012
  - ape: support APE replay gain on remote files
1013
  - read ID3 tags from NFS/SMB
1014
* decoder
1015
  - improved error logging
1016
  - report I/O errors to clients
1017
  - ffmpeg: support ReplayGain and MixRamp
1018
  - ffmpeg: support stream tags
1019
  - gme: add option "accuracy"
1020
  - gme: provide the TRACK tag
1021
  - gme: faster scanning
1022
  - mad: reduce memory usage while scanning tags
1023
  - mpcdec: read the bit rate
1024
  - pcm: support audio/L16 (RFC 2586) and audio/x-mpd-float
1025
  - sidplay: faster scanning
1026
  - wavpack: large file support
1027
  - wavpack: support DSD (WavPack 5)
1028
  - wavpack: archive support
xent's avatar
xent committed
1029
* playlist
1030
  - cue: don't skip pregap
xent's avatar
xent committed
1031
  - embcue: fix last track
1032
  - flac: new plugin which reads the "CUESHEET" metadata block
1033
* output
1034
  - alsa: fix multi-channel order
1035
  - alsa: remove option "use_mmap"
1036
  - alsa: support DSD_U32
1037
  - alsa: disable DoP if it fails
1038
  - jack: reduce CPU usage
1039
  - pulse: set channel map to WAVE-EX
1040
  - recorder: record tags
1041
  - recorder: allow dynamic file names
1042
  - sndio: new output plugin
1043 1044
* mixer
  - null: new plugin
1045 1046 1047
* resampler
  - new block "resampler" in configuration file
    replacing the old "samplerate_converter" setting
1048
  - soxr: allow multi-threaded resampling
1049 1050
* player
  - reset song priority on playback
1051
  - reduce xruns
1052
* write database and state file atomically
1053
* always write UTF-8 to the log file.
1054
* remove dependency on GLib
1055
* support libsystemd (instead of the older libsystemd-daemon)
1056 1057
* database
  - proxy: add TCP keepalive option
1058 1059
* update
  - apply .mpdignore matches to subdirectories
1060 1061
* switch the code base to C++14
  - GCC 4.9 or clang 3.4 (or newer) recommended
1062

Max Kellermann's avatar
Max Kellermann committed
1063
ver 0.19.21 (2016/12/13)
1064 1065
* decoder
  - ffmpeg: fix crash bug
1066
* fix unit test failure after recent "setprio" change
1067
* systemd: add user unit
1068

Max Kellermann's avatar
Max Kellermann committed
1069
ver 0.19.20 (2016/12/09)
1070 1071
* protocol
  - "setprio" re-enqueues old song if priority has been raised
1072 1073
* decoder
  - ffmpeg: ignore empty packets
1074
  - pcm: fix corruption bug with partial frames (after short read)
1075
  - sidplay: fix playback speed with libsidplayfp
1076 1077
* output
  - winmm: fix 8 bit playback
1078
* fix gcc 7.0 -Wimplicit-fallthrough
1079
* systemd: paranoid security settings
1080

Max Kellermann's avatar
Max Kellermann committed
1081
ver 0.19.19 (2016/08/23)
1082
* decoder
1083
  - ffmpeg: bug fix for FFmpeg 3.1 support
1084
  - wildmidi: support libWildMidi 0.4
1085 1086
* output
  - pulse: support 32 bit, 24 bit and floating point playback
1087
* support non-x86 NetBSD
1088
* fix clang 3.9 warnings
1089

Max Kellermann's avatar
Max Kellermann committed
1090
ver 0.19.18 (2016/08/05)
1091
* decoder
1092
  - ffmpeg: fix crash with older FFmpeg versions (< 3.0)
1093
  - ffmpeg: log detailed error message
1094
  - ffmpeg: support FFmpeg 3.1
1095
  - sidplay: detect libsidplay2 with pkg-config
1096
  - sidplay: log detailed error message
1097
  - sidplay: read the "date" tag
1098
  - sidplay: allow building with libsidplayfp instead of libsidplay2
1099 1100
* output
  - shout: recognize setting "encoder" instead of "encoding"
1101
* fix memory leak after stream failure
1102
* fix build failure with Boost 1.61
1103
* require gcc 4.7 or newer
1104

Max Kellermann's avatar
Max Kellermann committed
1105
ver 0.19.17 (2016/07/09)
1106 1107
* decoder
  - flac: fix assertion failure while seeking
1108
  - flac: fix stream duration indicator
1109
  - fix seek problems in several plugins
1110
* fix spurious seek error "Failed to allocate silence buffer"
1111
* replay gain: fix "replay_gain_handler mixer" setting
1112
* DSD: use 0x69 as silence pattern
1113
* fix use-after-free bug on "close" and "kill"
1114

Max Kellermann's avatar
Max Kellermann committed
1115
ver 0.19.16 (2016/06/13)
1116
* faster seeking
1117 1118
* fix system include path order
* add missing DocBook file to tarball
1119

Max Kellermann's avatar
Max Kellermann committed
1120
ver 0.19.15 (2016/04/30)
1121
* decoder
1122
  - ffmpeg: support FFmpeg 3.0
1123
  - ffmpeg: use as fallback instead of "mad" if no plugin matches
1124
  - opus: support bigger OpusTags packets
1125
* fix more build failures on non-glibc builds due to constexpr Mutex
1126
* fix build failure due to missing include
1127
* fix unit test on Alpha
1128

Max Kellermann's avatar
Max Kellermann committed
1129
ver 0.19.14 (2016/03/18)
1130
* decoder
1131
  - dsdiff: fix off-by-one buffer overflow
1132
  - opus: limit tag size to 64 kB
1133 1134
* archive
  - iso9660: fix buffer overflow
1135
* fix quadratic runtime bug in the tag pool
1136
* fix build failures on non-glibc builds due to constexpr Mutex
1137

Max Kellermann's avatar
Max Kellermann committed
1138
ver 0.19.13 (2016/02/23)
1139 1140
* tags
  - aiff, riff: fix ID3 chunk padding
1141 1142
* decoder
  - ffmpeg: support the TAK codec
1143
* fix disappearing duration of remote songs during playback
1144
* initialize supplementary groups with glibc 2.19+
1145

Max Kellermann's avatar
Max Kellermann committed
1146
ver 0.19.12 (2015/12/15)
1147
* fix assertion failure on malformed UTF-8 tag
1148
* fix build failure on non-Linux systems
1149
* fix LimitRTTIME in systemd unit file
1150

Max Kellermann's avatar
Max Kellermann committed
1151
ver 0.19.11 (2015/10/27)
1152 1153
* tags
  - ape: fix buffer overflow
1154 1155
* decoder
  - ffmpeg: fix crash due to wrong avio_alloc_context() call
1156
  - gme: don't loop forever, fall back to GME's default play length
1157 1158
* encoder
  - flac: fix crash with 32 bit playback
1159 1160
* mixer
  - fix mixer lag after enabling/disabling output
1161

Max Kellermann's avatar
Max Kellermann committed
1162
ver 0.19.10 (2015/06/21)
1163
* input
1164
  - curl: fix deadlock on small responses
1165
  - smbclient: fix DFF playback
1166 1167
* decoder
  - ffmpeg: improve seeking accuracy
1168
  - fix stuck stream tags
1169 1170
* encoder
  - opus: fix bogus granulepos
1171 1172
* output
  - fix failure to open device right after booting
1173 1174
* neighbor
  - nfs: fix deadlock when connecting
1175
* fix "single" mode breakage due to queue edits
1176

Max Kellermann's avatar
Max Kellermann committed
1177
ver 0.19.9 (2015/02/06)
1178 1179
* decoder
  - dsdiff, dsf: raise ID3 tag limit to 1 MB
1180
* playlist: fix loading duplicate tag types from state file
1181
* despotify: remove defunct plugin
1182
* fix clock integer overflow on OS X
1183
* fix gcc 5.0 warnings
1184
* fix build failure with uClibc
1185
* fix build failure on non-POSIX operating systems
1186
* fix dependency issue on parallel Android build
1187
* fix database/state file saving on Windows
1188

Max Kellermann's avatar
Max Kellermann committed
1189
ver 0.19.8 (2015/01/14)
1190
* input
1191
  - curl: fix bug after rewinding from end-of-file
1192
  - mms: reduce delay at the beginning of playback
1193 1194
* decoder
  - dsdiff, dsf: allow ID3 tags larger than 4 kB
1195
  - ffmpeg: support interleaved floating point
1196
* fix clang 3.6 warnings
1197
* fix build failure on NetBSD
1198

Max Kellermann's avatar
Max Kellermann committed
1199
ver 0.19.7 (2014/12/17)
1200 1201
* input
  - nfs: fix crash while canceling a failing file open operation
1202
  - nfs: fix memory leak on connection failure
1203
  - nfs: fix reconnect after mount failure
1204
  - nfs: implement mount timeout (60 seconds)
1205 1206
* storage
  - nfs: implement I/O timeout (60 seconds)
1207
* playlist
1208
  - embcue: fix filename suffix detection
1209
  - don't skip non-existent songs in "listplaylist"
1210 1211
* decoder
  - ffmpeg: fix time stamp underflow
1212
* fix memory allocator bug on Windows
1213

Max Kellermann's avatar
Max Kellermann committed
1214
ver 0.19.6 (2014/12/08)
1215 1216 1217
* decoder
  - ffmpeg: support FFmpeg 2.5
* fix build failure with musl
1218 1219
* android
  - update libFLAC to 1.3.1
1220
  - update FFmpeg to 2.5
1221

Max Kellermann's avatar
Max Kellermann committed
1222
ver 0.19.5 (2014/11/26)
1223 1224
* input
  - nfs: fix crash on connection failure
1225 1226
* archive
  - zzip: fix crash after seeking
1227 1228
* decoder
  - dsdiff, dsf, opus: fix deadlock while seeking
1229
  - mp4v2: remove because of incompatible license
1230

Max Kellermann's avatar
Max Kellermann committed
1231
ver 0.19.4 (2014/11/18)
1232 1233
* protocol
  - workaround for buggy clients that send "add /"
1234
* decoder
1235
  - ffmpeg: support opus
1236
  - opus: add MIME types audio/ogg and application/ogg
1237 1238
* fix crash on failed filename charset conversion
* fix local socket detection from uid=0 (root)
1239

Max Kellermann's avatar
Max Kellermann committed
1240
ver 0.19.3 (2014/11/11)
1241 1242
* protocol
  - fix "(null)" result string to "list" when AlbumArtist is disabled
1243 1244
* database
  - upnp: fix breakage due to malformed URIs
1245 1246
* input
  - curl: another fix for redirected streams
1247 1248
* decoder
  - audiofile: fix crash while playing streams
1249
  - audiofile: fix bit rate calculation
1250
  - ffmpeg: support opus
1251
  - opus: fix bogus duration on streams
1252
  - opus: support chained streams
1253
  - opus: improved error logging
1254
* fix distorted audio with soxr resampler
1255
* fix build failure on Mac OS X with non-Apple compilers
1256

Max Kellermann's avatar
Max Kellermann committed
1257
ver 0.19.2 (2014/11/02)
1258 1259
* input
  - curl: fix redirected streams
1260
* playlist
1261
  - don't allow empty playlist name
1262
  - m3u: don't ignore unterminated last line
1263
  - m3u: recognize the file suffix ".m3u8"
1264
* decoder
1265
  - ignore URI query string for plugin detection
1266
  - faad: remove workaround for ancient libfaad2 ABI bug
1267
  - ffmpeg: recognize MIME type audio/aacp
1268
  - mad: fix negative replay gain values
1269 1270
* output
  - fix memory leak after filter initialization error
1271
  - fall back to PCM if given DSD sample rate is not supported
1272
* fix assertion failure on unsupported PCM conversion
1273
* auto-disable plugins that require GLib when --disable-glib is used
1274

Max Kellermann's avatar
Max Kellermann committed
1275
ver 0.19.1 (2014/10/19)
1276 1277
* input
  - mms: fix deadlock bug
1278 1279
* playlist
  - extm3u: fix Extended M3U detection
1280
  - m3u, extm3u, cue: fix truncated lines
Max Kellermann's avatar
Max Kellermann committed
1281
* fix build failure on Mac OS X
1282
* add missing file systemd/mpd.socket to tarball
1283

Max Kellermann's avatar
Max Kellermann committed
1284
ver 0.19 (2014/10/10)
1285
* protocol
1286 1287
  - new commands "addtagid", "cleartagid", "listfiles", "listmounts",
    "listneighbors", "mount", "rangeid", "unmount"
1288
  - "lsinfo" and "readcomments" allowed for remote files
1289
  - "listneighbors" lists file servers on the local network
1290
  - "playlistadd" supports file:///
1291
  - "idle" with unrecognized event name fails
1292
  - "list" on album artist falls back to the artist tag
1293
  - "list" and "count" allow grouping
1294
  - new "search"/"find" filter "modified-since"
1295
  - "seek*" allows fractional position
1296
  - close connection after syntax error
1297
* database
1298
  - proxy: forward "idle" events
1299
  - proxy: forward the "update" command
1300
  - proxy: copy "Last-Modified" from remote directories
1301
  - simple: compress the database file using gzip
1302
  - upnp: new plugin
1303
  - cancel the update on shutdown
1304 1305
* storage
  - music_directory can point to a remote file server
1306
  - nfs: new plugin
1307
  - smbclient: new plugin
1308
* playlist
1309
  - cue: fix bogus duration of the last track
1310
  - cue: restore CUE tracks from state file
1311
  - soundcloud: use https instead of http
1312
  - soundcloud: add default API key
1313 1314
* archive
  - read tags from songs in an archive
1315 1316
* input
  - alsa: new input plugin
1317
  - curl: options "verify_peer" and "verify_host"
1318
  - ffmpeg: update offset after seeking
1319
  - ffmpeg: improved error messages
1320
  - mms: non-blocking I/O
1321
  - nfs: new input plugin
1322
  - smbclient: new input plugin
1323 1324
* filter
  - volume: improved software volume dithering
1325 1326
* decoder:
  - vorbis, flac, opus: honor DESCRIPTION= tag in Xiph-based files as a comment to the song
1327
  - audiofile: support scanning remote files
1328
  - audiofile: log libaudiofile errors
1329
  - dsdiff, dsf: report bit rate
1330
  - dsdiff, dsf: implement seeking
1331
  - dsf: support DSD512
1332
  - dsf: support multi-channel files
1333
  - dsf: fix big-endian bugs
1334
  - dsf: fix noise at end of malformed file
1335
  - mpg123: support ID3v2, ReplayGain and MixRamp
1336
  - sndfile: support scanning remote files
1337
  - sndfile: support tags "comment", "album", "track", "genre"
1338 1339
  - sndfile: native floating point playback
  - sndfile: optimized 16 bit playback
1340
  - mp4v2: support playback of MP4 files.
Andrée Ekroth's avatar
Andrée Ekroth committed
1341 1342
* encoder:
  - shine: new encoder plugin
1343 1344
* output
  - alsa: support native DSD playback
1345
  - alsa: rename "DSD over USB" to "DoP"
1346
  - osx: fix hang after (un)plugging headphones
1347 1348 1349
* threads:
  - the update thread runs at "idle" priority
  - the output thread runs at "real-time" priority
1350
  - increase kernel timer slack on Linux
1351
  - name each thread (for debugging)
1352 1353
* configuration
  - allow playlist directory without music directory
1354
  - use XDG to auto-detect "music_directory" and "db_file"
1355
* add tags "AlbumSort", "MUSICBRAINZ_RELEASETRACKID"
1356
* disable global Latin-1 fallback for tag values
1357
* new resampler option using libsoxr
1358
* ARM NEON optimizations
1359
* install systemd unit for socket activation
Max Kellermann's avatar
Max Kellermann committed
1360
* Android port
Max Kellermann's avatar
Max Kellermann committed
1361

Max Kellermann's avatar
Max Kellermann committed
1362
ver 0.18.23 (2015/02/06)
1363
* despotify: remove defunct plugin
1364
* fix clock integer overflow on OS X
1365
* fix gcc 5.0 warnings
1366

1367
ver 0.18.22 (2015/01/14)
1368
* fix clang 3.6 warnings
1369

Max Kellermann's avatar
Max Kellermann committed
1370
ver 0.18.21 (2014/12/17)
1371 1372
* playlist
  - embcue: fix filename suffix detection
1373 1374
* decoder
  - ffmpeg: fix time stamp underflow
1375

Max Kellermann's avatar
Max Kellermann committed
1376
ver 0.18.20 (2014/12/08)
1377 1378
* decoder
  - ffmpeg: support FFmpeg 2.5
1379
* fix build failure with musl
1380

Max Kellermann's avatar
Max Kellermann committed
1381
ver 0.18.19 (2014/11/26)
1382 1383
* archive
  - zzip: fix crash after seeking
1384

Max Kellermann's avatar
Max Kellermann committed
1385
ver 0.18.18 (2014/11/18)
1386 1387
* decoder
  - ffmpeg: support opus
1388
* fix crash on failed filename charset conversion
1389
* fix local socket detection from uid=0 (root)
1390

Max Kellermann's avatar
Max Kellermann committed
1391
ver 0.18.17 (2014/11/02)
1392
* playlist
1393
  - don't allow empty playlist name
1394
  - m3u: recognize the file suffix ".m3u8"
1395
* decoder
1396
  - ignore URI query string for plugin detection
1397
  - faad: remove workaround for ancient libfaad2 ABI bug
1398
  - ffmpeg: recognize MIME type audio/aacp
1399

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

Max Kellermann's avatar
Max Kellermann committed
1403
ver 0.18.15 (2014/09/26)
1404 1405
* command
  - list: reset used size after the list has been processed
1406
* fix MixRamp
1407
* work around build failure on NetBSD
1408

Max Kellermann's avatar
Max Kellermann committed
1409
ver 0.18.14 (2014/09/11)
1410 1411
* protocol
  - fix range parser bug on certain 32 bit architectures
1412 1413
* decoder
  - audiofile: fix crash after seeking
1414
  - ffmpeg: fix crash with ffmpeg/libav version 11
1415
  - fix assertion failure after seeking
1416

Max Kellermann's avatar
Max Kellermann committed
1417
ver 0.18.13 (2014/08/31)
1418 1419
* protocol
  - don't change song on "seekcur" in random mode
Max Kellermann's avatar
Max Kellermann committed
1420

1421
* decoder
1422
  - dsdiff, dsf: fix endless loop on malformed file
1423
  - ffmpeg: support ffmpeg/libav version 11
1424
  - gme: fix song duration
1425 1426
* output
  - alsa: fix endless loop at end of file in dsd_usb mode
1427
* fix state file saver
1428
* fix build failure on Darwin
1429

Max Kellermann's avatar
Max Kellermann committed
1430
ver 0.18.12 (2014/07/30)
1431 1432
* database
  - proxy: fix build failure with libmpdclient 2.2
1433
  - proxy: fix add/search and other commands with libmpdclient < 2.9
1434 1435
* decoder
  - audiofile: improve responsiveness
1436
  - audiofile: fix WAV stream playback
1437
  - dsdiff, dsf: fix stream playback
1438
  - dsdiff: fix metadata parser bug (uninitialized variables)
1439
  - faad: estimate song duration for remote files
1440
  - sndfile: improve responsiveness
1441
* randomize next song when enabling "random" mode while not playing
1442
* randomize next song when adding to single-song queue
1443

Max Kellermann's avatar
Max Kellermann committed
1444
ver 0.18.11 (2014/05/12)
1445 1446
* decoder
  - opus: fix missing song length on high-latency files
1447
* fix race condition when using GLib event loop (non-Linux)
1448

Max Kellermann's avatar
Max Kellermann committed
1449
ver 0.18.10 (2014/04/10)
1450
* decoder
1451
  - ffmpeg: fix seeking bug
1452
  - ffmpeg: handle unknown stream start time
1453
  - gme: fix memory leak
1454
  - sndfile: work around libsndfile bug on partial read
1455
* don't interrupt playback when current song gets deleted
1456

Max Kellermann's avatar
Max Kellermann committed
1457
ver 0.18.9 (2014/03/02)
1458 1459
* protocol
  - "findadd" requires the "add" permission
1460 1461
* output
  - alsa: improved workaround for noise after manual song change
1462 1463
* decoder
  - vorbis: fix linker failure when libvorbis/libogg are static
1464 1465
* encoder
  - vorbis: fix another linker failure
1466 1467
* output
  - pipe: fix hanging child process due to blocked signals
1468
* fix build failure due to missing signal.h include
1469

Max Kellermann's avatar
Max Kellermann committed
1470
ver 0.18.8 (2014/02/07)
1471 1472
* decoder
  - ffmpeg: support libav v10_alpha1
1473 1474
* encoder
  - vorbis: fix linker failure
1475 1476
* output
  - roar: documentation
1477
* more robust Icy-Metadata parser
1478
* fix Solaris build failure
1479

1480
ver 0.18.7 (2014/01/13)
1481
* playlist
1482
  - pls: fix crash after parser error
1483
  - soundcloud: fix build failure with libyajl 2.0.1
1484 1485
* decoder
  - faad: fix memory leak
1486
  - mpcdec: reject libmpcdec SV7 in configure script
1487 1488
* daemon: don't initialize supplementary groups when already running
  as the configured user
1489

Max Kellermann's avatar
Max Kellermann committed
1490
ver 0.18.6 (2013/12/24)
1491 1492
* input
  - cdio_paranoia: support libcdio-paranoia 0.90
1493 1494
* tags
  - riff: recognize upper-case "ID3" chunk name
1495 1496
* decoder
  - ffmpeg: use relative timestamps
Max Kellermann's avatar
Max Kellermann committed
1497 1498
* output
  - openal: fix build failure on Mac OS X
1499
  - osx: fix build failure
1500 1501
* mixer
  - alsa: fix build failure with uClibc
1502
* fix replay gain during cross-fade
1503
* accept files without metadata
1504

Max Kellermann's avatar
Max Kellermann committed
1505
ver 0.18.5 (2013/11/23)
1506 1507
* configuration
  - fix crash when db_file is configured without music_directory
1508
  - fix crash on "stats" without db_file/music_directory
1509 1510
* database
  - proxy: auto-reload statistics
1511
  - proxy: provide "db_update" in "stats" response
1512 1513
* input
  - curl: work around stream resume bug (fixed in libcurl 7.32.0)
1514 1515
* decoder
  - fluidsynth: auto-detect by default
1516
* clip 24 bit data from libsamplerate
1517
* fix ia64, mipsel and other little-endian architectures
1518 1519 1520
* fix build failures due to missing includes
* fix build failure with static libmpdclient

Max Kellermann's avatar
Max Kellermann committed
1521
ver 0.18.4 (2013/11/13)
1522 1523
* decoder
  - dsdiff: fix byte order bug
1524
* fix build failures due to missing includes
1525
* libc++ compatibility
1526

Max Kellermann's avatar
Max Kellermann committed
1527
ver 0.18.3 (2013/11/08)
1528
* fix stuck MPD after song change (0.18.2 regression)
1529

Max Kellermann's avatar
Max Kellermann committed
1530
ver 0.18.2 (2013/11/07)
1531 1532
* protocol:
  - "close" flushes the output buffer
1533
* input:
1534
  - cdio_paranoia: add setting "default_byte_order"
1535
  - curl: fix bug with redirected streams
1536 1537
* playlist:
  - pls: fix reversed song order
1538
* decoder:
1539
  - audiofile: require libaudiofile 0.3 due to API breakage
1540
  - dsf: enable DSD128
1541
* enable buffering when starting playback (regression fix)
Max Kellermann's avatar
Max Kellermann committed
1542
* fix build failures due to missing includes
1543
* fix big-endian support
1544

Max Kellermann's avatar
Max Kellermann committed
1545
ver 0.18.1 (2013/11/04)
1546 1547
* protocol:
  - always ignore whitespace at the end of the line
1548 1549
* networking:
  - log UNIX domain path names instead of "localhost"
1550
  - open listener sockets in the order they were configured
1551
  - don't abort if IPv6 is not available
1552 1553
* output:
  - alsa: avoid endless loop in Raspberry Pi workaround
1554 1555
* filter:
  - autoconvert: fix "volume_normalization" with mp3 files
1556
* add missing files to source tarball
1557

Max Kellermann's avatar
Max Kellermann committed
1558
ver 0.18 (2013/10/31)
1559 1560
* configuration:
  - allow tilde paths for socket
1561
  - default filesystem charset is UTF-8 instead of ISO-8859-1
1562
  - increase default buffer size to 4 MB
1563
* protocol:
1564
  - new command "readcomments" lists arbitrary file tags
1565
  - new command "toggleoutput"
1566
  - "find"/"search" with "any" does not match file name
1567
  - "search" and "find" with base URI (keyword "base")
1568
  - search for album artist falls back to the artist tag
1569
  - re-add the "volume" command
1570
* input:
Ales Guzik's avatar
Ales Guzik committed
1571
  - curl: enable https
1572
  - soup: plugin removed
1573 1574
* playlist:
  - lastfm: remove defunct Last.fm support
1575
* decoder:
1576
  - adplug: new decoder plugin using libadplug
1577
  - dsf: don't play junk at the end of the "data" chunk
1578
  - ffmpeg: drop support for pre-0.8 ffmpeg
1579
  - flac: require libFLAC 1.2 or newer
1580
  - flac: support FLAC files inside archives
1581
  - opus: new decoder plugin for the Opus codec
1582
  - vorbis: skip 16 bit quantisation, provide float samples
1583
  - mikmod: add "loop" configuration parameter
1584
  - modplug: add "loop_count" configuration parameter
1585
  - mp4ff: obsolete plugin removed
1586 1587
* encoder:
  - opus: new encoder plugin for the Opus codec
1588
  - vorbis: accept floating point input samples
1589 1590
* output:
  - new option "tags" may be used to disable sending tags to output
1591
  - alsa: workaround for noise after manual song change
1592
  - ffado: remove broken plugin
1593
  - httpd: support HEAD requests
1594
  - mvp: remove obsolete plugin
1595
  - osx: disabled by default because it's unmaintained and unsupported
1596
* improved decoder/output error reporting
1597
* eliminate timer wakeup on idle MPD
1598
* fix unresponsive MPD while waiting for stream
Max Kellermann's avatar
Max Kellermann committed
1599
* port of the source code to C++11
Max Kellermann's avatar
Max Kellermann committed
1600

Max Kellermann's avatar
Max Kellermann committed
1601
ver 0.17.6 (2013/10/14)
1602 1603
* mixer:
  - alsa: fix busy loop when USB sound device gets unplugged
1604 1605
* decoder:
  - modplug: fix build with Debian package 1:0.8.8.4-4
Max Kellermann's avatar
Max Kellermann committed
1606 1607
* stored playlists:
  - fix loading playlists with references to local files
1608
  - obey filesystem_charset for URLs
Max Kellermann's avatar
Max Kellermann committed
1609

Max Kellermann's avatar
Max Kellermann committed
1610
ver 0.17.5 (2013/08/04)
1611 1612
* protocol:
  - fix "playlistadd" with URI
1613
  - fix "move" relative to current when there is no current song
1614
* decoder:
1615
  - ffmpeg: support "application/flv"
1616
  - mikmod: adapt to libmikmod 3.2
1617 1618
* configure.ac:
  - detect system "ar"
Max Kellermann's avatar
Max Kellermann committed
1619

Max Kellermann's avatar
Max Kellermann committed
1620
ver 0.17.4 (2013/04/08)
1621 1622
* protocol:
  - allow to omit END in ranges (START:END)
1623
  - don't emit IDLE_PLAYER before audio format is known
1624 1625
* decoder:
  - ffmpeg: support float planar audio (ffmpeg 1.1)
1626
  - ffmpeg: fix AVFrame allocation
1627 1628
* player:
  - implement missing "idle" events on output errors
1629
* clock: fix build failure
1630

Avuton Olrich's avatar
Avuton Olrich committed
1631
ver 0.17.3 (2013/01/06)
1632
* output:
1633
  - osx: fix pops during playback
1634
  - recorder: fix I/O error check
1635
  - shout: fix memory leak in error handler
1636
  - recorder, shout: support Ogg packets that span more than one page
1637 1638
* decoder:
  - ffmpeg: ignore negative time stamps
1639
  - ffmpeg: support planar audio
1640 1641
* playlist:
  - cue: fix memory leak
1642
  - cue: fix CUE files with only one track
1643

Avuton Olrich's avatar
Avuton Olrich committed
1644
ver 0.17.2 (2012/09/30)
1645 1646
* protocol:
  - fix crash in local file check
1647 1648
* decoder:
  - fluidsynth: remove throttle (requires libfluidsynth 1.1)
1649
  - fluidsynth: stop playback at end of file
1650
  - fluidsynth: check MIDI file format while scanning
1651
  - fluidsynth: add sample rate setting
1652
  - wavpack: support all APEv2 tags
1653 1654
* output:
  - httpd: use monotonic clock, avoid hiccups after system clock adjustment
1655
  - httpd: fix throttling bug after resuming playback
1656 1657
* playlist:
  - cue: map "PERFORMER" to "artist" or "album artist"
1658
* mapper: fix non-UTF8 music directory name
1659
* mapper: fix potential crash in file permission check
1660
* playlist: fix use-after-free bug
1661
* playlist: fix memory leak
1662
* state_file: save song priorities
1663
* player: disable cross-fading in "single" mode
1664
* update: fix unsafe readlink() usage
1665 1666
* configure.ac:
  - don't auto-detect the vorbis encoder when Tremor is enabled
1667

Avuton Olrich's avatar
Avuton Olrich committed
1668
ver 0.17.1 (2012/07/31)
1669 1670
* protocol:
  - require appropriate permissions for searchadd{,pl}
1671 1672
* tags:
  - aiff: support the AIFC format
1673
  - ape: check for ID3 if no usable APE tag was found
1674 1675
* playlist:
  - cue: support file types "MP3", "AIFF"
1676 1677
* output:
  - fix noisy playback with conversion and software volume
1678

Max Kellermann's avatar
Max Kellermann committed
1679
ver 0.17 (2012/06/27)
1680 1681
* protocol:
  - support client-to-client communication
1682
  - "update" and "rescan" need only "CONTROL" permission
1683
  - new command "seekcur" for simpler seeking within current song
1684
  - new command "config" dumps location of music directory
1685
  - add range parameter to command "load"
1686
  - print extra "playlist" object for embedded CUE sheets
1687
  - new commands "searchadd", "searchaddpl"
1688 1689
* input:
  - cdio_paranoia: new input plugin to play audio CDs
1690
  - curl: enable CURLOPT_NETRC
1691
  - curl: non-blocking I/O
1692
  - soup: new input plugin based on libsoup
1693 1694
* tags:
  - RVA2: support separate album/track replay gain
1695 1696
* decoder:
  - mpg123: implement seeking
1697
  - ffmpeg: drop support for pre-0.5 ffmpeg
Max Kellermann's avatar
Max Kellermann committed
1698
  - ffmpeg: support WebM
1699
  - oggflac: delete this obsolete plugin
1700
  - dsdiff: new decoder plugin
1701
* output:
1702
  - alsa: support DSD-over-USB (dCS suggested standard)
1703
  - httpd: support for streaming to a DLNA client
1704
  - openal: improve buffer cancellation
1705
  - osx: allow user to specify other audio devices
1706
  - osx: implement 32 bit playback
1707
  - shout: add possibility to set url
1708
  - roar: new output plugin for RoarAudio
1709
  - winmm: fail if wrong device specified instead of using default device
1710 1711
* mixer:
  - alsa: listen for external volume changes
1712 1713
* playlist:
  - allow references to songs outside the music directory
1714
  - new CUE parser, without libcue
1715
  - soundcloud: new plugin for accessing soundcloud.com
1716
* state_file: add option "restore_paused"
1717
* cue: show CUE track numbers
1718
* allow port specification in "bind_to_address" settings
1719
* support floating point samples
1720
* systemd socket activation
1721
* improve --version output
1722
* WIN32: fix renaming of stored playlists with non-ASCII names
1723 1724


Avuton Olrich's avatar
Avuton Olrich committed
1725
ver 0.16.8 (2012/04/04)
1726
* fix for libsamplerate assertion failure
1727 1728
* decoder:
  - vorbis (and others): fix seeking at startup
1729
  - ffmpeg: read the "year" tag
1730 1731
* encoder:
  - vorbis: generate end-of-stream packet before tag
1732
  - vorbis: generate end-of-stream packet when playback ends
1733
* output:
1734
  - jack: check for connection failure before starting playback
1735
  - jack: workaround for libjack1 crash bug
1736
  - osx: fix stuttering due to buffering bug
1737
* fix endless loop in text file reader
1738
* update: skip symlinks in path that is to be updated
1739 1740


Avuton Olrich's avatar
Avuton Olrich committed
1741
ver 0.16.7 (2012/02/04)
1742 1743
* input:
  - ffmpeg: support libavformat 0.7
1744
* decoder:
1745
  - ffmpeg: support libavformat 0.8, libavcodec 0.9
1746
  - ffmpeg: support all MPD tags
1747 1748
* output:
  - httpd: fix excessive buffering
1749
  - openal: force 16 bit playback, as 8 bit doesn't work
1750
  - osx: remove sleep call from render callback
1751
  - osx: clear render buffer when there's not enough data
1752
* fix moving after current song
1753 1754


Avuton Olrich's avatar
Avuton Olrich committed
1755
ver 0.16.6 (2011/12/01)
1756 1757
* decoder:
  - fix assertion failure when resuming streams
1758
  - ffmpeg: work around bogus channel count
1759
* encoder:
1760
  - flac, null, wave: fix buffer corruption bug
1761
  - wave: support packed 24 bit samples
1762
* mapper: fix the bogus "not a directory" error message
1763
* mapper: check "x" and "r" permissions on music directory
1764
* log: print reason for failure
1765
* event_pipe: fix WIN32 regression
1766
* define WINVER in ./configure
1767
* WIN32: autodetect filesystem encoding
1768 1769


Avuton Olrich's avatar
Avuton Olrich committed
1770
ver 0.16.5 (2011/10/09)
1771 1772 1773
* configure.ac
  - disable assertions in the non-debugging build
  - show solaris plugin result correctly
1774
  - add option --enable-solaris-output
1775
* pcm_format: fix 32-to-24 bit conversion (the "silence" bug)
1776 1777
* input:
  - rewind: reduce heap usage
1778 1779
* decoder:
  - ffmpeg: higher precision timestamps
1780
  - ffmpeg: don't require key frame for seeking
1781
  - fix CUE track seeking
1782 1783
* output:
  - openal: auto-fallback to mono if channel count is unsupported
1784 1785 1786
* player:
  - make seeking to CUE track more reliable
  - the "seek" command works when MPD is stopped
1787
  - restore song position from state file (bug fix)
1788
  - fix crash that sometimes occurred when audio device fails on startup
1789
  - fix absolute path support in playlists
1790
* WIN32: close sockets properly
1791
* install systemd service file if systemd is available
1792 1793


Avuton Olrich's avatar
Avuton Olrich committed
1794
ver 0.16.4 (2011/09/01)
1795
* don't abort configure when avahi is not found
1796
* auto-detect libmad without pkg-config
Max Kellermann's avatar
Max Kellermann committed
1797
* fix memory leaks
1798
* don't resume playback when seeking to another song while paused
1799
* apply follow_inside_symlinks to absolute symlinks
1800
* fix playback discontinuation after seeking
1801 1802
* input:
  - curl: limit the receive buffer size
1803
  - curl: implement a hard-coded timeout of 10 seconds
1804 1805
* decoder:
  - ffmpeg: workaround for semantic API change in recent ffmpeg versions
1806
  - flac: validate the sample rate when scanning the tag
1807
  - wavpack: obey all decoder commands, stop at CUE track border
1808 1809
* encoder:
  - vorbis: don't send end-of-stream on flush
1810 1811
* output:
  - alsa: fix SIGFPE when alsa announces a period size of 0
1812
  - httpd: don't warn on client disconnect
1813
  - osx: don't drain the buffer when closing
1814
  - pulse: fix deadlock when resuming the stream
1815
  - pulse: fix deadlock when the stream was suspended
1816 1817


Avuton Olrich's avatar
Avuton Olrich committed
1818
ver 0.16.3 (2011/06/04)
1819
* fix assertion failure in audio format mask parser
1820
* fix NULL pointer dereference in playlist parser
1821
* fix playlist files in base music directory
1822
* database: allow directories with just playlists
1823
* decoder:
1824
  - ffmpeg: support libavcodec 0.7
1825 1826


Avuton Olrich's avatar
Avuton Olrich committed
1827
ver 0.16.2 (2011/03/18)
1828 1829
* configure.ac:
  - fix bashism in tremor test
1830 1831
* decoder:
  - tremor: fix configure test
1832
  - gme: detect end of song
1833 1834
* encoder:
  - vorbis: reset the Ogg stream after flush
1835 1836
* output:
  - httpd: fix uninitialized variable
1837
  - httpd: include sys/socket.h
1838
  - oss: AFMT_S24_PACKED is little-endian
1839
  - oss: disable 24 bit playback on FreeBSD
1840 1841


Max Kellermann's avatar
Max Kellermann committed
1842
ver 0.16.1 (2011/01/09)
1843
* audio_check: fix parameter in prototype
1844
* add void casts to suppress "result unused" warnings (clang)
1845 1846
* input:
  - ffado: disable by default
1847 1848
* decoder:
  - mad: work around build failure on Solaris
1849
  - resolve modplug vs. libsndfile cflags/headers conflict
1850 1851
* output:
  - solaris: add missing parameter to open_cloexec() cal
1852
  - osx: fix up audio format first, then apply it to device
1853
* player_thread: discard empty chunks while cross-fading
1854
* player_thread: fix assertion failure due to early seek
1855
* output_thread: fix double lock
1856 1857


Avuton Olrich's avatar
Avuton Olrich committed
1858
ver 0.16 (2010/12/11)
1859 1860
* protocol:
  - send song modification time to client
1861
  - added "update" idle event
1862
  - removed the deprecated "volume" command
1863
  - added the "findadd" command
1864
  - range support for "delete"
1865
  - "previous" really plays the previous song
1866
  - "addid" with negative position is deprecated
1867
  - "load" supports remote playlists (extm3u, pls, asx, xspf, lastfm://)
1868
  - allow changing replay gain mode on-the-fly
1869
  - omitting the range end is possible
1870
  - "update" checks if the path is malformed
1871
* archive:
1872
  - iso: renamed plugin to "iso9660"
1873
  - zip: renamed plugin to "zzip"
1874
* input:
1875
  - lastfm: obsolete plugin removed
1876
  - ffmpeg: new input plugin using libavformat's "avio" library
1877
* tags:
Bart Nagel's avatar
Bart Nagel committed
1878
  - added tags "ArtistSort", "AlbumArtistSort"
1879
  - id3: revised "performer" tag support
1880
  - id3: support multiple values
1881
  - ape: MusicBrainz tags
1882
  - ape: support multiple values
1883
* decoders:
1884
  - don't try a plugin twice (MIME type & suffix)
1885
  - don't fall back to "mad" unless no plugin matches
1886
  - ffmpeg: support multiple tags
1887
  - ffmpeg: convert metadata to generic format
1888
  - ffmpeg: implement the libavutil log callback
1889
  - sndfile: new decoder plugin based on libsndfile
1890
  - flac: moved CUE sheet support to a playlist plugin
1891
  - flac: support streams without STREAMINFO block
1892
  - mikmod: sample rate is configurable
1893
  - mpg123: new decoder plugin based on libmpg123
Mike Dawson's avatar
Mike Dawson committed
1894
  - sidplay: support sub-tunes
1895
  - sidplay: implemented songlength database
1896
  - sidplay: support seeking
1897
  - sidplay: play monaural SID tunes in mono
1898
  - sidplay: play mus, str, prg, x00 files
1899
  - wavpack: activate 32 bit support
1900
  - wavpack: allow more than 2 channels
1901
  - mp4ff: rename plugin "mp4" to "mp4ff"
1902 1903
* encoders:
  - twolame: new encoder plugin based on libtwolame
1904 1905
  - flac: new encoder plugin based on libFLAC
  - wave: new encoder plugin for PCM WAV format
1906 1907
* output:
  - recorder: new output plugin for recording radio streams
1908
  - alsa: don't recover on CANCEL
1909
  - alsa: fill period buffer with silence before draining
1910
  - openal: new output plugin
1911
  - pulse: announce "media.role=music"
1912
  - pulse: renamed context to "Music Player Daemon"
1913
  - pulse: connect to server on MPD startup, implement pause
1914
  - jack: require libjack 0.100
1915
  - jack: don't disconnect during pause
1916
  - jack: connect to server on MPD startup
1917
  - jack: added options "client_name", "server_name"
1918
  - jack: clear ring buffers before activating
1919
  - jack: renamed option "ports" to "destination_ports"
1920
  - jack: support more than two audio channels
1921
  - httpd: bind port when output is enabled
1922
  - httpd: added name/genre/website configuration
1923
  - httpd: implement "pause"
1924
  - httpd: bind_to_address support (including IPv6)
1925
  - oss: 24 bit support via OSS4
1926
  - win32: new output plugin for Windows Wave
1927
  - shout, httpd: more responsive to control commands
1928
  - wildcards allowed in audio_format configuration
1929
  - consistently lock audio output objects
1930 1931
* player:
  - drain audio outputs at the end of the playlist
1932 1933
* mixers:
  - removed support for legacy mixer configuration
1934 1935
  - reimplemented software volume as mixer+filter plugin
  - per-device software/hardware mixer setting
1936 1937
* commands:
  - added new "status" line with more precise "elapsed time"
1938 1939 1940
* update:
  - automatically update the database with Linux inotify
  - support .mpdignore files in the music directory
1941
  - sort songs by album name first, then disc/track number
1942
  - rescan after metadata_to_use change
1943
* normalize: upgraded to AudioCompress 2.0
1944
  - automatically convert to 16 bit samples
1945 1946
* replay gain:
  - reimplemented as a filter plugin
1947
  - fall back to track gain if album gain is unavailable
1948
  - optionally use hardware mixer to apply replay gain
1949
  - added mode "auto"
1950
  - parse replay gain from APE tags
1951
* log unused/unknown block parameters
1952
* removed the deprecated "error_file" option
1953
* save state when stopped
1954
* renamed option "--stdout" to "--stderr"
1955
* removed options --create-db and --no-create-db
1956
* state_file: save only if something has changed
1957
* database: eliminated maximum line length
1958
* log: redirect stdout/stderr to /dev/null if syslog is used
1959
* set the close-on-exec flag on all file descriptors
1960
* pcm_volume, pcm_mix: implemented 32 bit support
1961
* support packed 24 bit samples
1962
* CUE sheet support
1963
* support for MixRamp tags
1964
* obey $(sysconfdir) for default mpd.conf location
1965
* build with large file support by default
1966
* added test suite ("make check")
1967
* require GLib 2.12
1968
* added libwrap support
1969
* make single mode 'sticky'
1970 1971


1972
ver 0.15.17 (2011/??/??)
1973 1974
* encoder:
  - vorbis: reset the Ogg stream after flush
1975 1976
* decoders:
  - vorbis: fix tremor support
1977 1978


Avuton Olrich's avatar
Avuton Olrich committed
1979
ver 0.15.16 (2011/03/13)
1980 1981
* output:
  - ao: initialize the ao_sample_format struct
1982
  - jack: fix crash with mono playback
1983 1984
* encoders:
  - lame: explicitly configure the output sample rate
1985
* update: log all file permission problems
1986 1987


Max Kellermann's avatar
Max Kellermann committed
1988
ver 0.15.15 (2010/11/08)
1989 1990
* input:
  - rewind: fix assertion failure
1991 1992
* output:
  - shout: artist comes first in stream title
1993 1994


Avuton Olrich's avatar
Avuton Olrich committed
1995
ver 0.15.14 (2010/11/06)
1996
* player_thread: fix assertion failure due to wrong music pipe on seek
1997
* output_thread: fix assertion failure due to race condition in OPEN
1998 1999
* input:
  - rewind: fix double free bug
2000 2001 2002
* decoders:
  - mp4ff, ffmpeg: add extension ".m4b" (audio book)

2003

Avuton Olrich's avatar
Avuton Olrich committed
2004
ver 0.15.13 (2010/10/10)
2005
* output_thread: fix race condition after CANCEL command
2006 2007
* output:
  - httpd: fix random data in stream title
2008
  - httpd: MIME type audio/ogg for Ogg Vorbis
2009 2010
* input:
  - rewind: update MIME not only once
2011
  - rewind: enable for MMS
2012 2013


Max Kellermann's avatar
Max Kellermann committed
2014
ver 0.15.12 (2010/07/20)
2015 2016
* input:
  - curl: remove assertion after curl_multi_fdset()
2017 2018
* tags:
  - rva2: set "gain", not "peak"
2019 2020
* decoders:
  - wildmidi: support version 0.2.3
2021 2022


Avuton Olrich's avatar
Avuton Olrich committed
2023
ver 0.15.11 (2010/06/14)
2024 2025
* tags:
  - ape: support album artist
2026
* decoders:
2027
  - mp4ff: support tags "album artist", "albumartist", "band"
2028
  - mikmod: fix memory leak
2029
  - vorbis: handle uri==NULL
2030
  - ffmpeg: fix memory leak
2031
  - ffmpeg: free AVFormatContext on error
2032
  - ffmpeg: read more metadata
2033
  - ffmpeg: fix libavformat 0.6 by using av_open_input_stream()
2034
* playlist: emit IDLE_OPTIONS when resetting single mode
2035
* listen: make get_remote_uid() work on BSD
2036 2037


Avuton Olrich's avatar
Avuton Olrich committed
2038
ver 0.15.10 (2010/05/30)
2039 2040
* input:
  - mms: fix memory leak in error handler
2041
  - mms: initialize the "eof" attribute
2042 2043
* decoders:
  - mad: properly calculate ID3 size without libid3tag
2044 2045


Avuton Olrich's avatar
Avuton Olrich committed
2046
ver 0.15.9 (2010/03/21)
2047 2048
* decoders:
  - mad: fix crash when seeking at end of song
2049
  - mpcdec: fix negative shift on fixed-point samples
2050
  - mpcdec: fix replay gain formula with v8
2051
* playlist: fix single+repeat in random mode
2052
* player: postpone song tags during cross-fade
2053 2054


Avuton Olrich's avatar
Avuton Olrich committed
2055
ver 0.15.8 (2010/01/17)
2056 2057
* input:
  - curl: allow rewinding with Icy-Metadata
2058 2059
* decoders:
  - ffmpeg, flac, vorbis: added more flac/vorbis MIME types
2060
  - ffmpeg: enabled libavformat's file name extension detection
2061
* dbUtils: return empty tag value only if no value was found
2062
* decoder_thread: fix CUE track playback
2063
* queue: don't repeat current song in consume mode
2064 2065


Avuton Olrich's avatar
Avuton Olrich committed
2066
ver 0.15.7 (2009/12/27)
2067 2068
* archive:
  - close archive when stream is closed
2069
  - iso, zip: fixed memory leak in destructor
2070 2071
* input:
  - file: don't fall back to parent directory
2072
  - archive: fixed memory leak in error handler
2073 2074
* tags:
  - id3: fix ID3v1 charset conversion
2075
* decoders:
2076
  - eliminate jitter after seek failure
2077
  - ffmpeg: don't try to force stereo
2078
  - wavpack: allow fine-grained seeking
2079
* mixer: explicitly close all mixers on shutdown
2080
* mapper: fix memory leak when playlist_directory is not set
2081
* mapper: apply filesystem_charset to playlists
2082
* command: verify playlist name in the "rm" command
2083
* database: return multiple tag values per song
2084 2085


Avuton Olrich's avatar
Avuton Olrich committed
2086
ver 0.15.6 (2009/11/18)
2087 2088
* input:
  - lastfm: fixed variable name in GLib<2.16 code path
2089
  - input/mms: require libmms 0.4
2090 2091
* archive:
  - zzip: require libzzip 0.13
2092 2093
* tags:
  - id3: allow 4 MB RIFF/AIFF tags
2094 2095
* decoders:
  - ffmpeg: convert metadata
2096
  - ffmpeg: align the output buffer
2097
  - oggflac: rewind stream after FLAC detection
2098
  - flac: fixed CUE seeking range check
2099
  - flac: fixed NULL pointer dereference in CUE code
2100
* output_thread: check again if output is open on PAUSE
2101
* update: delete ignored symlinks from database
2102
* database: increased maximum line length to 32 kB
2103
* sticker: added fallback for sqlite3_prepare_v2()
2104 2105


Avuton Olrich's avatar
Avuton Olrich committed
2106
ver 0.15.5 (2009/10/18)
2107 2108
* input:
  - curl: don't abort if a packet has only metadata
2109
  - curl: fixed endless loop during buffering
2110 2111
* tags:
  - riff, aiff: fixed "limited range" gcc warning
2112 2113
* decoders:
  - flac: fixed two memory leaks in the CUE tag loader
2114
* decoder_thread: change the fallback decoder name to "mad"
2115
* output_thread: check again if output is open on CANCEL
2116
* update: fixed memory leak during container scan
2117 2118


Avuton Olrich's avatar
Avuton Olrich committed
2119
ver 0.15.4 (2009/10/03)
2120 2121
* decoders:
  - vorbis: revert "faster tag scanning with ov_test_callback()"
2122
  - faad: skip assertion failure on large ID3 tags
2123
  - ffmpeg: use the "artist" tag if "author" is not present
2124 2125
* output:
  - osx: fix the OS X 10.6 build
2126 2127


Avuton Olrich's avatar
Avuton Olrich committed
2128
ver 0.15.3 (2009/08/29)
2129 2130
* decoders:
  - vorbis: faster tag scanning with ov_test_callback()
2131 2132
* output:
  - fix stuttering due to uninitialized variable
2133
* update: don't re-read unchanged container files
2134 2135


Avuton Olrich's avatar
Avuton Olrich committed
2136
ver 0.15.2 (2009/08/15)
2137 2138
* tags:
  - ape: check the tag size (fixes integer underflow)
2139
  - ape: added protection against large memory allocations
2140 2141
* decoders:
  - mad: skip ID3 frames when libid3tag is disabled
2142
  - flac: parse all replaygain tags
2143
  - flac: don't allocate cuesheet twice (memleak)
2144 2145
* output:
  - shout: fixed stuck pause bug
2146
  - shout: minimize the unpause latency
2147
* update: free empty path string (memleak)
2148
* update: free temporary string in container scan (memleak)
2149
* directory: free empty directories after removing them (memleak)
2150 2151


Avuton Olrich's avatar
Avuton Olrich committed
2152
ver 0.15.1 (2009/07/15)
Max Kellermann's avatar
Max Kellermann committed
2153
* decoders:
2154
  - flac: fix assertion failure in tag_free() call
2155 2156
* output:
  - httpd: include sys/types.h (fixes Mac OS X)
2157 2158
* commands:
  - don't resume playback when stopping during pause
2159
* database: fixed NULL pointer dereference after charset change
2160
* log: fix double free() bug during shutdown
2161 2162


Avuton Olrich's avatar
Avuton Olrich committed
2163
ver 0.15 (2009/06/23)
Max Kellermann's avatar
Max Kellermann committed
2164 2165
* input:
  - parse Icy-Metadata
2166
  - added support for the MMS protocol
2167
  - hide HTTP password in playlist
2168
  - lastfm: new input plugin for last.fm radio (experimental and incomplete!)
2169
  - curl: moved proxy settings to "input" block
Max Kellermann's avatar
Max Kellermann committed
2170 2171
* tags:
  - support the "album artist" tag
2172
  - support MusicBrainz tags
Max Kellermann's avatar
Max Kellermann committed
2173
  - parse RVA2 tags in mp3 files
2174 2175 2176
  - 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
2177 2178
* decoders:
  - audiofile: streaming support added
2179
  - audiofile: added 24 bit support
Max Kellermann's avatar
Max Kellermann committed
2180 2181
  - modplug: another MOD plugin, based on libmodplug
  - mikmod disabled by default, due to severe security issues in libmikmod
2182
  - sidplay: new decoder plugin for C64 SID (using libsidplay2)
2183 2184
  - fluidsynth: new decoder plugin for MIDI files (using libfluidsynth,
    experimental due to shortcomings in libfluidsynth)
2185
  - wildmidi: another decoder plugin for MIDI files (using libwildmidi)
Max Kellermann's avatar
Max Kellermann committed
2186
  - flac: parse stream tags
2187
  - mpcdec: support the new libmpcdec SV8 API
2188
  - added configuration option to disable decoder plugins
2189 2190
  - flac: support embedded cuesheets
  - ffmpeg: updated list of supported formats
Max Kellermann's avatar
Max Kellermann committed
2191
* audio outputs:
2192
  - added option to disable audio outputs by default
2193
  - wait 10 seconds before reopening after play failure
Max Kellermann's avatar
Max Kellermann committed
2194
  - shout: enlarged buffer size to 32 kB
2195
  - null: allow disabling synchronization
2196
  - mvp: fall back to stereo
2197
  - mvp: fall back to 16 bit audio samples
2198
  - mvp: check for reopen errors
2199
  - mvp: fixed default device detection
2200
  - pipe: new audio output plugin which runs a command
2201
  - alsa: better period_time default value for high sample rates
2202
  - solaris: new audio output plugin for Solaris /dev/audio
2203 2204
  - httpd: new audio output plugin for web based streaming, similar to icecast
     but built in.
Max Kellermann's avatar
Max Kellermann committed
2205
* commands:
2206
  - "playlistinfo" and "move" supports a range now
Max Kellermann's avatar
Max Kellermann committed
2207
  - added "sticker database", command "sticker", which allows clients
2208 2209 2210 2211
     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.
2212 2213 2214
* mixers:
  - rewritten mixer code to support multiple mixers
  - new pulseaudio mixer
2215 2216
  - alsa: new mixer_index option supports choosing between multiple
    identically-named controls on a device.
2217 2218 2219 2220
* Add audio archive extraction support:
  - bzip2
  - iso9660
  - zip
2221
* the option "error_file" was removed, all messages are logged into
2222
   "log_file"
Max Kellermann's avatar
Max Kellermann committed
2223
* support logging to syslog
2224
* fall back to XDG music directory if no music_directory is configured
2225
* failure to read the state file is non-fatal
2226
* --create-db starts the MPD daemon instead of exiting
2227
* playlist_directory and music_directory are optional
2228
* playlist: recalculate the queued song after random is toggled
2229
* playlist: don't unpause on delete
2230
* pause when all audio outputs fail to play
2231
* daemon: ignore "user" setting if already running as that user
2232
* listen: fix broken client IP addresses in log
2233
* listen: bind failure on secondary address is non-fatal
2234 2235
* 24/32 bit audio support
* print available protocols in --version
2236
* fill buffer after seeking
2237
* choose the fallback resampler at runtime
2238 2239 2240
* steps taken towards win32 compatibility
* require glib 2.6 or greater
* built-in documentation using doxygen and docbook
2241 2242


Avuton Olrich's avatar
Avuton Olrich committed
2243
ver 0.14.2 (2009/02/13)
2244 2245
* configure.ac:
  - define HAVE_FFMPEG after all checks
2246 2247
* decoders:
  - ffmpeg: added support for the tags comment, genre, year
2248
  - ffmpeg: don't warn of empty packet output
2249
  - ffmpeg: check if the time stamp is valid
2250
  - ffmpeg: fixed seek integer overflow
2251 2252
  - ffmpeg: enable WAV streaming
  - ffmpeg: added TTA support
2253
  - wavpack: pass NULL if the .wvc file fails to open
2254
  - mikmod: call MikMod_Exit() only in the finish() method
2255
  - aac: fix stream metadata
2256 2257
* audio outputs:
  - jack: allocate ring buffers before connecting
2258
  - jack: clear "shutdown" flag on reconnect
2259
  - jack: reduced sleep time to 1ms
2260
  - shout: fixed memory leak in the mp3 encoder
2261
  - shout: switch to blocking mode
2262
  - shout: use libshout's synchronization
2263
  - shout: don't postpone metadata
2264
  - shout: clear buffer before calling the encoder
2265
* mapper: remove trailing slashes from music_directory
2266
* player: set player error when output device fails
2267
* update: recursively purge deleted directories
2268
* update: free deleted subdirectories
2269

Avuton Olrich's avatar
Avuton Olrich committed
2270
ver 0.14.1 (2009/01/17)
2271 2272 2273
* decoders:
  - mp4: support the writer/composer tag
  - id3: strip leading and trailing whitespace from ID3 tags
2274
  - oggvorbis: fix tremor support
2275
  - oggvorbis: disable seeking on remote files
2276 2277 2278 2279 2280 2281 2282 2283
* 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
2284
  - fix assertion failure on "connection refused"
2285
  - fix assertion failure with empty HTTP responses
2286
* corrected the sample calculation in the fallback resampler
2287 2288 2289 2290 2291
* 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
2292 2293 2294 2295 2296 2297 2298
* 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
2299
ver 0.14 (2008/12/25)
2300
* audio outputs:
2301
  - wait 10 seconds before reopening a failed device
2302 2303 2304 2305
  - fifo: new plugin
  - null: new plugin
  - shout: block while trying to connect instead of failing
  - shout: new timeout parameter
2306 2307
  - shout: support mp3 encoding and the shoutcast protocol
  - shout: send silence during pause, so clients don't get disconnected
2308
* decoders:
2309
  - ffmpeg: new plugin
2310
  - wavpack: new plugin
2311
  - aac: stream support added
2312
  - mod: disabled by default due to critical bugs in all libmikmod versions
2313 2314
* commands:
  - "addid" takes optional second argument to specify position
2315
  - "idle" notifies the client when a notable change occurs
2316
* Zeroconf support using Bonjour
2317
* New zeroconf_enabled option so that Zeroconf support can be disabled
2318 2319
* 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
2320
* Support for reading ReplayGain from LAME tags on MP3s
2321 2322 2323 2324 2325 2326 2327 2328
* 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
2329 2330
* symbolic links in the music directory can be disabled; the default
  is to ignore symlinks pointing outside the music directory
2331

2332
ver 0.13.0 (2007/5/28)
2333 2334
* New JACK audio output
* Support for "file" as an alternative to "filename" in search, find, and list
Avuton Olrich's avatar
Avuton Olrich committed
2335
* FLAC 1.1.3 API support
2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347
* 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
2348
* New tagtypes command for retrieving a list of available tag types
2349
* Fix a bug where no ACK was returned if loading a playlist failed
2350
* Fix a bug where db_update in stats would be 0 after initial database creation
2351
* New count command for getting stats on found songs (similar to "find")
2352 2353
* New playlistmove command for moving songs in stored playlists
* New playlistdelete command for deleting songs from stored playlists
2354
* New rename command for renaming stored playlists
2355
* Increased default buffer_before_play from 0% to 10% to prevent skipping
2356 2357
* Lots of bug fixes, cleaned up code, and performance improvements

2358 2359 2360
ver 0.12.2 (2007/3/20)
* Fix a bug where clients could cause MPD to segfault

2361
ver 0.12.1 (2006/10/10)
2362 2363 2364 2365 2366 2367
* 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

2368
ver 0.12.0 (2006/9/22)
2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391
* 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
2392
* Can now specify any supported metadata type or "any" in search, find, and list
2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405
* 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

2406
ver 0.11.5 (2004/11/1)
2407 2408
1) New id3v1_encoding config option to configure the id3v1 tag encoding (patch
from dottedmag)
2409 2410 2411
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
2412 2413
5) Fix a bug when fetching metadata from streams that may cause certain
weirdnesses
2414 2415
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
2416 2417
8) Fix a bug in forgetting to remove leading ' ' in content-type for http
streams
2418 2419
9) Check for ice-name in http headers
10) Be sure the strip all '\n' chars in tags
2420 2421
11) Set $HOME env variable when setuid'ing, this should fix the /root/.mcop
errors triggered by arts/libao
2422

2423 2424 2425 2426
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
2427 2428 2429 2430
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
2431 2432 2433 2434 2435 2436 2437 2438
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
2439
6) Updated mpdconf.example from sbh/avuton
2440 2441
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
2442

2443
ver 0.11.2 (2004/7/5) 
2444 2445
1) Work around in computing total time for mp3's whose first valid mpeg frame is
not layer III
2446 2447 2448 2449 2450
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)

2451 2452 2453 2454 2455 2456
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
2457 2458
6) Fix addPathToDB() so updating on a specific path doesn't exist correctly adds
the parent directories to the DB
2459

2460
ver 0.11.0 (2004/6/18)
2461 2462 2463
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)
2464 2465
4) audio_output_format option that allows for all audio output to be converted
to a format compatible with any sound card
2466 2467
5) Own routines for to always support UTF-8 <-> ISO-8859-1 conversion
6) Added "Id" and "Pos" metadata for songs in playlist
2468 2469
7) Added commands: plchanges, currentsong, playid, seekid, playlistid, moveid,
swapid, deleteid
2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481
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
2482 2483
20) Default port is now 6600
21) Lots of other cleanups and Bugfixes
2484

2485 2486 2487 2488
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
2489 2490
4) Ingore CRC stuff in mp3's since some encoders did not compute the CRC
correctly
2491 2492
5) Fix a segfault in processing faulty mp4 metadata

2493 2494 2495
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
2496 2497 2498 2499
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
2500
5) add --disable-alsa for disabling alsa mixer support
Warren Dukes's avatar
Warren Dukes committed
2501
6) Use select() for a portable usleep()
2502
7) For alsa mixer, default to "Master' element, not first element
2503

Warren Dukes's avatar
Warren Dukes committed
2504 2505
ver 0.10.2 (2004/3/25)
1) Add suport for AAC
2506
2) Substitute '\n' with ' ' in tag info
Warren Dukes's avatar
Warren Dukes committed
2507 2508 2509 2510 2511
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
2512
8) Fix a bug where alsa mixer wasn't detecting volume changes
2513 2514
9) For alsa and software mixer, show volume to be the same as it was set (even
if its not the exact volume)
2515
10) Report bitrate for wave files
2516
11) Compute song length of CBR mp3's more accurately
Warren Dukes's avatar
Warren Dukes committed
2517

2518
ver 0.10.1 (2004/3/7)
2519
1) Check to see if we need to add "-lm" when linking mpd
2520 2521
2) Fix issues with skipping bad frames in an mp3 (this way we get the correct
samplerate and such)
2522
3) Fix crossfading bug with ogg's
2523
4) Updated libmad and libid3tag included w/ source to 0.15.1b
2524

2525
ver 0.10.0 (2004/3/3)
2526 2527 2528 2529 2530 2531 2532 2533 2534 2535
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
2536 2537 2538 2539 2540
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
2541 2542
16) Fix a bug, where one process may segfault, and cause more processes to spawn
w/o killing ones that lost their parent.
2543
17) Fix a bug when the OSS device was unable to fetch the current volume,
2544 2545
it would close the device (when it maybe previously closed by the exact same
code)
2546 2547
18) command.c cleanup by mackstann
19) directory.c and command.c cleanup by tw-nym
2548

Warren Dukes's avatar
Warren Dukes committed
2549 2550
ver 0.9.4 (2004/1/21)
1) Fix a bug where updated tag info wasn't being detected
2551 2552
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
2553
3) Make audio write size configurable via "audio_write_size" config option
2554 2555
4) Tweak output buffer size for connections by detecting the kernel output
buffer size.
Warren Dukes's avatar
Warren Dukes committed
2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570

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
2571 2572
3) Add mixer_control options to configure which mixer control/device mpd
controls
Warren Dukes's avatar
Warren Dukes committed
2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606
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)
2607 2608
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
2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694

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