« Back

Audio quality of SBC XQ Bluetooth audio codec

SBC XQ logo

SBC XQ is not just a new Bluetooth (BT) audio codec, it is a lifehack.

Standard BT audio codec SBC is incorporated into all BT stereo audio devices as mandatory [1][2]. It can work at arbitrary high bitrates but BT documents, however, recommend 328 kbit/s (44.1/16) for high quality mode. This mode provides just acceptable audio quality according to SE ratings. In order to increase quality of audio transmission over BT:

  • CSR plc, a multinational semiconductor company acquired APT Licensing Ltd. and introduced aptX audio codec, then aptX HD, then Qualcomm bought all these and additionally introduced aptX Low Lattency and aptX Adaptive codecs
  • Sony introduced its proprietary Hi-Rez LDAC
  • Samsung introduced three new BT audio codecs: HD/Scalable/UHQ-BT
  • Huawei introduced HWA LHDC audio codec
  • Apple uses AAC in its products
  • a guy under the nick ValdikSS wrote the patch for Android and another guy - Pali Rohár - for Linux; these patches unlock higher bitrates of SBC encoder.

It turned out that almost all modern BT headphones, speakers, receivers ... support SBC bitrates up to 730 kbit/s just out of the box. And that patch (SBC XQ) helps to encode BT audio on Andriod smartphones at the following bitrates:

  • BT EDR 2 - 452.0 kbit/s for 44.1/16, 492.0 kbit/s for 48/16
  • BT EDR 3 - 551.2 kbit/s for 44.1/16, 600.0 kbit/s for 48/16

The choice of bitrates looks like a reasonable compromise between audio quality, compatibility with current BT devices and stability of BT connection [3][4].

The SBC XQ codec (at bitrates for 44.1/16) was added to our live listening tests:

SBC XQ CBR@452.0 (Bluetooth) - Subband codec for Bluetooth A2DP profile, CBR, 452.0 kbit/s FBR
CODER: SBC Encoder LIB Version 1.5 (Philips)
- usage: sbc_encoder -v -p -r453000 -oout.sbc ref.wav
- SBC XQ default setting for BT EDR2
- 44100 Hz, Dual Channel
- bitpool: 38, bands: 8, blk_len: 16, allocation method: Loudness
DECODER: SBC Decoder LIB Version 1.5 (Philips)

SBC XQ CBR@551.2 (Bluetooth) - Subband codec for Bluetooth A2DP profile, CBR, 551.2 kbit/s FBR
CODER: SBC Encoder LIB Version 1.5 (Philips)
- usage: sbc_encoder -v -p -r552000 -oout.sbc ref.wav
- SBC XQ default setting for BT EDR3
- 44100 Hz, Dual Channel
- bitpool: 47, bands: 8, blk_len: 16, allocation method: Loudness
DECODER: SBC Decoder LIB Version 1.5 (Philips)

Early ratings (inaccurate so far) are available on the page Encoders 320+ kbit/s. For more accurate results, please, participate in SE listening tests - there is a short instruction on that page below the ratings.

 

Df-measurements of SBC XQ with music signal

If the text below seems a bit confusing, please, refer to the previous article - Audio quality of Bluetooth aptX and aptX HD

Once again, assessment of perceived sound quality by means of any objective measurements should be made with great care. In df-metric we have the criterion, which defines whether df-measurements can be used as such or not. It is similarity of sound signatures or artifact signatures of devices under test. If their artifact signatures are close enough, then their df-measurements correlate well to the scores of perceived sound quality.

For broader perspective we will compare artifact signatures of SBC XQ@452.0 and SBC XQ@551.2 with SBC@201 (Low Quality), SBC229 (Middle Quality), SBC@328 (High Quality), aptX@352, aptX HD@529, ADPCM IMA@354, AAC@256. As in previous articles we will use Pink Floyd album “The Dark Side of The Moon” as the test signal.

Figure 1. The dendrogram shows how different BT audio codecs relate to each other according to their artifact signatures. The shorter the link between two codecs, the more similar their artifact signatures. The Spearman distance 0.1 is critical for relation of Df measurements to subjective scores. Similarity dendrogram of tested BT codecs

 

We can see that SBC and aptX codecs have similar artifact signatures (distance<0.1), so their df-measurements are indicative of their perceived sound quality.

Figure 2. Histograms of df-sequences for the codecs under test. Medians and 25/75 percentiles are indicated. Median Df is an estimator of average waveform degradation. Shape of histogram relates to character/type of waveform degradation - artifact signature.

 

Looking at Df medians we can safely conclude that audio quality of SBC XQ is comparable to aptX HD. And for BT EDR3 devices SBC XQ slightly surpasses aptX HD. It will be impossible to tell them apart in a blind listening test. SBC codec uses primitive psychoacoustic model for encoding and aptX does not use it at all, so their perceived audio quality is determined mostly by bitrate. Different settings of SBC, including SBC XQ, can be compared to aptX and aptX HD aurally with the help of Bluetooth A2DP SBC/aptX online encoder [5].

All current BT stereo devices could use this higher quality encoding. It just suffices to modify BT stack of sending device. Receiving BT devices that support only mandatory SBC codec will benefit most from this trick.

