1. 21 Feb, 2022 8 commits
    • Marijn Suijten's avatar
      79f45c14
    • Marijn Suijten's avatar
      bluetooth: Use software volume for >100%, balance and finer control · a01a8973
      Marijn Suijten authored
      This compensates discrepancies between requested volume and actual
      volume represented by the 127-step A2DP range or 15-step HSP/HFP range,
      including setting volume above 100% without any additional logic; the
      delta simply becomes larger.  The delta is calculated per channel
      against "mono" hardware volume on the remote to also take care of
      differences in balance.  The remote uses the maximum volume of all
      channels and software is used to attenuate below that (or above, if one
      or more channels are set above 100%).
      
      Note that this does _NOT_ take the actual volume on the remote into
      account yet! Most headphones don't use the full range, and instead round
      to the nearest multiple of some arbitrarily chosen step size.
      They do reply with this value, which we should consequently retrieve and
      deal with.
      a01a8973
    • Marijn Suijten's avatar
      bluetooth/gst: Timestamp encoding buffers according to PA clock · 5af2afba
      Marijn Suijten authored and Arun Raghavan's avatar Arun Raghavan committed
      Commit c6d6ca54 ("bluetooth/gst: Replace buffer accumulation in adapter
      with direct pull") removed the `timestamp` parameter from GStreamer
      transcoders due to being unused, but these should instead be propagated
      to the GStreamer encoding buffers.
      
      Part-of: <!494>
      5af2afba
    • Marijn Suijten's avatar
      bluetooth/gst: Replace buffer accumulation in adapter with direct pull · 5f37914e
      Marijn Suijten authored and Arun Raghavan's avatar Arun Raghavan committed
      Bluetooth codecs should always have fixed in/output and are hence able
      to have their results directly read from the codec, instead of
      accumulating in a buffer asynchronously that is subsequently only read
      in the transcode callback.  The Bluetooth backends calling encode/decode
      also expect these fixed buffer sizes.
      
      Part-of: <pulseaudio/pulseaudio!494>
      5f37914e
    • Marijn Suijten's avatar
      bluetooth/gst: Use GStreamer synchronously within PA's IO thread · 201dc654
      Marijn Suijten authored and Arun Raghavan's avatar Arun Raghavan committed
      Handling multiple threads does not come without overhead, especially
      when the end-goal is to ping-pong them making the whole system run
      serially.  This patch rips out all that thread handling and instead
      "chains" buffers to be encoded/decoded directly into the pipeline,
      making them execute their work on the current thread.  The resulting
      buffer can be pulled out from appsink immediately without require extra
      locking and signalling.  While the overhead on modern systems is found
      to be negligible or unnoticable, code complexity of such locking and
      signalling systems is prevalent making it the main drive behind this
      refactor.
      
      Part-of: <pulseaudio/pulseaudio!494>
      201dc654
    • Arun Raghavan's avatar
      build-sys: Bump libpulse soversion for 16.0 · 62deab21
      Arun Raghavan authored and PulseAudio Marge Bot's avatar PulseAudio Marge Bot committed
      Part-of: <pulseaudio/pulseaudio!690>
      62deab21
    • Sanchayan Maity's avatar
      bluetooth: Rename rtp_sbc_payload to rtp_payload · 516c691f
      Sanchayan Maity authored
      Now that we use RTP payload structure for LDAC as well, rename
      rtp_sbc_payload to rtp_payload. PipeWire also uses the same naming.
      
      Part-of: <!689>
      516c691f
    • Sanchayan Maity's avatar
      bluetooth: ldac: Fix RTP payloading of encoded packet · 9f0a18b2
      Sanchayan Maity authored
      Drop rtpldacpay and payload the LDAC encoded output manually in the
      RTP header.
      
      The RTP payload seems to be required as it carries the frame count
      information. Right now, rtpldacpay does not add this so construct
      the RTP header and payload manually.
      
      Strangely some devices like Shanling MP4 and Sony XM3 would still
      work without this while some like the Sony XM4 does not.
      
      Part-of: <pulseaudio/pulseaudio!689>
      9f0a18b2
  2. 26 Jan, 2022 2 commits
  3. 25 Jan, 2022 1 commit
  4. 11 Jan, 2022 2 commits
  5. 10 Jan, 2022 3 commits
  6. 08 Jan, 2022 2 commits
  7. 05 Jan, 2022 1 commit
  8. 29 Dec, 2021 2 commits
  9. 18 Dec, 2021 1 commit
  10. 17 Dec, 2021 1 commit
  11. 16 Dec, 2021 17 commits