1. 20 May, 2019 2 commits
    • Max Kellermann's avatar
      player/Thread: fix "single" mode race condition · 923e6673
      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
      923e6673
    • Max Kellermann's avatar
      player/Thread: remove unnecessary "pipe" check · ff3e2c05
      Max Kellermann authored
      The "queued" flag can only possibly be set if the decoder is still
      decoding the current song or if the decoder is stopped.  This is also
      what the following assert() checks.  This check was not necessary.
      ff3e2c05
  2. 26 Apr, 2019 2 commits
  3. 19 Nov, 2018 1 commit
    • Max Kellermann's avatar
      check.h: remove obsolete header · ce49d99c
      Max Kellermann authored
      Since we switched from autotools to Meson in commit
      94592c14, we don't need to include
      `config.h` early to properly enable large file support.  Meson passes
      the required macros on the compiler command line instead of defining
      them in `config.h`.
      
      This means we can include `config.h` at any time, whenever we want to
      check its macros, and there are no ordering constraints.
      ce49d99c
  4. 12 Nov, 2018 1 commit
  5. 06 Nov, 2018 1 commit
  6. 31 Oct, 2018 1 commit
  7. 29 Oct, 2018 1 commit
  8. 23 Sep, 2018 3 commits
    • Max Kellermann's avatar
      player/Thread: calculate `buffered_before_play` based on a fixed duration · 5b2374b9
      Max Kellermann authored
      Previously, there was the setting `buffered_before_play` which
      specified a percentage of the audio buffer, defaulting to `10%`.  That
      was working well enough for quite some time, until high-quality audio
      formats became common.
      
      At 44.1 kHz, 16 bit stereo, MPD collected 2.3 seconds worth of data in
      the buffer before starting playback.  With the same default settings
      and 192 kHz, 24 bit stereo, that was only 0.27 seconds.
      
      Making this depend on the byte size only leads to high latency at low
      quality, and too little data at high quality.  The natural choice
      would be to use a duration instead of a byte size, which should give
      the same good experience with all audio formats.
      
      Since the `buffered_before_play` configuration setting was not
      understood well by users and caused more harm than good, this commit
      deprecates it.  It has now no effect.
      5b2374b9
    • Max Kellermann's avatar
      c1600bcf
    • Max Kellermann's avatar
      player/Thread: remove `buffered_before_play` from `decoder_wakeup_threshold` formula · 2f3845ef
      Max Kellermann authored
      Simplify the formula, and I guess this makes the formula more
      reliable.  Imagine somebody configured `buffered_before_play` larger
      than 25%; then the decoder would be woken up all the time.  This
      doesn't seem logical.  On the other hand, it's easy to understand that
      the decoder should be woken up below 75% buffer fill.
      2f3845ef
  9. 22 Sep, 2018 2 commits
  10. 21 Sep, 2018 10 commits
  11. 02 Aug, 2018 1 commit
  12. 23 Jun, 2018 3 commits
  13. 22 Jun, 2018 3 commits
  14. 12 May, 2018 1 commit
  15. 25 Apr, 2018 1 commit
    • Max Kellermann's avatar
      player/Thread: never reuse decoder when switching radio streams · 44b20024
      Max Kellermann authored
      When switching to another song manually, the player checks if the
      decoder is already decoding that song; if so, it will attempt to reuse
      it by seeking it to the new position.  That however fails if the
      decoder is not seekable (e.g. a radio stream) which leaves the user
      unable to switch to that song with the bogus error message "Not
      seekable".
      44b20024
  16. 25 Feb, 2018 1 commit
  17. 03 Feb, 2018 1 commit
  18. 24 Jan, 2018 1 commit
  19. 12 Jan, 2018 1 commit
  20. 07 Jan, 2018 1 commit
  21. 03 Jan, 2018 2 commits