Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

Sateuacan maca tulisan ieu, disarankeun maca tulisan sateuacana: Audio liwat Bluetooth: detil maksimal ngeunaan propil, codec sareng alat

Sababaraha pangguna headphone nirkabel ngalaporkeun kualitas sora anu goréng sareng kurangna frékuénsi luhur nalika nganggo codec Bluetooth SBC standar, anu dirojong ku sadaya alat audio. Rekomendasi umum pikeun ningkatkeun sora nyaéta mésér alat sareng headphone anu ngadukung codec aptX sareng LDAC. Codec ieu merlukeun waragad lisénsi, jadi alat nu ngarojong eta leuwih mahal.

Tétéla yén kualitas low tina SBC téh alatan watesan jieunan tumpukan Bluetooth sarta setelan headphone, sarta watesan ieu bisa bypassed on sagala alat aya ngaliwatan parobahan software ka smartphone atawa komputer.

Codec SBC

SBC codec boga loba parameter béda nu disawalakeun salila fase setelan sambungan. Diantara aranjeunna:

  • Jumlah sareng jinis saluran: Stereo Joint, Stereo, Dual Channel, Mono;
  • Jumlah pita frékuénsi: 4 atawa 8;
  • Jumlah blok dina pakét: 4, 8, 12, 16;
  • Algoritma pikeun ngadistribusikaeun bit salila kuantisasi: Loudness, SNR;
  • Nilai maksimum sareng minimum tina kumpulan bit anu dianggo nalika kuantisasi (bitpool): biasana ti 2 dugi ka 53.

Alat decoding kedah ngarojong sagala kombinasi parameter ieu. Encoder moal tiasa nerapkeun sadayana.
Tumpukan Bluetooth anu aya biasana satuju kana profil ieu: Stereo gabungan, 8 pita, 16 blok, Loudness, bitpool 2..53. Propil ieu ngodekeun audio 44.1 kHz dina laju bit 328 kbps.
Parameter bitpool langsung mangaruhan bitrate dina hiji profil: nu leuwih luhur éta, nu leuwih luhur bitrate, sarta ku kituna kualitas.
Sanajan kitu, parameter bitpool teu dihijikeun ka profil husus; Laju bit ogé loba dipangaruhan ku parameter séjén: tipe saluran, jumlah pita frékuénsi, jumlah blok. Anjeun tiasa ningkatkeun bitrate henteu langsung, ku satuju kana propil non-standar, tanpa ngarobah bitpool nu.

Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

Rumus pikeun ngitung bitrate SBC

Contona, mode Dual Channel encodes saluran misah, ngagunakeun sakabéh bitpool pikeun tiap channel. Ku maksa alat ngagunakeun Dual Channel tinimbang Joint stereo, urang meunang ampir dua kali bitrate kalawan nilai bitpool maksimum sarua: 617 kbps.
Dina pamadegan mah, pamakéan a nilai bitpool teu dihijikeun ka profil dina tahap rundingan mangrupakeun cacad dina standar A2DP, nu ngarah ka watesan jieunan kualitas SBC. Éta bakal langkung raos pikeun negotiate bitrate tinimbang bitpool.

Nilai Bitpool sareng Bitrate tetep ieu asalna tina méja kalayan nilai anu disarankeun pikeun dianggo pikeun audio kualitas luhur. Tapi rekomendasi sanes alesan pikeun ngawatesan diri kana nilai ieu.

Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

Spésifikasi A2DP v1.2, anu aktip ti taun 2007 nepi ka 2015, meryogikeun sadaya alat decoding tiasa dianggo leres kalayan bitrate dugi ka 512 kbps:

The decoder tina SNK wajib ngarojong sagala nilai bitpool mungkin nu teu ngakibatkeun kaleuwihan laju bit maksimum. Propil ieu ngabatesan laju bit maksimum anu sayogi pikeun 320kb/s pikeun mono, sareng 512kb/s pikeun modeu dua saluran.

Dina versi anyar tina spésifikasi euweuh wates dina bitrate nu. Diperkirakeun yén headphone modern dileupaskeun saatos 2015 anu ngadukung EDR tiasa ngadukung laju bit dugi ka ≈730 kbps.

Kanggo sababaraha alesan, tumpukan Linux (PulseAudio), Android, Blackberry sareng macOS Bluetooth anu kuring diuji ngagaduhan wates buatan dina nilai maksimal parameter bitpool, anu langsung mangaruhan bitrate maksimal. Tapi ieu sanes masalah pangbadagna; ampir kabéh headphone ogé ngawatesan nilai bitpool maksimum ka 53.
Salaku geus I geus katempo, lolobana alat jalan sampurna dina tumpukan Bluetooth dirobah kalawan bitrate 551 kbps, tanpa interruptions atanapi crackles. Tapi laju bit sapertos kitu moal konsisten dina kaayaan normal, dina tumpukan Bluetooth biasa.

Ngaropéa tumpukan Bluetooth

Sakur tumpukan Bluetooth anu cocog sareng standar A2DP gaduh dukungan pikeun modeu Dual Channel, tapi teu mungkin pikeun ngaktipkeunana tina antarmuka.

Hayu urang tambahkeun toggle kana panganteur! Kuring parantos ngadamel patches pikeun Android 8.1 sareng Android 9 anu nambihan dukungan Dual Channel pinuh kana tumpukan éta, tambahkeun mode ka ménu toggle mode dina alat dev, sareng ngubaran SBC anu diaktipkeun Dual Channel saolah-olah éta codec tambahan sapertos aptX. , AAC, atawa LDAC ( Android nyauran ieu HD Audio) ku cara nambahkeun tanda centang ka setelan alat Bluetooth. Ieu anu katingalina:

Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

Patch pikeun Android 9
Patch pikeun Android 8.1

Nalika kotak centang diaktipkeun, audio Bluetooth mimiti dikirimkeun dina laju bit 551 kbps, lamun headphone ngarojong speed sambungan 3 Mbit / s, atawa 452 kbps, lamun headphone ngan ngarojong 2 Mbit / s.

Patch ieu kalebet dina firmware alternatif ieu:

  • LineageOS
  • Kebangkitan Remix
  • crDroid

Ti mana 551 sareng 452 kbit/s?

Téknologi ngabagi hawa Bluetooth dirancang pikeun éfisién ngirimkeun pakét ukuran tetep ageung. Mindahkeun data lumangsung dina liang , jumlah pangbadagna liang dikirim dina hiji mindahkeun 5. Aya ogé modus mindahkeun anu ngagunakeun 1 atawa 3 liang , tapi teu 2 atawa 4. Dina 5 liang anjeun bisa nransper nepi ka 679 bait dina laju sambungan. ti 2 Mbit / s sarta nepi ka 1021 bait dina laju 3 Mbit / s, sarta dina 3 - 367 jeung 552 bait, masing-masing.

Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

Upami urang hoyong nransfer data kirang ti 679 atanapi 1021 bait, tapi langkung ti 367 atanapi 552 bait, transfer masih bakal nyandak 5 liang sareng data bakal ditransfer dina waktos anu sami, anu ngirangan efisiensi transfer.

Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

SBC dina modeu Dual Channel, dina 44100 Hz audio jeung Bitpool 38 parameter, 16 blok per pigura, 8 rentang frékuénsi, encodes audio kana 164 byte pigura, kalawan bitrate 452 kbps.
Audio kedah dibungkus dina protokol transfer L2CAP sareng AVDTP, anu nyandak 16 bait tina payload audio.

Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

Ku kituna, hiji transmisi Bluetooth kalawan 5 slot bisa nampung 4 pigura audio:

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

Urang nyocogkeun 11.7 mdet data audio kana pakét nu dikirim, nu bakal dikirimkeun dina 3.75 mdet, sarta kami boga 6 bait henteu kapake ditinggalkeun dina pakét éta.
Upami anjeun ngangkat bitpool sakedik, éta moal tiasa deui ngabungkus 4 pigura audio kana hiji pakét. Anjeun kudu ngirim 3 pigura dina hiji waktu, nu ngurangan efisiensi transmisi, ngurangan jumlah audio dikirimkeun per pigura, sarta bakal leuwih gancang ngabalukarkeun audio ngagagap dina kondisi radio goréng.

Dina cara nu sami, bitrate 551 kbit/s dipilih pikeun EDR 3 Mbit/s: kalawan Bitpool 47, 16 blok per pigura, 8 rentang frékuénsi, ukuran pigura téh 200 bait, kalawan bitrate 551 kbit / s. Hiji pakét ngandung 5 pigura atanapi 14.6 mdet musik.

Algoritma pikeun ngitung sadaya parameter SBC cukup rumit, anjeun tiasa gampang bingung upami anjeun ngitung sacara manual, janten kuring ngadamel kalkulator interaktif pikeun ngabantosan anu kabetot: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Naha sadayana ieu diperyogikeun?

Sabalikna kapercayaan umum ngeunaan kualitas sora codec aptX, dina sababaraha file éta tiasa ngahasilkeun hasil anu langkung saé tibatan SBC kalayan bitrate standar 328 kbps.

SBC sacara dinamis ngalokasikeun bit kuantisasi ka pita frékuénsi dina dasar low-to-high. Lamun sakabeh bitrate dipaké pikeun low jeung pertengahan frékuénsi, frékuénsi luhur bakal "dipotong" (bakal aya tiiseun gantina).
aptX ngitung pita frékuénsi kalayan jumlah bit anu sami unggal waktos, naha éta gaduh laju bit konstan: 352 kbps pikeun 44.1 kHz, 384 kbps pikeun 48 kHz, sareng éta henteu tiasa "bit-shift" kana frékuénsi anu paling peryogi. . Teu kawas SBC, aptX moal "motong" frékuénsi, tapi bakal nambahan noise quantization ka aranjeunna, ngurangan rentang dinamis tina audio, sarta kadangkala ngenalkeun crackling ciri. SBC "dahar detil" - miceun daérah anu paling sepi.
Rata-rata, dibandingkeun jeung SBC 328k, aptX ngenalkeun kirang distorsi dina musik kalawan rentang frékuénsi lega, tapi dina musik kalawan rentang frékuénsi sempit jeung rentang dinamis lega, SBC 328k kadang meunang.

Hayu urang nganggap kasus husus. Spektrogram rekaman maén piano:
Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

Énergi utama aya dina frékuénsi ti 0 nepi ka 4 kHz, terus nepi ka 10 kHz.
Spektrogram file anu dikomprés dina aptX sapertos kieu:
Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

Sareng ieu sapertos SBC 328k.
Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

Ieu bisa ditempo yén SBC 328k périodik lengkep dipareuman rentang luhur 16 kHz, sarta spent sakabeh bitrate sadia on rentang handap nilai ieu. Sanajan kitu, aptX ngenalkeun leuwih distorsi kana spéktrum frékuénsi karungu ku ceuli manusa, sakumaha bisa ditempo dina spéktrogram aslina dikurangan ti spéktrogram aptX (beuki caang, beuki distorsi):
Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

Sedengkeun SBC 328k manja sinyal kirang dina rentang ti 0 nepi ka 10 kHz, sarta neukteuk off sésana:
Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

The 485k bitrate of SBC éta cukup pikeun ngawétkeun sakabéh rentang frékuénsi, tanpa nganonaktipkeun pita.
Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

SBC 485k sacara signifikan payun ti aptX dina lagu ieu dina kisaran 0-15 kHz, kalayan bédana anu langkung alit tapi tetep katingali tina 15-22 kHz (langkung poék kirang distorsi):
Kami ngarobih tumpukan Bluetooth pikeun ningkatkeun sora dina headphone tanpa codec AAC, aptX sareng LDAC

Arsip audio asli, SBC sareng aptX.

Ku ngalih ka SBC-bitrate luhur, anjeun bakal nampi audio anu sering ngéléhkeun aptX dina headphone naon waé. Dina headphone anu ngadukung konektipitas 3 Mbps EDR, laju bit 551 kbps ngahasilkeun sora anu sabanding sareng aptX HD.

Naha anjeun tiasa ngalakukeun langkung seueur?

Patch Android ogé kalebet pilihan pikeun ningkatkeun laju bit pikeun alat 2 Mbps EDR. Anjeun tiasa ningkatkeun bitrate tina 452 kbit/s nepi ka 595 kbit/s, kalawan biaya ngurangan stabilitas transmisi dina kondisi radio hésé.
Cukup pikeun ngeset variabel persist.bluetooth.sbc_hd_higher_bitrate ka 1:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Patch bitrate ekstrim dugi ka ayeuna ngan diadopsi dina LineageOS 15.1, tapi henteu dina 16.0.

Kasaluyuan alat

SBC Dual Channel dirojong ku ampir sadaya headphone, spiker sareng unit sirah mobil. Ieu teu heran - standar merlukeun rojongan na dina sagala alat decoding. Aya sajumlah leutik alat dimana mode ieu nyababkeun masalah, tapi ieu mangrupikeun instansi terasing.
Rincian langkung seueur ngeunaan alat anu cocog tiasa dipendakan di W4bsitXNUMX-dns.com atawa xda-pamekar.

Babandingan béda sora

Kuring ngadamel layanan wéb anu ngodekeun audio ka SBC (sareng aptX sareng aptX HD) sacara real waktos, langsung dina browser. Kalayan éta, anjeun tiasa ngabandingkeun sora propil SBC anu béda sareng codec sanés, tanpa leres-leres ngirimkeun audio liwat Bluetooth, dina headphone kabel, spiker, sareng musik karesep anjeun, sareng ogé ngarobih parameter encoding langsung nalika maén audio.
btcodecs.valdikss.org.ru/sbc-encoder

Kontak Pamekar Android

Kuring nulis ka seueur pamekar tumpukan Bluetooth di Google naroskeun aranjeunna mertimbangkeun kalebet patch dina cabang Android utama - AOSP, tapi henteu nampi réspon tunggal. Patch kuring asup Sistim patch Gerrit pikeun Android ogé tetep tanpa komentar ti saha aub.
Abdi bakal bagja upami kuring tiasa kéngingkeun pitulung pikeun ngahubungi pamekar di Google sareng nyangking SBC HD ka Android. Patch di gerrit parantos luntur (ieu mangrupikeun salah sahiji révisi awal), sareng kuring bakal ngamutahirkeun upami pamekar kabetot dina parobihan kuring (henteu gampang pikeun kuring ngapdetna, kuring henteu gaduh alat anu cocog sareng Android Q. ).

kacindekan

Pamaké smartphone sareng LineageOS, Resurrection Remix sareng firmware crDroid tiasa nikmati kualitas sora anu langkung saé ayeuna, ngan aktipkeun pilihan dina setélan alat Bluetooth. Pamaké Linux ogé tiasa ningkat bitrate SBC ku cara masang patch ti Pali Rohar, anu, diantarana, nambihan dukungan pikeun codec aptX, aptX HD sareng FastStream.

sumber: www.habr.com

Tambahkeun komentar