As I write, now it’s 2022, Bluetooth has reached the age of majority. Created as a “short-link” radio technology in the late 1990s, it quickly found its place connecting mobile headsets to phones. And from there it was only a short step to stereo music.
Well, that step was via the Advanced Audio Distribution Profile (A2DP), which permits decent quality stereo audio to be transmitted, and a whole lot of other highly technical stuff we won’t touch upon. Except for one thing: the codec.
Codec stands for Coder-Decoder. Since Bluetooth wireless is digital, analogue audio must be converted to a digital signal for transmission. And then at the headphone end it has to be turned back into analogue sound which can be amplified for you to hear.
Unfortunately, the Bluetooth connection won’t carry enough data to squeeze in uncompressed CD-standard digital audio (this runs at 1.411 megabits per second). So the digital audio has to be compressed in order to fit in the wireless pipe between your phone and headphones. Thus a codec. Your phone encodes the analogue audio into the chosen digital audio format, and your headphones or other audio gear decodes it for playback.
The powers that be for Bluetooth – they’re known as the Bluetooth Special Interest Group or SIG – provided just such a codec. Happily, the Bluetooth SIG has been remarkably open in its administration of the Bluetooth standards, so it has allowed equipment makers to include other codecs as well. That has permitted a lot of third-party innovation that has without doubt improved the audio quality delivered via Bluetooth.
What makes for good Bluetooth sound
An ideal Bluetooth Codec would allow the transmission of at least 1.411Mbps so that CD-quality audio could be sent without compression. An almost as good codec would allow less, but enough to encompass a losslessly compressed audio signal, similar to FLAC. But when adequate quality stereo music came to Bluetooth in 2003, it was in the form of a fairly low bitrate codec called SBC.
Now, audio quality depends on many things, but when it comes to digital compression there are two factors. One is the quality of the codec itself while the other is the bitrate. Enough bits, and no compression at all is required. But if there are a limited number of bits available, that doesn’t mean that all codecs are the same. Some simply sound better than others. A rough heuristic: the later a codec was developed, the better it’s likely to sound for a given bitrate. For example, it’s generally accepted that AAC sounds better – that is, more closely aligned to the original uncompressed signal – at the same bitrate as MP3.
And as for the number of bits, there’s a trade-off: the lower the bandwidth, the more reliable the connection. Having higher fidelity isn’t much good if the sound keeps dropping out.
Now let’s look at the available codecs in more detail. And remember, you can only use a codec if it is supported by both the headphones and the transmitting device. The audio must be coded and decoded by compatible processes.
The one universal Bluetooth codec is SBC, for “low-complexity subband codec”. This codec was designed specifically for Bluetooth almost twenty years ago (it was launched in May 2003), with the intention of providing adequate stereo sound quality in the limited bandwidth then available via Bluetooth and with very low processing demands (thus “low-complexity”). That last feature was because only limited computing power and battery life was available. But that’s far less important these days, given the improvements in both processors and batteries. SBC supports standard definition (16-bit, 44.1kHz and 48kHz) stereo audio in its Bluetooth implementation with bitrates of up to 328kbps (44.1kHz sampling) or 345kbps (48kHz). Some implementations also include a “Middle Quality” profile which runs at 229kbps and 237kbps.
While the sound may be a bit iffy, the upsides of SBC are universal compatibility, a very reliable connection and reduced battery demands compared to some of the alternatives. And clearly one of the best-known headphone brands on the market thinks SBC is good enough, since it only offers SBC and AAC compatibility.
The next most widely used audio codec in Bluetooth is AAC. That stands for Advanced Audio Coding. It’s part of the MPEG-2 family of audio and video codecs and was developed to provide higher quality at lower bitrates than such formats as MP3 (which is actually part of the MPEG-1 family … yes, it’s confusing.) It’s old, having been launched only three years after MP3 way back in 1997. But it’s widely used because virtually all Apple devices support it for Bluetooth. Not surprising, since that was the standard format for Apple’s iTunes Store. (AAC supports digital rights management, whereas MP3 doesn’t, so that was likely Apple’s primary motivation back then.) While AAC itself supports higher bitrates (typically up to 320kbps), the consensus is that it runs at 256kbps via Bluetooth. That matches Apple’s default encoding rate for purchased music, thus avoiding any resampling.
AAC is generally regarded as better sounding than SBC, at least when used with Apple devices. A lot of headphones support AAC, although not all. Many Android phones these days also support AAC, but not all. The AAC capabilities of some Android phones are considered poor. We’d strongly recommend that if the main purpose for your wireless headphones is to listen via an Apple device (iPhone, iPod Touch, iPad or Mac), that you choose headphones supporting AAC.
aptX, aptX HD, etc
Much newer to headphones is aptX. While MP3 and AAC (and to some extent SBC) use perceptual encoding – they achieve high compression rates in part through discarding elements of the sound the algorithms suggest aren’t audible – aptX instead uses a proprietary version of Adaptive Differential PCM compression. In a sense this works somewhat like FLAC, Apple Lossless and so on. Instead of the original digital samples being sent, either differences between each sample and the next, or between each of them and a model of the sound, are sent. The “Adaptive” bit allows the system to change strategies as required. However no version of aptX is actually lossless. ADPCM compression permits a notionally increased level of noise (which is how random errors are manifested in digital audio).
The “apt” part of the name stands for “Audio Processing Technology” and it was originally developed way back in the 1980s. It has long been used in telecommunications, but in the mid-2010s aptX began appearing in some premium Android phones as a better codec for music. In 2017 native support for aptX was added to Android Oreo (ie, Android 8), along with aptX HD and aptX Adaptive.
aptX runs at 325kbps (44.1kHz sampling) or 384kbps (48kHz) and supports 16-bit audio. aptX HD runs at 576kbps and it supports 24-bit audio, although I can’t see why precious bits should be wasted for that. aptX Adaptive can vary its bitrate between 279kbps and 420kbps, adjusting to ensure there are no dropouts. It alone can support 96kHz sampling, but again I think that’s a waste of bits that could be put to better use ensuring the core audio frequencies are as fully and properly delivered as possible.
There is also a version called aptX LL, where LL stands for Low Latency. That is, it reduces the delay in the audio that would otherwise be caused by the codec. But it simply can’t address the latency inherent in Bluetooth itself. Bluetooth sound is not ideal for gamers who rely on responding quickly to audio cues.
An increasing number of headphones support one or other flavour of aptX. aptX HD is backwards compatible with aptX and aptX Adaptive is backwards compatible with both of the others as well as aptX LL. There’s little doubt that aptX provides better sound quality than SBC, and probably also AAC.
No-one seems to know what the letters stand for in Sony’s proprietary LDAC codec. This one really does support high resolution audio – up to 88.1kHz/96kHz, with 16, 24 or 32 bits. (Why 32 bits? Who knows.) Indeed, it is one of two codecs formally certified “Hi-Res Audio Wireless” by the Japan Audio Society. Support for it is available to Android developers and an increasing number of them include it. It first appeared in high-end Sony phones – I first noticed it in 2016 – and the next year native support was incorporated into Android. Of course, phone makers aren’t obliged to include it.
That high resolution stuff depends on the connection bitrate. LDAC offers three speeds for each of the two kinds of sampling rates. With 44.1kHz/88.2kHz it runs at 303, 606 or 909kbps. With 48/96kHz, they’re 330, 660 or 990kbps. The speed switches automatically to ensure a reliable connection, although of course quality goes down along with the bitrate. An early deep dive into LDAC found that 990kbps really did provide the frequency response you’d expect with a 96kHz sample rate, although noise performance was diminished. However most phones defaulted to 660kbps or worse, and for those that didn’t, you needed an ideal connection to use 990kbps. Furthermore, with CD-quality audio, the performance at 303kbps was markedly poorer than with other codecs such as aptX or even SBC.
If you have the option, it’s probably best to switch off LDAC. But to do that you will likely need to have an app that controls the headphones or be able to delve into the developer settings of your phone. If you do that, be careful about what you change or you might do some damage.
LHDC is so new it almost sparkles. Not a whole lot is known about it, particularly as to how it works. Is it ADPCM-based? Perceptual audio-based? Some combination. We do know that LHDC stands (loosely, it seems) for Low Latency High-Definition Audio Codec, and that it was developed by a company called Savitech. As far I can work out (from the contact address on its website), this is a Taiwanese company, apparently different to another Taiwanese Savitech, and very much different to the Nigerian Savitech.
In practice, LHDC seems to be quite like LDAC in several ways. First, it can operate at three bitrates: 400, 560 and 900kbps. Second, it supports both standard definition audio and high resolution up to 24-bit 96kHz. It also is certified “Hi-Res Audio Wireless”. Again, current versions of Android can theoretically support this, but it’s up to each phone maker whether they’ve enabled this. And of course you’ll need headphones with support for the codec. As with aptX, there’s also a “low latency” version of LHDC, called either LHDC LL or LLAC. Again, the problem is that the codec isn’t the entire cause of audio delays – the hardware tends to add at least a couple of hundred milliseconds of delay. Gamers seeking best scores should use wired headphones.
You want even higher-resolution Bluetooth? Well the UAT (Ultra Audio Transmission) codec is said to support up to 192kHz, 24-bit audio. That’s in part because it can transmit and receive at up to 1200kbps, or about 20% more than LDAC. UAT was developed by a firm called HiBy, which seems to also develop portable audio players and looks to be based in China, although my research is far from conclusive on this point.
So far, the only products I’ve seen which support this are DACs and amplifiers with Bluetooth receivers from SMSL Audio. It strikes me that any portable connection running at 1.2Mbps is going to be quite iffy, so perhaps UAT’s best application is with in-home devices.
In 2020 the Bluetooth Special Interest Group – remember, the outfit that sets the standards for Bluetooth – introduced the Low Complexity Communication Codec – LC3 – as “the successor” to SBC. I haven’t seen this appear in any devices or headphones yet, and little is known about it other than it is said to provide better audio and better “package loss concealment” (ie. it papers over data gaps better) than SBC. Just be aware that is a thing in case it starts appearing in devices near you.
There you have it. There are many codecs that may be used between a source and a playback device. But I’d like to note two things. First, the best codec in the world isn’t going to have as much effect on audio quality as using higher quality gear. If you’re after Bluetooth headphones, for example, you’ll get the best sound from the headphones with the best drivers and design and amplifiers, not from the one with the best codec.
And, second, if possible, why not skip the codec completely? Use copper wire instead of radio waves to send sound. There’s no compression and no latency. If your phone doesn’t have a headphone socket, well there are plenty of high-quality compact DACs that can plug straight into your phone, and some of them are extremely small. Why not give that a try?