1. 06 Jul, 2018 4 commits
  2. 22 Jun, 2018 1 commit
    • Max Kellermann's avatar
      input/curl: use class MaybeBufferedInputStream · 1ca1269a
      Max Kellermann authored
      For remote files (not streams), this downloads as quickly as possible
      to a large buffer instead of throttling the stream during playback.
      Throttling can make the server impatient and it may then disconnect.
      
      This is what Qobuz and Tidal do, and this commit attempts to solve
      this by not letting the Qobuz/Tidal server wait (closes #241).
      1ca1269a
  3. 28 May, 2018 3 commits
  4. 22 May, 2018 1 commit
  5. 12 May, 2018 2 commits
  6. 07 May, 2018 2 commits
  7. 03 May, 2018 1 commit
  8. 30 Apr, 2018 2 commits
  9. 26 Apr, 2018 3 commits
  10. 25 Apr, 2018 2 commits
  11. 15 Mar, 2018 1 commit
  12. 14 Mar, 2018 1 commit
  13. 04 Mar, 2018 3 commits
    • Max Kellermann's avatar
      protocol/ArgParser: disallow negative seek times · dadd3ca6
      Max Kellermann authored
      Instead of stopping playback (due to seek time overflow), reject the
      seek command.  Closes #240
      
      Relative negative values (with "seekcur") are still allowed, and MPD
      will fix the resulting position if it turns out to be negative.  But
      the "seek" and "seekid" commands use an unsigned time stamp which must
      not be negative.
      dadd3ca6
    • Christian Kröner's avatar
      Get rid of GCD on macOS which breaks debug builds · 79535212
      Christian Kröner authored
      With Grand Central Dispatch used in Main.cxx, debug builds on macOS
      crash as the IsInside() assertion gets triggered in the event loop. As
      a simple fix, usage of GCD is removed. Plugging and unplugging
      headphones or changes of the default output device was tested without
      issues. Whatever the original commit tried to fix by GCD probably does
      not need fixing anymore.
      79535212
    • Max Kellermann's avatar
      increment version number to 0.20.19 · ef5f96a1
      Max Kellermann authored
      ef5f96a1
  14. 26 Feb, 2018 1 commit
    • Christian Kröner's avatar
      Initial support for DSD over PCM on macOS · e89c4213
      Christian Kröner authored
      From: Christian Kröner <ckroener@gmx.net>
      
      This just copies the necessary bits and pieces from the ALSA plugin and applies them to OSXOutput based on dop config setting. It only changes the OSXOutput plugin as needed for DoP (further changes to support additionally e.g. integer mode or setting the physical device mode require rather a complete rewrite of the output plugin).
      
      Fortunately the Core Audio API is by default bit perfect and supports DoP with minimal changes (setting the sampling rate accordingly after ensuring that the physical mode supports at least 24 bits per channel seems to be enough). This was tested on an Amanero Combo384 device hooked up to a ES9018 DAC.
      
      USAGE (try only on DACs that support DoP):
      - Add dop "yes" option to mpdconf
      - Be sure to set at least 24bits per channel before playing some DSD file (using Audio-MIDI-Setup)
      - Based on the dop setting, MPD will change the sample rate as required and output DoP signal to the DAC
      - Hog mode is recommended to ensure that no other program will try to mix some output with the DoP stream (resulting in bad noise)
      - Alternatively set the default output device to another device (e.g. the built-in output) to avoid having other audio interfere with DSD playback
      e89c4213
  15. 25 Feb, 2018 2 commits
  16. 24 Feb, 2018 3 commits
  17. 20 Feb, 2018 1 commit
  18. 17 Feb, 2018 3 commits
    • Max Kellermann's avatar
      decoder/flac: move the SubmitData() call out of the callback · 026aef74
      Max Kellermann authored
      This addresses two problems:
      
      1. the libFLAC write callback had to send an error status to its
      caller when SubmitData() returned a command; this disrupted libFLAC
      and the resulting command could not be used for anything;
      
      2. the libFLAC function FLAC__stream_decoder_seek_absolute() also
      calls the write callback, but its result cannot be used, because
      seeking is still in progress, so we lose all data from one FLAC frame.
      By moving the SubmitData() call until after CommandFinished(), we
      avoid losing this data.  This fixes another part of #113
      026aef74
    • Max Kellermann's avatar
      decoder/Bridge: truncate last chunk at the exact end_time · 986ec877
      Max Kellermann authored
      Instead of passing whole chunks to the MusicPipe and checking the
      end_time after each chunk, truncate the last chunk if it would exceed
      the end_time.  This requires keeping track of the absolute PCM frame
      number.
      
      This fixes a problem with gapless CUE song transitions: a small part
      of the following song was always played twice.
      
      Closes #113
      986ec877
    • Max Kellermann's avatar
      increment version number to 0.20.18 · 79981f3c
      Max Kellermann authored
      79981f3c
  19. 12 Feb, 2018 1 commit
  20. 11 Feb, 2018 1 commit
  21. 10 Feb, 2018 1 commit
    • Max Kellermann's avatar
      mixer/alsa: work around rounding error at volume 0 · bede5646
      Max Kellermann authored
      Due to rounding errors, a slightly negative value can be passed to
      set_normalized_volume(), which will make the log10() call fail.
      Actually, volume 0 is already failing because log10(0) is illegal.  So
      let's fix this by implementing two corner cases: <=0 and >=100.
      
      Closes #212
      bede5646
  22. 09 Feb, 2018 1 commit