[pulseaudio-discuss] [PATCH v2 0/2] Bluetooth A2DP aptX codec support

Pali Rohár pali.rohar at gmail.com
Fri Aug 3 13:32:01 UTC 2018


On Friday 03 August 2018 16:22:05 ValdikSS wrote:
> Doesn't work for me with Intel 7260 Bluetooth 4.0 and RealForce OverDrive D1.
> 
> When I connect headphones and change Pulseaudio profile from "Off" to "High Fidelity SBC playback (a2dp sink)", everything works as expected with SBC.
> Profile does not switch if I choose "High Fidelity aptX playback (a2dp sink)" when SBC profile is already active, log message:
> 
> W: [pulseaudio] module-bluez5-device.c: Refused to switch profile to a2dp_aptx_sink: Not connected

Profile switching does not work -- bluez does not provide API for it.

Codec is chosen by bluez and headset when doing handshake. Try to
initialize A2DP connection from computer, not from headset. Then bluez
should choose aptX codec in case your headset supports it.

> When I try to switch to aptX profile from "off" profile, pulseaudio crashes:
> 
> E: [pulseaudio] module-bluez5-device.c: Assertion '!u->thread' failed at modules/bluetooth/module-bluez5-device.c:1491, function start_thread(). Aborting.

Try:

$ pactl unload-module module-bluetooth-policy

Seems that policy module needs to be fixed for new aptx profiles.

> Thread 1 "pulseaudio" received signal SIGABRT, Aborted.
> 0x00007ffff44edfeb in raise () from /lib64/libc.so.6
> (gdb) bt
> #0  0x00007ffff44edfeb in raise () from /lib64/libc.so.6
> #1  0x00007ffff44d85c1 in abort () from /lib64/libc.so.6
> #2  0x00007fff7f3dab45 in start_thread (u=u at entry=0x55555593d640) at modules/bluetooth/module-bluez5-device.c:1491
> #3  0x00007fff7f3dd263 in set_profile_cb (c=<optimized out>, new_profile=0x5555559251a0) at modules/bluetooth/module-bluez5-device.c:1859
> #4  0x00007ffff7b5148e in pa_card_set_profile (c=c at entry=0x5555558e4c20, profile=profile at entry=0x5555559251a0, save=save at entry=true) at pulsecore/card.c:318
> #5  0x00007fffe0a0362d in command_set_card_profile (pd=<optimized out>, command=<optimized out>, tag=127, t=<optimized out>, userdata=<optimized out>) at pulsecore/protocol-native.c:4728
> #6  0x00007ffff6d83813 in pa_pdispatch_run (pd=0x555555a2e4b0, packet=packet at entry=0x5555558a3020, ancil_data=ancil_data at entry=0x555555975bf8, userdata=userdata at entry=0x5555558bebf0) at pulsecore/pdispatch.c:346
> #7  0x00007fffe0a0bee9 in pstream_packet_callback (p=0x555555975960, packet=0x5555558a3020, ancil_data=0x555555975bf8, userdata=0x5555558bebf0) at pulsecore/protocol-native.c:4951
> #8  0x00007ffff6d8629d in do_read (p=p at entry=0x555555975960, re=re at entry=0x555555975b28) at pulsecore/pstream.c:1012
> #9  0x00007ffff6d890eb in do_pstream_read_write (p=0x555555975960) at pulsecore/pstream.c:248
> #10 0x00007ffff6d8949d in srb_callback (srb=0x5555558b0660, userdata=0x555555975960) at pulsecore/pstream.c:287
> #11 0x00007ffff6d89d2a in srbchannel_rwloop (sr=0x5555558b0660) at pulsecore/srbchannel.c:190
> #12 0x00007ffff78fc8a8 in dispatch_pollfds (m=0x55555576f120) at pulse/mainloop.c:140
> #13 pa_mainloop_dispatch (m=m at entry=0x55555576f120) at pulse/mainloop.c:898
> #14 0x00007ffff78fcb80 in pa_mainloop_iterate (m=0x55555576f120, block=<optimized out>, retval=0x7fffffffdc18) at pulse/mainloop.c:929
> #15 0x00007ffff78fcc20 in pa_mainloop_run (m=0x55555576f120, retval=0x7fffffffdc18) at pulse/mainloop.c:945
> #16 0x000055555555b0c9 in main (argc=<optimized out>, argv=<optimized out>) at daemon/main.c:1144
> 
> 
> I haven't installed any patches for bluez itself. Should I? If yes, which exactly?

There are no bluez patches.

> I moved libopenaptx to autotools and made Fedora .spec file for openaptx, are you interested in autotools support for libopenaptx, should I create a pull request to your repository?

Nope, I'm not interested to use autohell, simple Makefile for simple
library is enough :-) Basically I see no reason for conversion to tool
which then just generate Makefile back.

> 
> On 28.07.2018 18:34, Pali Rohár wrote:
> > This patch series moves A2DP codec code into new modules and add
> > support for Bluetooth A2DP aptX codec.
> > 
> > Pali Rohár (2):
> >   Modular API for Bluetooth A2DP codec
> >   Bluetooth A2DP aptX codec support
> > 
> >  configure.ac                                 |  19 +
> >  src/Makefile.am                              |  14 +-
> >  src/modules/bluetooth/a2dp-codecs.h          | 123 +++++-
> >  src/modules/bluetooth/bluez5-util.c          | 377 +++++++----------
> >  src/modules/bluetooth/bluez5-util.h          |  12 +-
> >  src/modules/bluetooth/module-bluez5-device.c | 542 ++++++++-----------------
> >  src/modules/bluetooth/pa-a2dp-codec-aptx.c   | 297 ++++++++++++++
> >  src/modules/bluetooth/pa-a2dp-codec-sbc.c    | 579 +++++++++++++++++++++++++++
> >  src/modules/bluetooth/pa-a2dp-codec.h        |  41 ++
> >  9 files changed, 1393 insertions(+), 611 deletions(-)
> >  create mode 100644 src/modules/bluetooth/pa-a2dp-codec-aptx.c
> >  create mode 100644 src/modules/bluetooth/pa-a2dp-codec-sbc.c
> >  create mode 100644 src/modules/bluetooth/pa-a2dp-codec.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/20180803/95d64d83/attachment.sig>


More information about the pulseaudio-discuss mailing list