Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

På grund af masseproduktionen af ​​smartphones uden 3.5 mm lydstik, er trådløse Bluetooth-hovedtelefoner blevet den vigtigste måde for mange at lytte til musik og kommunikere i headset-tilstand.
Producenter af trådløse enheder skriver ikke altid detaljerede produktspecifikationer, og artikler om Bluetooth-lyd på internettet er modstridende, nogle gange forkerte, taler ikke om alle funktionerne og kopierer ofte den samme information, der ikke svarer til virkeligheden.
Lad os prøve at forstå protokollen, mulighederne for Bluetooth OS stakke, hovedtelefoner og højttalere, Bluetooth codecs til musik og tale, finde ud af, hvad der påvirker kvaliteten af ​​transmitteret lyd og latens, lære at indsamle og afkode information om understøttede codecs og andre enheder kapaciteter.

TL; DR:

  • SBC - normal codec
  • Hovedtelefonerne har deres egen equalizer og efterbehandling for hver codec separat
  • aptX er ikke så god som annonceret
  • LDAC markedsfører bullshit
  • Opkaldskvaliteten er stadig dårlig
  • Du kan indlejre C-lydkodere i din browser ved at kompilere dem i WebAssembly via emscripten, og de vil ikke bremse meget.

Musik via Bluetooth

Den funktionelle komponent af Bluetooth bestemmes af profiler - specifikationer af specifikke funktioner. Bluetooth musikstreaming bruger en højkvalitets A2DP ensrettet lydtransmissionsprofil. A2DP-standarden blev vedtaget i 2003 og har ikke ændret sig væsentligt siden da.
Inden for profilen er 1 obligatorisk codec med lav beregningskompleksitet SBC, skabt specifikt til Bluetooth, og 3 yderligere standardiserede. Det er også muligt at bruge udokumenterede codecs af din egen implementering.

Fra juni 2019 er vi i xkcd-tegneserien med 14 A2DP codecs:

  • SBC ← standardiseret i A2DP, understøttet af alle enheder
  • MPEG-1/2 Layer 1/2/3 ← standardiseret i A2DP: velkendt MP3, brugt i digitalt tv MP2, og ukendt MP1
  • MPEG-2/4 AAC ← standardiseret i A2DP
  • ATTRAC ← Gammelt codec fra Sony, standardiseret i A2DP
  • LDAC ← nyt codec fra Sony
  • aptX ← codec fra 1988
  • aptX-HD ← samme som aptX, kun med forskellige indkodningsmuligheder
  • aptX Lav ventetid ← helt anderledes codec, ingen softwareimplementering
  • aptX Adaptiv ← endnu et codec fra Qualcomm
  • FastStream ← pseudo-codec, tovejs SBC-modifikation
  • HWA LHDC ← nyt codec fra Huawei
  • Samsung HD ← understøttet af 2 enheder
  • Samsung skalerbar ← understøttet af 2 enheder
  • Samsung UHQ-BT ← understøttet af 3 enheder

Hvorfor har vi overhovedet brug for codecs, spørger du, når Bluetooth har EDR, som giver dig mulighed for at overføre data med hastigheder på 2 og 3 Mbit/s, og for ukomprimeret to-kanals 16-bit PCM er 1.4 Mbit/s nok?

Dataoverførsel via Bluetooth

Der er to typer dataoverførsel i Bluetooth: Asynchronous Connection Less (ACL) til asynkron overførsel uden oprettelse af forbindelse og Synchronous Connection Oriented (SCO) til synkron overførsel med foreløbig forbindelsesforhandling.
Transmission udføres ved hjælp af et tidsdelingsskema og valg af en transmissionskanal for hver pakke separat (Frequency-Hop/Time-Division-Duplex, FH/TDD), for hvilken tid er opdelt i 625 mikrosekunders intervaller kaldet slots. En af enhederne sender i slots med lige numre, den anden i åbninger med ulige numre. Den transmitterede pakke kan optage 1, 3 eller 5 slots, afhængigt af størrelsen af ​​dataene og den indstillede transmissionstype, i dette tilfælde udføres transmission af en enhed i lige og ulige slots indtil slutningen af ​​transmissionen. I alt kan der modtages og sendes op til 1600 pakker i sekundet, hvis hver af dem optager 1 slot, og begge enheder sender og modtager noget uden at stoppe.

2 og 3 Mbit/s for EDR, som kan findes i meddelelser og på Bluetooth-webstedet, er den maksimale kanaloverførselshastighed for alle data i alt (inklusive tekniske overskrifter for alle protokoller, hvori data skal indkapsles), i to retninger samtidigt. Den faktiske dataoverførselshastighed vil variere meget.

Til at overføre musik bruges en asynkron metode, næsten altid ved hjælp af pakker som 2-DH5 og 3-DH5, som bærer en maksimal mængde data i EDR-tilstand på henholdsvis 2 Mbit/s og 3 Mbit/s og optager 5 tid -deling af slots.

Skematisk repræsentation af transmission ved hjælp af 5 slots af én enhed og 1 slot af en anden (DH5/DH1):
Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

På grund af princippet om tidsdeling af luftbølgerne er vi tvunget til at vente en 625 mikrosekunders tidsslot efter at have transmitteret en pakke, hvis den anden enhed ikke sender noget til os eller sender en lille pakke, og mere tid, hvis den anden enhed sender i store pakker. Hvis mere end én enhed er tilsluttet telefonen (f.eks. hovedtelefoner, ure og et fitnessarmbånd), så deles overførselstiden mellem dem alle.

Behovet for at indkapsle lyd i specielle transportprotokoller L2CAP og AVDTP tager 16 bytes fra den mulige maksimale mængde transmitteret lydnyttelast.

