Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

Áður en þú lest þessa grein er mælt með því að þú lesir fyrri greinina: Hljóð í gegnum Bluetooth: hámarksupplýsingar um snið, merkjamál og tæki

Sumir notendur þráðlausra heyrnartóla segja frá lélegum hljóðgæðum og skorti á háum tíðni þegar þeir nota staðlaða SBC Bluetooth merkjamálið, sem er stutt af öllum hljóðtækjum. Algeng ráðlegging til að bæta hljóðið er að kaupa tæki og heyrnartól sem styðja aptX og LDAC merkjamál. Þessir merkjamál krefjast leyfisgjalda, þannig að tæki sem styðja þá eru dýrari.

Það kemur í ljós að lítil gæði SBC stafar af tilbúnum takmörkunum á Bluetooth stafla og stillingum heyrnartóla og hægt er að komast framhjá þessari takmörkun á hvaða tækjum sem er til staðar með hugbúnaðarbreytingum á snjallsíma eða tölvu.

Merkjamál SBC

SBC merkjamálið hefur margar mismunandi breytur sem samið er um á meðan á uppsetningu tengingar stendur. Meðal þeirra:

  • Fjöldi og gerð rása: Joint Stereo, Stereo, Dual Channel, Mono;
  • Fjöldi tíðnisviða: 4 eða 8;
  • Fjöldi kubba í pakkanum: 4, 8, 12, 16;
  • Reiknirit til að dreifa bitum við magngreiningu: Háværð, SNR;
  • Hámarks- og lágmarksgildi bitasafnsins sem notaður er við magngreiningu (bitapúl): venjulega frá 2 til 53.

Afkóðunarbúnaðurinn verður að styðja hvaða samsetningu sem er af þessum breytum. Kóðarinn getur ekki útfært allt.
Núverandi Bluetooth staflar eru venjulega sammála um eftirfarandi prófíl: Joint Stereo, 8 hljómsveitir, 16 blokkir, Loudness, bitpool 2..53. Þetta snið kóðar 44.1 kHz hljóð á bitahraða 328 kbps.
Bitpool færibreytan hefur bein áhrif á bitahraðann innan eins prófíls: því hærra sem það er, því hærra bitahraði og þar með gæðin.
Hins vegar er bitpool færibreytan ekki bundin við ákveðið snið; Bitahraði er einnig að miklu leyti undir áhrifum af öðrum breytum: gerð rása, fjölda tíðnisviða, fjölda blokka. Þú getur aukið bitahraðann óbeint, með því að samþykkja óstöðluð snið, án þess að breyta bitapúlinu.

Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

Formúla til að reikna út SBC bitahraða

Til dæmis, Dual Channel háttur kóðar rásir sérstaklega, með því að nota allt bitpool fyrir hverja rás. Með því að þvinga tækið til að nota Dual Channel í stað Joint Stereo fáum við næstum tvöfaldan bitahraða með sama hámarks bitpool gildi: 617 kbps.
Að mínu mati er notkun bitpoolgildis sem ekki er bundin við prófíl á samningastigi galli í A2DP staðlinum, sem leiddi til gervitakmörkunar á SBC gæðum. Það væri skynsamlegra að semja um bitahraða frekar en bitpool.

Þessi fastu Bitpool og Bitrate gildi koma frá töflu með ráðlögðum gildum til notkunar fyrir hágæða hljóð. En meðmæli eru ekki ástæða til að takmarka þig við þessi gildi.

Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

A2DP v1.2 forskriftin, sem var virk frá 2007 til 2015, krefst þess að öll afkóðunartæki virki rétt með bitahraða allt að 512 kbps:

Afkóðari SNK skal styðja öll möguleg bitapúlsgildi sem leiða ekki til umfram hámarksbitahraða. Þetta snið takmarkar tiltækan hámarksbitahraða við 320kb/s fyrir mónó og 512kb/s fyrir tveggja rása stillingar.

Í nýju útgáfunni af forskriftinni eru engin takmörk á bitahraða. Áætlað er að nútíma heyrnartól sem gefin voru út eftir 2015 og styðja EDR geti stutt bitahraða allt að ≈730 kbps.

Einhverra hluta vegna eru Linux (PulseAudio), Android, Blackberry og macOS Bluetooth staflar sem ég prófaði með gervitakmörk á hámarksgildi bitpool færibreytunnar, sem hefur bein áhrif á hámarksbitahraða. En þetta er ekki stærsta vandamálið; næstum öll heyrnartól takmarka einnig hámarks bitpool gildi við 53.
Eins og ég hef þegar séð, virka flest tæki fullkomlega á breyttum Bluetooth stafla með bitahraða upp á 551 kbps, án truflana eða sprungna. En slíkur bitahraði mun aldrei vera í samræmi við venjulegar aðstæður, á venjulegum Bluetooth stafla.

Að breyta Bluetooth stafla

Sérhver Bluetooth stafla sem er samhæfður A2DP staðlinum hefur stuðning fyrir Dual Channel ham, en það er ekki hægt að virkja það frá viðmótinu.

Við skulum bæta rofa við viðmótið! Ég hef búið til plástra fyrir Android 8.1 og Android 9 sem bæta fullum Dual Channel stuðningi við staflann, bæta stillingu við hamskiptavalmyndina í þróunarverkfærunum og meðhöndla Dual Channel-virkjaða SBC eins og þeir væru viðbótar merkjamál eins og aptX , AAC eða LDAC (Android kallar þetta HD Audio) með því að setja gátmerki við stillingar Bluetooth tækisins. Svona lítur það út:

Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

Plástur fyrir Android 9
Plástur fyrir Android 8.1

Þegar gátreiturinn er virkur byrjar Bluetooth-hljóð að berast með bitahraða 551 kbps, ef heyrnartólin styðja tengihraða upp á 3 Mbit/s, eða 452 kbps, ef heyrnartólin styðja aðeins 2 Mbit/s.

Þessi plástur er innifalinn í eftirfarandi öðrum fastbúnaði:

  • LineageOS
  • Upprisu Remix
  • crDroid

Hvaðan komu 551 og 452 kbit/s?

Bluetooth loftdeilingartækni er hönnuð til að senda stóra pakka í fastri stærð á skilvirkan hátt. Gagnaflutningur á sér stað í raufum, mestur fjöldi raufa sem sendar eru í einum flutningi eru 5. Einnig eru til flutningsstillingar sem nota 1 eða 3 raufar, en ekki 2 eða 4. Í 5 raufum er hægt að flytja allt að 679 bæti á tengihraða af 2 Mbit/s og allt að 1021 bæti á 3 Mbit/s hraða, og á 3 - 367 og 552 bæti, í sömu röð.

Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

Ef við viljum flytja minna gögn en 679 eða 1021 bæti, en meira en 367 eða 552 bæti, mun flutningurinn samt taka 5 raufar og gögnin verða flutt á sama tíma, sem dregur úr skilvirkni flutningsins.

Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

SBC í Dual Channel ham, á 44100 Hz hljóði með Bitpool 38 breytum, 16 blokkum á ramma, 8 tíðnisviðum, umritar hljóð í 164 bæta ramma, með bitahraða 452 kbps.
Hljóðið verður að vera hjúpað í L2CAP og AVDTP flutningssamskiptareglur, sem taka 16 bæti frá hljóðhleðslunni.

Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

Þannig getur ein Bluetooth-sending með 5 raufum hýst 4 hljóðramma:

679 (EDR 2 mbit/s DH5) - 4 (L2CAP) - 12 (AVDTP/RTP) - 1 (заголовок SBC) - (164*4) = 6

Við pössum 11.7 ms af hljóðgögnum í pakkann sem verið er að senda, sem verða send á 3.75 ms, og við eigum 6 ónotuð bæti eftir í pakkanum.
Ef þú hækkar bitapottinn aðeins er ekki lengur hægt að pakka 4 hljóðrömmum í einn pakka. Þú verður að senda 3 ramma í einu, sem dregur úr sendingarskilvirkni, dregur úr magni hljóðs sem sent er á hvern ramma og mun hraðar leiða til hljóðs stams við lélegar útvarpsaðstæður.

Á sama hátt var bitahraði 551 kbit/s valinn fyrir EDR 3 Mbit/s: með Bitpool 47, 16 blokkum á ramma, 8 tíðnisviðum, er rammastærðin 200 bæti, með bitahraði 551 kbit/s. Einn pakki inniheldur 5 ramma eða 14.6 ms af tónlist.

Reikniritið til að reikna út allar SBC færibreytur er frekar flókið, þú getur auðveldlega ruglast ef þú telur handvirkt, svo ég bjó til gagnvirka reiknivél til að hjálpa þeim sem hafa áhuga: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Hvers vegna þarf allt þetta?

Andstætt því sem almennt er talið um hljóðgæði aptX merkjamálsins, getur það í sumum skrám skilað verri árangri en SBC með staðlaðan bitahraða 328 kbps.

SBC úthlutar magngreiningarbitum á breytilegan hátt á tíðnisvið á lágum til háum grunni. Ef allur bitahraði var notaður fyrir lág- og miðtíðni, verður hátíðnin „klippt af“ (það verður þögn í staðinn).
aptX magnar tíðnisvið með sama fjölda bita allan tímann, þess vegna hefur það stöðugan bitahraða: 352 kbps fyrir 44.1 kHz, 384 kbps fyrir 48 kHz, og það getur ekki „bitafært“ til þeirra tíðna sem þarfnast þeirra mest . Ólíkt SBC mun aptX ekki „klippa“ tíðnir, heldur bæta við magngreiningarhljóði við þær, draga úr kraftmiklu sviði hljóðsins og koma stundum fyrir einkennandi brakandi. SBC „borðar smáatriði“ - fleygir rólegustu svæðum.
Að meðaltali, samanborið við SBC 328k, kynnir aptX minni bjögun í tónlist með breitt tíðnisvið, en í tónlist með þröngt tíðnisvið og breitt kraftsvið vinnur SBC 328k stundum.

Við skulum íhuga sérstakt tilvik. Litróf af upptöku sem spilar á píanó:
Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

Aðalorkan liggur í tíðnum frá 0 til 4 kHz og heldur áfram upp í 10 kHz.
Litróf skráar sem er þjappað í aptX lítur svona út:
Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

Og svona lítur SBC 328k út.
Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

Það má sjá að SBC 328k slökkti reglulega alveg á sviðinu yfir 16 kHz og eyddi öllum tiltækum bitahraða á svið undir þessu gildi. Hins vegar setti aptX meiri röskun inn í tíðnirófið sem heyrist í mannseyranu, eins og sést á upprunalega litrófinu sem dregið var frá aptX litrófinu (því bjartara, því meiri bjögun):
Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

Þó að SBC 328k hafi spillt merkinu minna á bilinu frá 0 til 10 kHz, og slökkti á restinni:
Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

485k bitahraði SBC var nóg til að varðveita allt tíðnisviðið, án þess að slökkva á böndum.
Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

SBC 485k er verulega á undan aptX á þessari braut á bilinu 0-15 kHz, og með minni, en samt áberandi mun - í 15-22 kHz (því dekkra, því minni bjögun):
Að breyta Bluetooth stafla til að bæta hljóðið í heyrnartólum án AAC, aptX og LDAC merkjamál

Skjalasafn með upprunalegu hljóði, SBC og aptX.

Með því að skipta yfir í hábitahraða SBC færðu hljóð sem slær oft aptX í hvaða heyrnartól sem er. Í heyrnartólum sem styðja 3 Mbps EDR tengingu gefur bitahraði upp á 551 kbps hljóð sem er sambærilegt við aptX HD.

Geturðu gert enn meira?

Android plásturinn inniheldur einnig möguleika á að auka bitahraðann enn frekar fyrir 2 Mbps EDR tæki. Hægt er að auka bitahraðann úr 452 kbit/s í 595 kbit/s á kostnað þess að draga úr stöðugleika sendingar við erfiðar útvarpsaðstæður.
Það er nóg að stilla persist.bluetooth.sbc_hd_higher_bitrate breytuna á 1:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Extreme bitrate plásturinn hefur hingað til aðeins verið tekinn upp í LineageOS 15.1, en ekki í 16.0.

Samhæfni tækis

SBC Dual Channel er stutt af næstum öllum heyrnartólum, hátölurum og bílhöfuðeiningum. Þetta er engin furða - staðallinn krefst stuðnings hans í hvaða umskráningartæki sem er. Það er lítill fjöldi tækja þar sem þessi stilling veldur vandamálum, en þetta eru einangruð tilvik.
Nánari upplýsingar um samhæf tæki er að finna á W4bsitXNUMX-dns.com eða XDA-verktaki.

Samanburður á hljóðmun

Ég bjó til vefþjónustu sem umritar hljóð í SBC (sem og aptX og aptX HD) í rauntíma, beint í vafranum. Með því geturðu borið saman hljóð mismunandi SBC sniða og annarra merkjamála, án þess að senda hljóð í raun um Bluetooth, í heyrnartólum, hátölurum og uppáhaldstónlistinni þinni með snúru, og einnig breytt kóðunarbreytum beint á meðan þú spilar hljóð.
btcodecs.valdikss.org.ru/sbc-encoder

Hafðu samband við Android forritara

Ég skrifaði mörgum Bluetooth stafla verktaki hjá Google og bað þá um að íhuga að setja plástra í aðal Android útibúið - AOSP, en fékk ekki eitt einasta svar. Plástrarnir mínir inn Gerrit patch kerfi fyrir Android var einnig án athugasemda frá nokkrum hlutaðeigandi.
Ég væri ánægður ef ég gæti fengið hjálp við að komast í samband við þróunaraðilana hjá Google og koma SBC HD í Android. Plásturinn í gerrit er þegar úreltur (þetta er ein af fyrstu endurskoðununum) og ég mun uppfæra hann ef forritarar hafa áhuga á breytingunum mínum (það er ekki auðvelt fyrir mig að uppfæra hann, ég er ekki með tæki sem eru samhæf við Android Q ).

Ályktun

Notendur snjallsíma með LineageOS, Resurrection Remix og crDroid vélbúnaðar geta notið aukinna hljóðgæða núna, bara virkjaðu valkostinn í stillingum Bluetooth tækisins. Linux notendur geta einnig fengið aukinn SBC bitahraða með því að setja upp plástur frá Pali Rohar, sem meðal annars bætir við stuðningi við aptX, aptX HD og FastStream merkjamál.

Heimild: www.habr.com

Bæta við athugasemd