Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Mus leugh thu an artaigil seo, thathas a’ moladh gun leugh thu an artaigil roimhe: Fuaim tro Bluetooth: cho mionaideach ‘s a ghabhas mu phròifil, codecs agus innealan

Bidh cuid de luchd-cleachdaidh fònaichean-cluaise ag aithris droch chàileachd fuaim agus dìth tricead àrd nuair a bhios iad a’ cleachdadh codec àbhaisteach SBC Bluetooth, a tha a’ faighinn taic bho gach inneal claisneachd. Is e moladh cumanta airson fuaim a leasachadh innealan agus fònaichean-cluaise a cheannach a bheir taic do codecs aptX agus LDAC. Feumaidh na codecs sin cìsean ceadachaidh, agus mar sin tha innealan a bheir taic dhaibh nas daoire.

Tha e a ’tionndadh a-mach gu bheil càileachd ìosal SBC mar thoradh air cuingealachaidhean fuadain air cruachan Bluetooth agus suidheachadh fònaichean-cluaise, agus faodar a’ chuingealachadh seo a sheachnadh air innealan sam bith a th ’ann tro atharrachadh bathar-bog gu fòn cliste no coimpiutair.

Codec airson SBC

Tha mòran pharaimearan eadar-dhealaichte aig codec SBC a thèid a cho-rèiteachadh aig ìre stèidheachadh ceangail. Nam measg:

  • Àireamh agus seòrsa de shianalan: Co-stereo, Stereo, Dual Channel, Mono;
  • Àireamh de chòmhlain tricead: 4 no 8;
  • Àireamh de bhlocaichean sa phacaid: 4, 8, 12, 16;
  • Algorithm airson a bhith a 'sgaoileadh phìosan rè tomhas: Loudness, SNR;
  • An luach as àirde agus as ìsle den amar de phìosan a thathar a’ cleachdadh rè tomhas (bitpool): mar as trice bho 2 gu 53.

Feumaidh an inneal dì-chòdaidh taic a thoirt do mheasgachadh sam bith de na paramadairean sin. Is dòcha nach cuir an encoder a h-uile càil an gnìomh.
Mar as trice bidh cruachan Bluetooth a tha ann mar-thà ag aontachadh air a’ phròifil a leanas: Joint Stereo, 8 bannan, 16 blocaichean, Loudness, bitpool 2..53. Bidh am pròifil seo a’ còdachadh claisneachd 44.1 kHz aig ìre bitrate de 328 kbps.
Bidh am paramadair bitpool a 'toirt buaidh dhìreach air a' bitrate taobh a-staigh aon phròifil: mar as àirde a tha e, nas àirde am bitrate, agus mar sin càileachd.
Ach, chan eil am paramadair bitpool ceangailte ri pròifil sònraichte; Tha am bitrate cuideachd gu ìre mhòr fo bhuaidh paramadairean eile: seòrsa de shianalan, àireamh de chòmhlain tricead, àireamh bhlocaichean. Faodaidh tu am bitrate àrdachadh gu neo-dhìreach, le bhith ag aontachadh air pròifilean neo-àbhaisteach, gun a bhith ag atharrachadh am bitpool.

Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Foirm airson àireamhachadh SBC bitrate

Mar eisimpleir, bidh modh Dual Channel a’ còdachadh seanalan air leth, a’ cleachdadh am bitpool gu lèir airson gach seanail. Le bhith a’ toirt air an inneal Dual Channel a chleachdadh an àite Joint Stereo, gheibh sinn cha mhòr a dhà uiread na bitrate leis an aon luach bitpool as àirde: 617 kbps.
Nam bheachd-sa, tha cleachdadh luach bitpool nach eil ceangailte ri ìomhaigh aig an ìre barganachaidh na locht ann an inbhe A2DP, a lean gu cuingealachadh fuadain air càileachd SBC. Dhèanadh e barrachd ciall bitrate a cho-rèiteachadh seach bitpool.

Tha na luachan stèidhichte Bitpool agus Bitrate seo a’ tighinn bho bhòrd le luachan air am moladh airson an cleachdadh airson claisneachd àrd-inbhe. Ach chan eil moladh na adhbhar airson thu fhèin a chuingealachadh ris na luachan sin.

Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Tha an sònrachadh A2DP v1.2, a bha gnìomhach bho 2007 gu 2015, ag iarraidh gum bi a h-uile inneal dì-chòdaidh ag obair gu ceart le bitrates suas gu 512 kbps:

Bheir decoder an SNK taic do gach luach bitpool a dh’ fhaodadh a bhith ann nach bi nas àirde na an ìre bit as àirde. Tha am pròifil seo a’ cuingealachadh na h-ìre bit as àirde a tha ri fhaighinn gu 320kb/s airson mono, agus 512kb/s airson modhan dà-sheanail.

Anns an dreach ùr den t-sònrachadh chan eil crìoch air a’ bitrate. Thathas den bheachd gum faod fònaichean-cluaise ùr-nodha a chaidh an leigeil ma sgaoil às deidh 2015 a bheir taic do EDR taic a thoirt do ìrean bit suas gu ≈730 kbps.

Airson adhbhar air choireigin, tha crìochan fuadain air an luach as motha aig paramadair bitpool aig na cruachan Linux (PulseAudio), Android, Blackberry agus macOS Bluetooth a rinn mi deuchainn, a bheir buaidh dhìreach air a’ bitrate as àirde. Ach chan e seo an duilgheadas as motha; tha cha mhòr a h-uile fòn-cluaise cuideachd a’ cuingealachadh an luach bitpool as àirde gu 53.
Mar a chunnaic mi mu thràth, bidh a ’mhòr-chuid de dh’ innealan ag obair gu foirfe air stac Bluetooth atharraichte le bitrate de 551 kbps, gun bhriseadh no sgàinidhean. Ach cha bhith an leithid de bitrate gu bràth cunbhalach fo chumhachan àbhaisteach, air cruachan cunbhalach Bluetooth.

Ag atharrachadh an stac Bluetooth

Tha taic aig stac Bluetooth sam bith a tha co-chosmhail ri inbhe A2DP airson modh Dual Channel, ach chan eil e comasach a chuir an gnìomh bhon eadar-aghaidh.

Nach cuir sinn togl ris an eadar-aghaidh! Tha mi air pìosan a dhèanamh airson Android 8.1 agus Android 9 a chuireas làn thaic Dual Channel ris a’ chruach, a chuireas modh ris a’ chlàr modh toggle anns na h-innealan dev, agus a’ làimhseachadh SBCan le comas Dual Channel mar gum biodh iad nan codec a bharrachd mar aptX. , AAC, no LDAC (canar Android ris an HD Audio seo) le bhith a’ cur comharradh ri roghainnean an inneal Bluetooth. Seo mar a tha e coltach:

Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Bathar-bog airson Android 9
Bathar-bog airson Android 8.1

Nuair a thèid am bogsa sgrùdaidh a chuir an gnìomh, tòisichidh claisneachd Bluetooth a chuir a-mach aig ìre bitrate 551 kbps, ma tha na fònaichean-cluaise a’ toirt taic do astar ceangail 3 Mbit/s, no 452 kbps, mura h-eil na fònaichean-cluaise a’ toirt taic ach do 2 Mbit/s.

Tha am paiste seo air a ghabhail a-steach anns na firmwares eile a leanas:

  • LineageOS
  • Remix Aiseirigh
  • crDroid

Cò às a thàinig 551 agus 452 kbit/s?

Tha teicneòlas roinneadh adhair Bluetooth air a dhealbhadh gus pacaidean mòra meud stèidhichte a chuir air adhart gu h-èifeachdach. Tha gluasad dàta a' tachairt ann an sliotan, is e 5 an àireamh as motha de shliotan a thèid a chur ann an aon ghluasad. Tha modhan gluasaid ann cuideachd a chleachdas 1 no 3 sliotan, ach chan eil 2 no 4. Ann an 5 sliotan faodaidh tu suas ri 679 byte a ghluasad aig astar ceangail de 2 Mbit/s agus suas ri 1021 bytes aig astar 3 Mbit/s, agus aig 3 - 367 agus 552 bytes, fa leth.

Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Ma tha sinn airson nas lugha de dhàta a ghluasad na 679 no 1021 bytes, ach barrachd air 367 no 552 bytes, bheir an gluasad fhathast 5 sliotan agus thèid an dàta a ghluasad aig an aon àm, a lughdaicheas èifeachdas gluasaid.

Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Bidh SBC ann am modh Dual Channel, aig claisneachd 44100 Hz le paramadairean Bitpool 38, blocaichean 16 gach frèam, raointean tricead 8, a’ còdachadh claisneachd gu frèamaichean 164 byte, le bitrate de 452 kbps.
Feumaidh claisneachd a bhith air a chuairteachadh ann am protocolaidhean gluasaid L2CAP agus AVDTP, a bheir 16 bytes bhon eallach pàighidh claisneachd.

Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Mar sin, gabhaidh aon tar-chuir Bluetooth le 5 sliotan 4 frèamaichean claisneachd:

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