Pakketype
Antal slots
Maks. antal bytes i pakken
Maks. antal bytes af A2DP nyttelast
Maks. A2DP nyttelast bitrate

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 og 1429 kbps er bestemt ikke nok til at transmittere ukomprimeret lyd under virkelige forhold, med det støjende 2.4 GHz-område og behovet for at transmittere servicedata. EDR 3 Mbit/s er krævende for transmissionseffekt og støj i luften, så selv i 3-DH5-tilstand er komfortabel PCM-transmission umulig, der vil altid være kortvarige afbrydelser, og alt vil kun fungere i en afstand af en et par meter.
I praksis er selv en 990 kbit/s lydstream (LDAC 990 kbit/s) svær at transmittere.

Lad os vende tilbage til codecs.

SBC

Codec påkrævet for alle enheder, der understøtter A2DP-standarden. Det bedste og det værste codec på samme tid.

Prøvehastighed
Lidt dybde
Bitrate
Understøttelse af kodning
Afkodningsstøtte

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

SBC er et simpelt og beregningsmæssigt hurtigt codec med en primitiv psykoakustisk model (kun maskering af stille lyde anvendes), ved hjælp af adaptiv pulskodemodulation (APCM).
A2DP-specifikationen anbefaler to profiler til brug: Mellemkvalitet og høj kvalitet.
Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

Codec'et har mange indstillinger, der giver dig mulighed for at styre den algoritmiske forsinkelse, antallet af samples i en blok, bitfordelingsalgoritmen, men næsten overalt bruges de samme parametre, der anbefales i specifikationen: Joint Stereo, 8 frekvensbånd, 16 blokke i en lydramme, Loudness bit distributionsmetode.
SBC understøtter dynamisk ændring af Bitpool-parameteren, som direkte påvirker bithastigheden. Hvis luftbølgerne er tilstoppede, pakker går tabt, eller enheder er placeret på store afstande, kan lydkilden reducere Bitpool, indtil kommunikationen vender tilbage til normal.

De fleste hovedtelefonproducenter sætter den maksimale Bitpool-værdi til 53, hvilket begrænser bithastigheden til 328 kilobits i sekundet, når du bruger den anbefalede profil.
Selvom hovedtelefonproducenten har indstillet den maksimale Bitpool-værdi over 53 (sådanne modeller findes f.eks.: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, som også findes på nogle modtagere og bilhovedenheder), så vil de fleste OS ikke tillade brugen af ​​øgede bithastigheder på grund af indstillet intern værdigrænse i Bluetooth-stakke.
Derudover indstiller nogle producenter den maksimale Bitpool-værdi til lav for nogle enheder. For Bluedio T er det for eksempel 39, for Samsung Gear IconX er det 37, hvilket giver dårlig lydkvalitet.

Kunstige begrænsninger fra udviklere af Bluetooth-stakke opstod højst sandsynligt på grund af inkompatibiliteten af ​​nogle enheder med store Bitpool-værdier eller atypiske profiler, selvom de rapporterede støtte til dem, og utilstrækkelig test under certificering. Det var nemmere for forfatterne af Bluetooth-stakke at begrænse sig til at blive enige om den anbefalede profil i stedet for at oprette databaser med forkerte enheder (selvom de nu gør dette for andre forkert fungerende funktioner).

SBC allokerer kvantiseringsbits dynamisk til frekvensbånd på lav-til-høj basis med forskellige vægte. Hvis al bithastigheden blev brugt til de lave og mellemste frekvenser, vil de høje frekvenser blive "afskåret" (der vil være stilhed i stedet).

Eksempel SBC 328 kbps. Øverst er originalen, nederst er SBC, der med jævne mellemrum skifter mellem spor. Lyden i videofilen bruger FLAC-tabsfri komprimeringscodec. Brug af FLAC i en mp4-beholder er ikke officielt standardiseret, så det er ikke garanteret, at din browser vil afspille det, men det burde fungere i de nyeste versioner af desktop Chrome og Firefox. Hvis du ikke har lyd, kan du downloade filen og åbne den i en fuldgyldig videoafspiller.
ZZ Top - Skarpt klædt mand

Spektrogrammet viser tidspunktet for omskiftning: SBC afbryder periodisk stille lyde over 17.5 kHz og allokerer slet ingen bits til båndet over 20 kHz. Det fulde spektrogram er tilgængeligt ved at klikke (1.7 MB).
Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

Jeg hører ingen forskel mellem originalen og SBC på dette nummer.

Lad os tage noget nyere og simulere den lyd, der ville blive opnået ved hjælp af Samsung Gear IconX-hovedtelefoner med Bitpool 37 (ovenfor - det originale signal, nedenfor - SBC 239 kbps, lyd i FLAC).
Sindløs selvforkælelse - vidne

Jeg hører knitren, mindre stereoeffekt og en ubehagelig "klumpende" lyd i vokalens høje frekvenser.

Selvom SBC er en meget fleksibel codec, kan den konfigureres til lav latency, giver fremragende lydkvalitet ved høje bithastigheder (452+ kbps) og er ganske god for de fleste mennesker ved standard høj kvalitet (328 kbps), på grund af det faktum, at A2DP-standarden specificerer ikke faste profiler (men giver kun anbefalinger), stakudviklere har sat kunstige begrænsninger på Bitpool, parametrene for den transmitterede lyd vises ikke i brugergrænsefladen, og hovedtelefonproducenterne kan frit indstille deres egne indstillinger og aldrig angive Bitpool-værdien i produktets tekniske specifikationer, blev codec berømt for sin lave lydkvalitet, selvom dette ikke er et problem med codec'et som sådan.
Bitpool-parameteren påvirker kun bithastigheden direkte inden for én profil. Den samme Bitpool 53-værdi kan give både en bitrate på 328 kbps med den anbefalede højkvalitetsprofil, og 1212 kbps med Dual Channel og 4 frekvensbånd, hvorfor OS-forfatterne, udover begrænsninger på Bitpool, sætter en grænse og på Bitrate. Som jeg ser det, opstod denne situation på grund af en fejl i A2DP-standarden: det var nødvendigt at forhandle bithastigheden, ikke Bitpool.

Tabel over understøttelse af SBC-funktioner i forskellige operativsystemer:

operativsystem
Understøttede samplingsfrekvenser
Grænse max. Bitpool
Grænse max. Bitrate
Typisk bitrate
Bitpool dynamisk justering

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

Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (for indgående forbindelser), 53 (for udgående forbindelser)
Ingen grænse
328 kbps
✓*

MacOS High Sierra
44.1 кГц
64, standard 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 кГц
53
Ingen grænse
328 kbps

* Bitpool falder kun, men stiger ikke automatisk, hvis overførselsforholdene forbedres. For at gendanne Bitpool skal du stoppe afspilningen, vente et par sekunder og starte lyden igen.
** Standardværdien afhænger af de stakindstillinger, der er angivet ved kompilering af firmwaren. I Android 8/8.1 er frekvensen kun enten 44.1 kHz eller 48 kHz, afhængig af indstillingerne under kompilering, i andre versioner understøttes 44.1 kHz og 48 kHz samtidigt.
*** Bitpool-værdien kan øges i Bluetooth Explorer-programmet.

aptX og aptX HD

aptX er et simpelt og beregningsmæssigt hurtigt codec uden psykoakustik, der bruger adaptiv differentiel pulskodemodulation (ADPCM). Dukkede op omkring 1988 (indleveringsdato patent dateret februar 1988), før Bluetooth, blev det primært brugt i professionelt trådløst lydudstyr. I øjeblikket ejet af Qualcomm, kræver licens og royalties. Fra 2014: $6000 engangs og ≈$1 pr. enhed, for batches på op til 10000 enheder (kilde, s. 16).
aptX og aptX HD er det samme codec med forskellige kodningsprofiler.

Codec'et har kun én parameter - valg af samplingsfrekvens. Der er dog et valg af antal/tilstand af kanaler, men i alle enheder jeg kender (70+ stykker) understøttes kun Stereo.

Codec
Prøvehastighed
Lidt dybde
Bitrate
Understøttelse af kodning
Afkodningsstøtte

aptX
16, 32, 44.1, 48 kHz
16 bit
128 / 256 / 352 / 384 kbps (afhængig af samplinghastighed)
Windows 10 (desktop og mobil), macOS, Android 4.4+/7*, Blackberry OS 10
Bredt udvalg af lydenheder (hardware)

* Versioner op til 7 kræver modifikation af Bluetooth-stakken. Codec'et understøttes kun, hvis Android-enhedsproducenten har licenseret codec'et fra Qualcomm (hvis operativsystemet har kodningsbiblioteker).

aptX opdeler lyd i 4 frekvensbånd og kvantiserer dem konstant med det samme antal bits: 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 ( tal for samplinghastighed 44.1 kHz).

Eksempel på aptX-lyd (øverst - det originale signal, nederst - aptX, spektrogrammer af kun de venstre kanaler, lyd i FLAC):

Højderne blev lidt rødere, men man kunne ikke høre forskel.

På grund af den faste fordeling af kvantiseringsbit kan codec ikke "skifte bits" til de frekvenser, der har mest brug for dem. I modsætning til SBC vil aptX ikke "klippe" frekvenser, men tilføje kvantiseringsstøj til dem, hvilket reducerer lydens dynamiske område.

Det skal ikke antages, at brug af f.eks. 2 bit pr. bånd reducerer det dynamiske område til 12 dB: ADPCM tillader op til 96 dB dynamisk område, selv når der bruges 2 kvantiseringsbit, men kun for et bestemt signal.
ADPCM gemmer den numeriske forskel mellem den aktuelle prøve og den næste prøve i stedet for at gemme den absolutte værdi som i PCM. Dette giver dig mulighed for at reducere kravene til antallet af bits, der er nødvendige for at gemme den samme (uden tab) eller næsten den samme (med en relativt lille afrundingsfejl) information. For at reducere afrundingsfejl anvendes koefficienttabeller.
Ved oprettelsen af ​​codec'et beregnede forfatterne ADPCM-koefficienter på et sæt musiklydfiler. Jo tættere lydsignalet er på det musiksæt, som bordene blev bygget på, jo færre kvantiseringsfejl (støj) skaber aptX.

På grund af dette vil syntetiske test altid give dårligere resultater end musik. Jeg lavede et specielt syntetisk eksempel, hvor aptX viser dårlige resultater - en sinusbølge med en frekvens på 12.4 kHz (over - det originale signal, nedenfor - aptX. Lyd i FLAC. Sænk lydstyrken!):

Spektrum graf:
Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

Lyde er tydeligt hørbare.

Men hvis du genererer en sinusbølge med en mindre amplitude, så den er mere stille, vil støjen også blive mere stille, hvilket indikerer et bredt dynamisk område:

Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

For at høre forskellen mellem det originale musikspor og det komprimerede, kan du invertere et af signalerne og tilføje sporene kanal for kanal. Denne tilgang er generelt ukorrekt og vil ikke give fornuftige resultater med mere komplekse codecs, men specifikt til ADPCM er den ganske velegnet.
Forskellen mellem original og aptX
Den gennemsnitlige kvadratiske forskel på signalerne er på niveauet -37.4 dB, hvilket ikke er meget for sådan komprimeret musik.

aptX-HD

aptX HD er ikke et selvstændigt codec - det er en forbedret kodningsprofil af aptX codec. Ændringerne påvirkede antallet af bits tildelt til kodningsfrekvensområ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 (cifre for 44.1 kHz) .

Codec
Prøvehastighed
Lidt dybde
Bitrate
Understøttelse af kodning
Afkodningsstøtte

