Pirms Ŕī raksta lasÄ«Å”anas ieteicams izlasÄ«t iepriekÅ”Äjo rakstu:
Daži bezvadu austiÅu lietotÄji ziÅo par sliktu skaÅas kvalitÄti un augstu frekvenÄu trÅ«kumu, izmantojot standarta SBC Bluetooth kodeku, ko atbalsta visas audio ierÄ«ces. IzplatÄ«ts ieteikums skaÅas uzlaboÅ”anai ir iegÄdÄties ierÄ«ces un austiÅas, kas atbalsta aptX un LDAC kodekus. Å iem kodekiem ir jÄmaksÄ licencÄÅ”anas maksa, tÄpÄc ierÄ«ces, kas tos atbalsta, ir dÄrgÄkas.
IzrÄdÄs, ka SBC zemÄ kvalitÄte ir saistÄ«ta ar mÄkslÄ«giem Bluetooth skursteÅu un austiÅu iestatÄ«jumu ierobežojumiem, un Å”o ierobežojumu var apiet jebkurÄ esoÅ”ajÄ ierÄ«cÄ, veicot programmatÅ«ras izmaiÅas viedtÄlrunÄ« vai datorÄ.
Kodeks SBC
SBC kodekam ir daudz dažÄdu parametru, kas tiek apspriesti savienojuma iestatÄ«Å”anas fÄzÄ. Starp viÅiem:
- KanÄlu skaits un veids: Apvienotais stereo, Stereo, Dual Channel, Mono;
- FrekvenÄu joslu skaits: 4 vai 8;
- Bloku skaits iepakojumÄ: 4, 8, 12, 16;
- Algoritms bitu sadalei kvantÄÅ”anas laikÄ: Skaļums, SNR;
- KvantÄÅ”anas laikÄ izmantotÄ bitu kopas maksimÄlÄ un minimÄlÄ vÄrtÄ«ba (bitpool): parasti no 2 lÄ«dz 53.
DekodÄÅ”anas ierÄ«cei jÄatbalsta jebkura Å”o parametru kombinÄcija. KodÄtÄjs var neÄ«stenot visu.
EsoÅ”ie Bluetooth skursteÅi parasti atbilst Å”Ädam profilam: apvienotais stereo, 8 joslas, 16 bloki, skaļums, bitpool 2...53. Å is profils kodÄ 44.1 kHz audio ar bitu pÄrraides Ätrumu 328 kbps.
Bitpool parametrs tieÅ”i ietekmÄ bitu pÄrraides Ätrumu vienÄ profilÄ: jo lielÄks tas ir, jo lielÄks bitu pÄrraides Ätrums un lÄ«dz ar to arÄ« kvalitÄte.
TomÄr bitpool parametrs nav piesaistÄ«ts konkrÄtam profilam; Bitu pÄrraides Ätrumu lielÄ mÄrÄ ietekmÄ arÄ« citi parametri: kanÄlu veids, frekvenÄu joslu skaits, bloku skaits. Bitu pÄrraides Ätrumu var palielinÄt netieÅ”i, vienojoties par nestandarta profiliem, nemainot bitpool.
Formula SBC bitu pÄrraides Ätruma aprÄÄ·inÄÅ”anai
PiemÄram, divkanÄlu režīms kodÄ kanÄlus atseviŔķi, katram kanÄlam izmantojot visu bitu kopu. Piespiežot ierÄ«ci izmantot Dual Channel, nevis Joint Stereo, mÄs iegÅ«stam gandrÄ«z divkÄrÅ”u bitu pÄrraides Ätrumu ar tÄdu paÅ”u maksimÄlo bitpool vÄrtÄ«bu: 617 kbps.
ManuprÄt, ar profilu nesaistÄ«tas bitpool vÄrtÄ«bas izmantoÅ”ana sarunu posmÄ ir A2DP standarta trÅ«kums, kas izraisÄ«ja mÄkslÄ«gu SBC kvalitÄtes ierobežojumu. BÅ«tu lietderÄ«gÄk apspriest bitu pÄrraides Ätrumu, nevis bitpool.
Å Ä«s fiksÄtÄs Bitpool un Bitrate vÄrtÄ«bas rodas no tabulas ar ieteicamajÄm vÄrtÄ«bÄm izmantoÅ”anai augstas kvalitÄtes audio. TaÄu ieteikums nav iemesls aprobežoties ar Ŕīm vÄrtÄ«bÄm.
A2DP v1.2 specifikÄcija, kas bija aktÄ«va no 2007. lÄ«dz 2015. gadam, pieprasa, lai visas dekodÄÅ”anas ierÄ«ces pareizi darbotos ar bitu pÄrraides Ätrumu lÄ«dz 512 kbps:
SNK dekodÄtÄjs atbalsta visas iespÄjamÄs bitpool vÄrtÄ«bas, kas nepÄrsniegs maksimÄlo bitu pÄrraides Ätrumu. Å is profils ierobežo pieejamo maksimÄlo bitu pÄrraides Ätrumu lÄ«dz 320 kb/s mono un 512 kb/s divu kanÄlu režīmiem.
JaunajÄ specifikÄcijas versijÄ bitu pÄrraides Ätrumam nav ierobežojumu. Tiek lÄsts, ka modernÄs austiÅas, kas izlaistas pÄc 2015. gada un atbalsta EDR, var atbalstÄ«t bitu pÄrraides Ätrumu lÄ«dz ā730 kbps.
KÄdu iemeslu dÄļ manis pÄrbaudÄ«tajiem Linux (PulseAudio), Android, Blackberry un macOS Bluetooth skursteÅiem ir mÄkslÄ«gi ierobežoti bitpool parametra maksimÄlÄ vÄrtÄ«ba, kas tieÅ”i ietekmÄ maksimÄlo bitu pÄrraides Ätrumu. Bet tÄ nav lielÄkÄ problÄma; gandrÄ«z visas austiÅas ierobežo arÄ« maksimÄlo bitpool vÄrtÄ«bu lÄ«dz 53.
KÄ jau esmu redzÄjis, lielÄkÄ daļa ierÄ«Äu strÄdÄ perfekti uz modificÄta Bluetooth steka ar bitrate 551 kbps, bez pÄrtraukumiem un sprakŔķÄm. Bet Å”Äds bitu pÄrraides Ätrums nekad nebÅ«s konsekvents normÄlos apstÄkļos parastajos Bluetooth skursteÅos.
Bluetooth steka modificÄÅ”ana
JebkurÅ” Bluetooth skurstenis, kas ir saderÄ«gs ar A2DP standartu, atbalsta Dual Channel režīmu, taÄu to nav iespÄjams aktivizÄt no saskarnes.
Pievienosim interfeisam slÄdzi! Esmu izveidojis ielÄpus operÄtÄjsistÄmai Android 8.1 un Android 9, kas pievieno pilnu divu kanÄlu atbalstu, pievieno režīmu režīma pÄrslÄgÅ”anas izvÄlnei izstrÄdÄtÄja rÄ«kos un apstrÄdÄ ar diviem kanÄliem iespÄjotiem SBC tÄ, it kÄ tie bÅ«tu papildu kodeki, piemÄram, aptX. , AAC vai LDAC (Android to sauc par HD audio), pievienojot atzÄ«mi Bluetooth ierÄ«ces iestatÄ«jumiem. Tas izskatÄs Å”Ädi:
Kad izvÄles rÅ«tiÅa ir aktivizÄta, Bluetooth audio sÄk pÄrraidÄ«t ar bitu pÄrraides Ätrumu 551 kbps, ja austiÅas atbalsta savienojuma Ätrumu 3 Mbit/s, vai 452 kbps, ja austiÅas atbalsta tikai 2 Mbit/s.
Å is ielÄps ir iekļauts Å”ÄdÄs alternatÄ«vÄs programmaparatÅ«rÄ:
- LineageOS
- AugÅ”ÄmcelÅ”anÄs Remix
- crDroid
No kurienes radÄs 551 un 452 kbit/s?
Bluetooth gaisa koplietoÅ”anas tehnoloÄ£ija ir izstrÄdÄta, lai efektÄ«vi pÄrsÅ«tÄ«tu lielas fiksÄta izmÄra paketes. Datu pÄrsÅ«tÄ«Å”ana notiek slotos, lielÄkais vienÄ pÄrsÅ«tÄ«Å”anas laikÄ nosÅ«tÄ«to slotu skaits ir 5. Ir arÄ« pÄrsÅ«tÄ«Å”anas režīmi, kas izmanto 1 vai 3 slotus, bet ne 2 vai 4. 5 slotos var pÄrsÅ«tÄ«t lÄ«dz 679 baitiem ar savienojuma Ätrumu 2 Mbit/s un lÄ«dz 1021 baitam ar Ätrumu 3 Mbit/s un attiecÄ«gi 3 - 367 un 552 baiti.
Ja mÄs vÄlamies pÄrsÅ«tÄ«t datus mazÄk par 679 vai 1021 baitiem, bet vairÄk par 367 vai 552 baitiem, pÄrsÅ«tÄ«Å”anai joprojÄm bÅ«s nepiecieÅ”ami 5 sloti un dati tiks pÄrsÅ«tÄ«ti tajÄ paÅ”Ä laikÄ, kas samazina pÄrsÅ«tÄ«Å”anas efektivitÄti.
SBC Dual Channel režīmÄ, 44100 Hz audio ar Bitpool 38 parametriem, 16 bloki katrÄ kadrÄ, 8 frekvenÄu diapazoni, kodÄ audio 164 baitu kadros ar bitu pÄrraides Ätrumu 452 kbps.
Audio ir jÄiekapsulÄ L2CAP un AVDTP pÄrsÅ«tÄ«Å”anas protokolos, kas no audio slodzes aizÅem 16 baitus.
TÄdÄjÄdi viena Bluetooth pÄrraide ar 5 slotiem var uzÅemt 4 audio kadrus:
679 (EDR 2 mbit/s DH5) - 4 (L2CAP) - 12 (AVDTP/RTP) - 1 (Š·Š°Š³Š¾Š»Š¾Š²Š¾Šŗ SBC) - (164*4) = 6
NosÅ«tÄmajÄ paketÄ ievietojam 11.7 ms audio datu, kas tiks pÄrraidÄ«ti 3.75 ms laikÄ, un mums ir palikuÅ”i 6 neizmantoti baiti.
Ja mazliet paaugstinÄsiet bitpool, vairs nevarÄs iepakot 4 audio kadrus vienÄ paketÄ. Jums bÅ«s jÄnosÅ«ta 3 kadri vienlaikus, kas samazina pÄrraides efektivitÄti, samazina vienÄ kadrÄ pÄrraidÄ«tÄ audio daudzumu un ÄtrÄk novedÄ«s pie audio stostÄ«Å”anÄs sliktos radio apstÄkļos.
TÄdÄ paÅ”Ä veidÄ EDR 551 Mbit/s tika izvÄlÄts bitu pÄrraides Ätrums 3 kbit/s: ar Bitpool 47, 16 bloki uz kadru, 8 frekvenÄu diapazoni, kadra izmÄrs ir 200 baiti, ar bitu pÄrraides Ätrumu 551 kbit/s. VienÄ iepakojumÄ ir 5 kadri jeb 14.6 ms mÅ«zikas.
Visu SBC parametru aprÄÄ·inÄÅ”anas algoritms ir diezgan sarežģīts, var viegli apjukt, ja skaita manuÄli, tÄpÄc es izveidoju interaktÄ«vu kalkulatoru, lai palÄ«dzÄtu interesentiem:
KÄpÄc tas viss ir vajadzÄ«gs?
PretÄji izplatÄ«tajam uzskatam par aptX kodeka skaÅas kvalitÄti dažos failos tas var radÄ«t sliktÄkus rezultÄtus nekÄ SBC ar standarta bitu pÄrraides Ätrumu 328 kbps.
SBC dinamiski pieŔķir kvantÄÅ”anas bitus frekvenÄu joslÄm no zemas lÄ«dz augstai. Ja viss bitu pÄrraides Ätrums tika izmantots zemajÄm un vidÄjÄm frekvencÄm, augstÄs frekvences tiks ānogrieztasā (tÄ vietÄ bÅ«s klusums).
aptX visu laiku kvantÄ frekvenÄu joslas ar vienÄdu bitu skaitu, tÄpÄc tam ir nemainÄ«gs bitu pÄrraides Ätrums: 352 kbps 44.1 kHz, 384 kbps 48 kHz, un tas nevar ābitu nobÄ«diā uz tÄm frekvencÄm, kurÄm tÄs visvairÄk vajadzÄ«gas. . AtŔķirÄ«bÄ no SBC, aptX ānegriezÄ«sā frekvences, bet pievienos tÄm kvantÄÅ”anas troksni, samazinot audio dinamisko diapazonu un dažkÄrt ievieÅ”ot raksturÄ«gu sprakŔķÄÅ”anu. SBC āÄd detaļasā - izmet klusÄkÄs vietas.
VidÄji, salÄ«dzinot ar SBC 328k, aptX rada mazÄku kropļojumu mÅ«zikÄ ar plaÅ”u frekvenÄu diapazonu, bet mÅ«zikÄ ar Å”auru frekvenÄu diapazonu un plaÅ”u dinamisko diapazonu dažreiz uzvar SBC 328k.
ApskatÄ«sim Ä«paÅ”u gadÄ«jumu. KlavierspÄles ieraksta spektrogramma:
GalvenÄ enerÄ£ija atrodas frekvencÄs no 0 lÄ«dz 4 kHz un turpinÄs lÄ«dz 10 kHz.
AptX saspiestÄ faila spektrogramma izskatÄs Å”Ädi:
Var redzÄt, ka SBC 328k periodiski pilnÄ«bÄ izslÄdza diapazonu virs 16 kHz un iztÄrÄja visu pieejamo bitu pÄrraides Ätrumu diapazonos, kas bija zem Ŕīs vÄrtÄ«bas. TomÄr aptX ieviesa lielÄkus kropļojumus cilvÄka ausij dzirdamajÄ frekvenÄu spektrÄ, kÄ redzams no aptX spektrogrammas atÅemtajÄ sÄkotnÄjÄ spektrogrammÄ (jo spilgtÄks, jo vairÄk kropļojumu):
KamÄr SBC 328k mazÄk sabojÄja signÄlu diapazonÄ no 0 lÄ«dz 10 kHz un pÄrtrauca pÄrÄjo:
SBC 485 k bitu pÄrraides Ätrums bija pietiekams, lai saglabÄtu visu frekvenÄu diapazonu, neatspÄjojot joslas.
SBC 485k Å”ajÄ trasÄ ievÄrojami apsteidz aptX diapazonÄ no 0 lÄ«dz 15 kHz un ar mazÄku, bet tomÄr pamanÄmu atŔķirÄ«bu - 15-22 kHz (jo tumÅ”Äks, jo mazÄk kropļojumu):
PÄrslÄdzoties uz liela bitu pÄrraides Ätruma SBC, jÅ«s iegÅ«sit audio, kas bieži pÄrspÄj aptX jebkurÄ austiÅÄ. AustiÅÄs, kas atbalsta 3 Mb/s EDR savienojumu, 551 kb/s bitu pÄrraides Ätrums rada skaÅu, kas ir salÄ«dzinÄma ar aptX HD.
Vai varat vÄl vairÄk?
Android ielÄps ietver arÄ« iespÄju vÄl vairÄk palielinÄt bitu pÄrraides Ätrumu 2 Mbps EDR ierÄ«cÄm. Varat palielinÄt bitu pÄrraides Ätrumu no 452 kbit/s lÄ«dz 595 kbit/s, samazinot pÄrraides stabilitÄti sarežģītos radio apstÄkļos.
Pietiek iestatīt mainīgo persist.bluetooth.sbc_hd_higher_bitrate uz 1:
# setprop persist.bluetooth.sbc_hd_higher_bitrate 1
EkstrÄmais bitu pÄrraides Ätruma ielÄps lÄ«dz Å”im ir pieÅemts tikai operÄtÄjsistÄmÄ LineageOS 15.1, bet ne 16.0.
IerÄ«Äu saderÄ«ba
SBC Dual Channel atbalsta gandrÄ«z visas austiÅas, skaļruÅi un automaŔīnas galvas bloki. Tas nav brÄ«nums - standartam ir nepiecieÅ”ams atbalsts jebkurÄ dekodÄÅ”anas ierÄ«cÄ. Ir neliels skaits ierÄ«Äu, kurÄs Å”is režīms rada problÄmas, taÄu tie ir atseviŔķi gadÄ«jumi.
PlaÅ”Äku informÄciju par saderÄ«gÄm ierÄ«cÄm var atrast vietnÄ
SkaÅu atŔķirÄ«bu salÄ«dzinÄjums
Es izveidoju tÄ«mekļa pakalpojumu, kas kodÄ audio SBC (kÄ arÄ« aptX un aptX HD) reÄllaikÄ tieÅ”i pÄrlÅ«kprogrammÄ. Ar to jÅ«s varat salÄ«dzinÄt dažÄdu SBC profilu un citu kodeku skaÅu, faktiski nepÄrraidot audio, izmantojot Bluetooth, jebkurÄs vadu austiÅÄs, skaļruÅos un iecienÄ«tajÄ mÅ«zikÄ, kÄ arÄ« mainÄ«t kodÄÅ”anas parametrus tieÅ”i audio atskaÅoÅ”anas laikÄ.
Sazinieties ar Android izstrÄdÄtÄjiem
Es rakstÄ«ju daudziem Bluetooth steku izstrÄdÄtÄjiem Google, aicinot viÅus apsvÄrt iespÄju iekļaut ielÄpus galvenajÄ Android filiÄlÄ ā AOSP, taÄu nesaÅÄmu nevienu atbildi. Mani ielÄpi iekÅ”Ä
Es bÅ«tu priecÄ«gs, ja varÄtu saÅemt palÄ«dzÄ«bu, lai sazinÄtos ar Google izstrÄdÄtÄjiem un ieviestu SBC HD operÄtÄjsistÄmÄ Android. Gerrit ielÄps jau ir novecojis (tas ir viens no agrÄ«najiem labojumiem), un es to atjauninÄÅ”u, ja izstrÄdÄtÄjus interesÄs manas izmaiÅas (man nav viegli to atjauninÄt, man nav ierÄ«Äu, kas saderÄ«gas ar Android Q ).
SecinÄjums
ViedtÄlruÅu ar LineageOS, Resurrection Remix un crDroid programmaparatÅ«ru lietotÄji Å”obrÄ«d var baudÄ«t uzlabotu skaÅas kvalitÄti, vienkÄrÅ”i aktivizÄjiet opciju Bluetooth ierÄ«ces iestatÄ«jumos. Linux lietotÄji var arÄ« palielinÄt SBC bitu pÄrraides Ätrumu, instalÄjot
Avots: www.habr.com