Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Berî xwendina vê gotarê, tê pêşniyar kirin ku hûn gotara berê bixwînin: Deng bi rêya Bluetooth: hûrguliyên herî zêde di derbarê profîl, kodek û cîhazan de

Hin bikarhênerên guhên bêtêl dema ku kodek Bluetooth-ya standard SBC bikar tînin, ku ji hêla hemî cîhazên deng ve tê piştgirî kirin, qalîteya deng a belengaz û nebûna frekansên bilind radigihînin. Pêşniyarek hevpar a ji bo başkirina deng ev e ku meriv amûr û guhên ku kodekên aptX û LDAC piştgirî dikin bikirin. Van kodekan xercên lîsansê hewce dikin, ji ber vê yekê amûrên ku wan piştgirî dikin bihatir in.

Derket holê ku qalîteya nizm ya SBC ji ber tixûbên sûnî yên stûnên Bluetooth û mîhengên guhê ye, û ev tixûb dikare li ser her cîhazên heyî bi guheztinên nermalavê li smartphone an komputerê were derbas kirin.

Codec SBC

Kodek SBC gelek pîvanên cihêreng hene ku di qonaxa sazkirina girêdanê de têne danûstandin. Di nav wan de:

  • Hejmar û celebê kanalan: Stereoya Hevbeş, Stereo, Kanala Dualî, Mono;
  • Hejmara bendên frekansê: 4 an 8;
  • Hejmara blokên di pakêtê de: 4, 8, 12, 16;
  • Algorîtmaya belavkirina bîtan di dema quantîzasyonê de: Dengbûn, SNR;
  • Nirxa herî zêde û hindiktirîn a hewza bitsên ku di dema quantîzasyonê de têne bikar anîn (bitpool): bi gelemperî ji 2 heta 53.

Pêdivî ye ku cîhaza deşîfrekirinê her yek ji van parameteran piştgirî bike. Dibe ku şîfreker her tiştî bicîh neke.
Stakên Bluetooth-ê yên heyî bi gelemperî li ser profîla jêrîn li hev dikin: Stereoya Hevbeş, 8 band, 16 blok, Dengbûn, bitpool 2..53. Ev profîl dengê 44.1 kHz bi bitrate 328 kbps kod dike.
Parametreya bitpool rasterast bandorê li bitrate di nav yek profîlê de dike: her ku ew bilind be, bitrate jî bilindtir dibe, û ji ber vê yekê kalîteyê.
Lêbelê, pîvana bitpool bi profîlek taybetî ve ne girêdayî ye; Bitrate jî bi piranî ji hêla pîvanên din ve tê bandor kirin: celebê kanalan, hejmara bendên frekansê, hejmara blokan. Hûn dikarin bitrate nerasterast zêde bikin, bi lihevkirina li ser profîlên ne-standard, bêyî ku bitpoolê biguhezînin.

Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Formula ji bo hesabkirina bitrateya SBC

Mînakî, moda Dual Channel kanalan ji hev cuda şîfre dike, ji bo her kanalek tevahî bitpool bikar tîne. Bi zorêkirina cîhazê ku li şûna Joint Stereo-ya Hevbeş Kanala Dualî bikar bîne, em bi heman nirxa herî zêde ya bitpoolê re hema hema du qat bitrateyê digirin: 617 kbps.
Bi dîtina min, karanîna nirxek bitpool-ê ku di qonaxa muzakereyê de bi profîlek ve ne girêdayî ye di standarda A2DP de xeletiyek e, ku bû sedema sînorkirinek çêkirî ya kalîteya SBC. Dê ji bitpool zêdetir muzakere li ser bitrateyê were kirin.

Van nirxên Bitpool û Bitrate yên sabît ji tabloyek bi nirxên pêşniyarkirî yên ji bo karanîna ji bo dengek kalîteya bilind derdikevin. Lê pêşniyarek ne sedemek e ku hûn xwe bi van nirxan re sînordar bikin.

Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Taybetmendiya A2DP v1.2, ku ji 2007-an heya 2015-an çalak bû, hewce dike ku hemî amûrên dekodkirinê bi bitrateyên heya 512 kbps rast bixebitin:

Dekodera SNK-ê dê hemî nirxên bitpool-ê yên gengaz ên ku ji rêjeya herî zêde ya bit-ê dernakeve piştgirî bike. Ev profîl rêjeya bit ya herî zêde ya berdest ji bo mono 320kb/s, û ji bo modên du-kanal 512kb/s sînor dike.

Di guhertoya nû ya taybetmendiyê de ti sînorek li ser bitrate tune. Tê texmîn kirin ku guhên nûjen ên ku piştî 2015-an hatine berdan ku EDR piştgirî dikin dikarin rêjeyên bit heta ≈730 kbps piştgirî bikin.

Ji ber hin sedeman, stakên Bluetooth (PulseAudio), Android, Blackberry û macOS yên ku min ceribandim, li ser nirxa herî zêde ya parametreya bitpool-ê sînorên sûnî hene, ku rasterast bandorê li rêjeya herî zêde ya bitpool dike. Lê ev ne pirsgirêka herî mezin e; hema hema hemî guhê nirxa bitpoolê ya herî zêde jî bi 53 sînordar dikin.
Wekî ku min berê jî dîtiye, piraniya cîhazan li ser stackek Bluetooth-ê ya guhertî ya bi bitrateya 551 kbps, bê navber û şikestin, bêkêmasî dixebitin. Lê bitrateyek wusa dê di bin şert û mercên normal de, li ser stûnên Bluetooth-ê yên birêkûpêk, çu carî domdar nebe.

Guhertina stika Bluetooth-ê

Her stakek Bluetooth-ê ku bi standarda A2DP-ê re hevaheng e ji bo moda Dual Channel piştgirî heye, lê ne gengaz e ku wê ji navbeynê ve çalak bike.

Werin em pêvekek li navrûyê zêde bikin! Min ji bo Android 8.1 û Android 9 paç çêkirine ku piştgirîya tevahî Dual Channel li stackê zêde dikin, modek li menuya guheztina modê di nav amûrên dev de zêde dikin, û SBC-yên çalakkirî yên Dual Channel wekî ku ew kodekek din a mîna aptX-ê derman dikin. , AAC, an LDAC (Android ji vê HD Audio re dibêje) bi lêzêdekirina nîşanek li mîhengên cîhaza Bluetooth-ê. Ya ku xuya dike ev e:

Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Patch ji bo Android 9
Patch ji bo Android 8.1

Dema ku qutiya kontrolê were çalak kirin, dengê Bluetooth bi bitratek dest pê dike ku were şandin 551 kbps, heke guhên leza pêwendiya 3 Mbit/s piştgirî dikin, an jî 452 kbps, heke guhên tenê 2 Mbit/s piştgirî dikin.

Ev patch di nav firmwareyên alternatîf ên jêrîn de ye:

  • LineageOS
  • Remix Resurrection
  • cDroid

551 û 452 kbit/s ji ku hatine?

Teknolojiya parvekirina hewayê Bluetooth ji bo veguheztina paketên mezin ên sabît bi bandor hatî çêkirin. Veguheztina daneyan di hêlînê de pêk tê, hejmara herî mezin a hêlînên ku di yek veguheztinê de têne şandin 5 e. Modên veguheztinê jî hene ku 1 an 3 hêlînê bikar tînin, lê ne 2 an 4. Di 5 hêlînê de hûn dikarin bi leza pêwendiyê heya 679 byte veguherînin. ji 2 Mbit / s û heta 1021 bytes bi leza 3 Mbit / s, û bi rêzê 3 - 367 û 552 bytes.

Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Ger em bixwazin kêmtir daneyan ji 679 an 1021 bytes veguhezînin, lê ji 367 an 552 bytes zêdetir, veguheztin dê dîsa jî 5 cîhan bigire û data dê di heman demê de bêne veguheztin, ku ev jî kargêriya veguheztinê kêm dike.

Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

SBC di moda Dual Channel de, di dengeya 44100 Hz de bi Bitpool 38 parametre, 16 blokên her çarçovê, 8 rêzikên frekansê, deng di çarçoveyên 164 byte de, bi bitrateya 452 kbps kod dike.
Pêdivî ye ku deng di protokolên veguheztina L2CAP û AVDTP de, ku 16 bayt ji bargiraniya dengî digirin, were vegirtin.

Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Bi vî rengî, yek veguheztina Bluetooth-ê bi 5 slotan dikare 4 çarçoveyên dengî bicîh bîne:

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

Em 11.7 ms daneya dengî têxin nav pakêta ku tê şandin, ku dê di 3.75 ms de were veguheztin, û di pakêtê de 6 baytên ku nehatine bikaranîn mane.
Ger hûn bitpoolê piçekî bilind bikin, dê êdî nekare 4 çarçeweyên dengî di yek pakêtê de were berhev kirin. Pêdivî ye ku hûn di yek carê de 3 çarçove bişînin, ku ev karbidestiya veguheztinê kêm dike, mîqdara bihîstweriya ku di her çarçovê de tê veguheztin kêm dike, û dê di şert û mercên xirab ên radyoyê de zûtir bibe sedema qutbûna deng.

Bi heman awayî, ji bo EDR 551 Mbit/s bitrateya 3 kbit/s hat hilbijartin: bi Bitpool 47, 16 blokên her çarçovê, 8 rêzikên frekansê, mezinahiya çarçoveyê 200 byte, bi bitrateya 551 kbit/s. Yek pakêt 5 çarçove an 14.6 ms muzîkê dihewîne.

Algorîtmaya hesabkirina hemî parametreyên SBC pir tevlihev e, heke hûn bi destan bijmêrin hûn dikarin bi hêsanî tevlihev bibin, ji ber vê yekê min hesabek înteraktîf çêkir da ku alîkariya kesên eleqedar bikim: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Çima ev hemî hewce ne?

Berevajî baweriya populer di derbarê qalîteya deng a kodek aptX de, li ser hin pelan ew dikare encamên ji SBC xirabtir bi bitrateya standard 328 kbps derxe.

SBC bi dînamîk bitên quantîzasyonê li ser bandên frekansê li ser bingehek kêm-bilind veqetîne. Ger hemî bitrate ji bo frekansên nizm û navîn were bikar anîn, dê frekansên bilind "birrîn" (dê li şûna wê bêdengî hebe).
aptX bandên frekansê her dem bi heman hejmarê bit quantîze dike, ji ber vê yekê bitrateyek wê ya domdar heye: 352 kbps ji bo 44.1 kHz, 384 kbps ji bo 48 kHz, û ew nikare "bit-guhezîne" wan frekansên ku herî zêde hewceyê wan in. . Berevajî SBC, aptX dê frekansan "bibire" neke, lê dê dengê quantîzasyonê li wan zêde bike, rêza dînamîkî ya deng kêm bike, û carinan qîrkirina taybetmendiyê destnîşan dike. SBC "detayan dixwe" - deverên herî bêdeng ji holê radike.
Bi navînî, li gorî SBC 328k, aptX di muzîka bi rêjeyek frekansa fireh de kêmtir tehlûkê dide, lê di muzîka bi rêjeyek frekansa teng û rêzek dînamîkî ya berfireh de, SBC 328k carinan bi ser dikeve.

Werin em rewşek taybetî bifikirin. Spectrograma tomarkirina piyanoyê:
Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Enerjiya sereke di frekansên ji 0 heta 4 kHz de ye, û heya 10 kHz berdewam dike.
Spektrograma pelê ku di aptX de hatî berhev kirin wiha xuya dike:
Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Û ev e ku SBC 328k xuya dike.
Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Dikare were dîtin ku SBC 328k bi awayekî periyodîk bi tevahî rêzika jorîn 16 kHz qut kir, û hemî bitrateya berdest li ser rêzikên li jêr vê nirxê derbas kir. Lêbelê, aptX di spektroya frekansê ya ku ji guhê mirovan re tê bihîstin de bêtir texlîd danî, wekî ku di spektrograma orîjînal a ji spektrograma aptX de tê dîtin (çi ronîtir, ew qas xirabtir):
Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Dema ku SBC 328k di navbêna 0 heta 10 kHz de sînyala kêmtir xera kir, û yên mayî qut kir:
Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Bitrateya 485k ya SBC bes bû ku tevahiya rêza frekansê biparêze, bêyî ku bendên neçalak bike.
Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

SBC 485k li ser vê rêgezê di rêza 0-15 kHz de bi girîngî li pêş aptX-ê ye, bi ferqek piçûktir lê dîsa jî xuyangê 15-22 kHz (çiqas tarî, ew qas xirabtir be):
Em staka Bluetooth-ê diguhezînin da ku dengê li ser guhên bêyî kodekên AAC, aptX û LDAC çêtir bikin.

Arşîva dengê orjînal, SBC û aptX.

Bi guheztina ser SBC-ya bit-a bilind, hûn ê dengek ku bi gelemperî li ser her guhek aptX-ê dixe bistînin. Li ser guhên ku pêwendiya 3 Mbps EDR piştgirî dikin, bitrateya 551 kbps dengek bi aptX HD-ê re berhev dike.

Hûn dikarin hê bêtir bikin?

Patchê Android-ê di heman demê de vebijarkek heye ku ji bo cîhazên EDR-ê 2 Mbps bêtir bitrate zêde bike. Hûn dikarin bitrate ji 452 kbit/s berbi 595 kbit/s zêde bikin, bi bihayê kêmkirina aramiya veguheztinê di şert û mercên dijwar ên radyoyê de.
Bes e ku meriv guhêrbara persist.bluetooth.sbc_hd_higher_bitrate bike 1:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Pîvana bitrateya zehf heya nuha tenê di LineageOS 15.1-ê de hatî pejirandin, lê ne di 16.0-ê de.

Compatibility Device

SBC Dual Channel hema hema ji hêla hemî guh, axaftvan û yekîneyên serê gerîdeyê ve tê piştgirî kirin. Ev ne ecêb e - standard di her cîhazên dekodkirinê de piştgiriya wê hewce dike. Hejmarek piçûk a cîhazên ku ev mod li ser wan pirsgirêkan çêdike hene, lê ev mînakên veqetandî ne.
Agahiyên bêtir li ser cîhazên lihevhatî dikarin li vir werin dîtin 4pda an xda-developers.

Berawirdkirina cudahiyên deng

Min karûbarek malperê çêkir ku deng li SBC (û her weha aptX û aptX HD) di wextê rast de, rast di gerokê de kod dike. Bi wê re, hûn dikarin dengê profîlên SBC yên cihêreng û kodekên din bidin ber hev, bêyî ku bi rastî deng bi Bluetooth-ê veguhezînin, li ser her guhên têl, axaftvan, û muzîka xweya bijare, û di heman demê de dema ku deng lîstin rasterast parametreyên kodkirinê biguhezînin.
btcodecs.valdikss.org.ru/sbc-encoder

Bi Pêşdebirên Android re têkilî daynin

Min ji gelek pêşdebirên stacka Bluetooth-ê re li Google nivîsand û ji wan pirsî ku di şaxa sereke ya Android - AOSP-ê de paçeyan bihesibînin, lê bersivek yek jî negirt. Pelên min di nav de Pergala patchê ya Gerrit ji bo Android jî ji aliyê kesekî ve bê şîrove ma.
Ez ê kêfxweş bibim ku ez bikaribim hin alîkariyê werbigirim da ku bi pêşdebirên Google re têkilî daynin û SBC HD-ê ji Android re bînim. Patch di gerrit de jixwe kevnar e (ev yek ji guhertoyên destpêkê ye), û ger pêşdebir bi guhertinên min re eleqedar bibin ez ê wê nûve bikim (ji min re ne hêsan e ku ez nûve bikim, amûrên min ên ku bi Android Q-ê re hevaheng in tune ne ).

encamê

Bikarhênerên têlefonên bi LineageOS, Resurrection Remix û firmware crDroid dikarin niha ji kalîteya deng a çêtir kêfê bistînin, tenê vebijarkê di mîhengên cîhaza Bluetooth de çalak bikin. Bikarhênerên Linux jî dikarin bi sazkirinê re rêjeya bitrateya SBC zêde bibin patch ji Pali Rohar, ku, di nav tiştên din de, piştgirî ji bo kodekên aptX, aptX HD û FastStream zêde dike.

Source: www.habr.com

Add a comment