aptX-HD
16, 32, 44.1, 48 kHz
24 bit
192 / 384 / 529 / 576 kbps (afhængig af samplinghastighed)
Android 8+*
Nogle lydenheder (hardware)

* Versioner op til 7 kræver modifikation af Bluetooth-stakken. Codec'et understøttes kun, hvis Android-enhedsproducenten har licenseret codec'et fra Qualcomm (hvis operativsystemet har kodningsbiblioteker).

Mindre almindeligt end aptX: kræver tilsyneladende separat licens fra Qualcomm og separate licensgebyrer.

Lad os gentage eksemplet med en sinusbølge på 12.4 kHz:
Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

Meget bedre end aptX, men stadig en smule støjende.

aptX Lav ventetid

Et codec fra Qualcomm, der intet har til fælles med standard aptX og aptX HD, at dømme efter den begrænsede information fra folk, der er involveret i dets udvikling. Designet til interaktiv lydtransmission med lav latens (film, spil), hvor lydforsinkelsen ikke kan justeres af software. Der er ingen kendte softwareimplementeringer af indkodere og dekodere; de ​​understøttes udelukkende af sendere, modtagere, hovedtelefoner og højttalere, men ikke af smartphones og computere.

Prøvehastighed
Bitrate
Understøttelse af kodning
Afkodningsstøtte

44.1 кГц
276/420 kbps
Nogle sendere (hardware)
Nogle lydenheder (hardware)

AAC

AAC, eller Advanced Audio Coding, er et beregningsmæssigt kompleks codec med en seriøs psykoakustisk model. Udbredt til lyd på internettet, anden i popularitet efter MP3. Kræver licenser og royalties: $15000 engangs (eller $1000 for virksomheder med mindre end 15 ansatte) + $0.98 for de første 500000 enheder (kilde).
Codec'et er standardiseret inden for MPEG-2- og MPEG-4-specifikationerne, og i modsætning til almindelig misforståelse tilhører det ikke Apple.

Prøvehastighed
Bitrate
Understøttelse af kodning
Afkodningsstøtte

8 - 96 kHz
8 - 576 kbps (til stereo), 256 - 320 kbps (typisk for Bluetooth)
macOS, Android 7+*, iOS
Bredt udvalg af lydenheder (hardware)

* kun på enheder, hvis producenter har betalt licensafgifter

iOS og macOS bruger Apples nuværende bedste AAC-encoder til at levere den højest mulige lydkvalitet. Android bruger den næsthøjeste kvalitet Fraunhofer FDK AAC encoder, men kan bruge forskellig hardware indbygget i platformen (SoC) med ukendt kodningskvalitet. Ifølge de seneste tests på SoundGuys hjemmeside, AAC-kodningskvaliteten på forskellige Android-telefoner varierer meget:
Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

De fleste trådløse lydenheder har en maksimal bitrate på 320 kbps for AAC, nogle understøtter kun 256 kbps. Andre bithastigheder er ekstremt sjældne.
AAC giver fremragende kvalitet ved 320 og 256 kbps bithastigheder, men er underlagt tab af sekventiel kodning af allerede komprimeret indhold, dog er det svært at høre nogen forskelle med originalen på iOS ved en bitrate på 256 kbps, selv med flere sekventielle kodninger; med enkelt kodning, for eksempel MP3 320 kbps til AAC 256 kbps, kan tab ignoreres.
Som med andre Bluetooth-codecs bliver enhver musik først afkodet og derefter kodet af codec'et. Når du lytter til musik i AAC-format, bliver den først afkodet af operativsystemet, derefter kodet til AAC igen til transmission via Bluetooth. Dette er nødvendigt for at blande flere lydstreams, såsom musik og nye beskeder. iOS er ingen undtagelse. På internettet kan du finde mange udsagn om, at på iOS bliver musik i AAC-format ikke omkodet, når det transmitteres via Bluetooth, hvilket ikke er sandt.

MP1/2/3

Codecs i MPEG-1/2 Part 3-familien består af den velkendte og meget brugte MP3, den mindre almindelige MP2 (bruges hovedsageligt i digitalt TV og radio), og den helt ukendte MP1.

De gamle MP1- og MP2-codecs understøttes slet ikke: Jeg kunne ikke finde nogen hovedtelefoner eller Bluetooth-stak, der kunne kode eller afkode dem.
MP3-afkodning understøttes af nogle hovedtelefoner, men kodning understøttes ikke på nogen moderne operativsystemstak. Det ser ud til, at tredjeparts BlueSoleil-stakken til Windows kan kode til MP3, hvis du manuelt ændrer konfigurationsfilen, men for mig fører installationen til BSoD på Windows 10. Konklusion - codec'et kan faktisk ikke bruges til Bluetooth-lyd.
Tidligere, i 2006-2008, før udbredelsen af ​​A2DP-standarden i enheder, lyttede folk til MP3-musik på Nokia BH-501 headsettet gennem programmet MSI BluePlayer, som var tilgængeligt på Symbian og Windows Mobile. På det tidspunkt tillod OS-arkitekturen på smartphones adgang til mange funktioner på lavt niveau, og på Windows Mobile var det endda muligt at installere tredjeparts Bluetooth-stakke.

Det sidste patent på MP3-codec'et er udløbet, brugen af ​​codec'et kræver ikke licensgebyrer siden den 23. april 2017.

Hvis det længstvarende patent, der er nævnt i de førnævnte referencer, tages som en foranstaltning, så blev MP3-teknologien patentfri i USA den 16. april 2017, da US Patent 6,009,399, ejet af og administreret af Technicolor, udløb.

Kilde: www.iis.fraunhofer.de/da/ff/amm/prod/audiocodec/audiocodecs/mp3.html

Prøvehastighed
Bitrate
Understøttelse af kodning
Afkodningsstøtte

