On Wednesday 05 June 2019 22:42:49 ValdikSS wrote:
> On 02.06.2019 18:25, Pali Rohár wrote:
> > Specify configuration for Low, Middle, High and Ultra High Quality of SBC
> > codec. SBC codec in Ultra High Quality has higher quality than aptX.
> > 
> > Automatic Quality mode matches configuration of SBC codec which was used
> > before this change. Which means that it accept configuration between Low
> > and High quality.
> > 
> > Current SBC code was extended to allow definitions of arbitrary
> > configuration variants of SBC codec parameters.
> > ---
> ...
> > +
> > +/* SBC Ultra High Quality, calculated to minimize wasted bytes and to be 
> > below max possible 512 kbps */
> > +static const a2dp_sbc_t sbc_uhq1_caps_table[] = {
> > +    FIXED_SBC_CAPS(SBC_CHANNEL_MODE_JOINT_STEREO, SBC_SAMPLING_FREQ_44100, 
> > 76), /* 454.8 kbps */
> > +    FIXED_SBC_CAPS(SBC_CHANNEL_MODE_JOINT_STEREO, SBC_SAMPLING_FREQ_48000, 
> > 76), /* 495   kbps */
> > +    FIXED_SBC_CAPS(SBC_CHANNEL_MODE_STEREO,       SBC_SAMPLING_FREQ_44100, 
> > 76), /* 452   kbps */
> > +    FIXED_SBC_CAPS(SBC_CHANNEL_MODE_STEREO,       SBC_SAMPLING_FREQ_48000, 
> > 76), /* 492   kbps */
> > +};
> > +static const a2dp_sbc_t sbc_uhq2_caps_table[] = {
> > +    FIXED_SBC_CAPS(SBC_CHANNEL_MODE_DUAL_CHANNEL, SBC_SAMPLING_FREQ_44100, 
> > 38), /* 452   kbps */
> > +    FIXED_SBC_CAPS(SBC_CHANNEL_MODE_DUAL_CHANNEL, SBC_SAMPLING_FREQ_48000, 
> > 38), /* 492   kbps */
> > +    FIXED_SBC_CAPS(SBC_CHANNEL_MODE_MONO,         SBC_SAMPLING_FREQ_44100, 
> > 37), /* 226   kbps */
> > +    FIXED_SBC_CAPS(SBC_CHANNEL_MODE_MONO,         SBC_SAMPLING_FREQ_48000, 
> > 37), /* 246   kbps */
> > +};
> ...
> 
> While working on Android SBC HD patch, allowing bitpools higher than 53 
> unfortunately introduced problems with some headphones. All major OS have 
> maximum bitpool locked to 53, and it seems there's a reason for that: 
> compatibility with broken devices. I had to revert bitpool increasing patch 
> in the final release and implement only Dual Channel patch.

It is a problem if pulseaudio/bluez exports one SEP with fixed SBC
bitpool 76 (min = max = 76) and another SEP with dynamic SBC bitpool
range 2-53?

> Some notes regarding UHQ profiles:
> 1. It would be great to use bitpool 38 for Dual Channel 2-DH5 (EDR 2 mbit/s) 
> and bitpool 47 for Dual Channel 3-DH5 (edr 3 mbit/s), automatically detecting 
> link speed. It pushes bitrate even further for 3-DH5 compatible devices (551 
> kbit/s for 44.1 kHz, 5 audio frames) and makes SBC on par with aptX HD. 
> That's what I did for Android patch.

How can be detect link speed? Is there some kernel API for it? Or deduce
it from socket send buffer size?

> 2. It's possible to introduce another "extreme quality" profile for 2-DH5 
> (EDR 2 mbit/s) Dual Channel, with 648 kbps @ 48 khz, 595.4 kbps @ 44.1 khz 
> (Up to 3 frames for 2DH5).
> 
> By the way, SBC HD patch has been merged into LineageOS 15.1 (Android 8) and 
> LineageOS 16.0 (Android 9). If you use LineageOS, you can now enable Dual 
> Channel in Bluetooth device settings (it's called HD Audio: SBC HD).
> 
> Besides my old SBC HD bitrate calculator 
> (https://btcodecs.valdikss.org.ru/sbc-bitrate-calculator/), I made in-browser 
> realtime SBC and aptX/HD encoder, with frequency spectrum analyzer. You can 
> now easily experiment with Bluetooth codecs quality:
> https://btcodecs.valdikss.org.ru/sbc-encoder/
> 

-- 
Pali Rohár
pali.ro...@gmail.com
_______________________________________________
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to