AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

Бул макаланы окуудан мурун, мурунку макаланы окуп чыгуу сунушталат: Bluetooth аркылуу аудио: профилдер, кодектер жана түзмөктөр жөнүндө максималдуу маалымат

Кээ бир зымсыз гарнитура колдонуучулары бардык аудио түзмөктөр тарабынан колдоого алынган стандарттуу SBC Bluetooth кодегин колдонууда үн сапаты начар жана жогорку жыштыктардын жоктугун билдиришет. Үндү жакшыртуу боюнча жалпы сунуш - aptX жана LDAC кодектерин колдогон түзмөктөрдү жана гарнитураларды сатып алуу. Бул кодектер лицензиялык төлөмдөрдү талап кылат, ошондуктан аларды колдогон түзмөктөр кымбатыраак.

Көрсө, SBC сапатынын төмөндүгү Bluetooth стектеринин жана гарнитуранын жөндөөлөрүнүн жасалма чектөөлөрүнөн келип чыккан жана бул чектөөнү смартфонго же компьютерге программалык камсыздоону өзгөртүү аркылуу учурдагы бардык түзмөктөрдө айланып өтүүгө болот.

Codec SBC

SBC кодекинин көптөгөн ар кандай параметрлери бар, алар байланышты орнотуу баскычында сүйлөшүлөт. Алардын арасында:

  • Каналдардын саны жана түрү: биргелешкен стерео, стерео, кош канал, моно;
  • жыштык тилкелеринин саны: 4 же 8;
  • Пакеттеги блоктордун саны: 4, 8, 12, 16;
  • Кванттоодо биттерди бөлүштүрүүнүн алгоритми: Катуулугу, SNR;
  • Кванттоодо (битпул) колдонулган биттердин пулунун максималдуу жана минималдуу мааниси: адатта 2ден 53кө чейин.

Декоддоочу аппарат бул параметрлердин ар кандай комбинациясын колдоого тийиш. Кодер баарын ишке ашыра бербейт.
Учурдагы Bluetooth стектери адатта төмөнкү профилде макулдашат: Биргелешкен стерео, 8 тилке, 16 блок, Үн катуулугу, битпул 2..53. Бул профиль 44.1 кбит/бит ылдамдыкта 328 кГц аудиону коддойт.
Bitpool параметри бир профилдеги бит ылдамдыгына түздөн-түз таасир этет: ал канчалык жогору болсо, бит ылдамдыгы ошончолук жогору, демек сапаты да жогору болот.
Бирок, bitpool параметри белгилүү бир профилге байланган эмес; Бит ылдамдыгына башка параметрлер да таасир этет: каналдардын түрү, жыштык тилкелеринин саны, блоктордун саны. Битпулду өзгөртпөстөн, стандарттуу эмес профилдерди макулдашып, бит ылдамдыгын кыйыр түрдө жогорулата аласыз.

AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

SBC бит ылдамдыгын эсептөө үчүн формула

Мисалы, Кош Канал режими ар бир канал үчүн бүт битпулду колдонуп, каналдарды өзүнчө коддойт. Түзмөктү Joint Stereo ордуна Dual Channel колдонууга мажбурлоо менен, биз бирдей максималдуу битпул мааниси менен бит ылдамдыгын дээрлик эки эсеге көбөйтөбүз: 617 kbps.
Менин оюмча, сүйлөшүүлөр стадиясында профилге байланбаган битпулдун маанисин колдонуу A2DP стандартындагы кемчилик болуп саналат, ал SBC сапатын жасалма чектөөгө алып келди. Битпулдун ордуна битрейт боюнча сүйлөшүү маанисиз болмок.

Бул белгиленген Bitpool жана Bitrate маанилери жогорку сапаттагы аудио үчүн колдонуу үчүн сунушталган маанилери бар таблицадан келип чыгат. Бирок сунуш бул баалуулуктар менен чектелүүгө себеп эмес.

AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

2-жылдан 1.2-жылга чейин активдүү болгон A2007DP v2015 спецификациясы 512 кбит/с чейин бит ылдамдыгы менен туура иштөө үчүн бардык декоддоочу түзүлүштөрдү талап кылат:

SNK декодери максималдуу бит ылдамдыгынан ашпаган бардык мүмкүн болгон битпул маанилерин колдошу керек. Бул профиль жеткиликтүү максималдуу бит ылдамдыгын моно үчүн 320 кб/с жана эки каналдуу режимдер үчүн 512 кб/с чейин чектейт.

Спецификациянын жаңы версиясында бит ылдамдыгына чектөө жок. 2015-жылдан кийин чыгарылган заманбап кулакчындар EDRди колдой тургандыгы болжолдонууда.

Эмнегедир мен сынаган Linux (PulseAudio), Android, Blackberry жана macOS Bluetooth стектеринде битпул параметринин максималдуу маанисине жасалма чектөөлөр бар, бул максималдуу бит ылдамдыгына түздөн-түз таасир этет. Бирок бул эң чоң көйгөй эмес; дээрлик бардык гарнитуралар битпулдун максималдуу маанисин 53 менен чектейт.
Мен буга чейин байкагандай, көпчүлүк түзмөктөр 551 кбит/с бит ылдамдыгы менен өзгөртүлгөн Bluetooth стекинде үзгүлтүксүз же жаркылдабай иштейт. Бирок мындай бит ылдамдыгы кадимки шарттарда, кадимки Bluetooth стектеринде эч качан ырааттуу болбойт.

Bluetooth стекин өзгөртүү

A2DP стандартына туура келген ар кандай Bluetooth стеки Кош канал режимин колдойт, бирок аны интерфейстен иштетүү мүмкүн эмес.

Келгиле, интерфейске которгучту кошолу! Мен Android 8.1 жана Android 9 үчүн патчтарды жасадым, алар стекке толук Кош канал колдоосун кошуп, иштеп чыгуу куралдарындагы режимди которуштуруу менюсуна режимди кошуп, Кош каналды иштеткен SBCлерди алар aptX сыяктуу кошумча кодек сыяктуу мамиле кылышкан. , AAC же LDAC (Android муну HD Audio деп атайт) Bluetooth түзмөгүнүн жөндөөлөрүнө белги коюу менен. Бул көрүнүш мына мындай:

AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

Android 9 үчүн патч
Android 8.1 үчүн патч

Белгилөө кутучасы жандырылганда, Bluetooth аудио бит ылдамдыгы менен бериле баштайт 551 Кбит / с чейин, кулакчындар 3 Мбит/сек туташуу ылдамдыгын колдосо, же 452 Кбит / с чейин, гарнитура 2 Мбит/сек ылдамдыкты гана колдосо.

Бул патч төмөнкү альтернативалуу микропрограммаларга киргизилген:

  • LineageOS
  • Тирилүүгө болгон Remix
  • crDroid

551 жана 452 кбит/сек кайдан келген?

Bluetooth аба бөлүшүү технологиясы чоң белгиленген өлчөмдөгү пакеттерди натыйжалуу өткөрүү үчүн иштелип чыккан. Маалыматтарды өткөрүү слоттордо ишке ашат, бир которууда жөнөтүлгөн слоттордун эң көп саны 5. Ошондой эле 1 же 3 слотту колдонгон өткөрүү режимдери бар, бирок 2 же 4 эмес. 5 слотто сиз туташуу ылдамдыгы менен 679 байтка чейин өткөрө аласыз 2 Мбит/сек жана 1021 байтка чейин 3 Мбит/сек ылдамдыкта жана 3 - 367 жана 552 байтка чейин.

AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

Эгерде биз 679 же 1021 байттан азыраак, бирок 367 же 552 байттан ашык маалыматтарды өткөргүбүз келсе, анда которуу дагы эле 5 уячаны алат жана маалыматтар бир эле убакта өткөрүлүп берилет, бул өткөрүүнүн натыйжалуулугун төмөндөтөт.

AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

Кош канал режиминде SBC, Bitpool 44100 параметри менен 38 Гц аудио, кадрга 16 блок, 8 жыштык диапазону, аудиону 164 кбит/бит ылдамдыгы менен 452 байт алкактарга коддойт.
Аудио L2CAP жана AVDTP өткөрүү протоколдорунда капсулдалышы керек, алар аудио жүктөөдөн 16 байт алат.

AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

Ошентип, 5 уячасы бар бир Bluetooth берүүсү 4 аудио алкактарды батыра алат:

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

Жөнөтүлүп жаткан пакетке 11.7 мс аудио маалыматтарын батырабыз, ал 3.75 мс ичинде өткөрүлөт жана пакетте бизде 6 пайдаланылбаган байт калды.
Эгер сиз битпулду бир аз көтөрсөңүз, мындан ары 4 аудио кадрды бир пакетке топтоо мүмкүн болбой калат. Сиз бир убакта 3 кадрды жөнөтүшүңүз керек болот, бул өткөрүү эффективдүүлүгүн төмөндөтөт, бир кадрга берилүүчү аудионун көлөмүн азайтат жана радионун начар шарттарында аудионун кекечтигине тезирээк алып келет.

Ушундай эле жол менен, EDR 551 Мбит/сек үчүн 3 кбит/сек бит ылдамдыгы тандалган: Bitpool 47 менен, кадрга 16 блок, 8 жыштык диапазону, кадрдын көлөмү 200 байт, бит ылдамдыгы 551 кбит/сек. Бир пакетте 5 кадр же 14.6 мс музыка бар.

Бардык SBC параметрлерин эсептөө алгоритми абдан татаал, эгер сиз кол менен санасаңыз, оңой эле адашып кетесиз, ошондуктан мен кызыккандарга жардам берүү үчүн интерактивдүү калькулятор жасадым: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Мунун баары эмне үчүн керек?

aptX кодекинин үн сапаты жөнүндө кеңири таралган ишенимге карама-каршы, кээ бир файлдарда ал 328 кбит/с стандарттык бит ылдамдыгы менен SBCден да жаман натыйжаларды бере алат.

SBC динамикалык түрдө кванттоо биттерин жыштык тилкелерине төмөнкүдөн жогоруга чейин бөлүштүрөт. Эгерде бардык бит ылдамдыгы төмөнкү жана орто жыштыктар үчүн колдонулса, жогорку жыштыктар "кесип" калат (анын ордуна жымжырттык болот).
aptX ар дайым бирдей сандагы бит менен жыштык тилкелерин кванттайт, ошондуктан анын туруктуу бит ылдамдыгы бар: 352 кГц үчүн 44.1 кбит/с, 384 кГц үчүн 48 кбит/с жана ал аларды эң керектүү болгон жыштыктарга “бит-жылдыра” албайт. . SBCден айырмаланып, aptX жыштыктарды “кесип” койбойт, бирок аларга квантташтыруу ызы-чуусун кошуп, аудионун динамикалык диапазонун азайтат жана кээде мүнөздүү жаркылоону киргизет. SBC "деталдарды жейт" - эң тынч жерлерди жок кылат.
Орточо алганда, SBC 328k менен салыштырганда, aptX кең жыштык диапазону менен музыкада аз бурмалоону киргизет, бирок тар жыштык диапазону жана кең динамикалык диапазону бар музыкада SBC 328k кээде утат.

Келгиле, өзгөчө бир ишти карап көрөлү. Пианинодо ойноо жазуусунун спектрограммасы:
AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

Негизги энергия 0дөн 4 кГцге чейинки жыштыктарда жатат жана 10 кГцге чейин уланат.
aptXде кысылган файлдын спектрограммасы төмөнкүдөй көрүнөт:
AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

Бул SBC 328k окшойт.
AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

Бул SBC 328k мезгил-мезгили менен толугу менен 16 кГц жогору диапазонду өчүрүп, жана бул мааниден төмөн диапазондор боюнча бардык жеткиликтүү бит жумшаган көрүүгө болот. Бирок, aptX адамдын кулагы угулган жыштык спектрине көбүрөөк бурмалоо киргизди, муну aptX спектрограммасынан алып салынган баштапкы спектрограммадан көрүүгө болот (канчалык жарык болсо, ошончолук бурмалоо):
AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

SBC 328k сигналды 0ден 10 кГцге чейинки диапазондо азыраак бузуп, калганын өчүрүп салган:
AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

SBCтин 485к бит ылдамдыгы тилкелерди өчүрбөстөн, бүт жыштык диапазонун сактоо үчүн жетиштүү болгон.
AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

SBC 485k 0-15 кГц диапазондо бул трек боюнча aptXтен бир топ алдыда, кичине, бирок дагы эле байкаларлык айырмасы 15-22 кГц (канчалык караңгыраак болсо, бурмалоо азыраак):
AAC, aptX жана LDAC кодектери жок гарнитуралардын үнүн жакшыртуу үчүн Bluetooth стектерин өзгөртүү

Оригиналдуу аудионун архиви, SBC жана aptX.

Жогорку бит ылдамдыктагы SBCге өтүү менен, сиз каалаган гарнитурада aptXти көп аткарган аудиону аласыз. 3 Мбит/сек EDR туташуусун колдогон гарнитураларда 551 кбит/с бит ылдамдыгы aptX HD менен салыштырылган үн чыгарат.

Мындан да көптү кыла аласызбы?

Android патч дагы 2 Mbps 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 дээрлик бардык гарнитуралар, динамиктер жана унаа баш бирдиктери тарабынан колдоого алынат. Бул таң калыштуу эмес - стандарттын бардык декоддоочу түзмөктөрдө колдоосун талап кылат. Бул режим көйгөйлөрдү жараткан аз сандагы түзмөктөр бар, бирок бул обочолонгон учурлар.
Шайкеш түзмөктөр жөнүндө көбүрөөк маалымат бул жерден тапса болот 4pda же xda-чыгаруучулар.

Үн айырмачылыктарын салыштыруу

Мен SBCге аудиону (ошондой эле aptX жана aptX HD) коддоочу веб-кызматты реалдуу убакытта, түз браузерде жасадым. Анын жардамы менен сиз ар кандай SBC профилдеринин жана башка кодектердин үнүн чындыгында Bluetooth аркылуу аудиону өткөрбөстөн, каалаган зымдуу кулакчындарда, динамиктерде жана сүйүктүү музыкаңызда салыштыра аласыз, ошондой эле аудио ойноп жатканда түздөн-түз коддоо параметрлерин өзгөртө аласыз.
btcodecs.valdikss.org.ru/sbc-encoder

Android Developers менен байланышыңыз

Мен Google'дун көптөгөн Bluetooth стекти иштеп чыгуучуларына Android'дин негизги филиалына - AOSP патчтарын киргизүүнү карап көрүүнү сурандым, бирок бир дагы жооп алган жок. Менин патчтарым кирди Android үчүн Gerrit патч системасы ошондой эле катышкан эч кимден комментарийсиз калды.
Эгер мен Google'дун иштеп чыгуучулары менен байланышып, SBC HD'ди Android'ге алып келүүгө жардам алсам, кубанычтамын. Герриттеги патч мурунтан эле эскирип калган (бул алгачкы оңдоолордун бири) жана эгер иштеп чыгуучулар менин өзгөртүүлөрүмө кызыкдар болсо, мен аны жаңыртам (аны жаңыртуу мен үчүн оңой эмес, менде Android Q менен шайкеш түзмөктөр жок. ).

жыйынтыктоо

LineageOS, Resurrection Remix жана crDroid микропрограммасы бар смартфондордун колдонуучулары азыр жакшыртылган үн сапатына ээ боло алышат, жөн гана Bluetooth түзмөгүнүн жөндөөлөрүндөгү опцияны жандырыңыз. Linux колдонуучулары да орнотуу аркылуу SBC бит ылдамдыгын жогорулата алышат Пали Рохардан патч, башка нерселер менен катар aptX, aptX HD жана FastStream кодектерин колдоону кошот.

Source: www.habr.com

Комментарий кошуу