Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Sadurunge maca artikel iki, disaranake maca artikel sadurunge: Audio liwat Bluetooth: rincian maksimal babagan profil, codec lan piranti

Sawetara pangguna headphone nirkabel nglaporake kualitas swara sing kurang apik lan kurang frekuensi dhuwur nalika nggunakake codec Bluetooth SBC standar, sing didhukung kabeh piranti audio. Rekomendasi umum kanggo nambah swara yaiku tuku piranti lan headphone sing ndhukung codec aptX lan LDAC. Codec iki mbutuhake biaya lisensi, mula piranti sing ndhukung luwih larang.

Pranyata kualitas SBC kurang amarga watesan tiruan tumpukan Bluetooth lan setelan headphone, lan watesan iki bisa dilewati ing piranti apa wae sing ana liwat owah-owahan piranti lunak menyang smartphone utawa komputer.

Codec SBC Kab

SBC codec wis akeh paramèter beda sing rembugan sak phase persiyapan sambungan. Ing antarane:

  • Jumlah lan jinis saluran: Stereo Gabungan, Stereo, Saluran Dual, Mono;
  • Jumlah pita frekuensi: 4 utawa 8;
  • Jumlah blok ing paket: 4, 8, 12, 16;
  • Algoritma kanggo nyebarake bit sajrone kuantisasi: Loudness, SNR;
  • Nilai maksimum lan minimal saka blumbang bit sing digunakake sajrone kuantisasi (bitpool): biasane saka 2 nganti 53.

Piranti dekoding kudu ndhukung kombinasi paramèter kasebut. Encoder bisa uga ora ngetrapake kabeh.
Tumpukan Bluetooth sing wis ana biasane setuju karo profil ing ngisor iki: Stereo Gabungan, 8 band, 16 blok, Loudness, bitpool 2..53. Profil iki nyandi audio 44.1 kHz kanthi bitrate 328 kbps.
Parameter bitpool langsung mengaruhi bitrate ing siji profil: sing luwih dhuwur, sing luwih dhuwur bitrate, lan mulane kualitas.
Nanging, parameter bitpool ora disambungake menyang profil tartamtu; Laju bit uga dipengaruhi dening paramèter liyane: jinis saluran, jumlah pita frekuensi, jumlah blok. Sampeyan bisa nambah bitrate kanthi ora langsung, kanthi setuju ing profil non-standar, tanpa ngganti bitpool.

Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Formula kanggo ngitung bitrate SBC

Contone, mode Dual Channel ngodhe saluran kanthi kapisah, nggunakake kabeh bitpool kanggo saben saluran. Kanthi meksa piranti nggunakake Dual Channel tinimbang Joint Stereo, meh tikel kaping pindho bitrate kanthi nilai bitpool maksimum sing padha: 617 kbps.
Ing mratelakake panemume, nggunakake nilai bitpool ora disambungake menyang profil ing tataran rembugan punika cacat ing standar A2DP, kang mimpin kanggo watesan Ponggawa kualitas SBC. Iku bakal nggawe liyane pangertèn kanggo rembugan bitrate tinimbang bitpool.

Nilai Bitpool lan Bitrate tetep iki asale saka tabel kanthi nilai sing disaranake kanggo nggunakake audio berkualitas tinggi. Nanging rekomendasi dudu alesan kanggo mbatesi nilai kasebut.

Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Spesifikasi A2DP v1.2, sing aktif wiwit taun 2007 nganti 2015, mbutuhake kabeh piranti dekoding bisa digunakake kanthi bener kanthi bitrate nganti 512 kbps:

Dekoder SNK kudu ndhukung kabeh nilai bitpool sing ora bisa ngluwihi tingkat bit maksimum. Profil iki mbatesi tingkat bit maksimum sing kasedhiya kanggo 320kb/s kanggo mono, lan 512kb/s kanggo mode rong saluran.

Ing versi anyar saka specification ora ana watesan ing bitrate. Dikira headphone modern sing dirilis sawise 2015 sing ndhukung EDR bisa ndhukung bit rate nganti ≈730 kbps.

Kanggo sawetara alasan, tumpukan Linux (PulseAudio), Android, Blackberry lan macOS Bluetooth sing dites duwe watesan gawean ing nilai maksimum parameter bitpool, sing langsung mengaruhi bitrate maksimum. Nanging iki dudu masalah paling gedhe; meh kabeh headphone uga mbatesi nilai bitpool maksimal dadi 53.
Kaya sing wis dakdeleng, umume piranti bisa digunakake kanthi sampurna ing tumpukan Bluetooth sing diowahi kanthi bitrate 551 kbps, tanpa gangguan utawa crackles. Nanging bitrate kuwi ora bakal konsisten ing kahanan normal, ing tumpukan Bluetooth biasa.

Ngowahi tumpukan Bluetooth

Sembarang tumpukan Bluetooth sing kompatibel karo standar A2DP wis support kanggo mode Dual Channel, nanging ora bisa kanggo ngaktifake saka antarmuka.

Ayo dadi nambah pilihan kanggo antarmuka! Aku wis nggawe tambalan kanggo Android 8.1 lan Android 9 sing nambah dhukungan Saluran Dual lengkap menyang tumpukan, nambah mode menyang menu pilihan mode ing alat dev, lan nganggep SBC sing diaktifake Dual Channel kaya-kaya minangka codec tambahan kaya aptX. , AAC, utawa LDAC ( Android diarani Audio HD iki) kanthi nambahake tandha centhang ing setelan piranti Bluetooth. Iki katon kaya:

Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Patch kanggo Android 9
Patch kanggo Android 8.1

Nalika kothak centhang diaktifake, audio Bluetooth wiwit dikirim kanthi cepet 551 kbps, yen headphone ndhukung kacepetan sambungan 3 Mbit/s, utawa 452 kbps, yen headphone mung ndhukung 2 Mbit/s.

Patch iki kalebu ing firmware alternatif ing ngisor iki:

  • LineageOS
  • Awakening Remix
  • crDroid

Saka endi 551 lan 452 kbit/s?

Teknologi enggo bareng udhara Bluetooth dirancang kanggo ngirim paket ukuran tetep gedhe kanthi efisien. Transfer data dumadi ing slot , paling akeh slot sing dikirim ing siji transfer 5. Ana uga mode transfer sing nggunakake 1 utawa 3 slot , nanging ora 2 utawa 4. Ing 5 slot sampeyan bisa nransfer nganti 679 bait ing kacepetan sambungan. saka 2 Mbit / s lan nganti 1021 bait ing kacepetan 3 Mbit / s, lan ing 3 - 367 lan 552 bait, mungguh.

Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Yen kita pengin nransfer data kurang saka 679 utawa 1021 bait, nanging luwih saka 367 utawa 552 bait, transfer isih bakal njupuk 5 slot lan data bakal ditransfer ing wektu sing padha, kang nyuda efficiency transfer.

Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

SBC ing mode Dual Channel, ing audio 44100 Hz kanthi paramèter Bitpool 38, 16 blok saben pigura, 8 rentang frekuensi, ngode audio dadi 164 bait frame, kanthi bitrate 452 kbps.
Audio kudu encapsulated ing L2CAP lan protokol transfer AVDTP, kang njupuk 16 bait saka payload audio.

Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Dadi, siji transmisi Bluetooth kanthi 5 slot bisa nampung 4 bingkai audio:

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

Kita pas karo 11.7 ms data audio menyang paket sing dikirim, sing bakal dikirim ing 3.75 ms, lan kita duwe 6 bita sing ora digunakake ing paket kasebut.
Yen sampeyan mundhakaken bitpool sethitik, iku bakal ora bisa maneh kanggo Pack 4 pigura audio menyang siji paket. Sampeyan kudu ngirim 3 pigura sekaligus, sing nyuda efisiensi transmisi, nyuda jumlah audio sing dikirim saben pigura, lan bakal luwih cepet nyebabake gagap audio ing kahanan radio sing ora apik.

Kanthi cara sing padha, bitrate 551 kbit / s dipilih kanggo EDR 3 Mbit / s: karo Bitpool 47, 16 blok saben pigura, 8 rentang frekuensi, ukuran pigura 200 bait, kanthi bitrate 551 kbit / s. Siji paket ngemot 5 frame utawa 14.6 ms musik.

Algoritma kanggo ngetung kabeh paramèter SBC cukup rumit, sampeyan bisa kanthi gampang bingung yen ngetung kanthi manual, mula aku nggawe kalkulator interaktif kanggo mbantu sing kasengsem: btcodecs.valdikss.org.ru/sbc-bitrate-calculator

Kenapa kabeh iki dibutuhake?

Beda karo kapercayan populer babagan kualitas swara codec aptX, ing sawetara file bisa ngasilake asil sing luwih elek tinimbang SBC kanthi bitrate standar 328 kbps.

SBC kanthi dinamis nyedhiyakake bit kuantisasi menyang pita frekuensi kanthi basis sing sithik nganti dhuwur. Yen kabeh bitrate digunakake kanggo frekuensi rendah lan tengah, frekuensi dhuwur bakal "dipotong" (dadi sepi).
aptX ngetung pita frekuensi kanthi jumlah bit sing padha saben wektu, mulane nduweni bitrate konstan: 352 kbps kanggo 44.1 kHz, 384 kbps kanggo 48 kHz, lan ora bisa "bit-shift" menyang frekuensi sing paling mbutuhake. . Ora kaya SBC, aptX ora bakal "memotong" frekuensi, nanging bakal nambah swara kuantisasi, nyuda jangkauan dinamis audio, lan kadhangkala ngenalake crackling karakteristik. SBC "mangan rincian" - mbuwang wilayah sing paling sepi.
Rata-rata, dibandhingake karo SBC 328k, aptX ngenalake kurang distorsi ing musik kanthi frekuensi sing amba, nanging ing musik kanthi rentang frekuensi sing sempit lan jangkauan dinamis sing amba, SBC 328k kadhangkala menang.

Ayo nimbang kasus khusus. Spektrogram rekaman dolanan piano:
Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Energi utama dumunung ing frekuensi saka 0 nganti 4 kHz, lan terus nganti 10 kHz.
Spektrogram file sing dikompresi ing aptX katon kaya iki:
Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Lan iki katon kaya SBC 328k.
Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Sampeyan bisa ndeleng sing SBC 328k periodik rampung mateni sawetara ndhuwur 16 kHz, lan ngginakaken kabeh bitrate kasedhiya ing kisaran ngisor Nilai iki. Nanging, aptX ngenalake luwih akeh distorsi menyang spektrum frekuensi sing bisa dirungokake ing kuping manungsa, kaya sing bisa dideleng ing spektrogram asli sing dikurangi saka spektrogram aptX (sing luwih padhang, luwih akeh distorsi):
Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Nalika SBC 328k ngrusak sinyal kurang ing kisaran saka 0 kanggo 10 kHz, lan Cut mati liyane:
Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Bitrate 485k saka SBC cukup kanggo njaga kabeh frekuensi, tanpa mateni pita.
Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

SBC 485k luwih maju tinimbang aptX ing trek iki ing kisaran 0-15 kHz, kanthi prabédan 15-22 kHz sing luwih cilik nanging isih katon (sing luwih peteng kurang distorsi):
Kita ngowahi tumpukan Bluetooth kanggo nambah swara ing headphone tanpa codec AAC, aptX lan LDAC

Arsip audio asli, SBC lan aptX.

Kanthi ngalih menyang SBC bitrate dhuwur, sampeyan bakal entuk audio sing asring ngalahake aptX ing headphone apa wae. Ing headphone sing ndhukung konektivitas 3 Mbps EDR, bitrate 551 kbps ngasilake swara sing bisa dibandhingake karo aptX HD.

Apa sampeyan bisa nindakake luwih akeh?

Patch Android uga kalebu pilihan kanggo nambah bitrate kanggo piranti 2 Mbps EDR. Sampeyan bisa nambah bitrate saka 452 kbit/s kanggo 595 kbit/s, ing biaya ngurangi stabilitas transmisi ing kahanan radio angel.
Cukup nyetel variabel persist.bluetooth.sbc_hd_higher_bitrate dadi 1:

# setprop persist.bluetooth.sbc_hd_higher_bitrate 1

Patch bitrate ekstrem nganti saiki mung diadopsi ing LineageOS 15.1, nanging ora ing 16.0.

Kompatibilitas piranti

SBC Dual Channel didhukung meh kabeh headphone, speaker lan unit sirah mobil. Iki ora nggumunake - standar mbutuhake dhukungan ing piranti dekoding apa wae. Ana sawetara piranti sing mode iki nyebabake masalah, nanging iki minangka kedadeyan sing terisolasi.
Rincian liyane babagan piranti sing kompatibel bisa ditemokake ing 4 pdha utawa xda-developers.

Perbandingan beda swara

Aku nggawe layanan web sing ngodhe audio menyang SBC (uga aptX lan aptX HD) ing wektu nyata, langsung ing browser. Karo, sampeyan bisa mbandhingaké swara saka profil SBC beda lan codecs liyane, tanpa bener ngirim audio liwat Bluetooth, ing sembarang headphone kabel, speaker, lan musik favorit, lan uga ngganti paramèter enkoding langsung nalika muter audio.
btcodecs.valdikss.org.ru/sbc-encoder

Hubungi Pangembang Android

Aku wrote kanggo akeh pangembang tumpukan Bluetooth ing Google takon kanggo nimbang kalebu patch ing cabang Android utama - AOSP, nanging ora nampa respon siji. Tembelanku mlebu Sistem patch Gerrit kanggo Android uga tetep tanpa komentar saka sapa wae sing melu.
Aku bakal seneng yen aku bisa njaluk sawetara bantuan ing tutul karo pangembang ing Google lan nggawa SBC HD kanggo Android. Patch ing gerrit wis kuna (iki minangka salah sawijining revisi awal), lan aku bakal nganyari yen pangembang kasengsem karo owah-owahanku (ora gampang kanggo aku nganyari, aku ora duwe piranti sing kompatibel karo Android Q. ).

kesimpulan

Pangguna smartphone karo LineageOS, Resurrection Remix lan firmware crDroid bisa nikmati kualitas swara sing luwih apik saiki, mung aktifake pilihan kasebut ing setelan piranti Bluetooth. Pangguna Linux uga bisa nambah bitrate SBC kanthi nginstal tembelan saka Pali Rohar, sing, ing antarane, nambah dhukungan kanggo codec aptX, aptX HD lan FastStream.

Source: www.habr.com

Add a comment