1. 21 Feb, 2022 1 commit
  2. 19 May, 2021 1 commit
  3. 05 Apr, 2021 2 commits
  4. 01 Feb, 2021 3 commits
    • Marijn Suijten's avatar
      bluetooth/gst: Unify encoder and decoder pipeline setup · c05c6f9e
      Marijn Suijten authored and PulseAudio Marge Bot's avatar PulseAudio Marge Bot committed
      The encoding and decoding pipeline are essentially identical: both push
      data in via an appsrc, route it through a codec-specific (opaque)
      element, and finally pull data out of an appsink. The code already makes
      it impossible to have an encoding and decoding pipeline simultaneously
      set up in `gst_info`, and converting `bool for_encoding` to a tri-state
      (encode, decode, or both) would be messy; particularly when encoding and
      decoding could possibly differ in format.
      
      This change removes a swath of code and removes the possibility of
      misusing `enc_` or `dec_` in the wrong place (ie. after copying a bit of
      code and forgetting to rename one or two). When bidirectional codecs
      come online a second codec instance (`gst_info`) can simply be created
      and controlled independently.
      
      Part-of: <!487>
      c05c6f9e
    • Marijn Suijten's avatar
      bluetooth/aptx: Call the non-HD encode_buffer function · 92af2c90
      Marijn Suijten authored and PulseAudio Marge Bot's avatar PulseAudio Marge Bot committed
      For consistency with its decode_buffer counterpart.
      
      For the time being the base function only performs an extra check and
      logs an error when no data has been written into the GStreamer encoding
      pipeline.
      
      Part-of: <!487>
      92af2c90
    • Marijn Suijten's avatar
      bluetooth/aptx: Simplify lifetime of `caps` · 6b5857c1
      Marijn Suijten authored and PulseAudio Marge Bot's avatar PulseAudio Marge Bot committed
      Fixes: 73c80ffb ("bluetooth/aptx: Deduplicate caps setup for encoding and decoding")
      Part-of: <!487>
      6b5857c1
  5. 22 Jan, 2021 5 commits
  6. 21 Jan, 2021 1 commit
  7. 19 Jan, 2021 4 commits
    • Sanchayan Maity's avatar
      bluetooth: Move codec specific bits to their own respective files · cdbb73f9
      Sanchayan Maity authored
      We move the codec specific bits to their own respective files and now
      make the codec specific initialisation use a GstBin, which the generic
      GStreamer module now uses in the pipeline.
      
      It is job of the codec specific function to add elements in the GstBin
      and link the added elements in the bin. It should also set up the ghost
      pads as a GstBin has no pads of it's own and without which the bin
      cannot be linked to the appsrc/appsink.
      
      Also, we now only initialise either the encoding or the decoding
      pipeline and not both. The codec init API already gets passed the
      for_encoding flag. We pass and use the same to codec specific init
      functions.
      
      Part-of: <!440>
      cdbb73f9
    • Igor Kovalenko's avatar
      bluetooth: Make GStreamer threads realtime · 366bd561
      Igor Kovalenko authored and Sanchayan Maity's avatar Sanchayan Maity committed
      Part-of: <!440>
      366bd561
    • Sanchayan Maity's avatar
      bluetooth: Introduce a can_be_supported API for A2DP codecs · d6149364
      Sanchayan Maity authored
      This API internally checks if a requested codec can be supported on the
      system. This is especially required for codecs supported via GStreamer
      where the availability of a plugin decides if the said codec can be
      supported.
      
      This will be used to prevent registration of a codec which the remote
      endpoint device might be able to support, but, PulseAudio can't as the
      codec is not available on the system due to the absence of a plugin.
      We can also prevent listing or switching to an unavailable codec.
      
      Note that the codec negotiation happens with the bluez stack even before
      a device is connected. Because of this, we need to make sure that gst_init
      is called before checking for the availability of a plugin. Since
      module-bluez5-device gets loaded only after a connection to the device
      has been established, doing the gst_init in that or one of the bluetooth
      modules is not feasible.
      
      Part-of: <!440>
      d6149364
    • Sanchayan Maity's avatar
      bluetooth: Add aptX support via GStreamer · 33779648
      Sanchayan Maity authored
      Part-of: <!440>
      33779648