คำเตือน: นี่คือคู่มือขั้นสูงที่เกี่ยวข้องกับการปรับ Bluetooth stacks บน Android - โปรดอ่านคู่มือนี้ทั้งหมดและปฏิบัติตามคำแนะนำอย่างแม่นยำ
แม้ว่า Bluetooth headsets และ Bluetooth audio จะกลายเป็นที่นิยม แต่ยังเป็นปัญหาสำหรับออดิโอไฟล์ เพราะ Bluetooth พิสูจน์แล้วว่าลดคุณภาพเสียงลง เนื่องจากบิตของข้อมูลเสียงและความถี่สูญหายไปในอากาศขณะสตรีมผ่าน Bluetooth
นี่คือเหตุผลที่บางผู้ผลิตนำ aptX และ LDAC codecs มาเพื่อเพิ่มคุณภาพเสียงเหนือ SBC Bluetooth codec มาตรฐานที่รองรับโดยหูฟังทุกตัวและอุปกรณ์ Bluetooth ส่วนใหญ่ - อย่างไรก็ตาม อุปกรณ์ที่มี aptX และ LDAC codecs แพงกว่ามาก เพราะ codecs นี้ต้องการค่า licensing fees ที่ผู้บริโภคต้องจ่ายในที่สุด
คุณภาพเสียงต่ำของ SBC Bluetooth codec ถูกก่อให้เกิดโดยข้อจำกัดทางเทียมมายของ Bluetooth stacks ทั้งหมดที่มีอยู่และการกำหนดค่าของหูฟัง และข้อจำกัดนี้สามารถหลีกเลี่ยงได้บนอุปกรณ์ที่มีอยู่แล้ว
หากคุณสนใจ Bluetooth audio เราจะแสดงในท้ายคู่มือวิธีดึง Bluetooth audio log dump และตรวจสอบเพื่อดูว่าคุณได้คุณภาพเสียงและความถี่แบบไหนจาก Bluetooth receiver ของ Android
ส่วนใหญ่ของคู่มือนี้จะเน้นที่การปรับแต่งง่ายๆ และวิธีอ่าน Bluetooth audio output ของคุณเพื่อเพิ่มคุณภาพ output ของ SBC Bluetooth codecs มาตรฐานอย่างมาก - โปรดอ่านคู่มือทั้งหมดอย่างละเอียด เพราะมันค่อนข้างมีประโยชน์และมีสิ่งต่างๆ ที่จะแฟลชหรือปรับแต่ง ขึ้นอยู่กับรุ่นอุปกรณ์ของคุณ
ท้ายคู่มือนี้มีรายการ Bluetooth stacks ที่ patch แล้วสำหรับอุปกรณ์ Android ยอดนิยมมากมาย - สามารถแฟลชใน recovery ได้เหมือน flashable .zip อื่นๆ - หากไม่มีอุปกรณ์ของคุณในรายการ คุณจะต้องทำตามคู่มือการปรับ Bluetooth stacks บน Android
ข้อมูลทางเทคนิคสั้นๆ เกี่ยวกับ SBC codec
SBC มีพารามิเตอร์ต่างๆ มากที่ถูกเจรจาในช่วงการตั้งค่าการเชื่อมต่อ:
- Audio channel type และจำนวน: Joint Stereo, Stereo, Dual Channel, Mono;
- จำนวน frequency bands: 4 หรือ 8;
- จำนวน audio blocks ในหนึ่ง packet: 4, 8, 12, 16;
- Quantization bit allocation algorithm: Loudness, SNR;
- Maximum และ minimum bit pool ที่ใช้ในกระบวนการ quantization: ปกติ 2-53
Decoder ต้องรองรับการรวมกันของพารามิเตอร์เหล่านี้ทุกชุด Encoder อาจ implement เพียงบางส่วน
Bluetooth stacks ที่มีอยู่โดยปกติเจรจาโปรไฟล์ต่อไปนี้: Joint Stereo, 8 bands, 16 blocks, Loudness, bitpool 2..53 โปรไฟล์นี้ encode เสียง 44.1 kHz ด้วย bitrate 328 kbps
พารามิเตอร์ Bitpool ส่งผลโดยตรงต่อ bitrate ภายในโปรไฟล์เดียวกัน: ยิ่งสูง ยิ่ง bitrate สูง และคุณภาพดีขึ้น
อย่างไรก็ตาม พารามิเตอร์ bitpool ไม่ได้ถูกผูกมัดกับโปรไฟล์เฉพาะ Bitrate ยังได้รับผลกระทบอย่างมากจากพารามิเตอร์อื่นๆ: audio channel type, จำนวน frequency bands, จำนวน audio blocks คุณสามารถเพิ่ม bitrate ได้โดยอ้อมด้วยการเจรจา non-standard profiles โดยไม่เปลี่ยน bitpool
ตัวอย่างเช่น Dual Channel encode ช่องสัญญาณแยกกัน ใช้ bitpool ทั้งหมดสำหรับแต่ละช่อง การบังคับให้อุปกรณ์ใช้ Dual Channel แทน Joint Stereo จะได้ bitrate เกือบสองเท่าที่ max bitpool เดียวกัน 617 kbps
ฉันรู้สึกว่า bitpool ควรเป็น internal variable มันเป็นข้อบกพร่องของการออกแบบ A2DP specification ที่ค่า bitpool ไม่ได้ถูกผูกมัดกับพารามิเตอร์ codec อื่นๆ และถูกกำหนดเพียงเป็นค่าสากล
ค่า Bitpool และ Bitrate ที่แน่นอนเหล่านี้มาจากค่าที่แนะนำสำหรับ high-quality audio แต่การแนะนำไม่ใช่ข้ออ้างที่จะจำกัดโปรไฟล์ให้อยู่ที่ค่าเหล่านี้
A2DP specification v1.2 ซึ่งใช้งานจาก 2007 ถึง 2015 กำหนดให้ decoder ทุกตัวทำงานถูกต้องกับ bitrates ถึง 512 kbps:
The decoder of the SNK shall support all possible bitpool values that do not result in the excess of the maximum bit rate. This profile limits the available maximum bit rate to 320kb/s for mono, and 512kb/s for two-channel modes.
ใน specification เวอร์ชันใหม่ ไม่มีข้อจำกัด bitrate สมมติว่าหูฟังสมัยใหม่ที่ปล่อยหลัง 2015 รองรับ bitrates ถึง 1000 kbps ได้
ด้วยเหตุผลบางอย่าง Bluetooth stacks ที่ทดสอบแล้วทั้งหมด (Linux (PulseAudio), Android, Blackberry และ macOS) มีข้อจำกัดทางเทียมมายของพารามิเตอร์ bitpool สูงสุด ซึ่งส่งผลโดยตรงต่อ maximum bitrate แต่ไม่ใช่ปัญหาใหญ่ที่สุด เกือบหูฟังทุกตัวก็จำกัดค่า bitpool สูงสุดไว้ที่ 53
อุปกรณ์ส่วนใหญ่ทำงานได้ดีบน Bluetooth stack ที่ปรับแล้วด้วย bitrate 507 kbps โดยไม่มีการขาดหยุดและแตกเสียง แต่ bitrate แบบนี้จะไม่มีการเจรจาใดๆ ภายใต้เงื่อนไขปกติ ด้วย Bluetooth stacks สต็อก
***จำเป็นสำหรับการทดสอบด้วยคู่มือด้านล่าง: bluetooth-dualchannel-test-ubuntu-18.04.1-desktop-amd64.iso.torrent
วิธีทดสอบบน PC
High bitrate SBC headphone compatibility test ง่ายที่สุดที่จะทำบน PC พร้อม Bluetooth adapter ผมเตรียม Ubuntu image พร้อม Bluetooth stack ที่ปรับแล้ว ซึ่งสามารถรันได้ใน virtual machine (โดยเชื่อม Bluetooth adapter เป็น USB device ภายใน VM มันยังทำงานกับ adapter ที่ built-in ในแล็ปท็อป) หรือบูทจาก USB flash drive Image นี้ใช้โปรไฟล์: Dual Channel, 8 bands, 16 blocks, Loudness, bitpool 2..41, 44.1 kHz ซึ่งให้ bitrate 485 kbps
การรันใน VM
- ดาวน์โหลด Virtualbox และ Virtualbox Extension Pack: https://www.virtualbox.org/wiki/Downloads;
- ติดตั้ง Virtualbox เริ่มมัน;
- ติดตั้ง Extension Pack ใช้ File → Preferences → Extensions;
- สร้าง virtual machine ใหม่: Linux, Ubuntu (64-bit), 1024 RAM อย่าสร้าง HDD
- ไปที่ virtual machine settings, ใน Storage เลือก Controller: IDE, Empty, กด CD icon → Choose virtual optical disk file;
- เลือก bluetooth-dualchannel-test-ubuntu-18.04.1-desktop-amd64.iso ที่ดาวน์โหลด;
- บันทึกและปิดหน้าต่าง settings เริ่ม virtual machine;
- คลิกขวา USB cable icon ที่มุมขวาล่าง เลือก Bluetooth adapter ของคุณ;
การรันบน PC
Image รองรับ BIOS/CSM และ UEFI booting
- เขียน image ลง USB flash drive ด้วย Etcher: https://www.balena.io/etcher/ การดำเนินการนี้จะลบไฟล์ทั้งหมดบน USB drive
- ปิด PC;
- เสียบ USB flash drive เปิด PC และกดปุ่ม boot order (มักเป็น Esc หรือ F12);
- เลือก USB flash drive ของคุณ
การดำเนินการทดสอบ
- (optional but recommended) Double click บน "Btsnoop Dump" script บน desktop จะเริ่ม Bluetooth data capture สำหรับการวิเคราะห์ภายหลัง อย่าปิด terminal window
- สลับหูฟังเป็น pairing mode;
- คลิกลูกศรมุมขวาบน เลือก Bluetooth icon → Bluetooth Settings;
- เลือกหูฟังของคุณ รอจนกว่าจะจับคู่เสร็จ และปิดหน้าต่าง;
- ตั้ง Ubuntu volume ประมาณ 2/3 ลด volume ด้วยปุ่มหูฟังด้วย เพราะอาจดังมากหลังจับคู่
- เปิดโฟลเดอร์ "music" เล่น "testrecord1.flac";
- (optional but recommended) ปิด player ปิด terminal window นี่จะหยุด data capture
- (optional but recommended) เปิด Firefox browser อัปโหลด data dump (btsnoop_hci.btsnoop บน desktop) ไปที่ https://btcodecs.valdikss.org.ru/
คุณสามารถฟังเพลงอื่นในโฟลเดอร์ music หรืออัปโหลดของคุณเอง;
ไม่ควรมี cracklings, audio interruption หรือ sound distortion อื่นๆ ในหูฟัง หากคุณได้ยินเสียงคุณภาพสูงดี นั่นหมายความว่าหูฟังของคุณรองรับ audio ด้วย bit rate 485 kbps
วิธีทดสอบบน Android device
เพื่อทดสอบจาก Android smartphone หรือ tablet คุณต้องใช้ Bluetooth stack ที่ปรับแล้ว ซึ่งต้องการ root privilege
วิธีจับ Bluetooth data dump บน Android
- ปิด Bluetooth;
- ใน Developer Settings เปิดสวิตช์ "Enable Bluetooth HCI snoop log";
- เปิด Bluetooth เชื่อมต่อกับ headset ของคุณผ่าน Bluetooth menu (นี่สำคัญ! อย่าอนุญาต auto connection!);
- เล่นตัวอย่างเสียงสั้นๆ;
- เปิด developer settings ปิดสวิตช์ "Enable Bluetooth HCI snoop log";
- ควรมี /storage/emulated/0/btsnoop_hci.log หรือ /data/misc/bluetooth/logs/btsnoop_hci.log ถูกสร้าง ถ้าหาย ให้เปิด /etc/bluetooth/bt_stack.conf ด้วย text editor และดู path ใน BtSnoopFileName option
ไม่ควรมี cracklings, audio interruption หรือ sound distortion อื่นๆ ในหูฟัง หากคุณได้ยินเสียงคุณภาพสูงดีด้วย library ที่ patch แล้ว นั่นหมายความว่าหูฟังของคุณรองรับ audio ด้วย bit rate 512 kbps
โปรดปฏิบัติตามอัลกอริทึมด้านบนอย่างระมัดระวัง โดยเฉพาะ หากคุณปิดหูฟังหรือ disconnect หลังจับคู่ สำคัญมากที่จะต้องเชื่อมต่อกับหูฟังด้วยตนเองจาก Bluetooth settings อย่าอนุญาต auto connection!
อุปกรณ์ที่รองรับอย่างน้อย 512 kbit/s SBC
- 1MORE iBFree
- JBL Everest 310
- JBL Everest 700
- Skullcandy HESH 3
- Sony WI-C400
- Sony MDR-1ABT
- Sony MDR-ZX770BT
- Sony MDR-XB650BT
- Sony MDR-XB950B1
- Sony SBH50
- Bluedio T4s (Bitpool max 39 ตอบสนองว่าไม่รองรับ Dual Channel แต่ทำงานหากบังคับ 462 kbit/s ไม่สอดคล้องกับ A2DP spec)
- Bluedio T5 (ตอบสนองว่าไม่รองรับ Dual Channel แต่ทำงานหากบังคับ ไม่สอดคล้องกับ A2DP spec)
- Bluedio T6 (ตอบสนองว่าไม่รองรับ Dual Channel แต่ทำงานหากบังคับ ไม่สอดคล้องกับ A2DP spec ใช้ chip Adopt Max 97220)
- Marshall Major II Bluetooth
- Overdrive RealForce D1
- Edifier W830BT
- DEXP BT-250
- Logitech BT Adapter
- Noname automotive head unit (CSR8645 chip)
- Sony DSX-A400BT automotive head unit
อุปกรณ์ที่รองรับ SBC สูงกว่า 512 kbit/s
- JBL Everest 310 (617-660 kbit/s)
- Sony WI-C400 (576 kbit/s)
- Sony MDR-ZX770BT (617-660 kbit/s)
- Marshall Major II Bluetooth (617-660 kbit/s)
- Overdrive RealForce D1 (730 kbit/s, dual channel, 4 subbands)
อุปกรณ์ที่ไม่ทำงานกับ bitrate สูงหรือ Dual Channel
- Harper HB-202 (cracklings; Beken BK3256 chip)
- Sony Ericsson MW600 (high frequency distortion, cracklings; อุปกรณ์จาก 2009)
ทำไมสิ่งนี้จึงสำคัญ: SBC 328k และ 485k vs aptX
ขัดแย้งกับความเชื่อที่นิยมเกี่ยวกับคุณภาพเสียง aptX ในบางกรณีมันสามารถสร้างคุณภาพเสียงที่แย่กว่า SBC ด้วย bitrate มาตรฐาน 328k
SBC จัดสรร quantization bits สำหรับ frequency bands แบบ dynamic ทำงานบน basis "bottom-to-top" หาก bitrate ทั้งหมดถูกใช้สำหรับ lower และ middle frequencies upper frequencies จะถูก "ตัดทิ้ง" (เงียบ)
aptX quantize frequency bands ด้วยจำนวนบิตคงที่ตลอดเวลา ทำให้มันเป็น constant bitrate codec: 352 kbps สำหรับ 44.1 kHz, 384 kbps สำหรับ 48 kHz มันไม่สามารถ "โอนบิต" ไปยัง frequencies ที่ส่วนใหญ่ต้องการในพวกมัน ต่างจาก SBC aptX จะไม่ "ตัด" frequencies แต่จะเพิ่ม quantization noise ให้พวกเขา ลด dynamic range ของเสียง และบางครั้งนำเข้า crackles SBC ตรงข้าม "กินรายละเอียด" - ทิ้งพื้นที่เงียบๆ
โดยเฉลี่ย เทียบกับ SBC 328k aptX ทำ distortion น้อยกว่าในเพลงที่มี frequency range กว้าง แตบนเพลงที่มี frequency range แคบและ dynamic range กว้าง SBC 328k บางครั้งชนะ
พิจารณากรณีพิเศษ การบันทึกเสียงเปียโน นี่คือ spectrogram:

