1. 31 Oct, 2020 7 commits
  2. 25 Oct, 2020 3 commits
    • Marijn Suijten's avatar
      bluetooth: Synchronize AVRCP Absolute Volume with A2DP sink · 33b5a958
      Marijn Suijten authored
      Like the previous commit this handles `Volume` property changes but
      applies them to an a2dp sink instead of source stream. Only real_volume
      is updated to make sure the stream doesn't apply any attenuation (using
      software PCM) since this already happens on the sink side.
      In addition to receiving volume events it is also possible to control
      this remote volume slider by writing a new value to the DBus property.
      This is especially useful when playing back to in-ear audio devices
      which usually lack physical buttons to adjust the final volume on the
      sink.
      33b5a958
    • Marijn Suijten's avatar
      bluetooth: Implement event Volume has changed (org.bluez.MediaTransport1) in... · 750dca61
      Marijn Suijten authored
      bluetooth: Implement event Volume has changed (org.bluez.MediaTransport1) in order to take into account volume changes of A2DP sources.
      
      Using A2DP and a bluetooth audio source, Pulseaudio doesn't take into account the volume modification (for device sending the event via AVRCP (ex:Apple devices))
      This work aims to integrate bluez event Volume (org.bluez.MediaTransport1) for A2DP source in pulseaudio.
      This permits to take into account A2DP source volume changes (sent using AVRCP protocol).
      
      Change has been tested with an iphone and an ipad and is fully working.
      
      Originally written by Mathieu Tournier <mathieutournier@gmail.com> this
      commit has been altered to account for generalized volume callbacks and
      includes various logic changes/fixes, and as such has its author reset
      due to the vast number of changes I do not feel comfortable holding a
      different author responsible for. The orignal commit message and title
      have been preserved though.
      750dca61
    • pali's avatar
  3. 01 May, 2020 3 commits
  4. 30 Apr, 2020 2 commits
  5. 28 Apr, 2020 1 commit
  6. 26 Apr, 2020 15 commits
  7. 15 Apr, 2020 1 commit
    • pali's avatar
      bluetooth: Implement A2DP codec switching and backchannel support · efef94a8
      pali authored
      Some A2DP codecs (like FastStream or aptX Low Latency) are bi-directional
      and can be used for both music playback and audio calls. This patch
      implements usage of backchannel if A2DP codec provided by pulseaudio API
      supports it.
      
      A2DP codec switching needs new version of bluez as older version does not
      provide needed org.freedesktop.DBus.ObjectManager and RegisterApplication
      DBus APIs.
      
      Pulseaudio use for each A2DP codec separate pulseaudio profile, therefore
      codec switching is implemented via changing pulseaudio profile and
      currently used A2DP codec is visible in pulseaudio profile.
      
      Getting list of supported codecs by remote device is supported only by new
      version of bluez daemon.
      
      If old bluez version is detected then only one SBC codec is supported.
      efef94a8
  8. 14 Apr, 2020 1 commit
  9. 19 Mar, 2020 1 commit
  10. 02 Jul, 2019 1 commit
    • Frédéric Danis's avatar
      bluetooth: Fix crash when disabling Bluetooth adapter · f89d64b9
      Frédéric Danis authored
      This crash occurs when PA is connected to a phone through the oFono
      backend.
      When disabling the Bluetooth adapter, pa_bluetooth_device is removed before
      hf_audio_card. Both keep refs on pa_bluetooth_transport. Those removal will
      call pa_bluetooth_transport_free() from device_free() (bluez5-util.c) and
      hf_audio_card_free() (backend-ofono.c).
      In the end, the call to pa_bluetooth_transport_free() calls
      pa_hasmap_remove() through pa_bluetooth_transport_unlink(), but since
      memory has already been freed, the second try results in a segfault.
      
      Triggering hf_audio_card removal during pa_bluetooth_device removal allows
      hf_audio_card to be freed at the right time.
      f89d64b9
  11. 12 Apr, 2019 2 commits
    • pali's avatar
      bluetooth: Modular API for A2DP codecs · 106aa914
      pali authored
      This patch introduce new modular API for bluetooth A2DP codecs. Its
      benefits are:
      
      * bluez5-util and module-bluez5-device does not contain any codec specific
        code, they are codec independent.
      
      * For adding new A2DP codec it is needed just to adjust one table in
        a2dp-codec-util.c file. All codec specific functions are in separate
        codec file.
      
      * Support for backchannel (microphone voice). Some A2DP codecs (like
        FastStream or aptX Low Latency) are bi-directional and can be used for
        both music playback and audio call.
      
      * Support for more configurations per codec. This allows to implement low
        quality mode of some codec together with high quality.
      
      Current SBC codec implementation was moved from bluez5-util and
      module-bluez5-device to its own file and converted to this new A2DP API.
      106aa914
    • pali's avatar
      e8c4638f
  12. 20 Jan, 2018 1 commit
    • Tanu Kaskinen's avatar
      bluetooth: don't send unsolicted replies to the endpoint Release() call · df79abe7
      Tanu Kaskinen authored
      It was reported that PulseAudio causes error messages in syslog from
      dbus-daemon:
      
      Jan 14 04:51:32 gentoo dbus-daemon[2492]: [system] Rejected send message, 2 matched rules; type="error", sender=":1.15" (uid=1000 pid=2864 comm="/usr/bin/pulseaudio --start --log-target=syslog ") interface="(unset)" member="(unset)" error name="org.bluez.MediaEndpoint1.Error.NotImplemented" requested_reply="0" destination=":1.1" (uid=0 pid=2670 comm="/usr/libexec/bluetooth/bluetoothd ")
      
      The default policy on the system bus is to not let any method call
      replies through if they have not been requested, and apparently
      bluetoothd doesn't want replies to the Release() call.
      
      This also changes the reply type from error to normal reply. The "not
      implemented" error didn't make sense to me. We don't do any cleanup in
      the Release() handler, probably because there's nothing to do. If there
      is some cleanup that we should do, then it's a serious bug not to do it.
      
      BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=104646
      df79abe7
  13. 09 Oct, 2017 1 commit
  14. 05 Sep, 2017 1 commit