summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-12-03MusicChunk: initialize replay_gain_serial on demandMax Kellermann
2017-12-03player/Thread: initialize MusicChunk::bit_rate in SendSilence()Max Kellermann
This attribute is not particularly important, but it was uninitialized.
2017-12-02queue/PlaylistEdit: shuffle appended songs only within its priority groupMax Kellermann
Fixes #165.
2017-12-02queue/PlaylistControl: don't skip highest priority song on "play"Max Kellermann
When starting playback with a specific song which does not have the highest priority, the previous highest priority song was skipped completely because its order was "swapped". This commit changes to a more expensive operation which inserts the selected song into the order list. This fixes a small part of #165
2017-12-02lib/upnp/Compat: disable the 1.8 API emulation with libupnp 1.6.24Max Kellermann
libupnp 1.6.24 added a few badly designed macros which break the MPD build: https://sourceforge.net/p/pupnp/code/ci/8177a4195a4d4a5d6cb095eaf4ca5b65ac446381/ To work around this, we disable our emulation functions (from 714011c81ed6053f7a35812071499356f337dd70) on this libupnp version. Closes #163
2017-11-27Fix for "Mount-Points are purged from database on update/rescan."FlashSystems
Signed-off-by: FlashSystems <developer@flashsystems.de>
2017-11-27increment version number to 0.20.13Max Kellermann
2017-11-25release v0.20.12v0.20.12Max Kellermann
2017-11-16lib/upnp: adapt to libupnp 1.8 API changesMax Kellermann
Closes #155
2017-11-16lib/upnp/Callback: make "evp" parameter constMax Kellermann
2017-11-16lib/upnp/Discovery: make Upnp_Discovery pointers constMax Kellermann
2017-11-14playlist/PlaylistRegistry: use LockRewind() instead of Rewind()Max Kellermann
Fixes a deadlock caused by commit 31ab78ae8e10af948ec95496df0d2abf1ea631a4. That commit was not actually bad - just these two calls have always been bad, which went unnoticed for a long time.
2017-11-14output/httpd: flush encoder after tagMax Kellermann
Without the flush, ReadPage() may not return any data, or not all data. This may result in incomplete ddata the new "header" page, corrupting streams with some encoders such as Vorbis. Fixes #145
2017-11-14encoder/vorbis: default to quality 3Max Kellermann
Don't require a quality or bitrate setting. If nothing is set, don't fail startup - just go with a good default. A quality setting of 3 is what "oggenc" defaults to as well.
2017-11-13input/{cdio,ffmpeg,file,smbclient}: unlock the mutex during blocking I/OMax Kellermann
InputStream::Read() and InputStream::Seek() are called with the mutex locked. That means the implementation must not block, or unlock the mutex before calling into blocking code. Previously, a slow CD drive could stall the whole MPD process, including the main thread, due to this problem. Closes #149
2017-11-13input/smbclient: use std::lock_guardMax Kellermann
2017-11-12decoder/ffmpeg, test/test_protocol: catch exceptions by referenceMax Kellermann
Work around -Werror=catch-value.
2017-11-12configure.ac: disable -Wnoexcept-typeMax Kellermann
Workaround for #146.
2017-11-05output/Thread: ensure pending tags are flushed in all casescathugger
Fixes hanging playback with soxr resampler. Closes #139, #141
2017-11-03decoder/vorbis: scale and clip tremor-decoded samples to 15 bitsMarcin Jurkowski
Tremor decoder is unusable since commit 2ee43c4. Sound is distorted to the point where it's nothing but noise. The data from vorbis_synthesis_pcmout() needs to be scaled and clipped for 16 bit sample size. For reference see http://lists.xiph.org/pipermail/tremor/2010-April/001642.html and http://lists.xiph.org/pipermail/vorbis/2006-October/026513.html. Signed-off-by: Marcin Jurkowski <marcin1j@gmail.com>
2017-10-25player/Thread: log message when decoder is too slowMax Kellermann
2017-10-24input/curl: call StartRequest() after setting CURLOPT_RANGEMax Kellermann
It's not possible to set CURL options after curl_easy_perform(), and thus the CURLOPT_RANGE had no effect.
2017-10-24input/curl: move code to StartRequest()Max Kellermann
2017-10-24input/curl: move the range buffer to the stackMax Kellermann
From the CURLOPT_RANGE documentation: "The application does not have to keep the string around after setting this option."
2017-10-24increment version number to 0.20.12Max Kellermann
2017-10-18release v0.20.11v0.20.11Max Kellermann
2017-10-18Playlist{File,Save}: always use UTF-8 in playlists on WindowsMax Kellermann
Turns out that using CP_ACP is a lousy idea, because only very few Unicode characters can be represented by it. Instead, switch to UTF-8 (which every sane person on other operating system already uses). Closes #102
2017-10-18PlaylistSave: move code to playlist_print_path()Max Kellermann
2017-10-18queue/Playlist: call MoveOrderToCurrent() in SeekSongOrder() on song changeMax Kellermann
Applies the improvements from the previous commit to the "seek" commands, which are also capable of switching songs. Closes #119
2017-10-18queue/PlaylistControl: keep order list consistency in MoveOrderToCurrent()Max Kellermann
Our previous use of Queue::SwapOrders() could cause surprising results: - sometimes, the old "current" song would be played again (if the newly selected song had not been played already) - sometimes, the old "current" song would not be played again (if the newly selected song had already been played) This is inconsistent, because it should not depend on whether the newly selected song had already been played. So instead of Queue::SwapOrders() we now use Queue::MoveOrderAfter() and Queue::MoveOrderBefore(), which is more expensive, but also more consistent. It attempts to retain as much from the previous order list as possible, and only moves the newly selected song around.
2017-10-18queue/Playlist: move code to MoveOrderToCurrent()Max Kellermann
2017-10-18queue/Queue: add methods MoveOrderBefore() and MoveOrderAfter()Max Kellermann
2017-10-18queue/Queue: MoveOrder() returns to_orderMax Kellermann
2017-09-27decoder/Thread: clear the command after catching an exceptionMax Kellermann
If an early exception gets caught (e.g. from AllocatedPath::FromUTF8Throw()) before DecoderControl::CommandFinishedLocked() is called, the decoder thread would go in an endless loop, because DecoderCommand::START is still set. Closes #118
2017-09-27GME Plugin: fix track numberingJohn Regan
GME starts all track indexes at zero, but subtune prefixes start at one. This fixes an off-by-one error during track enumeration.
2017-09-20lib/icu/CaseFold: disable broken strxfrm() callbackMax Kellermann
2017-09-20lib/icu/Compare: add fallback using strcasecmp() and strcasestr()Max Kellermann
Our IcuCaseFold() fallback using strxfrm() is not actually case insensitive. This commit fixes the problem by switching to strcasecmp(). That function is not guaranteed to support UTF-8, but it's the best we can do in this sparse situation. Closes #111
2017-09-20SongFilter: use class IcuCompareMax Kellermann
2017-09-20lib/icu/Compare: OO wrapper for IcuCaseFold()Max Kellermann
2017-09-20lib/icu/CaseFold: add "noexcept"Max Kellermann
2017-09-20db/Selection: add missing config.hMax Kellermann
2017-09-20lib/icu/Collate: move IcuCaseFold() to CaseFold.cxxMax Kellermann
2017-09-20lib/icu/Collate: remove unnecessary assert()Max Kellermann
2017-09-19output/sndio: fix indentMax Kellermann
2017-09-19output/sndio: rename the "sio_hdl" variable to avoid clash with struct nameMax Kellermann
2017-09-18ffmpeg plugin: when decoded stream duration is unavailable, attempt fallback ↵Charlie Waters
to container duration (fix MusicPlayerDaemon/MPD#110)
2017-09-07doc/user: document the Opus encoderMax Kellermann
2017-09-04doc/protocol.xml: document status/volume=-1Max Kellermann
Closes #107
2017-09-01storage/curl: support Content-Type application/xmlMax Kellermann
2017-09-01storage/curl: use StringStartsWith()Max Kellermann