16 - 48 kHz
8 - 320 kbps
Ikke understøttet nogen steder
Nogle lydenheder (hardware)

LDAC

Et nyt og aktivt promoveret "Hi-Res"-codec fra Sony, der understøtter samplinghastigheder på op til 96 kHz og 24-bit bitrate, med bithastigheder på op til 990 kbps. Det annonceres som et audiofilt codec, som en erstatning for eksisterende Bluetooth-codecs. Den har funktionen til adaptiv bitrate-justering, afhængigt af radioudsendelsesforholdene.

LDAC encoder (libldac) er inkluderet i standard Android-pakken, så kodning understøttes på enhver Android-smartphone, der starter med OS version 8. Der er ingen frit tilgængelige softwaredekodere, codec-specifikationen er ikke tilgængelig for offentligheden, men ved første øjekast på koderen ligner den interne struktur af codec ATRAC9 - Sonys codec brugt i PlayStation 4 og Vita: begge arbejder i frekvensdomænet, brug en modificeret diskret cosinustransformation (MDCT) og komprimering ved hjælp af Huffman-algoritmen.

LDAC-understøttelse leveres næsten udelukkende af høretelefoner fra Sony. Evnen til at afkode LDAC findes nogle gange på hovedtelefoner og DAC'er fra andre producenter, men meget sjældent.

Prøvehastighed
Bitrate
Understøttelse af kodning
Afkodningsstøtte

44.1 - 96 kHz
303/606/909 kbit/s (for 44.1 og 88.2 kHz), 330/660/990 kbit/s (for 48 og 96 kHz)
Android 8 +
Nogle Sony-hovedtelefoner og nogle enheder fra andre producenter (hardware)

Markedsføring af LDAC som et Hi-Res-codec skader dens tekniske komponent: det er dumt at bruge bitrate på at sende frekvenser, der er uhørbare for det menneskelige øre og øge bitdybden, mens det ikke er nok at transmittere CD-kvalitet (44.1/16) uden tab. . Heldigvis har codec'et to driftstilstande: CD-lydtransmission og Hi-Res-lydtransmission. I det første tilfælde transmitteres kun 44.1 kHz/16 bits over luften.

Da en software-LDAC-dekoder ikke er frit tilgængelig, er det umuligt at teste codec'et uden yderligere enheder, der afkoder LDAC. Ifølge resultaterne af LDAC-testen på en DAC med dens understøttelse, som SoundGuys.coms ingeniører tilsluttede via en digital udgang og optog outputlyden på testsignaler, giver LDAC 660 og 990 kbps i CD-kvalitetstilstand et signal-til- støjforhold lidt bedre end aptX HD.

Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder
Kilde: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026

LDAC understøtter også dynamiske bithastigheder uden for etablerede profiler - fra 138 kbps til 990 kbps, men så vidt jeg kan se, bruger Android kun de standardiserede profiler 303/606/909 og 330/660/990 kbps.

Andre codecs

Andre A2DP-codecs er ikke meget brugt. Deres støtte er enten næsten fuldstændig fraværende eller kun tilgængelig på visse modeller af hovedtelefoner og smartphones.
ATRAC-codec'et standardiseret i A2DP er aldrig blevet brugt som et Bluetooth-codec, selv af Sony selv, Samsung HD, Samsung Scalable og Samsung UHQ-BT-codecs har meget begrænset understøttelse fra sende- og modtageenheder, og HWA LHDC er for ny og understøttet kun tre (?) enheder.

Codec-understøttelse af lydenheder

Ikke alle producenter offentliggør nøjagtige oplysninger om de codecs, der understøttes af visse trådløse hovedtelefoner, højttalere, modtagere eller sendere. Nogle gange sker det, at understøttelse af et bestemt codec kun er til transmission, men ikke til modtagelse (relevant for kombinerede sendere-modtagere), selvom producenten blot erklærer "understøttelse", uden noter (jeg antager, at separat licensering af indkodere og dekodere af nogle codecs er skyld i dette). I de billigste enheder finder du muligvis slet ikke den erklærede aptX-understøttelse.

Desværre viser grænsefladerne på de fleste operativsystemer ikke det codec, der bruges nogen steder. Oplysninger om dette er kun tilgængelig i Android fra version 8 og macOS. Men selv i disse operativsystemer vil kun de codecs, der understøttes af både telefonen/computeren og hovedtelefonerne, blive vist.

Hvordan kan du finde ud af, hvilke codecs din enhed understøtter? Optag og analyser trafikdump med A2DP-forhandlingsparametre!
Dette kan gøres på Linux, macOS og Android. På Linux kan du bruge Wireshark eller hcidump, på macOS kan du bruge Bluetooth Explorer, og på Android kan du bruge standard Bluetooth HCI dump-lagringsfunktionen, som er tilgængelig i udviklerværktøjerne. Du modtager et dump i btsnoop-format, som kan indlæses i Wireshark-analysatoren.
Bemærk venligst: et korrekt dump kan kun opnås ved at forbinde fra din telefon/computer til hovedtelefoner/højttalere (uanset hvor sjovt det end lyder)! Hovedtelefonerne kan selvstændigt etablere en forbindelse med telefonen, i hvilket tilfælde de vil anmode om en liste over codecs fra telefonen, og ikke omvendt. For at sikre, at den korrekte dump optages, skal du først fjerne parringen af ​​enheden og derefter parre din telefon med hovedtelefonerne, mens du optager dumpen.

Brug følgende displayfilter til at bortfiltrere irrelevant trafik:

btavdtp.signal_id

Som et resultat bør du se noget lignende dette:
Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

Du kan klikke på hvert element i kommandoen GetCapabilities for at se de detaljerede karakteristika for codec'et.
Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

Wireshark kender ikke alle codec-identifikatorer, så nogle codecs skal dekrypteres manuelt ved at se på identifikationstabellen nedenfor:

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

For ikke at analysere dumps manuelt lavede jeg en tjeneste, der analyserer alt automatisk: btcodecs.valdikss.org.ru

Sammenligning af codecs. Hvilken codec er bedre?

Hvert codec har sine egne fordele og ulemper.
aptX og aptX HD bruger hårdkodede profiler, der ikke kan ændres uden at ændre koderen og dekoderen. Hverken telefonproducenten eller hovedtelefonproducenten kan ændre bitrate eller aptX-kodningsfaktorerne. Ejeren af ​​codec'et, Qualcomm, leverer en referencekoder i form af et bibliotek. Disse fakta er styrken ved aptX - du ved på forhånd hvilken lydkvalitet du får, uden nogen "men".

SBC har derimod mange konfigurerbare parametre, dynamisk bitrate (encoderen kan reducere bitpool-parameteren, hvis æteren er optaget), og har ikke hårdkodede profiler, kun den anbefalede "medium kvalitet" og "høj kvalitet", der var tilføjet til A2DP-specifikationen i 2003 år. "Høj kvalitet" er ikke længere så høj efter nutidens standarder, og de fleste Bluetooth-stacks tillader dig ikke at bruge parametre bedre end profilen "høj kvalitet", selvom der ikke er nogen tekniske begrænsninger for dette.
Bluetooth SIG har ikke en reference SBC encoder som et bibliotek, og producenterne implementerer det selv.
Det er svaghederne ved SBC - det er aldrig klart på forhånd, hvilken lydkvalitet man kan forvente af en bestemt enhed. SBC kan producere lyd i både lav og meget høj kvalitet, men sidstnævnte er uopnåeligt uden at deaktivere eller omgå de kunstige begrænsninger af Bluetooth-stacks.

Situationen med AAC er tvetydig: På den ene side burde codec'et teoretisk producere kvalitet, der ikke kan skelnes fra originalen, men i praksis, at dømme efter testene fra SoundGuys laboratoriet på forskellige Android-enheder, er dette ikke bekræftet. Mest sandsynligt ligger fejlen i hardware-lydkodere af lav kvalitet, der er indbygget i forskellige telefonchipsæt. Det giver mening kun at bruge AAC på Apple-enheder og på Android at begrænse det til aptX og LDAC.

Hardware, der understøtter alternative codecs, har en tendens til at være af højere kvalitet, simpelthen fordi det for meget billige enheder af lav kvalitet ikke giver mening at betale licensgebyrer for at bruge disse codecs. I mine test lyder SBC meget godt på kvalitetsudstyr.

Jeg lavede en webtjeneste, der koder lyd til SBC, aptX og aptX HD i realtid, lige i browseren. Med det kan du teste disse lyd-codecs uden faktisk at transmittere lyd via Bluetooth, på alle kablede hovedtelefoner, højttalere og din yndlingsmusik, og også ændre kodningsparametre direkte, mens du afspiller lyd:
btcodecs.valdikss.org.ru/sbc-encoder
Tjenesten bruger SBC-kodningsbibliotekerne fra BlueZ-projektet og libopenaptx fra ffmpeg, som er kompileret i WebAssembly og JavaScript fra C, via emscripten, til at køre i browseren. Hvem kunne drømme om sådan en fremtid!

Sådan ser det ud:

Bemærk, hvordan støjniveauet ændres efter 20 kHz for forskellige codecs. Den originale MP3-fil indeholder ikke frekvenser over 20 kHz.

Prøv at skifte codecs og se, om du hører forskellen mellem originalen, SBC 53 Joint Stereo (standarden og den mest almindelige profil) og aptX/aptX HD.

Jeg kan høre forskel på codecs i høretelefoner!

Folk, der ikke hører forskel på codecs under test via en webservice, hævder, at de hører det, når de lytter til musik på trådløse hovedtelefoner. Ak, dette er ikke en joke eller en placeboeffekt: forskellen er virkelig hørbar, men den er ikke forårsaget af forskelle codecs.

Langt de fleste Bluetooth-lydchipsæt, der bruges i trådløse modtageenheder, er udstyret med en Digital Signal Processor (DSP), som implementerer en equalizer, compander, stereoexpander og andre ting designet til at forbedre (eller ændre) lyden. Producenter af Bluetooth-udstyr kan konfigurere DSP for hver codec separat, og når der skiftes mellem codecs, vil lytteren tro, at de hører en forskel i betjeningen af ​​codecs, når de i virkeligheden lytter til forskellige DSP-indstillinger.

Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder
DSP Kalimba lydbehandlingspipeline i chips fremstillet af CSR/Qualcomm

Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder
Aktiver forskellige DSP-funktioner for hver codec og output separat

Nogle premium-enheder leveres med software, der giver dig mulighed for at tilpasse DSP-indstillinger, men de fleste billigere hovedtelefoner gør det ikke, og brugere kan ikke slukke for lydefterbehandling manuelt.

Funktionelle funktioner af enheder

Den moderne version af A2DP-standarden har "absolut lydstyrkekontrol" funktion — enhedslydstyrkekontrol ved hjælp af specielle kommandoer fra AVRCP-protokollen, som regulerer forstærkningen af ​​udgangstrinnet i stedet for programmæssigt at reducere lydstyrken på lydstrømmen. Hvis, når du ændrer lydstyrken på dine hovedtelefoner, ændringen ikke synkroniseres med lydstyrken på din telefon, så understøtter dine hovedtelefoner eller telefon ikke denne funktion. I dette tilfælde giver det mening altid at lytte til musik med maksimal lydstyrke på telefonen, justere den faktiske lydstyrke med hovedtelefonknapperne - i dette tilfælde vil signal-til-støj-forholdet være bedre og lydkvaliteten burde være ovenfor.
I virkeligheden er der triste situationer. På mine RealForce OverDrive D1-hovedtelefoner til SBC er en stærk compander tændt, og øgning af lydstyrken fører til en stigning i niveauet af stille lyde, mens lydstyrken af ​​høje lyde ikke ændres (signalet komprimeres). På grund af dette skal du indstille lydstyrken på computeren til cirka det halve, i hvilket tilfælde der praktisk talt ikke er nogen komprimeringseffekt.
Ifølge mine observationer understøtter alle hovedtelefoner med ekstra codecs den absolutte volumenkontrolfunktion, tilsyneladende er dette et af kravene til codec-certificering.

Nogle høretelefoner understøtter tilslutning af to enheder på samme tid. Dette giver dig for eksempel mulighed for at lytte til musik fra din computer og modtage opkald fra din telefon. Du skal dog være opmærksom på, at i denne tilstand er alternative codecs deaktiveret, og kun SBC bruges.

AVDTP 1.3 Forsinket rapporteringsfunktion gør det muligt for hovedtelefonerne at kommunikere forsinkelsen til den sendeenhed, hvor lyden faktisk afspilles. Dette giver dig mulighed for at justere synkroniseringen af ​​lyd med video, mens du ser videofiler: hvis der er problemer med radiotransmission, vil lyden ikke halte efter videoen, men tværtimod vil videoen blive bremset af videoafspilleren, indtil lyd og video synkroniseres igen.
Funktionen understøttes af mange hovedtelefoner, Android 9+ og Linux med PulseAudio 12.0+. Jeg er ikke bekendt med understøttelse af denne funktion på andre platforme.

Tovejskommunikation via Bluetooth. Stemmetransmission.

Til taletransmission i Bluetooth anvendes Synchronous Connection Oriented (SCO) - synkron transmission med foreløbig forhandling af forbindelsen. Tilstanden giver dig mulighed for at transmittere lyd og stemme strengt i rækkefølge, med symmetriske sende- og modtagehastigheder, uden at vente på bekræftelse af transmission og gensende pakker. Dette reducerer den samlede forsinkelse af lydtransmission over radiokanalen, men pålægger alvorlige begrænsninger for mængden af ​​data, der transmitteres pr. tidsenhed, og påvirker kvaliteten negativt.
Når denne tilstand bruges, transmitteres både stemme og lyd med samme kvalitet.
Desværre, fra 2019, er stemmekvaliteten over Bluetooth stadig dårlig, og det er uklart, hvorfor Bluetooth SIG ikke gør noget ved det.

CVSD

Det grundlæggende CVSD-talecodec blev standardiseret i 2002 og understøttes af alle tovejs Bluetooth-kommunikationsenheder. Det giver lydtransmission med en samplingfrekvens på 8 kHz, hvilket svarer til kvaliteten af ​​konventionel kablet telefoni.

Et eksempel på en optagelse i denne codec.

mSBC

Det ekstra mSBC-codec blev standardiseret i 2009, og i 2010 dukkede der allerede chips op, der brugte det til stemmetransmission. mSBC er bredt understøttet af forskellige enheder.
Dette er ikke et uafhængigt codec, men en almindelig SBC fra A2DP-standarden, med en fast kodningsprofil: 16 kHz, mono, bitpool 26.

Et eksempel på en optagelse i denne codec.

Ikke genialt, men meget bedre end CVSD, men det er stadig irriterende at bruge til online kommunikation, især når du bruger hovedtelefoner til at kommunikere i spillet – spillets lyd vil også blive transmitteret med en samplinghastighed på 16 kHz.

FastStreamCSR-firmaet besluttede at udvikle ideen om at bruge SBC. For at komme uden om SCO-protokollens begrænsninger og bruge højere bithastigheder gik CSR en anden vej – de introducerede understøttelse af tovejs SBC-lyd i A2DP-envejslydtransmissionsstandarden, standardiserede kodningsprofiler og kaldte det "FastStream".

FastStream sender stereolyd ved 44.1 eller 48 kHz med en bitrate på 212 kbps til højttalerne, og mono, 16 kHz, med en bitrate på 72 kbps bruges til at overføre lyd fra mikrofonen (lidt bedre end mSBC). Sådanne parametre er meget bedre egnede til kommunikation i onlinespil - lyden af ​​spillet og samtalepartnerne vil være af høj kvalitet.

Et eksempel på en optagelse i denne codec (+ lyd fra mikrofon, samme som mSBC).

Virksomheden kom med en interessant krykke, men på grund af det faktum, at den er i modstrid med A2DP-standarden, understøttes den kun i nogle af virksomhedens sendere (som fungerer som et USB-lydkort, ikke en Bluetooth-enhed), men det gør det ikke modtage understøttelse i Bluetooth-stakke, selvom antallet af hovedtelefoner med FastStream-understøttelse ikke er så lille.

I øjeblikket er FastStream-understøttelse i OS kun som en patch til Linux PulseAudio fra udvikleren Pali Rohár, som ikke er inkluderet i programmets hovedgren.

aptX Lav ventetid

Til din overraskelse understøtter aptX Low Latency også tovejslyd, der implementerer samme princip som FastStream.
Det er ikke muligt at bruge denne funktion i codec'et nogen steder - der er ingen understøttelse af Low Latency-dekodning i noget OS eller i nogen Bluetooth-stack, jeg kender.

Bluetooth 5, Classic og Low Energy

Der har været megen forvirring omkring Bluetooth-specifikationer og -versioner på grund af tilstedeværelsen af ​​to inkompatible standarder under samme mærke, som begge er meget brugt til forskellige formål.

Der er to forskellige, inkompatible 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 bruges ikke i husholdningsenheder.

Fra Bluetooth 4.0 vedrørte ændringer i specifikationen hovedsageligt Bluetooth Low Energy, og den klassiske version fik kun mindre forbedringer.

Liste over ændringer mellem Bluetooth 4.2 og Bluetooth 5:

