Cyn darllen yr erthygl hon, argymhellir eich bod yn darllen yr erthygl flaenorol:
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.
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.
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:
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.
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.
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.
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:
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:
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:
A dyma sut olwg sydd ar SBC 328k.
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):
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:
Roedd cyfradd didau 485k y SBC yn ddigon i gadw'r ystod amledd gyfan, heb analluogi bandiau.
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):
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
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.
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
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
Ffynhonnell: hab.com