summaryrefslogtreecommitdiff
path: root/NEWS
AgeCommit message (Collapse)Author
2020-07-02Merge branch 'v0.21.x'Max Kellermann
2020-07-02output/osx: don't restart AudioUnit at the end of Cancel()Max Kellermann
We shouldn't restart the AudioUnit while the ring buffer is empty, or else our render callback may emit noise. Closes https://github.com/MusicPlayerDaemon/MPD/issues/771
2020-07-01Merge branch 'v0.21.x'Max Kellermann
2020-07-01decoder/opus: implement End Trimming (RFC7845 4.4)Max Kellermann
Closes https://github.com/MusicPlayerDaemon/MPD/issues/867
2020-07-01decoder/opus: allocate buffer only in the first chained songMax Kellermann
Fixes memory leak. That's what we get for
2020-07-01decoder/opus: apply pre-skip (RFC7845 4.2)Max Kellermann
Fixes the first part of https://github.com/MusicPlayerDaemon/MPD/issues/867
2020-07-01output/osx: improve sample rate selectionMax Kellermann
The formula in osx_output_score_sample_rate() to detect multiples of the source sample rate was broken: when given a 44.1 kHz input file, it preferred 16 kHz over 48 kHz, because its `frac_portion(16)=0.75` is smaller than `frac_portion(48)=0.91`. That formula, introduced by commit 40a1ebee295c569, looks completely wrong. It doesn't do what the code comment pretends it does. Instead of using that `frac_portion` to calculate a score, this patch adds to the score only if `frac_portion` is nearly `0` or `1`. This means that the factor is nearly integer. Closes https://github.com/MusicPlayerDaemon/MPD/issues/904
2020-07-01Merge branch 'v0.21.x'Max Kellermann
2020-07-01python/build/meson.py: set BOOST_ROOT for Meson 0.54Max Kellermann
Commit https://github.com/mesonbuild/meson/commit/08224dafcba1b694fb624553e7d84deb565aae22 changed Meson to require BOOST_ROOT for cross builds.
2020-07-01input/file: detect premature end of fileMax Kellermann
A bug report (https://github.com/MusicPlayerDaemon/MPD/issues/912) suggests that on Linux, reading on `cifs` files may rarely return 0 (= end of file) before the end of the file has really been reached. But that's just a theory which I need to validate, so this runtime check shall catch this condition before the assertion in DecoderBridge::Read() crashes MPD. Let's see. Closes https://github.com/MusicPlayerDaemon/MPD/issues/912
2020-06-22util/UriUtil: strip credentials from smb:// URIsMax Kellermann
Closes https://github.com/MusicPlayerDaemon/MPD/issues/910
2020-06-11queue/PlaylistEdit: fix crash in SetSongIdRange() while playingMax Kellermann
An assertion failure in UpdateQueuedSong() could trigger because the `prev` parameter is always `nullptr`, but `queued` may be set. And in fact, calling UpdateQueuedSong() is only necessary when the queued song was edited, to re-queue it with the new range. Closes https://github.com/MusicPlayerDaemon/MPD/issues/901
2020-06-11increment version number to 0.21.25Max Kellermann
2020-06-10Merge tag 'v0.21.24'Max Kellermann
release v0.21.24
2020-06-10release v0.21.24v0.21.24Max Kellermann
2020-06-10lib/curl/Request: don't enable CURLOPT_NETRC on WindowsMax Kellermann
Our Windows build is built with `--disable-netrc`, and that makes CURLOPT_NETRC fail, causing failures with all streams. D'oh! Closes https://github.com/MusicPlayerDaemon/MPD/issues/886
2020-06-10{android,win32}/build.py: enable the GME decoder pluginMax Kellermann
Closes https://github.com/MusicPlayerDaemon/MPD/issues/891
2020-06-10decoder/Bridge: add flag to make initial seek errors fatalMax Kellermann
When the client wants to seek, but the decoder has already finished decoding the current song, the player restarts the decoder with an initial seek at the new position. When this initial seek fails, MPD pretends nothing has happened and plays this song from the start. With this new flag, a restarted decoder marks the initial seek as "essential" and fails the decoder if that seek fails. Closes https://github.com/MusicPlayerDaemon/MPD/issues/895
2020-05-27lib/upnp: drop support for libupnp versions older than 1.8Max Kellermann
2020-05-27Merge branch 'v0.21.x'Max Kellermann
2020-05-27{android,win32}/build.py: build libmodplug and WildMidiMax Kellermann
Closes https://github.com/MusicPlayerDaemon/MPD/issues/866
2020-05-27decoder/modplug: assume ModPlug is built as static library on WindowsMax Kellermann
2020-05-27decoder/wildmidi: use NarrowPath, fixing the Windows buildMax Kellermann
2020-05-27meson.build: attempt to detect WildMidi using pkg-configMax Kellermann
The WildMidi project added the pkg-config file in version 0.3.3, but unfortunately, Debian still doesn't ship it 4 years later: https://bugs.debian.org/916631 However, for cross-compiling, the pkg-config file is very helpful.
2020-05-27NEWS: move two lines below Windows/AndroidMax Kellermann
2020-05-26meson.build: work around Meson bug detecting strndup() on WindowsMax Kellermann
Work around Meson bug https://github.com/mesonbuild/meson/issues/3672
2020-05-07Merge branch 'v0.21.x'Max Kellermann
2020-05-07android/build.py: use -mfpu=vfpv3-d16 on ARMv7Max Kellermann
This flag is used by the Android NDK build scripts as well, and this fixes a build failure (assembler error) with FFmpeg and NDK r21.
2020-05-05Merge branch 'v0.21.x'Max Kellermann
2020-05-05db/simple: fix crash when mounting twiceMax Kellermann
The `db->close()` call was a `nullptr` dereference because the `db` variable had already been moved. Closes https://github.com/MusicPlayerDaemon/MPD/issues/839
2020-05-05input/uring: new input plugin using io_uringMax Kellermann
This is the final piece of the series to establish io_uring support on Linux. MPD doesn't need io_uring for its efficient bulk I/O support, but to allow file I/O to be cancelled. This is a big problem on CIFS/NFS mounts where processes sleep uninterruptable if the file server disappears, deadlocking MPD. With io_uring, a flaky NFS connection allows MPD to continue to work (even though there are still deadlocks inside MPD which need to be addressed). This plugin does not yet use cancellable `open()` using `IORING_OP_OPENAT`. This will be implemented later. Lots of other optimization opportunities for io_uring are still missing as well - for example the database update could benefit a lot, but unfortunately, io_uring doesn't have `readdir()` support just yet.
2020-04-30Add info about new song length formatskidoo23
2020-04-30command/all: "tagtypes" requires no permissionsMax Kellermann
The command is used to configure the client's connection, and this shouldn't require any permissions. The client should be able to do that before sending a password.
2020-04-30Revert "Fix unsafe float comparison."Max Kellermann
This reverts commit a5273d699274c0a6274052bb80fcfdd5c7fac88b. It was wrong and broke the MixRamp unit test. Closes https://github.com/MusicPlayerDaemon/MPD/issues/844
2020-04-29increment version number to 0.21.24Max Kellermann
2020-04-23Merge tag 'v0.21.23'Max Kellermann
release v0.21.23
2020-04-23release v0.21.23v0.21.23Max Kellermann
2020-04-23event/SocketMonitor: handle epoll_ctl()=EBADF/ENOENT in Schedule()Max Kellermann
This fixes a freeze bug in the NFS input/storage plugins: when libnfs auto-reconnets after a failure, it installs the new socket on the same file descriptor number. MPD's attempt to unregister the old socket by calling SocketMonitor::Steal() from NfsConnection::ScheduleSocket() fails because the new/old socket number is not registered in epoll, so epoll_ctl() returns ENOENT. The problem is that it left `scheduled_flags`, and so subsequent Schedule() calls will use `EPOLL_CTL_MOD`, which will fail again and again. Instead, we need to use `EPOLL_CTL_ADD` to register the new socket. Closes https://github.com/MusicPlayerDaemon/MPD/issues/806 Closes https://github.com/MusicPlayerDaemon/MPD/issues/756
2020-04-23lib/nfs/FileReader: set `state=IDLE` before invoking callbackMax Kellermann
Fixes assertion failure if the callback fails.
2020-04-22tag/Fallback: add tag fallback for AlbumSortgeneticdrift
Closes https://github.com/MusicPlayerDaemon/MPD/issues/832
2020-04-22gme: adapt to API change in the upcoming version 0.7.0Max Kellermann
Closes https://github.com/MusicPlayerDaemon/MPD/issues/833
2020-04-22lib/icu/CaseFold: remove Windows implementationMax Kellermann
Reverts commit fb3564fbe76a10a0825bd06c0ff19f481d94b835 LCMapStringEx() doesn't do what I imagined it would do 5 years ago. D'oh! Closes https://github.com/MusicPlayerDaemon/MPD/issues/820
2020-04-15storage/curl: fix path comparison when the server escapes differentlyThomas Guillem
Unescape the base path and the path coming from the server (href) to fix the comparison when the server uses different escaped characters. The outputted name need to be unescaped. Doing that before or after the HrefToEscapedName() call should not change the current behavior.
2020-04-15storage/curl: fix href when file has a '&' charThomas Guillem
If the file name is "Hello & bye", 3 CharacterData events will be sent with the State::HREF state: - "Hello%20" - "&" - "%20bye" Reproduced with files hosted on an apache2 DAV server: 2.4.38-3+deb10u3.
2020-04-15Added missing channel order setups for ALSAFlorian Heese
2020-04-14NEWS: add line about Solaris changeMax Kellermann
2020-04-14player/Thread: drain outputs at end of song in "single" modeMax Kellermann
Without this, the Pause() call would drop the ring buffers and would skip a considerable portion of the end of the song. Closes https://github.com/MusicPlayerDaemon/MPD/issues/824
2020-04-14increment version number to 0.21.23Max Kellermann
2020-04-02Merge tag 'v0.21.22'Max Kellermann
release v0.21.22
2020-04-02release v0.21.22v0.21.22Max Kellermann