Cuiridh sinn 11.7 ms de dhàta claisneachd a-steach don phacaid a thèid a chuir, a thèid a ghluasad ann an 3.75 ms, agus tha 6 byte againn nach deach an cleachdadh air fhàgail sa phacaid.
Ma thogas tu am bitpool beagan, cha bhith e comasach tuilleadh 4 frèamaichean claisneachd a phacadh ann an aon phacaid. Feumaidh tu 3 frèamaichean a chuir aig an aon àm, a lughdaicheas èifeachdas tar-chuir, a lughdaicheas na tha de chlaistinn a thèid a chraoladh gach frèam, agus a bheir gu sgiobalta fuaim ann an droch shuidheachadh rèidio.

San aon dòigh, chaidh bitrate de 551 kbit / s a ​​thaghadh airson EDR 3 Mbit / s: le Bitpool 47, blocaichean 16 gach frèam, raointean tricead 8, is e meud an fhrèam 200 bytes, le bitrate de 551 kbit / s. Ann an aon phacaid tha 5 frèamaichean no 14.6 ms de cheòl.

Tha an algairim airson obrachadh a-mach a h-uile paramadair SBC gu math toinnte, faodaidh tu a bhith troimh-chèile gu furasta ma tha thu a’ cunntadh le làimh, agus mar sin rinn mi àireamhair eadar-ghnìomhach gus daoine le ùidh a chuideachadh: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Carson a tha feum air seo uile?

A dh’ aindeoin creideas mòr-chòrdte mu chàileachd fuaim an codec aptX, air cuid de na faidhlichean faodaidh e toraidhean a thoirt gu buil nas miosa na SBC le ìre àbhaisteach de 328 kbps.

Bidh an SBC gu dinamach a’ riarachadh pìosan meudachaidh gu bannan tricead air bunait ìosal gu àrd. Ma chaidh a h-uile bitrate a chleachdadh airson na triceadan ìosal is meadhanach, thèid na triceadan àrda “gearradh dheth” (bidh sàmhchair ann na àite).
Bidh aptX a’ tomhas bannan tricead leis an aon àireamh de phìosan fad na h-ùine, agus is e sin as coireach gu bheil bitrate seasmhach aige: 352 kbps airson 44.1 kHz, 384 kbps airson 48 kHz, agus chan urrainn dha “bit-shift” a thoirt dha na triceadan as motha a tha feumach orra . Eu-coltach ri SBC, cha bhith aptX a’ “gearradh” tricead, ach cuiridh e fuaim àireamhachaidh riutha, a’ lughdachadh raon fiùghantach na claisneachd, agus uaireannan a’ toirt a-steach sgàineadh caractar. Bidh SBC “ag ithe mion-fhiosrachadh” - a ’tilgeil air falbh na raointean as sàmhaiche.
Gu cuibheasach, an taca ris an SBC 328k, tha aptX a’ toirt a-steach nas lugha de shaobhadh ann an ceòl le raon tricead farsaing, ach ann an ceòl le raon tricead cumhang agus raon farsaing fiùghantach, bidh an SBC 328k uaireannan a’ buannachadh.

Beachdaichidh sinn air cùis shònraichte. Spectrogram de chlàradh cluich piàna:
Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Tha am prìomh lùth na laighe ann an triceadan bho 0 gu 4 kHz, agus a 'leantainn suas gu 10 kHz.
Tha speactrogram faidhle air a dhlùthadh ann an aptX a’ coimhead mar seo:
Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Agus is e seo cò ris a tha SBC 328k coltach.
Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Chithear gun do thionndaidh an SBC 328k bho àm gu àm gu tur dheth an raon os cionn 16 kHz, agus gun do chosg e a h-uile bitrate a bha ri fhaighinn air raointean fon luach seo. Ach, thug aptX a-steach barrachd saobhadh a-steach don speactram tricead a chluinnear cluais an duine, mar a chithear anns an speactrogram tùsail a chaidh a thoirt air falbh bhon spectrogram aptX (mar as soilleire, is ann as saobhadh):
Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Ged a mhill an SBC 328k an comharra nas lugha anns an raon bho 0 gu 10 kHz, agus gheàrr e dheth an còrr:
Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Bha am bitrate 485k den SBC gu leòr airson an raon tricead gu lèir a ghleidheadh, gun a bhith a’ cur casg air bannan.
Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Tha an SBC 485k gu math air thoiseach air aptX air an t-slighe seo anns an raon 0-15 kHz, le eadar-dhealachadh nas lugha ach fhathast follaiseach de 15-22 kHz (mar as dorcha as lugha de shaobhadh):
Bidh sinn ag atharrachadh a’ chruach Bluetooth gus fuaim a leasachadh air fònaichean-cluaise às aonais codecs AAC, aptX agus LDAC

