On 10.06.2019 17:53, Pali Rohár wrote: > 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? Probably not a problem, I'm not sure. > >> 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? Android exports EDR speed into media encoder, I don't know of Linux BlueZ stack much. Can you determine link MTU from inside the PulseAudio? If you can, you can use that: if MTU is more than 679, than it's most probably 3-DH5 mode (EDR 3mbit/s with 5 slots). > >> 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@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss