Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

W związku z masową produkcją smartfonów bez gniazda audio 3,5 mm, bezprzewodowe słuchawki Bluetooth stały się dla wielu głównym sposobem słuchania muzyki i komunikacji w trybie zestawu słuchawkowego.
Producenci urządzeń bezprzewodowych nie zawsze podają szczegółowe specyfikacje produktów, a artykuły o audio Bluetooth w Internecie są sprzeczne, miejscami niepoprawne, nie opisują wszystkich cech i często kopiują te same nieprawdziwe informacje.
Spróbujmy zrozumieć protokół, możliwości stosów Bluetooth systemów operacyjnych, słuchawek i głośników, kodeków Bluetooth dla muzyki i rozmów, ustalimy, co wpływa na jakość przesyłanego dźwięku i opóźnienie, nauczymy się zbierać i dekodować informacje o wspieranych kodekach oraz innych możliwościach urządzeń.

TL;DR:

  • SBC — normalny kodek
  • Słuchawki posiadają własny equalizer i przetwarzanie po każdym kodeku osobno
  • aptX nie jest tak dobry, jak o nim mówią reklamy
  • LDAC — marketingowy szum
  • Jakość dźwięku w trybie rozmowy wciąż jest niska
  • Do przeglądarki można wbudować enkodery audio w C, kompilując je do WebAssembly przez emscripten, i nie będą one specjalnie spowalniać.

Muzyka przez Bluetooth

Funkcjonalność Bluetooth jest określana przez profile — specyfikacje konkretnych funkcji. Przesyłanie muzyki w Bluetooth odbywa się z użyciem profilu przesyłania wysokiej jakości jednoczesnego audio A2DP. Standard A2DP został przyjęty w 2003 roku i od tego czasu zasadniczo się nie zmienił.
W ramach profilu znormalizowano 1 obowiązkowy kodek o niskim zużyciu mocy SBC, stworzony specjalnie dla Bluetooth, oraz 3 dodatkowe. Dopuszczalne jest także stosowanie niedokumentowanych kodeków własnej implementacji.

Na czerwiec 2019 roku jesteśmy w komiksie xkcd z 14 kodekami A2DP:

  • SBC ← znormalizowane w A2DP, wspierane przez wszystkie urządzenia
  • MPEG-1/2 Warstwa 1/2/3 ← znormalizowane w A2DP: wszystkim znany MP3, wykorzystywany w cyfrowej telewizji MP2, i nieznany MP1
  • MPEG-2/4 AAC ← znormalizowane w A2DP
  • ATRAC ← stary kodek od Sony, znormalizowany w A2DP
  • LDAC ← nowy kodek od Sony
  • aptX ← kodek z 1988 roku
  • aptX HD ← to samo, co aptX, tylko z innymi parametrami kodowania
  • aptX Low Latency ← zupełnie inny kodek, brak softwarowej implementacji
  • aptX Adaptive ← jeszcze jeden kodek od Qualcomm
  • FastStream ← pseudokodek, dwukierunkowa modyfikacja SBC
  • HWA LHDC ← nowy kodek od Huawei
  • Samsung HD ← obsługiwany przez 2 urządzenia
  • Samsung Scalable ← obsługiwany przez 2 urządzenia
  • Samsung UHQ-BT ← obsługiwany przez 3 urządzenia

Możesz się zapytać, po co w ogóle potrzebne są kodeki, gdy Bluetooth obsługuje EDR, co pozwala na przesyłanie danych z prędkością 2 i 3 Mb/s, a dla nieskompresowanego dwu kanałowego 16-bitowego PCM wystarczy 1,4 Mb/s?

Przesyłanie danych przez Bluetooth

W Bluetooth istnieją dwa typy przesyłania danych: Asynchronous Connection Less (ACL) dla asynchronicznego przesyłania bez nawiązywania połączenia oraz Synchronous Connection Oriented (SCO) dla synchronizowanego przesyłania z wcześniejszym ustaleniem połączenia.
Przesyłanie odbywa się za pomocą schematu podziału czasu i wyboru kanału transmisji dla każdego pakietu osobno (Frequency-Hop/Time-Division-Duplex, FH/TDD), w ramach którego czas dzielony jest na interwały 625 mikrosekund, zwane slotami (slot). Jedno z urządzeń prowadzi transmisję w parzystych numerach slotów, drugie — w nieparzystych. Przesyłany pakiet może zajmować 1, 3 lub 5 slotów, w zależności od wielkości danych i ustalonego typu transmisji, w takim przypadku przesyłanie przez jedno urządzenie odbywa się w parzystych i nieparzystych slotach aż do zakończenia przesyłania. Łącznie w ciągu sekundy można odebrać i wysłać do 1600 pakietów, jeśli każdy z nich zajmuje 1 slot, a oba urządzenia nieprzerwanie coś przesyłają i odbierają.

2 i 3 Mb/s dla EDR, które można spotkać w zapowiedziach i na stronie Bluetooth, są maksymalną prędkością kanału przesyłania wszystkich danych łącznie (w tym technicznych nagłówków wszystkich protokołów, w które należy enkapsulować dane), w obu kierunkach jednocześnie. Faktyczna prędkość przesyłania danych może się znacznie różnić.

Do przesyłania muzyki używany jest asynchroniczny sposób, prawie zawsze z użyciem pakietów typu 2-DH5 i 3-DH5, które niosą maksymalną ilość danych w trybie EDR 2 Mb/s i 3 Mb/s odpowiednio, i zajmują 5 slotów podziału czasu w eterze.

Schematyczne przedstawienie przesyłania z wykorzystaniem 5 slotów przez jedno urządzenie i 1 slot przez drugie (DH5/DH1):
Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Z powodu zasady podziału czasu eteru jesteśmy zmuszeni czekać na 625-mikrosekundowy czas slotu po przesłaniu pakietu, jeśli drugie urządzenie nie przesyła nic lub przesyła mały pakiet, a dłużej, jeśli drugie urządzenie przesyła dużymi pakietami. Jeśli do telefonu jest podłączone więcej niż jedno urządzenie (na przykład słuchawki, zegarki i opaska fitness), czas przesyłania dzieli się między wszystkie z nich.

Konieczność enkapsulacji dźwięku w specjalnych protokołach transportowych L2CAP i AVDTP zajmuje 16 bajtów z możliwej maksymalnej ilości transmitowanej użytecznej ładunków audio.

Typ pakietu
Liczba slotów
Max. liczba bajtów w pakiecie
Max. liczba bajtów użytecznej ładunku A2DP
Max. bitrate użytecznej ładunku 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 i 1429 kbit/s zdecydowanie nie wystarczają do przesyłania nieskompresowanego dźwięku w rzeczywistych warunkach, z zaśmieceniem pasma 2.4 GHz i koniecznością przesyłania danych kontrolnych. EDR 3 Mbit/s jest wymagający pod względem mocy przesyłu i szumów w eterze, więc nawet w trybie 3-DH5 komfortowe przesyłanie PCM jest niemożliwe, będą występować krótkotrwałe przerwy, a wszystko będzie działać tylko na odległość kilku metrów.
W praktyce nawet strumień audio o bitrate 990 kbit/s (LDAC 990 kbit/s) jest przesyłany z trudnością.

Wracamy do kodeków.

SBC

Kodek obowiązkowy dla wszystkich urządzeń wspierających standard A2DP. Najlepszy i najgorszy kodek jednocześnie.

Częstotliwość próbkowania
Głębokość bitowa
Bitrate
Wsparcie kodowania
Wsparcie dekodowania

16, 32, 44.1, 48 kHz
16 bit
10-1500 kbit/s
Wszystkimi urządzeniami
Wszystkimi urządzeniami

SBC — prosty i szybki kodek obliczeniowo, z prymitywnym modelem psychoakustycznym (stosowanym tylko do maskowania cichych dźwięków), wykorzystujący adaptacyjną modulację impulsowo-kodową (APCM).
Specyfikacja A2DP zaleca użycie dwóch profili: Middle Quality i High Quality.
Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Kodek ma wiele ustawień umożliwiających zarządzanie opóźnieniem algorytmu, ilością próbek w bloku, algorytmem rozkładu bitów, ale niemal powszechnie używane są te same zalecane w specyfikacji parametry: Joint Stereo, 8 pasm częstotliwości, 16 bloków w ramce audio, sposób rozkładu bitów Loudness.
SBC wspiera dynamiczną zmianę parametru Bitpool, który bezpośrednio wpływa na bitrate. Jeśli transmisja radiowa jest zablokowana, pakiety są tracone lub urządzenia znajdują się w dużej odległości, źródło dźwięku może obniżyć Bitpool, aż połączenie się ustabilizuje.

Producenci większości słuchawek ustawiają maksymalną wartość parametru Bitpool na 53, co ogranicza bitrate do 328 kilobitów na sekundę przy użyciu zalecanego profilu.
Nawet jeśli producent słuchawek ustawił maksymalną wartość Bitpool powyżej 53 (takie modele można spotkać, np.: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, a także w niektórych odbiornikach i samochodowych jednostkach głosowych), to większość systemów operacyjnych nie pozwoli na użycie zwiększonych bitrate'ów z powodu wewnętrznego ograniczenia wartości w stosach Bluetooth.
Ponadto niektórzy producenci ustalają niską maksymalną wartość Bitpool dla niektórych urządzeń. Na przykład, w Bluedio T wynosi ona 39, w Samsung Gear IconX — 37, co prowadzi do słabej jakości dźwięku.

Sztuczne ograniczenia ze strony twórców stosów Bluetooth prawdopodobnie wynikają z niekompatybilności niektórych urządzeń z dużymi wartościami Bitpool lub nietypowymi profilami, nawet jeśli zgłaszały ich wsparcie, oraz niewystarczającej liczby testów przy certyfikacji. Autorom stosów Bluetooth łatwiej było ograniczyć się do zatwierdzenia zalecanego profilu niż stworzyć bazę nieprawidłowych urządzeń (choć teraz to robią dla innych niepoprawnie działających funkcji).

SBC dynamicznie przydziela bity kwantyzacji dla pasm częstotliwości, działając według zasady od niskich do wysokich, z różnymi wagami. Jeśli cały bitrate został użyty na niskie i średnie częstotliwości, wysokie częstotliwości zostaną "obcięte" (zamiast nich będzie cisza).

Przykład SBC 328 kbit/s. U góry — oryginał, na dole — SBC, okresowo następuje przełączanie między ścieżkami. Dla dźwięku w pliku wideo używany jest kodek kompresji bezstratnej FLAC. Użycie FLAC w kontenerze mp4 nie zostało oficjalnie standaryzowane, więc nie ma pewności, że przeglądarka go odtworzy, ale powinno działać w najnowszych wersjach Chrome i Firefox na komputerze. Jeśli nie masz dźwięku, możesz pobrać plik i otworzyć go w pełnoprawnym odtwarzaczu wideo.
ZZ Top — Sharp Dressed Man

Na spektrogramie widać moment przełączenia: SBC okresowo ucina ciche dźwięki powyżej 17,5 kHz i w ogóle nie wyodrębnia bitów dla pasma powyżej 20 kHz. Pełny spektrogram dostępny po kliknięciu (1,7 MB).
Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Nie słyszę różnicy między oryginałem a SBC w tym utworze.

Weźmy coś nowszego i zasymulujmy audio, które powstałoby przy użyciu słuchawek Samsung Gear IconX z Bitpool 37 (na górze – sygnał źródłowy, na dole – SBC 239 kbps, dźwięk w FLAC).
Mindless Self Indulgence – Witness

Słyszę trzask, mniejszy efekt stereo i nieprzyjemne 'stuknięcie' wokalu w wysokich częstotliwościach.

Choć SBC to bardzo elastyczny kodek, może być skonfigurowany do niskich opóźnień, zapewnia świetną jakość audio przy wysokich bitrate'ach (452+ kbps) i całkiem dobrą dla większości ludzi przy standardowym High Quality (328 kbps), z powodu tego, że standard A2DP nie określa sztywnych profili (a tylko zaleca), twórcy staków wprowadzili sztuczne ograniczenia na Bitpool, parametry przesyłanego audio nie są wyświetlane w interfejsie użytkownika, a producenci słuchawek mogą ustalać swoje ustawienia i nigdy nie podają wartości Bitpool w specyfikacjach technicznych produktu, kodek zyskał złą sławę poprzez niską jakość dźwięku, choć nie jest to problem samego kodeka.
Parametr Bitpool wpływa na bitrate tylko w ramach jednego profilu. Ta sama wartość Bitpool 53 może generować zarówno bitrate 328 kbps przy zalecanym profilu High Quality, jak i 1212 kbps z Dual Channel i 4 pasmami, dlatego autorzy systemów operacyjnych, oprócz ograniczeń na Bitpool, nakładają ograniczenie także na Bitrate. Wydaje mi się, że taka sytuacja powstała przez niedopracowanie standardu A2DP: należało ustalać bitrate, a nie Bitpool.

Tabela wsparcia możliwości SBC w różnych systemach operacyjnych:

systemem operacyjnym
Obsługiwane częstotliwości próbkowania
Ograniczenie maks. Bitpool
Ograniczenie maks. Bitrate
Typowy Bitrate
Dynamiczna regulacja Bitpool

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

Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (przy połączeniu przychodzącym), 53 (przy połączeniu wychodzącym)
Brak ograniczeń
328 kbps
✓*

macOS High Sierra
44,1 kHz
64, domyślnie 53***
Nieznane
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
Brak ograniczeń
328 kbps

* Bitpool tylko zmniejsza się, ale nie zwiększa automatycznie w przypadku poprawy warunków transmisji. Aby przywrócić Bitpool, należy zatrzymać odtwarzanie, poczekać kilka sekund i ponownie uruchomić audio.
** Wartość domyślna zależy od ustawień stosu określonych podczas kompilacji oprogramowania. W Androidzie 8/8.1 częstotliwość to albo 44.1 kHz, albo 48 kHz, w zależności od ustawień kompilacji, w pozostałych wersjach obsługiwane są jednocześnie 44.1 kHz i 48 kHz.
*** Wartość Bitpool można podnieść w programie Bluetooth Explorer.

aptX i aptX HD

aptX to prosty i szybki kodak bez psychoakustyki, wykorzystujący adaptacyjną różnicową modulację impulsowo-kodową (ADPCM). Pojawił się około 1988 roku (data zgłoszenia patentu datuje się na luty 1988 r.), przed Bluetooth był głównie używany w profesjonalnym sprzęcie audio bezprzewodowym. Obecnie jest własnością firmy Qualcomm, wymaga licencjonowania i opłat licencyjnych. Na dzień 2014: 6000 USD jednorazowo i około 1 USD za każde urządzenie, dla partii do 10000 urządzeń (ClickHouse-Ninja/Proton, s. 16).
aptX i aptX HD to ten sam kodek z różnymi profilami kodowania.

Kodek ma tylko jeden parametr — wybór częstotliwości próbkowania. Jest także wybór liczby/reżimu kanałów, ale we wszystkich znanych mi urządzeniach (ponad 70 sztuk) obsługiwany jest wyłącznie Stereo.

Kodek
Częstotliwość próbkowania
Głębokość bitowa
Bitrate
Wsparcie kodowania
Wsparcie dekodowania

aptX
16, 32, 44.1, 48 kHz
16 bit
128 / 256 / 352 / 384 kb/s (w zależności od częstotliwości próbkowania)
Windows 10 (desktopowe i mobilne), macOS, Android 4.4+/7*, Blackberry OS 10
Szeroka gama urządzeń audio (sprzętowo)

* Wersje poniżej 7 wymagają modyfikacji stosu Bluetooth. Kodek jest obsługiwany tylko wtedy, gdy producent urządzenia z Androidem uzyskał licencję na użycie kodeka od Qualcomm (jeśli w systemie operacyjnym są biblioteki kodujące).

aptX dzieli audio na 4 pasma częstotliwości i kwantuje je tym samym sposobem bitowym: 8 bitów dla 0-5.5 kHz, 4 bity dla 5.5-11 kHz, 2 bity dla 11-16.5 kHz, 2 bity dla 16.5-22 kHz (cyfry dla częstotliwości próbkowania 44.1 kHz).

Przykład audio aptX (na górze — sygnał źródłowy, na dole — aptX, spektrogramy tylko lewych kanałów, dźwięk w FLAC):

Wyższe częstotliwości stały się nieco bardziej czerwone, ale różnicy nie słychać.

Z powodu stałego rozkładu bitów kwantowania, kodek nie może „przenieść bitów” na te częstotliwości, które najbardziej ich potrzebują. W odróżnieniu od SBC, aptX nie „przycina” częstotliwości, lecz dodaje do nich szumy kwantowania, zmniejszając dynamiczny zakres dźwięku.

Nie należy sądzić, że użycie na przykład 2 bitów dla pasma zmniejsza dynamiczny zakres do 12 dB: ADPCM pozwala na wykorzystanie do 96 dB dynamicznego zakresu nawet przy użyciu 2 bitów kwantowania, ale tylko przy określonym sygnale.
ADPCM przechowuje różnicę wartości numerycznej między bieżącą a następną próbą, zamiast zapisywać wartość bezwzględną, jak w PCM. Pozwala to zmniejszyć wymagania dotyczące liczby bitów potrzebnych do przechowywania takich samych (bez strat) lub praktycznie takich samych (z względnie małym błędem zaokrąglenia) informacji. Do zmniejszenia błędów zaokrąglenia stosowane są tablice współczynników.
Podczas tworzenia kodeka autorzy obliczyli współczynniki ADPCM na podstawie zestawu plików audio muzycznych. Im bliżej sygnał audio przypomina ten zestaw muzyki, na którym budowano tabelki, tym mniej błędów kwantowania (szumów) generuje aptX.

Z tego powodu syntetyczne testy zawsze będą dawały wyniki gorsze niż muzyka. Przygotowałem specjalny syntetyczny przykład, w którym aptX wykazuje słabe wyniki — sinusoidalna fala o częstotliwości 12.4 kHz (na górze — sygnał oryginalny, na dole — aptX. Dźwięk w FLAC. Zmniejsz głośność!):

Wykres widma:
Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Słyszalne są wyraźne szumy.

Jednak jeśli wygenerujemy sinusoidę o mniejszej amplitudzie, aby była cichsza, szumy również staną się cisze, co świadczy o szerokim zakresie dynamiki:

Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Aby dostrzec różnicę między oryginalnym utworem muzycznym a skompresowanym, można odwrócić jeden z sygnałów i zsumować utwory na kanały. Takie podejście, w ogólnym przypadku, jest niepoprawne i nie dawałoby sensownych wyników z bardziej złożonymi kodekami, ale konkretnie dla ADPCM jest całkiem odpowiednie.
Różnica między oryginałem a aptX
Średnia kwadratowa różnicy sygnałów wynosi -37.4 dB, co nie jest wiele jak na tak skompresowaną muzykę.

aptX HD

aptX HD nie jest samodzielnym kodekiem — to ulepszony profil kodowania kodeka aptX. Zmiany dotyczą liczby bitów przypisanych do kodowania zakresów częstotliwości: 10 bitów dla 0-5,5 kHz, 6 bitów dla 5,5-11 kHz, 4 bity dla 11-16,5 kHz, 4 bity dla 16,5-22 kHz (cyfry dla 44,1 kHz).

Kodek
Częstotliwość próbkowania
Głębokość bitowa
Bitrate
Wsparcie kodowania
Wsparcie dekodowania

aptX HD
16, 32, 44.1, 48 kHz
24 bity
192 / 384 / 529 / 576 kb/s (w zależności od częstotliwości próbkowania)
Android 8+*
Niektóre urządzenia audio (sprzętowo)

* Wersje poniżej 7 wymagają modyfikacji stosu Bluetooth. Kodek jest obsługiwany tylko wtedy, gdy producent urządzenia z Androidem uzyskał licencję na użycie kodeka od Qualcomm (jeśli w systemie operacyjnym są biblioteki kodujące).

Mniej powszechny niż aptX: najwyraźniej wymaga osobnego licencjonowania od Qualcomm oraz oddzielnych opłat licencyjnych.

Powtórzmy przykład z sinusoidą przy 12,4 kHz:
Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Znacznie lepiej niż w przypadku aptX, ale wciąż szumi.

aptX Low Latency

Kodek od Qualcomm, który nie ma nic wspólnego ze standardowymi aptX i aptX HD, według nielicznych informacji od osób zaangażowanych w jego rozwój. Przeznaczony do interaktywnej transmisji audio o niskiej latencji (filmy, gry), gdzie opóźnienie dźwięku nie może być dostosowywane programowo. Znane programowe realizacje enkoderów i dekoderów są nieobecne, wspierane tylko przez nadajniki, odbiorniki, słuchawki i głośniki, ale nie przez smartfony i komputery.

Częstotliwość próbkowania
Bitrate
Wsparcie kodowania
Wsparcie dekodowania

44,1 kHz
276/420 kb/s
Niektóre nadajniki (sprzętowo)
Niektóre urządzenia audio (sprzętowo)

AAC

AAC, czyli Advanced Audio Coding — kodek obliczeniowo złożony, z poważnym modelem psychoakustycznym. Zyskał szerokie uznanie dla audio w internecie, drugie pod względem popularności po MP3. Wymaga licencjonowania i opłat licencyjnych: 15000 USD jednorazowo (lub 1000 USD dla firm z mniej niż 15 pracownikami) + 0,98 USD za pierwsze 500000 urządzeń (ClickHouse-Ninja/Proton).
Kodek jest ustandaryzowany w ramach specyfikacji MPEG-2 i MPEG-4 i wbrew powszechnym błędnym przekonaniom nie przynależy do Apple.

Częstotliwość próbkowania
Bitrate
Wsparcie kodowania
Wsparcie dekodowania

8 — 96 kHz
8 — 576 kb/s (dla stereo), 256 — 320 kb/s (typowe dla Bluetooth)
macOS, Android 7+*, iOS
Szeroka gama urządzeń audio (sprzętowo)

* tylko na urządzeniach, których producenci zapłacili opłaty licencyjne

W iOS i macOS używany jest najlepszy obecnie enkoder Apple AAC, zapewniający maksymalną jakość audio. Na Androidzie używany jest drugi pod względem jakości enkoder Fraunhofer FDK AAC, ale mogą być używane różne rozwiązania sprzętowe, wbudowane w platformę (SoC), o nieznanej jakości kodowania. Według niedawnych testów strony SoundGuys, jakość kodowania AAC różnymi telefonami Android różni się znacząco:
Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Większość bezprzewodowych urządzeń audio dla AAC ma maksymalny bitrate ustawiony na 320 kbps, niektóre obsługują tylko 256 kbps. Pozostałe bitrate występują niezwykle rzadko.
AAC zapewnia doskonałą jakość przy bitrate 320 i 256 kbps, ale jest podatny na straty podczas kolejnego kodowania już skompresowanej zawartości, jednak usłyszenie jakichkolwiek różnic z oryginałem na iOS przy bitrate 256 kbps jest trudne nawet po kilku kolejnych kodowaniach, przy pojedynczym kodowaniu, na przykład, MP3 320 kbps do AAC 256 kbps straty można zignorować.
Jak w przypadku innych kodeków Bluetooth, wszelka muzyka jest najpierw dekodowana, a następnie kodowana przez kodek. Podczas odtwarzania muzyki w formacie AAC jest ona najpierw dekodowana przez system operacyjny, a następnie kodowana po raz kolejny w AAC, aby przesyłać przez Bluetooth. Jest to konieczne do miksowania kilku strumieni audio, na przykład muzyki i powiadomienia o nowej wiadomości. iOS nie jest wyjątkiem. W internecie można znaleźć wiele stwierdzeń, że muzyka w formacie AAC na iOS nie jest transkodowana podczas transmisji przez Bluetooth, co jest nieprawdą.

MP1/2/3

Kodeki z rodziny MPEG-1/2 Part 3 składają się z dobrze znanego i szeroko stosowanego MP3, mniej rozpowszechnionego MP2 (stosowanego głównie w telewizji cyfrowej i radiu), oraz zupełnie nieznanego MP1.

Stare kodeki MP1 i MP2 nie są w ogóle wspierane: nie udało mi się znaleźć żadnych słuchawek ani żadnego stosu Bluetooth, który by je kodował lub dekodował.
Dekodowanie MP3 jest obsługiwane przez niektóre słuchawki, ale kodowanie nie jest wspierane w żadnym stosie nowoczesnych systemów operacyjnych. Podobno zewnętrzny stos BlueSoleil dla Windows może kodować w MP3, jeśli ręcznie zmieni się plik konfiguracyjny, ale jego instalacja prowadzi do BSoD w Windows 10. Wniosek - kodekiem faktycznie nie można korzystać do audio Bluetooth.
Kiedyś, w latach 2006-2008, przed rozpowszechnieniem standardu A2DP w urządzeniach, ludzie słuchali muzyki MP3 na zestawie słuchawkowym Nokia BH-501 poprzez program MSI BluePlayer, który był dostępny na Symbianie i Windows Mobile. Wówczas architektura systemu operacyjnego smartfonów pozwalała na dostęp do wielu niskopoziomowych funkcji, a w Windows Mobile można było wręcz instalować zewnętrzne stosy Bluetooth.

Ostatni patent kodeka MP3 wygasł, użycie kodeka nie wymaga teraz opłat licencyjnych od 23 kwietnia 2017 roku.

Jeśli najdłużej działający patent wspomniany w powyższych odniesieniach traktować jako miarę, to technologia MP3 stała się wolna od patentów w Stanach Zjednoczonych 16 kwietnia 2017 roku, kiedy to wygasł amerykański patent 6,009,399, posiadany i administrowany przez Technicolor.

Źródło: www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.html

Częstotliwość próbkowania
Bitrate
Wsparcie kodowania
Wsparcie dekodowania

16 — 48 kHz
8 — 320 kb/s
Nigdzie nie jest wspierane
Niektóre urządzenia audio (sprzętowo)

LDAC

Nowy i aktywnie promowany kodek „Hi-Res” firmy Sony, obsługujący częstotliwości próbkowania do 96 kHz oraz 24-bitową rozdzielczość, z bitrate'em do 990 kb/s. Reklamowany jako kodek audiofilowy, jako zamiana dla istniejących kodeków Bluetooth. Posiada funkcję adaptacyjnego dostosowywania bitrate'u, w zależności od warunków radiowych.

Encoder LDAC (libldac) jest standardowo dostarczany z Androidem, dlatego kodowanie jest obsługiwane na każdym smartfonie z Androidem, zaczynając od wersji 8. Brak jest ogólnodostępnych programowych dekoderów, specyfikacja kodeka nie jest dostępna dla szerokiej publiczności, jednak przy pierwszym spojrzeniu na encoder, wewnętrzna budowa kodeka przypomina ATRAC9 — kodek firmy Sony używany w PlayStation 4 oraz Vita: oba działają w zakresie częstotliwości, używają zmodyfikowanej dyskretnej transformacji cosinusowej (MDCT) oraz kompresji z zastosowaniem algorytmu Huffmana.

Wsparcie dla LDAC dostępne jest praktycznie tylko w słuchawkach firmy Sony. Może to być rzadko spotykana możliwość dekodowania LDAC w słuchawkach i DAC innych producentów, ale bardzo rzadko.

Częstotliwość próbkowania
Bitrate
Wsparcie kodowania
Wsparcie dekodowania

44.1 — 96 kHz
303/606/909 kb/s (dla 44.1 i 88.2 kHz), 330/660/990 kb/s (dla 48 i 96 kHz)
Android 8+
Niektóre słuchawki Sony oraz nieliczne urządzenia innych producentów (sprzętowo)

Marketing LDAC jako kodeka Hi-Res szkodzi jego technicznej stronie: marnowanie bitrate'u na przesyłanie częstotliwości niesłyszalnych dla ludzkiego ucha oraz zwiększonej rozdzielczości, gdy nie wystarcza go do przesyłania dźwięku w jakości CD (44.1/16) bez strat. Na szczęście kodek ma dwa tryby pracy: przesyłanie audio CD oraz przesyłanie audio Hi-Res. W pierwszym przypadku przesyłany jest tylko dźwięk 44.1 kHz/16 bit.

Ponieważ nie ma ogólnodostępnego programowego dekodera LDAC, niemożliwe jest przetestowanie kodeka bez dodatkowych urządzeń dekodujących LDAC. Z wyników testu LDAC na DAC z jego wsparciem, który podłączyli inżynierowie serwisu SoundGuys.com przez wyjście cyfrowe i zarejestrowali generowany dźwięk na sygnałach testowych, LDAC 660 i 990 kb/s w trybie jakości CD zapewnia stosunek sygnał/szum nieco lepszy niż ten u aptX HD.

Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach
Źródło: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026

LDAC wspiera również dynamiczną zmianę bitrate'u poza ustalonymi profilami — od 138 kbit/s do 990 kbit/s, ale jak sądzę, w Androidzie używane są tylko ustandaryzowane profile 303/606/909 oraz 330/660/990 kbit/s.

Inne kodeki

Pozostałe kodeki A2DP nie zdobyły szerokiego uznania. Ich wsparcie jest albo praktycznie całkowicie nieobecne, albo dostępne jedynie w niektórych modelach słuchawek i smartfonów.
Ustandaryzowany kodek ATRAC w A2DP nigdy nie został użyty jako kodek Bluetooth, nawet przez samą Sony, kodeki Samsung HD, Samsung Scalable i Samsung UHQ-BT mają bardzo ograniczone wsparcie ze strony nadajników i odbiorników, a HWA LHDC jest zbyt nowy i wspierany tylko przez trzy (?) urządzenia.

Wsparcie kodeków przez urządzenia audio

Nie wszyscy producenci publikują dokładne informacje o kodekach, które wspierają poszczególne bezprzewodowe słuchawki, głośniki, odbiorniki lub nadajniki. Czasami wsparcie dla określonego kodeka dotyczy jedynie transmisji, ale nie odbioru (jest to istotne w przypadku kombinowanych nadajników-odbiorników), pomimo że producent jedynie ogłasza „wsparcie”, bez dodatkowych komentarzy (przypuszczam, że winą za to obarczone jest rozdzielne licencjonowanie enkoderów i dekoderów niektórych kodeków). W najtańszych urządzeniach można w ogóle nie znaleźć deklarowanego wsparcia dla aptX.

Niestety, w interfejsach większości systemów operacyjnych nigdzie nie jest wyświetlany używany kodek. Informacja o tym znajduje się jedynie w Androidzie, zaczynając od wersji 8, oraz w macOS. Jednak nawet w tych systemach będą wyświetlane tylko te kodeki, które wspiera zarówno telefon/komputer, jak i słuchawki.

Jak zatem dowiedzieć się, jakie kodeki wspiera urządzenie? Nagrać i przeanalizować zrzut danych z parametrami negocjacji A2DP!
Można to zrobić w Linuxie, macOS i Androidzie. W Linuxie można skorzystać z Wireshark lub hcidump, w macOS — Bluetooth Explorer, a w Androidzie — z wbudowanej funkcji zapisywania zrzutu HCI Bluetooth, dostępnej w narzędziach dewelopera. Otrzymasz zrzut w formacie btsnoop, który można załadować do analizatora Wireshark.
Zwróć uwagę: poprawny zrzut można uzyskać tylko łącząc się z telefonem/komputerem poprzez słuchawki/głośnik (jakkolwiek dziwnie to brzmi)! Słuchawki mogą samodzielnie nawiązywać połączenie z telefonem, a w takim przypadku będą zlecać listę kodeków telefonowi, a nie na odwrót. Aby zagwarantować nagranie poprawnego zrzutu, najpierw przerwij parowanie z urządzeniem, a następnie, podczas nagrywania zrzutu, sparuj telefon z słuchawkami.

Użyj następującego filtru wyświetlania, aby odfiltrować nieistotny ruch:

btavdtp.signal_id

W rezultacie powinieneś zobaczyć coś podobnego:
Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Możesz kliknąć na każdy punkt komendy GetCapabilities, aby zobaczyć szczegółowe specyfikacje kodeka.
Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Wireshark nie zna wszystkich identyfikatorów kodeków, więc część kodeków trzeba będzie zdekodować ręcznie, odwołując się do tabeli identyfikatorów poniżej:

Obowiązkowe:
0x00 - SBC

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

Specyficzne dla producenta:
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 - Identyfikator kodeka CSR True Wireless Stereo v3 dla AAC
0xFF 0x000A 0x0105 - Identyfikator kodeka CSR True Wireless Stereo v3 dla MP3
0xFF 0x000A 0x0106 - Identyfikator kodeka CSR True Wireless Stereo v3 dla aptX

Aby nie analizować zrzutów ręcznie, stworzyłem serwis, który przeanalizuje wszystko automatycznie: btcodecs.valdikss.org.ru

Porównanie kodeków. Który kodek jest lepszy?

Każdy kodek ma swoje zalety i wady.
aptX i aptX HD wykorzystują sztywno określone profile, które nie mogą być zmieniane bez modyfikacji kodeka i dekodera. Ani producent telefonu, ani producent słuchawek nie mogą zmienić bitrate'u ani współczynników kompresji aptX. Właściciel kodeka, Qualcomm, dostarcza referencyjny kodek w postaci biblioteki. Te fakty stanowią mocną stronę aptX – z góry wiesz, jakiej jakości dźwięk otrzymasz, bez żadnych „ale”.

SBC, przeciwnie, ma wiele konfigurowalnych opcji, dynamiczny bitrate (encoder może zmniejszać parametr bitpool, jeśli sygnał radiowy jest obciążony) i nie ma sztywnych profili, a jedynie zalecane "średniej jakości" i "wysokiej jakości", które dodano do specyfikacji A2DP w 2003 roku. "Wysoka jakość" nie jest już tak wysoka według współczesnych standardów, a większość stosów Bluetooth nie pozwala na używanie parametrów lepszych niż w profilu "wysokiej jakości", chociaż nie ma technicznych ograniczeń w tym zakresie.
Bluetooth SIG nie ma referencyjnego enkodera SBC w postaci biblioteki, a producenci implementują go samodzielnie.
To są słabe strony SBC — nigdy z góry nie wiadomo, jakiej jakości dźwięku można oczekiwać od konkretnego urządzenia. SBC może generować zarówno niską, jak i bardzo wysoką jakość dźwięku, ale ta ostatnia jest nieosiągalna bez wyłączenia lub obejścia sztucznych ograniczeń stosów Bluetooth.

Sytuacja z AAC jest niejednoznaczna: z jednej strony teoretycznie kodek powinien zapewniać jakość nieodróżnialną od oryginału, ale w praktyce, według testów laboratorium SoundGuys na różnych urządzeniach Android, to się nie potwierdza. Najprawdopodobniej wina leży po stronie niskiej jakości sprzętowych audioenkoderów wbudowanych w różne chipy telefonów. Ma sens używać AAC tylko na urządzeniach Apple, a na Androidzie ograniczyć się do aptX i LDAC.

Sprzęt obsługujący alternatywne kodeki zazwyczaj ma wyższą jakość, po prostu dlatego, że dla bardzo tanich, niskiej jakości urządzeń nie ma sensu płacić opłat licencyjnych za korzystanie z tych kodeków. Według moich testów SBC brzmi bardzo dobrze na wysokiej jakości sprzęcie.

Stworzyłem serwis internetowy, który koduje audio w SBC, aptX i aptX HD w czasie rzeczywistym, bezpośrednio w przeglądarce. Dzięki niemu będziesz mógł testować te audio-kodeki bez faktycznego przesyłania audio przez Bluetooth, na dowolnych przewodowych słuchawkach, głośnikach i swojej ulubionej muzyce, a także zmieniać parametry kodowania w trakcie odtwarzania audio:
btcodecs.valdikss.org.ru/sbc-encoder
Serwis korzysta z bibliotek kodowania SBC z projektu BlueZ oraz libopenaptx z ffmpeg, które zostały skompilowane w WebAssembly i JavaScript z C, przez emscripten, do uruchomienia w przeglądarce. Kto mógł marzyć o takim przyszłości!

Tak to wygląda:

Zwróć uwagę na to, jak zmienia się poziom hałasu powyżej 20 kHz w różnych kodekach. W oryginalnym pliku MP3 częstotliwości powyżej 20 kHz są nieobecne.

Spróbuj przełączać kodeki i oceniaj, czy słyszysz różnicę między oryginałem, SBC 53 Joint Stereo (standardowy i najpowszechniejszy profil), a aptX/aptX HD.

Słyszę różnicę między kodekami w słuchawkach!

Ludzie, którzy nie słyszą różnicy między kodekami podczas testowania za pośrednictwem usługi internetowej, zapewniają, że słyszą ją podczas słuchania muzyki w bezprzewodowych słuchawkach. Niestety, to nie żart ani efekt placebo: różnica jest rzeczywiście słyszalna, ale wynika z różnic kodeków.

Przytłaczająca większość chipsetów Bluetooth audio używanych w odbiornikach bezprzewodowych posiada cyfrowy procesor sygnałowy (Digital Signal Processor, DSP), który implementuje equalizer, kompresor, rozszerzacz stereo i inne elementy mające na celu poprawienie (lub zmianę) dźwięku. Producenci sprzętu Bluetooth mogą dostosować DSP dla każdego kodeka osobno, i podczas przełączania między kodekami słuchacz może mieć wrażenie, że słyszy różnice w działaniu kodeków, kiedy w rzeczywistości słucha różnych ustawień DSP.

Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach
Potok przetwarzania dźwięku DSP Kalimba w chipach produkcji CSR/Qualcomm

Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach
Aktywacja różnych funkcji DSP dla każdego kodeka i wyjścia osobno

Niektóre urządzenia premium są wyposażone w oprogramowanie pozwalające na dostosowanie parametrów DSP, ale większość tańszych słuchawek nie ma takiej możliwości, a użytkownicy nie mogą wyłączyć post-processingu dźwięku w prosty sposób.

Funkcjonalne cechy urządzeń

Nowoczesna wersja standardu A2DP ma funkcję „absolutnej regulacji głośności” — zarządzanie głośnością urządzenia za pomocą specjalnych komend protokołu AVRCP, które regulują wzmocnienie wyjściowego wzmacniacza, zamiast programowego zmniejszenia głośności strumienia audio. Jeśli przy zmianie głośności na słuchawkach, zmiana nie synchronizuje się z głośnością w telefonie, oznacza to, że twoje słuchawki lub telefon nie obsługują tej funkcji. W takim przypadku warto zawsze słuchać muzyki z maksymalną głośnością na telefonie, regulując faktyczną głośność przyciskami na słuchawkach — w tym przypadku stosunek sygnał/szum będzie lepszy, a jakość audio. powinno być wyżej.
W rzeczywistości zdarzają się smutne sytuacje. W moich słuchawkach RealForce OverDrive D1 dla SBC włączony jest silny kompresor, a zwiększenie głośności prowadzi do podniesienia poziomu cichych dźwięków, natomiast głośność głośnych dźwięków nie zmienia się (następuje kompresja sygnału). Z tego powodu muszę ustawiać głośność na komputerze na około połowę, w takim przypadku efekt kompresji jest praktycznie nieobecny.
Z moich obserwacji wynika, że wszystkie słuchawki z dodatkowymi kodekami obsługują funkcję absolutnej regulacji głośności, najwyraźniej jest to jeden z wymogów certyfikacji kodeków.

Niektóre słuchawki obsługują połączenie dwóch urządzeń jednocześnie. Umożliwia to na przykład słuchanie muzyki z komputera i odbieranie połączeń z telefonu. Należy jednak wiedzieć, że w tym trybie dezaktywowane są alternatywne kodeki i używany jest tylko SBC.

Funkcja AVDTP 1.3 Delay Reporting pozwala słuchawkom komunikować opóźnienie transmisji z urządzeniem nadającym, z jakim dźwięk jest faktycznie odtwarzany. Umożliwia to dostosowanie synchronizacji audio z wideo podczas oglądania plików wideo: w przypadku problemów z transmisją radiową, audio nie będzie opóźnione w stosunku do wideo, a wręcz przeciwnie, wideo będzie zatrzymywane przez odtwarzacz wideo, aż audio i wideo znów się zsynchronizują.
Funkcja ta jest obsługiwana przez wiele słuchawek, Android 9+ i Linux z PulseAudio 12.0+. Nie mam informacji na temat obsługi funkcji na innych platformach.

Dwukierunkowa komunikacja przez Bluetooth. Przesył głosu.

Aby przesyłać głos przez Bluetooth, wykorzystywana jest Synchronous Connection Oriented (SCO) — synchronizowane połączenie z wcześniejszym uzgodnieniem. Tryb ten pozwala na przesyłanie dźwięku i głosu ściśle w kolejności, z symetryczną prędkością nadawania i odbierania, bez oczekiwania na potwierdzenie przesyłania i retransmisję pakietów. Obniża to ogólną latencję przesyłania audio przez kanał radiowy, ale wprowadza poważne ograniczenia co do ilości przesyłanych danych w jednostce czasu oraz negatywnie wpływa na jakość.
Kiedy ten tryb jest używany, zarówno głos, jak i dźwięk są przesyłane w tej samej jakości.
Niestety, na rok 2019 jakość przesyłania mowy przez Bluetooth wciąż pozostaje niska, a nie jest jasne, dlaczego Bluetooth SIG nic w tej sprawie nie robi.

CVSD

Podstawowy kodek przesyłania mowy CVSD został standardyzowany w 2002 roku i jest obsługiwany przez wszystkie urządzenia dwukierunkowej komunikacji przez Bluetooth. Zapewnia przesyłanie audio z częstotliwością próbkowania 8 kHz, co odpowiada jakości zwykłej telefonii stacjonarnej.

Przykład nagrania w tym kodeku.

mSBC

Dodatkowy kodek mSBC został standardyzowany w 2009 roku, a w 2010 roku pojawiły się chipy, które wykorzystują go do przesyłania głosu. mSBC jest szeroko obsługiwany przez różne urządzenia.
Nie jest to samodzielny kodek, lecz zwykły SBC z normy A2DP, z ustalonym profilem kodowania: 16 kHz, mono, bitpool 26.

Przykład nagrania w tym kodeku.

Nie jest to rewelacja, ale znacznie lepiej niż CVSD, jednak wciąż nieprzyjemnie jest z niego korzystać do komunikacji przez internet, szczególnie gdy korzystasz ze słuchawek do rozmowy w grze — dźwięk gry także będzie przesyłany z częstotliwością próbkowania 16 kHz.

FastStream Firma CSR postanowiła rozwijać ideę ponownego wykorzystania SBC. Aby obejść ograniczenia protokołu SCO i wykorzystać wyższe bitrate'y, CSR poszli inną drogą — wdrożyli obsługę dwustronnego audio SBC w standardzie przesyłania jednokierunkowego audio A2DP, standardyzowali profile kodowania i nazwali to „FastStream”.

FastStream przesyła do głośników dźwięk stereo 44.1 lub 48 kHz z bitrate'em 212 kbit/s, a do przesyłania audio z mikrofonu wykorzystuje mono, 16 kHz, z bitrate'em 72 kbit/s (trochę lepiej niż w mSBC). Takie parametry znacznie lepiej nadają się do komunikacji w grach online — dźwięk gry i rozmówców będzie wysokiej jakości.

Przykład nagrania w tym kodeku (+ dźwięk z mikrofonu, taki sam jak w mSBC).

Firma wymyśliła ciekawy sposób, ale z powodu tego, że jest on sprzeczny ze standardem A2DP, jego wsparcie jest dostępne tylko w niektórych nadajnikach firmy (które działają jako karta dźwiękowa USB, a nie urządzenie Bluetooth), ale nie uzyskał wsparcia w stosach Bluetooth, mimo że liczba słuchawek obsługujących FastStream nie jest wcale mała.

Na chwilę obecną wsparcie FastStream w systemach operacyjnych istnieje tylko jako łatka dla PulseAudio w Linuxie od dewelopera Pali Rohára, która nie jest zawarta w głównym gałęzi programu.

aptX Low Latency

Ku wielkiemu zaskoczeniu, aptX Low Latency również obsługuje dwukierunkowy dźwięk, realizując ten sam zasad jak FastStream.
Nie uda się wykorzystać tej cechy kodeka nigdzie — wsparcia dla dekodowania Low Latency nie ma w żadnym systemie operacyjnym ani w żadnym znanym mi stosie Bluetooth.

Bluetooth 5, Classic i Low Energy

Wokół specyfikacji i wersji Bluetooth powstało wiele nieporozumień z powodu istnienia dwóch niekompatybilnych standardów pod jedną marką, które są szeroko stosowane w różnych celach.

Istnieją dwa różne, niekompatybilne protokoły Bluetooth: Bluetooth Classic i Bluetooth Low Energy (LE, znany również jako Bluetooth Smart). Jest jeszcze trzeci protokół, Bluetooth High Speed, ale jest on rzadko spotykany i nie używany w urządzeniach konsumenckich.

Od Bluetooth 4.0 zmiany w specyfikacji dotyczyły głównie Bluetooth Low Energy, a wersja Classic otrzymała tylko drobne ulepszenia.

Lista zmian między Bluetooth 4.2 a Bluetooth 5:

9 ZMIAN Z v4.2 DO 5.0

9.1 NOWE CECHY

W specyfikacji rdzenia Bluetooth 5.0 wprowadzono kilka nowych funkcji. Główne obszary ulepszeń to:
• Maska dostępności slotów (SAM)
• 2 Msym/s PHY dla LE
• LE Długi Zasięg
• Reklama o wysokim cyklu pracy, niepołączalna
• Rozszerzenia reklamy LE
• Algorytm wyboru kanałów LE #2
9.1.1 Funkcje dodane w CSA5 — Zintegrowane w v5.0
• Wyższa moc wyjściowa

Źródło: www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=421043 (strona 291)

Tylko jedna zmiana dotyczyła wersji Classic w ramach specyfikacji Bluetooth 5: dodano wsparcie dla technologii Maska dostępności slotów (SAM), która ma na celu poprawę podziału eteru radiowego. Wszystkie inne zmiany dotyczą wyłącznie Bluetooth LE (podobnie jak wyższa moc wyjściowa).

Wszystkie urządzenia audio używają tylko Bluetooth Classic. Nie można połączyć słuchawek i głośników przez Bluetooth Low Energy: nie ma standardu przesyłania dźwięku z użyciem LE. Standard A2DP, stosowany do przesyłania dźwięku wysokiej jakości, działa tylko przez Bluetooth Classic, a odpowiednika w LE nie ma.

Zakup urządzeń audio tylko ze względu na nową wersję protokołu Bluetooth 5 jest bezsensowny. Bluetooth 4.0/4.1/4.2 w kontekście przesyłania audio działa dokładnie tak samo.
Jeśli anons nowych słuchawek wspomina o podwojonym zasięgu i zmniejszonym zużyciu energii dzięki Bluetooth 5, to wiedz, że albo sami się nie orientują, albo wprowadzają cię w błąd. Nic dziwnego, że nawet producenci chipów Bluetooth w swoich zapowiedziach mylą się w różnicach nowej wersji standardu, a niektóre chipy Bluetooth 5 wspierają piątą wersję tylko dla LE, a dla Classic używają 4.2.

Opóźnienie przesyłania audio

Wielkość opóźnienia (zatrzymania) audio zależy od wielu czynników: wielkości bufora w stosie audio, w stosie Bluetooth oraz w samym odtwarzającym urządzeniu bezprzewodowym, opóźnienia algorytmicznego kodeka.

Opóźnienie prostych kodeków, takich jak SBC, aptX i aptX HD, jest bardzo małe i wynosi 3-6 ms, co można zignorować, ale złożone kodeki, takie jak AAC i LDAC, mogą powodować odczuwalne opóźnienia. Opóźnienie algorytmiczne AAC dla 44.1 kHz wynosi 60 ms. LDAC - około 30 ms (na podstawie pobieżnej analizy kodu źródłowego. Mogę się mylić, ale niezbyt mocno.)

Ostateczne opóźnienie w dużej mierze zależy od urządzenia odtwarzającego, jego chipu i bufora. Podczas testów uzyskałem rozrzut od 150 do 250 ms na różnych urządzeniach (z kodekiem SBC). Jeśli założymy, że urządzenia obsługujące dodatkowe kodeki aptX, AAC i LDAC wykorzystują wysokiej jakości komponenty oraz mały rozmiar bufora, to uzyskamy następujące typowe opóźnienia:

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

Przypominam: aptX Low Latency nie jest wspierany w systemach operacyjnych, dlatego mniejsze opóźnienie można uzyskać tylko przy połączeniu nadajnik+odbiornik lub nadajnik+słuchawki/głośnik, przy czym wszystkie urządzenia muszą wspierać ten kodek.

Problemy z urządzeniami, certyfikacją i logo Bluetooth

Jak odróżnić jakościowe urządzenie audio od taniej podróbki? Przede wszystkim po wyglądzie!

Tanie chińskie słuchawki, głośniki i odbiorniki:

  1. Nie zawierają słowa „Bluetooth” na pudełku i urządzeniu, najczęściej używają „Bezprzewodowy” i „BT”
  2. Brak logo Bluetooth Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach na pudełku lub urządzeniu
  3. Brak niebieskiej migającej diody LED

Brak tych elementów wskazuje, że urządzenie nie przeszło certyfikacji, co oznacza potencjalnie niską jakość i problemy. Na przykład słuchawki firmy Bluedio nie są certyfikowane przez Bluetooth i nie w pełni odpowiadają specyfikacji A2DP. Nie przeszłyby certyfikacji.

Przyjrzyjmy się kilku urządzeniom i ich opakowaniom:
Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

Audio przez Bluetooth: szczegółowe informacje o profilach, kodekach i urządzeniach

To wszystko to niecertyfikowane urządzenia. W instrukcji może być logo i nazwa technologii Bluetooth, ale najważniejsze jest, aby były one na opakowaniu i/lub samym urządzeniu.

Jeśli Twoje słuchawki lub głośnik mówią „Ze bluetooth dewise is connecteda successfulle”, to również nie świadczy o ich jakości:

Odtwarzaj wideo

Podsumowanie

Czy Bluetooth może całkowicie zastąpić przewodowe słuchawki i zestawy słuchawkowe? Może, ale kosztem niskiej jakości w trybie rozmowy, zwiększonego opóźnienia transmisji dźwięku, co może być irytujące w grach, oraz wielu własnościowych kodeków, które wymagają opłat licencyjnych i zwiększają finalny koszt zarówno smartfonów, jak i słuchawek.

Marketing alternatywnych kodeków jest bardzo silny: aptX i LDAC przedstawiane są jako długo oczekiwana alternatywa dla "przestarzałego i złego" SBC, który wcale nie jest aż tak zły, jak się powszechnie uważa.

Okazało się, że sztuczne ograniczenia stosów Bluetooth na bitrate SBC można obejść, tak że SBC nie będzie ustępować aptX HD. Wziąłem sprawy w swoje ręce i stworzyłem łatkę do oprogramowania LineageOS: Modyfikujemy stos Bluetooth, aby poprawić dźwięk w słuchawkach bez kodeków AAC, aptX i LDAC

Więcej informacji można znaleźć na stronach SoundGuys i SoundExpert.

Bonus: referencyjny enkoder SBC, informacje o bitrate A2DP i pliki testowe. Ten plik wcześniej był udostępniony na stronie Bluetooth publicznie, ale teraz jest dostępny tylko dla członków Bluetooth SIG.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster