Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Vzhledem k masovému uvádění chytrých telefonů bez 3,5 mm audio konektoru se bezdrátová Bluetooth sluchátka stala pro mnohé hlavním způsobem poslouchání hudby a komunikace v režimu handsfree.
Výrobci bezdrátových zařízení často nepíší podrobné specifikace výrobků, a články o Bluetooth audiu na internetu jsou mnohdy protichůdné, místy nekorektní, nezmiňují všechny vlastnosti a často kopírují stejnou nepřesnou informaci.
Pokud se pokusíme ponořit do protokolu, možností Bluetooth stacků operačních systémů, sluchátek a reproduktorů, Bluetooth kodeků pro hudbu a řeč, zjistíme, co ovlivňuje kvalitu přenášeného zvuku a zpoždění, naučíme se shromažďovat a dekódovat informace o podporovaných kodecích a dalších možnostech zařízení.

TL;DR:

  • SBC — běžný kodek
  • Sluchátka mají svůj ekvalizér a post-procesing pro každý kodek samostatně
  • aptX není tak dobrý, jak tvrdí reklamní oznámení
  • LDAC — marketingové bláboly
  • Kvalita zvuku v režimu hovoru je stále nízká
  • Do prohlížeče je možné integrovat audio enkodéry v C, zkompilováním do WebAssembly pomocí emscripten, a nebudou zvlášť zpomalovat.

Hudba přes Bluetooth

Funkční složka Bluetooth je určena profily — specifikacemi konkrétních funkcí. Přenos hudby přes Bluetooth probíhá pomocí profilu pro přenos vysoce kvalitního jednosměrného audia A2DP. Standard A2DP byl přijat v roce 2003 a od té doby se zásadně nezměnil.
V rámci profilu je standardizován 1 povinný kodek s nízkou výpočetní složitostí SBC, vytvořený speciálně pro Bluetooth, a 3 další. Také je povoleno použití nedokumentovaných kodeků vlastní implementace.

K datu červen 2019 se nacházíme v komiksu xkcd s 14 A2DP kodeky:

  • SBC ← standardizováno v A2DP, podporováno všemi zařízeními
  • MPEG-1/2 Layer 1/2/3 ← standardizovány v A2DP: všem známé MP3, používaný v digitální TV MP2, a neznámý MP1
  • MPEG-2/4 AAC ← standardizováno v A2DP
  • ATRAC ← starý kodek od Sony, standardizovaný v A2DP
  • LDAC ← nový kodek od Sony
  • aptX ← kodek z roku 1988
  • aptX HD ← to samé co aptX, pouze s jinými parametry kódování
  • aptX Low Latency ← zcela jiný kodek, není softwarová implementace
  • aptX Adaptive ← další kodek od Qualcomm
  • FastStream ← pseudokodek, obousměrná modifikace SBC
  • HWA LHDC ← nový kodek od Huawei
  • Samsung HD ← podporováno 2 zařízeními
  • Samsung Scalable ← podporováno 2 zařízeními
  • Samsung UHQ-BT ← podporováno 3 zařízeními

Proč vlastně potřebujeme kodeky, ptáte se, když je v Bluetooth EDR, které umožňuje přenos dat rychlostí 2 a 3 Mbit/s, a pro nekomprimovaný dvoukanálový 16bitový PCM stačí 1,4 Mbit/s?

Přenos dat přes Bluetooth

V Bluetooth existují dva typy přenosu dat: Asynchronous Connection Less (ACL) pro asynchronní přenos bez navázání spojení a Synchronous Connection Oriented (SCO) pro synchronní přenos s předchozím schválením spojení.
Přenos probíhá pomocí časového dělení a volby přenosového kanálu pro každý paket zvlášť (Frequency-Hop/Time-Division-Duplex, FH/TDD), přičemž čas je rozdělen na intervaly po 625 mikrosekundách, nazývané sloty. Jedno zařízení provádí přenos v sudých slotech, druhé — v lichých. Přenášený paket může zabírat 1, 3 nebo 5 slotů v závislosti na velikosti dat a nastaveném typu přenosu, přičemž v tomto případě není jedno zařízení v sudých a lichých slotech během přenosu. Celkem je v sekundě možné přijmout a odeslat až 1600 paketů, pokud každý z nich zabírá 1 slot, a obě zařízení neustále něco přenášejí a přijímají.

2 a 3 Mbit/s pro EDR, které můžete najít v oznámeních a na webových stránkách Bluetooth, představují maximální kanálovou rychlost přenosu všech dat dohromady (včetně technických záhlaví všech protokolů, do nichž je třeba data zabalit) ve dvou směrech současně. Skutečná rychlost přenosu dat se bude výrazně lišit.

Pro přenos hudby se používá asynchronní způsob, téměř vždy pomocí paketů typu 2-DH5 a 3-DH5, které nesou maximální množství dat v režimu EDR 2 Mbit/s a 3 Mbit/s, a zabírají 5 slotů časového dělení pásma.

Schématické znázornění přenosu s použitím 5 slotů jedním zařízením a 1 slotu druhým (DH5/DH1):
Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Díky principu časového rozdělení musí při přenosu paketu čekat 625 mikrosekundový časový slot, pokud nám druhé zařízení nic nepřenáší nebo přenáší malý paket, a delší dobu, pokud druhé zařízení přenáší větší pakety. Pokud je k telefonu připojeno více než jedno zařízení (například sluchátka, hodinky a fitness náramek), doba přenosu se dělí mezi všechny.

Nutnost zapouzdření audia do speciálních transportních protokolů L2CAP a AVDTP odčerpává 16 bajtů z maximální možné přenosové užitečné audio zátěže.

Typ paketu
Počet slotů
Max. počet bajtů v paketu
Max. počet bajtů užitečné zátěže A2DP
Max. bitrate užitečné zátěže A2DP

2-DH3
3
367
351
936 kbit/s

3-DH3
3
552
536
1429 kbit/s

2-DH5
5
679
663
1414 kbit/s

3-DH5
5
1021
1005
2143 kbit/s

1414 a 1429 kbit/s rozhodně nestačí pro přenos nekomprimovaného zvuku za skutečných podmínek s rušeným pásmem 2.4 GHz a nutností přenosu řídících dat. EDR s 3 Mbit/s vyžaduje vysoký výkon přenosu a šum v éteru, proto ani v režimu 3-DH5 není pohodlný přenos PCM možný, neustále dojde k krátkým přerušením a vše bude fungovat pouze na vzdálenosti několika metrů.
V praxi je obtížné přenášet dokonce i audio stream 990 kbit/s (LDAC 990 kbit/s).

Vrátíme se k kodekům.

SBC

Kodek, který je povinný pro všechna zařízení podporující standard A2DP. Nejlepší a nejhorší kodek zároveň.

Vzorkovací frekvence
Šířka slova
Bitrate
Podpora kódování
Podpora dekódování

16, 32, 44.1, 48 kHz
16 bitů
10-1500 kbit/s
Všemi zařízeními
Všemi zařízeními

SBC je jednoduchý a výpočetně rychlý kodek s primitivním psychoakustickým modelem (používá se pouze maskování tichých zvuků), který používá adaptivní impulsně-kódovou modulaci (APCM).
Specifikace A2DP doporučuje použití dvou profilů: Střední kvalita a Vysoká kvalita.
Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Kodek má mnoho nastavení, která umožňují ovládat algoritmickou latenci, počet vzorků v bloku, algoritmus přidělování bitů, ale téměř všude se používají stejné doporučené parametry ve specifikaci: Joint Stereo, 8 frekvenčních pásem, 16 bloků v audio rámci, způsob přidělování bitů Loudness.
SBC podporuje dynamickou změnu parametru Bitpool, který přímo ovlivňuje bitrate. Pokud je rádiový signál přetížen, ztrácí se pakety nebo jsou zařízení na velkou vzdálenost, může zdroj audia snížit Bitpool, dokud se spojení nevrátí do normálu.

Většina výrobců sluchátek nastavuje maximální hodnotu parametru Bitpool na 53, což omezuje bitrate na 328 kilobitů za sekundu při použití doporučeného profilu.
I když výrobce sluchátek nastavil maximální hodnotu Bitpoolu na více než 53 (takové modely se objevují například: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, také se vyskytují u některých přijímačů a automobilových hlavních jednotek), většina operačních systémů neumožní používat zvýšené bitrate kvůli internímu omezení hodnoty v Bluetooth stacku.
Kromě toho někteří výrobci nastavují nízkou maximální hodnotu Bitpoolu pro některá zařízení. Například u Bluedio T je to 39, u Samsung Gear IconX — 37, což poskytuje špatnou kvalitu zvuku.

Umělá omezení ze strany vývojářů Bluetooth stacků pravděpodobně vznikla v důsledku nekompatibility některých zařízení s vysokými hodnotami Bitpoolu nebo netypickými profily, i když hlásila jejich podporu, a nedostatečného počtu testů při certifikaci. Autorům Bluetooth stacků bylo snazší se omezit na dodržování doporučeného profilu, než vytvářet databázi nesprávných zařízení (i když teď to dělají pro další nesprávně fungující funkce).

SBC dynamicky přiřazuje kvantizační bity pro frekvenční pásma, přičemž postupuje od nižších k vyšším s různými váhami. Pokud je celý bitrate použit na nižší a střední frekvence, vyšší frekvence budou „ořezány“ (místo nich bude ticho).

Příklad SBC 328 kbit/s. Vlevo — originál, vpravo — SBC, periodicky dochází k přepínání mezi stopami. Pro audio ve video souboru se používá bezztrátový kompresní kodek FLAC. Použití FLAC v kontejneru mp4 není oficiálně standardizováno, takže není jisté, že váš prohlížeč jej přehraje, ale mělo by to fungovat v posledních verzích desktopových Chrome a Firefox. Pokud nemáte zvuk, můžete si soubor stáhnout a otevřít jej v plnohodnotném video přehrávači.
ZZ Top — Sharp Dressed Man

Na spektrální analýze je vidět okamžik přepnutí: SBC pravidelně přetíná tichých zvuků nad 17,5 kHz a vůbec nevyčleňuje bity pro pásmo nad 20 kHz. Úplná spektrální analýza je k dispozici po kliknutí (1,7 MB).
Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Neslyším rozdíl mezi originálem a SBC na této stopě.

Vezměme něco novějšího a modelujme audio, které by vzniklo při použití sluchátek Samsung Gear IconX s Bitpool 37 (nahoře — původní signál, dole — SBC 239 kbps, zvuk ve FLAC).
Mindless Self Indulgence — Witness

Slyším praskání, menší stereoefekt a nepříjemné "cvakání" vokálu ve vysokých frekvencích.

Ačkoli je SBC velmi flexibilní kodek a může být nastaven na nízké latence, poskytuje vynikající kvalitu audia při vysokých bitrates (452+ kbps) a celkem dobrou pro většinu lidí na standardním High Quality (328 kbps), protože standard A2DP nenastavuje pevné profily (ale poskytuje pouze doporučení), vývojáři stacků nastavili umělá omezení na Bitpool, parametry přenášeného audia se nezobrazují v uživatelském rozhraní, a výrobci sluchátek mají volnost nastavit své parametry a nikdy neuvádějí hodnotu Bitpool v technických specifikacích produktu, kodek se proslavil nízkou kvalitou zvuku, což však není problém samotného kodeku.
Parametr Bitpool přímo ovlivňuje bitrate pouze v rámci jednoho profilu. Stejné hodnoty Bitpool 53 mohou přinášet bitrate 328 kbps při doporučeném profilu High Quality, stejně jako 1212 kbps s Dual Channel a 4 frekvenčními pásmy, což je důvod, proč autoři OS, kromě omezení na Bitpool, nastavují omezení také na Bitrate. Jak se domnívám, tato situace vznikla kvůli nedostatku standardu A2DP: mělo se koordinovat bitrate, a ne Bitpool.

Tabulka podpory možností SBC v různých operačních systémech:

OS
Podporované vzorkovací frekvence
Omezení max. Bitpool
Omezení max. Bitrate
Typický Bitrate
Dynamické nastavení Bitpool

Windows 10
44,1 kHz
53
512 kbps
328 kbps
✓*

Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (při příchozím připojení), 53 (při odchozím)
Žádné omezení
328 kbps
✓*

macOS High Sierra
44,1 kHz
64, defaultně 53***
Neznámé
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
Žádné omezení
328 kbps
✗

* Bitpool se pouze zmenšuje, ale nezvětšuje automaticky, pokud se zlepší podmínky přenosu. Pro obnovení Bitpoolu je třeba zastavit přehrávání, počkat několik sekund a znovu spustit audio.
** Výchozí hodnota závisí na nastaveních zásobníku, které byly uvedeny při kompilaci firmwaru. V Androidu 8/8.1 je frekvence pouze 44,1 kHz nebo 48 kHz v závislosti na nastavení při kompilaci, v ostatních verzích jsou podporovány 44,1 kHz a 48 kHz současně.
*** Hodnotu Bitpool lze zvýšit v programu Bluetooth Explorer.

aptX a aptX HD

aptX je jednoduchý a výpočetně rychlý kodek, bez psychoakustiky, který používá adaptivní diferenciální impulzně kódovou modulaci (ADPCM). Objevil se přibližně v roce 1988 (datum podání patentu je datováno na únor 1988), před Bluetooth byl používán převážně v profesionálním bezdrátovém audio zařízení. V současnosti patří společnosti Qualcomm, vyžaduje licencování a licenční poplatky. K 2014: $6000 jednorázově a přibližně $1 za každé zařízení, pro šarže do 10000 zařízení (zdroj, str. 16).
aptX a aptX HD jsou stejný kodek, s různými profily kódování.

Kodek má pouze jeden parametr — výběr vzorkovací frekvence. Je pravda, že existuje také výběr počtu/režimu kanálů, ale ve všech mně známých zařízeních (70+ kusů) je podpora pouze pro Stereo.

Kodek
Vzorkovací frekvence
Šířka slova
Bitrate
Podpora kódování
Podpora dekódování

aptX
16, 32, 44.1, 48 kHz
16 bitů
128 / 256 / 352 / 384 kbit/s (v závislosti na vzorkovací frekvenci)
Windows 10 (desktopová a mobilní), macOS, Android 4.4+/7*, Blackberry OS 10
Široký výběr audio zařízení (hardwarově)

* Verze do 7 vyžadují modifikaci Bluetooth zásobníku. Kodek je podporován pouze tehdy, pokud výrobce Android zařízení licencoval jeho používání od Qualcomm (pokud má OS knihovny pro kódování).

aptX rozděluje audio na 4 frekvenční pásma a kvantuje je stejným počtem bitů neustále: 8 bitů pro 0-5,5 kHz, 4 bity pro 5,5-11 kHz, 2 bity pro 11-16,5 kHz, 2 bity pro 16,5-22 kHz (čísla pro vzorkovací frekvenci 44,1 kHz).

Příklad aptX audio (nahoře je původní signál, dole je aptX, spektrum pouze levých kanálů, zvuk ve FLAC):

Vysoké frekvence se trochu zčervenaly, ale rozdíl není slyšitelný.

Vzhledem k pevnému rozdělení bitů kvantizace nemůže kodek "přenést bity" na frekvence, které jich nejvíce potřebují. Na rozdíl od SBC, aptX nebude "řezat" frekvence, ale bude k nim přidávat kvantizační šum, čímž se sníží dynamický rozsah zvuku.

Není třeba předpokládat, že použití například 2 bity pro pásmo sníží dynamický rozsah na 12 dB: ADPCM umožňuje využít až 96 dB dynamického rozsahu i při použití 2 bitů kvantizace, ale pouze při určitém signálu.
ADPCM ukládá rozdíl číselného znázornění mezi současným a následujícím vzorkem, místo aby zaznamenával absolutní hodnotu, jako v PCM. To umožňuje snížit požadavky na množství bitů potřebných k uložení takové (bezeztrátové) informace nebo prakticky takové (s relativně malou chybou zaokroulení). Pro snížení chyb zaokroulení se používají tabulky koeficientů.
Při vytváření kodeku autoři počítali koeficienty ADPCM na základě souboru hudebních audio souborů. Čím blíže je zvukový signál tomuto souboru hudby, na kterých byly tabulky postaveny, tím méně kvantizačních chyb (šumu) aptX vytváří.

Z tohoto důvodu budou syntetické testy vždy vykazovat horší výsledky než hudba. Vytvořil jsem speciální syntetický příklad, na kterém aptX ukazuje špatné výsledky — sinusoidu s frekvencí 12,4 kHz (nahoře — původní signál, dole — aptX. Zvuk ve FLAC. Snižte hlasitost!):

Graf spektra:
Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Šumy jsou jasně slyšitelné.

Pokud však vygenerujeme sinusoidu s menší amplitudou, aby byla tišší, šumy se také ztiší, což naznačuje široký dynamický rozsah:

Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Chcete-li slyšet rozdíl mezi originálním hudebním skladbou a komprimovanou verzí, můžete invertovat jeden ze signálů a zkombinovat stopy kanál po kanále. Tento přístup je obecně nesprávný a nedával by rozumné výsledky s složitějšími kodeky, ale konkrétně pro ADPCM je zcela vhodný.
Rozdíl mezi originálem a aptX
Střední čtvercová odchylka signálů je na úrovni -37,4 dB, což není mnoho pro takto komprimovanou hudbu.

aptX HD

aptX HD není samostatným kodekem — je to vylepšený profil kódování kodeku aptX. Změny se týkají počtu bitů přidělených kódování frekvenčních rozsahů: 10 bitů pro 0-5.5 kHz, 6 bitů pro 5.5-11 kHz, 4 bity pro 11-16.5 kHz, 4 bity pro 16.5-22 kHz (čísla pro 44.1 kHz).

Kodek
Vzorkovací frekvence
Šířka slova
Bitrate
Podpora kódování
Podpora dekódování

aptX HD
16, 32, 44.1, 48 kHz
24 bitů
192 / 384 / 529 / 576 kbit/s (v závislosti na vzorkovací frekvenci)
Android 8+*
Některými audio zařízeními (hardwarově)

* Verze do 7 vyžadují modifikaci Bluetooth zásobníku. Kodek je podporován pouze tehdy, pokud výrobce Android zařízení licencoval jeho používání od Qualcomm (pokud má OS knihovny pro kódování).

Méně rozšířený než aptX: zřejmě vyžaduje samostatnou licenci od Qualcommu a individuální licenční poplatky.

Opakujme příklad se sinusoidou na 12.4 kHz:
Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Mnohem lepší než s aptX, ale stále šumí.

aptX Low Latency

Kodek od Qualcommu, který nemá společného nic se standardními aptX a aptX HD, soudě podle málo informací od lidí zapojených do jeho vývoje. Je určen pro interaktivní přenos audia s nízkou latencí (filmy, hry), kde není možné upravit zpoždění zvuku programově. Známé softwarové implementace enkodérů a dekodérů neexistují, podporován je výhradně vysílači, přijímači, sluchátky a reproduktory, nikoli smartphony a počítači.

Vzorkovací frekvence
Bitrate
Podpora kódování
Podpora dekódování

44,1 kHz
276/420 kbit/s
Některými vysílači (hardwarově)
Některými audio zařízeními (hardwarově)

AAC

AAC, nebo pokročilé kódování audia — výpočetně náročný kodek, se závažným psychoakustickým modelem. Získal široké rozšíření pro audio na internetu, druhý nejpopulárnější po MP3. Vyžaduje licencování a licenční poplatky: $15000 jednorázově (nebo $1000 pro společnosti s méně než 15 zaměstnanci) + $0.98 za prvních 500000 zařízení (zdroj).
Kodek je standardizován v rámci specifikací MPEG-2 a MPEG-4, a navzdory častým omylům, nepatří Apple.

Vzorkovací frekvence
Bitrate
Podpora kódování
Podpora dekódování

8 — 96 kHz
8 — 576 kbit/s (pro stereo), 256 — 320 kbit/s (typické pro Bluetooth)
macOS, Android 7+*, iOS
Široký výběr audio zařízení (hardwarově)

* pouze na zařízeních, jejichž výrobci zaplatili licenční poplatky

V iOS a macOS se používá nejlepší současný kódovač Apple AAC, zajišťující maximálně možnou kvalitu audia. V Androidu se používá druhý nejlepší kódovač Fraunhofer FDK AAC, ale mohou být použity různé hardwarové, integrované do platformy (SoC), s neznámou kvalitou kódování. Podle nedávných testů webu SoundGuys, kvalita kódování AAC různými Android telefony se výrazně liší:
Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

U většiny bezdrátových audio zařízení pro AAC je maximální bitová rychlost nastavena na 320 kbps, některé podporují pouze 256 kbps. Ostatní bitové rychlosti se vyskytují velmi zřídka.
AAC poskytuje vynikající kvalitu při bitových rychlostech 320 a 256 kbps, ale je náchylný k ztrátám sekvenčního kódování již komprimovaného obsahu, avšak slyšet nějaké rozdíly s originálem na iOS při bitové rychlosti 256 kbps je obtížné i při několika sekvenčních kódováních, při jediném kódování, například MP3 320 kbps do AAC 256 kbps, jsou ztráty zanedbatelné.
Stejně jako u ostatních Bluetooth kodeků, jakákoli hudba je nejprve dekódována a poté kódována kodekem. Při přehrávání hudby ve formátu AAC je nejprve dekódována operačním systémem a poté je znovu kódována do AAC pro přenos přes Bluetooth. To je nezbytné pro míchání několika audio streamů, například hudby a oznámení o nové zprávě. iOS není výjimkou. Na internetu je mnoho tvrzení, že na iOS se hudba ve formátu AAC nepřekóduje při přenosu přes Bluetooth, což je nesprávné.

MP1/2/3

Kodeky rodiny MPEG-1/2 Part 3 zahrnují známý a široce používaný MP3, méně rozšířený MP2 (používá se převážně v digitální TV a rádiu) a zcela neznámý MP1.

Staré kodeky MP1 a MP2 nejsou vůbec podporovány: nenašel jsem žádná sluchátka ani žádný Bluetooth stack, který by je kódoval nebo dekódoval.
Dekódování MP3 je podporováno některými sluchátky, ale kódování není podporováno v žádném stacku moderních operačních systémů. Zdá se, že třetí strana BlueSoleil pro Windows může kódovat do MP3, pokud ručně upravíte konfigurační soubor, ale jeho instalace mi způsobuje BSoD na Windows 10. Výsledkem je, že kodek se vlastně nedá používat pro Bluetooth audio.
Dříve, v letech 2006-2008, před rozšířením standardu A2DP v zařízeních, lidé poslouchali MP3 hudbu na sluchátkách Nokia BH-501 prostřednictvím programu MSI BluePlayer, který byl dostupný na Symbian a Windows Mobile. V té době architektura operačního systému smartphonů umožňovala přístup k mnoha nízkoúrovňovým funkcím a na Windows Mobile bylo dokonce možné instalovat třetí strany Bluetooth stacky.

Poslední patent kodeku MP3 vypršel, používání kodeku nevyžaduje licenční poplatky od 23. dubna 2017.

Pokud je nejdéle platný patent uvedený v předchozích odkazech považován za měřítko, pak technologie MP3 se stala bezpatentovou v USA 16. dubna 2017, když vypršel americký patent 6,009,399, který držel a spravoval Technicolor.

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

Vzorkovací frekvence
Bitrate
Podpora kódování
Podpora dekódování

16 — 48 kHz
8 — 320 kbit/s
Není nikde podporováno
Některými audio zařízeními (hardwarově)

LDAC

Nový a aktivně propagovaný „Hi-Res“ kodek od Sony, který podporuje vzorkovací frekvence až 96 kHz a 24bitovou hloubku, s bitratem až 990 kbit/s. Je inzerován jako audiofilský kodek, jako náhrada za stávající Bluetooth kodeky. Má funkci adaptivního přizpůsobení bitrate v závislosti na podmínkách rádiového vysílání.

Kódovač LDAC (libldac) je součástí standardní výbavy Androidu, takže kódování je podporováno na jakémkoli smartphonu s Androidem, počínaje verzí 8. Softwarové dekodéry nejsou veřejně k dispozici, specifikace kodeku není široké veřejnosti přístupná, avšak při prvním pohledu na kódovač se zdá, že vnitřní konstrukce kodeku je podobná ATRAC9 — kodeku od Sony, který se používá v PlayStation 4 a Vita: oba pracují ve frekvenčním rozsahu, používají modifikovanou diskrétní kosinovou transformaci (MDCT) a kompresi pomocí Huffmanova algoritmu.

Podpora LDAC je prakticky dostupná pouze na sluchátkách od Sony. Možnost dekódování LDAC se občas objevuje na sluchátkách a DAC jiných výrobců, ale velmi vzácně.

Vzorkovací frekvence
Bitrate
Podpora kódování
Podpora dekódování

44.1 — 96 kHz
303/606/909 kbit/s (pro 44.1 a 88.2 kHz), 330/660/990 kbit/s (pro 48 a 96 kHz)
Android 8+
Některými sluchátky Sony a jednotlivými zařízeními od jiných výrobců (hardwarově)

Marketing LDAC jako Hi-Res kodeku poškozuje jeho technickou stránku: je absurdní plýtvat bitrate na přenos neslyšitelných lidským uchem frekvencí a zvýšenou hloubkou, když nesplňuje požadavky na přenos CD kvality (44.1/16) bezztrátově. Naštěstí kodek má dva režimy provozu: přenos CD audio a přenos Hi-Res audio. V prvním případě se vzduchem přenáší pouze 44.1 kHz/16 bit.

Protože softwarový dekodér LDAC není veřejně k dispozici, není možné testovat kodek bez dalších zařízení, která dekódují LDAC. Podle testu LDAC na DAC s jeho podporou, který inženýři stránky SoundGuys.com připojili přes digitální výstup a nahráli generovaný zvuk na testovacích signálech, LDAC 660 a 990 kbit/s v režimu CD kvality zajišťuje poměr signál/šum poněkud lepší než u aptX HD.

Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních
Zdroj: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026

LDAC také podporuje dynamický bitový tok mimo stanovené profily — od 138 kbit/s do 990 kbit/s, avšak, jak mohu posoudit, na Androidu se používají pouze standardizované profily 303/606/909 a 330/660/990 kbit/s.

Další kodeky

Jiné A2DP kodeky se příliš nerozšířily. Jejich podpora buď chybí téměř úplně, nebo je přítomna pouze na některých modelech sluchátek a chytrých telefonů.
Standardizovaný v A2DP kodek ATRAC nebyl nikdy použit jako Bluetooth kodek ani samotnými Sony, kodeky Samsung HD, Samsung Scalable a Samsung UHQ-BT mají velmi omezenou podporu ze strany přenášejících a přijímajících zařízení, a HWA LHDC je příliš nový a podporován pouze třemi(?) zařízeními.

Podpora kodeků audio zařízeními

Ne všichni výrobci zveřejňují přesné informace o kodecích, které podporují různé bezdrátové sluchátka, reproduktory, přijímače nebo vysílače. Někdy může nastat situace, kdy podpora určitého kodeku existuje jen pro vysílání, ale ne pro příjem (což platí pro kombinované vysílače-přijímače), přičemž výrobce uvádí pouze "podporu" bez dalších poznámek (předpokládám, že za to může oddělené licencování encoderů a decoderů některých kodeků). U nejlevnějších zařízení nemusí být oznámená podpora aptX vůbec prokázána.

Bohužel, v rozhraních většiny operačních systémů není nikde zobrazen kodek, který se používá. Tato informace je k dispozici pouze na Androidu od verze 8 a na macOS. Nicméně i v těchto operačních systémech se zobrazí pouze ty kodeky, které podporuje jak telefon/počítač, tak sluchátka.

Jak tedy zjistit, jaké kodeky zařízení podporuje? Zaznamenat a analyzovat dump provozu s parametry dohod A2DP!
To lze provést v Linuxu, macOS a Androidu. V Linuxu lze použít Wireshark nebo hcidump, v macOS Bluetooth Explorer, a v Androidu vestavěnou funkci pro ukládání Bluetooth HCI dumpu, která je k dispozici v nástrojích pro vývojáře. Získáte dump ve formátu btsnoop, který lze nahrát do analyzátoru Wireshark.
Vezměte prosím na vědomíSprávný dump lze získat pouze připojením telefonu / počítače k sluchátkům / reproduktorům (jak absurdně to může znít)! Sluchátka se mohou samostatně připojit k telefonu, a v takovém případě budou požadovat seznam kodeků od telefonu, nikoli naopak. Aby bylo možné bezpochyby zaznamenat správný dump, nejprve přerušte spárování s zařízením a poté, během nahrávání dumpu, spárujte telefon se sluchátky.

Použijte následující filtr zobrazení, abyste odfiltrovali nerelevantní provoz:

btavdtp.signal_id

Jako výsledek byste měli vidět něco podobného:
Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Na každém bodě příkazu GetCapabilities můžete kliknout a zobrazit podrobné specifikace kodeku.
Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Wireshark nezná všechny identifikátory kodeků, takže některé kodeky bude třeba dešifrovat ručně podle tabulky identifikátorů níže:

Povinné:
0x00 - SBC

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

Specifické pro výrobce:
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 - Identifikátor kodeku CSR True Wireless Stereo v3 pro AAC
0xFF 0x000A 0x0105 - Identifikátor kodeku CSR True Wireless Stereo v3 pro MP3
0xFF 0x000A 0x0106 - Identifikátor kodeku CSR True Wireless Stereo v3 pro aptX

Abych nemusel analyzovat dumps ručně, vytvořil jsem službu, která vše analyzuje automaticky: btcodecs.valdikss.org.ru

Srovnání kodeků. Který kodek je lepší?

Každý kodek má své výhody a nevýhody.
aptX a aptX HD používají striktně dané profily, které nelze změnit bez modifikace encoderu a decoderu. Ani výrobce telefonu, ani výrobce sluchátek nemohou změnit bitrate nebo kódovací koeficienty aptX. Vlastník kodeku, Qualcomm, vydává referenční encoder ve formě knihovny. Tato fakta představují silnou stránku aptX — předem víte, jakou kvalitu zvuku dostanete, bez jakýchkoliv "ale".

SBC má naopak mnoho přizpůsobitelných možností, dynamický bitrate (encoder může snížit parametr bitpool, pokud je rádiový vysílací signál přetížen) a nemá pevně stanovené profily, pouze doporučené "střední kvalita" a "vysoká kvalita", které byly přidány do specifikace A2DP v roce 2003. "Vysoká kvalita" už dle současných měřítek není tak vysoká a většina Bluetooth stacků neumožňuje používat parametry lepší, než v profilu "vysoká kvalita", i když technická omezení pro to neexistují.
Bluetooth SIG nemá referenční encoder SBC ve formě knihovny a výrobci jej implementují sami.
To jsou slabé stránky SBC - nikdy není předem jasné, jaké kvality zvuku lze očekávat od konkrétního zařízení. SBC může produkovat jak nízkou, tak velmi vysokou kvalitu zvuku, ale to poslední není dosažitelné bez odebrání nebo obcházení umělých omezení Bluetooth stacků.

Situace s AAC je nejednoznačná: na jedné straně by měl codec teoreticky poskytovat kvalitu, která není k nerozeznání od originálu, ale praxí, soudě podle testů laboratoře SoundGuys na různých Android zařízeních, to není potvrzeno. Pravděpodobně je vina na nízkokvalitních hardwarových audioencoderech integrovaných do různých čipsetů telefonů. Má smysl používat AAC pouze na zařízeních Apple, zatímco na Androidu se omezit na aptX a LDAC.

Zařízení podporující alternativní codeky jsou obvykle vyšší kvality, prostě proto, že není smysluplné platit licenční poplatky za použití těchto codeců pro zcela levná nízkokvalitní zařízení. Na základě mých testů zní SBC velmi dobře na kvalitní technice.

Vytvořil jsem webovou službu, která kóduje audio do SBC, aptX a aptX HD v reálném čase přímo v prohlížeči. S jejíž pomocí můžete testovat tyto audio codeky bez skutečného přenosu audia přes Bluetooth, na jakýchkoliv drátových sluchátkách, reproduktorech a vaší oblíbené hudbě, také můžete měnit parametry kódování přímo během přehrávání audia:
btcodecs.valdikss.org.ru/sbc-encoder
Služba využívá knihovny kodéru SBC z projektu BlueZ a libopenaptx z ffmpeg, které jsou kompilovány do WebAssembly a JavaScriptu z C, pomocí emscripten, pro provádění v prohlížeči. Kdo by mohl snít o takové budoucnosti!

Takto to vypadá:

Všimněte si, jak se mění úroveň hluku po 20 kHz u různých kodeků. V originálním MP3 souboru chybí frekvence nad 20 kHz.

Zkuste přepínat mezi kodeky a posoudit, zda slyšíte rozdíl mezi originálem, SBC 53 Joint Stereo (standardní a nejrozšířenější profil) a aptX/aptX HD.

Slyším rozdíl mezi kodeky v sluchátkách!

Lidé, kteří během testování přes webovou službu neslyší rozdíl mezi kodeky, tvrdí, že ho slyší při poslechu hudby v bezdrátových sluchátkách. Bohužel, to není vtip a ne efekt placebo: rozdíl je skutečně slyšitelný, avšak není způsoben rozdíly kodeky.

Drtivá většina Bluetooth audio chipsetů používaných v přijímacích bezdrátových zařízeních je vybavena digitálním signálním procesorem (Digital signal processor, DSP), který implementuje ekvalizér, kompresor, stereo rozšiřovač a další funkce určené k vylepšení (nebo změně) zvuku. Výrobci Bluetooth zařízení mohou nastavit DSP pro každý kodek zvlášť, a při přepínání mezi kodeky se posluchači může zdát, že slyší rozdíly mezi hlasy kodeků, zatímco ve skutečnosti slyší různé nastavení DSP.

Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních
DSP audio zpracovatelský obvod Kalimba ve chipsech vyrobených CSR/Qualcomm

Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních
Aktivace různých funkcí DSP pro každý kodek a výstup samostatně

Některá prémiová zařízení jsou vybavena softwarem, který umožňuje nastavení parametrů DSP, ale většina levnějších sluchátek tuto možnost nemá a uživatelé nemohou vypnout post-processing zvuku standardními prostředky.

Funkční vlastnosti zařízení

Současná verze standardu A2DP má funkci „absolutní regulace hlasitosti“ — řízení hlasitosti zařízení pomocí speciálních příkazů protokolu AVRCP, které upravují zesílení výstupního stupně, místo programového snížení hlasitosti audio streamu. Pokud při změně hlasitosti na sluchátkách se hlasitost nesynchronizuje s hlasitostí na telefonu, znamená to, že vaše sluchátka nebo telefon tuto funkci nepodporují. V takovém případě má smysl poslouchat hudbu vždy s maximální hlasitostí na telefonu a regulovat skutečnou hlasitost tlačítky na sluchátkách — v tomto případě bude poměr signál/šum lepší a kvalita zvuku. mělo být výše.
Ve skutečnosti se však občas vyskytují smutné situace. Na mých sluchátkách RealForce OverDrive D1 je pro SBC zapnutý silný kompresor, a zvýšení hlasitosti vede k zvýšení úrovně tichých zvuků, zatímco hlasitost hlasitých zvuků se nemění (dochází k kompresi signálu). Z toho důvodu musím nastavit hlasitost na počítači přibližně na polovinu, v takovém případě efekt komprese prakticky neexistuje.
Podle mých pozorování všechny sluchátka s dodatečnými kodeky podporují funkci absolutního řízení hlasitosti, zřejmě je to jeden z požadavků na certifikaci kodeků.

Některá sluchátka podporují připojení dvou zařízení současně. To umožňuje například poslouchat hudbu z počítače a přijímat hovory z telefonu. Je však dobré vědět, že v tomto režimu jsou deaktivovány alternativní kodeky a používá se pouze SBC.

Funkce AVDTP 1.3 Delay Reporting umožňuje sluchátkům informovat přenosové zařízení o latenci, s jakou se zvuk skutečně reprodukuje. To umožňuje upravit synchronizaci audia s videem při přehrávání video souborů: při problémech s přenosem po rádiovém vysílání, audio se nebude zpožďovat za videem, naopak, video bude zpomaleno přehrávačem videa, dokud se audio a video znovu nesynchronizují.
Funkce je podporována mnoha sluchátky, Android 9+ a Linuxem s PulseAudio 12.0+. O podpoře funkce na jiných platformách nemám informace.

Dvousměrná komunikace přes Bluetooth. Přenos hlasu.

Pro přenos hlasu přes Bluetooth se používá Synchronous Connection Oriented (SCO) — synchronní přenos s předchozím ujednáním spojení. Tato metoda umožňuje přenášet zvuk a hlas přesně v pořadí, se symetrickou rychlostí odesílání a příjmu, bez čekání na potvrzení přenosu a opětovné odesílání paketů. To snižuje celkovou latenci při přenosu zvuku přes rádiový kanál, ale klade vážná omezení na množství přenášených dat za jednotku času a negativně ovlivňuje kvalitu.
Když se používá tento režim, hlas i audio se přenášejí se stejnou kvalitou.
Bohužel, k roku 2019 je kvalita přenosu řeči přes Bluetooth stále nízká a není jasné, proč s tím Bluetooth SIG nic nedělá.

CVSD

Základní codec pro přenos řeči CVSD byl standardizován v roce 2002 a je podporován všemi zařízeními s obousměrnou komunikací přes Bluetooth. Zajišťuje přenos audia s vzorkovací frekvencí 8 kHz, což odpovídá kvalitě běžné pevné telefonie.

Příklad záznamu v tomto codec..

mSBC

Další codec mSBC byl standardizován v roce 2009 a v roce 2010 se již objevily čipy, které jej používají pro přenos hlasu. mSBC je široce podporován různými zařízeními.
Není to nezávislý codec, ale běžný SBC ze standardu A2DP, s fixním profilem kódování: 16 kHz, mono, bitpool 26.

Příklad záznamu v tomto codec..

Není to dokonalé, ale mnohem lepší než CVSD, nicméně je stále nepříjemné jej používat pro komunikaci přes internet, zejména když používáte sluchátka pro komunikaci ve hře — zvuk hry bude také přenášen s vzorkovací frekvencí 16 kHz.

FastStreamSpolečnost CSR se rozhodla rozvinout myšlenku opětovného použití SBC. Aby se obešli omezení protokolu SCO a využili vyšších bitrate, CSR se vydala jinou cestou — zavedla podporu obousměrného SBC audia do standardu přenosu jednosměrného audia A2DP, standardizovala kódovací profily a nazvala to „FastStream“.

FastStream přenáší do reproduktorů stereozvuk 44,1 nebo 48 kHz s bitrate 212 kbit/s, a pro přenos audia z mikrofonu se používá mono, 16 kHz, s bitrate 72 kbit/s (o něco lepší než u mSBC). Takové parametry jsou mnohem lepší pro komunikaci v online hrách — zvuk hry a rozhovorů bude kvalitní.

Příklad záznamu v tomto codec. (+ zvuk z mikrofonu, stejný jako u mSBC).

Společnost přišla s zajímavým řešením, ale protože je v rozporu se standardem A2DP, jeho podpora existuje pouze v některých vysílačích této firmy (které fungují jako USB zvuková karta, nikoli jako Bluetooth zařízení), ale v Bluetooth streamech podporu nezískal, i když počet sluchátek s podporou FastStream není zanedbatelný.

V současné době je podpora FastStream v OS dostupná pouze ve formě patche pro Linuxový PulseAudio od vývojáře Pali Rohára, který není zahrnut ve hlavní větvi programu.

aptX Low Latency

K mému velkému překvapení, aptX Low Latency také podporuje obousměrný zvuk, implementuje stejný princip jako FastStream.
Tuto funkci kodeku nebude možné nikde využít — podpora dekomprese Low Latency není v žádném OS ani v žádném mně známém Bluetooth stacku.

Bluetooth 5, Classic a Low Energy

Kolem specifikací a verzí Bluetooth vzniklo velké zmatení kvůli existenci dvou nekompatibilních standardů pod jednou značkou, oba z nichž jsou široce používány pro různé účely.

Existují dva různé, mezi sebou nekompatibilní protokoly Bluetooth: Bluetooth Classic a Bluetooth Low Energy (LE, známý také jako Bluetooth Smart). Existuje také třetí protokol, Bluetooth High Speed, ale ten není rozšířen a nepoužívá se v spotřebitelských zařízeních.

Od Bluetooth 4.0 se změny ve specifikaci převážně týkaly Bluetooth Low Energy, zatímco verze Classic dostala pouze drobná vylepšení.

Seznam změn mezi Bluetooth 4.2 a Bluetooth 5:

9 ZMĚN OD v4.2 K 5.0

9.1 NOVÉ FUNKCE

V Bluetooth Core Specification 5.0 jsou zavedeny některé nové funkce. Hlavní oblasti zlepšení jsou:
• Slot Availability Mask (SAM)
• 2 Msym/s PHY pro LE
• LE Long Range
• Vysoká cyklická non-connectable reklama
• LE reklamní rozšíření
• LE výběrový algoritmus kanálů #2
9.1.1 Funkce přidané v CSA5 — integrovány ve v5.0
• Vyšší výstupní výkon

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

Pouze jedna změna se dotkla verze Classic v rámci specifikace Bluetooth 5: byla přidána podpora technologie Slot Availability Mask (SAM), která má zlepšit rozdělení rádiového spektra. Všechny ostatní změny se týkají pouze Bluetooth LE (a také vyššího výstupního výkonu).

Vše audio zařízení využívají pouze Bluetooth Classic. Sluchátka a reproduktory nelze připojit přes Bluetooth Low Energy: neexistuje standard pro přenos audia pomocí LE. Standard A2DP, používaný pro přenos vysoce kvalitního audia, pracuje pouze přes Bluetooth Classic a jeho ekvivalent v LE neexistuje.

Není smysluplné kupovat audio zařízení s Bluetooth 5 pouze kvůli nové verzi protokolu. Bluetooth 4.0/4.1/4.2 bude v kontextu přenosu zvuku fungovat přesně stejně.
Pokud oznámení nových sluchátek zmiňuje zdvojený pracovní rádius a sníženou spotřebu energie díky Bluetooth 5, vězte, že buď nerozumí tomu, co říkají, nebo vás uvádějí v omyl. Není divu, že i výrobci Bluetooth čipů se ve svých oznámeních mýlí v rozdílech nové verze standardu, a některé čipy Bluetooth 5 podporují pátou verzi pouze pro LE, zatímco pro Classic používají 4.2.

Zpoždění přenosu zvuku

Hodnota zpoždění zvuku závisí na mnoha faktorech: velikosti bufferu v audio stohu, v Bluetooth stohu a v samotném přehrávacím bezdrátovém zařízení, algoritmickém zpoždění kodeku.

Zpoždění jednoduchých kodeků, jako jsou SBC, aptX a aptX HD, je velmi malé a činí 3-6 ms, což lze ignorovat, ale složité kodeky, jako AAC a LDAC, mohou způsobit znatelné zpoždění. Algoritmické zpoždění AAC pro 44.1 kHz činí 60 ms. LDAC — přibližně 30 ms (podle hrubé analýzy zdrojového kódu. Mýlit se mohu, ale ne moc.)

Konečné zpoždění silně závisí na přehrávacím zařízení, jeho čipsetu a bufferu. Během testování jsem dostal rozptyl od 150 do 250 ms na různých zařízeních (s kodekem SBC). Pokud předpokládáme, že zařízení, která podporují další kodeky aptX, AAC a LDAC, používají kvalitní komponenty a malou velikost bufferu, máme následující typická zpoždění:

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

Připomínám: aptX Low Latency není podporováno v operačních systémech, takže menší zpoždění lze získat pouze spojením transmitter+receiver nebo transmitter+sluchátka/reproduktor, přičemž všechna zařízení musí tento kodek podporovat.

Problémy s zařízeními, certifikací a logy Bluetooth

Jak odlišit kvalitní audio zařízení od levné napodobeniny? Podle vzhledu, především!

Levné čínské sluchátka, reproduktory a přijímače:

  1. Na krabici a zařízení chybí slovo „Bluetooth“, často se používá „Wireless“ a „BT“
  2. Chybí logo Bluetooth Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních na krabici nebo zařízení
  3. Není modrá blikající LED dioda

Absence of these elements indicates that the device has not undergone certification, which means it is potentially low-quality and problematic. For instance, Bluedio headphones are not Bluetooth certified and do not fully comply with the A2DP specification. They would not pass certification.

Let's consider several devices and their boxes:
Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

Audio přes Bluetooth: maximální podrobnosti o profilech, kodecích a zařízeních

All of these are uncertified devices. The manual may have a logo and the name of the Bluetooth technology, but the most important thing is that they appear on the box and/or the device itself.

If your headphones or speaker say "Ze bluetooth dewise is connecteda successfulle," that also does not guarantee their quality:

Přehrát video

Závěr

Can Bluetooth completely replace wired headphones and headsets? It can, but at the cost of reduced quality during calls, increased audio latency, which can be irritating in games, and a multitude of proprietary codecs that require licensing fees, raising the final cost of both smartphones and headphones.

The marketing of alternative codecs is very strong: aptX and LDAC are presented as a much-anticipated replacement for the "outdated and poor" SBC, which is not as bad as commonly believed.

As it turned out, artificial restrictions of Bluetooth stacks on the bitrate of SBC can be bypassed, so that SBC does not lag behind aptX HD. I took the initiative and created a patch for the LineageOS firmware: Modifikujeme Bluetooth stack pro zlepšení zvuku na sluchátkách bez kodeků AAC, aptX a LDAC

More information can be found on the websites SoundGuys a SoundExpert.

Bonus: reference SBC encoder, information about the A2DP bitstream and test files. This file was previously available on the Bluetooth website, but is now only accessible to those who joined Bluetooth SIG.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster