{"id":35145,"date":"2019-10-31T22:02:32","date_gmt":"2019-10-31T19:02:32","guid":{"rendered":"https:\/\/prohoster.info\/blog\/audio-cherez-bluetooth-maksimalno-podrobno-o-profilyah-kodekah-i-ustrojstvah\/"},"modified":"2019-10-31T22:02:32","modified_gmt":"2019-10-31T19:02:32","slug":"audio-cherez-bluetooth-maksimalno-podrobno-o-profilyah-kodekah-i-ustrojstvah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/audio-cherez-bluetooth-maksimalno-podrobno-o-profilyah-kodekah-i-ustrojstvah","title":{"rendered":"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/48eced30a8d5e569e0c70ab4d60c5a9f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW zwi\u0105zku z masow\u0105 produkcj\u0105 smartfon\u00f3w bez gniazda audio 3,5 mm, bezprzewodowe s\u0142uchawki Bluetooth sta\u0142y si\u0119 dla wielu g\u0142\u00f3wnym sposobem s\u0142uchania muzyki i komunikacji w trybie zestawu s\u0142uchawkowego.<br \/>\nProducenci urz\u0105dze\u0144 bezprzewodowych nie zawsze podaj\u0105 szczeg\u00f3\u0142owe specyfikacje produkt\u00f3w, a artyku\u0142y o audio Bluetooth w Internecie s\u0105 sprzeczne, miejscami niepoprawne, nie opisuj\u0105 wszystkich cech i cz\u0119sto kopiuj\u0105 te same nieprawdziwe informacje.<br \/>\nSpr\u00f3bujmy zrozumie\u0107 protok\u00f3\u0142, mo\u017cliwo\u015bci stos\u00f3w Bluetooth system\u00f3w operacyjnych, s\u0142uchawek i g\u0142o\u015bnik\u00f3w, kodek\u00f3w Bluetooth dla muzyki i rozm\u00f3w, ustalimy, co wp\u0142ywa na jako\u015b\u0107 przesy\u0142anego d\u017awi\u0119ku i op\u00f3\u017anienie, nauczymy si\u0119 zbiera\u0107 i dekodowa\u0107 informacje o wspieranych kodekach oraz innych mo\u017cliwo\u015bciach urz\u0105dze\u0144.<\/p>\n<p><b>TL;DR<\/b>: <\/p>\n<ul>\n<li>SBC \u2014 normalny kodek<\/li>\n<li>S\u0142uchawki posiadaj\u0105 w\u0142asny equalizer i przetwarzanie po ka\u017cdym kodeku osobno<\/li>\n<li>aptX nie jest tak dobry, jak o nim m\u00f3wi\u0105 reklamy<\/li>\n<li>LDAC \u2014 marketingowy szum<\/li>\n<li>Jako\u015b\u0107 d\u017awi\u0119ku w trybie rozmowy wci\u0105\u017c jest niska<\/li>\n<li>Do przegl\u0105darki mo\u017cna wbudowa\u0107 enkodery audio w C, kompiluj\u0105c je do WebAssembly przez emscripten, i nie b\u0119d\u0105 one specjalnie spowalnia\u0107.<\/li>\n<\/ul>\n<p>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>Muzyka przez Bluetooth<\/h1>\n<p>Funkcjonalno\u015b\u0107 Bluetooth jest okre\u015blana przez profile \u2014 specyfikacje konkretnych funkcji. Przesy\u0142anie muzyki w Bluetooth odbywa si\u0119 z u\u017cyciem profilu przesy\u0142ania wysokiej jako\u015bci jednoczesnego audio A2DP. Standard A2DP zosta\u0142 przyj\u0119ty w 2003 roku i od tego czasu zasadniczo si\u0119 nie zmieni\u0142.<br \/>\nW ramach profilu znormalizowano 1 obowi\u0105zkowy kodek o niskim zu\u017cyciu mocy SBC, stworzony specjalnie dla Bluetooth, oraz 3 dodatkowe. Dopuszczalne jest tak\u017ce stosowanie niedokumentowanych kodek\u00f3w w\u0142asnej implementacji.<\/p>\n<p>Na czerwiec 2019 roku jeste\u015bmy <noindex><a rel=\"nofollow\" href=\"https:\/\/xkcd.com\/927\/\">w komiksie xkcd<\/a><\/noindex> z 14 kodekami A2DP:<\/p>\n<ul>\n<li><b>SBC<\/b> \u2190 znormalizowane w A2DP, wspierane przez wszystkie urz\u0105dzenia<\/li>\n<li><b>MPEG-1\/2 Warstwa 1\/2\/3<\/b> \u2190 znormalizowane w A2DP: wszystkim znany <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/MP3\">MP3<\/a><\/noindex>, wykorzystywany w cyfrowej telewizji <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/MPEG-1_Audio_Layer_II\">MP2<\/a><\/noindex>, i nieznany <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/MPEG-1_Audio_Layer_I\">MP1<\/a><\/noindex><\/li>\n<li><b>MPEG-2\/4 AAC<\/b> \u2190 znormalizowane w A2DP<\/li>\n<li><b>ATRAC<\/b> \u2190 stary kodek od Sony, znormalizowany w A2DP<\/li>\n<li><b>LDAC<\/b> \u2190 nowy kodek od Sony<\/li>\n<li><b>aptX<\/b> \u2190 kodek z 1988 roku<\/li>\n<li><b>aptX HD<\/b> \u2190 to samo, co aptX, tylko z innymi parametrami kodowania<\/li>\n<li><b>aptX Low Latency<\/b> \u2190 zupe\u0142nie inny kodek, brak softwarowej implementacji<\/li>\n<li><b>aptX Adaptive<\/b> \u2190 jeszcze jeden kodek od Qualcomm<\/li>\n<li><b>FastStream<\/b> \u2190 pseudokodek, dwukierunkowa modyfikacja SBC<\/li>\n<li><b>HWA LHDC<\/b> \u2190 nowy kodek od Huawei<\/li>\n<li><b>Samsung HD<\/b> \u2190 obs\u0142ugiwany przez 2 urz\u0105dzenia<\/li>\n<li><b>Samsung Scalable<\/b> \u2190 obs\u0142ugiwany przez 2 urz\u0105dzenia<\/li>\n<li><b>Samsung UHQ-BT<\/b> \u2190 obs\u0142ugiwany przez 3 urz\u0105dzenia<\/li>\n<\/ul>\n<p>Mo\u017cesz si\u0119 zapyta\u0107, po co w og\u00f3le potrzebne s\u0105 kodeki, gdy Bluetooth obs\u0142uguje EDR, co pozwala na przesy\u0142anie danych z pr\u0119dko\u015bci\u0105 2 i 3 Mb\/s, a dla nieskompresowanego dwu kana\u0142owego 16-bitowego PCM wystarczy 1,4 Mb\/s?<\/p>\n<p><\/p>\n<h1>Przesy\u0142anie danych przez Bluetooth<\/h1>\n<p>W Bluetooth istniej\u0105 dwa typy przesy\u0142ania danych: Asynchronous Connection Less (ACL) dla asynchronicznego przesy\u0142ania bez nawi\u0105zywania po\u0142\u0105czenia oraz Synchronous Connection Oriented (SCO) dla synchronizowanego przesy\u0142ania z wcze\u015bniejszym ustaleniem po\u0142\u0105czenia.<br \/>\nPrzesy\u0142anie odbywa si\u0119 za pomoc\u0105 schematu podzia\u0142u czasu i wyboru kana\u0142u transmisji dla ka\u017cdego pakietu osobno (Frequency-Hop\/Time-Division-Duplex, FH\/TDD), w ramach kt\u00f3rego czas dzielony jest na interwa\u0142y 625 mikrosekund, zwane slotami (slot). Jedno z urz\u0105dze\u0144 prowadzi transmisj\u0119 w parzystych numerach slot\u00f3w, drugie \u2014 w nieparzystych. Przesy\u0142any pakiet mo\u017ce zajmowa\u0107 1, 3 lub 5 slot\u00f3w, w zale\u017cno\u015bci od wielko\u015bci danych i ustalonego typu transmisji, w takim przypadku przesy\u0142anie przez jedno urz\u0105dzenie odbywa si\u0119 w parzystych i nieparzystych slotach a\u017c do zako\u0144czenia przesy\u0142ania. \u0141\u0105cznie w ci\u0105gu sekundy mo\u017cna odebra\u0107 i wys\u0142a\u0107 do 1600 pakiet\u00f3w, je\u015bli ka\u017cdy z nich zajmuje 1 slot, a oba urz\u0105dzenia nieprzerwanie co\u015b przesy\u0142aj\u0105 i odbieraj\u0105.<\/p>\n<p>2 i 3 Mb\/s dla EDR, kt\u00f3re mo\u017cna spotka\u0107 w zapowiedziach i na stronie Bluetooth, s\u0105 maksymaln\u0105 pr\u0119dko\u015bci\u0105 kana\u0142u przesy\u0142ania wszystkich danych \u0142\u0105cznie (w tym technicznych nag\u0142\u00f3wk\u00f3w wszystkich protoko\u0142\u00f3w, w kt\u00f3re nale\u017cy enkapsulowa\u0107 dane), w obu kierunkach jednocze\u015bnie. Faktyczna pr\u0119dko\u015b\u0107 przesy\u0142ania danych mo\u017ce si\u0119 znacznie r\u00f3\u017cni\u0107.<\/p>\n<p>Do przesy\u0142ania muzyki u\u017cywany jest asynchroniczny spos\u00f3b, prawie zawsze z u\u017cyciem pakiet\u00f3w typu 2-DH5 i 3-DH5, kt\u00f3re nios\u0105 maksymaln\u0105 ilo\u015b\u0107 danych w trybie EDR 2 Mb\/s i 3 Mb\/s odpowiednio, i zajmuj\u0105 5 slot\u00f3w podzia\u0142u czasu w eterze.<\/p>\n<p>Schematyczne przedstawienie przesy\u0142ania z wykorzystaniem 5 slot\u00f3w przez jedno urz\u0105dzenie i 1 slot przez drugie (DH5\/DH1):<br \/>\n<img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/e5875cb59648c349a63c8e7196e9afbf.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZ powodu zasady podzia\u0142u czasu eteru jeste\u015bmy zmuszeni czeka\u0107 na 625-mikrosekundowy czas slotu po przes\u0142aniu pakietu, je\u015bli drugie urz\u0105dzenie nie przesy\u0142a nic lub przesy\u0142a ma\u0142y pakiet, a d\u0142u\u017cej, je\u015bli drugie urz\u0105dzenie przesy\u0142a du\u017cymi pakietami. Je\u015bli do telefonu jest pod\u0142\u0105czone wi\u0119cej ni\u017c jedno urz\u0105dzenie (na przyk\u0142ad s\u0142uchawki, zegarki i opaska fitness), czas przesy\u0142ania dzieli si\u0119 mi\u0119dzy wszystkie z nich.<\/p>\n<p>Konieczno\u015b\u0107 enkapsulacji d\u017awi\u0119ku w specjalnych protoko\u0142ach transportowych L2CAP i AVDTP zajmuje 16 bajt\u00f3w z mo\u017cliwej maksymalnej ilo\u015bci transmitowanej u\u017cytecznej \u0142adunk\u00f3w audio.<\/p>\n<p>Typ pakietu<br \/>\nLiczba slot\u00f3w<br \/>\nMax. liczba bajt\u00f3w w pakiecie<br \/>\nMax. liczba bajt\u00f3w u\u017cytecznej \u0142adunku A2DP<br \/>\nMax. bitrate u\u017cytecznej \u0142adunku A2DP<\/p>\n<p>2-DH3<br \/>\n3<br \/>\n367<br \/>\n351<br \/>\n936 kbit\/s<\/p>\n<p>3-DH3<br \/>\n3<br \/>\n552<br \/>\n536<br \/>\n1429 kbit\/s<\/p>\n<p>2-DH5<br \/>\n5<br \/>\n679<br \/>\n663<br \/>\n1414 kbit\/s<\/p>\n<p>3-DH5<br \/>\n5<br \/>\n1021<br \/>\n1005<br \/>\n2143 kbit\/s<\/p>\n<p>1414 i 1429 kbit\/s zdecydowanie nie wystarczaj\u0105 do przesy\u0142ania nieskompresowanego d\u017awi\u0119ku w rzeczywistych warunkach, z za\u015bmieceniem pasma 2.4 GHz i konieczno\u015bci\u0105 przesy\u0142ania danych kontrolnych. EDR 3 Mbit\/s jest wymagaj\u0105cy pod wzgl\u0119dem mocy przesy\u0142u i szum\u00f3w w eterze, wi\u0119c nawet w trybie 3-DH5 komfortowe przesy\u0142anie PCM jest niemo\u017cliwe, b\u0119d\u0105 wyst\u0119powa\u0107 kr\u00f3tkotrwa\u0142e przerwy, a wszystko b\u0119dzie dzia\u0142a\u0107 tylko na odleg\u0142o\u015b\u0107 kilku metr\u00f3w.<br \/>\nW praktyce nawet strumie\u0144 audio o bitrate 990 kbit\/s (LDAC 990 kbit\/s) jest przesy\u0142any z trudno\u015bci\u0105.<\/p>\n<p>Wracamy do kodek\u00f3w.<\/p>\n<h2>SBC<\/h2>\n<p>Kodek obowi\u0105zkowy dla wszystkich urz\u0105dze\u0144 wspieraj\u0105cych standard A2DP. Najlepszy i najgorszy kodek jednocze\u015bnie.<\/p>\n<p>Cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania<br \/>\nG\u0142\u0119boko\u015b\u0107 bitowa<br \/>\nBitrate<br \/>\nWsparcie kodowania<br \/>\nWsparcie dekodowania<\/p>\n<p>16, 32, 44.1, 48 kHz<br \/>\n16 bit<br \/>\n10-1500 kbit\/s<br \/>\nWszystkimi urz\u0105dzeniami<br \/>\nWszystkimi urz\u0105dzeniami<\/p>\n<p>SBC \u2014 prosty i szybki kodek obliczeniowo, z prymitywnym modelem psychoakustycznym (stosowanym tylko do maskowania cichych d\u017awi\u0119k\u00f3w), wykorzystuj\u0105cy adaptacyjn\u0105 modulacj\u0119 impulsowo-kodow\u0105 (APCM).<br \/>\nSpecyfikacja A2DP zaleca u\u017cycie dw\u00f3ch profili: Middle Quality i High Quality.<br \/>\n<img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/8939e552a23374228289a9686f4d1048.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKodek ma wiele ustawie\u0144 umo\u017cliwiaj\u0105cych zarz\u0105dzanie op\u00f3\u017anieniem algorytmu, ilo\u015bci\u0105 pr\u00f3bek w bloku, algorytmem rozk\u0142adu bit\u00f3w, ale niemal powszechnie u\u017cywane s\u0105 te same zalecane w specyfikacji parametry: Joint Stereo, 8 pasm cz\u0119stotliwo\u015bci, 16 blok\u00f3w w ramce audio, spos\u00f3b rozk\u0142adu bit\u00f3w Loudness.<br \/>\nSBC wspiera dynamiczn\u0105 zmian\u0119 parametru Bitpool, kt\u00f3ry bezpo\u015brednio wp\u0142ywa na bitrate. Je\u015bli transmisja radiowa jest zablokowana, pakiety s\u0105 tracone lub urz\u0105dzenia znajduj\u0105 si\u0119 w du\u017cej odleg\u0142o\u015bci, \u017ar\u00f3d\u0142o d\u017awi\u0119ku mo\u017ce obni\u017cy\u0107 Bitpool, a\u017c po\u0142\u0105czenie si\u0119 ustabilizuje.<\/p>\n<p>Producenci wi\u0119kszo\u015bci s\u0142uchawek ustawiaj\u0105 maksymaln\u0105 warto\u015b\u0107 parametru Bitpool na 53, co ogranicza bitrate do 328 kilobit\u00f3w na sekund\u0119 przy u\u017cyciu zalecanego profilu.<br \/>\nNawet je\u015bli producent s\u0142uchawek ustawi\u0142 maksymaln\u0105 warto\u015b\u0107 Bitpool powy\u017cej 53 (takie modele mo\u017cna spotka\u0107, np.: Beats Solo\u00b3, JBL Everest Elite 750NC, Apple AirPods, a tak\u017ce w niekt\u00f3rych odbiornikach i samochodowych jednostkach g\u0142osowych), to wi\u0119kszo\u015b\u0107 system\u00f3w operacyjnych nie pozwoli na u\u017cycie zwi\u0119kszonych bitrate'\u00f3w z powodu wewn\u0119trznego ograniczenia warto\u015bci w stosach Bluetooth.<br \/>\nPonadto niekt\u00f3rzy producenci ustalaj\u0105 nisk\u0105 maksymaln\u0105 warto\u015b\u0107 Bitpool dla niekt\u00f3rych urz\u0105dze\u0144. Na przyk\u0142ad, w Bluedio T wynosi ona 39, w Samsung Gear IconX \u2014 37, co prowadzi do s\u0142abej jako\u015bci d\u017awi\u0119ku.<\/p>\n<p>Sztuczne ograniczenia ze strony tw\u00f3rc\u00f3w stos\u00f3w Bluetooth prawdopodobnie wynikaj\u0105 z niekompatybilno\u015bci niekt\u00f3rych urz\u0105dze\u0144 z du\u017cymi warto\u015bciami Bitpool lub nietypowymi profilami, nawet je\u015bli zg\u0142asza\u0142y ich wsparcie, oraz niewystarczaj\u0105cej liczby test\u00f3w przy certyfikacji. Autorom stos\u00f3w Bluetooth \u0142atwiej by\u0142o ograniczy\u0107 si\u0119 do zatwierdzenia zalecanego profilu ni\u017c stworzy\u0107 baz\u0119 nieprawid\u0142owych urz\u0105dze\u0144 (cho\u0107 teraz to robi\u0105 dla innych niepoprawnie dzia\u0142aj\u0105cych funkcji).<\/p>\n<p>SBC dynamicznie przydziela bity kwantyzacji dla pasm cz\u0119stotliwo\u015bci, dzia\u0142aj\u0105c wed\u0142ug zasady od niskich do wysokich, z r\u00f3\u017cnymi wagami. Je\u015bli ca\u0142y bitrate zosta\u0142 u\u017cyty na niskie i \u015brednie cz\u0119stotliwo\u015bci, wysokie cz\u0119stotliwo\u015bci zostan\u0105 \"obci\u0119te\" (zamiast nich b\u0119dzie cisza).<\/p>\n<p>Przyk\u0142ad SBC 328 kbit\/s. U g\u00f3ry \u2014 orygina\u0142, na dole \u2014 SBC, okresowo nast\u0119puje prze\u0142\u0105czanie mi\u0119dzy \u015bcie\u017ckami. Dla d\u017awi\u0119ku w pliku wideo u\u017cywany jest kodek kompresji bezstratnej FLAC. U\u017cycie FLAC w kontenerze mp4 nie zosta\u0142o oficjalnie standaryzowane, wi\u0119c nie ma pewno\u015bci, \u017ce przegl\u0105darka go odtworzy, ale powinno dzia\u0142a\u0107 w najnowszych wersjach Chrome i Firefox na komputerze. Je\u015bli nie masz d\u017awi\u0119ku, mo\u017cesz pobra\u0107 plik i otworzy\u0107 go w pe\u0142noprawnym odtwarzaczu wideo.<br \/>\n<video controls style=\"top: 0; left: 0; width: 100%; height: 100%; position: absolute;\">Twoja przegl\u0105darka nie obs\u0142uguje wideo HTML5.<source src=\"https:\/\/files.catbox.moe\/8yrssu.mp4\" type=\"video\/mp4\"><\/source><\/video><i>ZZ Top \u2014 Sharp Dressed Man<\/i><\/p>\n<p>Na spektrogramie wida\u0107 moment prze\u0142\u0105czenia: SBC okresowo ucina ciche d\u017awi\u0119ki powy\u017cej 17,5 kHz i w og\u00f3le nie wyodr\u0119bnia bit\u00f3w dla pasma powy\u017cej 20 kHz. Pe\u0142ny spektrogram dost\u0119pny po klikni\u0119ciu (1,7 MB).<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/qj\/i7\/4w\/qji74wrphaigw3qtza6nepvur50.png\"><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/c59aa3f6eff4c4d966a4c96868dd7e00.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Nie s\u0142ysz\u0119 r\u00f3\u017cnicy mi\u0119dzy orygina\u0142em a SBC w tym utworze.<\/p>\n<p>We\u017amy co\u015b nowszego i zasymulujmy audio, kt\u00f3re powsta\u0142oby przy u\u017cyciu s\u0142uchawek Samsung Gear IconX z Bitpool 37 (na g\u00f3rze \u2013 sygna\u0142 \u017ar\u00f3d\u0142owy, na dole \u2013 SBC 239 kbps, d\u017awi\u0119k w FLAC).<br \/>\n<video controls style=\"top: 0; left: 0; width: 100%; height: 100%; position: absolute;\">Twoja przegl\u0105darka nie obs\u0142uguje wideo HTML5.<source src=\"https:\/\/files.catbox.moe\/r561g5.mp4\" type=\"video\/mp4\"><\/source><\/video><i>Mindless Self Indulgence \u2013 Witness<\/i><\/p>\n<p>S\u0142ysz\u0119 trzask, mniejszy efekt stereo i nieprzyjemne 'stukni\u0119cie' wokalu w wysokich cz\u0119stotliwo\u015bciach.<\/p>\n<p>Cho\u0107 SBC to bardzo elastyczny kodek, mo\u017ce by\u0107 skonfigurowany do niskich op\u00f3\u017anie\u0144, zapewnia \u015bwietn\u0105 jako\u015b\u0107 audio przy wysokich bitrate'ach (452+ kbps) i ca\u0142kiem dobr\u0105 dla wi\u0119kszo\u015bci ludzi przy standardowym High Quality (328 kbps), z powodu tego, \u017ce standard A2DP nie okre\u015bla sztywnych profili (a tylko zaleca), tw\u00f3rcy stak\u00f3w wprowadzili sztuczne ograniczenia na Bitpool, parametry przesy\u0142anego audio nie s\u0105 wy\u015bwietlane w interfejsie u\u017cytkownika, a producenci s\u0142uchawek mog\u0105 ustala\u0107 swoje ustawienia i nigdy nie podaj\u0105 warto\u015bci Bitpool w specyfikacjach technicznych produktu, kodek zyska\u0142 z\u0142\u0105 s\u0142aw\u0119 poprzez nisk\u0105 jako\u015b\u0107 d\u017awi\u0119ku, cho\u0107 nie jest to problem samego kodeka.<br \/>\nParametr Bitpool wp\u0142ywa na bitrate tylko w ramach jednego profilu. Ta sama warto\u015b\u0107 Bitpool 53 mo\u017ce generowa\u0107 zar\u00f3wno bitrate 328 kbps przy zalecanym profilu High Quality, jak i 1212 kbps z Dual Channel i 4 pasmami, dlatego autorzy system\u00f3w operacyjnych, opr\u00f3cz ogranicze\u0144 na Bitpool, nak\u0142adaj\u0105 ograniczenie tak\u017ce na Bitrate. Wydaje mi si\u0119, \u017ce taka sytuacja powsta\u0142a przez niedopracowanie standardu A2DP: nale\u017ca\u0142o ustala\u0107 bitrate, a nie Bitpool.<\/p>\n<p>Tabela wsparcia mo\u017cliwo\u015bci SBC w r\u00f3\u017cnych systemach operacyjnych:<\/p>\n<p>systemem operacyjnym<br \/>\nObs\u0142ugiwane cz\u0119stotliwo\u015bci pr\u00f3bkowania<br \/>\nOgraniczenie maks. Bitpool<br \/>\nOgraniczenie maks. Bitrate<br \/>\nTypowy Bitrate<br \/>\nDynamiczna regulacja Bitpool<\/p>\n<p><b>Windows 10<\/b><br \/>\n44,1 kHz<br \/>\n53<br \/>\n512 kbps<br \/>\n328 kbps<br \/>\n\u2713*<\/p>\n<p><b>Linux (BlueZ + PulseAudio)<\/b><br \/>\n16, 32, 44.1, 48 kHz<br \/>\n64 (przy po\u0142\u0105czeniu przychodz\u0105cym), 53 (przy po\u0142\u0105czeniu wychodz\u0105cym)<br \/>\nBrak ogranicze\u0144<br \/>\n328 kbps<br \/>\n\u2713*<\/p>\n<p><b>macOS High Sierra<\/b><br \/>\n44,1 kHz<br \/>\n64, domy\u015blnie 53***<br \/>\nNieznane<br \/>\n328 kbps<br \/>\n\u2717<\/p>\n<p><b>Android 4.4-9<\/b><br \/>\n44,1\/48 kHz**<br \/>\n53<br \/>\n328 kbps<br \/>\n328 kbps<br \/>\n\u2717<\/p>\n<p><b>Android 4.1-4.3.1<\/b><br \/>\n44,1, 48 kHz**<br \/>\n53<br \/>\n229 kbps<br \/>\n229 kbps<br \/>\n\u2717<\/p>\n<p><b>Blackberry OS 10<\/b><br \/>\n48 kHz<br \/>\n53<br \/>\nBrak ogranicze\u0144<br \/>\n328 kbps<br \/>\n\u2717<\/p>\n<p><i><b>*<\/b> Bitpool tylko zmniejsza si\u0119, ale nie zwi\u0119ksza automatycznie w przypadku poprawy warunk\u00f3w transmisji. Aby przywr\u00f3ci\u0107 Bitpool, nale\u017cy zatrzyma\u0107 odtwarzanie, poczeka\u0107 kilka sekund i ponownie uruchomi\u0107 audio.<br \/>\n<b>**<\/b> Warto\u015b\u0107 domy\u015blna zale\u017cy od ustawie\u0144 stosu okre\u015blonych podczas kompilacji oprogramowania. W Androidzie 8\/8.1 cz\u0119stotliwo\u015b\u0107 to albo 44.1 kHz, albo 48 kHz, w zale\u017cno\u015bci od ustawie\u0144 kompilacji, w pozosta\u0142ych wersjach obs\u0142ugiwane s\u0105 jednocze\u015bnie 44.1 kHz i 48 kHz.<br \/>\n<b>***<\/b> Warto\u015b\u0107 Bitpool mo\u017cna podnie\u015b\u0107 w programie Bluetooth Explorer.<\/i><\/p>\n<h2>aptX i aptX HD<\/h2>\n<p>aptX to prosty i szybki kodak bez psychoakustyki, wykorzystuj\u0105cy adaptacyjn\u0105 r\u00f3\u017cnicow\u0105 modulacj\u0119 impulsowo-kodow\u0105 (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%B4%D0%B0%D0%BF%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B8%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F\">ADPCM<\/a><\/noindex>). Pojawi\u0142 si\u0119 oko\u0142o 1988 roku (data zg\u0142oszenia <noindex><a rel=\"nofollow\" href=\"https:\/\/patents.google.com\/patent\/EP0398973B1\/en\">patentu<\/a><\/noindex> datuje si\u0119 na luty 1988 r.), przed Bluetooth by\u0142 g\u0142\u00f3wnie u\u017cywany w profesjonalnym sprz\u0119cie audio bezprzewodowym. Obecnie jest w\u0142asno\u015bci\u0105 firmy Qualcomm, wymaga licencjonowania i op\u0142at licencyjnych. Na dzie\u0144 2014: 6000 USD jednorazowo i oko\u0142o 1 USD za ka\u017cde urz\u0105dzenie, dla partii do 10000 urz\u0105dze\u0144 (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.silabs.com\/documents\/login\/presentations\/Developing-Bluetooth-Audio.pdf\">ClickHouse-Ninja\/Proton<\/a><\/noindex>, s. 16).<br \/>\naptX i aptX HD to ten sam kodek z r\u00f3\u017cnymi profilami kodowania.<\/p>\n<p>Kodek ma tylko jeden parametr \u2014 wyb\u00f3r cz\u0119stotliwo\u015bci pr\u00f3bkowania. Jest tak\u017ce wyb\u00f3r liczby\/re\u017cimu kana\u0142\u00f3w, ale we wszystkich znanych mi urz\u0105dzeniach (ponad 70 sztuk) obs\u0142ugiwany jest wy\u0142\u0105cznie Stereo.<\/p>\n<p>Kodek<br \/>\nCz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania<br \/>\nG\u0142\u0119boko\u015b\u0107 bitowa<br \/>\nBitrate<br \/>\nWsparcie kodowania<br \/>\nWsparcie dekodowania<\/p>\n<p><b>aptX<\/b><br \/>\n16, 32, 44.1, 48 kHz<br \/>\n16 bit<br \/>\n128 \/ 256 \/ 352 \/ 384 kb\/s (w zale\u017cno\u015bci od cz\u0119stotliwo\u015bci pr\u00f3bkowania)<br \/>\nWindows 10 (desktopowe i mobilne), macOS, Android 4.4+\/7*, Blackberry OS 10<br \/>\nSzeroka gama urz\u0105dze\u0144 audio (sprz\u0119towo)<\/p>\n<p><i><b>*<\/b> Wersje poni\u017cej 7 wymagaj\u0105 modyfikacji stosu Bluetooth. Kodek jest obs\u0142ugiwany tylko wtedy, gdy producent urz\u0105dzenia z Androidem uzyska\u0142 licencj\u0119 na u\u017cycie kodeka od Qualcomm (je\u015bli w systemie operacyjnym s\u0105 biblioteki koduj\u0105ce).<\/i><\/p>\n<p>aptX dzieli audio na 4 pasma cz\u0119stotliwo\u015bci i kwantuje je tym samym sposobem bitowym: 8 bit\u00f3w 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\u0119stotliwo\u015bci pr\u00f3bkowania 44.1 kHz).<\/p>\n<p>Przyk\u0142ad audio aptX (na g\u00f3rze \u2014 sygna\u0142 \u017ar\u00f3d\u0142owy, na dole \u2014 aptX, spektrogramy tylko lewych kana\u0142\u00f3w, d\u017awi\u0119k w FLAC):<br \/>\n<video controls style=\"top: 0; left: 0; width: 100%; height: 100%; position: absolute;\">Twoja przegl\u0105darka nie obs\u0142uguje wideo HTML5.<source src=\"https:\/\/files.catbox.moe\/06eohy.mp4\" type=\"video\/mp4\"><\/source><\/video><br \/>\nWy\u017csze cz\u0119stotliwo\u015bci sta\u0142y si\u0119 nieco bardziej czerwone, ale r\u00f3\u017cnicy nie s\u0142ycha\u0107.<\/p>\n<p>Z powodu sta\u0142ego rozk\u0142adu bit\u00f3w kwantowania, kodek nie mo\u017ce \u201eprzenie\u015b\u0107 bit\u00f3w\u201d na te cz\u0119stotliwo\u015bci, kt\u00f3re najbardziej ich potrzebuj\u0105. W odr\u00f3\u017cnieniu od SBC, aptX nie \u201eprzycina\u201d cz\u0119stotliwo\u015bci, lecz dodaje do nich szumy kwantowania, zmniejszaj\u0105c dynamiczny zakres d\u017awi\u0119ku.<\/p>\n<p>Nie nale\u017cy s\u0105dzi\u0107, \u017ce u\u017cycie na przyk\u0142ad 2 bit\u00f3w dla pasma zmniejsza dynamiczny zakres do 12 dB: ADPCM pozwala na wykorzystanie do 96 dB dynamicznego zakresu nawet przy u\u017cyciu 2 bit\u00f3w kwantowania, ale tylko przy okre\u015blonym sygnale.<br \/>\nADPCM przechowuje r\u00f3\u017cnic\u0119 warto\u015bci numerycznej mi\u0119dzy bie\u017c\u0105c\u0105 a nast\u0119pn\u0105 pr\u00f3b\u0105, zamiast zapisywa\u0107 warto\u015b\u0107 bezwzgl\u0119dn\u0105, jak w PCM. Pozwala to zmniejszy\u0107 wymagania dotycz\u0105ce liczby bit\u00f3w potrzebnych do przechowywania takich samych (bez strat) lub praktycznie takich samych (z wzgl\u0119dnie ma\u0142ym b\u0142\u0119dem zaokr\u0105glenia) informacji. Do zmniejszenia b\u0142\u0119d\u00f3w zaokr\u0105glenia stosowane s\u0105 tablice wsp\u00f3\u0142czynnik\u00f3w.<br \/>\nPodczas tworzenia kodeka autorzy obliczyli wsp\u00f3\u0142czynniki ADPCM na podstawie zestawu plik\u00f3w audio muzycznych. Im bli\u017cej sygna\u0142 audio przypomina ten zestaw muzyki, na kt\u00f3rym budowano tabelki, tym mniej b\u0142\u0119d\u00f3w kwantowania (szum\u00f3w) generuje aptX.<\/p>\n<p>Z tego powodu syntetyczne testy zawsze b\u0119d\u0105 dawa\u0142y wyniki gorsze ni\u017c muzyka. Przygotowa\u0142em specjalny syntetyczny przyk\u0142ad, w kt\u00f3rym aptX wykazuje s\u0142abe wyniki \u2014 sinusoidalna fala o cz\u0119stotliwo\u015bci 12.4 kHz (na g\u00f3rze \u2014 sygna\u0142 oryginalny, na dole \u2014 aptX. D\u017awi\u0119k w FLAC. Zmniejsz g\u0142o\u015bno\u015b\u0107!):<br \/>\n<video controls style=\"top: 0; left: 0; width: 100%; height: 100%; position: absolute;\">Twoja przegl\u0105darka nie obs\u0142uguje wideo HTML5.<source src=\"https:\/\/files.catbox.moe\/kterhd.mp4\" type=\"video\/mp4\"><\/source><\/video><br \/>\nWykres widma:<br \/>\n<img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/94ecbf4a6f93b6ca85ca997e2be453ad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u0142yszalne s\u0105 wyra\u017ane szumy.<\/p>\n<p>Jednak je\u015bli wygenerujemy sinusoid\u0119 o mniejszej amplitudzie, aby by\u0142a cichsza, szumy r\u00f3wnie\u017c stan\u0105 si\u0119 cisze, co \u015bwiadczy o szerokim zakresie dynamiki:<\/p>\n<p><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/64d0a3f41c152f5f4d01230722fc197a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAby dostrzec r\u00f3\u017cnic\u0119 mi\u0119dzy oryginalnym utworem muzycznym a skompresowanym, mo\u017cna odwr\u00f3ci\u0107 jeden z sygna\u0142\u00f3w i zsumowa\u0107 utwory na kana\u0142y. Takie podej\u015bcie, w og\u00f3lnym przypadku, jest niepoprawne i nie dawa\u0142oby sensownych wynik\u00f3w z bardziej z\u0142o\u017conymi kodekami, ale konkretnie dla ADPCM jest ca\u0142kiem odpowiednie.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/files.catbox.moe\/leq24q.flac\">R\u00f3\u017cnica mi\u0119dzy orygina\u0142em a aptX<\/a><\/noindex><br \/>\n\u015arednia kwadratowa r\u00f3\u017cnicy sygna\u0142\u00f3w wynosi -37.4 dB, co nie jest wiele jak na tak skompresowan\u0105 muzyk\u0119.<\/p>\n<h3>aptX HD<\/h3>\n<p>aptX HD nie jest samodzielnym kodekiem \u2014 to ulepszony profil kodowania kodeka aptX. Zmiany dotycz\u0105 liczby bit\u00f3w przypisanych do kodowania zakres\u00f3w cz\u0119stotliwo\u015bci: 10 bit\u00f3w dla 0-5,5 kHz, 6 bit\u00f3w dla 5,5-11 kHz, 4 bity dla 11-16,5 kHz, 4 bity dla 16,5-22 kHz (cyfry dla 44,1 kHz).<\/p>\n<p>Kodek<br \/>\nCz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania<br \/>\nG\u0142\u0119boko\u015b\u0107 bitowa<br \/>\nBitrate<br \/>\nWsparcie kodowania<br \/>\nWsparcie dekodowania<\/p>\n<p><b>aptX HD<\/b><br \/>\n16, 32, 44.1, 48 kHz<br \/>\n24 bity<br \/>\n192 \/ 384 \/ 529 \/ 576 kb\/s (w zale\u017cno\u015bci od cz\u0119stotliwo\u015bci pr\u00f3bkowania)<br \/>\nAndroid 8+*<br \/>\nNiekt\u00f3re urz\u0105dzenia audio (sprz\u0119towo)<\/p>\n<p><i><b>*<\/b> Wersje poni\u017cej 7 wymagaj\u0105 modyfikacji stosu Bluetooth. Kodek jest obs\u0142ugiwany tylko wtedy, gdy producent urz\u0105dzenia z Androidem uzyska\u0142 licencj\u0119 na u\u017cycie kodeka od Qualcomm (je\u015bli w systemie operacyjnym s\u0105 biblioteki koduj\u0105ce).<\/i><\/p>\n<p>Mniej powszechny ni\u017c aptX: najwyra\u017aniej wymaga osobnego licencjonowania od Qualcomm oraz oddzielnych op\u0142at licencyjnych.<\/p>\n<p>Powt\u00f3rzmy przyk\u0142ad z sinusoid\u0105 przy 12,4 kHz:<br \/>\n<img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/fe4f8d91dcbc39af881129a9c78ca453.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZnacznie lepiej ni\u017c w przypadku aptX, ale wci\u0105\u017c szumi.<\/p>\n<h2>aptX Low Latency<\/h2>\n<p>Kodek od Qualcomm, kt\u00f3ry nie ma nic wsp\u00f3lnego ze standardowymi aptX i aptX HD, wed\u0142ug nielicznych informacji od os\u00f3b zaanga\u017cowanych w jego rozw\u00f3j. Przeznaczony do interaktywnej transmisji audio o niskiej latencji (filmy, gry), gdzie op\u00f3\u017anienie d\u017awi\u0119ku nie mo\u017ce by\u0107 dostosowywane programowo. Znane programowe realizacje enkoder\u00f3w i dekoder\u00f3w s\u0105 nieobecne, wspierane tylko przez nadajniki, odbiorniki, s\u0142uchawki i g\u0142o\u015bniki, ale nie przez smartfony i komputery.<\/p>\n<p>Cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania<br \/>\nBitrate<br \/>\nWsparcie kodowania<br \/>\nWsparcie dekodowania<\/p>\n<p>44,1 kHz<br \/>\n276\/420 kb\/s<br \/>\nNiekt\u00f3re nadajniki (sprz\u0119towo)<br \/>\nNiekt\u00f3re urz\u0105dzenia audio (sprz\u0119towo)<\/p>\n<h2>AAC<\/h2>\n<p>AAC, czyli Advanced Audio Coding \u2014 kodek obliczeniowo z\u0142o\u017cony, z powa\u017cnym modelem psychoakustycznym. Zyska\u0142 szerokie uznanie dla audio w internecie, drugie pod wzgl\u0119dem popularno\u015bci po MP3. Wymaga licencjonowania i op\u0142at licencyjnych: 15000 USD jednorazowo (lub 1000 USD dla firm z mniej ni\u017c 15 pracownikami) + 0,98 USD za pierwsze 500000 urz\u0105dze\u0144 (<noindex><a rel=\"nofollow\" href=\"http:\/\/www.via-corp.com\/us\/en\/licensing\/aac\/licensefees.html\">ClickHouse-Ninja\/Proton<\/a><\/noindex>).<br \/>\nKodek jest ustandaryzowany w ramach specyfikacji MPEG-2 i MPEG-4 i wbrew powszechnym b\u0142\u0119dnym przekonaniom nie przynale\u017cy do Apple.<\/p>\n<p>Cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania<br \/>\nBitrate<br \/>\nWsparcie kodowania<br \/>\nWsparcie dekodowania<\/p>\n<p>8 \u2014 96 kHz<br \/>\n8 \u2014 576 kb\/s (dla stereo), 256 \u2014 320 kb\/s (typowe dla Bluetooth)<br \/>\nmacOS, Android 7+*, iOS<br \/>\nSzeroka gama urz\u0105dze\u0144 audio (sprz\u0119towo)<\/p>\n<p><i><b>*<\/b> tylko na urz\u0105dzeniach, kt\u00f3rych producenci zap\u0142acili op\u0142aty licencyjne<\/i><\/p>\n<p>W iOS i macOS u\u017cywany jest najlepszy obecnie enkoder Apple AAC, zapewniaj\u0105cy maksymaln\u0105 jako\u015b\u0107 audio. Na Androidzie u\u017cywany jest drugi pod wzgl\u0119dem jako\u015bci enkoder Fraunhofer FDK AAC, ale mog\u0105 by\u0107 u\u017cywane r\u00f3\u017cne rozwi\u0105zania sprz\u0119towe, wbudowane w platform\u0119 (SoC), o nieznanej jako\u015bci kodowania. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.soundguys.com\/the-ultimate-guide-to-bluetooth-headphones-aac-20296\/\">Wed\u0142ug niedawnych test\u00f3w strony SoundGuys<\/a><\/noindex>, jako\u015b\u0107 kodowania AAC r\u00f3\u017cnymi telefonami Android r\u00f3\u017cni si\u0119 znacz\u0105co:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.soundguys.com\/wp-content\/uploads\/2018\/10\/aac-enhanced-view-fr-1200x788.jpg\"><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/7ae72554564f215dc765272065f5c97c.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Wi\u0119kszo\u015b\u0107 bezprzewodowych urz\u0105dze\u0144 audio dla AAC ma maksymalny bitrate ustawiony na 320 kbps, niekt\u00f3re obs\u0142uguj\u0105 tylko 256 kbps. Pozosta\u0142e bitrate wyst\u0119puj\u0105 niezwykle rzadko.<br \/>\nAAC zapewnia doskona\u0142\u0105 jako\u015b\u0107 przy bitrate 320 i 256 kbps, ale jest podatny na <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Generation_loss\">straty podczas kolejnego kodowania ju\u017c skompresowanej zawarto\u015bci<\/a><\/noindex>, jednak us\u0142yszenie jakichkolwiek r\u00f3\u017cnic z orygina\u0142em na iOS przy bitrate 256 kbps jest trudne nawet po kilku kolejnych kodowaniach, przy pojedynczym kodowaniu, na przyk\u0142ad, MP3 320 kbps do AAC 256 kbps straty mo\u017cna zignorowa\u0107.<br \/>\nJak w przypadku innych kodek\u00f3w Bluetooth, wszelka muzyka jest najpierw dekodowana, a nast\u0119pnie kodowana przez kodek. Podczas odtwarzania muzyki w formacie AAC jest ona najpierw dekodowana przez system operacyjny, a nast\u0119pnie kodowana po raz kolejny w AAC, aby przesy\u0142a\u0107 przez Bluetooth. Jest to konieczne do miksowania kilku strumieni audio, na przyk\u0142ad muzyki i powiadomienia o nowej wiadomo\u015bci. iOS nie jest wyj\u0105tkiem. W internecie mo\u017cna znale\u017a\u0107 wiele stwierdze\u0144, \u017ce muzyka w formacie AAC na iOS nie jest transkodowana podczas transmisji przez Bluetooth, co jest nieprawd\u0105.<\/p>\n<p><\/p>\n<h2>MP1\/2\/3<\/h2>\n<p>Kodeki z rodziny MPEG-1\/2 Part 3 sk\u0142adaj\u0105 si\u0119 z dobrze znanego i szeroko stosowanego MP3, mniej rozpowszechnionego MP2 (stosowanego g\u0142\u00f3wnie w telewizji cyfrowej i radiu), oraz zupe\u0142nie nieznanego MP1.<\/p>\n<p>Stare kodeki MP1 i MP2 nie s\u0105 w og\u00f3le wspierane: nie uda\u0142o mi si\u0119 znale\u017a\u0107 \u017cadnych s\u0142uchawek ani \u017cadnego stosu Bluetooth, kt\u00f3ry by je kodowa\u0142 lub dekodowa\u0142.<br \/>\nDekodowanie MP3 jest obs\u0142ugiwane przez niekt\u00f3re s\u0142uchawki, ale kodowanie nie jest wspierane w \u017cadnym stosie nowoczesnych system\u00f3w operacyjnych. Podobno zewn\u0119trzny stos BlueSoleil dla Windows mo\u017ce kodowa\u0107 w MP3, je\u015bli r\u0119cznie zmieni si\u0119 plik konfiguracyjny, ale jego instalacja prowadzi do BSoD w Windows 10. Wniosek - kodekiem faktycznie nie mo\u017cna korzysta\u0107 do audio Bluetooth.<br \/>\nKiedy\u015b, w latach 2006-2008, przed rozpowszechnieniem standardu A2DP w urz\u0105dzeniach, ludzie s\u0142uchali muzyki MP3 na zestawie s\u0142uchawkowym Nokia BH-501 poprzez program MSI BluePlayer, kt\u00f3ry by\u0142 dost\u0119pny na Symbianie i Windows Mobile. W\u00f3wczas architektura systemu operacyjnego smartfon\u00f3w pozwala\u0142a na dost\u0119p do wielu niskopoziomowych funkcji, a w Windows Mobile mo\u017cna by\u0142o wr\u0119cz instalowa\u0107 zewn\u0119trzne stosy Bluetooth.<\/p>\n<p>Ostatni patent kodeka MP3 wygas\u0142, u\u017cycie kodeka nie wymaga teraz op\u0142at licencyjnych od 23 kwietnia 2017 roku.<\/p>\n<blockquote><p>Je\u015bli najd\u0142u\u017cej dzia\u0142aj\u0105cy patent wspomniany w powy\u017cszych odniesieniach traktowa\u0107 jako miar\u0119, to technologia MP3 sta\u0142a si\u0119 wolna od patent\u00f3w w Stanach Zjednoczonych 16 kwietnia 2017 roku, kiedy to wygas\u0142 ameryka\u0144ski patent 6,009,399, posiadany i administrowany przez Technicolor.<\/p><\/blockquote>\n<p><i>\u0179r\u00f3d\u0142o: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.iis.fraunhofer.de\/en\/ff\/amm\/prod\/audiocodec\/audiocodecs\/mp3.html\">www.iis.fraunhofer.de\/en\/ff\/amm\/prod\/audiocodec\/audiocodecs\/mp3.html<\/a><\/noindex><\/i><\/p>\n<p>Cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania<br \/>\nBitrate<br \/>\nWsparcie kodowania<br \/>\nWsparcie dekodowania<\/p>\n<p>16 \u2014 48 kHz<br \/>\n8 \u2014 320 kb\/s<br \/>\nNigdzie nie jest wspierane<br \/>\nNiekt\u00f3re urz\u0105dzenia audio (sprz\u0119towo)<\/p>\n<h2>LDAC<\/h2>\n<p>Nowy i aktywnie promowany kodek \u201eHi-Res\u201d firmy Sony, obs\u0142uguj\u0105cy cz\u0119stotliwo\u015bci pr\u00f3bkowania do 96 kHz oraz 24-bitow\u0105 rozdzielczo\u015b\u0107, z bitrate'em do 990 kb\/s. Reklamowany jako kodek audiofilowy, jako zamiana dla istniej\u0105cych kodek\u00f3w Bluetooth. Posiada funkcj\u0119 adaptacyjnego dostosowywania bitrate'u, w zale\u017cno\u015bci od warunk\u00f3w radiowych.<\/p>\n<p>Encoder LDAC (<noindex><a rel=\"nofollow\" href=\"https:\/\/android.googlesource.com\/platform\/external\/libldac\/\">libldac<\/a><\/noindex>) jest standardowo dostarczany z Androidem, dlatego kodowanie jest obs\u0142ugiwane na ka\u017cdym smartfonie z Androidem, zaczynaj\u0105c od wersji 8. Brak jest og\u00f3lnodost\u0119pnych programowych dekoder\u00f3w, specyfikacja kodeka nie jest dost\u0119pna dla szerokiej publiczno\u015bci, jednak przy pierwszym spojrzeniu na encoder, wewn\u0119trzna budowa kodeka przypomina <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Adaptive_Transform_Acoustic_Coding#ATRAC9\">ATRAC9<\/a><\/noindex> \u2014 kodek firmy Sony u\u017cywany w PlayStation 4 oraz Vita: oba dzia\u0142aj\u0105 w zakresie cz\u0119stotliwo\u015bci, u\u017cywaj\u0105 zmodyfikowanej dyskretnej transformacji cosinusowej (MDCT) oraz kompresji z zastosowaniem algorytmu Huffmana.<\/p>\n<p>Wsparcie dla LDAC dost\u0119pne jest praktycznie tylko w s\u0142uchawkach firmy Sony. Mo\u017ce to by\u0107 rzadko spotykana mo\u017cliwo\u015b\u0107 dekodowania LDAC w s\u0142uchawkach i DAC innych producent\u00f3w, ale bardzo rzadko.<\/p>\n<p>Cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania<br \/>\nBitrate<br \/>\nWsparcie kodowania<br \/>\nWsparcie dekodowania<\/p>\n<p>44.1 \u2014 96 kHz<br \/>\n303\/606\/909 kb\/s (dla 44.1 i 88.2 kHz), 330\/660\/990 kb\/s (dla 48 i 96 kHz)<br \/>\nAndroid 8+<br \/>\nNiekt\u00f3re s\u0142uchawki Sony oraz nieliczne urz\u0105dzenia innych producent\u00f3w (sprz\u0119towo)<\/p>\n<p>Marketing LDAC jako kodeka Hi-Res szkodzi jego technicznej stronie: marnowanie bitrate'u na przesy\u0142anie cz\u0119stotliwo\u015bci nies\u0142yszalnych dla ludzkiego ucha oraz zwi\u0119kszonej rozdzielczo\u015bci, gdy nie wystarcza go do przesy\u0142ania d\u017awi\u0119ku w jako\u015bci CD (44.1\/16) bez strat. Na szcz\u0119\u015bcie kodek ma dwa tryby pracy: przesy\u0142anie audio CD oraz przesy\u0142anie audio Hi-Res. W pierwszym przypadku przesy\u0142any jest tylko d\u017awi\u0119k 44.1 kHz\/16 bit.<\/p>\n<p>Poniewa\u017c nie ma og\u00f3lnodost\u0119pnego programowego dekodera LDAC, niemo\u017cliwe jest przetestowanie kodeka bez dodatkowych urz\u0105dze\u0144 dekoduj\u0105cych LDAC. Z wynik\u00f3w testu LDAC na DAC z jego wsparciem, kt\u00f3ry pod\u0142\u0105czyli in\u017cynierowie serwisu SoundGuys.com przez wyj\u015bcie cyfrowe i zarejestrowali generowany d\u017awi\u0119k na sygna\u0142ach testowych, LDAC 660 i 990 kb\/s w trybie jako\u015bci CD zapewnia stosunek sygna\u0142\/szum nieco lepszy ni\u017c ten u aptX HD.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.soundguys.com\/wp-content\/uploads\/2018\/10\/LDAC-990-CD-Noise-Floor.jpg\"><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/819853ab9d92e9631454082ade245628.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>\u0179r\u00f3d\u0142o: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.soundguys.com\/ldac-ultimate-bluetooth-guide-20026\/\">www.soundguys.com\/ldac-ultimate-bluetooth-guide-20026<\/a><\/noindex><\/i><\/p>\n<p>LDAC wspiera r\u00f3wnie\u017c dynamiczn\u0105 zmian\u0119 bitrate'u poza ustalonymi profilami \u2014 od 138 kbit\/s do 990 kbit\/s, ale jak s\u0105dz\u0119, w Androidzie u\u017cywane s\u0105 tylko ustandaryzowane profile 303\/606\/909 oraz 330\/660\/990 kbit\/s.<\/p>\n<h2>Inne kodeki<\/h2>\n<p>Pozosta\u0142e kodeki A2DP nie zdoby\u0142y szerokiego uznania. Ich wsparcie jest albo praktycznie ca\u0142kowicie nieobecne, albo dost\u0119pne jedynie w niekt\u00f3rych modelach s\u0142uchawek i smartfon\u00f3w.<br \/>\nUstandaryzowany kodek ATRAC w A2DP nigdy nie zosta\u0142 u\u017cyty jako kodek Bluetooth, nawet przez sam\u0105 Sony, kodeki Samsung HD, Samsung Scalable i Samsung UHQ-BT maj\u0105 bardzo ograniczone wsparcie ze strony nadajnik\u00f3w i odbiornik\u00f3w, a HWA LHDC jest zbyt nowy i wspierany tylko przez trzy (?) urz\u0105dzenia.<\/p>\n<p><\/p>\n<h1>Wsparcie kodek\u00f3w przez urz\u0105dzenia audio<\/h1>\n<p>Nie wszyscy producenci publikuj\u0105 dok\u0142adne informacje o kodekach, kt\u00f3re wspieraj\u0105 poszczeg\u00f3lne bezprzewodowe s\u0142uchawki, g\u0142o\u015bniki, odbiorniki lub nadajniki. Czasami wsparcie dla okre\u015blonego kodeka dotyczy jedynie transmisji, ale nie odbioru (jest to istotne w przypadku kombinowanych nadajnik\u00f3w-odbiornik\u00f3w), pomimo \u017ce producent jedynie og\u0142asza \u201ewsparcie\u201d, bez dodatkowych komentarzy (przypuszczam, \u017ce win\u0105 za to obarczone jest rozdzielne licencjonowanie enkoder\u00f3w i dekoder\u00f3w niekt\u00f3rych kodek\u00f3w). W najta\u0144szych urz\u0105dzeniach mo\u017cna w og\u00f3le nie znale\u017a\u0107 deklarowanego wsparcia dla aptX.<\/p>\n<p>Niestety, w interfejsach wi\u0119kszo\u015bci system\u00f3w operacyjnych nigdzie nie jest wy\u015bwietlany u\u017cywany kodek. Informacja o tym znajduje si\u0119 jedynie w Androidzie, zaczynaj\u0105c od wersji 8, oraz w macOS. Jednak nawet w tych systemach b\u0119d\u0105 wy\u015bwietlane tylko te kodeki, kt\u00f3re wspiera zar\u00f3wno telefon\/komputer, jak i s\u0142uchawki.<\/p>\n<p>Jak zatem dowiedzie\u0107 si\u0119, jakie kodeki wspiera urz\u0105dzenie? Nagra\u0107 i przeanalizowa\u0107 zrzut danych z parametrami negocjacji A2DP!<br \/>\nMo\u017cna to zrobi\u0107 w Linuxie, macOS i Androidzie. W Linuxie mo\u017cna skorzysta\u0107 z Wireshark lub hcidump, w macOS \u2014 Bluetooth Explorer, a w Androidzie \u2014 z wbudowanej funkcji zapisywania zrzutu HCI Bluetooth, dost\u0119pnej w narz\u0119dziach dewelopera. Otrzymasz zrzut w formacie btsnoop, kt\u00f3ry mo\u017cna za\u0142adowa\u0107 do analizatora Wireshark.<br \/>\n<b>Zwr\u00f3\u0107 uwag\u0119<\/b>: poprawny zrzut mo\u017cna uzyska\u0107 tylko \u0142\u0105cz\u0105c si\u0119 z telefonem\/komputerem poprzez s\u0142uchawki\/g\u0142o\u015bnik (jakkolwiek dziwnie to brzmi)! S\u0142uchawki mog\u0105 samodzielnie nawi\u0105zywa\u0107 po\u0142\u0105czenie z telefonem, a w takim przypadku b\u0119d\u0105 zleca\u0107 list\u0119 kodek\u00f3w telefonowi, a nie na odwr\u00f3t. Aby zagwarantowa\u0107 nagranie poprawnego zrzutu, najpierw przerwij parowanie z urz\u0105dzeniem, a nast\u0119pnie, podczas nagrywania zrzutu, sparuj telefon z s\u0142uchawkami.<\/p>\n<p>U\u017cyj nast\u0119puj\u0105cego filtru wy\u015bwietlania, aby odfiltrowa\u0107 nieistotny ruch:<\/p>\n<pre><code class=\"plaintext\">btavdtp.signal_id<\/code><\/pre>\n<p>W rezultacie powiniene\u015b zobaczy\u0107 co\u015b podobnego:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/fv\/ku\/xs\/fvkuxsqcdwtxznupploqmldv9qm.png\"><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/b598f3282b36d7761c5f4fa63802d57e.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Mo\u017cesz klikn\u0105\u0107 na ka\u017cdy punkt komendy GetCapabilities, aby zobaczy\u0107 szczeg\u00f3\u0142owe specyfikacje kodeka.<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/7s\/9a\/xa\/7s9axaeztya_dr2irptfi68ejxs.png\"><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/e5037fe18ae95ed7f047f4b8b8fcb2c8.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Wireshark nie zna wszystkich identyfikator\u00f3w kodek\u00f3w, wi\u0119c cz\u0119\u015b\u0107 kodek\u00f3w trzeba b\u0119dzie zdekodowa\u0107 r\u0119cznie, odwo\u0142uj\u0105c si\u0119 do tabeli identyfikator\u00f3w poni\u017cej:<\/p>\n<pre><code class=\"plaintext\">Obowi\u0105zkowe:\n0x00 - SBC\n\nOpcjonalne:\n0x01 - MPEG-1,2 (czyli MP3)\n0x02 - MPEG-2,4 (czyli AAC)\n0x04 - ATRAC\n\nSpecyficzne dla producenta:\n0xFF 0x004F 0x01   - aptX\n0xFF 0x00D7 0x24   - aptX HD\n0xFF 0x000A 0x02   - aptX Low Latency\n0xFF 0x00D7 0x02   - aptX Low Latency\n0xFF 0x000A 0x01   - FastStream\n0xFF 0x012D 0xAA   - LDAC\n0xFF 0x0075 0x0102 - Samsung HD\n0xFF 0x0075 0x0103 - Samsung Scalable Codec\n0xFF 0x053A 0x484C - Savitech LHDC\n\n0xFF 0x000A 0x0104 - Identyfikator kodeka CSR True Wireless Stereo v3 dla AAC\n0xFF 0x000A 0x0105 - Identyfikator kodeka CSR True Wireless Stereo v3 dla MP3\n0xFF 0x000A 0x0106 - Identyfikator kodeka CSR True Wireless Stereo v3 dla aptX<\/code><\/pre>\n<p>Aby nie analizowa\u0107 zrzut\u00f3w r\u0119cznie, stworzy\u0142em serwis, kt\u00f3ry przeanalizuje wszystko automatycznie: <noindex><a rel=\"nofollow\" href=\"https:\/\/btcodecs.valdikss.org.ru\">btcodecs.valdikss.org.ru<\/a><\/noindex><\/p>\n<p><\/p>\n<h1>Por\u00f3wnanie kodek\u00f3w. Kt\u00f3ry kodek jest lepszy?<\/h1>\n<p>Ka\u017cdy kodek ma swoje zalety i wady.<br \/>\naptX i aptX HD wykorzystuj\u0105 sztywno okre\u015blone profile, kt\u00f3re nie mog\u0105 by\u0107 zmieniane bez modyfikacji kodeka i dekodera. Ani producent telefonu, ani producent s\u0142uchawek nie mog\u0105 zmieni\u0107 bitrate'u ani wsp\u00f3\u0142czynnik\u00f3w kompresji aptX. W\u0142a\u015bciciel kodeka, Qualcomm, dostarcza referencyjny kodek w postaci biblioteki. Te fakty stanowi\u0105 mocn\u0105 stron\u0119 aptX \u2013 z g\u00f3ry wiesz, jakiej jako\u015bci d\u017awi\u0119k otrzymasz, bez \u017cadnych \u201eale\u201d.<\/p>\n<p>SBC, przeciwnie, ma wiele konfigurowalnych opcji, dynamiczny bitrate (encoder mo\u017ce zmniejsza\u0107 parametr bitpool, je\u015bli sygna\u0142 radiowy jest obci\u0105\u017cony) i nie ma sztywnych profili, a jedynie zalecane \"\u015bredniej jako\u015bci\" i \"wysokiej jako\u015bci\", kt\u00f3re dodano do specyfikacji A2DP w 2003 roku. \"Wysoka jako\u015b\u0107\" nie jest ju\u017c tak wysoka wed\u0142ug wsp\u00f3\u0142czesnych standard\u00f3w, a wi\u0119kszo\u015b\u0107 stos\u00f3w Bluetooth nie pozwala na u\u017cywanie parametr\u00f3w lepszych ni\u017c w profilu \"wysokiej jako\u015bci\", chocia\u017c nie ma technicznych ogranicze\u0144 w tym zakresie.<br \/>\nBluetooth SIG nie ma referencyjnego enkodera SBC w postaci biblioteki, a producenci implementuj\u0105 go samodzielnie.<br \/>\nTo s\u0105 s\u0142abe strony SBC \u2014 nigdy z g\u00f3ry nie wiadomo, jakiej jako\u015bci d\u017awi\u0119ku mo\u017cna oczekiwa\u0107 od konkretnego urz\u0105dzenia. SBC mo\u017ce generowa\u0107 zar\u00f3wno nisk\u0105, jak i bardzo wysok\u0105 jako\u015b\u0107 d\u017awi\u0119ku, ale ta ostatnia jest nieosi\u0105galna bez wy\u0142\u0105czenia lub obej\u015bcia sztucznych ogranicze\u0144 stos\u00f3w Bluetooth.<\/p>\n<p>Sytuacja z AAC jest niejednoznaczna: z jednej strony teoretycznie kodek powinien zapewnia\u0107 jako\u015b\u0107 nieodr\u00f3\u017cnialn\u0105 od orygina\u0142u, ale w praktyce, wed\u0142ug test\u00f3w laboratorium SoundGuys na r\u00f3\u017cnych urz\u0105dzeniach Android, to si\u0119 nie potwierdza. Najprawdopodobniej wina le\u017cy po stronie niskiej jako\u015bci sprz\u0119towych audioenkoder\u00f3w wbudowanych w r\u00f3\u017cne chipy telefon\u00f3w. Ma sens u\u017cywa\u0107 AAC tylko na urz\u0105dzeniach Apple, a na Androidzie ograniczy\u0107 si\u0119 do aptX i LDAC.<\/p>\n<p>Sprz\u0119t obs\u0142uguj\u0105cy alternatywne kodeki zazwyczaj ma wy\u017csz\u0105 jako\u015b\u0107, po prostu dlatego, \u017ce dla bardzo tanich, niskiej jako\u015bci urz\u0105dze\u0144 nie ma sensu p\u0142aci\u0107 op\u0142at licencyjnych za korzystanie z tych kodek\u00f3w. Wed\u0142ug moich test\u00f3w SBC brzmi bardzo dobrze na wysokiej jako\u015bci sprz\u0119cie.<\/p>\n<p>Stworzy\u0142em serwis internetowy, kt\u00f3ry koduje audio w SBC, aptX i aptX HD w czasie rzeczywistym, bezpo\u015brednio w przegl\u0105darce. Dzi\u0119ki niemu b\u0119dziesz m\u00f3g\u0142 testowa\u0107 te audio-kodeki bez faktycznego przesy\u0142ania audio przez Bluetooth, na dowolnych przewodowych s\u0142uchawkach, g\u0142o\u015bnikach i swojej ulubionej muzyce, a tak\u017ce zmienia\u0107 parametry kodowania w trakcie odtwarzania audio:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/btcodecs.valdikss.org.ru\/sbc-encoder\/\">btcodecs.valdikss.org.ru\/sbc-encoder<\/a><\/noindex><br \/>\nSerwis korzysta z bibliotek kodowania SBC z projektu BlueZ oraz libopenaptx z ffmpeg, kt\u00f3re zosta\u0142y skompilowane w WebAssembly i JavaScript z C, przez emscripten, do uruchomienia w przegl\u0105darce. Kto m\u00f3g\u0142 marzy\u0107 o takim przysz\u0142o\u015bci!<\/p>\n<p>Tak to wygl\u0105da:<br \/>\n<video controls style=\"top: 0; left: 0; width: 100%; height: 100%; position: absolute;\">Twoja przegl\u0105darka nie obs\u0142uguje wideo HTML5.<source src=\"https:\/\/files.catbox.moe\/9e9q8f.mp4\" type=\"video\/mp4\"><\/source><\/video><br \/>\nZwr\u00f3\u0107 uwag\u0119 na to, jak zmienia si\u0119 poziom ha\u0142asu powy\u017cej 20 kHz w r\u00f3\u017cnych kodekach. W oryginalnym pliku MP3 cz\u0119stotliwo\u015bci powy\u017cej 20 kHz s\u0105 nieobecne.<\/p>\n<p>Spr\u00f3buj prze\u0142\u0105cza\u0107 kodeki i oceniaj, czy s\u0142yszysz r\u00f3\u017cnic\u0119 mi\u0119dzy orygina\u0142em, SBC 53 Joint Stereo (standardowy i najpowszechniejszy profil), a aptX\/aptX HD.<\/p>\n<p><\/p>\n<h2>S\u0142ysz\u0119 r\u00f3\u017cnic\u0119 mi\u0119dzy kodekami <i>w s\u0142uchawkach<\/i>!<\/h2>\n<p>Ludzie, kt\u00f3rzy nie s\u0142ysz\u0105 r\u00f3\u017cnicy mi\u0119dzy kodekami podczas testowania za po\u015brednictwem us\u0142ugi internetowej, zapewniaj\u0105, \u017ce s\u0142ysz\u0105 j\u0105 podczas s\u0142uchania muzyki w bezprzewodowych s\u0142uchawkach. Niestety, to nie \u017cart ani efekt placebo: r\u00f3\u017cnica jest rzeczywi\u015bcie s\u0142yszalna, ale wynika z r\u00f3\u017cnic <i>kodek\u00f3w<\/i>.<\/p>\n<p>Przyt\u0142aczaj\u0105ca wi\u0119kszo\u015b\u0107 chipset\u00f3w Bluetooth audio u\u017cywanych w odbiornikach bezprzewodowych posiada cyfrowy procesor sygna\u0142owy (Digital Signal Processor, DSP), kt\u00f3ry implementuje equalizer, kompresor, rozszerzacz stereo i inne elementy maj\u0105ce na celu poprawienie (lub zmian\u0119) d\u017awi\u0119ku. Producenci sprz\u0119tu Bluetooth mog\u0105 dostosowa\u0107 DSP <i>dla ka\u017cdego kodeka osobno<\/i>, i podczas prze\u0142\u0105czania mi\u0119dzy kodekami s\u0142uchacz mo\u017ce mie\u0107 wra\u017cenie, \u017ce s\u0142yszy r\u00f3\u017cnice w dzia\u0142aniu kodek\u00f3w, kiedy w rzeczywisto\u015bci s\u0142ucha r\u00f3\u017cnych ustawie\u0144 DSP.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/0j\/75\/rv\/0j75rvrbutguojyxx9yu0s-uang.png\"><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/6a8f7ab3ef52753cd32f398c023cd601.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<i>Potok przetwarzania d\u017awi\u0119ku DSP Kalimba w chipach produkcji CSR\/Qualcomm<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/5dd07986d55d2e7e65697ab7114a942b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Aktywacja r\u00f3\u017cnych funkcji DSP dla ka\u017cdego kodeka i wyj\u015bcia osobno<\/i><\/p>\n<p>Niekt\u00f3re urz\u0105dzenia premium s\u0105 wyposa\u017cone w oprogramowanie pozwalaj\u0105ce na dostosowanie parametr\u00f3w DSP, ale wi\u0119kszo\u015b\u0107 ta\u0144szych s\u0142uchawek nie ma takiej mo\u017cliwo\u015bci, a u\u017cytkownicy nie mog\u0105 wy\u0142\u0105czy\u0107 post-processingu d\u017awi\u0119ku w prosty spos\u00f3b.<\/p>\n<p><\/p>\n<h2>Funkcjonalne cechy urz\u0105dze\u0144<\/h2>\n<p>Nowoczesna wersja standardu A2DP ma <b>funkcj\u0119 \u201eabsolutnej regulacji g\u0142o\u015bno\u015bci\u201d<\/b> \u2014 zarz\u0105dzanie g\u0142o\u015bno\u015bci\u0105 urz\u0105dzenia za pomoc\u0105 specjalnych komend protoko\u0142u AVRCP, kt\u00f3re reguluj\u0105 wzmocnienie wyj\u015bciowego wzmacniacza, zamiast programowego zmniejszenia g\u0142o\u015bno\u015bci strumienia audio. Je\u015bli przy zmianie g\u0142o\u015bno\u015bci na s\u0142uchawkach, zmiana nie synchronizuje si\u0119 z g\u0142o\u015bno\u015bci\u0105 w telefonie, oznacza to, \u017ce twoje s\u0142uchawki lub telefon nie obs\u0142uguj\u0105 tej funkcji. W takim przypadku warto zawsze s\u0142ucha\u0107 muzyki z maksymaln\u0105 g\u0142o\u015bno\u015bci\u0105 na telefonie, reguluj\u0105c faktyczn\u0105 g\u0142o\u015bno\u015b\u0107 przyciskami na s\u0142uchawkach \u2014 w tym przypadku stosunek sygna\u0142\/szum b\u0119dzie lepszy, a jako\u015b\u0107 audio. <i>powinno by\u0107<\/i> wy\u017cej.<br \/>\nW rzeczywisto\u015bci zdarzaj\u0105 si\u0119 smutne sytuacje. W moich s\u0142uchawkach RealForce OverDrive D1 dla SBC w\u0142\u0105czony jest silny kompresor, a zwi\u0119kszenie g\u0142o\u015bno\u015bci prowadzi do podniesienia poziomu cichych d\u017awi\u0119k\u00f3w, natomiast g\u0142o\u015bno\u015b\u0107 g\u0142o\u015bnych d\u017awi\u0119k\u00f3w nie zmienia si\u0119 (nast\u0119puje kompresja sygna\u0142u). Z tego powodu musz\u0119 ustawia\u0107 g\u0142o\u015bno\u015b\u0107 na komputerze na oko\u0142o po\u0142ow\u0119, w takim przypadku efekt kompresji jest praktycznie nieobecny.<br \/>\nZ moich obserwacji wynika, \u017ce wszystkie s\u0142uchawki z dodatkowymi kodekami obs\u0142uguj\u0105 funkcj\u0119 absolutnej regulacji g\u0142o\u015bno\u015bci, najwyra\u017aniej jest to jeden z wymog\u00f3w certyfikacji kodek\u00f3w.<\/p>\n<p>Niekt\u00f3re s\u0142uchawki obs\u0142uguj\u0105 <b>po\u0142\u0105czenie dw\u00f3ch urz\u0105dze\u0144 jednocze\u015bnie<\/b>. Umo\u017cliwia to na przyk\u0142ad s\u0142uchanie muzyki z komputera i odbieranie po\u0142\u0105cze\u0144 z telefonu. Nale\u017cy jednak wiedzie\u0107, \u017ce w tym trybie dezaktywowane s\u0105 alternatywne kodeki i u\u017cywany jest tylko SBC.<\/p>\n<p><b>Funkcja AVDTP 1.3 Delay Reporting<\/b> pozwala s\u0142uchawkom komunikowa\u0107 op\u00f3\u017anienie transmisji z urz\u0105dzeniem nadaj\u0105cym, z jakim d\u017awi\u0119k jest faktycznie odtwarzany. Umo\u017cliwia to dostosowanie synchronizacji audio z wideo podczas ogl\u0105dania plik\u00f3w wideo: w przypadku problem\u00f3w z transmisj\u0105 radiow\u0105, audio nie b\u0119dzie op\u00f3\u017anione w stosunku do wideo, a wr\u0119cz przeciwnie, wideo b\u0119dzie zatrzymywane przez odtwarzacz wideo, a\u017c audio i wideo zn\u00f3w si\u0119 zsynchronizuj\u0105.<br \/>\nFunkcja ta jest obs\u0142ugiwana przez wiele s\u0142uchawek, Android 9+ i Linux z PulseAudio 12.0+. Nie mam informacji na temat obs\u0142ugi funkcji na innych platformach.<\/p>\n<p><\/p>\n<h1>Dwukierunkowa komunikacja przez Bluetooth. Przesy\u0142 g\u0142osu.<\/h1>\n<p>Aby przesy\u0142a\u0107 g\u0142os przez Bluetooth, wykorzystywana jest Synchronous Connection Oriented (SCO) \u2014 synchronizowane po\u0142\u0105czenie z wcze\u015bniejszym uzgodnieniem. Tryb ten pozwala na przesy\u0142anie d\u017awi\u0119ku i g\u0142osu \u015bci\u015ble w kolejno\u015bci, z symetryczn\u0105 pr\u0119dko\u015bci\u0105 nadawania i odbierania, bez oczekiwania na potwierdzenie przesy\u0142ania i retransmisj\u0119 pakiet\u00f3w. Obni\u017ca to og\u00f3ln\u0105 latencj\u0119 przesy\u0142ania audio przez kana\u0142 radiowy, ale wprowadza powa\u017cne ograniczenia co do ilo\u015bci przesy\u0142anych danych w jednostce czasu oraz negatywnie wp\u0142ywa na jako\u015b\u0107.<br \/>\nKiedy ten tryb jest u\u017cywany, zar\u00f3wno g\u0142os, jak i d\u017awi\u0119k s\u0105 przesy\u0142ane w tej samej jako\u015bci.<br \/>\nNiestety, na rok 2019 jako\u015b\u0107 przesy\u0142ania mowy przez Bluetooth wci\u0105\u017c pozostaje niska, a nie jest jasne, dlaczego Bluetooth SIG nic w tej sprawie nie robi.<\/p>\n<h5>CVSD<\/h5>\n<p>Podstawowy kodek przesy\u0142ania mowy CVSD zosta\u0142 standardyzowany w 2002 roku i jest obs\u0142ugiwany przez wszystkie urz\u0105dzenia dwukierunkowej komunikacji przez Bluetooth. Zapewnia przesy\u0142anie audio z cz\u0119stotliwo\u015bci\u0105 pr\u00f3bkowania 8 kHz, co odpowiada jako\u015bci zwyk\u0142ej telefonii stacjonarnej. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/files.catbox.moe\/c4h77s.flac\">Przyk\u0142ad nagrania w tym kodeku<\/a><\/noindex>.<\/p>\n<h5>mSBC<\/h5>\n<p>Dodatkowy kodek mSBC zosta\u0142 standardyzowany w 2009 roku, a w 2010 roku pojawi\u0142y si\u0119 chipy, kt\u00f3re wykorzystuj\u0105 go do przesy\u0142ania g\u0142osu. mSBC jest szeroko obs\u0142ugiwany przez r\u00f3\u017cne urz\u0105dzenia.<br \/>\nNie jest to samodzielny kodek, lecz zwyk\u0142y SBC z normy A2DP, z ustalonym profilem kodowania: 16 kHz, mono, bitpool 26.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/files.catbox.moe\/b09joy.flac\">Przyk\u0142ad nagrania w tym kodeku<\/a><\/noindex>.<\/p>\n<p>Nie jest to rewelacja, ale znacznie lepiej ni\u017c CVSD, jednak wci\u0105\u017c nieprzyjemnie jest z niego korzysta\u0107 do komunikacji przez internet, szczeg\u00f3lnie gdy korzystasz ze s\u0142uchawek do rozmowy w grze \u2014 d\u017awi\u0119k gry tak\u017ce b\u0119dzie przesy\u0142any z cz\u0119stotliwo\u015bci\u0105 pr\u00f3bkowania 16 kHz.<\/p>\n<p>FastStream Firma CSR postanowi\u0142a rozwija\u0107 ide\u0119 ponownego wykorzystania SBC. Aby obej\u015b\u0107 ograniczenia protoko\u0142u SCO i wykorzysta\u0107 wy\u017csze bitrate'y, CSR poszli inn\u0105 drog\u0105 \u2014 wdro\u017cyli obs\u0142ug\u0119 dwustronnego audio SBC w standardzie przesy\u0142ania jednokierunkowego audio A2DP, standardyzowali profile kodowania i nazwali to \u201eFastStream\u201d.<\/p>\n<p>FastStream przesy\u0142a do g\u0142o\u015bnik\u00f3w d\u017awi\u0119k stereo 44.1 lub 48 kHz z bitrate'em 212 kbit\/s, a do przesy\u0142ania audio z mikrofonu wykorzystuje mono, 16 kHz, z bitrate'em 72 kbit\/s (troch\u0119 lepiej ni\u017c w mSBC). Takie parametry znacznie lepiej nadaj\u0105 si\u0119 do komunikacji w grach online \u2014 d\u017awi\u0119k gry i rozm\u00f3wc\u00f3w b\u0119dzie wysokiej jako\u015bci.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/files.catbox.moe\/4gazzt.flac\">Przyk\u0142ad nagrania w tym kodeku<\/a><\/noindex> (+ <noindex><a rel=\"nofollow\" href=\"https:\/\/files.catbox.moe\/b09joy.flac\">d\u017awi\u0119k z mikrofonu, taki sam jak w mSBC<\/a><\/noindex>).<\/p>\n<p>Firma wymy\u015bli\u0142a ciekawy spos\u00f3b, ale z powodu tego, \u017ce jest on sprzeczny ze standardem A2DP, jego wsparcie jest dost\u0119pne tylko w niekt\u00f3rych nadajnikach firmy (kt\u00f3re dzia\u0142aj\u0105 jako karta d\u017awi\u0119kowa USB, a nie urz\u0105dzenie Bluetooth), ale nie uzyska\u0142 wsparcia w stosach Bluetooth, mimo \u017ce liczba s\u0142uchawek obs\u0142uguj\u0105cych FastStream nie jest wcale ma\u0142a.<\/p>\n<p>Na chwil\u0119 obecn\u0105 wsparcie FastStream w systemach operacyjnych istnieje tylko <noindex><a rel=\"nofollow\" href=\"https:\/\/lists.freedesktop.org\/archives\/pulseaudio-discuss\/2019-June\/031175.html\">w postaci \u0142atki dla PulseAudio na Linuxa<\/a><\/noindex> od dewelopera Pali Roh\u00e1ra, kt\u00f3ra nie jest zawarta w g\u0142\u00f3wnym ga\u0142\u0119zi programu.<\/p>\n<h5>aptX Low Latency<\/h5>\n<p>Ku wielkiemu zaskoczeniu, aptX Low Latency r\u00f3wnie\u017c obs\u0142uguje dwukierunkowy d\u017awi\u0119k, realizuj\u0105c ten sam zasad jak FastStream.<br \/>\nNie uda si\u0119 wykorzysta\u0107 tej cechy kodeka nigdzie \u2014 wsparcia dla dekodowania Low Latency nie ma w \u017cadnym systemie operacyjnym ani w \u017cadnym znanym mi stosie Bluetooth.<\/p>\n<p><\/p>\n<h1>Bluetooth 5, Classic i Low Energy<\/h1>\n<p>Wok\u00f3\u0142 specyfikacji i wersji Bluetooth powsta\u0142o wiele nieporozumie\u0144 z powodu istnienia dw\u00f3ch niekompatybilnych standard\u00f3w pod jedn\u0105 mark\u0105, kt\u00f3re s\u0105 szeroko stosowane w r\u00f3\u017cnych celach.<\/p>\n<p>Istniej\u0105 dwa r\u00f3\u017cne, niekompatybilne protoko\u0142y Bluetooth: Bluetooth Classic i Bluetooth Low Energy (LE, znany r\u00f3wnie\u017c jako Bluetooth Smart). Jest jeszcze trzeci protok\u00f3\u0142, Bluetooth High Speed, ale jest on rzadko spotykany i nie u\u017cywany w urz\u0105dzeniach konsumenckich.<\/p>\n<p>Od Bluetooth 4.0 zmiany w specyfikacji dotyczy\u0142y g\u0142\u00f3wnie Bluetooth Low Energy, a wersja Classic otrzyma\u0142a tylko drobne ulepszenia.<\/p>\n<p>Lista zmian mi\u0119dzy Bluetooth 4.2 a Bluetooth 5:<\/p>\n<blockquote><p>9 ZMIAN Z v4.2 DO 5.0<\/p>\n<p>9.1 NOWE CECHY<\/p>\n<p>W specyfikacji rdzenia Bluetooth 5.0 wprowadzono kilka nowych funkcji. G\u0142\u00f3wne obszary ulepsze\u0144 to:<br \/>\n\u2022 Maska dost\u0119pno\u015bci slot\u00f3w (SAM)<br \/>\n\u2022 2 Msym\/s PHY dla LE<br \/>\n\u2022 LE D\u0142ugi Zasi\u0119g<br \/>\n\u2022 Reklama o wysokim cyklu pracy, niepo\u0142\u0105czalna<br \/>\n\u2022 Rozszerzenia reklamy LE<br \/>\n\u2022 Algorytm wyboru kana\u0142\u00f3w LE #2<br \/>\n9.1.1 Funkcje dodane w CSA5 \u2014 Zintegrowane w v5.0<br \/>\n\u2022 Wy\u017csza moc wyj\u015bciowa<\/p><\/blockquote>\n<p><i>\u0179r\u00f3d\u0142o: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.bluetooth.org\/docman\/handlers\/DownloadDoc.ashx?doc_id=421043\">www.bluetooth.org\/docman\/handlers\/DownloadDoc.ashx?doc_id=421043<\/a><\/noindex> (strona 291)<\/i><\/p>\n<p>Tylko jedna zmiana dotyczy\u0142a wersji Classic w ramach specyfikacji Bluetooth 5: dodano wsparcie dla technologii Maska dost\u0119pno\u015bci slot\u00f3w (SAM), kt\u00f3ra ma na celu popraw\u0119 podzia\u0142u eteru radiowego. Wszystkie inne zmiany dotycz\u0105 wy\u0142\u0105cznie Bluetooth LE (podobnie jak wy\u017csza moc wyj\u015bciowa).<\/p>\n<p><b>Wszystkie<\/b> urz\u0105dzenia audio u\u017cywaj\u0105 tylko Bluetooth Classic. Nie mo\u017cna po\u0142\u0105czy\u0107 s\u0142uchawek i g\u0142o\u015bnik\u00f3w przez Bluetooth Low Energy: nie ma standardu przesy\u0142ania d\u017awi\u0119ku z u\u017cyciem LE. Standard A2DP, stosowany do przesy\u0142ania d\u017awi\u0119ku wysokiej jako\u015bci, dzia\u0142a tylko przez Bluetooth Classic, a odpowiednika w LE nie ma.<\/p>\n<p>Zakup urz\u0105dze\u0144 audio tylko ze wzgl\u0119du na now\u0105 wersj\u0119 protoko\u0142u Bluetooth 5 jest bezsensowny. Bluetooth 4.0\/4.1\/4.2 w kontek\u015bcie przesy\u0142ania audio dzia\u0142a dok\u0142adnie tak samo.<br \/>\nJe\u015bli anons nowych s\u0142uchawek wspomina o podwojonym zasi\u0119gu i zmniejszonym zu\u017cyciu energii dzi\u0119ki Bluetooth 5, to wiedz, \u017ce albo sami si\u0119 nie orientuj\u0105, albo wprowadzaj\u0105 ci\u0119 w b\u0142\u0105d. Nic dziwnego, \u017ce nawet producenci chip\u00f3w Bluetooth w swoich zapowiedziach myl\u0105 si\u0119 w r\u00f3\u017cnicach nowej wersji standardu, a niekt\u00f3re chipy Bluetooth 5 wspieraj\u0105 pi\u0105t\u0105 wersj\u0119 tylko dla LE, a dla Classic u\u017cywaj\u0105 4.2.<\/p>\n<h1>Op\u00f3\u017anienie przesy\u0142ania audio<\/h1>\n<p>Wielko\u015b\u0107 op\u00f3\u017anienia (zatrzymania) audio zale\u017cy od wielu czynnik\u00f3w: wielko\u015bci bufora w stosie audio, w stosie Bluetooth oraz w samym odtwarzaj\u0105cym urz\u0105dzeniu bezprzewodowym, op\u00f3\u017anienia algorytmicznego kodeka.<\/p>\n<p>Op\u00f3\u017anienie prostych kodek\u00f3w, takich jak SBC, aptX i aptX HD, jest bardzo ma\u0142e i wynosi 3-6 ms, co mo\u017cna zignorowa\u0107, ale z\u0142o\u017cone kodeki, takie jak AAC i LDAC, mog\u0105 powodowa\u0107 odczuwalne op\u00f3\u017anienia. Op\u00f3\u017anienie algorytmiczne AAC dla 44.1 kHz wynosi 60 ms. LDAC - oko\u0142o 30 ms (na podstawie pobie\u017cnej analizy kodu \u017ar\u00f3d\u0142owego. Mog\u0119 si\u0119 myli\u0107, ale niezbyt mocno.)<\/p>\n<p>Ostateczne op\u00f3\u017anienie w du\u017cej mierze zale\u017cy od urz\u0105dzenia odtwarzaj\u0105cego, jego chipu i bufora. Podczas test\u00f3w uzyska\u0142em rozrzut od 150 do 250 ms na r\u00f3\u017cnych urz\u0105dzeniach (z kodekiem SBC). Je\u015bli za\u0142o\u017cymy, \u017ce urz\u0105dzenia obs\u0142uguj\u0105ce dodatkowe kodeki aptX, AAC i LDAC wykorzystuj\u0105 wysokiej jako\u015bci komponenty oraz ma\u0142y rozmiar bufora, to uzyskamy nast\u0119puj\u0105ce typowe op\u00f3\u017anienia:<\/p>\n<p>SBC: 150-250 ms<br \/>\naptX: 130-180 ms<br \/>\nAAC: 190-240 ms<br \/>\nLDAC: 160-210 ms<\/p>\n<p>Przypominam: aptX Low Latency nie jest wspierany w systemach operacyjnych, dlatego mniejsze op\u00f3\u017anienie mo\u017cna uzyska\u0107 tylko przy po\u0142\u0105czeniu nadajnik+odbiornik lub nadajnik+s\u0142uchawki\/g\u0142o\u015bnik, przy czym wszystkie urz\u0105dzenia musz\u0105 wspiera\u0107 ten kodek.<\/p>\n<p><\/p>\n<h1>Problemy z urz\u0105dzeniami, certyfikacj\u0105 i logo Bluetooth<\/h1>\n<p>Jak odr\u00f3\u017cni\u0107 jako\u015bciowe urz\u0105dzenie audio od taniej podr\u00f3bki? Przede wszystkim po wygl\u0105dzie!<\/p>\n<p>Tanie chi\u0144skie s\u0142uchawki, g\u0142o\u015bniki i odbiorniki:<\/p>\n<ol>\n<li>Nie zawieraj\u0105 s\u0142owa \u201eBluetooth\u201d na pude\u0142ku i urz\u0105dzeniu, najcz\u0119\u015bciej u\u017cywaj\u0105 \u201eBezprzewodowy\u201d i \u201eBT\u201d<\/li>\n<li>Brak logo Bluetooth <img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/bde65e4674a5d573c0482e64ea6ff2d3.png\" style=\"display:block;margin: 0 auto;\" \/> na pude\u0142ku lub urz\u0105dzeniu<\/li>\n<li>Brak niebieskiej migaj\u0105cej diody LED<\/li>\n<\/ol>\n<p>\nBrak tych element\u00f3w wskazuje, \u017ce urz\u0105dzenie nie przesz\u0142o certyfikacji, co oznacza potencjalnie nisk\u0105 jako\u015b\u0107 i problemy. Na przyk\u0142ad s\u0142uchawki firmy Bluedio nie s\u0105 certyfikowane przez Bluetooth i nie w pe\u0142ni odpowiadaj\u0105 specyfikacji A2DP. Nie przesz\u0142yby certyfikacji.<\/p>\n<p>Przyjrzyjmy si\u0119 kilku urz\u0105dzeniom i ich opakowaniom:<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/e4\/qa\/rr\/e4qarrce8fcjv8wwu46aiyib3oa.jpeg\"><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/12b3b234a522eaef783b480e8f003ffc.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/ba\/06\/vb\/ba06vbcolhpvuie2xlbgnvsycd0.jpeg\"><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/da56314dd65a1000cd3b545d9925d08b.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/mw\/1b\/t1\/mw1bt1hp0cz11xuilzyz0a70dca.jpeg\"><img decoding=\"async\" alt=\"Audio przez Bluetooth: szczeg\u00f3\u0142owe informacje o profilach, kodekach i urz\u0105dzeniach\" src=\"\/wp-content\/uploads\/2bb0356a92d8aee2a84c3123aa8d7e09.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>To wszystko to niecertyfikowane urz\u0105dzenia. W instrukcji mo\u017ce by\u0107 logo i nazwa technologii Bluetooth, ale najwa\u017cniejsze jest, aby by\u0142y one na opakowaniu i\/lub samym urz\u0105dzeniu.<\/p>\n<p>Je\u015bli Twoje s\u0142uchawki lub g\u0142o\u015bnik m\u00f3wi\u0105 \u201eZe bluetooth dewise is connecteda successfulle\u201d, to r\u00f3wnie\u017c nie \u015bwiadczy o ich jako\u015bci:<br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"TOFbsbGpIWk\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/TOFbsbGpIWk\/hqdefault.jpg\" alt=\"Odtwarzaj wideo\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p><\/p>\n<h1>Podsumowanie<\/h1>\n<p>Czy Bluetooth mo\u017ce ca\u0142kowicie zast\u0105pi\u0107 przewodowe s\u0142uchawki i zestawy s\u0142uchawkowe? Mo\u017ce, ale kosztem niskiej jako\u015bci w trybie rozmowy, zwi\u0119kszonego op\u00f3\u017anienia transmisji d\u017awi\u0119ku, co mo\u017ce by\u0107 irytuj\u0105ce w grach, oraz wielu w\u0142asno\u015bciowych kodek\u00f3w, kt\u00f3re wymagaj\u0105 op\u0142at licencyjnych i zwi\u0119kszaj\u0105 finalny koszt zar\u00f3wno smartfon\u00f3w, jak i s\u0142uchawek.<\/p>\n<p>Marketing alternatywnych kodek\u00f3w jest bardzo silny: aptX i LDAC przedstawiane s\u0105 jako d\u0142ugo oczekiwana alternatywa dla \"przestarza\u0142ego i z\u0142ego\" SBC, kt\u00f3ry wcale nie jest a\u017c tak z\u0142y, jak si\u0119 powszechnie uwa\u017ca.<\/p>\n<p>Okaza\u0142o si\u0119, \u017ce sztuczne ograniczenia stos\u00f3w Bluetooth na bitrate SBC mo\u017cna obej\u015b\u0107, tak \u017ce SBC nie b\u0119dzie ust\u0119powa\u0107 aptX HD. Wzi\u0105\u0142em sprawy w swoje r\u0119ce i stworzy\u0142em \u0142atk\u0119 do oprogramowania LineageOS: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/455316\/\">Modyfikujemy stos Bluetooth, aby poprawi\u0107 d\u017awi\u0119k w s\u0142uchawkach bez kodek\u00f3w AAC, aptX i LDAC<\/a><\/noindex><\/p>\n<p>Wi\u0119cej informacji mo\u017cna znale\u017a\u0107 na stronach <noindex><a rel=\"nofollow\" href=\"https:\/\/www.soundguys.com\/\">SoundGuys<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"http:\/\/soundexpert.org\/\">SoundExpert<\/a><\/noindex>.<\/p>\n<p><b>Bonus:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/files.catbox.moe\/29l4kd.zip\">referencyjny enkoder SBC, informacje o bitrate A2DP i pliki testowe<\/a><\/noindex>. Ten plik wcze\u015bniej by\u0142 udost\u0119pniony na stronie Bluetooth publicznie, ale teraz jest dost\u0119pny tylko dla cz\u0142onk\u00f3w Bluetooth SIG.<\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/427997\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u0437-\u0437\u0430 \u043c\u0430\u0441\u0441\u043e\u0432\u043e\u0433\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u0432 \u0431\u0435\u0437 \u0430\u0443\u0434\u0438\u043e\u0440\u0430\u0437\u044a\u0435\u043c\u0430 3.5 \u043c\u043c \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0435 Bluetooth-\u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0438 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0442\u0430\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0438 \u0438 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u044b. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0438 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0438\u0448\u0443\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0442\u043e\u0432\u0430\u0440\u0430, \u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e Bluetooth-\u0430\u0443\u0434\u0438\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u044b, \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b, \u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e \u0432\u0441\u0435\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445, \u0438 \u0447\u0430\u0441\u0442\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35145","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418\u0437-\u0437\u0430 \u043c\u0430\u0441\u0441\u043e\u0432\u043e\u0433\u043e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/audio-cherez-bluetooth-maksimalno-podrobno-o-profilyah-kodekah-i-ustrojstvah\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0410\u0443\u0434\u0438\u043e \u0447\u0435\u0440\u0435\u0437 Bluetooth: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445, \u043a\u043e\u0434\u0435\u043a\u0430\u0445 \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u0437-\u0437\u0430 \u043c\u0430\u0441\u0441\u043e\u0432\u043e\u0433\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/audio-cherez-bluetooth-maksimalno-podrobno-o-profilyah-kodekah-i-ustrojstvah\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:02:32+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:02:32+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Audio przez Bluetooth: maksymalnie szczeg\u00f3\u0142owo o profilach, kodekach i urz\u0105dzeniach | ProHoster","description":"Z powodu masowego.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/audio-cherez-bluetooth-maksimalno-podrobno-o-profilyah-kodekah-i-ustrojstvah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0410\u0443\u0434\u0438\u043e \u0447\u0435\u0440\u0435\u0437 Bluetooth: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f\u0445, \u043a\u043e\u0434\u0435\u043a\u0430\u0445 \u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 | ProHoster","og:description":"\u0418\u0437-\u0437\u0430 \u043c\u0430\u0441\u0441\u043e\u0432\u043e\u0433\u043e.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/audio-cherez-bluetooth-maksimalno-podrobno-o-profilyah-kodekah-i-ustrojstvah","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:02:32+00:00","article:modified_time":"2019-10-31T19:02:32+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35145","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 22:04:30","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:09:54","updated":"2026-01-21 22:04:30","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/35145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=35145"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/35145\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=35145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=35145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=35145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}