Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

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 piszą szczegółowe specyfikacje produktów, a artykuły na temat dźwięku Bluetooth w Internecie są sprzeczne, czasem błędne, nie mówią o wszystkich funkcjach, a często kopiują te same informacje, które nie odpowiadają rzeczywistości.
Spróbujmy zrozumieć protokół, możliwości stosów, słuchawek i głośników Bluetooth OS, kodeków Bluetooth dla muzyki i mowy, dowiedzmy się, co wpływa na jakość przesyłanego dźwięku i opóźnienia, dowiedzmy się, jak zbierać i dekodować informacje o obsługiwanych kodekach i innych urządzeniach możliwości.

TL; DR:

  • SBC - normalny kodek
  • Słuchawki posiadają własny korektor i postprocessing dla każdego kodeka osobno
  • aptX nie jest tak dobry, jak reklamowano
  • LDAC to marketingowy bełkot
  • Jakość rozmów jest nadal niska
  • Możesz osadzić kodery audio C w swojej przeglądarce, kompilując je do WebAssembly za pomocą emscripten, a nie spowalniają zbytnio.

Muzyka przez Bluetooth

Komponent funkcjonalny Bluetooth jest określony przez profile – specyfikacje konkretnych funkcji. Strumieniowe przesyłanie muzyki przez Bluetooth wykorzystuje wysokiej jakości jednokierunkowy profil transmisji dźwięku A2DP. Standard A2DP został przyjęty w 2003 roku i od tego czasu nie zmienił się znacząco.
W ramach profilu ustandaryzowany jest 1 obowiązkowy kodek SBC o niskiej złożoności obliczeniowej, stworzony specjalnie dla Bluetooth oraz 3 dodatkowe. Możliwe jest również użycie nieudokumentowanych kodeków własnej implementacji.

Od czerwca 2019 r. jesteśmy w komiksie xkcd z 14 kodekami A2DP:

  • SBC ← standaryzowany w A2DP, obsługiwany przez wszystkie urządzenia
  • MPEG-1/2 Layer 1/2/3 ← standaryzowany w A2DP: dobrze znany MP3, stosowany w telewizji cyfrowej MP2i nieznane MP1
  • MPEG-2/4 AAC ← standaryzowane w formacie A2DP
  • ATRAK ← stary kodek firmy Sony, standaryzowany w A2DP
  • LDAC ← nowy kodek od Sony
  • aptX ← kodek z 1988 roku
  • aptX HD ← taki sam jak aptX, tylko z innymi opcjami kodowania
  • aptX Low Latency ← zupełnie inny kodek, brak implementacji oprogramowania
  • aptX Adaptive ← kolejny kodek od Qualcomma
  • Szybki strumień ← pseudokodek, dwukierunkowa modyfikacja SBC
  • HWA LHDC ← nowy kodek od Huawei
  • HD Samsunga ← obsługiwane przez 2 urządzenia
  • Skalowalny Samsung ← obsługiwane przez 2 urządzenia
  • Samsung UHQ-BT ← obsługiwane przez 3 urządzenia

Zapytacie, po co nam w ogóle kodeki, skoro Bluetooth ma EDR, który pozwala na przesyłanie danych z szybkością 2 i 3 Mbit/s, a dla nieskompresowanego dwukanałowego 16-bitowego PCM wystarczy 1.4 Mbit/s?

Transmisja danych poprzez Bluetooth

Istnieją dwa typy przesyłania danych w technologii Bluetooth: Asynchronous Connection Less (ACL) do przesyłania asynchronicznego bez nawiązywania połączenia oraz Synchronous Connection Oriented (SCO) do przesyłania synchronicznego ze wstępną negocjacją połączenia.
Transmisja odbywa się z wykorzystaniem schematu podziału czasu i wyboru kanału transmisji dla każdego pakietu z osobna (Frequency-Hop/Time-Division-Duplex, FH/TDD), dla którego czas jest dzielony na 625-mikrosekundowe interwały zwane slotami. Jedno z urządzeń nadaje w slotach o numerach parzystych, drugie w slotach o numerach nieparzystych. Transmitowany pakiet może zajmować 1, 3 lub 5 slotów w zależności od wielkości danych i ustawionego rodzaju transmisji, w tym przypadku transmisja przez jedno urządzenie odbywa się w slotach parzystych i nieparzystych aż do końca transmisji. W sumie można odebrać i wysłać do 1600 pakietów na sekundę, jeśli każdy z nich zajmuje 1 slot, a oba urządzenia przesyłają i odbierają coś bez zatrzymywania.

2 i 3 Mbit/s dla EDR, które można znaleźć w ogłoszeniach i na stronie internetowej Bluetooth, to maksymalna szybkość przesyłania kanałowego wszystkich danych ogółem (w tym nagłówków technicznych wszystkich protokołów, w których dane muszą być enkapsulowane), w dwóch kierunkach jednocześnie. Rzeczywista prędkość przesyłania danych będzie się znacznie różnić.

Do przesyłania muzyki wykorzystywana jest metoda asynchroniczna, prawie zawsze wykorzystująca pakiety typu 2-DH5 i 3-DH5, które przenoszą maksymalną ilość danych w trybie EDR odpowiednio 2 Mbit/s i 3 Mbit/s i zajmują 5 czasu -dzielenie slotów.

Schematyczne przedstawienie transmisji z wykorzystaniem 5 slotów przez jedno urządzenie i 1 slotu przez drugie (DH5/DH1):
Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

Ze względu na zasadę podziału czasu fal radiowych, po przesłaniu pakietu jesteśmy zmuszeni odczekać 625 mikrosekundowy przedział czasowy, jeśli drugie urządzenie nie przesyła do nas niczego lub transmituje mały pakiet, oraz więcej czasu, jeśli drugie urządzenie transmituje w dużych paczkach. Jeśli do telefonu podłączonych jest więcej niż jedno urządzenie (na przykład słuchawki, zegarek i bransoletka fitness), czas transferu jest dzielony pomiędzy nimi wszystkimi.

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

Typ przesyłki
Liczba gniazd
Maks. liczba bajtów w pakiecie
Maks. liczba bajtów ładunku A2DP
Maks. Szybkość transmisji danych A2DP

2-DH3
3
367
351
936 kot/s

3-DH3
3
552
536
1429 kot/s

2-DH5
5
679
663
1414 kot/s

3-DH5
5
1021
1005
2143 kot/s

1414 i 1429 kbps to zdecydowanie za mało do przesyłania nieskompresowanego dźwięku w rzeczywistych warunkach, przy zaszumionym paśmie 2.4 GHz i konieczności przesyłania danych serwisowych. EDR 3 Mbit/s wymaga mocy transmisji i hałasu w powietrzu, dlatego nawet w trybie 3-DH5 komfortowa transmisja PCM jest niemożliwa, zawsze będą krótkotrwałe przerwy i wszystko będzie działać tylko na odległość kilka metrów.
W praktyce nawet strumień audio 990 kbit/s (LDAC 990 kbit/s) jest trudny do przesłania.

Wróćmy do kodeków.

SBC

Kodek wymagany dla wszystkich urządzeń obsługujących standard A2DP. Najlepszy i najgorszy kodek jednocześnie.

Częstotliwość próbkowania
Głębia bitowa
Szybkość transmisji
Obsługa kodowania
Wsparcie dekodowania

16, 32, 44.1, 48 kHz
Bit 16
10-1500 kb/s
Wszystkie urządzenia
Wszystkie urządzenia

SBC jest prostym i szybkim obliczeniowo kodekiem, o prymitywnym modelu psychoakustycznym (stosowane jest jedynie maskowanie cichych dźwięków), wykorzystującym adaptacyjną modulację impulsowo-kodową (APCM).
Specyfikacja A2DP zaleca użycie dwóch profili: Średniej Jakości i Wysokiej Jakości.
Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

Kodek ma wiele ustawień, które pozwalają kontrolować opóźnienie algorytmiczne, liczbę próbek w bloku, algorytm dystrybucji bitów, ale prawie wszędzie stosowane są te same parametry, które są zalecane w specyfikacji: Joint Stereo, 8 pasm częstotliwości, 16 bloków w ramka audio, metoda rozkładu bitów głośności.
SBC obsługuje dynamiczną zmianę parametru Bitpool, co bezpośrednio wpływa na bitrate. Jeśli fale radiowe są zablokowane, pakiety zostaną utracone lub urządzenia znajdują się w dużych odległościach, źródło dźwięku może zmniejszyć Bitpool do czasu, aż komunikacja powróci do normy.

Większość producentów słuchawek ustawia maksymalną wartość Bitpool na 53, co ogranicza przepływność do 328 kilobitów na sekundę przy korzystaniu z zalecanego profilu.
Nawet jeśli producent słuchawek ustawił maksymalną wartość Bitpool powyżej 53 (takie modele można znaleźć np.: Beats Solo³, JBL Everest Elite 750NC, Apple AirPods, spotykane także na niektórych amplitunerach i radioodtwarzaczach samochodowych), to większość systemów operacyjnych nie pozwoli wykorzystanie zwiększonych przepływności ze względu na ustawiony wewnętrzny limit wartości w stosach Bluetooth.
Ponadto niektórzy producenci dla niektórych urządzeń ustawiają maksymalną wartość Bitpool na niską. Przykładowo dla Bluedio T jest to 39, dla Samsung Gear IconX jest to 37, co daje słabą jakość dźwięku.

Sztuczne ograniczenia ze strony twórców stosów Bluetooth powstały najprawdopodobniej w wyniku niekompatybilności niektórych urządzeń z dużymi wartościami Bitpool lub nietypowymi profilami, nawet jeśli zgłaszały dla nich wsparcie oraz niewystarczających testów podczas certyfikacji. Autorom stosów Bluetooth łatwiej było ograniczyć się do uzgadniania rekomendowanego profilu, zamiast tworzyć bazy błędnych urządzeń (choć teraz robią to dla innych nieprawidłowo działających funkcji).

SBC dynamicznie przydziela bity kwantyzacji do pasm częstotliwości na poziomie od niskiego do wysokiego, z różnymi wagami. Jeśli dla niskich i średnich częstotliwości wykorzystano całą przepływność, wysokie częstotliwości zostaną „odcięte” (zamiast tego będzie cisza).

Przykład SBC 328 kb/s. Na górze oryginał, na dole SBC, okresowo przełączające się pomiędzy utworami. Dźwięk w pliku wideo wykorzystuje kodek kompresji bezstratnej FLAC. Używanie pliku FLAC w kontenerze MP4 nie jest oficjalnie ustandaryzowane, więc nie ma gwarancji, że Twoja przeglądarka go odtworzy, ale powinno działać w najnowszych wersjach komputerowych przeglądarek Chrome i Firefox. Jeśli nie masz dźwięku, możesz pobrać plik i otworzyć go w pełnoprawnym odtwarzaczu wideo.
Top ZZ - Odważnie ubrany mężczyzna

Spektrogram pokazuje moment przełączenia: SBC okresowo obcina ciche dźwięki powyżej 17.5 kHz, a dla pasma powyżej 20 kHz nie przydziela w ogóle żadnych bitów. Pełny spektrogram dostępny jest po kliknięciu (1.7 MB).
Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

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

Weźmy coś nowszego i zasymulujmy dźwięk, jaki uzyskalibyśmy używając słuchawek Samsung Gear IconX z Bitpool 37 (powyżej – sygnał oryginalny, poniżej – SBC 239 kbps, dźwięk w formacie FLAC).
Bezmyślne pobłażanie sobie – świadek

Słyszę trzaski, mniej efektu stereo i nieprzyjemne „stukanie” w wysokich częstotliwościach wokalu.

Chociaż SBC jest bardzo elastycznym kodekiem, można go skonfigurować pod kątem małych opóźnień, zapewnia doskonałą jakość dźwięku przy dużych przepływnościach (452+ kbps) i jest całkiem dobry dla większości ludzi przy standardowej wysokiej jakości (328 kbps), ponieważ standard A2DP nie określa stałych profili (a jedynie podaje zalecenia), twórcy stosów ustawili sztuczne ograniczenia na Bitpool, parametry przesyłanego dźwięku nie są wyświetlane w interfejsie użytkownika, a producenci słuchawek mogą swobodnie ustalać własne ustawienia i nigdy wskaż wartość Bitpool w specyfikacjach technicznych produktu, kodek zasłynął z niskiej jakości dźwięku, chociaż nie stanowi to problemu w przypadku kodeka jako takiego.
Parametr Bitpool wpływa bezpośrednio na bitrate tylko w obrębie jednego profilu. Ta sama wartość Bitpool 53 może dać zarówno bitrate 328 kbps przy zalecanym profilu High Quality, jak i 1212 kbps przy Dual Channel i 4 pasmach częstotliwości, dlatego autorzy systemu operacyjnego oprócz ograniczeń Bitpool ustalili limit i Szybkość transmisji. Według mnie sytuacja ta powstała z powodu wady standardu A2DP: trzeba było negocjować przepływność, a nie Bitpool.

Tabela obsługi funkcji SBC w różnych systemach operacyjnych:

ОС
Obsługiwane częstotliwości próbkowania
Limit maks. Bitpool
Limit maks. Szybkość transmisji
Typowy bitrate
Dynamiczna regulacja Bitpool

Windows 10
44.1 кГц
53
512 kot/s
328 kot/s
✓*

Linux (BlueZ + PulseAudio)
16, 32, 44.1, 48 kHz
64 (dla połączeń przychodzących), 53 (dla połączeń wychodzących)
Bez limitu
328 kot/s
✓*

MacOS High Sierra
44.1 кГц
64, domyślnie 53***
Nieznany
328 kot/s

Android 4.4-9
44.1/48 kHz**
53
328 kot/s
328 kot/s

Android 4.1-4.3.1
44.1, 48 kHz**
53
229 kot/s
229 kot/s

Blackberry OS 10
48 кГц
53
Bez limitu
328 kot/s

* Bitpool zmniejsza się, ale nie zwiększa się automatycznie, jeśli poprawią się warunki transferu. Aby przywrócić Bitpool, musisz zatrzymać odtwarzanie, odczekać kilka sekund i ponownie uruchomić dźwięk.
** Wartość domyślna zależy od ustawień stosu określonych podczas kompilacji oprogramowania sprzętowego. W Androidzie 8/8.1 częstotliwość wynosi tylko 44.1 kHz lub 48 kHz, w zależności od ustawień podczas kompilacji, w innych wersjach obsługiwane są jednocześnie 44.1 kHz i 48 kHz.
*** Wartość Bitpool można zwiększyć w programie Bluetooth Explorer.

aptX i aptX HD

aptX to prosty i szybki kodek obliczeniowy, pozbawiony psychoakustyki, wykorzystujący adaptacyjną różnicową modulację kodowo-impulsową (ADPCM). Ukazało się około 1988 r. (data zgłoszenia patent z lutego 1988 r.), przed Bluetoothem, był używany głównie w profesjonalnym bezprzewodowym sprzęcie audio. Obecnie należący do Qualcomm, wymaga licencji i opłat licencyjnych. Od 2014 r.: 6000 USD jednorazowo i ≈1 USD na urządzenie w przypadku partii do 10000 XNUMX urządzeń (źródło, p. 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 co prawda wybór ilości/trybu kanałów, jednak we wszystkich znanych mi urządzeniach (ponad 70 sztuk) obsługiwane jest tylko Stereo.

Kodek
Częstotliwość próbkowania
Głębia bitowa
Szybkość transmisji
Obsługa kodowania
Wsparcie dekodowania

aptX
16, 32, 44.1, 48 kHz
Bit 16
128 / 256 / 352 / 384 kbps (w zależności od częstotliwości próbkowania)
Windows 10 (komputer stacjonarny i mobilny), macOS, Android 4.4+/7*, Blackberry OS 10
Szeroka gama urządzeń audio (sprzęt)

* Wersje do 7 wymagają modyfikacji stosu Bluetooth. Kodek jest obsługiwany tylko wtedy, gdy producent urządzenia z systemem Android uzyskał licencję na kodek od firmy Qualcomm (jeśli system operacyjny ma biblioteki kodowania).

aptX dzieli dźwięk na 4 pasma częstotliwości i kwantyzuje je stale przy użyciu tej samej liczby bitów: 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 ( wartości dla częstotliwości próbkowania 44.1 kHz).

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

Wysokie tony stały się nieco bardziej czerwone, ale nie było słychać różnicy.

Ze względu na stały rozkład bitów kwantyzacji, kodek nie może „przesunąć bitów” do częstotliwości, które ich najbardziej potrzebują. W przeciwieństwie do SBC, aptX nie „obcina” częstotliwości, ale dodaje do nich szum kwantyzacji, zmniejszając zakres dynamiczny dźwięku.

Nie należy zakładać, że użycie np. 2 bitów na pasmo zmniejsza zakres dynamiki do 12 dB: ADPCM pozwala na uzyskanie zakresu dynamiki do 96 dB nawet przy zastosowaniu 2 bitów kwantyzacji, ale tylko dla określonego sygnału.
ADPCM przechowuje różnicę liczbową pomiędzy bieżącą próbką a następną próbką, zamiast przechowywać wartość bezwzględną, jak w PCM. Pozwala to zmniejszyć wymagania dotyczące liczby bitów potrzebnych do przechowywania tej samej (bez strat) lub prawie takiej samej (ze stosunkowo małym błędem zaokrąglenia) informacji. Aby zmniejszyć błędy zaokrągleń, stosuje się tabele współczynników.
Tworząc kodek, autorzy obliczyli współczynniki ADPCM na zestawie muzycznych plików audio. Im sygnał audio jest bliższy zestawowi muzycznemu, na którym zbudowano tabele, tym mniej błędów kwantyzacji (szumów) tworzy aptX.

Z tego powodu testy syntetyczne zawsze dadzą gorsze wyniki niż muzyka. Zrobiłem specjalny syntetyczny przykład, w którym aptX pokazuje słabe wyniki - sinusoidę o częstotliwości 12.4 kHz (powyżej - sygnał oryginalny, poniżej - aptX. Audio w FLAC. Zmniejsz głośność!):

Wykres widma:
Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

Hałasy są wyraźnie słyszalne.

Jeśli jednak wygenerujesz falę sinusoidalną o mniejszej amplitudzie, aby była cichsza, szum również stanie się cichszy, co wskazuje na szeroki zakres dynamiki:

Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

Aby usłyszeć różnicę między oryginalnym utworem muzycznym a skompresowanym, możesz odwrócić jeden z sygnałów i dodawać utwory kanał po kanale. To podejście jest ogólnie niepoprawne i nie dałoby rozsądnych wyników w przypadku bardziej złożonych kodeków, ale szczególnie w przypadku ADPCM jest całkiem odpowiednie.
Różnica między oryginałem a aptX
Średniokwadratowa różnica sygnałów kształtuje się na poziomie -37.4 dB, co jak na tak skompresowaną muzykę nie jest dużo.

aptX HD

aptX HD nie jest samodzielnym kodekiem – jest to ulepszony profil kodowania kodeka aptX. Zmiany dotyczyły ilości bitów przeznaczonych 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łębia bitowa
Szybkość transmisji
Obsługa kodowania
Wsparcie dekodowania

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

* Wersje do 7 wymagają modyfikacji stosu Bluetooth. Kodek jest obsługiwany tylko wtedy, gdy producent urządzenia z systemem Android uzyskał licencję na kodek od firmy Qualcomm (jeśli system operacyjny ma biblioteki kodowania).

Mniej powszechne niż aptX: najwyraźniej wymaga osobnej licencji od Qualcomm i odrębnych opłat licencyjnych.

Powtórzmy przykład z falą sinusoidalną przy 12.4 kHz:
Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

Znacznie lepiej niż aptX, ale nadal trochę głośno.

aptX Low Latency

Kodek firmy Qualcomm, który nie ma nic wspólnego ze standardem aptX i aptX HD, sądząc po ograniczonych informacjach od osób zaangażowanych w jego rozwój. Zaprojektowany do interaktywnej transmisji dźwięku o niskim opóźnieniu (filmy, gry), gdzie opóźnienia dźwięku nie można regulować za pomocą oprogramowania. Nie są znane żadne implementacje programowe koderów i dekoderów, są one obsługiwane wyłącznie przez nadajniki, odbiorniki, słuchawki i głośniki, ale nie przez smartfony i komputery.

Częstotliwość próbkowania
Szybkość transmisji
Obsługa kodowania
Wsparcie dekodowania

44.1 кГц
276/420 kot/s
Niektóre nadajniki (sprzęt)
Niektóre urządzenia audio (sprzęt)

AAC

AAC, czyli Advanced Audio Coding, to skomplikowany obliczeniowo kodek z poważnym modelem psychoakustycznym. Szeroko stosowany w przypadku plików audio w Internecie, drugi pod względem popularności po formacie MP3. Wymaga licencji i opłat licencyjnych: 15000 1000 USD jednorazowo (lub 15 USD w przypadku firm zatrudniających mniej niż 0.98 pracowników) + 500000 USD za pierwsze XNUMX XNUMX urządzeń (źródło).
Kodek jest ustandaryzowany w ramach specyfikacji MPEG-2 i MPEG-4 i wbrew powszechnemu błędnemu mniemaniu nie należy do firmy Apple.

Częstotliwość próbkowania
Szybkość transmisji
Obsługa kodowania
Wsparcie dekodowania

8–96 kHz
8 - 576 kbps (dla stereo), 256 - 320 kbps (typowo dla Bluetooth)
macOS, Android 7+*, iOS
Szeroka gama urządzeń audio (sprzęt)

* tylko na urządzeniach, których producenci uiścili opłaty licencyjne

iOS i macOS wykorzystują obecnie najlepszy koder AAC firmy Apple, aby zapewnić najwyższą możliwą jakość dźwięku. Android korzysta z drugiego pod względem jakości kodera Fraunhofer FDK AAC, ale może korzystać z różnych urządzeń wbudowanych w platformę (SoC) o nieznanej jakości kodowania. Według ostatnich testów na stronie SoundGuys, jakość kodowania AAC w różnych telefonach z systemem Android znacznie się różni:
Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

Większość bezprzewodowych urządzeń audio ma maksymalną przepływność 320 kb/s dla AAC, niektóre obsługują tylko 256 kb/s. Inne szybkości transmisji są niezwykle rzadkie.
AAC zapewnia doskonałą jakość przy przepływności 320 i 256 kb/s, ale podlega warunkom utrata sekwencyjnego kodowania już skompresowanej zawartości, jednak trudno jest usłyszeć jakiekolwiek różnice w stosunku do oryginału na iOS przy przepływności 256 kbps nawet przy kilku kodowaniach sekwencyjnych; przy pojedynczym kodowaniu, na przykład MP3 320 kbps do AAC 256 kbps, straty można pominąć.
Podobnie jak w przypadku innych kodeków Bluetooth, każda muzyka jest najpierw dekodowana, a następnie kodowana przez kodek. Podczas słuchania muzyki w formacie AAC jest ona najpierw dekodowana przez system operacyjny, a następnie ponownie kodowana do formatu AAC w celu transmisji przez Bluetooth. Jest to konieczne w przypadku miksowania wielu strumieni audio, takich jak muzyka i powiadomienia o nowych wiadomościach. iOS nie jest wyjątkiem. W Internecie można znaleźć wiele stwierdzeń, że na iOS muzyka w formacie AAC nie jest transkodowana przy transmisji poprzez Bluetooth, co nie jest prawdą.

MP1/2/3

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

Stare kodeki MP1 i MP2 nie są w ogóle obsługiwane: nie mogłem znaleźć żadnych słuchawek ani stosu Bluetooth, który mógłby je kodować lub dekodować.
Niektóre słuchawki obsługują dekodowanie MP3, ale żaden nowoczesny system operacyjny nie obsługuje kodowania. Wygląda na to, że stos BlueSoleil innej firmy dla systemu Windows może kodować do formatu MP3, jeśli ręcznie zmienisz plik konfiguracyjny, ale w moim przypadku instalacja prowadzi do BSoD w systemie Windows 10. Wniosek - kodeka w rzeczywistości nie można używać do dźwięku Bluetooth.
Wcześniej, w latach 2006-2008, przed upowszechnieniem się standardu A2DP w urządzeniach, ludzie słuchali muzyki w formacie MP3 na zestawie słuchawkowym Nokia BH-501 za pośrednictwem programu MSI BluePlayer, który był dostępny na Symbianie i Windows Mobile. W tamtym czasie architektura systemu operacyjnego smartfonów umożliwiała dostęp do wielu funkcji niskiego poziomu, a w systemie Windows Mobile możliwa była nawet instalacja stosów Bluetooth innych firm.

Ostatni patent na kodek MP3 wygasł, od 23 kwietnia 2017 roku korzystanie z kodeka nie wymaga opłat licencyjnych.

Jeśli za miarę przyjąć najdłużej działający patent wspomniany w powyższych źródłach, technologia MP3 stała się wolna od patentów w Stanach Zjednoczonych 16 kwietnia 2017 r., kiedy wygasł patent amerykański nr 6,009,399 XNUMX XNUMX będący w posiadaniu firmy Technicolor i przez nią zarządzany.

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

Częstotliwość próbkowania
Szybkość transmisji
Obsługa kodowania
Wsparcie dekodowania

16–48 kHz
8 - 320 kb/s
Nie jest nigdzie obsługiwany
Niektóre urządzenia audio (sprzęt)

LDAC

Nowy i aktywnie promowany kodek „Hi-Res” firmy Sony, obsługujący częstotliwości próbkowania do 96 kHz i 24-bitową przepływność z szybkością transmisji do 990 kbps. Jest reklamowany jako kodek audiofilski, zastępujący istniejące kodeki Bluetooth. Posiada funkcję adaptacyjnej regulacji bitrate, w zależności od warunków transmisji radiowej.

Koder LDAC (biblioteka libldac) jest zawarty w standardowym pakiecie Androida, więc kodowanie jest obsługiwane na każdym smartfonie z Androidem, począwszy od wersji systemu operacyjnego 8. Nie ma ogólnodostępnych dekoderów programowych, specyfikacja kodeków nie jest dostępna dla ogółu społeczeństwa, jednak na pierwszy rzut oka na kodek, wewnętrzna struktura kodeka jest podobna do ATRAC9 - Kodek Sony używany w PlayStation 4 i Vita: oba działają w domenie częstotliwości, wykorzystują zmodyfikowaną dyskretną transformację kosinusową (MDCT) i kompresję przy użyciu algorytmu Huffmana.

Obsługę LDAC zapewniają niemal wyłącznie słuchawki Sony. Możliwość dekodowania LDAC czasami spotyka się na słuchawkach i przetwornikach DAC innych producentów, ale bardzo rzadko.

Częstotliwość próbkowania
Szybkość transmisji
Obsługa kodowania
Wsparcie dekodowania

44.1–96 kHz
303/606/909 kbit/s (dla 44.1 i 88.2 kHz), 330/660/990 kbit/s (dla 48 i 96 kHz)
Android 8 +
Niektóre słuchawki Sony i niektóre urządzenia innych producentów (sprzęt)

Reklamowanie LDAC jako kodeka Hi-Res szkodzi jego komponentom technicznym: głupotą jest wydawanie bitrate na transmisję częstotliwości niesłyszalnych dla ludzkiego ucha i zwiększanie głębi bitowej, podczas gdy nie wystarczy przesyłanie jakości CD (44.1/16) bez strat . Na szczęście kodek ma dwa tryby pracy: transmisję audio CD i transmisję audio Hi-Res. W pierwszym przypadku drogą radiową przesyłane jest jedynie 44.1 kHz/16 bitów.

Ponieważ programowy dekoder LDAC nie jest ogólnodostępny, nie da się przetestować kodeka bez dodatkowych urządzeń dekodujących LDAC. Zgodnie z wynikami testu LDAC na przetworniku DAC z jego obsługą, który inżynierowie SoundGuys.com podłączyli poprzez wyjście cyfrowe i nagrali dźwięk wyjściowy na sygnałach testowych, LDAC 660 i 990 kbps w trybie jakości CD zapewnia sygnał do współczynnik szumów nieco lepszy niż w aptX HD.

Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń
Źródło: www.soundguys.com/ldac-ultimate-bluetooth-guide-20026

LDAC obsługuje również dynamiczne przepływności poza ustalonymi profilami - od 138 kbps do 990 kbps, ale o ile wiem, Android używa tylko standardowych profili 303/606/909 i 330/660/990 kbps.

Inne kodeki

Inne kodeki A2DP nie są powszechnie stosowane. Ich wsparcie jest albo prawie całkowicie nieobecne, albo dostępne tylko w niektórych modelach słuchawek i smartfonów.
Kodek ATRAC standaryzowany w formacie A2DP nigdy nie był używany jako kodek Bluetooth nawet przez samą firmę Sony. Kodeki Samsung HD, Samsung Scalable i Samsung UHQ-BT mają bardzo ograniczoną obsługę urządzeń nadawczych i odbiorczych, a HWA LHDC jest zbyt nowy i obsługuje tylko trzy (?) urządzenia.

Obsługa kodeków dla urządzeń audio

Nie wszyscy producenci publikują dokładne informacje na temat kodeków obsługiwanych przez niektóre bezprzewodowe słuchawki, głośniki, odbiorniki lub nadajniki. Czasem zdarza się, że obsługa danego kodeka służy tylko do nadawania, a nie do odbioru (dotyczy połączonych nadajników-odbiorników), choć producent po prostu deklaruje „wsparcie” bez uwag (zakładam, że oddzielne licencje koderów i dekoderów niektórych winne są za to kodeki). W najtańszych urządzeniach deklarowanej obsługi aptX może w ogóle nie spotkać.

Niestety interfejsy większości systemów operacyjnych nigdzie nie wyświetlają użytego kodeka. Informacje na ten temat dostępne są wyłącznie w systemie Android począwszy od wersji 8 oraz macOS. Jednak nawet w tych systemach operacyjnych wyświetlane będą tylko te kodeki, które są obsługiwane zarówno przez telefon/komputer, jak i słuchawki.

Jak sprawdzić, jakie kodeki obsługuje Twoje urządzenie? Nagrywaj i analizuj zrzut ruchu z parametrami negocjacji A2DP!
Można to zrobić w systemie Linux, macOS i Android. W systemie Linux możesz używać Wireshark lub hcidump, w systemie macOS możesz korzystać z Eksploratora Bluetooth, a w systemie Android możesz korzystać ze standardowej funkcji zapisywania zrzutów Bluetooth HCI, która jest dostępna w narzędziach programistycznych. Otrzymasz zrzut w formacie btsnoop, który można załadować do analizatora Wireshark.
Zauważyć: prawidłowy zrzut można uzyskać jedynie poprzez połączenie telefonu/komputera ze słuchawkami/głośnikami (nieważne, jak zabawnie to może zabrzmieć)! Słuchawki potrafią samodzielnie nawiązać połączenie z telefonem i wtedy zażądają listy kodeków od telefonu, a nie odwrotnie. Aby mieć pewność, że zarejestrowany zostanie prawidłowy zrzut, najpierw rozparuj urządzenie, a następnie sparuj telefon ze słuchawkami podczas nagrywania zrzutu.

Użyj poniższego filtra wyświetlania, aby odfiltrować nieistotny ruch:

btavdtp.signal_id

W rezultacie powinieneś zobaczyć coś podobnego do tego:
Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

Możesz kliknąć każdy element polecenia GetCapabilities, aby wyświetlić szczegółową charakterystykę kodeka.
Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

Wireshark nie zna wszystkich identyfikatorów kodeków, więc niektóre kodeki będą musiały zostać odszyfrowane ręcznie, patrząc na poniższą tabelę identyfikatorów:

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

Aby nie analizować zrzutów ręcznie, stworzyłem usługę, która wszystko przeanalizuje 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 korzystają z zakodowanych na stałe profili, których nie można zmienić bez modyfikacji kodera i dekodera. Ani producent telefonu, ani producent słuchawek nie może zmienić współczynników szybkości transmisji ani kodowania aptX. Właściciel kodeka, Qualcomm, udostępnia koder referencyjny w postaci biblioteki. Te fakty stanowią o sile aptX – z góry wiesz, jaką jakość dźwięku uzyskasz, bez żadnych „ale”.

SBC natomiast ma wiele konfigurowalnych parametrów, dynamiczną przepływność (koder może zmniejszyć parametr bitpool, jeśli fale radiowe są zajęte) i nie ma zakodowanych na stałe profili, a jedynie zalecane „średnia jakość” i „wysoka jakość”, które zostały dodany do specyfikacji A2DP w 2003 roku. „Wysoka jakość” nie jest już tak wysoka jak na dzisiejsze standardy, a większość stosów Bluetooth nie pozwala na użycie parametrów lepszych niż profil „wysokiej jakości”, chociaż nie ma na to żadnych ograniczeń technicznych.
Bluetooth SIG nie ma referencyjnego kodera SBC jako biblioteki i producenci wdrażają go sami.
To są słabe strony SBC – nigdy nie jest z góry jasne, jakiej jakości dźwięku można się spodziewać po konkretnym urządzeniu. SBC może generować dźwięk zarówno o niskiej, jak i bardzo wysokiej jakości, ale ta ostatnia jest nieosiągalna bez wyłączenia lub ominięcia sztucznych ograniczeń stosów Bluetooth.

Sytuacja z AAC jest niejednoznaczna: z jednej strony teoretycznie kodek powinien dawać jakość nie do odróżnienia od oryginału, jednak w praktyce, sądząc po testach laboratorium SoundGuys na różnych urządzeniach z Androidem, nie znajduje to potwierdzenia. Najprawdopodobniej przyczyną są niskiej jakości sprzętowe kodery audio wbudowane w różne chipsety telefonów. Sensowne jest używanie AAC tylko na urządzeniach Apple, a na Androidzie ograniczanie go do aptX i LDAC.

Sprzęt obsługujący alternatywne kodeki jest zwykle wyższej jakości po prostu dlatego, że w przypadku bardzo tanich urządzeń o niskiej jakości nie ma sensu płacić opłat licencyjnych za używanie tych kodeków. W moich testach SBC brzmi bardzo dobrze na sprzęcie wysokiej jakości.

Zrobiłem usługę internetową, która koduje dźwięk do formatów SBC, aptX i aptX HD w czasie rzeczywistym, bezpośrednio w przeglądarce. Dzięki niemu możesz testować te kodeki audio bez przesyłania dźwięku przez Bluetooth na dowolnych przewodowych słuchawkach, głośnikach i ulubionej muzyce, a także zmieniać parametry kodowania bezpośrednio podczas odtwarzania dźwięku:
btcodecs.valdikss.org.ru/sbc-encoder
Usługa wykorzystuje biblioteki kodujące SBC z projektu BlueZ i libopenaptx z ffmpeg, które są kompilowane do WebAssembly i JavaScript z C, poprzez emscripten, do działania w przeglądarce. Kto mógłby marzyć o takiej przyszłości!

Oto jak to wygląda:

Zwróć uwagę, jak zmienia się poziom szumu po 20 kHz dla różnych kodeków. Oryginalny plik MP3 nie zawiera częstotliwości powyżej 20 kHz.

Spróbuj zmienić kodeki i zobacz, czy usłyszysz różnicę między oryginałem, SBC 53 Joint Stereo (standardowy i najpopularniejszy profil), a aptX/aptX HD.

Słyszę różnicę pomiędzy kodekami ze słuchawkami!

Osoby, które podczas testów za pośrednictwem serwisu internetowego nie słyszą różnicy pomiędzy kodekami, twierdzą, że słyszą ją podczas słuchania muzyki na słuchawkach bezprzewodowych. Niestety, to nie jest żart ani efekt placebo: różnicę naprawdę słychać, ale nie jest ona spowodowana różnicami kodeki.

Zdecydowana większość chipsetów audio Bluetooth używanych w bezprzewodowych urządzeniach odbiorczych jest wyposażona w cyfrowy procesor sygnałowy (DSP), który zawiera korektor, kompander, ekspander stereo i inne elementy mające na celu poprawę (lub zmianę) dźwięku. Producenci sprzętu Bluetooth mogą konfigurować DSP dla każdego kodeka osobno, a przełączając się między kodekami, słuchacz będzie myślał, że słyszy różnicę w działaniu kodeków, podczas gdy w rzeczywistości słucha różnych ustawień DSP.

Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń
Rurociąg przetwarzania dźwięku DSP Kalimba w chipach produkowanych przez CSR/Qualcomm

Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń
Aktywuj różne funkcje DSP dla każdego kodeka i wyjścia oddzielnie

Niektóre urządzenia premium są wyposażone w oprogramowanie umożliwiające dostosowanie ustawień DSP, ale większość tańszych słuchawek tego nie robi, a użytkownicy nie mogą ręcznie wyłączyć przetwarzania końcowego dźwięku.

Cechy funkcjonalne urządzeń

Nowoczesna wersja standardu A2DP ma funkcja „absolutnej kontroli głośności”. — kontrola głośności urządzenia za pomocą specjalnych poleceń protokołu AVRCP, który reguluje wzmocnienie stopnia wyjściowego, zamiast programowo zmniejszać głośność strumienia audio. Jeśli po zmianie głośności w słuchawkach zmiana nie zostanie zsynchronizowana z głośnością w telefonie, oznacza to, że słuchawki lub telefon nie obsługują tej funkcji. W takim przypadku warto zawsze słuchać muzyki w telefonie przy maksymalnej głośności, regulując rzeczywistą głośność przyciskami słuchawek - w tym przypadku stosunek sygnału do szumu będzie lepszy, a jakość dźwięku powinno być powyżej
W rzeczywistości zdarzają się smutne sytuacje. W moich słuchawkach RealForce OverDrive D1 dla SBC włączony jest mocny kompander i zwiększenie głośności powoduje wzrost poziomu cichych dźwięków, natomiast głośność głośnych dźwięków nie zmienia się (sygnał jest kompresowany). Z tego powodu należy ustawić głośność komputera na około połowę, w takim przypadku praktycznie nie ma efektu kompresji.
Z moich obserwacji wynika, że ​​wszystkie słuchawki z dodatkowymi kodekami obsługują funkcję bezwzględnej regulacji głośności, najwyraźniej jest to jeden z wymogów certyfikacji kodeków.

Niektóre słuchawki obsługują jednoczesne podłączenie dwóch urządzeń. Dzięki temu możesz na przykład słuchać muzyki z komputera i odbierać połączenia z telefonu. Należy jednak pamiętać, że w tym trybie alternatywne kodeki są wyłączone i używany jest tylko SBC.

Funkcja raportowania opóźnień AVDTP 1.3 umożliwia słuchawkom przekazanie do urządzenia nadawczego opóźnienia, na którym faktycznie odtwarzany jest dźwięk. Pozwala to na dostosowanie synchronizacji dźwięku z obrazem podczas przeglądania plików wideo: w przypadku problemów z transmisją radiową, dźwięk nie będzie opóźniony w stosunku do wideo, a wręcz przeciwnie, wideo będzie spowalniane przez odtwarzacz wideo do momentu, aż dźwięk i obraz zostaną ponownie zsynchronizowane.
Funkcja jest obsługiwana przez wiele słuchawek, Android 9+ i Linux z PulseAudio 12.0+. Nie wiem, czy ta funkcja jest obsługiwana na innych platformach.

Dwukierunkowa komunikacja poprzez Bluetooth. Transmisja głosu.

Do transmisji głosu w technologii Bluetooth wykorzystywana jest metoda Synchronous Connection Oriented (SCO) – transmisja synchroniczna ze wstępną negocjacją połączenia. Tryb umożliwia przesyłanie dźwięku i głosu w ściśle określonej kolejności, z symetrycznymi prędkościami wysyłania i odbierania, bez czekania na potwierdzenie transmisji i ponownego wysyłania pakietów. Zmniejsza to ogólne opóźnienie transmisji dźwięku w kanale radiowym, ale nakłada poważne ograniczenia na ilość danych przesyłanych w jednostce czasu i negatywnie wpływa na jakość.
Gdy używany jest ten tryb, zarówno głos, jak i dźwięk są przesyłane z tą samą jakością.
Niestety od 2019 r. jakość głosu przez Bluetooth jest nadal niska i nie jest jasne, dlaczego Bluetooth SIG nic z tym nie robi.

CVSD

Podstawowy kodek mowy CVSD został ustandaryzowany w 2002 roku i jest obsługiwany przez wszystkie dwukierunkowe urządzenia komunikacyjne Bluetooth. Zapewnia transmisję dźwięku z częstotliwością próbkowania 8 kHz, co odpowiada jakości konwencjonalnej telefonii przewodowej.

Przykład nagrania w tym kodeku.

mSBC

Dodatkowy kodek mSBC został ujednolicony w 2009 roku, a w 2010 roku pojawiły się już chipy wykorzystujące go do transmisji głosu. mSBC jest szeroko obsługiwany przez różne urządzenia.
To nie jest niezależny kodek, ale zwykły SBC ze standardu A2DP, ze stałym profilem kodowania: 16 kHz, mono, bitpool 26.

Przykład nagrania w tym kodeku.

Nie jest to genialne, ale znacznie lepsze niż CVSD, ale nadal jest denerwujące w komunikacji online, zwłaszcza gdy do komunikacji w grze używa się słuchawek – dźwięk gry również będzie przesyłany z częstotliwością próbkowania 16 kHz.

Firma FastStreamCSR postanowiła rozwinąć pomysł ponownego wykorzystania SBC. Aby ominąć ograniczenia protokołu SCO i wykorzystać wyższe przepływności, firma CSR poszła inną drogą - wprowadziła obsługę dwukierunkowego dźwięku SBC do standardu jednokierunkowej transmisji dźwięku A2DP, ustandaryzowane profile kodowania i nazwała to „FastStream”.

FastStream przesyła do głośników dźwięk stereo o częstotliwości 44.1 lub 48 kHz z szybkością transmisji 212 kb/s, a do przesyłania dźwięku z mikrofonu używany jest dźwięk monofoniczny o częstotliwości 16 kHz i szybkości transmisji 72 kb/s (nieco lepiej niż mSBC). Takie parametry znacznie lepiej nadają się do komunikacji w grach sieciowych – 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 mSBC).

Firma wymyśliła ciekawą kulę, która jednak ze względu na to, że jest sprzeczna ze standardem A2DP, jest obsługiwana tylko w niektórych nadajnikach tej firmy (które działają jako karta dźwiękowa USB, a nie urządzenie Bluetooth), ale tak nie jest otrzymać wsparcie w stosach Bluetooth, chociaż liczba słuchawek z obsługą FastStream nie jest tak mała.

W tej chwili obsługa FastStream w systemie operacyjnym jest tylko jako łatka dla Linux PulseAudio od programisty Pali Rohára, który nie jest uwzględniony w głównej gałęzi programu.

aptX Low Latency

Ku Twojemu zaskoczeniu, aptX Low Latency obsługuje również dźwięk dwukierunkowy, wdrażając tę ​​samą zasadę co FastStream.
Nie można nigdzie skorzystać z tej funkcji kodeka - nie ma obsługi dekodowania o niskim opóźnieniu w żadnym systemie operacyjnym ani w żadnym znanym mi stosie Bluetooth.

Bluetooth 5, klasyczny i niskoenergetyczny

Narosło wiele zamieszania wokół specyfikacji i wersji Bluetooth ze względu na obecność dwóch niezgodnych standardów w ramach tej samej marki, z których oba są powszechnie stosowane do różnych celów.

Istnieją dwa różne, niezgodne protokoły Bluetooth: Bluetooth Classic i Bluetooth Low Energy (LE, znany również jako Bluetooth Smart). Istnieje również trzeci protokół, Bluetooth High Speed, jednak nie jest on rozpowszechniony i nie jest stosowany w urządzeniach domowych.

Począwszy od Bluetooth 4.0 zmiany w specyfikacji dotyczyły głównie Bluetooth Low Energy, a wersja Classic doczekała się jedynie drobnych usprawnień.

Lista zmian pomiędzy Bluetooth 4.2 i Bluetooth 5:

9 ZMIAN Z WERSJI 4.2 NA 5.0

9.1 NOWE FUNKCJE

W wersji 5.0 specyfikacji Bluetooth Core wprowadzono kilka nowych funkcji. Główne obszary poprawy to:
• Maska dostępności gniazda (SAM)
• 2 Msym/s PHY dla LE
•LE dalekiego zasięgu
• Reklama, której nie można podłączyć, o wysokim cyklu pracy
• Rozszerzenia reklamowe LE
• Algorytm wyboru kanału LE nr 2
9.1.1 Funkcje dodane w CSA5 - zintegrowane w wersji 5.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: dodała obsługę technologii Slot Availability Mask (SAM), mającej na celu poprawę separacji transmisji radiowych. Wszystkie inne zmiany dotyczą tylko Bluetooth LE (i wyższej mocy wyjściowej).

Wszystkie Urządzenia audio korzystają wyłącznie z Bluetooth Classic. Nie da się podłączyć słuchawek i głośników przez Bluetooth Low Energy: nie ma standardu przesyłania dźwięku za pomocą LE. Standard A2DP, służący do przesyłania wysokiej jakości dźwięku, działa tylko poprzez Bluetooth Classic, a w LE nie ma analogu.

Wniosek – kupowanie urządzeń audio z Bluetooth 5 tylko ze względu na nową wersję protokołu nie ma sensu. Dokładnie tak samo będzie działać Bluetooth 4.0/4.1/4.2 w kontekście transmisji audio.
Jeśli w zapowiedzi nowych słuchawek mowa jest o podwojonym zasięgu działania i zmniejszonym poborze prądu dzięki Bluetooth 5, to warto wiedzieć, że albo sami tego nie rozumieją, albo wprowadzają w błąd. Nic dziwnego, bo nawet producenci chipów Bluetooth w swoich zapowiedziach mylą się co do różnic pomiędzy nową wersją standardu, a niektóre chipy Bluetooth 5 obsługują piątą wersję tylko dla LE, a wykorzystują 4.2 dla Classic.

Opóźnienie transmisji dźwięku

Wielkość opóźnienia (opóźnienia) w dźwięku zależy od wielu czynników: rozmiaru bufora w stosie audio, stosie Bluetooth i samym bezprzewodowym urządzeniu odtwarzającym oraz opóźnienia algorytmicznego kodeka.

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

Wynikowe opóźnienie w dużej mierze zależy od urządzenia odtwarzającego, jego chipsetu i bufora. Podczas testów uzyskałem rozpiętość 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 i mały rozmiar bufora, otrzymamy następujące typowe opóźnienia:

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

Przypomnę: aptX Low Latency nie jest obsługiwany w systemach operacyjnych, dlatego mniejsze opóźnienia można uzyskać tylko przy użyciu kombinacji nadajnik+odbiornik lub nadajnik+słuchawki/głośnik, a wszystkie urządzenia muszą obsługiwać ten kodek.

Problemy z urządzeniem Bluetooth, certyfikatami i logo

Jak odróżnić wysokiej jakości urządzenie audio od taniego rzemiosła? Przede wszystkim wygląd!

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

  1. Na pudełku i urządzeniu brakuje słowa „Bluetooth”, najczęściej używane są „Wireless” i „BT”
  2. Brak logo Bluetooth Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń na pudełku lub urządzeniu
  3. Brak migającej niebieskiej diody LED

Brak tych elementów świadczy o tym, że urządzenie nie posiada certyfikatu, co oznacza, że ​​jest potencjalnie niskiej jakości i problematyczne. Na przykład słuchawki Bluedio nie mają certyfikatu Bluetooth i nie są w pełni zgodne ze specyfikacją A2DP. Nie przeszliby certyfikacji.

Rozważmy kilka urządzeń i pudełek z nich:
Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

Dźwięk przez Bluetooth: maksimum szczegółów na temat profili, kodeków i urządzeń

To wszystko urządzenia niecertyfikowane. Instrukcja może zawierać logo i nazwę technologii Bluetooth, ale najważniejsze, że znajduje się na pudełku i/lub samym urządzeniu.

Jeśli na słuchawkach lub głośniku pojawi się komunikat „Ze bluetooth dewise pomyślnie połączono”, nie oznacza to również ich jakości:

wniosek

Czy Bluetooth może całkowicie zastąpić przewodowe słuchawki i zestawy słuchawkowe? Jest to możliwe, ale kosztem słabej jakości połączeń, zwiększonego opóźnienia dźwięku, które może być irytujące w grach, oraz szeregu zastrzeżonych kodeków, które wymagają opłat licencyjnych i zwiększają ostateczny koszt zarówno smartfonów, jak i słuchawek.

Marketing alternatywnych kodeków jest bardzo silny: aptX i LDAC są przedstawiane jako długo oczekiwany zamiennik „przestarzałego i złego” SBC, który nie jest tak zły, jak się ludziom wydaje.

Jak się okazało, sztuczne ograniczenia stosów Bluetooth na bitrate SBC można ominąć, dzięki czemu SBC nie będzie gorsze od aptX HD. Wziąłem inicjatywę w swoje ręce i zrobiłem łatkę dla 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 internetowych Dźwiękowcy и Ekspert dźwięku.

Bonus: Koder referencyjny SBC, informacje o strumieniu bitów A2DP i pliki testowe. Ten plik był kiedyś publikowany publicznie w witrynie Bluetooth, ale obecnie jest dostępny tylko dla członków Bluetooth SIG.

Źródło: www.habr.com

Dodaj komentarz