- 14 Nov, 2018 3 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
If our `ring_buffer` is smaller than the ALSA-PCM buffer (if the latter has more than the 4 periods we allocate), it can happen that the start threshold is crossed and ALSA switches to `SND_PCM_STATE_RUNNING`, but the `ring_buffer` is empty. In this case, MPDD will generate silence, even though the ALSA-PCM buffer has enough data. This causes stuttering (#420). This commit amends an older workaround for a similar problem (commit e08598e7) by adding a snd_pcm_avail() check, and only generate silence if there is less than one period of data in the ALSA-PCM buffer. Fixes #420
-
Max Kellermann authored
The method Cancel() assumes that the `period_buffer` must be empty when `active==false`, but that is not the case when Play() fails. Of course the assertion in Cancel() is not 100% correct, but I decided to rather fix this in LockCaughtError() because the `period_buffer` should only be accessed from within the RTIO thread, and this is the only code path where `active` can be set to `false` with a non-empty `period_buffer`. Fixes #423
-
- 12 Nov, 2018 4 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
Closes #410
-
Max Kellermann authored
Fixes a crash bug with `always_on` outputs which occurs because the `AudioOutputSource` still has a pointer to an outdated `MusicChunk`. Fixes #415
-
- 11 Nov, 2018 2 commits
-
-
Max Kellermann authored
This feature requires `libpcre`.
-
Max Kellermann authored
This call was missing, causing very high CPU usage when the ALSA output plugin was used with dmix. Closes #391
-
- 08 Nov, 2018 1 commit
-
-
Max Kellermann authored
When `metadata_sent` is `false`, the plugin assumes there is metadata which must be sent, even if no metadata page was passed to the plugin. Initializing it to `true` avoids dereferencing this `nullptr`. Fixes #412
-
- 07 Nov, 2018 1 commit
-
-
Max Kellermann authored
-
- 06 Nov, 2018 1 commit
-
-
Max Kellermann authored
If the output is already open, the `current_chunk` pointer may be bogus and out of sync with `SharedPipeConsumer::chunk`, leading to an assertion failure in `SharedPipeConsumer::Consume()`. Fixes #411
-
- 04 Nov, 2018 11 commits
-
-
Max Kellermann authored
`AVCodecParameters` contains values from the codec detected by avformat_find_stream_info(), but after avcodec_open2(), a different codec might be selected with a different `AVSampleFormat`. This leads to misinterpretation of data returned from FFmpeg, leading to random noise or silence. This was observed with FFmpeg 4.0.2 and a TS container file containing MP2. A mp3-float codec was detected returning `AV_SAMPLE_FMT_FLTP`, but finally the `mpegaudiodec_fixed.c` was used, returning `AV_SAMPLE_FMT_S16`. By using the audio format from `AVCodecContext`, we ensure that MPD and FFmpeg always agree on the actual audio format in the buffer. This removes the FFmpeg bug workaround from commit e1b032cb which I assume is obsolete after 7 years. Fixes #380
-
Max Kellermann authored
Drop some compatibility code.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
The protocol documentation says that the difference between `find` and `search` is that `search` is case insensitive, but that's only half the truth: `search` also searches for sub strings instead of matching the whole string. This part is undocumented and unfortunate, but at this point, we can't change it. However leaking this surprising behavior to the new filter expressions was a bad idea; the "==" operator should never match substrings. For people who need that, we should add a new operator.
-
Max Kellermann authored
Some Boost 1.67 packages apparently have a workaround for the bug, so let them build MPD.
-
Max Kellermann authored
-
Max Kellermann authored
Without the Vorbis decoder, `libvorbis` is never detected, leading to linker failures when attempting to build the Vorbis encoder.
-
Max Kellermann authored
Meson 0.47.1 suffers from a bug which breaks linking the MPD executable because the `-lpthread` flag is not propagated from our `thread.a`. See https://github.com/mesonbuild/meson/pull/3895 Closes #403
-
Max Kellermann authored
Fixes linker failure when building without FLAC support. Closes #400
-
Max Kellermann authored
Fixes #404
-
- 02 Nov, 2018 4 commits
-
-
Max Kellermann authored
Closes #397
-
Max Kellermann authored
Thanks to C++14, we can declare and fill variables inside `constexpr` functions. This means me can stop make assumptions on the `struct` layouts without losing `constexpr`. Closes #393
-
Max Kellermann authored
`__linux` is the deprecated non-standard macros which appears to be not present at all on PowerPC. Closes #398
-
Max Kellermann authored
-
- 01 Nov, 2018 1 commit
-
-
Max Kellermann authored
-
- 31 Oct, 2018 3 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
Bugs in libroar which broke the MPD build have been annoying me for quite some time, and the newest bug has now hit my main build machine: https://github.com/MusicPlayerDaemon/MPD/issues/377 Problem is the usage of the typedef `_IO_off64_t` in libroar's `vio_stdio.h`: int roar_vio_to_stdio_lseek (void *__cookie, _IO_off64_t *__pos, int __w); This `_IO_off64_t` is an internal implementation detail of glibc and was removed in version 2.28. Nobody must ever use it. Why the **** did the RoarAudio developers use it? Not using internal typedefs isn't exactly rocket science. This annoys me enough to finally remove the plugin. Anyway, I've never heard of anybody using RoarAudio, so my best guess is that nobody will notice.
-
- 30 Oct, 2018 1 commit
-
-
Max Kellermann authored
-
- 29 Oct, 2018 5 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
The compile-time calculation for `factor` overflows because `1<<31` cannot be represented by `int`. By casting to `uintmax_t` first, we can avoid this overflow. Closes #380
-
Max Kellermann authored
This emits the event even if PlayerControl::Play() is used to replay the current song, which emits the missing "player" idle event. Closes #381
-
Max Kellermann authored
-
Max Kellermann authored
-
- 23 Oct, 2018 3 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
Closes #373
-
Max Kellermann authored
Closes #360
-