Re: [PATCH v2 1/2] Modular API for Bluetooth A2DP codec

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 17 September 2018 15:02:18 Tanu Kaskinen wrote:
> > > > +    sbc_info->min_bitpool = config->min_bitpool;
> > > > +    sbc_info->max_bitpool = config->max_bitpool;
> > > > +
> > > > +    /* Set minimum bitpool for source to get the maximum possible block_size */
> > > > +    sbc_info->sbc.bitpool = is_a2dp_sink ? sbc_info->max_bitpool : sbc_info->min_bitpool;
> > > 
> > > Do you understand the logic here?
> > 
> > I have not looked deeply at this code. So I'm not fully sure. I just
> > moved existing code into new file.
> 
> Ok, so this remains a mystery to all of us.

Now I figured out, why that logic is there. Is is because of how block
size in a2dp_prepare_decoder_buffer() function is calculated. Thanks for
your email about while loops, checking processed sizes in faststream
decoder function; this helped me.

It is mess. I'm going to cleanup this code. But it would need some
changes in codec API...

That minimal bitpool value is there really needed and I will add comment
with detailed explanation to code.

Bitpool is controlled by sender so for source by other side -- not
pulseaudio. Frame length depends on bitpool value and buffer size which
is calculated from MTU is inversely proportional to frame length.

To prevent decoding failures due to small buffer, we set bitpool value
for source to the smallest value, so a2dp_prepare_decoder_buffer()
calculates and allocates the largest possible buffer size.

sbc_info->sbc.bitpool is not used by SBC decoder itself. Moreover after
decoding each SBC frame, libsbc decoder updates this value to bitpool of
decoded SBC frame.

-- 
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

[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux