[pulseaudio-discuss] [WIP] Passthrough support

pl bossart bossart.nospam at gmail.com
Mon Mar 14 11:43:36 PDT 2011


> I forced support for pulse1.0 it by hand in config.h and found the
> same problem with the headset. Trying to figure out the differences
> with my initial patches. there must be a step missing.

ok, found a solution, see diff attached. For some reason the
setup_ad2p() did both the SBC and MPEG configuration. Adding a test
for the mode solves the issue, probably there was a buffer overflow or
something bad.

playing with SBC and MPEG works fine now, meaning that the negotiation
works well depending on the payload.
but when I try to go back to PCM/SBC the second time I get the
following assert in pulseaudio (see gst log below)
E: module-bluetooth-device.c: Assertion 'u->write_memchunk.length ==
u->block_size' failed at
modules/bluetooth/module-bluetooth-device.c:1519, function
a2dp_process_render(). Aborting.

I'll let you debug this one, should be easier :-)

Other things I noticed: the volume is much higher in passthrough mode,
maybe we need to find a way to set the volume on the headset to match
the volume used for PCM. Also I heard some high-frequency modulations,
typically coding noise, maybe there's still something fishy during the
mp3 decode part.
-Pierre


[gst-plugins-good]$ gst-launch --gst-debug=pulsesink:5 filesrc
location=~/AURAL/Audio/theTest-320.mp3 ! flump3dec ! pulsesink
device=bluez_sink.00_0B_E4_94_31_9D
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
Got EOS from element "pipeline0".
Execution ended after 9540609373 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
[gst-plugins-good]$ gst-launch --gst-debug=pulsesink:5 filesrc
location=~/AURAL/Audio/theTest-320.mp3 ! mp3parse ! pulsesink
device=bluez_sink.00_0B_E4_94_31_9D
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
Got EOS from element "pipeline0".
Execution ended after 9551288915 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
[gst-plugins-good]$ gst-launch --gst-debug=pulsesink:5 filesrc
location=~/AURAL/Audio/theTest-320.mp3 ! flump3dec ! pulsesink
device=bluez_sink.00_0B_E4_94_31_9D
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstPulseSink:pulsesink0:
Failed to connect stream: Connection terminated
Additional debug info:
pulsesink.c(1005): gst_pulseringbuffer_acquire ():
/GstPipeline:pipeline0/GstPulseSink:pulsesink0
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: diff-arun.patch
Type: application/octet-stream
Size: 8175 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20110314/e6cba18a/attachment.obj>


More information about the pulseaudio-discuss mailing list