9 ÆNDRINGER FRA v4.2 TIL 5.0

9.1 NYE FUNKTIONER

Adskillige nye funktioner introduceres i Bluetooth Core Specification 5.0-udgivelsen. De vigtigste forbedringsområder er:
• Slot Availability Mask (SAM)
• 2 Msym/s PHY for LE
•LE Lang rækkevidde
• Høj duty Cycle, ikke-tilslutningsbar reklame
• LE Advertising Extensions
• LE kanalvalgsalgoritme #2
9.1.1 Funktioner tilføjet i CSA5 - Integreret i v5.0
•Højere udgangseffekt

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

Kun én ændring påvirkede den klassiske version inden for rammerne af Bluetooth 5-specifikationen: de tilføjede understøttelse af Slot Availability Mask (SAM) teknologi, designet til at forbedre radioudsendelsesadskillelse. Alle andre ændringer påvirker kun Bluetooth LE (og også højere udgangseffekt).

Alle Lydenheder bruger kun Bluetooth Classic. Det er umuligt at forbinde hovedtelefoner og højttalere via Bluetooth Low Energy: Der er ingen standard for at overføre lyd ved hjælp af LE. A2DP-standarden, der bruges til at overføre lyd af høj kvalitet, fungerer kun via Bluetooth Classic, og der er ingen analog i LE.

Konklusion - at købe lydenheder med Bluetooth 5 kun på grund af den nye version af protokollen er meningsløst. Bluetooth 4.0/4.1/4.2 i forbindelse med lydtransmission vil fungere nøjagtigt det samme.
Hvis annonceringen af ​​nye hovedtelefoner nævner fordoblet rækkevidde og reduceret strømforbrug takket være Bluetooth 5, så skal du vide, at de enten ikke forstår det selv eller vildleder dig. Ikke så mærkeligt, for selv producenter af Bluetooth-chips i deres meddelelser er forvirrede over forskellene mellem den nye version af standarden, og nogle Bluetooth 5-chips understøtter kun den femte version til LE og bruger 4.2 til Classic.

Forsinkelse af lydtransmission

Mængden af ​​forsinkelse (lag) i lyd afhænger af mange faktorer: Størrelsen af ​​bufferen i lydstakken, i Bluetooth-stakken og i selve den trådløse afspilningsenhed og den algoritmiske forsinkelse af codec.

Latensen for simple codecs som SBC, aptX og aptX HD er meget lille, 3-6 ms, hvilket kan negligeres, men komplekse codecs som AAC og LDAC kan forårsage mærkbar forsinkelse. AAC algoritmiske latens for 44.1 kHz er 60 ms. LDAC - omkring 30 ms (baseret på en grov analyse af kildekoden. Jeg kan tage fejl, men ikke meget.)

Den resulterende latenstid afhænger i høj grad af afspilningsenheden, dens chipset og buffer. Under tests modtog jeg en spredning på 150 til 250 ms på forskellige enheder (med SBC codec). Hvis vi antager, at enheder, der understøtter yderligere codecs aptX, AAC og LDAC, bruger komponenter af høj kvalitet og en lille bufferstørrelse, får vi følgende typiske latenstider:

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

Lad mig minde dig om: aptX Low Latency er ikke understøttet i operativsystemer, hvorfor lavere latency kun kan opnås med en sender+modtager eller sender+hovedtelefoner/højttalerkombination, og alle enheder skal understøtte denne codec.

Problemer med Bluetooth-enhed, certificering og logo

Hvordan skelner man en lydenhed af høj kvalitet fra et billigt håndværk? Udseende først og fremmest!

For billige kinesiske hovedtelefoner, højttalere og modtagere:

  1. Ordet "Bluetooth" mangler på æsken og enheden, "Wireless" og "BT" bruges oftest
  2. Bluetooth-logo mangler Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder på boksen eller enheden
  3. Ingen blå blinkende LED

Fraværet af disse elementer indikerer, at enheden ikke er blevet certificeret, hvilket betyder, at den potentielt er af lav kvalitet og problematisk. For eksempel er Bluedio-hovedtelefoner ikke Bluetooth-certificerede og overholder ikke fuldt ud A2DP-specifikationen. De ville ikke have bestået certificering.

Lad os overveje flere enheder og kasser fra dem:
Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

Lyd via Bluetooth: maksimale detaljer om profiler, codecs og enheder

Disse er alle ucertificerede enheder. Vejledningen kan indeholde et logo og navnet på Bluetooth-teknologien, men det vigtigste er, at de står på æsken og/eller selve enheden.

Hvis dine hovedtelefoner eller højttaler siger "Ze bluetooth dewise er tilsluttet korrekt", indikerer dette heller ikke deres kvalitet:

Konklusion

Kan Bluetooth fuldstændigt erstatte kablede hovedtelefoner og headset? Det er kapabelt, men på bekostning af dårlig opkaldskvalitet, øget lydforsinkelse, der kan være irriterende i spil, og et væld af proprietære codecs, der kræver licensafgifter og øger de endelige omkostninger for 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 nær så slem, som folk tror, ​​den er.

Som det viste sig, kan de kunstige begrænsninger af Bluetooth-stacks på SBC-bithastigheden omgås, så SBC'en ikke vil være ringere end aptX HD. Jeg tog initiativet i egne hænder og lavede en patch til LineageOS-firmwaren: Vi ændrer Bluetooth-stakken for at forbedre lyden på hovedtelefoner uden AAC, aptX og LDAC codecs

Mere information kan findes på hjemmesiderne Lyd fyre и SoundExpert.

bonus: SBC reference encoder, A2DP bitstream information og testfiler. Denne fil plejede at blive offentliggjort på Bluetooth-webstedet, men er nu kun tilgængelig for medlemmer af Bluetooth SIG.

Kilde: www.habr.com

Tilføj en kommentar