Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

Anvan w li atik sa a, li rekòmande pou w li atik anvan an: Odyo atravè Bluetooth: maksimòm detay sou pwofil, kodèk ak aparèy

Gen kèk itilizatè kask san fil rapòte bon jan kalite son pòv ak mank de frekans segondè lè w ap itilize estanda SBC Bluetooth codec, ki sipòte pa tout aparèy odyo. Yon rekòmandasyon komen pou amelyore son se achte aparèy ak kas ekoutè ki sipòte kodèk aptX ak LDAC. Kodèk sa yo mande pou frè lisans, kidonk aparèy ki sipòte yo pi chè.

Li sanble ke bon jan kalite a ba nan SBC se akòz limit atifisyèl nan pil Bluetooth ak anviwònman kas ekoutè, ak limit sa a ka kontoune sou nenpòt aparèy ki egziste deja atravè chanjman lojisyèl nan yon smartphone oswa òdinatè.

Kodèk SBC

Codec SBC a gen anpil paramèt diferan ke yo negosye pandan faz konfigirasyon koneksyon an. Pami yo:

  • Kantite ak kalite chanèl: Joint Stereo, Stereo, Doub Chèn, Mono;
  • Kantite gwoup frekans: 4 oswa 8;
  • Kantite blòk nan pake a: 4, 8, 12, 16;
  • Algorithm pou distribye Bits pandan quantization: Loudness, SNR;
  • Valè maksimòm ak minimòm pisin Bits yo itilize pandan quantization (bitpool): anjeneral soti nan 2 a 53.

Aparèy dekodaj la dwe sipòte nenpòt konbinezon paramèt sa yo. Ankode a pa ka aplike tout bagay.
Pile Bluetooth ki deja egziste anjeneral dakò sou pwofil sa a: Joint Stereo, 8 gwoup, 16 blòk, Loudness, bitpool 2..53. Pwofil sa a kode odyo 44.1 kHz ak yon vitès 328 kbps.
Paramèt bitpool la afekte dirèkteman debit la nan yon pwofil: plis li se pi wo, pi gwo vitès la, ak Se poutèt sa bon jan kalite a.
Sepandan, paramèt bitpool la pa mare nan yon pwofil espesifik; Bitrate a tou lajman enfliyanse pa lòt paramèt: kalite chanèl, kantite gwoup frekans, kantite blòk. Ou ka ogmante bitrate a endirèkteman, lè w dakò sou pwofil ki pa estanda, san w pa chanje bitpool la.

Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

Fòmil pou kalkile SBC bitrate

Pou egzanp, mòd Doub Chèn kode chanèl separeman, lè l sèvi avèk tout bitpool la pou chak chanèl. Lè nou fòse aparèy la sèvi ak Doub Chèn olye de Joint Stereo, nou jwenn prèske doub pousantaj bit la ak menm valè bitpool maksimòm lan: 617 kbps.
Nan opinyon mwen, itilizasyon yon valè bitpool ki pa mare nan yon pwofil nan etap negosyasyon an se yon defo nan estanda A2DP a, ki te mennen nan yon limit atifisyèl nan bon jan kalite SBC. Li ta fè plis sans pou negosye bitrate olye ke bitpool.

Valè Bitpool ak Bitrate fiks sa yo soti nan yon tablo ak valè rekòmande pou itilize pou odyo kalite siperyè. Men, yon rekòmandasyon se pa yon rezon pou limite tèt ou nan valè sa yo.

Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

A2DP v1.2 spesifikasyon, ki te aktif soti nan 2007 a 2015, mande pou tout aparèy dekodaj yo travay kòrèkteman ak debit jiska 512 kbps:

Dekodeur SNK la dwe sipòte tout valè bitpool posib ki pa depase to maksimòm bit la. Pwofil sa a limite pousantaj bit maksimòm ki disponib a 320kb/s pou mono, ak 512kb/s pou mòd de-chanèl.

Nan nouvo vèsyon an nan spesifikasyon la pa gen okenn limit sou bitrate la. Yo estime ke kas ekoutè modèn yo lage apre 2015 ki sipòte EDR ka sipòte to bit jiska ≈730 kbps.

Pou kèk rezon, Linux (PulseAudio), Android, Blackberry ak macOS Bluetooth pil mwen teste yo gen limit atifisyèl sou valè maksimòm paramèt bitpool la, ki afekte dirèkteman vitès maksimòm nan. Men, sa a se pa pi gwo pwoblèm nan; prèske tout kas ekoutè tou limite valè maksimòm bitpool a 53.
Kòm mwen te deja wè, pifò aparèy yo travay pafètman sou yon pil Bluetooth modifye ak yon vitès 551 kbps, san entèripsyon oswa krak. Men, tankou yon bitrate pa janm ap konsistan nan kondisyon nòmal, sou pil Bluetooth regilye.

Modifye pil Bluetooth la

Nenpòt pile Bluetooth ki konpatib ak estanda A2DP a gen sipò pou mòd Doub Chèn, men li pa posib pou aktive li nan koòdone la.

Ann ajoute yon baskile nan koòdone a! Mwen te fè plak pou Android 8.1 ak Android 9 ki ajoute tout sipò Doub Chèn nan pil la, ajoute yon mòd nan meni an aktive mòd nan zouti dev yo, epi trete SBCs Doub Chèn ki pèmèt yo tankou si yo te yon kodèk adisyonèl tankou aptX. , AAC, oswa LDAC (Android rele HD Audio sa a) lè w ajoute yon mak nan paramèt aparèy Bluetooth yo. Men sa li sanble:

Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

Patch pou Android 9
Patch pou Android 8.1

Lè kaz la aktive, odyo Bluetooth kòmanse transmèt nan yon vitès 551 kbps, si kas ekoutè yo sipòte yon vitès koneksyon 3 Mbit/s, oswa 452 kbps, si kas ekoutè yo sèlman sipòte 2 Mbit/s.

Patch sa a enkli nan firmwèr altènatif sa yo:

  • LineageOS
  • Rezirèksyon Remix
  • crDroid

Ki kote 551 ak 452 kbit/s soti?

Teknoloji Bluetooth lè-pataje fèt pou transmèt avèk efikasite gwo pake gwosè fiks yo. Transfè done fèt nan plas, pi gwo kantite fant voye nan yon transfè se 5. Genyen tou mòd transfè ki itilize 1 oswa 3 fant, men se pa 2 oswa 4. Nan 5 fant ou ka transfere jiska 679 octets nan yon vitès koneksyon. nan 2 Mbit/s ak jiska 1021 bytes nan yon vitès 3 Mbit/s, ak nan 3 - 367 ak 552 bytes, respektivman.

Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

Si nou vle transfere mwens done pase 679 oswa 1021 bytes, men plis pase 367 oswa 552 bytes, transfè a ap toujou pran 5 fant ak done yo pral transfere nan menm tan an, ki diminye efikasite nan transfè.

Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

SBC nan mòd Doub Chèn, nan 44100 Hz odyo ak Bitpool 38 paramèt, 16 blòk pou chak ankadreman, 8 chenn frekans, kode odyo nan ankadreman 164 byte, ak yon pousantaj de 452 kbps.
Odyo a dwe enkapsule nan pwotokòl transfè L2CAP ak AVDTP, ki pran 16 octets nan chaj odyo a.

Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

Kidonk, yon sèl transmisyon Bluetooth ak 5 fant ka akomode 4 ankadreman odyo:

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

Nou mete 11.7 ms nan done odyo nan pake ke yo voye a, ki pral transmèt nan 3.75 ms, epi nou gen 6 octets ki pa itilize ki rete nan pake a.
Si ou ogmante bitpool la yon ti kras, li p ap posib ankò pake 4 ankadreman odyo nan yon sèl pake. Ou pral oblije voye 3 ankadreman nan yon moman, ki diminye efikasite transmisyon, diminye kantite odyo transmèt pou chak ankadreman, epi li pral pi vit mennen nan bege odyo nan move kondisyon radyo.

Menm jan an tou, yo te chwazi yon pousantaj 551 kbit / s pou EDR 3 Mbit / s: ak Bitpool 47, 16 blòk pou chak ankadreman, 8 chenn frekans, gwosè ankadreman an se 200 bytes, ak yon vitès 551 kbit / s. Yon pake gen 5 ankadreman oswa 14.6 ms mizik.

Algorithm pou kalkile tout paramèt SBC yo byen konplèks, ou ka fasilman konfonn si ou konte manyèlman, kidonk mwen te fè yon kalkilatris entèaktif pou ede moun ki enterese: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Poukisa tout bagay sa yo nesesè?

Kontrèman ak kwayans popilè sou bon jan kalite son nan kodèk aptX la, sou kèk dosye li ka pwodwi rezilta pi mal pase SBC ak yon vitès estanda 328 kbps.

SBC dinamikman allocate ti quantization pou bann frekans sou yon baz ba-a-wo. Si yo te itilize tout vitès la pou frekans ki ba ak mwayen yo, frekans segondè yo pral "koupe" (pral gen silans olye).
aptX quantize bann frekans ak menm kantite bit tout tan tout tan an, se poutèt sa li gen yon vitès konstan: 352 kbps pou 44.1 kHz, 384 kbps pou 48 kHz, epi li pa ka "bit-shift" nan frekans sa yo ki pi bezwen yo. . Kontrèman ak SBC, aptX pa pral "koupe" frekans yo, men li pral ajoute bri quantization yo, diminye seri dinamik odyo a, epi pafwa entwodwi karakteristik krak. SBC "manje detay" - jete zòn ki pi trankil yo.
An mwayèn, konpare ak SBC 328k a, aptX entwodui mwens distorsion nan mizik ak yon ranje frekans lajè, men nan mizik ki gen yon ranje frekans etwat ak yon ranje dinamik lajè, SBC 328k a pafwa genyen.

Ann konsidere yon ka espesyal. Spectrogram nan yon anrejistreman k ap jwe pyano:
Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

Enèji prensipal la chita nan frekans ki soti nan 0 a 4 kHz, epi li kontinye jiska 10 kHz.
Spectrogram nan yon dosye konprese nan aptX sanble sa a:
Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

E sa i parey SBC 328k.
Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

Li ka wè ke SBC 328k detanzantan konplètman etenn ranje ki pi wo a 16 kHz, epi li te depanse tout vitès ki disponib nan ranje ki anba a valè sa a. Sepandan, aptX te entwodui plis distòsyon nan spectre frekans ki ka tande nan zòrèy imen an, jan yo ka wè nan spectrogram orijinal la soustraksyon soti nan spectrogram aptX (pi klere a, plis distòsyon an):
Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

Pandan ke SBC 328k la gate siyal la mwens nan seri ki soti nan 0 a 10 kHz, epi koupe rès la:
Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

To 485k SBC a te ase pou konsève tout ranje frekans lan, san yo pa enfimite bann.
Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

SBC 485k se siyifikativman devan aptX sou track sa a nan seri a nan 0-15 kHz, ak yon diferans ki pi piti, men toujou aparan - nan 15-22 kHz (pi fonse a, mwens distòsyon an):
Nou modifye pil Bluetooth la pou amelyore son sou kas ekoutè san kodèk AAC, aptX ak LDAC

Achiv odyo orijinal, SBC ak aptX.

Lè w chanje nan yon SBC ki gen gwo vitès, w ap jwenn odyo ki souvan bat aptX sou nenpòt kas. Sou kas ekoutè ki sipòte koneksyon 3 Mbps EDR, yon vitès 551 kbps pwodui son ki konparab ak aptX HD.

Èske ou ka fè plis toujou?

Patch Android a gen ladan tou yon opsyon pou ogmante vitès la pou aparèy EDR 2 Mbps. Ou ka ogmante bitrate a soti nan 452 kbit / s a ​​595 kbit / s, nan pri pou diminye estabilite transmisyon nan kondisyon radyo difisil.
Li ase pou mete varyab persist.bluetooth.sbc_hd_higher_bitrate a 1:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Jiskaprezan patch ekstrèm bitrate a sèlman te adopte nan LineageOS 15.1, men se pa nan 16.0.

Aparèy konpatibilite

SBC Doub Chèn sipòte pa prèske tout kas ekoutè, oratè ak inite tèt machin. Sa a se pa etonan - estanda a mande sipò li nan nenpòt aparèy dekodaj. Gen yon ti kantite aparèy sou ki mòd sa a lakòz pwoblèm, men sa yo se ka izole.
Ou ka jwenn plis detay sou aparèy konpatib nan W4bsitXNUMX-dns.com oswa devlopè xda.

Konparezon diferans son

Mwen te fè yon sèvis entènèt ki kode odyo nan SBC (kòm byen ke aptX ak aptX HD) an tan reyèl, dwa nan navigatè a. Avèk li, ou ka konpare son an nan diferan pwofil SBC ak lòt kodèk, san yo pa aktyèlman transmèt odyo atravè Bluetooth, sou nenpòt kas ekoutè fil, moun ki pale, ak mizik pi renmen ou, epi tou chanje paramèt kodaj dirèkteman pandan y ap jwe odyo.
btcodecs.valdikss.org.ru/sbc-encoder

Kontakte Devlopè Android yo

Mwen te ekri anpil devlopè Bluetooth pile nan Google mande yo konsidere enkli plak nan branch prensipal Android - AOSP, men pa t 'resevwa yon sèl repons. Patch mwen yo nan Gerrit patch sistèm pou android tou te rete san kòmantè nan men nenpòt moun ki enplike.
Mwen ta kontan si mwen ta ka jwenn kèk èd pou kontakte devlopè yo nan Google epi pote SBC HD sou Android. Patch nan gerrit la deja demode (sa a se youn nan premye revizyon yo), epi mwen pral mete ajou li si devlopè yo enterese nan chanjman mwen yo (li pa fasil pou mwen mete ajou li, mwen pa gen aparèy konpatib ak Android Q. ).

Konklizyon

Itilizatè yo nan smartphone ak LineageOS, Resurrection Remix ak firmwèr crDroid ka jwi bon jan kalite son amelyore kounye a, jis aktive opsyon a nan paramèt aparèy Bluetooth yo. Itilizatè Linux yo ka jwenn tou ogmante pousantaj SBC lè yo enstale patch soti nan Pali Rohar, ki, pami lòt bagay, ajoute sipò pou kodèk aptX, aptX HD ak FastStream.

Sous: www.habr.com

Add nouvo kòmantè