Tasglann de chlaistinn tùsail, SBC agus aptX.

Le bhith ag atharrachadh gu SBC àrd-bitrate, gheibh thu claisneachd a bhios gu tric a’ toirt buaidh air aptX air headset sam bith. Air fònaichean-cluaise a bheir taic do cheangal 3 Mbps EDR, bidh ìre de 551 kbps a’ toirt a-mach fuaim a tha coltach ri aptX HD.

An urrainn dhut eadhon barrachd a dhèanamh?

Tha am paiste Android cuideachd a’ toirt a-steach roghainn gus am bitrate àrdachadh airson innealan 2 Mbps EDR. Faodaidh tu am bitrate àrdachadh bho 452 kbit / s gu 595 kbit / s, aig cosgais lughdachadh seasmhachd tar-chuir ann an suidheachaidhean rèidio duilich.
Tha e gu leòr an caochladair persist.bluetooth.sbc_hd_higher_bitrate a shuidheachadh gu 1:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Gu ruige seo cha deach gabhail ris an fhìor phìos bitrate ach ann an LineageOS 15.1, ach chan ann ann an 16.0.

Co-fhreagarrachd inneal

Tha SBC Dual Channel a’ faighinn taic bho cha mhòr a h-uile fòn-cluaise, neach-labhairt agus aonad ceann càr. Chan eil seo na iongnadh - feumaidh an ìre taic ann an innealan dì-chòdaidh sam bith. Tha àireamh bheag de dh'innealan air a bheil am modh seo ag adhbhrachadh dhuilgheadasan, ach tha iad sin nan suidheachaidhean iomallach.
Gheibhear tuilleadh fiosrachaidh mu innealan co-fhreagarrach aig 4pda no xda-developers.

Dèan coimeas eadar eadar-dhealachaidhean fuaim

Rinn mi seirbheis lìn a bhios a’ còdachadh claisneachd gu SBC (a bharrachd air aptX agus aptX HD) ann an àm fìor, dìreach sa bhrobhsair. Leis, faodaidh tu coimeas a dhèanamh eadar fuaim diofar phròifil SBC agus codecs eile, gun a bhith a’ tar-chuir claisneachd tro Bluetooth, air fònaichean-cluaise, luchd-labhairt, agus an ceòl as fheàrr leat, agus cuideachd paramadairean còdaidh atharrachadh gu dìreach fhad ‘s a tha thu a’ cluich claisneachd.
btcodecs.valdikss.org.ru/sbc-encoder

Cuir fios gu luchd-leasachaidh Android

Sgrìobh mi gu mòran de luchd-leasachaidh cruachan Bluetooth aig Google ag iarraidh orra beachdachadh air pìosan a thoirt a-steach don phrìomh mheur Android - AOSP, ach cha d’ fhuair iad aon fhreagairt. Na pìosan agam a-staigh Gerrit t-siostam airson Android a-nuas cuideachd gun bheachdan bho neach sam bith a bha an sàs ann.
Bhithinn toilichte nam faigheadh ​​​​mi beagan cuideachaidh ann a bhith a’ conaltradh ris an luchd-leasachaidh aig Google agus a’ toirt SBC HD gu Android. Tha am paiste ann an gerrit seann-fhasanta mu thràth (is e seo aon de na h-ath-sgrùdaidhean tràth), agus bheir mi ùrachadh dha ma tha ùidh aig an luchd-leasachaidh anns na h-atharrachaidhean agam (chan eil e furasta dhomh ùrachadh, chan eil innealan agam a tha co-chosmhail ri Android Q ).

co-dhùnadh

Faodaidh luchd-cleachdaidh fònaichean sgairteil le LineageOS, Resurrection Remix agus firmware crDroid càileachd fuaim nas fheàrr fhaighinn an-dràsta, dìreach cuir an gnìomh an roghainn ann an roghainnean inneal Bluetooth. Faodaidh luchd-cleachdaidh Linux cuideachd bitrate SBC àrdachadh le bhith a’ stàladh pìos bho Pali Rohar, a tha, am measg rudan eile, a’ cur taic ri codecs aptX, aptX HD agus FastStream.

Source: www.habr.com

Cuir beachd ann