1. 01 Feb, 2021 17 commits
  2. 28 Jan, 2021 1 commit
  3. 26 Jan, 2021 1 commit
  4. 22 Jan, 2021 9 commits
  5. 21 Jan, 2021 5 commits
  6. 19 Jan, 2021 7 commits
    • Arun Raghavan's avatar
      gitignore: Add install/ for local prefixed installs · 3a4038f3
      Arun Raghavan authored
      Part-of: <!475>
    • Marijn Suijten's avatar
      bluetooth/bluez5-util: Do not reply to ClearConfiguration · ac8f0c20
      Marijn Suijten authored
      Similar to the situation/comment in `endpoint_release` BlueZ does not
      request any reply to `ClearConfiguration()` either; sending one results
      in the same "0 matched rules" warning from dbus-daemon:
          dbus-daemon[1309]: [system] Rejected send message, 0 matched rules; type="method_return", sender=":1.71" (uid=1000 pid=87548 comm="../build/src/daemon/pulseaudio -vvvv -n -F ../buil") interface="(unset)" member="(unset)" error name="(unset)" requested_reply="0" destination=":1.3" (uid=0 pid=1308 comm="/usr/lib/bluetooth/bluetoothd -d ")
      Solve this by only creating a return message when an (othwise empty)
      reply is solicited for, just like in `endpoint_release`.
      Unfortunately we also have to make sure to not send any error back if no
      reply is requested, but fortunately an argument parsing error here is
      extremely unlikely.
      Part-of: <pulseaudio/pulseaudio!472>
    • 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
      Part-of: <pulseaudio/pulseaudio!440>
    • Sanchayan Maity's avatar
      bluetooth: Register an endpoint according to encode or decode support · ed44fa18
      Sanchayan Maity authored
      As we now support codecs other than SBC, we might have codec which does
      not have an encode or a decode capability. Specifically, in the case of
      LDAC there isn't a known decoder implementation available. For such a
      case, we should not register the corresponding endpoint.
      In case of LDAC, as decoding cannot be supported, we should not register
      a sink endpoint or vice versa in the other scenario.
      To do this, we check if encode_buffer or decode_buffer entry for a codec
      has been set in pa_a2dp_codec and accordingly prevent or allow it's
      Part-of: <pulseaudio/pulseaudio!440>
    • Igor Kovalenko's avatar
    • Sanchayan Maity's avatar
      bluetooth: Prevent registration of an unavailable codec at runtime · 8289bdb7
      Sanchayan Maity authored
      When it comes to codecs provided via GStreamer, we register all codecs
      if GStreamer option is enabled for bluez5 via meson. However, the
      GStreamer plugin required for the codec might not be present on the
      system. This results in the codec being available for registration with
      the bluez stack or selection by the user, but, trying to use the said
      codec then fails.
      To prevent the above, we now use the can_be_supported codec API to check
      if the codec is usable and if not, we do not register the said codec and
      also prevent users from switching to it.
      Part-of: <pulseaudio/pulseaudio!440>
    • 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
      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: <pulseaudio/pulseaudio!440>