พลังงานส่วนใหญ่อยู่ที่ frequencies 0-4 kHz และยาวถึง 10 kHz
Spectrogram ของไฟล์ aptX ดูเหมือนนี้:

นี่คือ SBC 328k:

เห็นได้ว่า SBC 328k ตัดช่วงบน 16 kHz ทิ้งเป็นระยะ และใช้ bitrate ทั้งหมดสำหรับช่วงต่ำกว่าค่านี้ อย่างไรก็ตาม aptX นำ distortion มากกว่าเข้าไปใน frequency spectrum ที่ได้ยินได้โดยมนุษย์ ซึ่งมองเห็นได้บน spectrogram ที่ลบ original ออกจาก aptX spectrogram (ยิ่งสว่าง ยิ่ง distortion):

ในขณะที่ SBC 328k นำ distortion น้อยกว่าเข้าไปในสัญญาณในช่วง 0 ถึง 10 kHz และส่วนที่เหลือถูก ตัด:

Bitrate 485k สำหรับ SBC เพียงพอที่จะเก็บ frequency range ทั้งหมด โดยไม่ตัด bands

SBC 485k บนตัวอย่างเสียงนี้ดีกว่า aptX มากในช่วง 0-15 kHz และด้วยความแตกต่างเล็กน้อยแต่สังเกตได้ - ที่ 15-22 kHz (ยิ่งมืด ยิ่งน้อย distortion):

การสลับไป high-bitrate SBC คุณจะได้เสียงที่ดียิ่งกว่า aptX ส่วนใหญ่ของเวลา บนหูฟังใดๆ
- original_and_aptx.zip
- sbc.zip
วิธีปรับ Bluetooth Stacks บน Android 5 - 7
การปรับแต่งเหล่านี้ควรนำไปใช้กับ Android bluetooth stacks สต็อก Bluedroid (Android 5) และ Fluoride (Android 6-7) Qualcomm-modified stack ไม่รองรับ
แทนที่ Joint Stereo ด้วย Dual Channel ใน SBC configuration มาตรฐาน
android/platform/external/bluetooth/bluedroid/btif/co/bta_av_co.c:99
Code:
const tA2D_SBC_CIE btif_av_sbc_default_config = { BTIF_AV_SBC_DEFAULT_SAMP_FREQ, /* samp_freq */ A2D_SBC_IE_CH_MD_JOINT, /* ch_mode */ A2D_SBC_IE_BLOCKS_16, /* block_len */ A2D_SBC_IE_SUBBAND_8, /* num_subbands */ A2D_SBC_IE_ALLOC_MD_L, /* alloc_mthd */ BTA_AV_CO_SBC_MAX_BITPOOL, /* max_bitpool */ A2D_SBC_IE_MIN_BITPOOL /* min_bitpool */ };
แทนที่ A2D_SBC_IE_CH_MD_JOINT ด้วย A2D_SBC_IE_CH_MD_DUAL
เพิ่ม Dual Channel priority
android/platform/external/bluetooth/bluedroid/btif/co/bta_av_co.c:41
Code:
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; ย้าย if ที่มี A2D_SBC_IE_CH_MD_DUAL ไปด้านบน
- ปิดหรือเพิ่มข้อจำกัด bitrate
Android bluetooth stack มีไม่แค่ bitpool limit แต่ยังมี bitrate limit 328 kbit/s หากหูฟังรองรับ bitpool 53 สำหรับ 48 kHz Android จะลด bitpool ลงเพื่อให้เข้ากับ 328 kbit/s limit นี่จะเกิดขึ้น AFTER codec negotiation บน encoding stage ไม่ได้นับค่า bitpool ใน Bluetooth SetCapabilities packet
android/platform/external/bluetooth/bluedroid/btif/src/btif_media_task.c:172
Code:
#define DEFAULT_SBC_BITRATE 328
แทนที่ด้วย 512
- (สำหรับทดลองเท่านั้น) ปิด MTU limit
นี่จำเป็นสำหรับ bitrates สูงกว่า ~580 kbit/s
btif/src/btif_media_task.c:174
Code:
/* 2DH5 payload size of 679 bytes - (4 bytes L2CAP Header + 12 bytes AVDTP Header) */ #define MAX_2MBPS_AVDTP_MTU 663
วิธีปรับ Bluetooth Stacks บน Android 8 - 9
การปรับแต่งเหล่านี้ยังไม่ได้ทดสอบ แต่ควรทำงานได้
เพิ่ม Dual Channel support เข้า A2DP SBC Source
/platform/system/bt/stack/a2dp/a2dp_sbc.cc:55
Code:
/* SBC SRC codec capabilities */ static const tA2DP_SBC_CIE a2dp_sbc_caps = { A2DP_SBC_IE_SAMP_FREQ_44, /* samp_freq */ (A2DP_SBC_IE_CH_MD_MONO | A2DP_SBC_IE_CH_MD_JOINT), /* ch_mode */ (A2DP_SBC_IE_BLOCKS_16 | A2DP_SBC_IE_BLOCKS_12 | A2DP_SBC_IE_BLOCKS_8 | A2DP_SBC_IE_BLOCKS_4), /* block_len */ A2DP_SBC_IE_SUBBAND_8, /* num_subbands */ A2DP_SBC_IE_ALLOC_MD_L, /* alloc_method */ A2DP_SBC_IE_MIN_BITPOOL, /* min_bitpool */ A2DP_SBC_MAX_BITPOOL, /* max_bitpool */ BTAV_A2DP_CODEC_BITS_PER_SAMPLE_16 /* bits_per_sample */ };
เพิ่ม A2DP_SBC_IE_CH_MD_DUAL ใน ch_mode
แทนที่ Joint Stereo ด้วย Dual Channel ใน default config
/platform/system/bt/stack/a2dp/a2dp_sbc.cc:82
Code:
/* Default SBC codec configuration */ const tA2DP_SBC_CIE a2dp_sbc_default_config = { A2DP_SBC_IE_SAMP_FREQ_44, /* samp_freq */ A2DP_SBC_IE_CH_MD_JOINT, /* ch_mode */ A2DP_SBC_IE_BLOCKS_16, /* block_len */ A2DP_SBC_IE_SUBBAND_8, /* num_subbands */ A2DP_SBC_IE_ALLOC_MD_L, /* alloc_method */ A2DP_SBC_IE_MIN_BITPOOL, /* min_bitpool */ A2DP_SBC_MAX_BITPOOL, /* max_bitpool */ BTAV_A2DP_CODEC_BITS_PER_SAMPLE_16 /* bits_per_sample */ };
แทนที่ A2DP_SBC_IE_CH_MD_JOINT ด้วย A2DP_SBC_IE_CH_MD_DUAL
เพิ่ม Dual Channel priority
/platform/system/bt/stack/a2dp/a2dp_sbc.cc:1155
Code:
static bool select_best_channel_mode(uint8_t ch_mode, tA2DP_SBC_CIE* p_result, btav_a2dp_codec_config_t* p_codec_config) { if (ch_mode & A2DP_SBC_IE_CH_MD_JOINT) { p_result->ch_mode = A2DP_SBC_IE_CH_MD_JOINT; p_codec_config->channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; return true; } if (ch_mode & A2DP_SBC_IE_CH_MD_STEREO) { p_result->ch_mode = A2DP_SBC_IE_CH_MD_STEREO; p_codec_config->channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; return true; } if (ch_mode & A2DP_SBC_IE_CH_MD_DUAL) { p_result->ch_mode = A2DP_SBC_IE_CH_MD_DUAL; p_codec_config->channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_STEREO; return true; } if (ch_mode & A2DP_SBC_IE_CH_MD_MONO) { p_result->ch_mode = A2DP_SBC_IE_CH_MD_MONO; p_codec_config->channel_mode = BTAV_A2DP_CODEC_CHANNEL_MODE_MONO; return true; } return false; }
ย้าย if ที่มี A2DP_SBC_IE_CH_MD_DUAL ไปด้านบน
เพิ่ม bitrate limit
/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:42
Code:
#define A2DP_SBC_DEFAULT_BITRATE 328
แทนที่ด้วย 512
- (สำหรับทดลองเท่านั้น) ปิด MTU limit
นี่จำเป็นสำหรับ bitrates สูงกว่า ~580 kbit/s
/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:47
Code:
#define MAX_2MBPS_AVDTP_MTU 663