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.

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

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to