At the moment the required patch is included into LineageOS, Resurrection Remix and crDroid forks of Android. The patch for Linux PulseAudio from Pali Rohár besides SBC XQ also adds support for aptX, aptX HD and FastStream codecs [6]. This extra quality is for free. It's hard to imagine any objection to including this option into all BT stacks and the main Android branch. You can request this feature in your operating system:

Future versions of SBC XQ will include more bitrate choices. So, manufacturers of BT headphones, speakers and receivers can further improve audio quality of their BT products simply by removing all limits to SBC decoding parameters, thus providing full support for SBC XQ.

References

[1] Bluetooth SIG, Specification of the Bluetooth System, Profiles, Advanced Audio Distribution Profile, v1.3.2, 2019-01-21, https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=457083

[2] Christian Hoene, Mansoor Hyder, “Considering Bluetooth’s Subband Codec (SBC) for Wideband Speech and Audio on the Internet”, Technical Report WSI-2009-3, 2009-10, https://pdfs.semanticscholar.org/1f19/561d03bc88b67728375566c95bbf77e730d5.pdf

[3] ValdikSS, “Bluetooth stack modifications to improve audio quality on headphones without AAC, aptX, or LDAC codecs”, 2019-06-18, https://habr.com/en/post/456476/

[4] ValdikSS, “Improve Bluetooth audio quality on headphones without aptX or LDAC”, since 2018-08-22, https://forum.xda-developers.com/android/software-hacking/improve-bluetooth-audio-quality-t3832615

[5] Bluetooth A2DP SBC/aptX online encoder, https://btcodecs.valdikss.org.ru/sbc-encoder/

[6] Pali Rohár, New API for Bluetooth A2DP codecs, since 2019-01-12, https://patchwork.freedesktop.org/series/55117/

 

Update


September 2019

Another patch for PulseAudio BT stack is available now from JP Guillemin - https://github.com/JPGuillemin/pulseaudio/tree/SBC-XQ. This patch activates SBC XQ mode in Linux systems in the most simple end effective way - it allows to transmit audio using standard SBC codec in the highest possible quality supported by receiving BT device.

 

Comments
resom
Hi,

I tried the Toshiba Bluetooth Stack on windows, but exept the sound quality option, I don’t find the one to enable Dual Channel Mode!! Where is it hidden? Thanks for your help!
Posted on 8/20/19 4:43 PM.
Serge Smirnoff
I've never heard about Dual Ch. mode being implemented somewhere. For BT detailes, please refer to the article "Audio over Bluetooth: most detailed information about profiles, codecs, and devices" - https://habr.com/en/post/456182/ by ValdikSS
Posted on 8/22/19 10:20 AM in reply to resom.
JP Guillemin
Hi,

I have made this patch for Pulseaudio 13.0 that extend SBP bitpool negociation to XQ quality.

here are the features of the (very simple and non intrusive) patch :
- allow to use bitpool 76 on devices that support it, aka SBC XQ
- harmless for devices limited to bitpool 53
- deprecates the need for APTX & APTX HD support, which are not better than SBC XQ, are not Open Source, and less supported by devices

Tested on 10 different devices : headsets, stereo speakers, mono speakers

The patch : http://download.zenwalk.org/x86_64/testing/pulseaudio-13.0-SBC-XQ_V2.patch

Could you eventually test it and/or add this patch as reference to the article ?

All the best
JP
Posted on 9/18/19 1:03 PM.
Serge Smirnoff
Cool. Thanks. Will do. But seems I will need your help. Please, contact me in any way - http://soundexpert.org/contact-us
Posted on 9/19/19 10:48 AM in reply to JP Guillemin.
ValdikSS
I suppose the patch is created to be included in Zenwalk Linux distro. Please don't to that, this is a terrible idea, it will definitely introduce regressions with some of the hardware.

1. Some hardware can't handle Dual Channel even if reports to support it. The audio will stutter or distort. I know 6 devices which act like this.
2. You've increased Joint Stereo max bitpool to 94. This will introduce regression with some hardware, too (see https://review.lineageos.org/c/LineageOS/android_packages_apps_Bluetooth/+/22931­0/4#message-366b72d29e7d0cdb273304b791317035bb2a1560)
3. You've chosen max bitpool 94, which produces bitstream which cannot be effectively packed in a Bluetooth packet. See https://btcodecs.valdikss.org.ru/sbc-bitrate-calculator/ (200 wasted bytes for EDR3).

Are you aware of Pali Rohar patchset, which among other things introduces SBC XQ support?
https://patchwork.freedesktop.org/series/55117/
If yes, what was the reason for making your own patch?
Posted on 9/20/19 8:25 PM in reply to JP Guillemin.
JP Guillemin
Thanks for your answer. Of course I have read all the articles you point above.

This patch is very simple, and won't affect any device which doesn't support dual Chanel or high bitpools. It just allow devices that clearly advertise that they support high bitpool : to actually be allowed to play SBC XQ. Everything remains negociated and won't cause any device to play SBC XQ if it doesn't advertise being able to do it during négociation. My Harman Kardon speaker advertise bitpool 94, and I wanted to provide a way to use these kind of higheend speaker corectlyto everyone. I agree with you that many devices still advertise bitpool 53 : my patch doesn't impact those devices. Pali's patch does