Dengan perkembangan teknologi, headphone analog “tabung” yang sudah begitu dikenal turun dalam sejarah - headphone ini semakin banyak digantikan oleh perangkat nirkabel Bluetooth.
Smartphone modern kehilangan konektor biasa demi perlindungan kelembaban dan debu.
Pengembang merilis semua versi baru protokol Bluetooth dan semua versi baru codec, menjanjikan "lebih cepat, lebih tinggi, lebih kuat" - lebih sedikit penundaan dalam pemutaran dan kualitas yang lebih baik.
Apakah semuanya baik-baik saja? Ayo lihat.
Pendahuluan
Saya tidak akan mempelajari implementasi teknis dari protokol, serta spesifikasi yang membosankan.
ValdikSS yang terhormat, yang sebagian besar bertindak sebagai inspirasi dan bahkan seorang konsultan ilmiah dalam artikel ini, sedang mempersiapkan materi komprehensif tentang codec - dan di sana semuanya akan disajikan secara lebih rinci dan benar secara teknis.
Saya ingin menceritakan lebih banyak tentang pengalaman pribadi. Nah, sedikit menghibur (membosankan?) Latihan.
Setahun setengah yang lalu, saya bersemangat tentang gagasan aptX. Ya, saya membaca banyak ulasan seperti
ini dan percaya pada semua tikungan dan belokan teknis ini. Seorang anak lahir - dan saya benar-benar ingin menonton pertunjukan dengan headphone di malam hari bersama istri saya, tanpa membuat keributan dan tidak membangunkan siapa pun di rumah.
Apa akibatnya?
Kualitas
Mari kita mulai dengan angka dan fakta (halo, Wikipedia!)
SBC adalah codec lama yang baik, sesuai dengan standar A2DP. Codec adalah hasil karya Frans de Bont
(F. de Bont, M. Groenewegen dan W. Oomen, "Sistem Pengkodean Audio Berkualitas Tinggi pada 128 kb / s", Konvensi AES ke-98, 25-28 Februari, 1995) dan menggunakan algoritma yang dijelaskan dalam
paten EP-0400755B1 . Patut dicatat bahwa penulis paten memperbolehkan penggunaan SBC hanya secara gratis di aplikasi Bluetooth, namun paten tersebut berakhir pada 2 Juni 2010. Karena standar A2DP sangat umum, sangat sulit untuk menemukan headphone atau speaker yang tidak memiliki dukungan SBC.
Codec menyediakan frekuensi pengambilan sampel 16, 32, 44.1, 48 kHz dengan laju aliran 10-1500 kbit / s. Ya, Anda dengar benar. Hingga 1500 kbps. Tidak ada batas bitrate dalam codec. Tetapi lebih lanjut tentang itu nanti.
Codec
aptX dikembangkan pada tahun 1988 di Queen's University Belfast . Ya, sebelum Bluetooth masih ada sekitar belasan tahun, jadi codec itu digunakan dalam peralatan audio profesional. Qualcomm saat ini memegang hak, dan oleh karena itu penggunaan memerlukan lisensi dan royalti. Pada tahun 2014, biayanya kira-kira sebagai berikut: pembayaran satu kali sebesar $ 6.000 dan ≈ $ 1 untuk setiap perangkat yang dirilis untuk pihak hingga 10.000 perangkat. Karena alasan ini, banyak perangkat dengan chip Snapdragon 835, 845, 821, 820, 810, 805, 801, 800, 650, 615, 410 sangat mungkin dan mendukung aptX, tetapi tidak diaktifkan di sana, karena lisensi tidak dibeli. Tentang itu - juga di bawah ini.
Dengan kedalaman bit 16 bit dan frekuensi sampling 48 kHz, codec dapat memberikan bit rate 384 kbit / s (saluran ganda).
Daftar produk yang secara resmi mendukung aptX . Anda dapat menemukan banyak sistem yang tidak dikenal dengan dukungan aptX di Aliexpress, tetapi bersiaplah untuk kenyataan bahwa sebenarnya akan ada SBC lama yang sama baik - dan tidak lebih.
aptX HD - codec yang sama, tetapi dengan profil pengkodean yang berbeda, memiliki kecepatan aliran 576 kbit / s, dukungan untuk frekuensi pengambilan sampel hingga 48 kHz dan kedalaman bit hingga 24 bit. Beberapa orang menyebut ini aptX Lossless codec - tetapi ini omong kosong, jika hanya karena saat ini tidak mungkin untuk mencapai nilai stream yang dapat membawa data lossless. Keuntungan khusus dari codec ini adalah penundaan penyandian yang dapat disesuaikan, yang dapat dikurangi menjadi 1 ms pada frekuensi sampling 48 kHz. Juga, codec ini sangat menguntungkan dari sudut pandang pemuatan prosesor, yang mengekspresikan keunggulan dibandingkan dengan MP3 dan AAS.
Daftar produk yang secara resmi mendukung aptX HD . Dia cukup kecil.
aptX Low latency (atau LL) adalah versi khusus dari codec yang memungkinkan Anda untuk mengurangi waktu tunda suara menjadi kurang dari 40 ms.
Daftar produk yang secara resmi mendukung aptX LL .

Itu dia. Gambar inilah yang pada suatu waktu membeli saya dengan jeroan ayam itik. Keterlambatan! Lagi pula, siapa yang ingin mendengar suara ledakan di beberapa film aksi, jeritan monster dalam film horor atau raungan kerumunan orang di pertandingan sepak bola ketika semuanya berakhir?
Tetapi apakah semua ini benar-benar demikian?
Sayangnya, tidak.
Seperti halnya materi pemasaran, angkanya tidak masuk akal. Penundaan sebagian besar tergantung pada buffering dalam sistem dan implementasi codec. Jadi, penundaan dengan SBC mungkin kurang dari 40 ms, yang, mengingat standar penyiaran televisi (+40 ms ... −60 ms), sangat dapat diterima.
Singkatnya:- Tidak ada codec yang ada yang bisa lebih baik dari teknologi kabel, karena tidak ada codec yang dapat mencapai kompresi lossless sejati.
- Codec paling populer adalah SBC. Dia adalah yang paling fleksibel dalam pengaturan. Dan terlepas dari kenyataan bahwa aptX dirilis sebelumnya, itu tidak bisa mengalahkan popularitas SBC, tampaknya karena yang terakhir ini gratis.
- Kualitas suara sangat tergantung pada implementasi codec, serta pada kinerja perangkat keras headphone / speaker pada umumnya - jika speaker itu sendiri lemah, maka kualitasnya tidak dapat ditingkatkan oleh codec apa pun. Oleh karena itu, di masa depan, membandingkan kualitas, kita akan berbicara tentang memainkan konten yang sama dari sumber yang sama pada speaker / headphone yang sama, tetapi dengan codec yang berbeda.
Hasil yang praktis dan sangat subyektif

Informasi ini didasarkan pada pengalaman satu setengah tahun yang telah disebutkan dalam mengoperasikan, membandingkan dan menarik pendengar luar.
Pengalaman ini didasarkan pada mendengarkan lossless pada pemutar SONY Walkman NWZ-A17, di mana codec dapat dipilih, serta menonton berbagai program dengan output audio melalui Avantree Priva III.
Ada tiga headphone: Sennheiser PMX 60, Koss Porta Pro dan Koss UR-20.
Jabra BT3030 (SBC) dan Avantree Clipper Pro (aptX) digunakan sebagai penerima sinyal nirkabel.
Speaker Voombox Outdoor (SBC) dan headphone konduksi tulang Aftershokz Trekz Titanium (aptX) juga digunakan.
Semua equalizer dan enhancers dimatikan - dan ini penting.
Total:- Kualitas suara yang dimainkan dengan koneksi kabel selalu lebih baik. Ini tanpa keraguan.
- Perbedaan antara SBC dan aptX sangat sulit didengar - dan hanya dalam hal beberapa jenis musik. Sebagai contoh, penulis artikel jelas mendengar perbedaan dalam cello solo dalam komposisi klasik, sedangkan untuk instrumen biola dan frekuensi rendah perbedaannya kurang terlihat. Dalam genre modern - pop, musik elektronik, dan rock - perbedaannya tidak terdengar. Dalam beberapa kasus, secara subjektif tampak bahwa transmisi SBC terdengar lebih baik daripada aptX.
- Penundaan antara SBC dan aptX hanya dapat dilihat jika Anda terhubung ke sumber yang sama dan memasukkan penerima yang berbeda ke telinga yang berbeda (well, saluran kiri adalah SBC, dan yang kanan adalah aptX, misalnya). Hampir tidak mungkin untuk melihat penundaan dengan gambar, tetapi karena cerita bahwa aptX dimaksudkan untuk adegan dan konten yang dinamis adalah mitos.
- Kejutan itu disebabkan oleh kualitas suara Voombox Outdoor yang agak murah dan "tidak terkenal". Rupanya, ini adalah keberhasilan implementasi SBC, yang disebutkan di atas.
- Implementasi aptX pada headphone dengan konduksi tulang benar-benar tidak dapat dipahami - teknologinya sangat spesifik, dan oleh karena itu kehilangan kualitasnya signifikan karena teknologinya sendiri. Dengan mempertimbangkan rentang kecil dari "rentang" operasi perangkat, implementasi pasangan yang sangat buruk dengan dua perangkat, saya dapat mengatakan bahwa Aftershokz adalah perusahaan yang berinvestasi lebih banyak dalam pemasaran daripada dalam pengembangan.
Saya tidak berpendapat bahwa jika Anda menghubungkan semua jenis alat analisa spektral dan sebagainya, Anda dapat dan harus melihat perbedaannya. Tapi telinga manusia, dan bahkan lebih buruk - telinga manusia rata-rata - bukan perangkat spektral, dan karena itu tidak mendengar semua nuansa ini.
Latihan: memperbaiki apa yang bisa diperbaiki
Bagian 1. Nyalakan aptX
Seperti yang telah disebutkan, di beberapa perangkat penggunaan aptX dinonaktifkan, mungkin untuk menghindari penuntutan paten.
Masalah ini dapat diselesaikan dengan cukup sederhana dengan menyelipkan perangkat perpustakaan untuk mengimplementasikan codec dan menulis kemampuan untuk bekerja dengan codec ini di build.prop.
Di Internet ada sejumlah besar solusi semacam ini. Saya mengambil kebebasan menggabungkan mereka menjadi satu, sambil menyadarinya sebagai modul untuk Magisk. Ya, saya sangat menyukai proyek ini dan saya pikir menerapkan perubahan dalam sistem dalam bentuk modul Magisk adalah solusi yang lebih baik dan lebih aman dengan kemampuan untuk menyimpan sistem dalam bentuk aslinya dan dengan cara yang mudah untuk memutar kembali.
Modul ini dapat diunduh
dari sini . Ya, saya tahu tentang github. Dan tidak, sampai saya punya waktu untuk meletakkannya di sana.
Entri dalam build.prop, termasuk aptX, dan, jika memungkinkan, aptX HD, akan ditiru secara otomatis oleh modul.

Bagian 2. Meningkatkan Bitrate SBC
Seperti yang dilaporkan sebelumnya, codec SBC pada dasarnya tidak memiliki batasan bitrate. Namun, pabrikan biasanya menetapkan batas 342 kbit / s untuk mono dan 345 kbit / s untuk stereo untuk memastikan operasi yang andal dengan semua jenis perangkat penerima.
Pada saat yang sama, spesifikasi A2DP v1.2, yang aktif dari 2007 hingga 2015, mengharuskan semua perangkat decoding untuk bekerja dengan benar dengan bitrate hingga 320 kbit / s untuk mono dan 512 kbit / s dalam hal sinyal stereo.
Dalam versi baru spesifikasi, tidak ada batas bitrate sama sekali. Diasumsikan bahwa headphone modern yang dirilis setelah 2015 dan mendukung EDR dapat mendukung bitrate hingga 730 kbps.
Bahkan, ini tentu saja tidak demikian.
Dalam sebuah studi ekstensif yang dilakukan oleh
ValdikSS , ditemukan bahwa hampir semua perangkat penerima andal bekerja dengan laju bit 454 kbit / dtk, dan angka yang cukup besar dengan laju bit 507 kbit / dtk.
Dalam penelitiannya, ValdikSS juga menunjukkan bahwa, berbeda dengan kepercayaan populer tentang kualitas suara dari aptX codec, itu mungkin menghasilkan hasil yang lebih buruk pada beberapa file daripada SBC dengan bit rate standar 328 kbps, dan beralih ke SBC bitrate tinggi akan menghasilkan suara yang sering melebihi aptX, pada headphone apa pun.
Berdasarkan data ini,
ValdikSS mengirim komentar ke para pengembang Lineage OS dan Google, tetapi sejauh ini belum ada reaksi.
Dengan demikian, kita hanya bisa melakukan modifikasi pada tumpukan Bluetooth secara manual.
Kami membutuhkan IDA Pro dengan kemampuan untuk mendekompilasi ARM, editor HEX apa pun (saya menggunakan WinHEX) dan file bluetooth.default.so dari perangkat kami. Biasanya terletak di jalur / sistem / lib / hw dan lebih jarang - juga di jalur / sistem / lib64 / hw (akses root pasti diperlukan).
Jadi, buka file bluetooth.default.so. Operasi dan modifikasi yang dijelaskan di bawah ini hanya berlaku untuk tumpukan Android asli (bluedroid). Jika Anda melihat baris “Needed Library 'com.qualcomm.qti.bluetooth_audio@1.0.so'” atau sejenisnya di IDA Pro, dengan probabilitas tinggi instruksi ini tidak akan membantu Anda.

Tugas pertama kami adalah mengganti Stereo Bersama dengan Dual Channel dalam konfigurasi standar.
Kami akan bekerja dengan
fungsi bta_av_build_src_cfg .
Untuk menemukan prosedur ini di IDA, kami akan menggunakan pencarian
baris untuk pesan karakteristik di log debug "Cant parse src cap ret =% d" :


Akibatnya, cukup cepat kita menemukan fungsi itu sendiri dalam bentuk kode:

Tugas kita adalah mengganti struktur asli cek
if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_JOINT) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_JOINT; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_STEREO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_STEREO; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_DUAL) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_DUAL; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_MONO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_MONO;</code> <code> if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_DUAL) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_DUAL; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_STEREO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_STEREO; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_DUAL) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_DUAL; else if (src_cap.ch_mode & A2D_SBC_IE_CH_MD_MONO) pref_cap.ch_mode = A2D_SBC_IE_CH_MD_MONO;
Ada beberapa cara untuk melakukan ini.
Yang pertama adalah penggantian instruksi TST.W R0, # 1 dengan TST.W R0, # 4 dan MOVS R0, # 1 dengan MOVS R0, # 4 dalam urutan pemeriksaan:

Dalam bytecode, ini adalah penggantian x01 ke x04. Penting untuk mencatat urutan karakteristik byte yang dengannya pola ini dapat ditemukan. Tanpa merinci lebih dalam, saya akan mengatakan bahwa pada intinya itu adalah pencarian urutan
10 20 8D F8 04 00 9D F8 0D 00 10 F0 01 0F ?? ?? 10 F0 02 0F ?? ?? 10 F0 04 0F ?? ?? 10 F0 08 0F ?? ?? 08 20 ?? ?? 01 20 ?? ?? 02 20 ?? ?? 04 20
dan penggantiannya oleh
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 04 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 04 ?? ?? ?? ?? ?? ?? ?? ?? ??
Namun, metode ini memiliki kekurangan.
Sejumlah kompiler mengubah urutan pelaksanaan perintah tergantung pada optimasi. Dan dalam hal ini, tidak mungkin untuk menemukan pola yang diinginkan, dan kadang-kadang mekanisme pemeriksaan dalam struktur umumnya dimasukkan ke dalam kode sebaris. Oleh karena itu, lebih dapat diandalkan untuk mengubah
btif_av_sbc_default_config konstan.
Sebagai permulaan - temukan dia. Dia berada di awal fungsi kita, karena
void bta_av_build_src_cfg (UINT8 *p_pref_cfg, UINT8 *p_src_cap) { tA2D_SBC_CIE src_cap; tA2D_SBC_CIE pref_cap; UINT8 status = 0; /* initialize it to default SBC configuration */ A2D_BldSbcInfo(AVDT_MEDIA_AUDIO, (tA2D_SBC_CIE *) &btif_av_sbc_default_config, p_pref_cfg); /* now try to build a preferred one */ /* parse configuration */ if ((status = A2D_ParsSbcInfo(&src_cap, p_src_cap, TRUE)) != 0) { APPL_TRACE_DEBUG(" Cant parse src cap ret = %d", status);
Dan ini dia:


Dapat dilihat bahwa btif_av_sbc_default_config sendiri merupakan urutan byte 20 01 10 04 01 35 02, sedangkan byte pertama mengkodekan frekuensi sampling dan dapat 10 (48 kHz) dan 20 (44 kHz), dan karenanya tidak spesifik. Dengan demikian, tugas kita adalah mengganti urutan
01 10 04 01 35 02
pada
04 ?? ?? ?? ?? ??
Ini akan memungkinkan Anda untuk mengubah logika struktur dengan cara yang serupa, tetapi pada saat yang sama mengoptimalkan kompiler tidak akan menyebabkan masalah.
Dalam beberapa kasus, headphone atau speaker sendiri yang memulai koneksi. Dalam hal ini, mode ditentukan oleh fungsi
bta_av_co_audio_init .
Fungsi
dicirikan oleh baris "bta_av_co_audio_init:% d" dan mudah dicari dalam kode:

Enumerasi kemungkinan mode koneksi dilakukan dalam perintah berikut:
switch (index) { case BTIF_SV_AV_AA_SBC_INDEX: /* Set up for SBC codec for SRC*/ *p_codec_type = BTA_AV_CODEC_SBC; /* This should not fail because we are using constants for parameters */ A2D_BldSbcInfo(AVDT_MEDIA_AUDIO, (tA2D_SBC_CIE *) &bta_av_co_sbc_caps, p_codec_info); /* Codec is valid */ return TRUE;
bta_av_co_sbc_caps konstanta memiliki struktur berikut :
const tA2D_SBC_CIE bta_av_co_sbc_caps = { (A2D_SBC_IE_SAMP_FREQ_44), /* samp_freq */ (A2D_SBC_IE_CH_MD_MONO | A2D_SBC_IE_CH_MD_STEREO | A2D_SBC_IE_CH_MD_JOINT | A2D_SBC_IE_CH_MD_DUAL), /* ch_mode */ (A2D_SBC_IE_BLOCKS_16 | A2D_SBC_IE_BLOCKS_12 | A2D_SBC_IE_BLOCKS_8 | A2D_SBC_IE_BLOCKS_4), /* block_len */ (A2D_SBC_IE_SUBBAND_4 | A2D_SBC_IE_SUBBAND_8), /* num_subbands */ (A2D_SBC_IE_ALLOC_MD_L | A2D_SBC_IE_ALLOC_MD_S), /* alloc_mthd */ BTA_AV_CO_SBC_MAX_BITPOOL, /* max_bitpool */ A2D_SBC_IE_MIN_BITPOOL /* min_bitpool */ };
Konstanta mudah ditemukan dalam kode, dalam kasus saya itu adalah 20 0F F0 0C 03 35 02:

Perhatikan byte
0F - karena menyediakan kemampuan untuk terhubung dengan salah satu mode yang valid, sejak
x0F = A2D_SBC_IE_CH_MD_MONO | A2D_SBC_IE_CH_MD_STEREO | A2D_SBC_IE_CH_MD_JOINT | A2D_SBC_IE_CH_MD_DUAL = x08 | x02 | x01 | x04
Tugas kami adalah mengubah nilai ini sebagai berikut:
x0F = A2D_SBC_IE_CH_MD_DUAL = x04
Karena itu, perlu diganti
?? 0F F0 0C 03 35 02
pada
?? 04 ?? ?? ?? ?? ??
Jadi, kami memaksa tumpukan untuk terhubung dalam mode Dual Channel baik dalam hal memulai koneksi oleh perangkat, dan dalam kasus memulai koneksi oleh sisi penerima sinyal.
Sekarang Anda harus menghapus pembatasan dalam bitrate atau meningkatkan ambang atasnya.
Perlu menangani
btif_media_task_get_sbc_rate . Demikian pula, untuk mencari
garis karakteristik "wastafel a2dp non-edr terdeteksi, batasi laju ke% d", kami mencari fungsi dalam kode:

Batas laju bit dinyatakan dalam string
Tingkat UINT16 = DEFAULT_SBC_BITRATE (yang pada gilirannya
adalah 328 kbps )
Dalam kodenya, begini:

Ubah nilai ini menjadi 454 kbit / s - ini lebih tinggi dari standar dan bekerja dengan sebagian besar penerima. Untuk melakukan ini, ganti byte
B1 4F F4 A4 74 ?? E0
pada
?? ?? ?? E3 ?? ?? ??
Anda juga harus mencari berdasarkan pola.
E0 4F F4 A4 74 ?? E0
dan ganti dengan
?? ?? ?? E3 ?? ?? ??
- Ini diperlukan untuk sejumlah perangkat.
Nilai E3 mungkin berbeda tergantung pada laju bit maksimum yang diinginkan:
- E3 - 454 kbps
- F1 - 482 kbps
- F3 - 486 kbps
- 10 - 576 kbps
- 48 - tidak ada batas
Secara umum, ini ditentukan oleh bytecode dari operasi MOV.W R4, XXX.
Dalam praktiknya, ada baiknya bereksperimen dan memilih nilai maksimum di mana semua perangkat penerima Anda menerima penerimaan sinyal yang stabil, tidak ada retak, gangguan atau distorsi.
Pada semua penerima dalam percobaan saya (saya tunjukkan di atas), nilai ini adalah 576 kbps, telepon Xiaomi Redmi 4x MIUI10 Android 7.1 adalah sumber sinyal.
Berdasarkan tindakan yang dijelaskan, tambalan umum telah dibuat yang menemukan pola yang ditentukan dalam Bluetooth.default.so dan menggantinya? termasuk mode Dual Channel paksa dan mengatur batas bitrate ke 454 kbps. Jika perlu, nilai batas dapat dengan mudah diubah berdasarkan pencarian dan penggantian byte yang sesuai - pembaca yang penuh perhatian akan melakukan ini tanpa kesulitan.
Saya menekankan: tambalan hanya berfungsi dalam kasus tumpukan bluedroid dan kemungkinan besar tidak akan berhasil dalam kasus tumpukan Fluoride dan Android versi 8 dan yang lebih baru.
Patch dapat diunduh
dari sini .
Sangat disarankan agar Anda mengganti file asli sebagai modul Magisk, untuk saya sendiri saya melakukan ini
sebagai berikut .
Harap dicatat : modul ini dibuat oleh saya untuk telepon Xiaomi Redmi 4x 3/32 GB dengan firmware MIUI 10 stabil global saat ini pada saat penulisan. Dalam kasus Anda, file bluetooth.default.so harus diganti dengan Anda sendiri, ditambal, seperti dijelaskan di atas. Mungkin juga file tersebut harus diduplikasi di sepanjang jalur / sistem / lib64 / hw - tergantung pada model dan versi firmware ponsel Anda.
Pendekatan ini menggunakan modul Magisk membuatnya mudah untuk mengubah bitrate maksimum dan umumnya menonaktifkan perubahan jika ternyata beberapa perangkat penerima tidak mendukung Dual Channel.
Kesimpulan
Pada saat ini, dalam mengejar penjualan, banyak perusahaan mengajukan beberapa inovasi teknologi sebagai pembenaran untuk harga yang lebih tinggi.
Dalam praktiknya, ternyata teknologi yang ada dan lebih murah tidak sepenuhnya berkembang, dan inovasi teknologi tidak sepenuhnya diimplementasikan, yang secara signifikan mempengaruhi kualitas.
Sangat sering, pengguna mengalami "efek plasebo", meyakinkan diri mereka tentang kesempurnaan produk hanya karena lebih baru atau lebih berwarna disajikan. Padahal, kualitas ini hanya imajiner.
Terlepas dari kemunduran yang nyata dalam kualitas transmisi audio nirkabel dibandingkan dengan versi kabel, tampaknya produsen perangkat modern ditujukan pada transisi lengkap ke teknologi nirkabel. Pada saat yang sama, trik pemasaran digunakan untuk membenarkan kenaikan harga: perlindungan terhadap perendaman telepon di dalam air (bagaimana Anda bisa berbicara di bawah air? Mengapa menjatuhkan perangkat ke dalam air?), Penggunaan codec yang lebih mahal, dll. Pada saat yang sama, potensi codec SBC populer yang ada tidak sepenuhnya dimanfaatkan.
Kami tidak dapat memperoleh klarifikasi dari Google mengenai batas bitrate 328 kbps, juga tidak menghilangkan batas ini dan menambahkan opsi untuk mengaktifkan Dual Channel di menu Bluetooth dari pengembang Lineage OS.
Terima kasih kepada semua orang yang membaca sampai akhir!
Beberapa kelanjutan yang disebabkan oleh diskusi dalam komentar dan ruang mengenai codec LDAC ada di
sini .
