Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

Նախքան այս հոդվածը կարդալը, խորհուրդ է տրվում կարդալ նախորդ հոդվածը. Աուդիո Bluetooth-ի միջոցով. առավելագույն մանրամասներ պրոֆիլների, կոդեկների և սարքերի մասին

Անլար ականջակալների որոշ օգտատերեր հաղորդում են ձայնի վատ որակի և բարձր հաճախականությունների բացակայության դեպքում, երբ օգտագործում են ստանդարտ SBC Bluetooth կոդեկ, որն ապահովվում է բոլոր աուդիո սարքերով: Ձայնի բարելավման ընդհանուր առաջարկությունն է՝ գնել սարքեր և ականջակալներ, որոնք աջակցում են aptX և LDAC կոդեկներին: Այս կոդեկները պահանջում են լիցենզավորման վճարներ, ուստի դրանք աջակցող սարքերն ավելի թանկ են:

Պարզվում է, որ SBC-ի ցածր որակը պայմանավորված է Bluetooth-ի կույտերի և ականջակալների կարգավորումների արհեստական ​​սահմանափակումներով, և այդ սահմանափակումը հնարավոր է շրջանցել առկա ցանկացած սարքի վրա՝ սմարթֆոնի կամ համակարգչի ծրագրային փոփոխության միջոցով:

Կոդեկ SBC

SBC կոդեկն ունի բազմաթիվ տարբեր պարամետրեր, որոնք համաձայնեցվում են կապի տեղադրման փուլում: Նրանց մեջ:

  • Ալիքների քանակը և տեսակը՝ համատեղ ստերեո, ստերեո, երկալիք, մոնո;
  • Հաճախականությունների տիրույթների քանակը՝ 4 կամ 8;
  • Փաթեթում բլոկների քանակը՝ 4, 8, 12, 16;
  • Քվանտացման ընթացքում բիթերի բաշխման ալգորիթմ. Loudness, SNR;
  • Քվանտացման ժամանակ օգտագործվող բիթերի ֆոնդի առավելագույն և նվազագույն արժեքը (bitpool) սովորաբար 2-ից 53:

Ապակոդավորման սարքը պետք է ապահովի այս պարամետրերի ցանկացած համակցություն: Կոդավորիչը կարող է ամեն ինչ չկատարել:
Գոյություն ունեցող Bluetooth կույտերը սովորաբար համաձայնվում են հետևյալ պրոֆիլի վրա՝ համատեղ ստերեո, 8 ժապավեն, 16 բլոկ, բարձրաձայնություն, բիթփուլ 2..53: Այս պրոֆիլը կոդավորում է 44.1 կՀց աուդիո 328 կբիթ/վրկ բիթ արագությամբ:
Bitpool պարամետրը ուղղակիորեն ազդում է մեկ պրոֆիլի բիթերի արագության վրա. որքան բարձր է այն, այնքան բարձր է բիթերի արագությունը և, հետևաբար, որակը:
Այնուամենայնիվ, bitpool պարամետրը կապված չէ որոշակի պրոֆիլի հետ. Բիթերի արագության վրա մեծապես ազդում են նաև այլ պարամետրեր՝ կապուղիների տեսակը, հաճախականության տիրույթների քանակը, բլոկների քանակը: Դուք կարող եք բարձրացնել բիթերի արագությունը անուղղակիորեն, համաձայնեցնելով ոչ ստանդարտ պրոֆիլներ, առանց բիթփուլը փոխելու:

Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

SBC բիթային արագության հաշվարկման բանաձև

Օրինակ, Dual Channel ռեժիմը կոդավորում է ալիքները առանձին՝ օգտագործելով ամբողջ բիթփուլը յուրաքանչյուր ալիքի համար: Ստիպելով սարքին Joint Stereo-ի փոխարեն օգտագործել Dual Channel, մենք ստանում ենք գրեթե կրկնակի բիթ արագություն նույն առավելագույն բիթփուլային արժեքով՝ 617 kbps:
Իմ կարծիքով, բանակցությունների փուլում պրոֆիլի հետ չկապված bitpool արժեքի օգտագործումը A2DP ստանդարտի թերություն է, որը հանգեցրեց SBC որակի արհեստական ​​սահմանափակմանը: Ավելի խելամիտ կլիներ բիտրեյթի շուրջ բանակցելը, քան բիթփուլը:

Այս ֆիքսված Bitpool և Bitrate արժեքները բխում են առաջարկվող արժեքներով աղյուսակից՝ բարձրորակ ձայնի համար օգտագործելու համար: Բայց հանձնարարականը պատճառ չէ սահմանափակվելու այս արժեքներով:

Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

A2DP v1.2 հստակեցումը, որն ակտիվ էր 2007-ից 2015 թվականներին, պահանջում է, որ բոլոր ապակոդավորող սարքերը ճիշտ աշխատեն մինչև 512 կբ/վ արագությամբ:

SNK-ի ապակոդավորիչը պետք է ապահովի բոլոր հնարավոր բիթփուլային արժեքները, որոնք չեն հանգեցնում առավելագույն բիթային արագության գերազանցմանը: Այս պրոֆիլը սահմանափակում է հասանելի առավելագույն բիթային արագությունը մինչև 320 կբ/վ մոնո և 512 կբ/վ երկալիք ռեժիմների համար:

Հստակեցման նոր տարբերակում բիթերի արագության սահմանափակում չկա: Ենթադրվում է, որ 2015 թվականից հետո թողարկված ժամանակակից ականջակալները, որոնք աջակցում են EDR-ին, կարող են սպասարկել մինչև ≈730 կբիթ/վրկ բիթային արագություն:

Ինչ-ինչ պատճառներով, իմ փորձարկած Bluetooth փաթեթները Linux (PulseAudio), Android, Blackberry և macOS Բիթփուլի առավելագույն արժեքի վրա կան արհեստական ​​սահմանափակումներ, որոնք անմիջականորեն ազդում են առավելագույն բիթռեյթի վրա։ Սակայն սա ամենամեծ խնդիրը չէ. գրեթե բոլոր ականջակալները նույնպես սահմանափակում են բիթփուլի առավելագույն արժեքը մինչև 53։
Ինչպես արդեն տեսել եմ, սարքերի մեծամասնությունը կատարելապես աշխատում է 551 կբ/վ բիթ արագությամբ փոփոխված Bluetooth ստեկի վրա՝ առանց ընդհատումների կամ ճռճռոցի: Բայց նման բիթային արագությունը երբեք հետևողական չի լինի նորմալ պայմաններում, սովորական Bluetooth բլիթների վրա:

Փոփոխում Bluetooth փաթեթը

Ցանկացած Bluetooth փաթեթ, որը համատեղելի է A2DP ստանդարտի հետ, աջակցում է Dual Channel ռեժիմին, սակայն այն հնարավոր չէ ակտիվացնել միջերեսից:

Եկեք ինտերֆեյսին անջատիչ ավելացնենք։ Ես թարմացումներ եմ արել դրա համար։ Android 8.1 եւ Android 9-ը, որը լիարժեք երկակի ալիքի աջակցություն է ավելացնում փաթեթին, ռեժիմը ավելացնում է մշակողի գործիքների ռեժիմի փոխարկման ցանկին և երկակի ալիքով SBC-ն դիտարկում է որպես լրացուցիչ կոդեկ, ինչպիսիք են aptX-ը, AAC-ը կամ LDAC-ը (Android (կոչվում է HD Audio)՝ ձեր Bluetooth սարքի կարգավորումներում նշելու վանդակ ավելացնելով: Ահա թե ինչ տեսք ունի այն.

Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

Թարմացում Android 9
Թարմացում Android 8.1

Երբ վանդակը միացված է, Bluetooth ձայնը սկսում է փոխանցվել բիթ արագությամբ 551 կբիթ/վրկ, եթե ականջակալներն ապահովում են 3 Մբիթ/վրկ կապի արագություն, կամ 452 կբիթ/վրկ, եթե ականջակալներն ապահովում են միայն 2 Մբիթ/վրկ արագություն։

Այս կարկատելը ներառված է հետևյալ այլընտրանքային որոնվածում.

  • LineageOS- ը
  • Հարության ռեմիքս
  • crDroid

Որտեղի՞ց են առաջացել 551 և 452 կբիթ/վրկ:

Bluetooth օդի փոխանակման տեխնոլոգիան նախատեսված է մեծ ֆիքսված չափի փաթեթներ արդյունավետ փոխանցելու համար: Տվյալների փոխանցումը տեղի է ունենում սլոտներում, մեկ փոխանցման ընթացքում ուղարկվող սլոթերի ամենամեծ թիվը 5-ն է: Կան նաև փոխանցման ռեժիմներ, որոնք օգտագործում են 1 կամ 3 սլոտ, բայց ոչ 2 կամ 4: 5 սլոտներում կարող եք փոխանցել մինչև 679 բայթ միացման արագությամբ: 2 Մբիթ/վրկ և մինչև 1021 բայթ 3 Մբիթ/վ արագությամբ և համապատասխանաբար 3 - 367 և 552 բայթ:

Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

Եթե ​​մենք ուզում ենք փոխանցել ավելի քիչ, քան 679 կամ 1021 բայթ, բայց ավելի քան 367 կամ 552 բայթ, փոխանցումը դեռ կտևի 5 սլոտ, և տվյալները կփոխանցվեն միաժամանակ, ինչը նվազեցնում է փոխանցման արդյունավետությունը։

Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

SBC-ը Dual Channel ռեժիմում, 44100 Հց հաճախականությամբ աուդիո Bitpool 38 պարամետրերով, 16 բլոկ մեկ կադրում, 8 հաճախականության միջակայք, ձայնը կոդավորում է 164 բայթ շրջանակների մեջ, 452 կբիթ/վ բիթ արագությամբ:
Ձայնը պետք է ներառված լինի L2CAP և AVDTP փոխանցման արձանագրություններում, որոնք 16 բայթ են վերցնում աուդիո ծանրաբեռնվածությունից:

Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

Այսպիսով, մեկ Bluetooth փոխանցումը 5 սլոտներով կարող է տեղավորել 4 աուդիո շրջանակ.

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

Ուղարկվող փաթեթում մենք տեղավորում ենք 11.7 մվ աուդիո տվյալներ, որոնք կփոխանցվեն 3.75 մվ-ում, և փաթեթում մնացել է 6 չօգտագործված բայթ:
Եթե ​​մի փոքր բարձրացնեք բիթփուլը, այլևս հնարավոր չի լինի մեկ փաթեթի մեջ 4 աուդիո շրջանակներ հավաքել: Դուք ստիպված կլինեք ուղարկել 3 կադր միաժամանակ, ինչը նվազեցնում է փոխանցման արդյունավետությունը, նվազեցնում է մեկ ուղարկվող ձայնի քանակը և ավելի արագ կհանգեցնի ձայնի կակազման վատ ռադիոյի պայմաններում:

Նույն կերպ ընտրվել է 551 կբիտ/վրկ բիթային արագություն EDR 3 Մբիթ/վրկ՝ Bitpool 47-ով, 16 բլոկ մեկ կադրում, 8 հաճախականության միջակայք, կադրի չափը 200 բայթ է, 551 կբիտ/վ բիթ արագությամբ։ Մեկ փաթեթը պարունակում է 5 կադր կամ 14.6 մվ երաժշտություն:

SBC-ի բոլոր պարամետրերի հաշվարկման ալգորիթմը բավականին բարդ է, դուք հեշտությամբ կարող եք շփոթվել, եթե հաշվում եք ձեռքով, այնպես որ ես պատրաստեցի ինտերակտիվ հաշվիչ, որպեսզի օգնեմ հետաքրքրվողներին. btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Ինչու է այս ամենը անհրաժեշտ:

Հակառակ aptX կոդեկի ձայնի որակի մասին տարածված կարծիքի, որոշ ֆայլերի վրա այն կարող է ավելի վատ արդյունքներ տալ, քան SBC-ն՝ 328 կբ/վ ստանդարտ բիթային արագությամբ:

SBC-ն դինամիկ կերպով բաշխում է քվանտացման բիթերը հաճախականության տիրույթներին ցածրից բարձր հիմունքներով: Եթե ​​ամբողջ բիթային արագությունը օգտագործվել է ցածր և միջին հաճախականությունների համար, ապա բարձր հաճախականությունները «կկտրվեն» (փոխարենը կլինի լռություն):
aptX-ը քվանտացնում է նույն թվով բիթերով հաճախականությունների տիրույթները, այդ իսկ պատճառով այն ունի հաստատուն բիթային արագություն՝ 352 կբ/վ 44.1 կՀց-ի համար, 384 կբ/վրկ՝ 48 կՀց-ի համար, և այն չի կարող «բիթ տեղափոխել» այն հաճախականություններին, որոնք դրանց առավել կարիքն ունեն։ . Ի տարբերություն SBC-ի, aptX-ը չի «կտրի» հաճախականությունները, այլ կավելացնի դրանց քվանտացման աղմուկը՝ նվազեցնելով ձայնի դինամիկ տիրույթը և երբեմն ներկայացնելով բնորոշ ճռռոց: SBC-ն «ուտում է դետալները»՝ հեռացնում է ամենահանգիստ տարածքները:
Միջին հաշվով, համեմատած SBC 328k-ի հետ, aptX-ը ավելի քիչ աղավաղում է ներկայացնում լայն հաճախականության տիրույթ ունեցող երաժշտության մեջ, սակայն նեղ հաճախականության տիրույթով և լայն դինամիկ տիրույթ ունեցող երաժշտության մեջ SBC 328k-ը երբեմն հաղթում է:

Դիտարկենք հատուկ դեպք. Դաշնամուր նվագող ձայնագրության սպեկտրոգրամ.
Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

Հիմնական էներգիան գտնվում է 0-ից 4 կՀց հաճախականությունների մեջ և շարունակվում է մինչև 10 կՀց:
AptX-ում սեղմված ֆայլի սպեկտրոգրամն այսպիսի տեսք ունի.
Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

Եվ ահա թե ինչ տեսք ունի SBC 328k:
Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

Կարելի է տեսնել, որ SBC 328k-ը պարբերաբար ամբողջությամբ անջատել է 16 կՀց-ից բարձր տիրույթը և ծախսել ողջ հասանելի բիթային արագությունը այս արժեքից ցածր տիրույթներում: Այնուամենայնիվ, aptX-ը ավելի շատ աղավաղում է մտցրել մարդու ականջին լսելի հաճախականության սպեկտրի մեջ, ինչպես երևում է aptX սպեկտրոգրամից հանված բնօրինակի սպեկտրոգրամում (որքան պայծառ է, այնքան ավելի շատ աղավաղում).
Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

Մինչ SBC 328k-ը ավելի քիչ փչացրեց ազդանշանը 0-ից 10 կՀց միջակայքում, և անջատեց մնացածը.
Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

SBC-ի 485k բիթային արագությունը բավարար էր ամբողջ հաճախականության տիրույթը պահպանելու համար՝ առանց տիրույթների անջատման:
Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

SBC 485k-ն այս ուղու վրա զգալիորեն առաջ է aptX-ից 0-15 կՀց տիրույթում, ավելի փոքր, բայց դեռ նկատելի տարբերությամբ՝ 15-22 կՀց (որքան մուգ, այնքան քիչ աղավաղումը).
Մենք փոփոխում ենք Bluetooth փաթեթը՝ առանց AAC, aptX և LDAC կոդեկների ականջակալների ձայնը բարելավելու համար

Բնօրինակ աուդիո, SBC և aptX արխիվ.

Անցնելով բարձր բիթային արագությամբ SBC-ին, դուք կստանաք աուդիո, որը հաճախ գերազանցում է aptX-ը ցանկացած ականջակալի վրա: Ականջակալների վրա, որոնք աջակցում են 3 Մբիթ/վրկ EDR միացում, 551 կբիթ/վրկ բիթ արագությունը արտադրում է ձայն, որը համեմատելի է aptX HD-ի հետ:

Կարո՞ղ եք ավելին անել:

Կարկատում Android Կա նաև տարբերակ՝ 2 Մբ/վ EDR սարքերի համար բիթռեյթը հետագայում մեծացնելու համար: Բիթռեյթը կարող է մեծացվել 452 կբ/վ-ից մինչև 595 կբ/վ՝ դժվար ռադիոպայմաններում փոխանցման կայունության նվազման հաշվին:
Բավական է persist.bluetooth.sbc_hd_higher_bitrate փոփոխականը սահմանել 1:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Ծայրահեղ բիթային արագության կարկատումը մինչ այժմ ընդունվել է միայն LineageOS 15.1-ում, բայց ոչ 16.0-ում:

Սարքի համատեղելիություն

SBC Dual Channel-ը աջակցվում է գրեթե բոլոր ականջակալների, բարձրախոսների և մեքենայի գլխամասերի կողմից: Սա զարմանալի չէ. ստանդարտը պահանջում է իր աջակցությունը ցանկացած վերծանման սարքերում: Կան փոքր թվով սարքեր, որոնց վրա այս ռեժիմը խնդիրներ է առաջացնում, բայց դրանք առանձին դեպքեր են:
Համատեղելի սարքերի մասին լրացուցիչ մանրամասներ կարելի է գտնել այստեղ 4 pda կամ XDA-մշակողները.

Ձայնային տարբերությունների համեմատություն

Ես ստեղծել եմ վեբ ծառայություն, որը կոդավորում է ձայնը SBC-ին (ինչպես նաև aptX և aptX HD) իրական ժամանակում, հենց բրաուզերում: Դրա միջոցով դուք կարող եք համեմատել SBC-ի տարբեր պրոֆիլների և այլ կոդեկների ձայնը՝ իրականում առանց Bluetooth-ի միջոցով աուդիո փոխանցելու, ցանկացած լարային ականջակալների, բարձրախոսների և ձեր սիրած երաժշտության վրա, ինչպես նաև ուղղակիորեն փոխել կոդավորման պարամետրերը աուդիո նվագարկելիս:
btcodecs.valdikss.org.ru/sbc-encoder

Կապ հաստատելով մշակողների հետ Android

Ես գրեցի Google-ի բազմաթիվ Bluetooth stack մշակողներին՝ խնդրելով նրանց դիտարկել հիմնական ճյուղում թարմացումներ ներառելու հնարավորությունը։ Android — AOSP, բայց ես ոչ մի պատասխան չեմ ստացել։ Իմ թարմացումները արդեն հասանելի են։ Gerrit patch կառավարման համակարգ Android նույնպես մնաց առանց որևէ մեկի ներգրավված մեկնաբանության:
Ես ուրախ կլինեի, եթե դուք կարողանաք օգնել ինձ կապ հաստատել Google-ի մշակողների հետ և SBC HD-ն ներդնել AndroidGerrit-ի թարմացումը արդեն հնացած է (դա վաղ տարբերակներից մեկն է), և ես կթարմացնեմ այն, եթե մշակողները հետաքրքրված լինեն իմ փոփոխություններով (ինձ համար հեշտ չէ թարմացնել այն, ես չունեմ համատեղելի տարբերակներ Android Q սարքեր):

Ամփոփում

LineageOS, Resurrection Remix և crDroid ծրագրակազմով սմարթֆոնների օգտատերերը կարող են վայելել բարելավված ձայնի որակը՝ պարզապես ակտիվացնելով այդ տարբերակը Bluetooth սարքի կարգավորումներում։ Linux կարող եք նաև մեծացնել SBC բիթռեյթը տեղադրելով կարկատել Pali Rohar-ից, որը, ի թիվս այլ բաների, ավելացնում է աջակցություն aptX, aptX HD և FastStream կոդեկներին:

Source: www.habr.com

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster