[pulseaudio-discuss] [PATCH v5 0/7] New API for Bluetooth A2DP codecs

Pali Rohár pali.rohar at gmail.com
Sat Jan 19 17:19:02 UTC 2019


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 at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20190119/ee13476a/attachment.sig>


More information about the pulseaudio-discuss mailing list