Audio via Bluetooth: maximale details over profielen, codecs en apparaten

Audio via Bluetooth: maximale details over profielen, codecs en apparaten

Door de massaproductie van smartphones zonder 3.5 mm audio-aansluiting zijn draadloze Bluetooth-hoofdtelefoons voor velen de belangrijkste manier geworden om naar muziek te luisteren en te communiceren in de hoofdtelefoonmodus.
Fabrikanten van draadloze apparaten schrijven niet altijd gedetailleerde productspecificaties, en artikelen over Bluetooth-audio op internet zijn tegenstrijdig, soms onjuist, praten niet over alle functies en kopiëren vaak dezelfde informatie die niet overeenkomt met de werkelijkheid.
Laten we proberen het protocol, de mogelijkheden van Bluetooth OS-stacks, hoofdtelefoons en luidsprekers, Bluetooth-codecs voor muziek en spraak te begrijpen, ontdekken wat de kwaliteit van het verzonden geluid en de latentie beïnvloedt, leren hoe we informatie over ondersteunde codecs en andere apparaten kunnen verzamelen en decoderen mogelijkheden.

TL; DR:

  • SBC - normale codec
  • De hoofdtelefoon heeft voor elke codec afzonderlijk een eigen equalizer en nabewerking
  • aptX is niet zo goed als geadverteerd
  • LDAC is marketing-onzin
  • De gesprekskwaliteit is nog steeds slecht
  • Je kunt C-audio-encoders in je browser insluiten door ze via emscripten in WebAssembly te compileren, en ze zullen niet veel vertragen.

Muziek via Bluetooth

De functionele component van Bluetooth wordt bepaald door profielen - specificaties van specifieke functies. Bluetooth-muziekstreaming maakt gebruik van een hoogwaardig A2DP unidirectioneel audiotransmissieprofiel. De A2DP-standaard werd in 2003 aangenomen en is sindsdien niet significant veranderd.
Binnen het profiel zijn 1 verplichte codec met lage rekencomplexiteit SBC, speciaal gemaakt voor Bluetooth, en 3 extra gestandaardiseerd. Het is ook mogelijk om ongedocumenteerde codecs van uw eigen implementatie te gebruiken.

Sinds juni 2019 zijn wij dat in de xkcd-strip met 14 A2DP-codecs:

  • SBC ← gestandaardiseerd in A2DP, ondersteund door alle apparaten
  • MPEG-1/2 Layer 1/2/3 ← gestandaardiseerd in A2DP: bekend MP3, gebruikt in digitale televisie MP2, en onbekend MP1
  • MPEG-2/4 AAC ← gestandaardiseerd in A2DP
  • ATTRAC ← oude codec van Sony, gestandaardiseerd in A2DP
  • LDAC ← nieuwe codec van Sony
  • aptX ← codec uit 1988
  • aptX HD ← hetzelfde als aptX, alleen met verschillende coderingsopties
  • aptX lage latentie ← compleet andere codec, geen software-implementatie
  • aptX Adaptive ← nog een codec van Qualcomm
  • SnelStream ← pseudo-codec, bidirectionele SBC-modificatie
  • HWA LHDC ← nieuwe codec van Huawei
  • Samsung HD ← ondersteund door 2 apparaten
  • Samsung schaalbaar ← ondersteund door 2 apparaten
  • Samsung UHQ-BT ← ondersteund door 3 apparaten

Waarom hebben we überhaupt codecs nodig, vraagt ​​u zich af, als Bluetooth EDR heeft, waarmee u gegevens kunt overbrengen met snelheden van 2 en 3 Mbit/s, en voor ongecomprimeerde tweekanaals 16-bit PCM is 1.4 Mbit/s voldoende?

Gegevensoverdracht via Bluetooth

Er zijn twee soorten gegevensoverdracht in Bluetooth: Asynchronous Connection Less (ACL) voor asynchrone overdracht zonder verbindingsopbouw, en Synchronous Connection Oriented (SCO), voor synchrone overdracht met voorlopige verbindingsonderhandeling.
De verzending wordt uitgevoerd met behulp van een tijdverdelingsschema en het selecteren van een transmissiekanaal voor elk pakket afzonderlijk (Frequency-Hop/Time-Division-Duplex, FH/TDD), waarbij de tijd wordt verdeeld in intervallen van 625 microseconden, slots genoemd. Eén van de apparaten zendt uit in even genummerde slots, het andere in oneven genummerde slots. Het verzonden pakket kan 1, 3 of 5 slots in beslag nemen, afhankelijk van de grootte van de gegevens en het ingestelde type verzending. In dit geval wordt de verzending door één apparaat uitgevoerd in even en oneven slots tot het einde van de verzending. In totaal kunnen maximaal 1600 pakketten per seconde worden ontvangen en verzonden, als elk van hen 1 slot in beslag neemt en beide apparaten iets verzenden en ontvangen zonder te stoppen.

2 en 3 Mbit/s voor EDR, te vinden in aankondigingen en op de Bluetooth-website, zijn de maximale kanaaloverdrachtsnelheid van alle gegevens in totaal (inclusief technische headers van alle protocollen waarin gegevens moeten worden ingekapseld), in twee richtingen tegelijkertijd. De werkelijke snelheid van gegevensoverdracht zal sterk variëren.

Om muziek te verzenden wordt een asynchrone methode gebruikt, waarbij vrijwel altijd gebruik wordt gemaakt van pakketten als 2-DH5 en 3-DH5, die in de EDR-modus een maximale hoeveelheid gegevens van respectievelijk 2 Mbit/s en 3 Mbit/s vervoeren en 5 tijd in beslag nemen. -slots delen.

Schematische weergave van transmissie met 5 slots door het ene apparaat en 1 slot door een ander (DH5/DH1):
Audio via Bluetooth: maximale details over profielen, codecs en apparaten

Vanwege het principe van tijdsverdeling van de ether zijn we gedwongen om een ​​tijdslot van 625 microseconden te wachten na het verzenden van een pakket als het tweede apparaat niets naar ons verzendt of een klein pakket verzendt, en meer tijd als het tweede apparaat verzendt in grote pakketten. Als er meer dan één apparaat op de telefoon is aangesloten (bijvoorbeeld een koptelefoon, horloges en een fitnessarmband), wordt de overdrachtstijd tussen al deze apparaten gedeeld.

De noodzaak om audio in te kapselen in de speciale transportprotocollen L2CAP en AVDTP neemt 16 bytes in beslag van de mogelijke maximale hoeveelheid verzonden audio.

Pakkettype
Aantal slots
Max. aantal bytes in het pakket
Max. aantal bytes A2DP-payload
Max. A2DP payload-bitsnelheid

2-DH3
3
367
351
936 kbps

3-DH3
3
552
536
1429 kbps

2-DH5
5
679
663
1414 kbps

3-DH5
5
1021
1005
2143 kbps

1414 en 1429 kbps zijn absoluut niet genoeg om ongecomprimeerde audio in reële omstandigheden te verzenden, met het luidruchtige 2.4 GHz-bereik en de noodzaak om servicegegevens te verzenden. EDR 3 Mbit/s vergt veel zendvermogen en ruis in de ether. Daarom is zelfs in de 3-DH5-modus comfortabele PCM-overdracht onmogelijk, zullen er altijd korte onderbrekingen zijn en werkt alles alleen op een afstand van een paar minuten. paar meter.
In de praktijk is zelfs een audiostream van 990 kbit/s (LDAC 990 kbit/s) moeilijk te verzenden.

Laten we terugkeren naar de codecs.

SBC

Codec vereist voor alle apparaten die de A2DP-standaard ondersteunen. De beste en slechtste codec tegelijkertijd.

Bemonsteringssnelheid
Beetje diepte
Bitsnelheid
Ondersteuning voor codering
Ondersteuning voor decodering

16, 32, 44.1, 48 kHz
16 bit
10-1500 kbps
Alle apparaten
Alle apparaten

SBC is een eenvoudige en computationeel snelle codec, met een primitief psycho-akoestisch model (er wordt alleen maskering van zachte geluiden toegepast) en maakt gebruik van adaptieve pulscodemodulatie (APCM).
De A2DP-specificatie beveelt twee profielen aan voor gebruik: Middenkwaliteit en Hoge kwaliteit.
Audio via Bluetooth: maximale details over profielen, codecs en apparaten

De codec heeft veel instellingen waarmee je de algoritmische vertraging, het aantal samples in een blok en het bitverdelingsalgoritme kunt regelen, maar bijna overal worden dezelfde parameters gebruikt die in de specificatie worden aanbevolen: Joint Stereo, 8 frequentiebanden, 16 blokken in een audioframe, luidheidsbitdistributiemethode.
SBC ondersteunt dynamische wijziging van de Bitpool-parameter, die rechtstreeks van invloed is op de bitsnelheid. Als de radiogolven verstopt zijn, pakketten verloren gaan of apparaten zich op grote afstand bevinden, kan de audiobron de Bitpool verkleinen totdat de communicatie weer normaal is.

De meeste hoofdtelefoonfabrikanten stellen de maximale Bitpool-waarde in op 53, wat de bitrate beperkt tot 328 kilobits per seconde bij gebruik van het aanbevolen profiel.
Zelfs als de fabrikant van de hoofdtelefoon de maximale Bitpool-waarde boven 53 heeft ingesteld (dergelijke modellen zijn bijvoorbeeld te vinden: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, ook te vinden op sommige ontvangers en autoradio's), dan zullen de meeste besturingssystemen dit niet toestaan het gebruik van verhoogde bitrates als gevolg van een ingestelde interne waardelimiet in Bluetooth-stacks.
Bovendien stellen sommige fabrikanten de maximale Bitpool-waarde voor sommige apparaten te laag in. Voor Bluedio T is dit bijvoorbeeld 39, voor Samsung Gear IconX is dit 37, wat een slechte geluidskwaliteit geeft.

Kunstmatige beperkingen van de kant van ontwikkelaars van Bluetooth-stacks zijn hoogstwaarschijnlijk ontstaan ​​​​door de incompatibiliteit van sommige apparaten met grote Bitpool-waarden of atypische profielen, zelfs als ze er ondersteuning voor rapporteerden, en onvoldoende testen tijdens de certificering. Het was gemakkelijker voor de auteurs van Bluetooth-stacks om zich te beperken tot overeenstemming over het aanbevolen profiel, in plaats van databases met onjuiste apparaten aan te maken (hoewel ze dit nu doen voor andere onjuist werkende functies).

SBC wijst kwantiseringsbits dynamisch toe aan frequentiebanden op basis van laag naar hoog, met verschillende gewichten. Als alle bitrates zijn gebruikt voor de lage en middenfrequenties, worden de hoge frequenties “afgesneden” (in plaats daarvan zal er stilte zijn).

Voorbeeld SBC 328 kbps. Bovenaan staat het origineel, onderaan staat de SBC, die periodiek tussen nummers schakelt. De audio in het videobestand maakt gebruik van de FLAC-compressiecodec zonder verlies. Het gebruik van FLAC in een mp4-container is niet officieel gestandaardiseerd, dus het is niet gegarandeerd dat uw browser het zal afspelen, maar het zou moeten werken in de nieuwste versies van desktop Chrome en Firefox. Als u geen geluid heeft, kunt u het bestand downloaden en openen in een volwaardige videospeler.
ZZ Top - Scherp geklede man

Het spectrogram laat het schakelmoment zien: SBC kapt periodiek zachte geluiden boven de 17.5 kHz af, en wijst voor de band boven de 20 kHz helemaal geen bits toe. Het volledige spectrogram is beschikbaar door te klikken op (1.7 MB).
Audio via Bluetooth: maximale details over profielen, codecs en apparaten

Ik hoor geen enkel verschil tussen het origineel en SBC op dit nummer.

Laten we iets nieuws nemen en de audio simuleren die zou worden verkregen met een Samsung Gear IconX-hoofdtelefoon met Bitpool 37 (boven - het originele signaal, onder - SBC 239 kbps, audio in FLAC).
Gedachteloze zelfgenoegzaamheid - Getuige

Ik hoor knetterend, minder stereo-effect en een onaangenaam "klinkend" geluid in de hoge frequenties van de zang.

Hoewel SBC een zeer flexibele codec is, kan deze worden geconfigureerd voor lage latentie, biedt hij uitstekende audiokwaliteit bij hoge bitrates (452+ kbps) en is hij voor de meeste mensen redelijk goed bij standaard hoge kwaliteit (328 kbps), vanwege het feit dat de A2DP-standaard specificeert geen vaste profielen (maar geeft alleen aanbevelingen), stapelontwikkelaars hebben kunstmatige beperkingen ingesteld op Bitpool, de parameters van de verzonden audio worden niet weergegeven in de gebruikersinterface en hoofdtelefoonfabrikanten zijn vrij om hun eigen instellingen in te stellen en nooit de Bitpool-waarde aangeven in de technische specificaties van het product, codec werd beroemd vanwege zijn lage geluidskwaliteit, hoewel dit bij de codec als zodanig geen probleem is.
De Bitpool-parameter heeft alleen rechtstreeks invloed op de bitsnelheid binnen één profiel. Dezelfde Bitpool 53-waarde kan zowel een bitrate van 328 kbps met het aanbevolen High Quality-profiel als 1212 kbps met Dual Channel en 4 frequentiebanden opleveren. Daarom hebben de auteurs van het besturingssysteem, naast beperkingen voor Bitpool, een limiet ingesteld voor Bitsnelheid. Zoals ik het zie, ontstond deze situatie als gevolg van een fout in de A2DP-standaard: het was nodig om over de bitrate te onderhandelen, niet over Bitpool.

Ondersteuningstabel voor SBC-mogelijkheden in verschillende besturingssystemen:

besturingssysteem
Ondersteunde bemonsteringsfrequenties
Limiet max. Bitpool
Limiet max. Bitsnelheid
Typische bitsnelheid
Dynamische aanpassing van Bitpool

Windows 10
44.1 кГц
53
512 kbps
328 kbps
*

Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (voor inkomende verbindingen), 53 (voor uitgaande verbindingen)
Geen limiet
328 kbps
*

MacOS High Sierra
44.1 кГц
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 кГц
53
Geen limiet
328 kbps

* Bitpool neemt alleen af, maar neemt niet automatisch toe als de overdrachtsomstandigheden verbeteren. Om Bitpool te herstellen, moet u het afspelen stoppen, een paar seconden wachten en de audio opnieuw starten.
** De standaardwaarde is afhankelijk van de stapelinstellingen die zijn opgegeven bij het compileren van de firmware. In Android 8/8.1 is de frequentie slechts 44.1 kHz of 48 kHz, afhankelijk van de instellingen tijdens het compileren, in andere versies worden 44.1 kHz en 48 kHz gelijktijdig ondersteund.
*** De Bitpool-waarde kan worden verhoogd in het Bluetooth Explorer-programma.

aptX en aptX HD

aptX is een eenvoudige en computationeel snelle codec, zonder psychoakoestiek, die gebruik maakt van adaptieve differentiële pulscodemodulatie (ADPCM). Verscheen rond 1988 (depotdatum octrooi gedateerd februari 1988), vóór Bluetooth, werd het voornamelijk gebruikt in professionele draadloze audioapparatuur. Momenteel eigendom van Qualcomm, vereist licenties en royalty's. Vanaf 2014: $6000 eenmalig en ≈$1 per apparaat, voor batches van maximaal 10000 apparaten (bron, p. 16).
aptX en aptX HD zijn dezelfde codec, met verschillende coderingsprofielen.

De codec heeft slechts één parameter: het selecteren van de bemonsteringsfrequentie. Wel is er keuze in het aantal/modus van kanalen, maar op alle mij bekende apparaten (70+ stuks) wordt alleen Stereo ondersteund.

Codec
Bemonsteringssnelheid
Beetje diepte
Bitsnelheid
Ondersteuning voor codering
Ondersteuning voor decodering

aptX
16, 32, 44.1, 48 kHz
16 bit
128 / 256 / 352 / 384 kbps (afhankelijk van de bemonsteringssnelheid)
Windows 10 (desktop en mobiel), macOS, Android 4.4+/7*, Blackberry OS 10
Ruim aanbod aan audioapparaten (hardware)

* Versies tot en met 7 vereisen aanpassing van de Bluetooth-stack. De codec wordt alleen ondersteund als de fabrikant van het Android-apparaat een licentie voor de codec van Qualcomm heeft (als het besturingssysteem over coderingsbibliotheken beschikt).

aptX verdeelt audio in 4 frequentiebanden en kwantiseert ze constant 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 bemonsteringsfrequentie 44.1 kHz).

Voorbeeld van aptX-audio (bovenaan - het originele signaal, onderaan - aptX, spectrogrammen van alleen de linkerkanalen, geluid in FLAC):

De hoge tonen werden iets roder, maar je kon het verschil niet horen.

Vanwege de vaste verdeling van kwantiseringsbits kan de codec de bits niet “verschuiven” naar de frequenties die ze het meest nodig hebben. In tegenstelling tot SBC zal aptX de frequenties niet "afsnijden", maar er kwantiseringsruis aan toevoegen, waardoor het dynamische bereik van de audio wordt verkleind.

Er mag niet van worden uitgegaan dat het gebruik van bijvoorbeeld 2 bits per band het dynamisch bereik reduceert tot 12 dB: ADPCM maakt tot 96 dB dynamisch bereik mogelijk, zelfs bij gebruik van 2 kwantiseringsbits, maar alleen voor een bepaald signaal.
ADPCM slaat het numerieke verschil op tussen het huidige monster en het volgende monster, in plaats van de absolute waarde op te slaan zoals bij PCM. Hierdoor kunt u de vereisten voor het aantal bits dat nodig is om dezelfde (zonder verlies) of vrijwel dezelfde (met een relatief kleine afrondingsfout) informatie op te slaan, verlagen. Om afrondingsfouten te verminderen, worden coëfficiëntentabellen gebruikt.
Bij het maken van de codec berekenden de auteurs ADPCM-coëfficiënten voor een reeks muziekaudiobestanden. Hoe dichter het audiosignaal bij de muziekset ligt waarop de tafels zijn gebouwd, hoe minder kwantiseringsfouten (ruis) aptX creëert.

Hierdoor zullen synthetische tests altijd slechtere resultaten opleveren dan muziek. Ik heb een speciaal synthetisch voorbeeld gemaakt waarin aptX slechte resultaten laat zien - een sinusgolf met een frequentie van 12.4 kHz (boven - het originele signaal, onder - aptX. Audio in FLAC. Zet het volume lager!):

Spectrumgrafiek:
Audio via Bluetooth: maximale details over profielen, codecs en apparaten

Geluiden zijn duidelijk hoorbaar.

Als je echter een sinusgolf met een kleinere amplitude genereert, zodat deze stiller is, wordt de ruis ook stiller, wat wijst op een groot dynamisch bereik:

Audio via Bluetooth: maximale details over profielen, codecs en apparaten

Om het verschil te horen tussen het originele muzieknummer en het gecomprimeerde nummer, kunt u een van de signalen omkeren en de nummers kanaal voor kanaal toevoegen. Deze benadering is over het algemeen onjuist en zou geen goede resultaten opleveren met complexere codecs, maar specifiek voor ADPCM is deze benadering redelijk geschikt.
Verschil tussen origineel en aptX
Het wortelgemiddelde verschil van de signalen ligt op het niveau van -37.4 dB, wat niet veel is voor dergelijke gecomprimeerde muziek.

aptX HD

aptX HD is geen op zichzelf staande codec - het is een verbeterd coderingsprofiel van de aptX-codec. De wijzigingen hadden invloed op het aantal toegewezen bits voor coderingsfrequentiebereiken: 10 bits voor 0-5.5 kHz, 6 bits voor 5.5-11 kHz, 4 bits voor 11-16.5 kHz, 4 bits voor 16.5-22 kHz (cijfers voor 44.1 kHz) .

Codec
Bemonsteringssnelheid
Beetje diepte
Bitsnelheid
Ondersteuning voor codering
Ondersteuning voor decodering

aptX HD
16, 32, 44.1, 48 kHz
24 bits
192 / 384 / 529 / 576 kbps (afhankelijk van de bemonsteringssnelheid)
Android 8+*
Sommige audioapparaten (hardware)

* Versies tot en met 7 vereisen aanpassing van de Bluetooth-stack. De codec wordt alleen ondersteund als de fabrikant van het Android-apparaat een licentie voor de codec van Qualcomm heeft (als het besturingssysteem over coderingsbibliotheken beschikt).

Minder gebruikelijk dan aptX: vereist blijkbaar aparte licenties van Qualcomm, en aparte licentiekosten.

Laten we het voorbeeld herhalen met een sinusgolf van 12.4 kHz:
Audio via Bluetooth: maximale details over profielen, codecs en apparaten

Veel beter dan aptX, maar nog steeds een beetje luidruchtig.

aptX lage latentie

Een codec van Qualcomm die niets gemeen heeft met standaard aptX en aptX HD, afgaande op de beperkte informatie van mensen die betrokken zijn bij de ontwikkeling ervan. Ontworpen voor interactieve audiotransmissie met lage latentie (films, games), waarbij de audiovertraging niet softwarematig kan worden aangepast. Er zijn geen software-implementaties van encoders en decoders bekend; ze worden uitsluitend ondersteund door zenders, ontvangers, koptelefoons en luidsprekers, maar niet door smartphones en computers.

Bemonsteringssnelheid
Bitsnelheid
Ondersteuning voor codering
Ondersteuning voor decodering

44.1 кГц
276/420 kbps
Sommige zenders (hardware)
Sommige audioapparaten (hardware)

AAC

AAC, of ​​Advanced Audio Coding, is een computationeel complexe codec met een serieus psycho-akoestisch model. Op grote schaal gebruikt voor audio op internet, tweede in populariteit na mp3. Vereist licenties en royalty's: $15000 eenmalig (of $1000 voor bedrijven met minder dan 15 werknemers) + $0.98 voor de eerste 500000 apparaten (bron).
De codec is gestandaardiseerd binnen de MPEG-2- en MPEG-4-specificaties, en in tegenstelling tot wat vaak wordt gedacht, is deze niet van Apple.

Bemonsteringssnelheid
Bitsnelheid
Ondersteuning voor codering
Ondersteuning voor decodering

8 - 96 kHz
8 - 576 kbps (voor stereo), 256 - 320 kbps (typisch voor Bluetooth)
macOS, Android 7+*, iOS
Ruim aanbod aan audioapparaten (hardware)

* alleen op apparaten waarvan de fabrikanten licentiekosten hebben betaald

iOS en macOS gebruiken de huidige beste AAC-encoder van Apple om de hoogst mogelijke audiokwaliteit te leveren. Android gebruikt de op een na hoogste kwaliteit Fraunhofer FDK AAC-encoder, maar kan verschillende hardware gebruiken die in het platform is ingebouwd (SoC) met onbekende coderingskwaliteit. Dat blijkt uit recente tests op de SoundGuys-website, varieert de AAC-coderingskwaliteit van verschillende Android-telefoons enorm:
Audio via Bluetooth: maximale details over profielen, codecs en apparaten

De meeste draadloze audioapparaten hebben een maximale bitsnelheid van 320 kbps voor AAC, sommige ondersteunen slechts 256 kbps. Andere bitrates zijn uiterst zeldzaam.
AAC biedt uitstekende kwaliteit bij bitsnelheden van 320 en 256 kbps, maar is onderhevig aan verlies van sequentiële codering van reeds gecomprimeerde inhoud, het is echter moeilijk om eventuele verschillen met het origineel op iOS te horen bij een bitsnelheid van 256 kbps, zelfs met verschillende sequentiële coderingen; met enkele codering, bijvoorbeeld MP3 320 kbps naar AAC 256 kbps, kunnen verliezen worden verwaarloosd.
Net als bij andere Bluetooth-codecs wordt alle muziek eerst gedecodeerd en vervolgens gecodeerd door de codec. Wanneer u naar muziek in AAC-formaat luistert, wordt deze eerst door het besturingssysteem gedecodeerd en vervolgens opnieuw in AAC gecodeerd voor verzending via Bluetooth. Dit is nodig voor het mixen van meerdere audiostreams, zoals muziek en nieuwe berichtmeldingen. iOS is geen uitzondering. Op internet kun je veel beweringen vinden dat op iOS muziek in AAC-formaat niet wordt getranscodeerd wanneer deze via Bluetooth wordt verzonden, wat niet waar is.

MP1/2/3

De codecs van de MPEG-1/2 Part 3-familie bestaan ​​uit de bekende en veelgebruikte MP3, de minder gebruikelijke MP2 (voornamelijk gebruikt in digitale tv en radio) en de volledig onbekende MP1.

De oude MP1- en MP2-codecs worden helemaal niet ondersteund: ik kon geen koptelefoon of Bluetooth-stack vinden die ze zou coderen of decoderen.
MP3-decodering wordt door sommige hoofdtelefoons ondersteund, maar codering wordt door geen enkele moderne besturingssysteemstack ondersteund. Het lijkt erop dat de BlueSoleil-stack van derden voor Windows kan coderen naar MP3 als je het configuratiebestand handmatig wijzigt, maar voor mij leidt het installeren ervan tot BSoD op Windows 10. Conclusie: de codec kan eigenlijk niet worden gebruikt voor Bluetooth-audio.
Eerder, in 2006-2008, vóór de verspreiding van de A2DP-standaard op 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. Destijds bood de besturingssysteemarchitectuur van smartphones toegang tot veel functies op laag niveau, en op Windows Mobile was het zelfs mogelijk om Bluetooth-stacks van derden te installeren.

Het laatste patent van de MP3-codec is verlopen; voor het gebruik van de codec zijn sinds 23 april 2017 geen licentiekosten meer vereist.

Als het langstlopende patent genoemd in bovengenoemde referenties als maatstaf wordt genomen, dan werd de MP3-technologie patentvrij in de Verenigde Staten op 16 april 2017 toen US Patent 6,009,399, eigendom van en beheerd door Technicolor, afliep.

Bron: www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.html

Bemonsteringssnelheid
Bitsnelheid
Ondersteuning voor codering
Ondersteuning voor decodering

16 - 48 kHz
8 - 320 kbps
Wordt nergens ondersteund
Sommige audioapparaten (hardware)

LDAC

Een nieuwe en actief gepromoot “Hi-Res”-codec van Sony, die bemonsteringssnelheden tot 96 kHz en 24-bit bitrate ondersteunt, met bitrates tot 990 kbps. Het wordt geadverteerd als een audiofiele codec, ter vervanging van bestaande Bluetooth-codecs. Het heeft de functie van adaptieve bitrate-aanpassing, afhankelijk van de radio-uitzendingsomstandigheden.

LDAC-encoder (libldac) is opgenomen in het standaard Android-pakket, dus codering wordt ondersteund op elke Android-smartphone vanaf OS-versie 8. Er zijn geen vrij verkrijgbare softwaredecoders, de codecspecificatie is niet beschikbaar voor het grote publiek, maar op het eerste gezicht van de encoder is de interne structuur van de codec vergelijkbaar met ATRAC9 - Sony's codec gebruikt in de PlayStation 4 en Vita: beide werken in het frequentiedomein, gebruiken een aangepaste discrete cosinustransformatie (MDCT) en compressie met behulp van het Huffman-algoritme.

LDAC-ondersteuning wordt vrijwel uitsluitend geleverd door hoofdtelefoons van Sony. De mogelijkheid om LDAC te decoderen wordt soms aangetroffen op hoofdtelefoons en DAC's van andere fabrikanten, maar zeer zelden.

Bemonsteringssnelheid
Bitsnelheid
Ondersteuning voor codering
Ondersteuning voor decodering

44.1 - 96 kHz
303/606/909 kbit/s (voor 44.1 en 88.2 kHz), 330/660/990 kbit/s (voor 48 en 96 kHz)
Android 8 +
Sommige Sony-hoofdtelefoons en sommige apparaten van andere fabrikanten (hardware)

Het op de markt brengen van LDAC als een Hi-Res-codec schaadt de technische component ervan: het is dom om bitrate te besteden aan het verzenden van frequenties die onhoorbaar zijn voor het menselijk oor en het vergroten van de bitdiepte, terwijl het niet voldoende is om cd-kwaliteit (44.1/16) zonder verlies uit te zenden . Gelukkig heeft de codec twee bedieningsmodi: CD-audio-overdracht en Hi-Res-audio-overdracht. In het eerste geval wordt slechts 44.1 kHz/16 bits via de ether verzonden.

Omdat een software-LDAC-decoder niet vrij verkrijgbaar is, is het onmogelijk om de codec te testen zonder extra apparaten die LDAC decoderen. Volgens de resultaten van de LDAC-test op een DAC met zijn ondersteuning, die de technici van SoundGuys.com hebben aangesloten via een digitale uitgang en het uitgangsgeluid op testsignalen hebben opgenomen, biedt LDAC 660 en 990 kbps in CD-kwaliteitsmodus een signaal-naar- ruisverhouding iets beter dan die van aptX HD.

Audio via Bluetooth: maximale details over profielen, codecs en apparaten
Bron: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026

LDAC ondersteunt ook dynamische bitrates buiten de gevestigde profielen - van 138 kbps tot 990 kbps, maar voor zover ik weet gebruikt Android alleen de gestandaardiseerde profielen 303/606/909 en 330/660/990 kbps.

Andere codecs

Andere A2DP-codecs worden niet veel gebruikt. Hun ondersteuning is vrijwel volledig afwezig of alleen beschikbaar op bepaalde hoofdtelefoonmodellen en smartphones.
De in A2DP gestandaardiseerde ATRAC-codec is zelfs door Sony zelf nooit als Bluetooth-codec gebruikt, de codecs Samsung HD, Samsung Scalable en Samsung UHQ-BT hebben zeer beperkte ondersteuning van zendende en ontvangende apparaten, en HWA LHDC is te nieuw en ondersteunt er slechts drie. (?) apparaten.

Codec-ondersteuning voor audioapparaten

Niet alle fabrikanten publiceren nauwkeurige informatie over de codecs die worden ondersteund door bepaalde draadloze hoofdtelefoons, luidsprekers, ontvangers of zenders. Soms komt het voor dat ondersteuning voor een bepaalde codec alleen voor transmissie is, maar niet voor ontvangst (relevant voor gecombineerde zenders-ontvangers), hoewel de fabrikant eenvoudigweg “ondersteuning” verklaart, zonder opmerkingen (ik neem aan dat afzonderlijke licenties voor encoders en decoders van sommige codecs zijn hier debet aan). Op de goedkoopste apparaten vind je de aangegeven aptX-ondersteuning mogelijk helemaal niet.

Helaas geven de interfaces van de meeste besturingssystemen de gebruikte codec nergens weer. Informatie hierover is alleen beschikbaar in Android, vanaf versie 8, en macOS. Zelfs in deze besturingssystemen worden echter alleen de codecs weergegeven die door zowel de telefoon/computer als de hoofdtelefoon worden ondersteund.

Hoe kom je erachter welke codecs jouw apparaat ondersteunt? Registreer en analyseer verkeersdumps met A2DP-onderhandelingsparameters!
Dit kan op Linux, macOS en Android. Op Linux kun je Wireshark of hcidump gebruiken, op macOS kun je Bluetooth Explorer gebruiken en op Android kun je de standaard Bluetooth HCI dump-opslagfunctie gebruiken, die beschikbaar is in de ontwikkelaarstools. U ontvangt een dump in btsnoop-formaat, die in de Wireshark-analysator kan worden geladen.
Noot: een correcte dump kan alleen worden verkregen door verbinding te maken vanaf je telefoon/computer met een koptelefoon/luidsprekers (hoe grappig het ook mag klinken)! De hoofdtelefoon kan zelfstandig een verbinding tot stand brengen met de telefoon, waarbij hij een lijst met codecs opvraagt ​​bij de telefoon, en niet andersom. Om er zeker van te zijn dat de juiste dump wordt opgenomen, ontkoppelt u eerst het apparaat en koppelt u vervolgens uw telefoon met de hoofdtelefoon terwijl u de dump opneemt.

Gebruik het volgende weergavefilter om irrelevant verkeer eruit te filteren:

btavdtp.signal_id

Als gevolg hiervan zou je iets soortgelijks als dit moeten zien:
Audio via Bluetooth: maximale details over profielen, codecs en apparaten

U kunt op elk item in de opdracht GetCapabilities klikken om de gedetailleerde kenmerken van de codec te bekijken.
Audio via Bluetooth: maximale details over profielen, codecs en apparaten

Wireshark kent niet alle codec-ID's, dus sommige codecs zullen handmatig moeten worden gedecodeerd, kijk naar de onderstaande identificatietabel:

Mandatory:
0x00 - SBC

Optional:
0x01 - MPEG-1,2 (aka MP3)
0x02 - MPEG-2,4 (aka AAC)
0x04 - ATRAC

Vendor specific:
0xFF 0x004F 0x01   - aptX
0xFF 0x00D7 0x24   - aptX HD
0xFF 0x000A 0x02   - aptX Low Latency
0xFF 0x00D7 0x02   - aptX Low Latency
0xFF 0x000A 0x01   - FastStream
0xFF 0x012D 0xAA   - LDAC
0xFF 0x0075 0x0102 - Samsung HD
0xFF 0x0075 0x0103 - Samsung Scalable Codec
0xFF 0x053A 0x484C - Savitech LHDC

0xFF 0x000A 0x0104 - The CSR True Wireless Stereo v3 Codec ID for AAC
0xFF 0x000A 0x0105 - The CSR True Wireless Stereo v3 Codec ID for MP3
0xFF 0x000A 0x0106 - The CSR True Wireless Stereo v3 Codec ID for aptX

Om dumps niet handmatig te analyseren, heb ik een service gemaakt die alles automatisch analyseert: btcodecs.valdikss.org.ru

Vergelijking van codecs. Welke codec is beter?

Elke codec heeft zijn eigen voor- en nadelen.
aptX en aptX HD gebruiken hardgecodeerde profielen die niet kunnen worden gewijzigd zonder de encoder en decoder aan te passen. Noch de telefoonfabrikant, noch de fabrikant van de hoofdtelefoon kunnen de bitrate- of aptX-coderingsfactoren wijzigen. De eigenaar van de codec, Qualcomm, levert een referentie-encoder in de vorm van een bibliotheek. Deze feiten zijn de kracht van aptX: u weet vooraf welke geluidskwaliteit u krijgt, zonder enige ‘maren’.

SBC heeft daarentegen veel configureerbare parameters, dynamische bitrate (de encoder kan de bitpool-parameter verlagen als de ether bezig is) en heeft geen hardgecodeerde profielen, alleen de aanbevolen “gemiddelde kwaliteit” en “hoge kwaliteit” die waren toegevoegd aan de A2DP-specificatie in 2003. “Hoge kwaliteit” is volgens de huidige normen niet meer zo hoog, en bij de meeste Bluetooth-stacks kun je geen betere parameters gebruiken dan het profiel “hoge kwaliteit”, hoewel hier geen technische beperkingen voor bestaan.
Bluetooth SIG heeft geen referentie-SBC-encoder als bibliotheek, en fabrikanten implementeren deze zelf.
Dit zijn de zwakke punten van SBC: het is nooit vooraf duidelijk welke geluidskwaliteit je van een bepaald apparaat kunt verwachten. SBC kan zowel lage als zeer hoge kwaliteit audio produceren, maar dit laatste is onbereikbaar zonder de kunstmatige beperkingen van Bluetooth-stacks uit te schakelen of te omzeilen.

De situatie met AAC is dubbelzinnig: aan de ene kant zou de codec theoretisch kwaliteit moeten produceren die niet te onderscheiden is van het origineel, maar in de praktijk wordt dit, afgaande op de tests van het SoundGuys-laboratorium op verschillende Android-apparaten, niet bevestigd. Hoogstwaarschijnlijk ligt de fout bij hardware-audio-encoders van lage kwaliteit die in verschillende telefoonchipsets zijn ingebouwd. Het is zinvol om AAC alleen op Apple-apparaten te gebruiken, en op Android om het te beperken tot aptX en LDAC.

Hardware die alternatieve codecs ondersteunt, is meestal van hogere kwaliteit, simpelweg omdat het voor zeer goedkope apparaten van lage kwaliteit geen zin heeft om licentiekosten te betalen om die codecs te gebruiken. In mijn tests klinkt SBC erg goed op kwaliteitsapparatuur.

Ik heb een webservice gemaakt die audio in realtime codeert naar SBC, aptX en aptX HD, rechtstreeks in de browser. Hiermee kun je deze audiocodecs testen zonder daadwerkelijk audio via Bluetooth te verzenden, op elke bedrade hoofdtelefoon, luidsprekers en je favoriete muziek, en ook de coderingsparameters rechtstreeks wijzigen tijdens het afspelen van audio:
btcodecs.valdikss.org.ru/sbc-encoder
De service maakt gebruik van de SBC-coderingsbibliotheken van het BlueZ-project en libopenaptx van ffmpeg, die via emscripten in WebAssembly en JavaScript vanuit C worden gecompileerd om in de browser te draaien. Wie zou van zo’n toekomst kunnen dromen!

Zo ziet het eruit:

Merk op hoe het ruisniveau verandert na 20 kHz voor verschillende codecs. Het originele MP3-bestand bevat geen frequenties boven 20 kHz.

Probeer van codec te wisselen en kijk of je het verschil hoort tussen het origineel, SBC 53 Joint Stereo (het standaard en meest voorkomende profiel) en aptX/aptX HD.

Ik hoor het verschil tussen codecs in koptelefoon!

Mensen die tijdens het testen via een webservice het verschil tussen codecs niet horen, beweren dat ze het wel horen als ze naar muziek luisteren op een draadloze hoofdtelefoon. Helaas is dit geen grap of een placebo-effect: het verschil is echt hoorbaar, maar wordt niet veroorzaakt door verschillen codecs.

De overgrote meerderheid van de Bluetooth-audiochipsets die in draadloze ontvangstapparaten worden gebruikt, zijn uitgerust met een Digital Signal Processor (DSP), die een equalizer, compander, stereo-expander en andere dingen implementeert die zijn ontworpen om het geluid te verbeteren (of te veranderen). Fabrikanten van Bluetooth-apparatuur kunnen DSP configureren voor elke codec afzonderlijk, en bij het schakelen tussen codecs zal de luisteraar denken dat hij een verschil hoort in de werking van de codecs, terwijl hij in werkelijkheid naar verschillende DSP-instellingen luistert.

Audio via Bluetooth: maximale details over profielen, codecs en apparaten
DSP Kalimba-audioverwerkingspijplijn in chips vervaardigd door CSR/Qualcomm

Audio via Bluetooth: maximale details over profielen, codecs en apparaten
Activeer voor elke codec verschillende DSP-functies en voer afzonderlijk uit

Sommige premium-apparaten worden geleverd met software waarmee u de DSP-instellingen kunt aanpassen, maar de meeste goedkopere hoofdtelefoons doen dat niet, en gebruikers kunnen de nabewerking van audio niet handmatig uitschakelen.

Functionele kenmerken van apparaten

De moderne versie van de A2DP-standaard heeft “absolute volumeregeling”-functie — volumeregeling van het apparaat met behulp van speciale opdrachten van het AVRCP-protocol, dat de versterking van de uitgangstrap regelt, in plaats van het volume van de audiostream programmatisch te verminderen. Als wanneer u het volume op uw hoofdtelefoon wijzigt, de wijziging niet synchroniseert met het volume op uw telefoon, ondersteunt uw hoofdtelefoon of telefoon deze functie niet. In dit geval is het zinvol om altijd naar muziek te luisteren met het maximale volume op de telefoon en het daadwerkelijke volume aan te passen met de hoofdtelefoonknoppen - in dit geval zal de signaal-ruisverhouding beter zijn en de audiokwaliteit zou moeten zijn hoger.
In werkelijkheid zijn er trieste situaties. Op mijn RealForce OverDrive D1-hoofdtelefoon voor SBC is een sterke compander ingeschakeld en het verhogen van het volume leidt tot een toename van het niveau van zachte geluiden, terwijl het volume van harde geluiden niet verandert (het signaal is gecomprimeerd). Hierdoor moet je het volume op de computer op ongeveer de helft zetten, waarbij er vrijwel geen compressie-effect optreedt.
Volgens mijn waarnemingen ondersteunen alle hoofdtelefoons met extra codecs de absolute volumeregelingsfunctie, blijkbaar is dit een van de vereisten voor codec-certificering.

Sommige hoofdtelefoons ondersteunen tegelijkertijd twee apparaten verbinden. Hierdoor kun je bijvoorbeeld naar muziek luisteren vanaf je computer en gebeld worden vanaf je telefoon. Houd er echter rekening mee dat in deze modus alternatieve codecs zijn uitgeschakeld en alleen SBC wordt gebruikt.

AVDTP 1.3 Vertragingsrapportagefunctie zorgt ervoor dat de hoofdtelefoon de vertraging kan doorgeven aan het zendapparaat waarop het geluid daadwerkelijk wordt afgespeeld. Hiermee kunt u de synchronisatie van audio met video aanpassen tijdens het bekijken van videobestanden: als er problemen zijn met de radiotransmissie, zal de audio niet achterlopen op de video, maar integendeel, de video zal door de videospeler worden vertraagd totdat de audio en video worden opnieuw gesynchroniseerd.
De functie wordt ondersteund door veel hoofdtelefoons, Android 9+ en Linux met PulseAudio 12.0+. Ik ben niet op de hoogte van ondersteuning voor deze functie op andere platforms.

Bidirectionele communicatie via Bluetooth. Spraakoverdracht.

Voor spraakoverdracht in Bluetooth wordt Synchronous Connection Oriented (SCO) gebruikt: synchrone overdracht met voorafgaande onderhandeling van de verbinding. Met deze modus kunt u geluid en stem strikt op volgorde verzenden, met symmetrische verzend- en ontvangstsnelheden, zonder te wachten op bevestiging van de verzending en zonder pakketten opnieuw te verzenden. Dit vermindert de algehele vertraging van de audiotransmissie via het radiokanaal, maar legt ernstige beperkingen op aan de hoeveelheid gegevens die per tijdseenheid wordt verzonden, en heeft een negatieve invloed op de kwaliteit.
Wanneer deze modus wordt gebruikt, worden zowel spraak als audio met dezelfde kwaliteit verzonden.
Helaas is de spraakkwaliteit via Bluetooth anno 2019 nog steeds slecht, en het is onduidelijk waarom de Bluetooth SIG er niets aan doet.

CVSD

De CVSD-basisspraakcodec werd in 2002 gestandaardiseerd en wordt ondersteund door alle bidirectionele Bluetooth-communicatieapparaten. Het biedt audiotransmissie met een bemonsteringsfrequentie van 8 kHz, wat overeenkomt met de kwaliteit van conventionele bedrade telefonie.

Een voorbeeld van een opname in deze codec.

mSBC

De aanvullende mSBC-codec werd in 2009 gestandaardiseerd en in 2010 verschenen er al chips die deze gebruikten voor spraakoverdracht. mSBC wordt breed ondersteund door verschillende apparaten.
Dit is geen onafhankelijke codec, maar een reguliere SBC uit de A2DP-standaard, met een vast coderingsprofiel: 16 kHz, mono, bitpool 26.

Een voorbeeld van een opname in deze codec.

Niet briljant, maar veel beter dan CVSD, maar het is nog steeds vervelend om te gebruiken voor online communicatie, vooral als je een koptelefoon gebruikt om in de game te communiceren - de audio van de game wordt ook verzonden met een bemonsteringssnelheid van 16 kHz.

Het FastStreamCSR-bedrijf besloot het idee te ontwikkelen om SBC te gebruiken. Om de beperkingen van het SCO-protocol te omzeilen en hogere bitrates te gebruiken, ging CSR een andere weg in: ze introduceerden ondersteuning voor tweeweg SBC-audio in de A2DP-standaard voor eenrichtingsaudiotransmissie, gestandaardiseerde coderingsprofielen en noemden dit "FastStream".

FastStream verzendt stereogeluid op 44.1 of 48 kHz met een bitsnelheid van 212 kbps naar de luidsprekers, en mono, 16 kHz, met een bitsnelheid van 72 kbps wordt gebruikt om audio uit de microfoon te verzenden (iets beter dan mSBC). Dergelijke parameters zijn veel beter geschikt voor communicatie in online games - het geluid van het spel en de gesprekspartners zullen van hoge kwaliteit zijn.

Een voorbeeld van een opname in deze codec (+ geluid uit de microfoon, hetzelfde als mSBC).

Het bedrijf kwam met een interessante kruk, maar omdat deze in tegenspraak is met de A2DP-standaard, wordt deze alleen ondersteund in enkele zenders van het bedrijf (die werken als een USB-audiokaart, niet als een Bluetooth-apparaat), maar dat is niet het geval. krijgen ondersteuning in Bluetooth-stacks, al is het aantal koptelefoons met FastStream-ondersteuning niet zo klein.

Op dit moment is FastStream-ondersteuning in het besturingssysteem alleen beschikbaar als patch voor Linux PulseAudio van ontwikkelaar Pali Rohár, die niet is opgenomen in de hoofdtak van het programma.

aptX lage latentie

Tot uw grote verbazing ondersteunt aptX Low Latency ook bidirectionele audio, waarbij hetzelfde principe wordt geïmplementeerd als FastStream.
Het is nergens mogelijk om deze functie van de codec te gebruiken - er is geen ondersteuning voor Low Latency-decodering in welk besturingssysteem dan ook of in welke Bluetooth-stack dan ook die mij bekend is.

Bluetooth 5, Klassiek en Low Energy

Er is veel verwarring geweest rond Bluetooth-specificaties en -versies vanwege de aanwezigheid van twee incompatibele standaarden onder hetzelfde merk, die beide op grote schaal worden gebruikt voor verschillende doeleinden.

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 wijdverspreid en wordt niet gebruikt in huishoudelijke apparaten.

Vanaf Bluetooth 4.0 hadden de wijzigingen in de specificatie voornamelijk betrekking op Bluetooth Low Energy, en de Classic-versie kreeg slechts kleine verbeteringen.

Lijst met wijzigingen tussen Bluetooth 4.2 en Bluetooth 5:

9 WIJZIGINGEN VAN v4.2 NAAR 5.0

9.1 NIEUWE FUNCTIES

In de Bluetooth Core Specification 5.0 Release zijn verschillende nieuwe functies geïntroduceerd. De belangrijkste verbeterpunten zijn:
• Slotbeschikbaarheidsmasker (SAM)
• 2 Msym/s PHY voor LE
•LE Lange afstand
• Niet-koppelbare reclame met hoge gebruikscyclus
• LE-advertentie-extensies
• LE-kanaalselectiealgoritme nr. 2
9.1.1 Functies toegevoegd in CSA5 - Geïntegreerd in v5.0
•Hoger uitgangsvermogen

Bron: www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=421043 (pagina 291)

Slechts één wijziging had invloed op de Classic-versie binnen het raamwerk van de Bluetooth 5-specificatie: ze voegden ondersteuning toe voor Slot Availability Mask (SAM) -technologie, ontworpen om de scheiding van radio-uitzendingen te verbeteren. Alle andere wijzigingen zijn alleen van invloed op Bluetooth LE (en ook op een hoger uitgangsvermogen).

Alle Audioapparaten gebruiken alleen Bluetooth Classic. Het is onmogelijk om hoofdtelefoons en speakers via Bluetooth Low Energy aan te sluiten: er bestaat geen standaard voor het verzenden van audio via LE. De A2DP-standaard, die wordt gebruikt voor het verzenden van audio van hoge kwaliteit, werkt alleen via Bluetooth Classic en er is geen analoog in LE.

Conclusie: het kopen van audioapparaten met Bluetooth 5 alleen vanwege de nieuwe versie van het protocol heeft geen zin. Bluetooth 4.0/4.1/4.2 zal in de context van audiotransmissie precies hetzelfde werken.
Als de aankondiging van nieuwe hoofdtelefoons melding maakt van een verdubbeld bereik en een lager energieverbruik dankzij Bluetooth 5, dan moet je weten dat ze het zelf niet begrijpen of je misleiden. Geen wonder, want zelfs fabrikanten van Bluetooth-chips zijn in hun aankondigingen in de war over de verschillen tussen de nieuwe versie van de standaard, en sommige Bluetooth 5-chips ondersteunen de vijfde versie alleen voor LE en gebruiken 4.2 voor Classic.

Vertraging audiotransmissie

De hoeveelheid vertraging (vertraging) in audio hangt van veel factoren af: de grootte van de buffer in de audiostack, in de Bluetooth-stack en in het draadloze afspeelapparaat zelf, en de algoritmische vertraging van de codec.

De latentie van eenvoudige codecs zoals SBC, aptX en aptX HD is erg klein, 3-6 ms, wat kan worden verwaarloosd, maar complexe codecs zoals AAC en LDAC kunnen merkbare vertraging veroorzaken. De algoritmische latentie van AAC voor 44.1 kHz is 60 ms. LDAC - ongeveer 30 ms (gebaseerd op een ruwe analyse van de broncode. Ik kan het mis hebben, maar niet veel.)

De resulterende latentie is sterk afhankelijk van het afspeelapparaat, de chipset en buffer. Tijdens tests ontving ik een spreiding van 150 tot 250 ms op verschillende apparaten (met de SBC-codec). Als we aannemen dat apparaten die extra codecs aptX, AAC en LDAC ondersteunen hoogwaardige componenten en een kleine buffergrootte gebruiken, krijgen we de volgende typische latenties:

SBC: 150-250 ms
aptX: 130-180 ms
AAC: 190-240 ms
LDAC: 160-210 ms

Laat me je eraan herinneren: aptX Low Latency wordt niet ondersteund in besturingssystemen. Daarom kan een lagere latentie alleen worden verkregen met een zender+ontvanger of zender+hoofdtelefoon/luidspreker-combinatie, en alle apparaten moeten deze codec ondersteunen.

Problemen met Bluetooth-apparaten, certificering en logo

Hoe onderscheid je een audioapparaat van hoge kwaliteit van een goedkoop handwerk? In de eerste plaats qua uiterlijk!

Voor goedkope Chinese koptelefoons, speakers en receivers:

  1. Het woord “Bluetooth” ontbreekt op de doos en het apparaat, “Wireless” en “BT” worden het vaakst gebruikt
  2. Bluetooth-logo ontbreekt Audio via Bluetooth: maximale details over profielen, codecs en apparaten op de doos of het apparaat
  3. Geen blauw knipperende LED

De afwezigheid van deze elementen geeft aan dat het apparaat niet is gecertificeerd, wat betekent dat het potentieel van lage kwaliteit en problematisch is. Bluedio-hoofdtelefoons zijn bijvoorbeeld niet Bluetooth-gecertificeerd en voldoen niet volledig aan de A2DP-specificatie. Ze zouden niet geslaagd zijn voor de certificering.

Laten we verschillende apparaten en dozen ervan bekijken:
Audio via Bluetooth: maximale details over profielen, codecs en apparaten

Audio via Bluetooth: maximale details over profielen, codecs en apparaten

Audio via Bluetooth: maximale details over profielen, codecs en apparaten

Dit zijn allemaal niet-gecertificeerde apparaten. De instructies kunnen een logo en de naam van de Bluetooth-technologie bevatten, maar het belangrijkste is dat deze op de doos en/of het apparaat zelf staan.

Als uw koptelefoon of luidspreker zegt “Ze bluetooth dewise is succesvol verbonden”, geeft dit ook niet de kwaliteit aan:

Conclusie

Kan Bluetooth bedrade hoofdtelefoons en headsets volledig vervangen? Het is capabel, maar dit gaat ten koste van een slechte gesprekskwaliteit, een verhoogde audiolatentie die vervelend kan zijn in games, en een groot aantal eigen codecs die licentiekosten vereisen en de uiteindelijke kosten van zowel smartphones als hoofdtelefoons verhogen.

De marketing van alternatieve codecs is erg sterk: aptX en LDAC worden gepresenteerd als een langverwachte vervanging voor de “verouderde en slechte” SBC, die lang niet zo slecht is als mensen denken dat het is.

Het bleek dat de kunstmatige beperkingen van Bluetooth-stacks op de SBC-bitrate omzeild kunnen worden, waardoor de SBC niet onderdoet voor aptX HD. Ik heb het initiatief in eigen handen genomen en een patch gemaakt voor de LineageOS-firmware: We passen de Bluetooth-stack aan om het geluid op hoofdtelefoons zonder AAC-, aptX- en LDAC-codecs te verbeteren

Meer informatie vindt u op de websites Geluid jongens и Geluidsexpert.

bonus: SBC-referentie-encoder, A2DP bitstream-informatie en testbestanden. Dit bestand werd vroeger openbaar op de Bluetooth-website geplaatst, maar is nu alleen beschikbaar voor leden van de Bluetooth SIG.

Bron: www.habr.com

Voeg een reactie