Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Cyn darllen yr erthygl hon, argymhellir eich bod yn darllen yr erthygl flaenorol: Sain trwy Bluetooth: manylion mwyaf am broffiliau, codecau a dyfeisiau

Mae rhai defnyddwyr clustffonau di-wifr yn adrodd am ansawdd sain gwael a diffyg amleddau uchel wrth ddefnyddio codec safonol SBC Bluetooth, a gefnogir gan bob dyfais sain. Argymhelliad cyffredin ar gyfer gwella sain yw prynu dyfeisiau a chlustffonau sy'n cefnogi codecau aptX a LDAC. Mae angen ffioedd trwyddedu ar y codecau hyn, felly mae dyfeisiau sy'n eu cynnal yn ddrutach.

Mae'n ymddangos bod ansawdd isel SBC yn ganlyniad i gyfyngiadau artiffisial pentyrrau Bluetooth a gosodiadau clustffonau, a gellir osgoi'r cyfyngiad hwn ar unrhyw ddyfeisiau sy'n bodoli eisoes trwy newidiadau meddalwedd i ffôn clyfar neu gyfrifiadur.

Codec SBC

Mae gan y codec SBC lawer o baramedrau gwahanol sy'n cael eu trafod yn ystod y cyfnod sefydlu cysylltiad. Yn eu plith:

  • Nifer a math o sianeli: Stereo ar y Cyd, Stereo, Sianel Ddeuol, Mono;
  • Nifer y bandiau amledd: 4 neu 8;
  • Nifer y blociau yn y pecyn: 4, 8, 12, 16;
  • Algorithm ar gyfer dosbarthu darnau yn ystod meintioli: Cryfder, SNR;
  • Uchafswm ac isafswm gwerth y gronfa o ddarnau a ddefnyddir yn ystod meintioli (bitpool): fel arfer o 2 i 53.

Rhaid i'r ddyfais datgodio gefnogi unrhyw gyfuniad o'r paramedrau hyn. Efallai na fydd yr amgodiwr yn gweithredu popeth.
Mae staciau Bluetooth presennol fel arfer yn cytuno ar y proffil canlynol: Stereo ar y Cyd, 8 band, 16 bloc, Cryfder, pwll didau 2..53. Mae'r proffil hwn yn amgodio sain 44.1 kHz ar gyfradd did o 328 kbps.
Mae'r paramedr bitpool yn effeithio'n uniongyrchol ar y bitrate o fewn un proffil: po uchaf ydyw, yr uchaf yw'r bitrate, ac felly'r ansawdd.
Fodd bynnag, nid yw'r paramedr bitpool wedi'i glymu i broffil penodol; Mae paramedrau eraill hefyd yn dylanwadu'n fawr ar y bitrate: math o sianeli, nifer y bandiau amledd, nifer y blociau. Gallwch gynyddu'r bitrate yn anuniongyrchol, trwy gytuno ar broffiliau ansafonol, heb newid y bitpool.

Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Fformiwla ar gyfer cyfrifo cyfradd didau SBC

Er enghraifft, mae modd Sianel Ddeuol yn amgodio sianeli ar wahân, gan ddefnyddio'r bitpool cyfan ar gyfer pob sianel. Trwy orfodi'r ddyfais i ddefnyddio Sianel Ddeuol yn lle Stereo ar y Cyd, rydyn ni'n cael bron i ddwbl y gyfradd bit gyda'r un gwerth bitpool uchaf: 617 kbps.
Yn fy marn i, mae'r defnydd o werth bitpool nad yw'n gysylltiedig â phroffil yn y cam negodi yn ddiffyg yn safon A2DP, a arweiniodd at gyfyngiad artiffisial ar ansawdd SBC. Byddai'n gwneud mwy o synnwyr i drafod bitrate yn hytrach na bitpool.

Mae'r gwerthoedd Bitpool a Bitrate sefydlog hyn yn tarddu o dabl gyda gwerthoedd a argymhellir i'w defnyddio ar gyfer sain o ansawdd uchel. Ond nid yw argymhelliad yn rheswm i gyfyngu'ch hun i'r gwerthoedd hyn.

Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Mae manyleb A2DP v1.2, a oedd yn weithredol o 2007 i 2015, yn ei gwneud yn ofynnol i bob dyfais datgodio weithio'n gywir gyda chyfraddau didau hyd at 512 kbps:

Bydd datgodiwr y SNK yn cefnogi'r holl werthoedd bitpool posibl nad ydynt yn arwain at fwy na'r gyfradd didau uchaf. Mae'r proffil hwn yn cyfyngu'r gyfradd didau uchaf sydd ar gael i 320kb/s ar gyfer mono, a 512kb/s ar gyfer moddau dwy sianel.

Yn y fersiwn newydd o'r fanyleb nid oes cyfyngiad ar y gyfradd didau. Amcangyfrifir y gall clustffonau modern a ryddhawyd ar ôl 2015 sy'n cefnogi EDR gefnogi cyfraddau didau hyd at ≈730 kbps.

Am ryw reswm, mae gan y staciau Linux (PulseAudio), Android, Blackberry a macOS Bluetooth a brofais derfynau artiffisial ar werth uchaf y paramedr bitpool, sy'n effeithio'n uniongyrchol ar y gyfradd didau uchaf. Ond nid dyma'r broblem fwyaf; mae bron pob clustffon hefyd yn cyfyngu'r gwerth bitpool uchaf i 53.
Fel y gwelais eisoes, mae'r rhan fwyaf o ddyfeisiau'n gweithio'n berffaith ar bentwr Bluetooth wedi'i addasu gyda chyfradd didau o 551 kbps, heb ymyrraeth na chraclau. Ond ni fydd cyfradd didau o'r fath byth yn gyson o dan amodau arferol, ar bentyrrau Bluetooth rheolaidd.

Addasu'r pentwr Bluetooth

Mae gan unrhyw stac Bluetooth sy'n gydnaws â safon A2DP gefnogaeth ar gyfer modd Sianel Ddeuol, ond nid yw'n bosibl ei actifadu o'r rhyngwyneb.

Gadewch i ni ychwanegu togl i'r rhyngwyneb! Rwyf wedi gwneud clytiau ar gyfer Android 8.1 ac Android 9 sy'n ychwanegu cefnogaeth Ddeuol Channel lawn i'r pentwr, ychwanegu modd at y ddewislen modd togl yn yr offer dev, a thrin SBCs sydd wedi'u galluogi gan Ddeuol Channel fel pe baent yn godec ychwanegol fel aptX , AAC, neu LDAC (mae Android yn galw hyn yn HD Audio) trwy ychwanegu marc gwirio i osodiadau dyfais Bluetooth. Dyma sut mae'n edrych:

Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Patch ar gyfer Android 9
Patch ar gyfer Android 8.1

Pan fydd y blwch ticio wedi'i actifadu, mae sain Bluetooth yn dechrau cael ei drosglwyddo ar gyfradd did 551 kbps, os yw'r clustffonau'n cynnal cyflymder cysylltu o 3 Mbit yr eiliad, neu 452 kbps, os yw'r clustffonau yn cefnogi 2 Mbit yr eiliad yn unig.

Mae'r darn hwn wedi'i gynnwys yn y firmwares amgen canlynol:

  • LineageOS
  • Atgyfodiad Remix
  • crDroid

O ble daeth 551 a 452 kbit/s?

Mae technoleg rhannu aer Bluetooth wedi'i chynllunio i drosglwyddo pecynnau maint sefydlog mawr yn effeithlon. Mae trosglwyddo data yn digwydd mewn slotiau, y nifer fwyaf o slotiau a anfonir mewn un trosglwyddiad yw 5. Mae yna hefyd ddulliau trosglwyddo sy'n defnyddio 1 neu 3 slot, ond nid 2 neu 4. Mewn 5 slot gallwch chi drosglwyddo hyd at 679 bytes ar gyflymder cysylltiad o 2 Mbit yr eiliad a hyd at 1021 beit ar fuanedd o 3 Mbit yr eiliad, ac ar gyflymder o 3 - 367 a 552 beit, yn y drefn honno.

Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Os ydym am drosglwyddo llai o ddata na 679 neu 1021 bytes, ond mwy na 367 neu 552 beit, bydd y trosglwyddiad yn dal i gymryd 5 slot a bydd y data'n cael ei drosglwyddo yn yr un pryd, sy'n lleihau'r effeithlonrwydd trosglwyddo.

Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Mae SBC yn y modd Sianel Ddeuol, ar sain 44100 Hz gyda pharamedrau Bitpool 38, 16 bloc y ffrâm, 8 ystod amledd, yn amgodio sain i 164 o fframiau beit, gyda chyfradd didau o 452 kbps.
Rhaid amgáu sain mewn protocolau trosglwyddo L2CAP ac AVDTP, sy'n cymryd 16 beit o'r llwyth tâl sain.

Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Felly, gall un trosglwyddiad Bluetooth gyda 5 slot gynnwys 4 ffrâm sain:

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

Rydyn ni'n gosod 11.7 ms o ddata sain yn y pecyn sy'n cael ei anfon, a fydd yn cael ei drawsyrru mewn 3.75 ms, ac mae gennym ni 6 beit heb eu defnyddio ar ôl yn y pecyn.
Os codwch y bitpool ychydig, ni fydd bellach yn bosibl pacio 4 ffrâm sain mewn un pecyn. Bydd yn rhaid i chi anfon 3 ffrâm ar y tro, sy'n lleihau effeithlonrwydd trawsyrru, yn lleihau faint o sain a drosglwyddir fesul ffrâm, a bydd yn arwain yn gyflymach at ataliad sain mewn amodau radio gwael.

Yn yr un modd, dewiswyd cyfradd didau o 551 kbit yr eiliad ar gyfer EDR 3 Mbit yr eiliad: gyda Bitpool 47, 16 bloc y ffrâm, 8 ystod amledd, maint y ffrâm yw 200 beit, gyda chyfradd didau o 551 kbit yr eiliad. Mae un pecyn yn cynnwys 5 ffrâm neu 14.6 ms o gerddoriaeth.

Mae'r algorithm ar gyfer cyfrifo holl baramedrau SBC yn eithaf cymhleth, gallwch chi ddrysu'n hawdd os ydych chi'n cyfrif â llaw, felly fe wnes i gyfrifiannell ryngweithiol i helpu'r rhai sydd â diddordeb: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Pam fod angen hyn i gyd?

Yn groes i'r gred boblogaidd am ansawdd sain y codec aptX, ar rai ffeiliau gall gynhyrchu canlyniadau gwaeth na SBC gyda chyfradd didau safonol o 328 kbps.

Mae'r SBC yn dyrannu didau meintioli yn ddeinamig i fandiau amledd ar sail isel-i-uchel. Os defnyddiwyd yr holl bitrate ar gyfer yr amleddau isel a chanolig, bydd yr amleddau uchel yn cael eu “torri i ffwrdd” (bydd tawelwch yn lle hynny).
Mae aptX yn meintioli bandiau amledd gyda'r un nifer o ddarnau drwy'r amser, a dyna pam mae ganddo gyfradd didau cyson: 352 kbps am 44.1 kHz, 384 kbps am 48 kHz, ac ni all “newid didau” i'r amleddau hynny sydd eu hangen fwyaf . Yn wahanol i SBC, ni fydd aptX yn “torri” amleddau, ond bydd yn ychwanegu sŵn meintioli atynt, gan leihau ystod ddeinamig y sain, ac weithiau cyflwyno clecian nodweddiadol. Mae SBC yn “bwyta manylion” - yn taflu'r mannau tawelaf.
Ar gyfartaledd, o'i gymharu â'r SBC 328k, mae aptX yn cyflwyno llai o afluniad mewn cerddoriaeth gydag ystod amledd eang, ond mewn cerddoriaeth ag ystod amledd cul ac ystod ddeinamig eang, mae'r SBC 328k weithiau'n ennill.

Gadewch i ni ystyried achos arbennig. Sbectrogram o recordiad chwarae piano:
Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Mae'r prif egni mewn amleddau o 0 i 4 kHz, ac yn parhau hyd at 10 kHz.
Mae sbectrogram ffeil sydd wedi'i chywasgu yn aptX yn edrych fel hyn:
Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

A dyma sut olwg sydd ar SBC 328k.
Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Gellir gweld bod y SBC 328k o bryd i'w gilydd wedi diffodd yr ystod uwchben 16 kHz yn gyfan gwbl, ac wedi gwario'r holl gyfradd didau sydd ar gael ar ystodau o dan y gwerth hwn. Fodd bynnag, cyflwynodd aptX fwy o afluniad i'r sbectrwm amledd sy'n glywadwy i'r glust ddynol, fel y gwelir yn y sbectrogram gwreiddiol a dynnwyd o'r sbectrogram aptX (po fwyaf disglair, mwyaf afluniad):
Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Tra bod y SBC 328k wedi difetha'r signal yn llai yn yr ystod o 0 i 10 kHz, a thorri'r gweddill i ffwrdd:
Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Roedd cyfradd didau 485k y SBC yn ddigon i gadw'r ystod amledd gyfan, heb analluogi bandiau.
Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Mae'r SBC 485k gryn dipyn ar y blaen i aptX ar y trac hwn yn yr ystod 0-15 kHz, gyda gwahaniaeth llai ond amlwg o 15-22 kHz (po dywyllaf y lleiaf afluniad):
Rydym yn addasu'r pentwr Bluetooth i wella sain ar glustffonau heb godecs AAC, aptX a LDAC

Archif o sain gwreiddiol, SBC ac aptX.

Trwy newid i SBC cyfradd didau uchel, fe gewch sain sy'n aml yn curo aptX ar unrhyw glustffon. Ar glustffonau sy'n cefnogi cysylltedd EDR 3 Mbps, mae cyfradd didau o 551 kbps yn cynhyrchu sain sy'n debyg i aptX HD.

Allwch chi wneud hyd yn oed mwy?

Mae'r darn Android hefyd yn cynnwys opsiwn i gynyddu'r gyfradd didau ymhellach ar gyfer dyfeisiau EDR 2 Mbps. Gallwch gynyddu'r gyfradd did o 452 kbit yr eiliad i 595 kbit yr eiliad, ar gost lleihau sefydlogrwydd trawsyrru mewn amodau radio anodd.
Mae'n ddigon gosod y newidyn persist.bluetooth.sbc_hd_higher_bitrate i 1:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Hyd yn hyn dim ond yn LineageOS 15.1 y mae'r darn bitrate eithafol wedi'i fabwysiadu, ond nid yn 16.0.

Cydnawsedd Dyfais

Cefnogir SBC Dual Channel gan bron pob clustffon, siaradwr ac uned pen car. Nid yw hyn yn syndod - mae'r safon yn gofyn am ei gefnogaeth mewn unrhyw ddyfeisiau datgodio. Mae nifer fach o ddyfeisiadau lle mae'r modd hwn yn achosi problemau, ond mae'r rhain yn achosion ynysig.
Mae rhagor o fanylion am ddyfeisiau cydnaws ar gael yn W4bsitXNUMX-dns.com neu xda-ddatblygwyr.

Cymhariaeth o wahaniaethau sain

Gwneuthum wasanaeth gwe sy'n amgodio sain i SBC (yn ogystal ag aptX ac aptX HD) mewn amser real, reit yn y porwr. Ag ef, gallwch gymharu sain gwahanol broffiliau SBC a chodecs eraill, heb drosglwyddo sain trwy Bluetooth mewn gwirionedd, ar unrhyw glustffonau gwifrau, siaradwyr, a'ch hoff gerddoriaeth, a hefyd newid paramedrau amgodio yn uniongyrchol wrth chwarae sain.
btcodecs.valdikss.org.ru/sbc-encoder

Cysylltwch â Datblygwyr Android

Ysgrifennais at lawer o ddatblygwyr stack Bluetooth yn Google yn gofyn iddynt ystyried cynnwys clytiau yn y brif gangen Android - AOSP, ond ni chawsant un ymateb. Fy clytiau i mewn System clwt Gerrit ar gyfer Android hefyd yn parhau heb sylw gan unrhyw un dan sylw.
Byddwn yn hapus pe gallwn gael rhywfaint o help i gysylltu â'r datblygwyr yn Google a dod â SBC HD i Android. Mae'r darn yn gerrit eisoes wedi dyddio (dyma un o'r diwygiadau cynnar), a byddaf yn ei ddiweddaru os oes gan y datblygwyr ddiddordeb yn fy newidiadau (nid yw'n hawdd i mi ei ddiweddaru, nid oes gennyf ddyfeisiau sy'n gydnaws â Android Q ).

Casgliad

Gall defnyddwyr ffonau smart gyda LineageOS, Resurrection Remix a firmware crDroid fwynhau ansawdd sain gwell ar hyn o bryd, dim ond actifadu'r opsiwn yn y gosodiadau dyfais Bluetooth. Gall defnyddwyr Linux hefyd gael cyfradd didau SBC uwch trwy osod clwt o Pali Rohar, sydd, ymhlith pethau eraill, yn ychwanegu cefnogaeth ar gyfer codecau aptX, aptX HD a FastStream.

Ffynhonnell: hab.com

Ychwanegu sylw