I think that this patch series is now ready for review and testing. All needed parts are finished. The only problem is with asynchronous profile switching as function pa_card_set_profile() does not support it. All details are in patch "[PATCH v5 5/7] bluetooth: Modular API for A2DP codecs". So can you look at this patch series and review it? On Saturday 19 January 2019 18:11:49 Pali Rohár wrote: > This is 5th version of my patch series for modular A2DP codec API and > aptX support. The only change for v5 is support for switching codecs. > > This patch series provides new modular API for Bluetooth A2DP codecs, > clean up module-bluez5-device and bluez5-util to be codec independent > and convert SBC codec into this new API for A2DP codecs. Also it adds > support for aptX, aptX HD and FastStream A2DP codecs. > > New codec API is designed in way, that for adding new codec is not > needed to touch bluez5-util nor module-bluez5-device files. Whole > codec registration is done in a2dp-codec-util.c file, without need > to update any header file. > > Some A2DP codecs are bidirectional and support backchannel for > microphone voice. This new A2DP codec API fully supports this feature > and module-bluez5-device was extended to support microphone voice source > for codecs which declares such support. FastStream is such codec. > > For every A2DP codec is created card profile. When using bluez patches > from https://marc.info/?l=linux-bluetooth&m=154696260401673&w=2 then > only those profiles codec profiles are created which are supported > by remote headset/endpoint. > > With this new modular API it should be easy to add other codec support > like MP3, AAC or LDAC. > > API is designed also for ability to register "more variants" or one > A2DP codec. E.g. SBC codec forced to high quality, SBC codec forced > to low quality, SBC codec with automatic quality. > > Once we agree on final version of codec API, I can prepare patches > also for choosing above SBC codec quality. > > I tested playback with SBC, aptX and FastStream codecs and it is > working fine. Also microphone voice in FastStream is working and has > slightly better quality as in HSP profile. > > Changes in v5: > * Added support for switching between A2DP codec via profiles. > This requires bluez patches from above link. > > Changes in v4: > * Added support for aptX HD codec > * Changed codec API for reading block size and reducing encoder bitrate > * Added support for microphone backchannel into module-bluez5-device > * Added support for microphone backchannel into FastStream codec > * Fixed parsing FastStream A2DP config buffer > * Fixed validation for config buffers > * Fixed calculating block size for aptX codec > * Fixed resetting SBC and FastStream codecs > > Changes in v3: > * Fixed problems pointed by Tanu > > Pali Rohár (7): > switch-on-port-available: Fix null pointer dereference > bluetooth: policy: Remove BlueZ 4 related code > bluetooth: policy: Reflect a2dp profile names > bluetooth: Update a2dp-codecs.h from upstream bluez project > bluetooth: Modular API for A2DP codecs > bluetooth: Add A2DP aptX and aptX HD codecs support > bluetooth: Add A2DP FastStream codec support > > configure.ac | 36 + > src/Makefile.am | 20 +- > src/modules/bluetooth/a2dp-codec-api.h | 80 +++ > src/modules/bluetooth/a2dp-codec-aptx.c | 547 +++++++++++++++ > src/modules/bluetooth/a2dp-codec-faststream.c | 433 ++++++++++++ > src/modules/bluetooth/a2dp-codec-sbc.c | 638 +++++++++++++++++ > src/modules/bluetooth/a2dp-codec-util.c | 66 ++ > src/modules/bluetooth/a2dp-codec-util.h | 34 + > src/modules/bluetooth/a2dp-codecs.h | 354 +++++++++- > src/modules/bluetooth/bluez5-util.c | 768 +++++++++++++------- > src/modules/bluetooth/bluez5-util.h | 40 +- > src/modules/bluetooth/module-bluetooth-policy.c | 19 +- > src/modules/bluetooth/module-bluez5-device.c | 884 +++++++++++------------- > src/modules/module-switch-on-port-available.c | 2 +- > 14 files changed, 3181 insertions(+), 740 deletions(-) > create mode 100644 src/modules/bluetooth/a2dp-codec-api.h > create mode 100644 src/modules/bluetooth/a2dp-codec-aptx.c > create mode 100644 src/modules/bluetooth/a2dp-codec-faststream.c > create mode 100644 src/modules/bluetooth/a2dp-codec-sbc.c > create mode 100644 src/modules/bluetooth/a2dp-codec-util.c > create mode 100644 src/modules/bluetooth/a2dp-codec-util.h -- Pali Rohár pali.rohar@xxxxxxxxx
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ pulseaudio-discuss mailing list pulseaudio-discuss@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss