Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

Musanawerenge nkhaniyi, tikulimbikitsidwa kuti muwerenge nkhani yapitayi: Audio kudzera pa Bluetooth: zambiri zambiri, ma codec ndi zida

Ena ogwiritsa ntchito mahedifoni opanda zingwe amafotokoza kusamveka bwino komanso kusowa kwa ma frequency apamwamba akamagwiritsa ntchito SBC Bluetooth codec, yomwe imathandizidwa ndi zida zonse zomvera. Lingaliro lofala pakukweza mawu ndikugula zida ndi mahedifoni omwe amathandizira ma codec aptX ndi LDAC. Ma codec amenewa amafuna chindapusa cha laisensi, motero zida zomwe zimawathandiza zimakhala zodula.

Zikuoneka kuti khalidwe lotsika la SBC ndi chifukwa cha kuchepa kwa ma stacks a Bluetooth ndi zoikamo zomvera pamutu, ndipo izi zikhoza kudutsa pazida zilizonse zomwe zilipo kupyolera mu kusintha kwa mapulogalamu ku foni yamakono kapena kompyuta.

Kodi SBC

Codec ya SBC ili ndi magawo osiyanasiyana omwe amakambitsirana panthawi yolumikizira. Mwa iwo:

  • Nambala ndi mtundu wa njira: Stereo Yophatikizana, Stereo, Dual Channel, Mono;
  • Chiwerengero cha magulu pafupipafupi: 4 kapena 8;
  • Chiwerengero cha midadada mu phukusi: 4, 8, 12, 16;
  • Algorithm yogawa ma bits panthawi yowerengera: Loudness, SNR;
  • Mtengo wapamwamba komanso wocheperako wa dziwe la ma bits omwe amagwiritsidwa ntchito panthawi ya quantization (bitpool): nthawi zambiri kuchokera 2 mpaka 53.

Chipangizo chosindikizira chiyenera kuthandizira kuphatikiza kulikonse kwa magawowa. Encoder sangathe kugwiritsa ntchito chilichonse.
Ma stacks omwe alipo a Bluetooth amavomereza pa mbiri iyi: Joint Stereo, 8 band, 16 blocks, Loudness, bitpool 2..53. Mbiriyi imakhala ndi mawu a 44.1 kHz pa bitrate ya 328 kbps.
Chizindikiro cha bitpool chimakhudza mwachindunji bitrate mkati mwa mbiri imodzi: ndipamwamba kwambiri, ndipamwamba pa bitrate, choncho khalidwe.
Komabe, chizindikiro cha bitpool sichimangirizidwa ku mbiri yeniyeni; Ma bitrate amakhudzidwanso kwambiri ndi magawo ena: mtundu wa mayendedwe, kuchuluka kwa ma frequency band, kuchuluka kwa midadada. Mutha kuonjezera bitrate mosalunjika, povomerezana ndi mbiri zomwe sizili mulingo, popanda kusintha bitpool.

Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

Fomula yowerengera SBC bitrate

Mwachitsanzo, Dual Channel mode imayika mayendedwe padera, pogwiritsa ntchito bitpool yonse panjira iliyonse. Pokakamiza chipangizochi kuti chigwiritse ntchito Dual Channel m'malo mwa Joint Stereo, timapeza pafupifupi kuwirikiza kawiri ndi mtengo wofanana wa bitpool: 617 kbps.
Malingaliro anga, kugwiritsa ntchito mtengo wa bitpool wosamangirizidwa ku mbiri pa siteji ya zokambirana ndi zolakwika muyeso la A2DP, zomwe zinapangitsa kuti pakhale malire opangira khalidwe la SBC. Zingakhale zomveka kukambirana ndi bitrate osati bitpool.

Izi zokhazikika za Bitpool ndi Bitrate zimachokera patebulo lomwe lili ndi mfundo zovomerezeka kuti zigwiritsidwe ntchito pamawu apamwamba kwambiri. Koma upangiri sichifukwa chodzipangira nokha pazikhalidwe izi.

Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

Mafotokozedwe a A2DP v1.2, omwe adagwira ntchito kuyambira 2007 mpaka 2015, amafuna kuti zida zonse zolembera zigwire ntchito moyenera ndi ma bitrate mpaka 512 kbps:

Decoder ya SNK imathandizira zonse zomwe zingatheke za bitpool zomwe sizimapangitsa kuti pakhale kuchuluka kwakukulu. Mbiriyi imachepetsa kuchuluka kwa biti komwe kuli 320kb/s kwa mono, ndi 512kb/s pamayendedwe anjira ziwiri.

M'mawonekedwe atsopano a ndondomekoyi palibe malire pa bitrate. Akuti mahedifoni amakono omwe adatulutsidwa pambuyo pa 2015 omwe amathandizira EDR amatha kuthandizira mitengo mpaka β‰ˆ730 kbps.

Pazifukwa zina, ma stacks a Linux (PulseAudio), Android, Blackberry ndi macOS Bluetooth omwe ndidawayesa ali ndi malire opangira pamtengo wokwanira wa parameter ya bitpool, yomwe imakhudza mwachindunji kuchuluka kwa bitrate. Koma ili si vuto lalikulu; pafupifupi mahedifoni onse amachepetsanso kuchuluka kwa bitpool mpaka 53.
Monga ndawonera kale, zida zambiri zimagwira ntchito bwino pa stack yosinthidwa ya Bluetooth yokhala ndi bitrate ya 551 kbps, popanda kusokoneza kapena kusokoneza. Koma bitrate yotereyi sidzakhala yofanana ndi momwe zilili bwino, pamapaketi okhazikika a Bluetooth.

Kusintha stack ya Bluetooth

Stack iliyonse ya Bluetooth yomwe imagwirizana ndi muyezo wa A2DP imakhala ndi chithandizo cha Dual Channel mode, koma sizingatheke kuyiyambitsa kuchokera pamawonekedwe.

Tiyeni tiwonjezere chosinthira ku mawonekedwe! Ndapanga zigamba za Android 8.1 ndi Android 9 zomwe zimawonjezera thandizo la Dual Channel pa stack, yonjezerani njira yosinthira menyu pazida za dev, ndikuchita ma SBC othandizidwa ndi Dual Channel ngati kuti ndi codec yowonjezera ngati aptX. , AAC, kapena LDAC ( Android imatcha HD Audio iyi) powonjezera cholembera pazokonda pazida za Bluetooth. Izi ndi momwe zimawonekera:

Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

Chigamba cha Android 9
Chigamba cha Android 8.1

Bokosi likatsegulidwa, mawu a Bluetooth amayamba kufalitsidwa pang'onopang'ono 551 kbps, ngati mahedifoni amathandizira kuthamanga kwa 3 Mbit / s, kapena 452 kbps, ngati mahedifoni amangothandiza 2 Mbit/s.

Chigamba ichi chikuphatikizidwa ndi ma firmwares otsatirawa:

  • LineageOS
  • Chowukitsa Remix
  • Nkhani Yamasewera Othamanga

Kodi 551 ndi 452 kbit/s adachokera kuti?

Ukatswiri wogawana nawo mpweya wa Bluetooth wapangidwa kuti uzitumiza bwino mapaketi akulu akulu osasunthika. Kutumiza kwa data kumachitika m'mipata, chiwerengero chachikulu cha malo omwe amatumizidwa kumodzi ndi 5. Palinso mitundu yosinthira yomwe imagwiritsa ntchito 1 kapena 3 mipata, koma osati 2 kapena 4. Mu 5 mipata mungathe kusamutsa mpaka 679 byte pa liwiro lolumikizana. wa 2 Mbit/s ndi mpaka 1021 mabayiti pa liwiro la 3 Mbit/s, ndi pa 3 - 367 ndi 552 mabayiti, motero.

Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

Ngati tikufuna kusamutsa deta zochepa kuposa 679 kapena 1021 mabayiti, koma kuposa 367 kapena 552 mabayiti, kutengerapo kudzatengabe mipata 5 ndipo deta idzasamutsidwa nthawi yomweyo, zomwe zimachepetsa kusamutsa bwino.

Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

SBC mu Dual Channel mode, pa audio ya 44100 Hz yokhala ndi magawo a Bitpool 38, midadada 16 pa chimango, ma frequency 8, imayika mawu muzithunzi za 164 byte, ndi bitrate ya 452 kbps.
Zomvera ziyenera kuphatikizidwa mu L2CAP ndi AVDTP ma protocol, omwe amatenga ma 16 byte kuchokera pakulipira kwamawu.

Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

Chifukwa chake, kutumiza kumodzi kwa Bluetooth komwe kumakhala ndi mipata 5 kumatha kukhala ndi mafelemu 4 omvera:

679 (EDR 2 mbit/s DH5) - 4 (L2CAP) - 12 (AVDTP/RTP) - 1 (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ SBC) - (164*4) = 6

Timayika ma 11.7 ms a data yomvera mu paketi yomwe ikutumizidwa, yomwe idzatumizidwa mu 3.75 ms, ndipo tili ndi ma byte 6 osagwiritsidwa ntchito omwe atsala mu paketi.
Mukakweza bitpool pang'ono, sikungathekenso kunyamula mafelemu 4 mu phukusi limodzi. Muyenera kutumiza mafelemu atatu nthawi imodzi, zomwe zimachepetsa kufala kwachangu, zimachepetsa kuchuluka kwa mawu omwe amafalitsidwa pa chimango chilichonse, ndipo zipangitsa kuti chibwibwi cha mawu pawailesi ikhale yovuta.

Momwemonso, bitrate ya 551 kbit / s inasankhidwa kwa EDR 3 Mbit / s: ndi Bitpool 47, midadada 16 pa chimango, maulendo afupipafupi a 8, kukula kwake ndi 200 bytes, ndi bitrate ya 551 kbit / s. Phukusi limodzi lili ndi mafelemu 5 kapena 14.6 ms nyimbo.

Ma algorithm owerengera magawo onse a SBC ndi ovuta kwambiri, mutha kusokonezeka mosavuta mukawerenga pamanja, ndiye ndidapanga chowerengera chothandizira kuti chithandizire omwe akufuna: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

N’chifukwa chiyani zonsezi zili zofunika?

Mosiyana ndi zomwe anthu ambiri amakhulupirira zamtundu wa aptX codec, pamafayilo ena amatha kutulutsa zotsatira zoyipa kuposa SBC yokhala ndi bitrate ya 328 kbps.

SBC imagawa mwachangu ma quantization bits kuma frequency band pamaziko otsika mpaka okwera. Ngati bitrate yonse idagwiritsidwa ntchito pamayendedwe otsika ndi apakati, ma frequency apamwamba "adzadulidwa" (padzakhala chete m'malo mwake).
aptX imawerengera ma frequency mabandi okhala ndi ma bitrate omwewo nthawi zonse, ndichifukwa chake imakhala ndi bitrate: 352 kbps kwa 44.1 kHz, 384 kbps kwa 48 kHz, ndipo siingathe "kusintha pang'ono" ku ma frequency omwe amawafuna kwambiri. . Mosiyana ndi SBC, aptX "sidzadula" ma frequency, koma imawonjezera phokoso kwa iwo, kuchepetsa kusinthasintha kwamawu, ndipo nthawi zina kumayambitsa kugwedezeka kwapadera. SBC "idya zambiri" - imataya malo opanda phokoso kwambiri.
Pa avareji, poyerekeza ndi SBC 328k, aptX imayambitsa kusokonekera pang'ono mu nyimbo zokhala ndi ma frequency osiyanasiyana, koma mu nyimbo zokhala ndi ma frequency ochepera komanso osiyanasiyana osinthika, SBC 328k nthawi zina imapambana.

Tiyeni tikambirane nkhani yapadera. Spectrogram ya kujambula kwa piyano:
Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

Mphamvu yayikulu imakhala pamayendedwe kuchokera ku 0 mpaka 4 kHz, ndikupitilira mpaka 10 kHz.
Mawonekedwe a fayilo yopanikizidwa mu aptX amawoneka motere:
Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

Ndipo izi ndi zomwe SBC 328k imawoneka.
Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

Zitha kuwoneka kuti SBC 328k nthawi ndi nthawi idazimitsa mitundu yopitilira 16 kHz, ndikugwiritsa ntchito ma bitrate onse omwe amapezeka pamizere yocheperako. Komabe, aptX idayambitsa kupotoza kowonjezereka mu mawonekedwe afupipafupi omwe amamveka m'khutu la munthu, monga momwe tikuwonera pachiwonetsero choyambirira chochotsedwa pa aptX spectrogram (chowala, chosokoneza kwambiri):
Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

Pomwe SBC 328k idawononga siginecha pang'ono kuchokera pa 0 mpaka 10 kHz, ndikudula ena onse:
Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

485k bitrate ya SBC inali yokwanira kusunga ma frequency onse, popanda kuletsa mabandi.
Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

SBC 485k ili patsogolo kwambiri pa aptX panjanjiyi pamitundu ya 0-15 kHz, ndipo ili ndi kusiyana kocheperako, koma kowonekerabe - mu 15-22 kHz (kwakuda, kupotoza kochepa):
Timasintha stack ya Bluetooth kuti timveke bwino pamakutu opanda ma codec a AAC, aptX ndi LDAC

Kusungidwa kwamawu oyambira, SBC ndi aptX.

Posinthira ku SBC yotsika kwambiri, mupeza zomvera zomwe nthawi zambiri zimagunda aptX pamutu uliwonse. Pa mahedifoni omwe amathandizira kulumikizana kwa 3 Mbps EDR, bitrate ya 551 kbps imatulutsa mawu ofanana ndi aptX HD.

Kodi mungathe kuchita zambiri?

Chigamba cha Android chimaphatikizansopo mwayi wowonjezeranso bitrate ya zida za 2 Mbps EDR. Mutha kuwonjezera ma bitrate kuchokera ku 452 kbit/s kufika ku 595 kbit/s, pamtengo wochepetsera kukhazikika kwa kufalikira muzovuta za wailesi.
Ndikokwanira kukhazikitsa kusinthika kwa persist.bluetooth.sbc_hd_higher_bitrate kukhala 1:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Chigamba choopsa kwambiri cha bitrate changotengedwa ku LineageOS 15.1, koma osati mu 16.0.

Kugwirizana kwa Chipangizo

SBC Dual Channel imathandizidwa ndi pafupifupi mahedifoni onse, ma speaker ndi mitu yamagalimoto. Izi sizosadabwitsa - muyezo umafunikira chithandizo chake pazida zilizonse zolembera. Pali zida zazing'ono zomwe njira iyi imayambitsa mavuto, koma izi ndizochitika zokha.
Zambiri zokhudzana ndi zida zomwe zimagwirizana zitha kupezeka pa 4 pa kapena osintha xda.

Kufananiza kwa mawu osiyanasiyana

Ndidapanga tsamba lawebusayiti lomwe limayika mawu ku SBC (komanso aptX ndi aptX HD) munthawi yeniyeni, mumsakatuli momwemo. Ndi iyo, mutha kufananiza mamvekedwe amitundu yosiyanasiyana ya SBC ndi ma codec ena, osatumiza mawu kudzera pa Bluetooth, pa mahedifoni aliwonse a waya, okamba, ndi nyimbo zomwe mumakonda, komanso kusintha magawo a encoding mwachindunji mukamasewera mawu.
btcodecs.valdikss.org.ru/sbc-encoder

Lumikizanani ndi Madivelopa a Android

Ndinalembera ambiri opanga ma stack a Bluetooth ku Google ndikuwafunsa kuti aganizire kuphatikiza zigamba mu nthambi yayikulu ya Android - AOSP, koma sanalandire yankho limodzi. Zigamba zanga mkati Gerrit patch system ya Android adakhalanso popanda ndemanga kuchokera kwa aliyense wokhudzidwa.
Ndingakhale wokondwa ngati ndingapeze thandizo lolumikizana ndi opanga pa Google ndikubweretsa SBC HD ku Android. Chigamba mu gerrit chachikale kale (ichi ndi chimodzi mwazosinthidwa koyambirira), ndipo ndisintha ngati opanga ali ndi chidwi ndi kusintha kwanga (sikosavuta kuti ndisinthire, ndilibe zida zomwe zimagwirizana ndi Android Q. ).

Pomaliza

Ogwiritsa ntchito mafoni a m'manja omwe ali ndi LineageOS, Resurrection Remix ndi crDroid firmware amatha kusangalala ndi mawu omveka bwino pompano, ingoyambitsani mwayi wosankha pazida za Bluetooth. Ogwiritsa ntchito a Linux amathanso kuwonjezera SBC bitrate pakuyika chigamba chochokera ku Pali Rohar, zomwe, mwa zina, zimawonjezera chithandizo cha aptX, aptX HD ndi FastStream codecs.

Source: www.habr.com

Kuwonjezera ndemanga