
Door de massale uitrol van smartphones zonder 3,5 mm audio-aansluiting zijn draadloze Bluetooth-koptelefoons voor velen de belangrijkste manier geworden om muziek te luisteren en te communiceren in headset-modus.
Fabrikanten van draadloze apparaten geven niet altijd gedetailleerde specificaties van hun producten, en artikelen over Bluetooth-audio op internet zijn vaak tegenstrijdig, soms onnauwkeurig, vertellen niet alles over de kenmerken en kopiëren vaak dezelfde onjuiste informatie.
Laten we proberen de protocollen, de mogelijkheden van de Bluetooth-stacks van de besturingssystemen, de koptelefoons en luidsprekers, en de Bluetooth-codecs voor muziek en spraak te begrijpen. We zullen onderzoeken wat de kwaliteit van het doorgegeven geluid en de vertraging beïnvloedt, en leren hoe we informatie kunnen verzamelen en decoderen over de ondersteunde codecs en andere mogelijkheden van apparaten.
TL;DR:
- SBC is een normale codec.
- De koptelefoons hebben hun eigen equalizer en post-processing voor elke codec afzonderlijk.
- aptX is niet zo goed als wordt beweerd in de reclame-aankondigingen.
- LDAC is marketingpraat.
- De geluidskwaliteit in gesprekmodus is nog steeds laag.
- Audio-encoders kunnen in de browser worden ingebouwd met C, door te compileren naar WebAssembly via emscripten, en ze zullen niet echt vertragen.
Muziek via Bluetooth.
De functionele component van Bluetooth wordt bepaald door profielen - specificaties van specifieke functies. Muziekoverdracht via Bluetooth vindt plaats met behulp van het profiel voor de overdracht van hoogwaardige eenrichtingaudio A2DP. De A2DP-standaard werd in 2003 aangenomen en is sindsdien niet ingrijpend gewijzigd.
Binnen het profiel zijn er 1 verplichte codec met lage rekeneisen SBC, speciaal ontworpen voor Bluetooth, en 3 extra. Ook het gebruik van niet gedocumenteerde codecs van eigen implementatie is toegestaan.
Vanaf juni 2019 bevinden we ons met 14 A2DP-codecs:
- SBC ← gestandaardiseerd in A2DP, wordt door alle apparaten ondersteund.
- MPEG-1/2 Laag 1/2/3 ← gestandaardiseerd in A2DP: iedereen kent , gebruikt in digitale tv , en onbekend
- MPEG-2/4 AAC ← gestandaardiseerd in A2DP.
- ATRAC ← oude codec van Sony, gestandaardiseerd in A2DP.
- LDAC ← nieuwe codec van Sony.
- aptX ← codec uit 1988.
- aptX HD ← hetzelfde als aptX, maar met andere coderingsparameters.
- aptX Low Latency ← helemaal andere codec, geen software-implementatie.
- aptX Adaptive ← nog een codec van Qualcomm.
- FastStream ← pseudo-codec, bidirectionele modificatie van SBC.
- HWA LHDC ← nieuwe codec van Huawei
- Samsung HD ← ondersteund door 2 apparaten
- Samsung Scalable ← ondersteund door 2 apparaten
- Samsung UHQ-BT ← ondersteund door 3 apparaten
Waarom zijn codecs überhaupt nodig, vraagt u zich af, wanneer Bluetooth EDR biedt, dat gegevens kan overdragen met een snelheid van 2 en 3 Mbit/s, terwijl 1.4 Mbit/s voldoende is voor ongecomprimeerde stereo 16-bits PCM?
Gegevensoverdracht via Bluetooth
Bluetooth biedt twee soorten gegevensoverdracht: Asynchronous Connection Less (ACL) voor asynchrone overdracht zonder verbinding, en Synchronous Connection Oriented (SCO), voor synchrone overdracht met voorafgaande verbindingseisen.
De overdracht gebeurt met behulp van een tijdsverdelingsschema en kanaalselectie voor elk pakket afzonderlijk (Frequency-Hop/Time-Division-Duplex, FH/TDD), waarbij de tijd wordt verdeeld in intervallen van 625 microseconden, genaamd slots. Eén apparaat verzendt in de even slots, het andere in de oneven. Een verzonden pakket kan 1, 3 of 5 slots innemen, afhankelijk van de datagrootte en het geselecteerde transmissietype; in dat geval vindt de overdracht door één apparaat plaats in zowel even als oneven slots tot het einde van de overdracht. In totaal kunnen tot 1600 pakketten per seconde worden verzonden en ontvangen als elk pakket 1 slot in beslag neemt, en beide apparaten ononderbroken iets verzenden en ontvangen.
2 en 3 Mbit/s voor EDR, die u kunt tegenkomen in aankondigingen en op de Bluetooth-website, zijn de maximale kanaalsnelheid voor de overdracht van alle gegevens samen (inclusief technische headers van alle protocollen waarin de gegevens moeten worden ingekapseld), in beide richtingen tegelijk. De werkelijke gegevensoverdrachtsnelheid kan sterk variëren.
Voor muziekoverdracht wordt de asynchrone methode gebruikt, meestal met behulp van pakketten van het type 2-DH5 en 3-DH5, die de maximale hoeveelheid gegevens dragen in modus EDR van respectievelijk 2 Mbit/s en 3 Mbit/s, en 5 slots in het tijdsverdelingsschema gebruiken.
Schematische weergave van overdracht met 5 slots door één apparaat en 1 slot door een ander (DH5/DH1):

Vanwege het principe van tijdsdeling van het ether moeten we 625-microseconden wachten na het verzenden van een pakket, als het tweede apparaat ons niets verstuurt of een klein pakket verzendt, en langer als het tweede apparaat grote pakketten verzendt. Als er meer dan één apparaat op de telefoon is aangesloten (bijvoorbeeld een hoofdtelefoon, een horloge en een fitnessarmband), wordt de verzendtijd tussen hen allemaal verdeeld.
De noodzaak om audio in speciale transportprotocollen L2CAP en AVDTP te encapsuleren, neemt 16 bytes weg van het mogelijke maximale aantal overdraagbare nuttige audio-inhoud.
Pakkettype
Aantal slots
Max. aantal bytes per pakket
Max. aantal bytes nuttige belasting A2DP
Max. bitrate nuttige belasting A2DP
2-DH3
3
367
351
936 kbit/s
3-DH3
3
552
536
1429 kbit/s
2-DH5
5
679
663
1414 kbit/s
3-DH5
5
1021
1005
2143 kbit/s
1414 en 1429 kbit/s zijn absoluut onvoldoende voor het overdragen van ongecomprimeerde audio in reële omstandigheden, met een ruisachtige 2.4 GHz-band en de noodzaak om stuurgegevens te verzenden. EDR 3 Mbit/s is veeleisend in termen van zendvermogen en ruis in de ether, daarom is zelfs in de modus 3-DH5 comfortabele overdracht van PCM onmogelijk, er zullen constant kortstondige onderbrekingen zijn, en het zal alleen op een paar meter afstand werken.
In de praktijk is zelfs een 990 kbit/s audiostroom (LDAC 990 kbit/s) moeilijk te verzenden.
Laten we terugkeren naar de codecs.
SBC
Codec die verplicht is voor alle apparaten die de A2DP-standaard ondersteunen. De beste en slechtste codec tegelijk.
Samplingfrequentie
Bitdiepte
Bitrate
Ondersteuning van codering
Ondersteuning van decodering
16, 32, 44.1, 48 kHz
16 bit
10-1500 kbit/s
Door alle apparaten
Door alle apparaten
SBC is een eenvoudige en rekentechnisch snelle codec, met een primitief psychoakoestisch model (enkel het maskeren van stille geluiden wordt toegepast), die adaptieve pulscodemodulatie (APCM) gebruikt.
De A2DP-specificatie beveelt het gebruik van twee profielen aan: Middle Quality en High Quality.

De codec heeft veel instellingen waarmee de algoritmische vertraging, het aantal monsters in een blok, de bitverdeling en andere parameters beheerd kunnen worden, maar meestal worden dezelfde aanbevolen parameters in de specificatie gebruikt: Joint Stereo, 8 frequentiebanden, 16 blokken in een audioframe, de manier van bitverdeling Loudness.
SBC ondersteunt dynamische aanpassing van de Bitpool-parameter, die rechtstreeks van invloed is op de bitrate. Als de radiofrequentie verzadigd is, gaan pakketten verloren of zijn de apparaten op grote afstand, kan de audiobron de Bitpool verlagen totdat de verbinding weer normaal is.
De fabrikanten van de meeste koptelefoons stellen een maximale waarde voor de Bitpool in op 53, wat de bitrate beperkt tot 328 kilobits per seconde bij gebruik van het aanbevolen profiel.
Zelfs als de fabrikant van de koptelefoon een maximale waarde voor Bitpool hoger dan 53 heeft ingesteld (zoals modellen: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods en sommige ontvangers en autoradio's), zullen de meeste besturingssystemen de verhoogde bitrates niet toestaan vanwege een intern opgelegd limiet in de Bluetooth-stacks.
Daarnaast stellen sommige fabrikanten een laag maximum voor de Bitpool in voor bepaalde apparaten. Bijvoorbeeld, voor de Bluedio T is het 39, en voor de Samsung Gear IconX is het 37, wat resulteert in een slechte geluidskwaliteit.
Kunstmatige beperkingen van de ontwikkelaars van de Bluetooth-stacks zijn waarschijnlijk ontstaan door incompatibiliteit van sommige apparaten met hoge Bitpool-waarden of atypische profielen, zelfs als ze beweerden deze te ondersteunen, en een tekort aan tests tijdens certificering. Voor de auteurs van Bluetooth-stacks was het eenvoudiger om zich te beperken tot conformiteit met het aanbevolen profiel, in plaats van een database van incompatibele apparaten op te bouwen (hoewel ze dat nu doen voor andere niet goed functionerende functies).
SBC wijst dynamisch bits toe voor frequentiebanden, werkend van laag naar hoog, met verschillende gewichten. Als de gehele bitrate wordt gebruikt voor lage en middelhoge frequenties, zullen hoge frequenties worden 'afgekapt' (inplaats daarvan zal er stilte zijn).
Voorbeeld SBC 328 kbit/s. Bovenaan — origineel, onderaan — SBC, met af en toe schakelen tussen tracks. Voor audio in het videobestand wordt een verliesloze compressiecodec, FLAC, gebruikt. Het gebruik van FLAC in een mp4-container is officieel niet gestandaardiseerd, dus het is geen garantie dat uw browser het afspeelt, maar het zou moeten werken in de laatste versies van desktop Chrome en Firefox. Als u geen geluid heeft, kunt u het bestand downloaden en openen in een volwaardige videospeler.
ZZ Top — Sharp Dressed Man
Op de spectrogram is het moment van overschakeling zichtbaar: SBC snijdt periodiek stille geluiden boven de 17,5 kHz en выделяет helemaal geen bits voor frequenties boven de 20 kHz. De volledige spectrogram is beschikbaar met een klik (1,7 MB).
Ik hoor geen verschil tussen de originele en SBC op dit nummer.
Laten we iets recenter nemen en het audio simuleren dat zou ontstaan bij het gebruik van Samsung Gear IconX-oordopjes met Bitpool 37 (boven — het oorspronkelijke signaal, onder — SBC 239 kbps, geluid in FLAC).
Mindless Self Indulgence — Witness
Ik hoor knacken, een verminderd stereo-effect en een onaangename 'klik' van de vocalen in de hoge frequenties.
Hoewel SBC een zeer flexibele codec is, kan deze worden ingesteld voor lage vertragingen, biedt het uitstekende audiokwaliteit bij hoge bitrates (452+ kbps) en redelijk goed voor de meeste mensen bij standaard Hoge Kwaliteit (328 kbps), omdat de A2DP-standaard geen vaste profielen vastlegt (en alleen aanbevelingen doet), hebben ontwikkelaars van stacks kunstmatige beperkingen opgelegd aan de Bitpool, de audio-instellingen worden niet weergegeven in de gebruikersinterface, en fabrikanten van oordopjes zijn vrij om hun instellingen in te stellen en geven nooit de waarde van Bitpool in de technische specificaties van het product aan, de codec heeft een slechte reputatie op het gebied van geluidskwaliteit, hoewel dit niet het probleem is van de codec zelf.
De Bitpool-parameter beïnvloedt de bitrate alleen binnen één profiel. Dezelfde waarde Bitpool 53 kan zowel een bitrate van 328 kbps geven bij het aanbevolen profiel Hoge Kwaliteit, als 1212 kbps met Dual Channel en 4 frequentiebanden, waardoor ontwikkelaars van besturingssystemen, naast de beperkingen op Bitpool, ook een beperking op Bitrate instellen. Zoals ik het zie, is deze situatie ontstaan door een tekortkoming in de A2DP-standaard: de bitrate had moeten worden afgesproken, niet de Bitpool.
Tabel met ondersteuning voor SBC-mogelijkheden in verschillende besturingssystemen:
het besturingssysteem
Ondersteunde samplefrequenties
Max. Bitpool-limiet
Max. Bitrate-limiet
Typische Bitrate
Dynamische Bitpool-aanpassing
Windows 10
44.1 kHz
53
512 kbps
328 kbps
✓*
Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (bij inkomende verbinding), 53 (bij uitgaande)
Geen beperking
328 kbps
✓*
macOS High Sierra
44.1 kHz
64, standaard 53***
Onbekend
328 kbps
✗
Android 4.4-9
44.1/48 kHz**
53
328 kbps
328 kbps
✗
Android 4.1-4.3.1
44.1, 48 kHz**
53
229 kbps
229 kbps
✗
Blackberry OS 10
48 kHz
53
Geen beperking
328 kbps
✗
* Bitpool daalt alleen, maar verhoogt niet automatisch bij verbeterde overdrachtseisen. Om Bitpool te herstellen, moet je de weergave stoppen, een paar seconden wachten en de audio opnieuw starten.
** De standaardwaarde hangt af van de stack-instellingen die tijdens het compileren van de firmware zijn opgegeven. In Android 8/8.1 is de frequentie alleen 44,1 kHz of 48 kHz, afhankelijk van de instellingen bij het compileren; in andere versies worden 44,1 kHz en 48 kHz tegelijkertijd ondersteund.
*** De Bitpool-waarde kan verhoogd worden in het programma Bluetooth Explorer.
aptX en aptX HD
aptX is een eenvoudige en computatief snelle codec, zonder psycho-akoestiek, die adaptieve differentiële impulsmodulatie gebruikt (). Het verscheen rond 1988 (datumnotering dat is gedateerd februari 1988), en werd voor Bluetooth voornamelijk gebruikt in professionele draadloze audioapparatuur. Het behoort momenteel toe aan Qualcomm, vereist licenties en royaltybetalingen. Per 2014: $6000 eenmalig en ongeveer $1 per apparaat, voor partijen tot 10.000 apparaten (, p. 16).
aptX en aptX HD zijn dezelfde codec met verschillende coderingsprofielen.
De codec heeft slechts één parameter - de keuze van de bemonsteringsfrequentie. Er is ook een keuze voor het aantal/modus van de kanalen, maar in alle apparaten die ik ken (70+ stuks) wordt uitsluitend Stereo ondersteund.
Codec
Samplingfrequentie
Bitdiepte
Bitrate
Ondersteuning van codering
Ondersteuning van decodering
aptX
16, 32, 44.1, 48 kHz
16 bit
128 / 256 / 352 / 384 kbps (afhankelijk van de bemonsteringsfrequentie)
Windows 10 (desktop en mobiel), macOS, Android 4.4+/7*, Blackberry OS 10
Een breed scala aan audioapparaten (hardwarematig)
* Versies onder 7 vereisen aanpassingen van de Bluetooth-stack. De codec wordt alleen ondersteund als de fabrikant van het Android-apparaat de licentie voor gebruik van de codec bij Qualcomm heeft verkregen (als de OS coderingbibliotheken bevat).
aptX splitst audio in 4 frequentiebanden en kwantiseert ze gedurende de tijd met hetzelfde aantal bits: 8 bits voor 0-5.5 kHz, 4 bits voor 5.5-11 kHz, 2 bits voor 11-16.5 kHz, 2 bits voor 16.5-22 kHz (cijfers voor een bemonsteringsfrequentie van 44.1 kHz).
Een voorbeeld van aptX-audio (boven - het originele signaal, onder - aptX, spectrogrammen van alleen de linker kanalen, geluid in FLAC):
De hoge frequenties zijn iets roder geworden, maar het verschil is niet hoorbaar.
Vanwege de vaste bits verdeling kan de codec geen bits "overdragen" naar de frequenties die daar het meest behoefte aan hebben. In tegenstelling tot SBC zal aptX geen frequenties "afknippen", maar ruis aan deze frequenties toevoegen, waardoor het dynamisch bereik van audio wordt verminderd.
Men moet niet aannemen dat het gebruik van bijvoorbeeld 2 bits voor de band het dynamisch bereik tot 12 dB vermindert: ADPCM maakt een dynamisch bereik tot 96 dB mogelijk, zelfs bij gebruik van 2 bits kwantisatie, maar alleen bij een bepaald signaal.
ADPCM slaat het verschil in numerieke representatie op tussen de huidige en de volgende sample, in plaats van de absolute waarde op te slaan zoals in PCM. Dit maakt het mogelijk om de vereisten voor het aantal bits dat nodig is voor het opslaan van dezelfde (verliesloze) of praktisch dezelfde (met relatief kleine afrondingsfout) informatie te verminderen. Tabellen met coëfficiënten worden gebruikt om afrondingsfouten te verminderen.
Bij het ontwikkelen van de codec hebben de auteurs de ADPCM-coëfficiënten berekend op basis van een set muziek-audiobestanden. Hoe dichter het audiosignaal bij dat muziekbestand ligt, waarvan de tabellen zijn opgebouwd, hoe minder kwantisatiefouten (ruis) aptX genereert.
Daarom zullen synthetische tests altijd slechtere resultaten opleveren dan muziek. Ik heb een speciale synthetische test gemaakt waarop aptX slechte resultaten laat zien — een sinusgolf met een frequentie van 12,4 kHz (bovenaan het originele signaal, onderaan aptX. Geluid in FLAC. Zet het volume lager!):
Spectrumgrafiek:

Ruis is duidelijk hoorbaar.
Als echter een sinusgolf met een lagere amplitude wordt gegenereerd zodat deze stiller is, zal de ruis ook stiller worden, wat wijst op een breed dynamisch bereik:

Om het verschil te horen tussen het originele muziektrack en de gecomprimeerde versie, kan je een van de signalen inverteren en de tracks kanaal per kanaal optellen. Deze aanpak is in het algemeen incorrect en zou geen redelijk resultaat opleveren met complexere codecs, maar is specifiek voor ADPCM heel geschikt.
De gemiddelde kwadratische afwijking van de signalen ligt rond de -37,4 dB, wat niet veel is voor zo'n gecomprimeerde muziek.
aptX HD
aptX HD is not an independent codec — it is an enhanced coding profile of the aptX codec. Changes have affected the number of bits allocated for coding frequency ranges: 10 bits for 0-5.5 kHz, 6 bits for 5.5-11 kHz, 4 bits for 11-16.5 kHz, 4 bits for 16.5-22 kHz (numbers for 44.1 kHz).
Codec
Samplingfrequentie
Bitdiepte
Bitrate
Ondersteuning van codering
Ondersteuning van decodering
aptX HD
16, 32, 44.1, 48 kHz
24 bits
192 / 384 / 529 / 576 kbit/s (depending on the sampling frequency)
Android 8+*
Some audio devices (hardware)
* Versies onder 7 vereisen aanpassingen van de Bluetooth-stack. De codec wordt alleen ondersteund als de fabrikant van het Android-apparaat de licentie voor gebruik van de codec bij Qualcomm heeft verkregen (als de OS coderingbibliotheken bevat).
Less common than aptX: it apparently requires separate licensing from Qualcomm, and individual license royalties.
Let's repeat the example with a sine wave at 12.4 kHz:

Much better than with aptX, but still somewhat noisy.
aptX Low Latency
A codec from Qualcomm, unrelated to the standard aptX and aptX HD, according to the limited information from people involved in its development. It is designed for interactive audio transmission with low latency (movies, games), where sound delay cannot be adjusted programmatically. Known software implementations of encoders and decoders are absent, it is supported exclusively by transmitters, receivers, headphones, and speakers, but not smartphones and computers.
Samplingfrequentie
Bitrate
Ondersteuning van codering
Ondersteuning van decodering
44.1 kHz
276/420 kbit/s
Some transmitters (hardware)
Some audio devices (hardware)
AAC
AAC, or Advanced Audio Coding, is a computationally complex codec with a serious psychoacoustic model. It has gained wide acceptance for audio on the internet, second in popularity after MP3. It requires licensing and royalty payments: $15,000 one-time (or $1,000 for companies with fewer than 15 employees) + $0.98 for the first 500,000 devices ().
The codec is standardized under MPEG-2 and MPEG-4 specifications, and contrary to common misconception, it does not belong to Apple.
Samplingfrequentie
Bitrate
Ondersteuning van codering
Ondersteuning van decodering
8 — 96 kHz
8 — 576 kbit/s (for stereo), 256 — 320 kbit/s (typical for Bluetooth)
macOS, Android 7+*, iOS
Een breed scala aan audioapparaten (hardwarematig)
* only on devices whose manufacturers have paid licensing fees
In iOS and macOS, the best current encoder, Apple AAC, is used, providing the highest possible audio quality. In Android, the second-best encoder, Fraunhofer FDK AAC, is used, but various hardware, integrated into the platform (SoC), with unknown encoding quality may also be used. , the encoding quality of AAC varies significantly among different Android phones:
De meeste draadloze audiotoestellen hebben een maximale bitrate van 320 kbps ingesteld voor AAC, sommige ondersteunen alleen 256 kbps. Andere bitrates komen uiterst zeldzaam voor.
AAC biedt uitstekende kwaliteit bij bitrates van 320 en 256 kbps, maar is gevoelig voor , echter, is het zelfs moeilijk om enige verschillen met het origineel te horen op iOS bij een bitrate van 256 kbps, zelfs na meerdere opeenvolgende coderingen; bij een enkele codering, bijvoorbeeld, MP3 320 kbps naar AAC 256 kbps zijn de verliezen verwaarloosbaar.
Net als bij andere Bluetooth-codecs wordt alle muziek eerst gedecodeerd en vervolgens gecodeerd door de codec. Bij het afspelen van muziek in AAC-formaat wordt deze eerst door het besturingssysteem gedecodeerd en daarna opnieuw in AAC gecodeerd, voor verzending via Bluetooth. Dit is nodig om meerdere audiostreams te mixen, zoals muziek en een melding van een nieuw bericht. iOS is geen uitzondering. Op internet zijn er veel beweringen dat muziek in AAC-formaat niet wordt getranscodeerd bij verzending via Bluetooth op iOS, wat onjuist is.
MP1/2/3
De codecs van de MPEG-1/2 Part 3-familie bestaan uit de bekende en veelgebruikte MP3, de minder gangbare MP2 (voornamelijk gebruikt in digitale TV en radio), en de volledig onbekende MP1.
Oude codecs MP1 en MP2 worden helemaal niet ondersteund: ik kon geen enkele hoofdtelefoon en geen enkele Bluetooth-stack vinden die deze encodeerde of decodeerde.
MP3-decodering wordt door sommige hoofdtelefoons ondersteund, maar codering wordt door geen enkele stack van moderne besturingssystemen ondersteund. Het lijkt erop dat de externe BlueSoleil-stack voor Windows kan coderen naar MP3, mits het configuratiebestand handmatig wordt aangepast, maar mijn installatie leidt tot een BSoD op Windows 10. Conclusie: de codec is feitelijk onbruikbaar voor Bluetooth-audio.
Vroeger, in de jaren 2006-2008, voordat de A2DP-standaard zich verspreidde in apparaten, luisterden mensen naar MP3-muziek op de Nokia BH-501-headset via het MSI BluePlayer-programma, dat beschikbaar was op Symbian en Windows Mobile. In die tijd liet de architectuur van smartphone-besturingssystemen toegang toe tot veel laag-niveau functies, en op Windows Mobile kon zelfs externe Bluetooth-stacks worden geïnstalleerd.
Het laatste patent voor de MP3-codec is verlopen; het gebruik van de codec vereist sinds 23 april 2017 geen licentiekosten meer.
Als we het langstdurende patent uit de bovengenoemde referenties als maatstaf nemen, werd de MP3-technologie op 16 april 2017 patentvrij in de Verenigde Staten toen het Amerikaanse patent 6.009.399, dat werd gehouden en beheerd door Technicolor, verstreken is.
Bron:
Samplingfrequentie
Bitrate
Ondersteuning van codering
Ondersteuning van decodering
16 — 48 kHz
8 — 320 kbps
Nergens ondersteund
Some audio devices (hardware)
LDAC
De nieuwe en actief gepromote 'Hi-Res'-codec van Sony, die samplefrequenties tot 96 kHz en 24-bits resolutie ondersteunt, met een bitrate tot 990 kbps. Wordt gepromoot als een audiophile codec, ter vervanging van de bestaande Bluetooth-codecs. Heeft een functie voor adaptieve bitrate-aanpassing, afhankelijk van de radio-omstandigheden.
De LDAC-encoder () is standaard inbegrepen bij Android, waardoor codering wordt ondersteund op elke Android-smartphone vanaf versie 8 van het besturingssysteem. Software-decoders zijn niet openbaar beschikbaar, en de specificatie van de codec is niet toegankelijk voor het grote publiek, maar bij een eerste blik op de encoder lijkt de interne structuur van de codec op — een codec van Sony, gebruikt in PlayStation 4 en Vita: beide werken binnen hetzelfde frequentiebereik, gebruiken gemodificeerde discrete cosinustransformatie (MDCT) en compressie met behulp van Huffman-algoritmes.
LDAC-ondersteuning is praktisch alleen beschikbaar op hoofdtelefoons van Sony. Soms komt de mogelijkheid tot decodering van LDAC voor op hoofdtelefoons en DAC's van andere fabrikanten, maar zeer zelden.
Samplingfrequentie
Bitrate
Ondersteuning van codering
Ondersteuning van decodering
44.1 — 96 kHz
303/606/909 kbps (voor 44.1 en 88.2 kHz), 330/660/990 kbps (voor 48 en 96 kHz)
Android 8+
Door sommige Sony-hoofdtelefoons en een beperkt aantal apparaten van andere fabrikanten (hardwarematig)
Het marketingaspect van LDAC als Hi-Res-codec schaadt de technische component: het is onzinnig om bitrate te verspillen aan frequenties die door het menselijk oor niet hoorbaar zijn en een verhoogde resolutie, terwijl er niet genoeg is voor het verliesloos verzenden van CD-kwaliteit (44.1/16). Gelukkig heeft de codec twee werkmodi: CD-audio-overdracht en Hi-Res-audio-overdracht. In het eerste geval wordt alleen 44.1 kHz/16-bits via de lucht verzonden.
Omdat er geen software-decoder voor LDAC openbaar beschikbaar is, is het onmogelijk om de codec te testen zonder extra apparaten die LDAC decoderen. Uit de testresultaten van LDAC op een DAC met deze ondersteuning, aangesloten door ingenieurs van SoundGuys.com via een digitale uitgang en het geproduceerde geluid op testsignalen opnamen, blijkt dat LDAC 660 en 990 kbps in CD-kwaliteitsmodus een signaal-ruisverhouding biedt die iets beter is dan die van aptX HD.
Bron:
LDAC ondersteunt ook een dynamische bitrate buiten de vaste profielen — van 138 kbps tot 990 kbps, maar voor zover ik kan zien, worden in Android alleen de gestandaardiseerde profielen 303/606/909 en 330/660/990 kbps gebruikt.
Andere codecs
Andere A2DP-codecs zijn niet wijdverspreid. Hun ondersteuning is ofwel praktisch volledig afwezig, of alleen beschikbaar op bepaalde modellen van koptelefoons en smartphones.
De gestandaardiseerde A2DP-codec ATRAC is nooit gebruikt als Bluetooth-codec, zelfs niet door Sony zelf, en de Samsung HD, Samsung Scalable en Samsung UHQ-BT codecs hebben zeer beperkte ondersteuning van zender- en ontvangende apparaten, terwijl HWA LHDC te nieuw is en slechts door drie (?) apparaten wordt ondersteund.
Ondersteuning van codecs door audi apparaten
Niet alle fabrikanten publiceren exacte informatie over de codecs die verschillende draadloze koptelefoons, luidsprekers, ontvangers of zenders ondersteunen. Soms komt het voor dat de ondersteuning voor een specifieke codec alleen voor zending geldt, maar niet voor ontvangst (dit is relevant voor gecombineerde zender-ontvanger units), hoewel de fabrikant gewoon meldt ‘ondersteuning’ zonder opmerkingen (ik vermoed dat dit het gevolg is van aparte licentieverlening voor encoders en decoders van bepaalde codecs). Bij de goedkoopste apparaten kunt u zelfs de aangekondigde ondersteuning van aptX niet vinden.
Helaas wordt in de meeste besturingssystemen nergens de gebruikte codec weergegeven. Deze informatie is alleen beschikbaar op Android, vanaf versie 8, en macOS. Echter, zelfs in deze besturingssystemen worden alleen die codecs getoond die zowel door de telefoon/computer als de koptelefoon worden ondersteund.
Hoe kom je erachter welke codecs een apparaat ondersteunt? Maak een dump van het A2DP-onderhandelingsverkeer en analyseer deze!
Dit kan gedaan worden op Linux, macOS en Android. In Linux kunt u Wireshark of hcidump gebruiken, op macOS de Bluetooth Explorer, en op Android de standaardfunctie voor het opslaan van Bluetooth HCI-dumps, die beschikbaar is in de ontwikkelaarstools. U krijgt een dump in btsnoop-formaat, die u kunt uploaden naar de Wireshark-analyzer.
Let op: een correcte dump kan alleen verkregen worden door een verbinding te maken met de hoofdtelefoon/speaker via een telefoon/computer (hoe curieus het ook klinkt)! Hoofdtelefoons kunnen zelf verbinding maken met de telefoon, en in dat geval zullen ze de lijst met codecs bij de telefoon opvragen, en niet vice versa. Om te garanderen dat u een correcte dump opneemt, verbreek eerst de koppeling met het apparaat en verbind vervolgens tijdens het opnemen van de dump de telefoon met de hoofdtelefoon.
Gebruik de volgende filterinstelling om irrelevante verkeer te filteren:
btavdtp.signal_idAls resultaat zou je iets vergelijkbaars moeten zien:
Op elk punt van het commando GetCapabilities kun je klikken en gedetailleerde specificaties van de codec bekijken.
Wireshark kent niet alle codecs identificatiecodes, dus sommige codecs moeten handmatig worden ontcijferd door naar de onderstaande identificatiecodes tabel te kijken:
Verplicht:
0x00 - SBC
Optioneel:
0x01 - MPEG-1,2 (ook bekend als MP3)
0x02 - MPEG-2,4 (ook bekend als AAC)
0x04 - ATRAC
Vendor specifiek:
0xFF 0x004F 0x01 - aptX
0xFF 0x00D7 0x24 - aptX HD
0xFF 0x000A 0x02 - aptX lage latentie
0xFF 0x00D7 0x02 - aptX lage latentie
0xFF 0x000A 0x01 - FastStream
0xFF 0x012D 0xAA - LDAC
0xFF 0x0075 0x0102 - Samsung HD
0xFF 0x0075 0x0103 - Samsung schaling codec
0xFF 0x053A 0x484C - Savitech LHDC
0xFF 0x000A 0x0104 - De CSR True Wireless Stereo v3 Codec ID voor AAC
0xFF 0x000A 0x0105 - De CSR True Wireless Stereo v3 Codec ID voor MP3
0xFF 0x000A 0x0106 - De CSR True Wireless Stereo v3 Codec ID voor aptXOm dumps niet handmatig te analyseren, heb ik een service gemaakt die alles automatisch analyseert:
Vergelijking van codecs. Welke codec is beter?
Elke codec heeft zijn eigen voor- en nadelen.
aptX en aptX HD gebruiken vastgelegde profielen die niet kunnen worden gewijzigd zonder de encoder en decoder te modificeren. Noch de fabrikant van de telefoon, noch de fabrikant van de hoofdtelefoon kan de bitrates of coderingsfactoren van aptX veranderen. De eigenaar van de codec, Qualcomm, biedt een referentie-encoder in de vorm van een bibliotheek. Deze feiten zijn een sterk punt van aptX; je weet van tevoren welke geluidskwaliteit je zult krijgen, zonder enige 'maar'.
SBC heeft daarentegen tal van aanpasbare parameters, dynamische bitrate (de encoder kan de bitpoolparameter verlagen als de radiofrequentie druk is), en heeft geen vaste profielen, maar alleen aanbevolen 'gemiddelde kwaliteit' en 'hoge kwaliteit', die in 2003 in de A2DP-specificatie zijn toegevoegd. 'Hoge kwaliteit' is tegenwoordig niet meer zo hoog in vergelijking met moderne normen, en de meeste Bluetooth-stacks staat niet toe om parameters te gebruiken die beter zijn dan die in het 'hoge kwaliteit' profiel, hoewel er geen technische beperkingen voor zijn.
Bluetooth SIG heeft geen referentie-encoder SBC in de vorm van een bibliotheek, en fabrikanten implementeren het zelf.
Dit zijn de zwakke punten van SBC: het is nooit van tevoren duidelijk welke geluidskwaliteit je van een specifiek apparaat kunt verwachten. SBC kan zowel lage als zeer hoge geluidskwaliteit leveren, maar de laatste is onhaalbaar zonder het uitschakelen of omzeilen van de kunstmatige beperkingen van de Bluetooth-stacks.
De situatie met AAC is dubbelzinnig: aan de ene kant zou de codec theoretisch een kwaliteit moeten leveren die ononderscheidbaar is van het origineel, maar de praktijk, zoals blijkt uit tests van het SoundGuys-laboratorium op verschillende Android-apparaten, bevestigt dit niet. Waarschijnlijk ligt de schuld bij de lage kwaliteit van de ingebouwde audiocodecs in verschillende telefoonchips. Het heeft zin om AAC alleen te gebruiken op Apple-apparaten, terwijl je op Android beperkt moet blijven tot aptX en LDAC.
Apparatuur die alternatieve codecs ondersteunt, is over het algemeen van hogere kwaliteit, simpelweg omdat het voor goedkope, lage kwaliteit apparaten niet zinvol is om licentiekosten te betalen voor het gebruik van deze codecs. Uit mijn tests blijkt dat SBC zeer goed klinkt op kwalitatief hoogwaardige apparatuur.
Ik heb een webservice gemaakt die audio in SBC, aptX en aptX HD in realtime codeert, rechtstreeks in de browser. Hiermee kun je deze audiocodecs testen zonder feitelijke audio-overdracht via Bluetooth, met elke bekabelde koptelefoon, luidsprekers, en je favoriete muziek, en de coderingsparameters wijzigen terwijl je audio afspeelt:
De service gebruikt SBC-codeerbibliotheken van het BlueZ-project en libopenaptx van ffmpeg, die zijn gecompileerd in WebAssembly en JavaScript vanuit C, via emscripten, om in de browser uit te voeren. Wie had ooit zo'n toekomst kunnen dromen!
Zo ziet het eruit:
Let op hoe het geluidsniveau verandert boven de 20 kHz bij verschillende codecs. In het originele MP3-bestand ontbreken frequenties boven de 20 kHz.
Probeer de codecs te wisselen en beoordeel of je een verschil hoort tussen de originele versie, SBC 53 Joint Stereo (de standaard en meest gebruikte profiel), en aptX/aptX HD.
Ik hoor een verschil tussen de codecs in de hoofdtelefoons!
Mensen die geen verschil horen tussen de codecs tijdens testen via een webservice, beweren dat ze het wel horen bij het luisteren naar muziek in draadloze hoofdtelefoons. Helaas is dit geen grap en geen placebo-effect: het verschil is echt hoorbaar, maar het is niet veroorzaakt door verschillen tussen codecs.
De overgrote meerderheid van de Bluetooth-audiochipsets die in ontvangende draadloze apparaten worden gebruikt, zijn uitgerust met een digitale signaalprocessor (Digital Signal Processor, DSP), die een equalizer, compander, stereo-uitbreider en andere dingen implementeert die bedoeld zijn om geluid te verbeteren (of te veranderen). Fabrikanten van Bluetooth-apparatuur kunnen de DSP voor elke codec afzonderlijk, en bij het wisselen tussen codecs zal de luisteraar denken dat hij een verschil hoort in de werking van de codecs, wanneer hij in werkelijkheid verschillende DSP-instellingen hoort.
De DSP-geluidsverwerkingspijp Kalimba in chips van CSR/Qualcomm

Activatie van verschillende DSP-functies voor elke codec en uitgang afzonderlijk
Sommige premium apparaten worden geleverd met een programma dat je in staat stelt om de DSP-instellingen aan te passen, maar de meeste goedkopere hoofdtelefoons hebben deze mogelijkheid niet, en gebruikers kunnen de post-processing van het geluid niet uitschakelen met eenvoudige middelen.
Functionele kenmerken van apparaten
De moderne versie van de A2DP-standaard heeft de functie 'absolute volumeregeling' — volume control of the device using special AVRCP protocol commands, which adjusts the output stage gain instead of programmatically lowering the audio stream volume. If the volume adjustment on the headphones does not sync with the volume on the phone, it means that your headphones or phone do not support this function. In this case, it makes sense to always listen to music at full volume on the phone, adjusting the actual volume with the headphone buttons—this way, the signal-to-noise ratio will be better, and audio quality will improve. het moet zijn above.
In reality, there are unfortunate situations. On my RealForce OverDrive D1 headphones, a strong compander is enabled for SBC, and raising the volume increases the level of quiet sounds, while the loud sounds remain unchanged (signal compression occurs). Because of this, I have to set the volume on the computer to about halfway; in this case, the compression effect is almost nonexistent.
In my observations, all headphones with additional codecs support the absolute volume control function; apparently, this is one of the requirements for codec certification.
Some headphones support connecting two devices simultaneously. This allows, for example, listening to music from a computer while taking calls from a phone. However, it should be noted that in this mode, alternative codecs are disabled, and only SBC is used.
The AVDTP 1.3 Delay Reporting function allows headphones to communicate the delay to the transmitting device with which the sound is actually played. This helps synchronize audio with video when watching video files: in case of transmission issues over the air, the audio will not lag behind the video; instead, the video will stutter until audio and video are synchronized again.
The function is supported by many headphones, Android 9+, and Linux with PulseAudio 12.0+. I am not aware of the function's support on other platforms.
Bidirectional communication via Bluetooth. Voice transmission.
Voor het overbrengen van stem via Bluetooth wordt Synchronous Connection Oriented (SCO) gebruikt - een synchrone overdracht met voorafgaande verbindingsovereenkomst. Deze modus maakt het mogelijk om geluid en stem strikt in volgorde over te dragen, met een symmetrische verzend- en ontvangstsnelheid, zonder te wachten op bevestiging van de overdracht en heroverdracht van pakketten. Dit verlaagt de algehele latentie van audio-overdracht via de radiokanaal, maar legt ernstige beperkingen op aan de hoeveelheid gegevens die per tijdseenheid kunnen worden verzonden, wat de kwaliteit negatief beïnvloedt.
Wanneer deze modus wordt gebruikt, worden zowel spraak als audio met dezelfde kwaliteit verzonden.
Helaas, sinds 2019 is de kwaliteit van spraakoverdracht via Bluetooth nog steeds laag, en het is onduidelijk waarom Bluetooth SIG hier niets aan doet.
CVSD
De basis codering voor spraakoverdracht, CVSD, werd in 2002 genormaliseerd en wordt ondersteund door alle bidirectionele communicatie apparaten via Bluetooth. Het biedt audio-overdracht met een samplefrequentie van 8 kHz, wat overeenkomt met de kwaliteit van gewone analoge telefonie.
.
mSBC
De aanvullende codec mSBC werd in 2009 genormaliseerd, en in 2010 verschenen de eerste chips die deze gebruiken voor spraakoverdracht. mSBC wordt breed ondersteund door verschillende apparaten.
Dit is geen zelfstandige codec, maar een gebruikelijke SBC uit de A2DP-standaard, met een vaste coderingsprofiel: 16 kHz, mono, bitpool 26.
.
Niet geweldig, maar veel beter dan CVSD, echter, het blijft onaangenaam om deze te gebruiken voor communicatie via het internet, vooral wanneer je hoofdtelefoons gebruikt om te communiceren tijdens een spel - het geluid van het spel wordt ook overgedragen met een samplefrequentie van 16 kHz.
FastStreamHet bedrijf CSR besloot het idee van hergebruik van SBC verder uit te werken. Om de beperkingen van het SCO-protocol te omzeilen en hogere bitrates te gebruiken, ging CSR een andere weg - zij implementeerden ondersteuning voor bidirectionele SBC-audio in de eenrichting audio-overdrachtsstandaard A2DP, standaardiseerden de coderingsprofielen en noemden het "FastStream".
FastStream geeft stereogeluid van 44.1 of 48 kHz uit aan de luidsprekers met een bitrate van 212 kbit/s, terwijl voor de audio-overdracht van de microfoon mono, 16 kHz, met een bitrate van 72 kbit/s wordt gebruikt (iets beter dan mSBC). Deze parameters zijn veel beter geschikt voor communicatie in online games - het geluid van het spel en de gesprekspartners zal van goede kwaliteit zijn.
(+ ).
Het bedrijf heeft een interessante oplossing bedacht, maar omdat deze in strijd is met de A2DP-standaard, wordt het alleen ondersteund door sommige van de company's zenders (die fungeren als een USB-geluidkaart en geen Bluetooth-apparaat zijn), maar ondersteuning in Bluetooth-stacks is niet gekregen, hoewel het aantal koptelefoons met ondersteuning voor FastStream niet zo klein is.
Op dit moment is de ondersteuning voor FastStream in besturingssystemen alleen van ontwikkelaar Pali Rohár, die niet is opgenomen in de hoofdversie van het programma.
aptX Low Latency
Tot grote verbazing ondersteunt aptX Low Latency ook bidirectionele audio, met eenzelfde principe als FastStream.
Deze functie van de codec kan nergens worden gebruikt — er is geen ondersteuning voor het decoderen van Low Latency in geen enkel besturingssysteem en in geen enkele bekende Bluetooth-stack.
Bluetooth 5, Classic en Low Energy
Er is veel verwarring ontstaan rond de specificaties en versies van Bluetooth vanwege de aanwezigheid van twee incompatibele standaarden onder één merk, die beide op grote schaal voor verschillende doeleinden worden gebruikt.
Er zijn twee verschillende, incompatibele Bluetooth-protocollen: Bluetooth Classic en Bluetooth Low Energy (LE, ook bekend als Bluetooth Smart). Er is ook een derde protocol, Bluetooth High Speed, maar dit is niet wijdverbreid en wordt niet gebruikt in consumentenapparaten.
Vanaf Bluetooth 4.0 waren de wijzigingen in de specificatie voornamelijk gericht op Bluetooth Low Energy, terwijl de Classic-versie alleen kleine verbeteringen heeft gekregen.
Lijst van wijzigingen tussen Bluetooth 4.2 en Bluetooth 5:
9 WIJZIGINGEN VAN v4.2 NAAR 5.0
9.1 NIEUWE FUNCTIES
Verschillende nieuwe functies zijn geïntroduceerd in de Bluetooth Core Specificatie 5.0 Release. De belangrijkste verbeteringsgebieden zijn:
• Slot Availability Mask (SAM)
• 2 Msym/s PHY voor LE
• LE Long Range
• High Duty Cycle Non-Connectable Advertising
• LE Advertising Extensions
• LE Channel Selection Algorithm #2
9.1.1 Functies Toegevoegd in CSA5 — Geïntegreerd in v5.0
• Hogere Uitgangs Vermogen
Bron: (pagina 291)
Slechts één wijziging heeft betrekking op de Classic-versie binnen de specificatie van Bluetooth 5: de ondersteuning voor de technologie Slot Availability Mask (SAM) is toegevoegd om de verdeling van het radiospectrum te verbeteren. Alle andere wijzigingen hebben alleen betrekking op Bluetooth LE (en ook Higher Output Power).
Alle audiodoeleinden gebruiken alleen Bluetooth Classic. Hoofdtelefoons en luidsprekers kunnen niet via Bluetooth Low Energy worden aangesloten: er bestaat geen standaard voor het verzenden van audio met behulp van LE. De A2DP-standaard, die wordt gebruikt voor het verzenden van hoogwaardige audio, werkt alleen via Bluetooth Classic en er is geen equivalent in LE.
Het is zinloos om audio-apparaten met Bluetooth 5 alleen om de nieuwe versie van het protocol aan te schaffen. Bluetooth 4.0/4.1/4.2 werkt in de context van audiotransmissie op dezelfde manier.
Als de aankondiging van nieuwe koptelefoons een verdubbelde werkafstand en verminderd energieverbruik dankzij Bluetooth 5 vermeldt, dan weet dat ze ofwel zelf niet goed op de hoogte zijn, of je misleiden. Het is niet verwonderlijk, want zelfs fabrikanten van Bluetooth-chips raken in hun aankondigingen in de war over de verschillen van de nieuwe versie van de standaard, en sommige Bluetooth 5-chips ondersteunen de vijfde versie alleen voor LE, en gebruiken 4.2 voor Classic.
Audiovertraging
De omvang van de audiovertraging hangt van vele factoren af: de grootte van de buffer in de audiostack, in de Bluetooth-stack en in het draadloze apparaat dat afspeelt, en de algoritmische vertraging van de codec.
De vertraging van eenvoudige codecs, zoals SBC, aptX en aptX HD, is heel klein, en bedraagt 3-6 ms, wat verwaarloosbaar is, maar complexe codecs, zoals AAC en LDAC, kunnen merkbare vertraging veroorzaken. De algoritmische vertraging van AAC voor 44.1 kHz bedraagt 60 ms. LDAC — ongeveer 30 ms (op basis van een ruwe analyse van de broncode. Ik kan me vergissen, maar niet veel).
De uiteindelijke vertraging hangt sterk af van het afspeelapparaat, de chipset en de buffer. Tijdens tests heb ik een spreiding van 150 tot 250 ms gemeten op verschillende apparaten (met SBC codec). Als we aannemen dat apparaten met ondersteuning voor aanvullende codecs zoals aptX, AAC en LDAC kwalitatieve componenten en een kleine buffer gebruiken, dan krijgen we de volgende typische vertragingen:
SBC: 150-250 ms
aptX: 130-180 ms
AAC: 190-240 ms
LDAC: 160-210 ms
Ter herinnering: aptX Low Latency wordt niet ondersteund in besturingssystemen, waardoor er een lagere vertraging alleen kan worden verkregen met een zender + ontvanger of zender + koptelefoon/luidspreker, waarbij alle apparaten deze codec moeten ondersteunen.
Problemen met apparaten, certificering en Bluetooth-logo's
Hoe onderscheid je een kwaliteits audioapparaat van een goedkoop namaakproduct? Ten eerste aan het uiterlijk!
Bij goedkope Chinese koptelefoons, luidsprekers en ontvangers:
- Woorden zoals 'Bluetooth' ontbreken op de doos en het apparaat, vaak worden 'Wireless' en 'BT' gebruikt
- Bluetooth-logo ontbreekt
op de doos of het apparaat - Geen knipperende blauwe LED
Het ontbreken van deze elementen wijst erop dat het apparaat niet gecertificeerd is, wat betekent dat het mogelijk van lage kwaliteit en probleematisch is. Bijvoorbeeld, de hoofdtelefoons van Bluedio zijn niet gecertificeerd voor Bluetooth en voldoen niet volledig aan de A2DP-specificatie. Ze zouden de certificatie niet hebben doorstaan.
Laten we een aantal apparaten en hun verpakkingen bekijken:
Dit alles zijn niet-gecertificeerde apparaten. In de handleiding kan het logo en de naam van de Bluetooth-technologie staan, maar het belangrijkste is dat ze op de verpakking en/of het apparaat zelf staan.
Als je hoofdtelefoons of luidsprekers zeggen ‘Ze bluetooth dewise is connecteda successfulle’, zegt dat ook niets over hun kwaliteit:

Conclusie
Kan Bluetooth volledig bedrade hoofdtelefoons en headsets vervangen? Ja, maar tegen de prijs van lage kwaliteit tijdens gesprekken, verhoogde geluidsvertraging die vervelend kan zijn tijdens het gamen, en een hoop proprietaire codecs die licentiekosten vereisen en de uiteindelijke prijs van zowel smartphones als hoofdtelefoons verhogen.
De marketing van alternatieve codecs is erg sterk: aptX en LDAC worden gepresenteerd als de langverwachte vervanging voor de ‘verouderde en slechte’ SBC, die verre van slecht is zoals vaak gedacht wordt.
Zoals het bleek, kunnen kunstmatige beperkingen in Bluetooth-stacks op de bitrates van SBC omzeild worden, zodat SBC niet onderdoet voor aptX HD. Ik heb het initiatief genomen en een patch voor de LineageOS-firmware gemaakt:
Meer informatie is te vinden op de websites en .
Bonus: . Dit bestand werd eerder openbaar op de Bluetooth-website geplaatst, maar is nu alleen beschikbaar voor leden van de Bluetooth SIG.
Bron: habr.com

op de doos of het apparaat