
Due to the mass production of smartphones without a 3.5 mm audio jack, wireless Bluetooth headphones have become the primary means of listening to music and communicating in headset mode for many.
Manufacturers of wireless devices do not always provide detailed product specifications, and articles about Bluetooth audio on the internet are contradictory, sometimes incorrect, fail to cover all features, and often copy the same misleading information.
Let's try to understand the protocol, the capabilities of Bluetooth stacks of operating systems, headphones and speakers, Bluetooth codecs for music and speech, figure out what affects the quality of transmitted sound and latency, and learn to collect and decode information about supported codecs and other capabilities of devices.
TL;DR:
- SBC — a standard codec
- Headphones have their own equalizer and post-processing for each codec separately
- aptX is not as good as advertised in promotional announcements
- LDAC — marketing nonsense
- Call audio quality is still low
- Audio encoders can be embedded in the browser using C, compiled into WebAssembly via emscripten, and they won't cause significant slowdowns.
Music via Bluetooth
The functional aspect of Bluetooth is defined by profiles — specifications of specific functions. Music transmission via Bluetooth is done using the A2DP profile for high-quality one-way audio. The A2DP standard was adopted in 2003 and has not significantly changed since then.
Within the profile, 1 mandatory codec with low computational complexity, SBC, specifically designed for Bluetooth, and 3 additional codecs are standardized. The use of undocumented proprietary codecs is also allowed.
As of June 2019, we are at with 14 A2DP codecs:
- SBC ← standardized in A2DP, supported by all devices
- MPEG-1/2 Layer 1/2/3 ← standardized in A2DP: the well-known , used in digital TV , and the little-known
- MPEG-2/4 AAC ← standardized in A2DP
- ATRAC ← an old codec from Sony, standardized in A2DP
- LDAC ← a new codec from Sony
- aptX ← a codec from 1988
- aptX HD ← the same as aptX but with different encoding parameters
- aptX Low Latency ← quite a different codec, no software implementation
- aptX Adaptive ← endnu en codec fra Qualcomm
- FastStream ← pseudokodex, tovejsmodifikation af SBC
- HWA LHDC ← ny codec fra Huawei
- Samsung HD ← understøttes af 2 enheder
- Samsung Scalable ← understøttes af 2 enheder
- Samsung UHQ-BT ← understøttes af 3 enheder
Hvorfor er codecs nødvendige, spørger du, når Bluetooth har EDR, som muliggør dataoverførsel med hastigheder på 2 og 3 Mbps, og til ukomprimeret stereo 16-bit PCM er 1,4 Mbps tilstrækkeligt?
Dataoverførsel via Bluetooth
Bluetooth har to typer dataoverførsel: Asynchronous Connection Less (ACL) til asynkron overførsel uden oprettelse af forbindelse, og Synchronous Connection Oriented (SCO), til synkron overførsel med forudgående aftale om forbindelsen.
Overførslen sker ved brug af en tidsdelingsordning og kanalvalg for hver pakke individuelt (Frequency-Hop/Time-Division-Duplex, FH/TDD), hvor tiden opdeles i 625-mikrosektunders intervaller kaldet slots. Ét af apparaterne foregår i lige slots, mens det andet foregår i ulige slots. Den overførte pakke kan tage 1, 3 eller 5 slots, afhængigt af datastørrelsen og den valgte overførselstype; i dette tilfælde foregår overførsel fra én enhed i både lige og ulige slots indtil overførslen er afsluttet. I alt kan der per sekund modtages og sendes op til 1600 pakker, hvis hver af dem optager 1 slot, og begge enheder hele tiden sender og modtager noget.
2 og 3 Mbps for EDR, som kan findes i annoncer og på Bluetooth's hjemmeside, er den maksimale kanaloverførselshastighed for alle data samlet set (inklusive tekniske overskrifter for alle protokoller, som data skal indkapsles i), i begge retninger samtidig. Den faktiske dataoverførselshastighed kan variere betydeligt.
Til musikoverførsel anvendes den asynkrone metode, næsten altid ved hjælp af pakker af typen 2-DH5 og 3-DH5, som bærer det maksimale antal data i EDR 2 Mbps og 3 Mbps, henholdsvis, og optager 5 slots i tidsopdelingen.
Schematiske repræsentation af overførsel ved hjælp af 5 slots af én enhed og 1 slot af en anden (DH5/DH1):

På grund af tidsdelingseffekten er vi nødt til at vente i 625 mikrosekunder efter at have sendt en pakke, hvis den anden enhed ikke sender noget til os eller sender en lille pakke, og længere tid, hvis den anden enhed sender store pakker. Hvis der er tilsluttet flere enheder til telefonen (f.eks. hovedtelefoner, ure og fitnessarmbånd), deles overførselstiden blandt dem alle.
Behovet for at kapsle lyd i specielle transportprotokoller L2CAP og AVDTP fjerner 16 byte fra den maksimale mulige nyttelast, der kan overføres.
Pakke type
Antal slots
Maks. antal byte pr. pakke
Maks. antal byte A2DP nyttelast
Maks. bitrate A2DP nyttelast
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 og 1429 kbit/s er bestemt utilstrækkeligt til at overføre uspoleret lyd under praktiske forhold, med støj i 2.4 GHz-båndet og behovet for at transmittere kontroldata. EDR 3 Mbit/s kræver meget forhold til udgangseffekten og støj i luften, så selv i 3-DH5-tilstand vil komfortabel overførsel af PCM være umulig, der vil konstant være kortvarige afbrydelser, og det vil kun fungere over korte afstande.
I praksis har selv 990 kbit/s lydstrøm (LDAC 990 kbit/s) problemer med at blive overført.
Lad os vende tilbage til codecs.
SBC
Codec'en er obligatorisk for alle enheder, der understøtter A2DP-standarden. Den bedste og dårligste codec på en gang.
Samplingfrekvens
Bitdybde
Bitrate
Understøttelse af kodning
Understøttelse af dekodning
16, 32, 44.1, 48 kHz
16 bit
10-1500 kbit/s
Af alle enheder
Af alle enheder
SBC er en simpel og beregningsmæssigt hurtig codec med en primitiv psykoakustisk model (anvender kun maskering af stille lyde) og bruger adaptiv impuls-kodning modulation (APCM).
A2DP-specifikationen anbefaler brug af to profiler: Middle Quality og High Quality.

Codec'en har mange indstillinger, der gør det muligt at styre den algoritmiske forsinkelse, antallet af samples i blokken, bitfordelingsalgoritmen, men næsten overalt anvendes de samme anbefalede parametre fra specifikationen: Joint Stereo, 8 frekvensbånd, 16 blokke i lydrammen, og bitfordelingsmetoden Loudness.
SBC understøtter dynamisk ændring af Bitpool-parameteren, som direkte påvirker bitrate. Hvis radioen er overfyldt, går pakker tabt, eller enhederne er langt fra hinanden, kan lydkilden reducere Bitpool, indtil forbindelsen er normaliseret.
Producenterne af de fleste hovedtelefoner indstiller den maksimale værdi af Bitpool-parameteren til 53, hvilket begrænser bitraten til 328 kilobit per sekund ved brug af den anbefalede profil.
Selv hvis producenten af hovedtelefonerne har indstillet den maksimale værdi af Bitpool til over 53 (sådanne modeller findes f.eks. i Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, samt i nogle receivere og bilstereoenheder), tillader de fleste operativsystemer ikke brug af forhøjede bitrater på grund af en intern begrænsning i Bluetooth-stakene.
Derudover sætter nogle producenter en lav maksimal værdi af Bitpool for visse enheder. For eksempel er den 39 for Bluedio T, og 37 for Samsung Gear IconX, hvilket giver dårlig lydkvalitet.
Kunstige begrænsninger fra udviklerne af Bluetooth-stakene opstod sandsynligvis på grund af inkompatibilitet mellem visse enheder og høje værdier af Bitpool eller unormale profiler, selv når de rapporterede at understøtte dem, samt et utilstrækkeligt antal tests under certificering. Det var lettere for forfatterne af Bluetooth-stakene at begrænse sig til at godkende den anbefalede profil snarere end at skabe en database over defekte enheder (selvom de nu gør det for andre defekt fungerende funktioner).
SBC tildeler dynamisk kvantiseringsbits til frekvensbåndene, og arbejder fra lav til høj med forskellige vægte. Hvis hele bitraten anvendes på lave og mellemste frekvenser, vil de høje frekvenser 'blive skåret af' (i stedet vil der være stilhed).
Eksempel på SBC 328 kbit/s. Øverst er originalen, nederst SBC, med periodisk skift mellem sporene. Til lyd i videofilen anvendes en tabsløs komprimeringskodek FLAC. Brugen af FLAC i mp4-containeren er ikke officielt standardiseret, så der er ingen garanti for, at din browser vil kunne afspille det, men det burde fungere i de seneste versioner af desktop Chrome og Firefox. Hvis du ikke hører noget, kan du downloade filen og åbne den i en komplet videoafspiller.
ZZ Top — Sharp Dressed Man
På spektrogrammet kan man se overgangen: SBC skærer periodisk svage lyde over 17,5 kHz, og tildele slet ikke bits til området over 20 kHz. Det komplette spektrogram er tilgængeligt ved klik (1,7 MB).
Jeg kan ikke høre forskel mellem originalen og SBC på dette nummer.
Lad os tage noget nyere og simulere lyden, der ville komme fra at bruge Samsung Gear IconX-hovedtelefoner med Bitpool 37 (øverst er det originale signal, nederst er SBC 239 kbps, lyd i FLAC).
Mindless Self Indulgence — Witness
Jeg hører knasen, mindre stereoeffekt og en ubehagelig 'klik' i vokalen i de høje frekvenser.
Selvom SBC er en meget fleksibel codec, der kan konfigureres til lav latenstid, giver det fremragende lydkvalitet ved høje bitrate (452+ kbps) og ganske anstændig for de fleste mennesker på standard High Quality (328 kbps), fordi standarden A2DP ikke fastsætter faste profiler (men kun giver anbefalinger), har udviklerne af stakke indsat kunstige begrænsninger på Bitpool, de transmitte audio parametre vises ikke i brugergrænsefladen, og producenterne af hovedtelefoner er frie til at indstille deres indstillinger og angiver aldrig Bitpool-værdien i produktspecifikationerne. Codec'en har fået et dårligt ry for lydkvalitet, selvom dette ikke er codec'ens problem i sig selv.
Bitpool-parameteren påvirker bitrate udelukkende inden for en enkelt profil. Den samme Bitpool-værdi på 53 kan give både 328 kbps ved den anbefalede profil High Quality og 1212 kbps med Dual Channel og 4 frekvensbånd, hvilket resulterer i, at operativsystemets forfattere, udover begrænsningerne på Bitpool, også sætter et loft for Bitrate. Som jeg ser det, opstod denne situation på grund af mangler i standarden A2DP: man skulle have koordineret bitrate, ikke Bitpool.
Tabel over SBC-funktioner i forskellige OS:
OS
Understøttede sampling frekvenser
Maks. Bitpool grænse
Maks. Bitrate grænse
Typisk Bitrate
Dynamisk tilpasning af Bitpool
Windows 10
44,1 kHz
53
512 kbps
328 kbps
✓*
Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (ved indgående forbindelse), 53 (ved udgående)
Ingen begrænsning
328 kbps
✓*
macOS High Sierra
44,1 kHz
64, normalt 53***
Ukendt
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
Ingen begrænsning
328 kbps
✗
* Bitpool reduceres kun, men øges ikke automatisk, når transmissionsforholdene forbedres. For at gendanne Bitpool skal du stoppe afspilningen, vente et par sekunder og genstarte lyden.
** Standardværdien afhænger af de indstillinger i stakken, der blev angivet under kompilering af firmwaren. I Android 8/8.1 er frekvensen kun enten 44.1 kHz eller 48 kHz, afhængigt af indstillingerne ved kompilering; i andre versioner understøttes 44.1 kHz og 48 kHz samtidig.
*** Bitpool-værdien kan hæves i programmet Bluetooth Explorer.
aptX og aptX HD
aptX er en enkel og beregningsmæssigt hurtig codec uden psykoakustik, der anvender adaptiv differens impuls-kode modulering (). Den dukkede op omkring 1988 (datoen for indgivelsen er dateret februar 1988), før Bluetooth blev den primært brugt i professionelt trådløst audio-udstyr. I øjeblikket ejes den af Qualcomm og kræver licens og royaltybetalinger. Pr. 2014: $6000 engangsgebyr og ca. $1 per enhed for partier op til 10.000 enheder (, s. 16).
aptX og aptX HD er den samme codec, men med forskellige kodningsprofiler.
Codec'en har kun én parameter — valget af samplingfrekvens. Der er også valget af antal/tilstande af kanaler, men i alle de enheder, jeg kender (70+ stykker), understøttes kun stereo.
Codec
Samplingfrekvens
Bitdybde
Bitrate
Understøttelse af kodning
Understøttelse af dekodning
aptX
16, 32, 44.1, 48 kHz
16 bit
128 / 256 / 352 / 384 kbit/s (afhængig af samplingfrekvensen)
Windows 10 (desktop og mobil), macOS, Android 4.4+/7*, Blackberry OS 10
Et bredt udvalg af audio-enheder (hardware)
* Versioner op til 7 kræver modificering af Bluetooth-stakken. Codec'en understøttes kun, hvis producenten af Android-enheden har licenseret brugen af codec'en fra Qualcomm (hvis OS'et har kodningsbiblioteker).
aptX opdeler lyden i 4 frekvensbånd og kvantiserer dem med det samme antal bits konstant: 8 bits for 0-5.5 kHz, 4 bits for 5.5-11 kHz, 2 bits for 11-16.5 kHz, 2 bits for 16.5-22 kHz (tallene for samplingfrekvensen 44.1 kHz).
Eksempel på aptX-lyd (øverst — originalsignal, nederst — aptX, spektrogrammer kun for venstre kanal, lyd i FLAC):
De høje frekvenser blev lidt rødere, men forskellen kan ikke høres.
På grund af den faste fordeling af kvantiseringsbits kan codec'en ikke "overføre bits" til de frekvenser, der har mest brug for dem. I modsætning til SBC vil aptX ikke "klippe" frekvenser, men vil tilføje kvantiseringsstøj og dermed reducere det dynamiske område af lyden.
Man skal ikke antage, at brugen af for eksempel 2 bits for båndet reducerer det dynamiske område til 12 dB: ADPCM tillader at bruge op til 96 dB dynamisk område, selv ved brug af 2 bits kvantisering, men kun ved en bestemt signal.
ADPCM gemmer forskellen mellem den nuværende og den næste prøve i stedet for at optage den absolutte værdi, som i PCM. Dette gør det muligt at reducere kravene til antallet af bits, der er nødvendige for at gemme de samme (tabfri) eller næsten de samme (med forholdsvis lille rundingsfejl) oplysninger. For at reducere rundingsfejl anvendes koefficienttabeller.
Ved oprettelsen af codec'en beregnede forfatterne ADPCM-koefficienterne baseret på en samling af musikfiler. Jo tættere lydsignalet er på det sæt musik, som tabellerne er bygget på, jo færre kvantiseringsfejl (støj) skaber aptX.
På grund af dette vil syntetiske tests altid give et resultat, der er værre end musik. Jeg lavede et specielt syntetisk eksempel, hvor aptX viser dårlige resultater — en sinuskurve med en frekvens på 12,4 kHz (øverst — originalsignalet, nederst — aptX. Lyden er i FLAC. Skru ned for lyden!):
Spektrumgraf:

Støjen er tydeligt hørbar.
Men hvis man genererer en sinuskurve med mindre amplitude, så den er lavere, vil støjen også blive lavere, hvilket indikerer et bredt dynamisk område:

For at høre forskellen mellem originalmusiknummeret og det komprimerede kan man invertere det ene signal og lægge numrene sammen kanal for kanal. Denne tilgang er generelt set ukorrekt og ville ikke give et meningsfuldt resultat med mere komplekse codecs, men i tilfælde af ADPCM er den helt passende.
Den gennemsnitlige kvadratiske forskel mellem signalerne ligger på niveauet -37,4 dB, hvilket ikke er meget for sådan komprimeret musik.
aptX HD
aptX HD er ikke en selvstændig codec — det er en forbedret kodningsprofil af aptX codec. Ændringerne omhandler antallet af bits tildelt til kodning af frekvensområder: 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 (tal for 44.1 kHz).
Codec
Samplingfrekvens
Bitdybde
Bitrate
Understøttelse af kodning
Understøttelse af dekodning
aptX HD
16, 32, 44.1, 48 kHz
24 bits
192 / 384 / 529 / 576 kbit/s (afhængigt af samplingsfrekvensen)
Android 8+*
Nogle audio enheder (hardware)
* Versioner op til 7 kræver modificering af Bluetooth-stakken. Codec'en understøttes kun, hvis producenten af Android-enheden har licenseret brugen af codec'en fra Qualcomm (hvis OS'et har kodningsbiblioteker).
Mindre udbredt end aptX: tilsyneladende kræver det separat licensering fra Qualcomm og konsoliderede royaltybetalinger.
Lad os gentage eksemplet med en sinusoid ved 12.4 kHz:

Meget bedre end med aptX, men stadig støjende.
aptX Low Latency
Codec fra Qualcomm, der ikke har noget til fælles med de standardmæssige aptX og aptX HD, ifølge den sparsomme information fra folk involveret i dets udvikling. Designet til interaktiv lydoverførsel med lav forsinkelse (film, spil), hvor lydens forsinkelse ikke kan justeres softwaremæssigt. Kendte softwareimplementeringer af encoder og decoder eksisterer ikke, det understøttes udelukkende af transmittere, modtagere, hovedtelefoner og højttalere, men ikke smartphones og computere.
Samplingfrekvens
Bitrate
Understøttelse af kodning
Understøttelse af dekodning
44,1 kHz
276/420 kbit/s
Nogle transmittere (hardware)
Nogle audio enheder (hardware)
AAC
AAC, eller Advanced Audio Coding — en beregningsmæssigt kompleks codec med en seriøs psykoakustisk model. Har opnået stor udbredelse for lyd på internettet, det næstmest populære efter MP3. Kræver licensering og royaltybetalinger: $15000 engangsbeløb (eller $1000 for selskaber med færre end 15 ansatte) + $0.98 for de første 500000 enheder ().
Codec er standardiseret inden for rammerne af MPEG-2 og MPEG-4 specifikationer, og på trods af hyppige misforståelser, tilhører det ikke Apple.
Samplingfrekvens
Bitrate
Understøttelse af kodning
Understøttelse af dekodning
8 — 96 kHz
8 — 576 kbit/s (for stereo), 256 — 320 kbit/s (typisk for Bluetooth)
macOS, Android 7+*, iOS
Et bredt udvalg af audio-enheder (hardware)
* kun på enheder, hvis producenter har betalt royaltybetalinger
I iOS og macOS bruges den bedste encoder fra Apple AAC, som nogensinde har været tilgængelig og som sikrer den bedst mulige lydkvalitet. I Android anvendes den næstbedste encoder, Fraunhofer FDK AAC, men der kan bruges forskellige hardware, der er indbygget i platformen (SoC), med ukendt kodningskvalitet. , varierer kvaliteten af AAC-kodning mellem forskellige Android-telefoner stærkt:
De fleste trådløse lydapparater til AAC har en maksimal bitrate på 320 kbps, mens nogle kun understøtter 256 kbps. De øvrige bitrates ses sjældent.
AAC giver fremragende lydkvalitet ved bitrates på 320 og 256 kbps, men er udsat for , men det er svært at høre nogen forskelle fra originalen på iOS ved 256 kbps, selv efter flere sekventielle kodninger; ved en enkelt kodning, fx MP3 320 kbps til AAC 256 kbps, kan tabene ignoreres.
Som med andre Bluetooth-codecs bliver al musik først dekodet og derefter kodet af codec'en. Når man lytter til musik i AAC-format, dekodes den først af operativsystemet og kodet til AAC endnu en gang for at blive sendt via Bluetooth. Dette er nødvendigt for at mikse flere lydstrømme, fx musik og notifikationer om nye beskeder. iOS er ingen undtagelse. Der findes mange påstande online om, at musik i AAC-format ikke transkodes ved transmission via Bluetooth på iOS, hvilket er forkert.
MP1/2/3
Codec'er i MPEG-1/2 Part 3-familien består af det velkendte og udbredte MP3, det mindre udbredte MP2 (som hovedsageligt bruges i digital tv og radio), og den helt ukendte MP1.
De gamle codecs MP1 og MP2 understøttes overhovedet ikke: jeg kunne ikke finde nogen hovedtelefoner eller nogen Bluetooth-stak, der kodede eller dekodede dem.
Dekodning af MP3 understøttes af nogle hovedtelefoner, men kodning understøttes ikke i nogen stak af moderne operativsystemer. Det ser ud til, at den tredjeparts stak BlueSoleil til Windows kan kode til MP3, hvis man manuelt ændrer konfigurationsfilen, men installationen fører til BSoD på Windows 10. Konklusionen er, at codec'en faktisk ikke kan bruges til Bluetooth-lyd.
Tidligere, i årene 2006-2008, før standarden A2DP blev udbredt i enheder, lyttede folk til MP3-musik på Nokia BH-501 headset gennem MSI BluePlayer-appen, som var tilgængelig på Symbian og Windows Mobile. På det tidspunkt tillod smartphone-operativsystemets arkitektur adgang til mange low-level funktioner, og på Windows Mobile kunne man endda installere tredjeparts Bluetooth-stakke.
Det sidste patent på codec'en MP3 udløb, og brugen af codec'en kræver ikke licensbetalinger siden 23. april 2017.
Hvis den længstvarende patent nævnt i de førnævnte referencer tages som mål, blev MP3-teknologien patentsfri i USA den 16. april 2017, da US Patent 6,009,399, der ejes og administreres af Technicolor, udløb.
Kilde:
Samplingfrekvens
Bitrate
Understøttelse af kodning
Understøttelse af dekodning
16 — 48 kHz
8 — 320 kbps
Støttes ikke nogen steder
Nogle audio enheder (hardware)
LDAC
Den nye, aktivt promoverede «Hi-Res»-codec fra Sony, som understøtter samplefrekvenser op til 96 kHz og 24-bit opløsning, med en bitrate på op til 990 kbps. Reklameret som en audiophil codec, der skal erstatte eksisterende Bluetooth-codecs. Har en funktion til adaptiv bitrate-justering, afhængigt af radioforholdene.
Encoder LDAC () er inkluderet som standard i Android, så kodning understøttes på enhver Android-smartphone fra version 8 af OS. Software-dekodere findes ikke frit tilgængeligt, codec-specifikationen er ikke tilgængelig for offentligheden, men ved første blik på encoderens indre struktur ligner codec'en — codec'en fra Sony, der anvendes i PlayStation 4 og Vita: begge arbejder i frekvensområdet, bruger modificeret diskret cosinus-transformation (MDCT) og komprimering ved hjælp af Huffman-algoritmen.
LDAC-support findes næsten udelukkende på hovedtelefoner fra Sony. Muligheden for at dekode LDAC findes nogle gange på hovedtelefoner og DAC'er fra andre producenter, men meget sjældent.
Samplingfrekvens
Bitrate
Understøttelse af kodning
Understøttelse af dekodning
44.1 — 96 kHz
303/606/909 kbps (for 44.1 og 88.2 kHz), 330/660/990 kbps (for 48 og 96 kHz)
Android 8+
Nogle Sony-hovedtelefoner og enkelte enheder fra andre producenter (hardwaremæssigt)
Marketing af LDAC som en Hi-Res codec skader dens tekniske komponent: det er tåbeligt at spilde bitrate på at transmittere frekvenser, der ikke kan høres af det menneskelige øre, og på højere opløsning, når der ikke er nok til at transmittere CD-kvalitet (44.1/16) uden tab. Heldigvis har codec'en to driftslæggere: transmission af CD-audio og transmission af Hi-Res-audio. I det første tilfælde transmitteres kun 44.1 kHz/16 bit trådløst.
Da der ikke findes en software-dekoder til LDAC frit tilgængeligt, er det umuligt at teste codec'en uden ekstra enheder, der dekoder LDAC. Ifølge testresultaterne af LDAC på en DAC med support, som ingeniørerne fra SoundGuys.com tilsluttede via digital udgang, og optog den genererede lyd på testsignal, giver LDAC 660 og 990 kbps i CD-kvalitet et signal/støj-forhold, der er lidt bedre end aptX HD.
Kilde:
LDAC understøtter også dynamisk bitrate uden for de fastsatte profiler — fra 138 kbps til 990 kbps, men så vidt jeg kan se, bruges der kun standardiserede profiler 303/606/909 og 330/660/990 kbps på Android.
Andre codec'er
Andre A2DP-codec'er har ikke opnået den samme popularitet. Deres understøttelse er enten næsten ikke-eksisterende eller kun tilgængelig på bestemte modeller af hovedtelefoner og smartphones.
Den standardiserede A2DP codec ATRAC er aldrig blevet brugt som Bluetooth-codec, selv ikke af Sony selv, mens Samsung HD, Samsung Scalable og Samsung UHQ-BT har meget begrænset understøttelse fra sender- og modtagerenheder, og HWA LHDC er for ny og understøttes kun af tre(?) enheder.
Understøttelse af codecs af lyd-enheder
Ikke alle producenter offentliggør præcise oplysninger om, hvilke codecs der understøttes af bestemte trådløse hovedtelefoner, højttalere, receivere eller transmittere. Nogle gange kan det være sådan, at understøttelsen af en bestemt codec kun eksisterer for afsendelse, men ikke for modtagelse (relevant for kombinerede transmitter-receivere), selvom producenten blot hævder „understøttelse“, uden kommentarer (jeg formoder, at det skyldes den adskilte licensering af encoder og decoder for nogle codecs). I de billigste enheder kan man slet ikke finde den påståede støtte for aptX.
Desværre vises den anvendte codec ikke noget sted i de fleste OS-grænseflader. Denne information findes kun på Android fra version 8 og macOS. Dog vil disse OS kun vise de codecs, som både telefon/computer og hovedtelefoner understøtter.
Hvordan kan man finde ud af, hvilke codecs enheden understøtter? Optag og analyser A2DP-forhandlingsdata!
Det kan gøres på Linux, macOS og Android. På Linux kan man bruge Wireshark eller hcidump, på macOS — Bluetooth Explorer, og på Android — den indbyggede funktion til at gemme Bluetooth HCI dump, som er tilgængelig i udviklerindstillingerne. Du vil få et dump i btsnoop-format, som kan uploades til Wireshark-analyzeren.
Vær opmærksom på: Et korrekt dump kan kun opnås ved at tilslutte en telefon/pc til hovedtelefonerne/højttaleren (uanset hvor mærkeligt det lyder)! Hovedtelefonerne kan selv etablere forbindelse til telefonen, og i så fald vil de anmode om en liste over codec'er fra telefonen, og ikke omvendt. For at sikre en korrekt dump, afbryd først parringen med enheden, og par derefter telefonen med hovedtelefonerne under dumpoptagelsen.
Brug følgende visningsfilter for at filtrere irrelevant trafik:
btavdtp.signal_idSom resultat skal du se noget lignende:
Du kan klikke på hvert punkt i GetCapabilities kommandoen og se detaljerede specifikationer for codec'en.
Wireshark kender ikke alle codec-id'er, så nogle codec'er skal dekodes manuelt ved at se i tabellen over id'er nedenfor:
Obligatorisk:
0x00 - SBC
Valgfri:
0x01 - MPEG-1,2 (aka MP3)
0x02 - MPEG-2,4 (aka AAC)
0x04 - ATRAC
Leverandørspecifik:
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 - CSR True Wireless Stereo v3 Codec-ID for AAC
0xFF 0x000A 0x0105 - CSR True Wireless Stereo v3 Codec-ID for MP3
0xFF 0x000A 0x0106 - CSR True Wireless Stereo v3 Codec-ID for aptXFor ikke at skulle analysere dumps manuelt, har jeg lavet en service, der analyserer alt automatisk:
Sammenligning af codec'er. Hvilken codec er bedst?
Hver codec har sine egne fordele og ulemper.
aptX og aptX HD bruger faste profiler, der ikke kan ændres uden modifikation af encoder og decoder. Værken producenten af telefonen eller producenten af hovedtelefonerne kan ændre bitrate eller kodningsforhold for aptX. Codec-ejeren, Qualcomm, udleverer en referenceencoder i form af et bibliotek. Disse fakta er en styrke ved aptX — du ved på forhånd, hvilken lydkvalitet du vil få, uden nogen 'men'.
SBC har derimod mange tilpassede indstillinger, dynamisk bitrate (encoder kan sænke bitpool-parametret, hvis radioens båndbredde er overloaded), og har ikke faste profiler, men kun anbefalede 'middel kvalitet' og 'høj kvalitet', som blev tilføjet i A2DP-specifikationen i 2003. 'Høj kvalitet' er allerede ikke så høj efter nutidige standarder, og de fleste Bluetooth-stacks tillader ikke at bruge indstillinger, der er bedre end 'høj kvalitet', selvom der ikke er tekniske begrænsninger for dette.
Bluetooth SIG har ikke en reference SBC-encoder som et bibliotek, og producenter implementerer det selv.
Dette er SBC's svagheder – det er aldrig klart på forhånd, hvilken lydkvalitet man kan forvente fra en bestemt enhed. SBC kan levere både lav og meget høj lydkvalitet, men den sidste er ikke opnåelig uden at slukke for eller omgå de kunstige begrænsninger i Bluetooth-stacks.
Situationen med AAC er tvetydig: på den ene side bør codec-teoretisk set levere kvalitet, der ikke kan skelnes fra originalen, men i praksis, ifølge tests fra SoundGuys-laboratoriet på forskellige Android-enheder, bekræftes dette ikke. Sandsynligvis ligger skylden hos de lavkvalitets hardware-audioencodere, der er indbygget i forskellige chip-sæt i telefoner. Det giver mening at bruge AAC kun på Apple-enheder, mens man på Android bør nøjes med aptX og LDAC.
Hardware, der understøtter alternative codecs, er som regel af højere kvalitet, simpelthen fordi det ikke giver mening at betale licensafgifter for at bruge disse codecs på meget billige lavkvalitets-enheder. Ifølge mine tests lyder SBC meget godt på kvalitetsudstyr.
Jeg lavede en webservice til at kode audio i SBC, aptX og aptX HD i realtid, direkte i browseren. Med den kan du teste disse audio-codecs uden faktisk at transmittere audio via Bluetooth, på enhver kablet hovedtelefon, højttaler og din yndlingsmusik, samt ændre kodningsparametrene lige under afspilningen af audio:
Tjenesten bruger SBC-kodningsbibliotekerne fra BlueZ-projektet og libopenaptx fra ffmpeg, som er kompileret til WebAssembly og JavaScript fra C, gennem emscripten, for at kunne køre i browseren. Hvem kunne have drømt om sådan en fremtid!
Sådan ser det ud:
Bemærk, hvordan støjniveauet ændres efter 20 kHz med forskellige codecs. I den originale MP3-fil er frekvenser over 20 kHz fraværende.
Prøv at skifte mellem codecs og vurdere, om du kan høre forskel mellem originalen, SBC 53 Joint Stereo (standard og den mest udbredte profil), og aptX/aptX HD.
Jeg hører forskel mellem codec'erne i hovedtelefonerne.!
Folk, der ikke hører forskel mellem codec'erne under test gennem webtjenester, er sikre på, at de kan høre det, når de lytter til musik i trådløse hovedtelefoner. Desværre er det ikke en joke eller placebo-effekt: forskellen er faktisk hørbar, men den skyldes ikke forskellene mellem codec'erne..
Langt størstedelen af Bluetooth audio chipsæt, der anvendes i modtagende trådløse enheder, er udstyret med en digital signalprocessor (DSP), som implementerer en equalizer, kompressor, stereo-udvider og andre funktioner designet til at forbedre (eller ændre) lyden. Producenter af Bluetooth-udstyr kan tilpasse DSP'en for hver codec separat., og når der skiftes mellem codec'erne, vil lytterne have indtrykket af, at de hører forskellen mellem codec'erne, når de i virkeligheden lytter til forskellige DSP-indstillinger.
DSP lydbearbejdningspipeline Kalimba i chips fra CSR/Qualcomm

Aktivering af forskellige DSP-funktioner for hver codec og udgang separat.
Nogle enheder i premium-segmentet leveres med software, der muliggør tilpasning af DSP-parametre, men de fleste billigere hovedtelefoner har ikke denne mulighed, og brugere kan ikke deaktivere post-processing af lyden med almindelige midler.
Funktionelle egenskaber ved enhederne
Den moderne version af A2DP-standarden har funktionen "absolut lydstyrkeregulering". — styring af enhedens lydstyrke med særlige kommandoer fra AVRCP-protokollen, der justerer forstærkningen af udgangstrinnet i stedet for at reducere lydstrømmen softwaremæssigt. Hvis ændringen i lydstyrken på hovedtelefonerne ikke synkroniseres med lydstyrken på telefonen, betyder det, at dine hovedtelefoner eller telefon ikke understøtter denne funktion. I så fald er det fornuftigt at lytte til musik altid med maksimal lydstyrke på telefonen, mens den faktiske lydstyrke justeres med knapperne på hovedtelefonerne — på denne måde vil forholdet mellem signal og støj være bedre, og lydkvaliteten. skal være højere.
I virkeligheden er der triste situationer. På mine hovedtelefoner RealForce OverDrive D1 er der aktiveret en kraftig kompressor for SBC, og en stigning i lydstyrken medfører, at niveauet for svage lyde øges, mens lydstyrken for høje lyde forbliver den samme (signal komprimeres). På grund af dette skal jeg indstille lydstyrken på computeren til cirka halvdelen, i dette tilfælde er kompressionseffekten næsten ikke til stede.
Efter mine observationer understøtter alle hovedtelefoner med ekstra kodekker funktionen for absolut lydjustering, tilsyneladende er dette et af kravene for certificering af kodekker.
Nogle hovedtelefoner understøtter tilslutning af to enheder samtidigt. Dette gør det muligt at lytte til musik fra computeren og tage opkald fra telefonen. Dog skal det bemærkes, at i denne tilstand de alternative kodekker deaktiveres, og der anvendes kun SBC.
AVDTP 1.3 Delay Reporting-funktionen giver hovedtelefonerne mulighed for at rapportere forsinkelsen til det sendende apparat, hvorved lyd faktisk afspilles. Dette gør det muligt at justere synkroniseringen af lyd med video under afspilning af video: ved problemer med radiotransmission vil lyden ikke falde bagud i forhold til videoen, men i stedet vil videoen blive forsinket af videoafspilleren, indtil lyden og videoen igen synkroniseres.
Funktionen understøttes af mange hovedtelefoner, Android 9+ og Linux med PulseAudio 12.0+. Jeg kender ikke til understøttelse af funktionen på andre platforme.
To-vejs kommunikation via Bluetooth. Overførsel af stemme.
For voice transmission over Bluetooth, Synchronous Connection Oriented (SCO) is used — a synchronous transmission with pre-established connection agreement. This mode allows sound and voice to be transmitted strictly in order, with a symmetric send and receive speed, without waiting for transmission confirmation and packet retransmission. This reduces the overall audio transmission delay through the radio channel but imposes serious limitations on the amount of data transmitted per unit of time and negatively affects quality.
When this mode is used, both voice and audio are transmitted with the same quality.
Unfortunately, as of 2019, the quality of speech transmission over Bluetooth is still low, and it is unclear why Bluetooth SIG is not addressing this issue.
CVSD
The basic speech transmission codec CVSD was standardized in 2002 and is supported by all bidirectional communication devices over Bluetooth. It provides audio transmission with a sampling rate of 8 kHz, equivalent to the quality of regular wired telephony.
.
mSBC
The additional codec mSBC was standardized in 2009, and by 2010 chips using it for voice transmission had already appeared. mSBC is widely supported by various devices.
This is not a standalone codec, but the regular SBC from the A2DP standard, with a fixed encoding profile: 16 kHz, mono, bitpool 26.
.
Not exceptional, but much better than CVSD; however, it is still unpleasant to use for internet communication, especially when using headphones for gaming communication — game sound will also be transmitted with a sampling rate of 16 kHz.
FastStreamCSR decided to develop the idea of reusing SBC. To overcome the limitations of the SCO protocol and utilize higher bit rates, CSR took a different path — they incorporated support for bidirectional SBC audio into the one-way audio transmission standard A2DP, standardized encoding profiles, and called it "FastStream."
FastStream transmits stereo sound to the speakers at 44.1 or 48 kHz with a bit rate of 212 kbps, while audio from the microphone is transmitted in mono at 16 kHz, with a bit rate of 72 kbps (slightly better than mSBC). Such parameters are much better suited for communication in online games — game and interlocutor sounds will be of high quality.
(+ ).
Virksomheden har fundet på en interessant løsning, men fordi den er i strid med A2DP-standarden, er dens support kun tilgængelig i nogle af virksomhedens transmittere (som fungerer som USB-lydkort og ikke som Bluetooth-enheder), men den er ikke blevet understøttet i Bluetooth-stakkerne, selvom antallet af hovedtelefoner med støtte for FastStream ikke er så lille.
På nuværende tidspunkt er der kun support for FastStream i operativsystemet fra udvikleren Pali Rohár, som ikke er inkluderet i hovedgrenen af programmet.
aptX Low Latency
Til stor overraskelse understøtter aptX Low Latency også tovejsaudio, hvilket implementerer det samme princip som FastStream.
Denne funktion i codec'et kan ikke bruges noget sted — der er ikke nogen dekodningssupport for Low Latency i noget operativsystem eller i nogen kendte Bluetooth-stakke.
Bluetooth 5, Classic og Low Energy
Der er opstået stor forvirring omkring specifikationer og versioner af Bluetooth på grund af eksistensen af to inkompatible standarder under det samme mærke, som begge er bredt anvendt til forskellige formål.
Der er to forskellige, ikke-kompatible Bluetooth-protokoller: Bluetooth Classic og Bluetooth Low Energy (LE, også kendt som Bluetooth Smart). Der er også en tredje protokol, Bluetooth High Speed, men den er ikke udbredt og anvendes ikke i forbrugerenheder.
Fra og med Bluetooth 4.0 har ændringer i specifikationen primært været relateret til Bluetooth Low Energy, mens Classic-versionen kun har fået mindre forbedringer.
Listen over ændringer mellem Bluetooth 4.2 og Bluetooth 5:
9 ÆNDRINGER FRA V4.2 TIL 5.0
9.1 NYE FUNKTIONER
Flere nye funktioner præsenteres i Bluetooth Core Specification 5.0 Release. De vigtigste forbedringsområder er:
• Slot Availability Mask (SAM)
• 2 Msym/s PHY for LE
• LE Long Range
• High Duty Cycle Non-Connectable Advertising
• LE Advertising Extensions
• LE Channel Selection Algorithm #2
9.1.1 Funktioner tilføjet i CSA5 — Integreret i v5.0
• Højere outputeffekt
Kilde: (side 291)
Kun én ændring vedrørte Classic-versionen inden for specifikationen for Bluetooth 5: der blev tilføjet støtte til teknologien Slot Availability Mask (SAM), som skal forbedre opdelingen af radiospektret. Alle andre ændringer påvirker kun Bluetooth LE (og Higher Output Power også).
Alle lydelementer bruger kun Bluetooth Classic. Det er ikke muligt at tilslutte hovedtelefoner og højttalere via Bluetooth Low Energy: der findes ikke nogen standard for overførsel af audio ved hjælp af LE. A2DP-standarden, der bruges til overførsel af høj kvalitet audio, fungerer kun gennem Bluetooth Classic, og der findes ingen tilsvarende i LE.
Det giver ikke mening at købe lydudstyr med Bluetooth 5 kun på grund af den nye version af protokollen. Bluetooth 4.0/4.1/4.2 vil fungere præcist på samme måde i forbindelse med lydoverførsel.
Hvis annonceringen af nye høretelefoner nævner en fordoblet rækkevidde og lavere energiforbrug takket være Bluetooth 5, så ved du, at de enten ikke har styr på det, eller at de fører dig bag lyset. Det er ikke overraskende, for selv producenterne af Bluetooth-chip sætter ofte en fod forkert i deres annoncering af forskellene i den nye version af standarden, og nogle Bluetooth 5-chips understøtter kun den femte version for LE, mens de bruger 4.2 for Classic.
Lydforsinkelse
Størrelsen på lydforsinkelsen afhænger af mange faktorer: størrelsen på bufferen i lydstakken, i Bluetooth-stakken og i den trådløse enhed, der afspiller, samt codec'ens algoritmiske forsinkelse.
Forsinkelsen for Simple Codecs som SBC, aptX og aptX HD er meget lille og ligger på 3-6 ms, hvilket kan forsgaes, men komplekse codecs som AAC og LDAC kan give mærkbar forsinkelse. Den algoritmiske forsinkelse for AAC ved 44.1 kHz er 60 ms. LDAC er omkring 30 ms (ifølge grov analyse af kildekoden. Jeg kan tage fejl, men ikke meget.)
Den samlede forsinkelse afhænger stærkt af den afspillende enhed, dens chipset og buffer. Under test fik jeg en spredning fra 150 til 250 ms på forskellige enheder (med SBC codec). Hvis vi antager, at enheder med støtte for ekstra codecs som aptX, AAC, og LDAC bruger kvalitetskomponenter og lille bufferstørrelse, får vi følgende typiske forsinkelser:
SBC: 150-250 ms
aptX: 130-180 ms
AAC: 190-240 ms
LDAC: 160-210 ms
Jeg minder om: aptX Low Latency understøttes ikke i operativsystemerne, hvilket betyder, at mindre forsinkelse kun kan opnås ved en kombination af transmitter+modtager eller transmitter+øretelefoner/kolonne, og alle enheder skal understøtte denne codec.
Problemer med enheder, certifikationer og Bluetooth-logoer
Hvordan skelner man et kvalitets lydudstyr fra en billig kopi? Først og fremmest udseendet!
Billige kinesiske høretelefoner, højtalere og modtagere har:
- Ikke ordet "Bluetooth" på kassen og enheden, oftere bruges "Wireless" og "BT"
- Mangel på Bluetooth-logo
på kassen eller enheden - Ingen blinkende blå LED-lampe
Fraværet af disse elementer indikerer, at enheden ikke har gennemgået certificering, hvilket betyder, at den potentielt er af lav kvalitet og problematisk. For eksempel er hovedtelefonerne fra Bluedio ikke certificeret af Bluetooth og opfylder ikke fuldt ud A2DP-specifikationen. De ville ikke klare certificeringen.
Lad os se på nogle enheder og deres kasser:
Dette er alt sammen ukcertificerede enheder. I manualen kan der være et logo og navnet på Bluetooth-teknologien, men det vigtigste er, at de er på kassen og/eller selve enheden.
Hvis dine hovedtelefoner eller højttaler siger „Ze bluetooth dewise is connecteda successfulle“, siger det heller ikke noget om deres kvalitet:

Konklusion
Kan Bluetooth fuldstændig erstatte kablede hovedtelefoner og headset? Det kan det, men med lavere kvalitet i samtalemodus, øget forsinkelse i lydoverførslen, som kan irritere i spil, og mange proprietære codecs, der kræver licensafgifter og øger den endelige pris på både smartphones og hovedtelefoner.
Markedsføringen af alternative codecs er meget stærk: aptX og LDAC præsenteres som en længe ventet erstatning for den „forældede og dårlige“ SBC, som ikke er så dårlig, som man ofte mener.
Det viser sig, at de kunstige begrænsninger i Bluetooth-stacks på bitraten for SBC kan omgås, så SBC ikke vil give efter for aptX HD. Jeg tog initiativet og lavede en patch til LineageOS-firmware:
Mere information kan findes på siderne og .
Bonus: . Denne fil var tidligere offentligt tilgængelig på Bluetooth's hjemmeside, men er nu kun tilgængelig for dem, der er blevet medlemmer af Bluetooth SIG.
Kilde: habr.com

på kassen eller enheden