1. 14 Nov, 2018 3 commits
    • Max Kellermann's avatar
    • Max Kellermann's avatar
      output/alsa: don't generate silence if ALSA-PCM buffer has enough data · ccafe3f3
      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
      ccafe3f3
    • Max Kellermann's avatar
      output/alsa: clear the `period_buffer` in LockCaughtError() · 3830748d
      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
      3830748d
  2. 12 Nov, 2018 4 commits
  3. 11 Nov, 2018 2 commits
  4. 08 Nov, 2018 1 commit
    • Max Kellermann's avatar
      output/httpd: fix nullptr dereference crash bug · 583208db
      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
      583208db
  5. 07 Nov, 2018 1 commit
  6. 06 Nov, 2018 1 commit
    • Max Kellermann's avatar
      output/Source: reset current_chunk in Open() · b1fe1059
      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
      b1fe1059
  7. 04 Nov, 2018 11 commits
  8. 02 Nov, 2018 4 commits
  9. 01 Nov, 2018 1 commit
  10. 31 Oct, 2018 3 commits
    • Max Kellermann's avatar
      release v0.21 · 795789e7
      Max Kellermann authored
      795789e7
    • Max Kellermann's avatar
      b1d68fe9
    • Max Kellermann's avatar
      output/roar: remove · 06ca08ce
      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.
      06ca08ce
  11. 30 Oct, 2018 1 commit
  12. 29 Oct, 2018 5 commits
  13. 23 Oct, 2018 3 commits