- 06 Aug, 2019 3 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
Version 10.2+0.93+1 was released five years ago in 2014 and is the first version to feature cdio_cddap_free_messages(). There is no way to check the libcdio-paranoia version at compile time, so let's just remove support for older versions instead of attempting to fix the cdio_cddap_free_messages() check at build time. Closes https://github.com/MusicPlayerDaemon/MPD/issues/613
-
- 05 Aug, 2019 2 commits
-
-
Max Kellermann authored
This reverts commit f7ed7446. It was a bad idea, because MAD_F_MIN and MAD_F_MAX do not represent the clamping limits, but the theoretical minimum and maximum values of the mad_fixed_t data type. Closes https://github.com/MusicPlayerDaemon/MPD/issues/617
-
Max Kellermann authored
-
- 04 Aug, 2019 1 commit
-
-
Max Kellermann authored
-
- 03 Aug, 2019 6 commits
-
-
ckdo authored
This is useful in multiple mpd instances scenario, or multiple pulse outputs defined on the same mpd instance. It is actually a more flexible way to route flows than the "sink" parameter, letting the PulseAudio routing do its job, but with the ability to isolate routing for each output. If not specified, the role remains like it was before this commit, ie "music"
-
Richard Dodd authored
-
Max Kellermann authored
Time to move on, two years after 2017.
-
Max Kellermann authored
-
Max Kellermann authored
The check IsSeekableCurrentSong() was added by commit 44b20024 in version 0.20.19, but it caused a regression: by doing the branch only if the current song is seekable, the player would restart the current song if it was not seekable, and later the initial seek would fail; but we already know it's not seekable, and so we should fail early.
-
Max Kellermann authored
Apparently, libmad not only inserts 529 samples of silence at the beginning of the file, but also removes them at the end. This solves the last piece of https://github.com/MusicPlayerDaemon/MPD/issues/601 Closes https://github.com/MusicPlayerDaemon/MPD/issues/601
-
- 02 Aug, 2019 3 commits
-
-
Max Kellermann authored
This also fixes a bug which caused the bit rate to not update after seeking.
-
Diomendius authored
The JACK output plugin would not correctly upmix mono input files when exactly 2 output ports were configured. This fixes that.
-
Max Kellermann authored
The "end of stream" packet is not special; it contains normal data, and thus we should pass it to OnOggPacket(). This fixes one part of https://github.com/MusicPlayerDaemon/MPD/issues/601
-
- 30 Jul, 2019 1 commit
-
-
Max Kellermann authored
Applying software volume to S16 samples means several bits of precision are lost; at 25% volume, two bits are lost. Additionally, dithering adds some noise. The problem gets worse when you apply the software volume code twice: for the software mixer volume, and again for the replay gain. This loses some more precision and adds even more dithering noise, which can become audible (see https://github.com/MusicPlayerDaemon/MPD/issues/542). By converting everything to 24 bit, we need to shift only two bits to the right instead of ten, losing nearly no precision, and dithering is not needed. Even if the output device is unable to play S24 directly, we can convert back to S16 with only one stage of dithering. Closes https://github.com/MusicPlayerDaemon/MPD/issues/542
-
- 29 Jul, 2019 2 commits
-
-
Max Kellermann authored
Closes https://github.com/MusicPlayerDaemon/MPD/issues/604
-
Max Kellermann authored
Closes https://github.com/MusicPlayerDaemon/MPD/issues/607
-
- 12 Jul, 2019 1 commit
-
-
Max Kellermann authored
-
- 03 Jul, 2019 1 commit
-
-
Max Kellermann authored
-
- 28 Jun, 2019 4 commits
-
-
Max Kellermann authored
MPD used to do that when this code lived in the player thread, but it was removed by commit 98a7c62d; and the replacement code in the ALSA output plugin didn't have it.
-
Max Kellermann authored
Without this timer, DispatchSockets() may disable the MultiSocketMonitor and if Play() doesn't get called soon, it never gets a chance to generate silence. However if Play() gets called, generating silence isn't necessary anymore... Resulting from this misdesign (added by commit ccafe3f3 in 0.21.3), the silence generator didn't work reliably.
-
Max Kellermann authored
Draining isn't finished just because the period_buffer has run empty. It is only finished after snd_pcm_drain() has succeeded.
-
Max Kellermann authored
Apparently, if snd_pcm_drain() returns EAGAIN, it does not actually want to be called again; the next call will snd_pcm_drain() will also return EAGAIN, forever, even though the PCM state has meanwhile switched to SND_PCM_STATE_SETUP. This causes a busy loop; to fix this, we should always check snd_pcm_state() to see if draining is really required.
-
- 26 Jun, 2019 2 commits
-
-
-
Max Kellermann authored
Closes https://github.com/MusicPlayerDaemon/MPD/issues/589
-
- 17 Jun, 2019 2 commits
-
-
Max Kellermann authored
Closes https://github.com/MusicPlayerDaemon/MPD/issues/577
-
Max Kellermann authored
Workaround for a regression caused by commit a06bf388, revealing a problem with discarding odd numer of frames in the DSD_U32 and DoP converters, causing distortions with DSD_U32 and DoP on 32 bit CPUs. Closes https://github.com/MusicPlayerDaemon/MPD/issues/469
-
- 16 Jun, 2019 1 commit
-
-
Max Kellermann authored
Instead of passing tag and group, pass an array of tags. To support a nested return value, return a nested std::map of std::maps. Each key specifies the tag value, and each value may be another nesting level. Closes https://github.com/MusicPlayerDaemon/MPD/issues/408
-
- 11 Jun, 2019 1 commit
-
-
Max Kellermann authored
-
- 05 Jun, 2019 3 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
Since we now don't duplicate all items, we can easily remove the 64kB limit from OpusReader::ReadString() and instead silently ignore and skip all strings which are longer than 4 kB. This fixes a tag duplication bug with Opus file containing a very long `METADATA_BLOCK_PICTURE` tag, which occurred because the Opus plugin returned false after parsing all tags, and then the MPD core fell back to FFmpeg which scanned the tags again.
-
cathugger authored
Return `404 not found` for some common well-known paths, as clients requesting them usually do that automatically and don't expect endless audio stram. Closes #572
-
- 31 May, 2019 3 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
This reverts commit ff3e2c05. The check was necessary, after all, because this is what checked whether the decoder had finished the current or the next song. > The "queued" flag can only possibly be set if the decoder is still > decoding the current song or if the decoder is stopped. That was wrong because ProcessCommand() sets `queued=true` and also starts the decoder (if it was idle). > This is also what the following assert() checks. That was also wrong, because the assert() has two conditions. Closes https://github.com/MusicPlayerDaemon/MPD/issues/566
-
Max Kellermann authored
-
- 21 May, 2019 1 commit
-
-
Max Kellermann authored
Map ID3 "TIT1" to this new core tag type. Closes https://github.com/MusicPlayerDaemon/MPD/issues/563
-
- 20 May, 2019 2 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
If the decoder finishes decoding the current song between the two IsIdle() checks, MPD stops playback instead of starting the decoder for the next song. This is usually not visible problem, because the main thread restarts it via playlist::ResumePlayback(), but that way it, ignores "single" mode. As a workaround, this commit adds another "queued" check which re-enters the player loop and checks again whether to start the decoder. Closes https://github.com/MusicPlayerDaemon/MPD/issues/556
-
- 16 May, 2019 1 commit
-
-
Max Kellermann authored
-