[pulseaudio-discuss] Does SBC support dynamically changing bit rates and frame lengths?

Burkhard Stubert burkhard.stubert at googlemail.com
Sat Jan 2 18:27:13 PST 2010

Hi folks,

I use my mobile phone as the source of an A2DP (Bluetooth) link and a Linux
box as the sink of this link. The connection is successfully established and
pulseaudio on the Linux box (sink) creates a bluez_source. As soon as the
sink receives the first A2DP frame and tries to decode it with sbc_decode(),
the assertion "pa_assert_fp((size_t) decoded == a2dp->frame_length);" in
a2dp_process_push() (module-bluetooth-device.c) fails.

The frame length of the received frame is 109 and the expected frame length
is 115. The expected frame length is set up once in set_conf() before the
A2DP streaming starts and it is never changed afterwards. This does not
sound right, because the A2DP specification (v12) explicitly states:  "The
SRC is capable of changing the bit rate dynamically by changing the bitpool
parameter without suspending." And, the frame length also depends on the
bitpool parameter. So, both the bit rate and the frame length can change
dynamically. From the code, I do not see that pulseaudio's module can adapt
the bit rate and frame length dynamically. But I might be wrong.

So, my question is: Does pulseaudio's SBC implementation support dynamically
changing bit rates and frame lengths? If so, how and where?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20100103/0a62d614/attachment.htm>

More information about the pulseaudio-discuss mailing list