चेतावनी:यह एक अत्यधिक उन्नत मार्गदर्शिका है जिसमें Android पर आपके ब्लूटूथ स्टैक को संशोधित करना शामिल है - इस मार्गदर्शिका को पूरी तरह से पढ़ें और दिए गए निर्देशों का बिल्कुल पालन करें।
इस तथ्य के बावजूद कि ब्लूटूथ हेडसेट और ब्लूटूथ ऑडियो काफी लोकप्रिय हो गए हैं, यह ऑडियोफाइल्स के लिए एक समस्या है क्योंकि ब्लूटूथ ऑडियो गुणवत्ता को कम करने के लिए सिद्ध हुआ है, क्योंकि ब्लूटूथ स्ट्रीमिंग पर ऑडियो जानकारी और आवृत्तियों के टुकड़े हवा में खो जाते हैं।पी>
यही कारण है कि कुछ निर्माता मानक SBC ब्लूटूथ कोडेक पर ध्वनि की गुणवत्ता बढ़ाने के लिए aptX और LDAC कोडेक लगा रहे हैं, जो सभी हेडफ़ोन और अधिकांश ब्लूटूथ डिवाइस द्वारा समर्थित है - हालाँकि, aptX और LDAC कोडेक वाले डिवाइस बहुत अधिक महंगे हैं क्योंकि ये कोडेक हैं। लाइसेंस शुल्क की आवश्यकता होती है, जिसका भुगतान उपभोक्ता लंबे समय में करता है।
SBC ब्लूटूथ कोडेक की निम्न ऑडियो गुणवत्ता सभी मौजूदा ब्लूटूथ स्टैक और हेडफ़ोन के कॉन्फ़िगरेशन की कृत्रिम सीमाओं के कारण होती है, और इस सीमा को किसी भी मौजूदा डिवाइस पर दरकिनार किया जा सकता है।
यदि आप ब्लूटूथ ऑडियो में रुचि रखते हैं, तो हम आपको इस गाइड के अंत में दिखाएंगे कि ब्लूटूथ ऑडियो लॉग डंप कैसे लें और यह देखने के लिए कि आप अपने एंड्रॉइड के ब्लूटूथ रिसीवर से किस प्रकार की ऑडियो गुणवत्ता और आवृत्ति प्राप्त कर रहे हैं।
इस गाइड का अधिकांश हिस्सा मानक एसबीसी ब्लूटूथ कोडेक की आउटपुट गुणवत्ता को बढ़ाने के लिए आपके ब्लूटूथ ऑडियो आउटपुट को पढ़ने के कुछ सरल बदलावों और तरीकों पर ध्यान केंद्रित करेगा - कृपया इस पूरी गाइड को ध्यान से पढ़ें क्योंकि यह काफी शैक्षिक है और इसमें बहुत सी अलग चीजें हैं आपके डिवाइस मॉडल के आधार पर फ्लैश या ट्वीक करने के लिए।
इस गाइड के अंत में बहुत सारे लोकप्रिय एंड्रॉइड डिवाइसों के लिए प्री-पैच किए गए ब्लूटूथ स्टैक की एक सूची है - इन्हें रिकवरी में फ्लैश किया जा सकता है जैसा कि आप किसी भी अन्य फ्लैश करने योग्य .zip करेंगे - यदि कोई भी डिवाइस आपका नहीं है, तो आपके पास होगा Android पर ब्लूटूथ स्टैक को संशोधित करने के लिए मार्गदर्शिका का पालन करने के लिए।
SBC कोडेक के बारे में संक्षिप्त तकनीकी जानकारी
SBC में कई अलग-अलग पैरामीटर हैं जिन पर कनेक्शन सेटअप चरण के दौरान बातचीत की जाती है:
- ऑडियो चैनल का प्रकार और नंबर:ज्वाइंट स्टीरियो, स्टीरियो, डुअल चैनल, मोनो;
- फ़्रीक्वेंसी बैंड की संख्या:4 या 8;
- एक पैकेट में ऑडियो ब्लॉक की संख्या:4, 8, 12, 16;
- क्वांटिज़ेशन बिट आवंटन एल्गोरिथम:लाउडनेस, एसएनआर;
- परिमाणीकरण प्रक्रिया में उपयोग किया जाने वाला अधिकतम और न्यूनतम बिट पूल:आमतौर पर 2-53।
इन मापदंडों के किसी भी संयोजन का समर्थन करने के लिए डिकोडर की आवश्यकता होती है। एनकोडर उनमें से केवल एक भाग को ही क्रियान्वित कर सकता है।
मौजूदा ब्लूटूथ स्टैक आमतौर पर निम्नलिखित प्रोफाइल पर बातचीत करते हैं:संयुक्त स्टीरियो, 8 बैंड, 16 ब्लॉक, लाउडनेस, बिटपूल 2..53। यह प्रोफ़ाइल 44.1 kHz ऑडियो को 328 kbps की बिटरेट के साथ एन्कोड करती है।
बिटपूल पैरामीटर सीधे उसी प्रोफ़ाइल में बिटरेट को प्रभावित करता है:यह जितना अधिक होगा, बिटरेट उतना ही अधिक होगा, और इसलिए गुणवत्ता।
हालाँकि, बिटपूल पैरामीटर किसी विशिष्ट प्रोफ़ाइल के लिए बाध्य नहीं है। बिटरेट अन्य मापदंडों से भी काफी प्रभावित होता है:ऑडियो चैनल प्रकार, आवृत्ति बैंड की संख्या, ऑडियो ब्लॉक की संख्या। आप गैर-मानक प्रोफ़ाइल पर बातचीत करके, बिटपूल को बदले बिना अप्रत्यक्ष रूप से बिटरेट बढ़ा सकते हैं।
उदाहरण के लिए, ड्यूल चैनल प्रत्येक चैनल के लिए संपूर्ण बिटपूल का उपयोग करते हुए, चैनलों को अलग से एन्कोड करता है। डिवाइस को जॉइंट स्टीरियो के बजाय डुअल चैनल का उपयोग करने के लिए मजबूर करने से हमें उसी अधिकतम बिटपूल, 617 केबीपीएस पर लगभग दोगुना बिटरेट मिलेगा।
मेरे लिए ऐसा लगता है कि बिटपूल एक आंतरिक चर होना चाहिए। यह A2DP विनिर्देश डिज़ाइन दोष है कि बिटपूल मान अन्य कोडेक मापदंडों के लिए बाध्य नहीं है और केवल एक वैश्विक मान के रूप में परिभाषित है।
ये निश्चित बिटपूल और बिटरेट मान उच्च-गुणवत्ता वाले ऑडियो के लिए अनुशंसित मानों से उत्पन्न होते हैं। लेकिन सिफारिश प्रोफाइल को इन मूल्यों तक सीमित रखने का बहाना नहीं है।
A2DP विनिर्देश v1.2, जो 2007 से 2015 तक सक्रिय था, सभी डिकोडर को 512 kbps तक के बिटरेट के साथ सही ढंग से काम करने की आवश्यकता है:
एसएनके का डिकोडर सभी संभावित बिटपूल मूल्यों का समर्थन करेगा, जिसके परिणामस्वरूप अधिकतम बिट दर से अधिक नहीं होता है। यह प्रोफ़ाइल मोनो के लिए उपलब्ध अधिकतम बिट दर को 320kb/s और दो-चैनल मोड के लिए 512kb/s तक सीमित करती है।
विनिर्देश के नए संस्करण में कोई बिटरेट सीमा नहीं है। यह माना जाता है कि 2015 के बाद जारी किए गए आधुनिक हेडफ़ोन 1000 kbps तक . बिटरेट का समर्थन कर सकते हैं ।
किसी कारण से, सभी वर्तमान में परीक्षण किए गए ब्लूटूथ स्टैक (लिनक्स (पल्सऑडियो), एंड्रॉइड, ब्लैकबेरी और मैकओएस) में अधिकतम बिटपूल पैरामीटर के कृत्रिम प्रतिबंध हैं, जो सीधे अधिकतम बिटरेट को प्रभावित करता है। लेकिन यह सबसे बड़ी समस्या नहीं है, लगभग सभी हेडफ़ोन अधिकतम बिटपूल मान को 53 तक सीमित कर देते हैं।
अधिकांश डिवाइस बिना किसी रुकावट और क्रैकिंग के 507 kbps की बिटरेट के साथ संशोधित ब्लूटूथ स्टैक पर ठीक काम करते हैं। लेकिन स्टॉक ब्लूटूथ स्टैक के साथ सामान्य परिस्थितियों में इस तरह की बिटरेट पर कभी बातचीत नहीं की जाएगी।
*** नीचे दी गई मार्गदर्शिकाओं का उपयोग करके परीक्षण के लिए आवश्यक: ब्लूटूथ-डुअलचैनल-टेस्ट-ubuntu-18.04.1-desktop-amd64.iso.torrent
पीसी पर परीक्षण कैसे करें
उच्च बिटरेट SBC हैडफ़ोन संगतता परीक्षण एक ब्लूटूथ अडैप्टर के साथ पीसी पर प्रदर्शन करने के लिए सबसे आसान है। मैंने एक संशोधित ब्लूटूथ स्टैक के साथ उबंटू छवि तैयार की है, जिसे वर्चुअल मशीन के रूप में चलाया जा सकता है (वर्चुअल मशीन के अंदर एक यूएसबी डिवाइस के रूप में ब्लूटूथ एडेप्टर को जोड़कर, यह लैपटॉप में निर्मित एडेप्टर के साथ भी काम करता है) या से बूट करके यूएसबी फ्लैश ड्राइव। यह छवि निम्न प्रोफ़ाइल का उपयोग करती है:डुअल चैनल, 8 बैंड, 16 ब्लॉक, लाउडनेस, बिटपूल 2..41, 44.1 kHz, जो 485 kbps बिटरेट प्रदान करता है।
VM में चल रहा है
- वर्चुअलबॉक्स और वर्चुअलबॉक्स एक्सटेंशन पैक डाउनलोड करें:https://www.virtualbox.org/wiki/Downloads;
- वर्चुअलबॉक्स स्थापित करें, इसे प्रारंभ करें;
- फ़ाइल → वरीयताएँ → एक्सटेंशन का उपयोग करके एक्सटेंशन पैक स्थापित करें;
- नई वर्चुअल मशीन बनाएं:लिनक्स, उबंटू (64-बिट), 1024 रैम। एचडीडी न बनाएं।
- वर्चुअल मशीन सेटिंग्स पर नेविगेट करें, स्टोरेज में कंट्रोलर चुनें:आईडीई, खाली, सीडी आइकन दबाएं → वर्चुअल ऑप्टिकल डिस्क फ़ाइल चुनें;
- डाउनलोड किया गया ब्लूटूथ-डुअलचैनल-टेस्ट-उबंटू-18.04.1-डेस्कटॉप-amd64.iso चुनें;
- सेटिंग विंडो सहेजें और बंद करें, वर्चुअल मशीन प्रारंभ करें;
- नीचे दाईं ओर USB केबल आइकन पर राइट-क्लिक करें, अपना ब्लूटूथ एडाप्टर चुनें;
पीसी पर चल रहा है
छवि BIOS/CSM और UEFI बूटिंग का समर्थन करती है।
- Etcher का उपयोग करके छवि को USB फ्लैश ड्राइव में जलाएं:https://www.balena.io/etcher/। यह कार्रवाई USB ड्राइव की सभी मौजूदा फ़ाइलों को हटा देगी।
- पीसी बंद करें;
- USB फ्लैश ड्राइव डालें, पीसी चालू करें और बूट ऑर्डर बटन दबाएं (आमतौर पर Esc या F12);
- अपना यूएसबी फ्लैश ड्राइव चुनें।
परीक्षण करना
- (वैकल्पिक लेकिन अनुशंसित) डेस्कटॉप पर "Btsnoop Dump" स्क्रिप्ट पर डबल क्लिक करें। यह बाद के विश्लेषण के लिए ब्लूटूथ डेटा कैप्चर करना शुरू कर देगा। टर्मिनल विंडो बंद न करें।
- हेडफ़ोन को पेयरिंग मोड में बदलें;
- ऊपरी दाएं कोने में तीर पर क्लिक करें, ब्लूटूथ आइकन → ब्लूटूथ सेटिंग्स चुनें;
- अपना हेडफ़ोन चुनें, पेयरिंग पूर्ण होने तक प्रतीक्षा करें और विंडो बंद करें;
- उबंटू वॉल्यूम को लगभग 2/3 पर सेट करें। हेडसेट बटन का उपयोग करके भी वॉल्यूम कम करें क्योंकि युग्मित करने के बाद यह बहुत तेज़ हो सकता है।
- "संगीत" फ़ोल्डर खोलें, "testrecord1.flac" चलाएं;
- (वैकल्पिक लेकिन अनुशंसित) प्लेयर बंद करें, टर्मिनल विंडो बंद करें। यह डेटा कैप्चर करना बंद कर देगा।
- (वैकल्पिक लेकिन अनुशंसित) फ़ायरफ़ॉक्स ब्राउज़र खोलें, डेटा डंप (डेस्कटॉप पर btsnoop_hci.btsnoop) को https://btcodecs.valdikss.org.ru/ पर अपलोड करें।
आप संगीत फ़ोल्डर में अन्य संगीत सुन सकते हैं, या अपना स्वयं का संगीत अपलोड कर सकते हैं;
हेडफ़ोन में कोई क्रैकलिंग, ऑडियो रुकावट या अन्य ध्वनि विकृति नहीं होनी चाहिए। अगर आपको अच्छी उच्च-गुणवत्ता वाली ध्वनि सुनाई देती है, तो इसका मतलब है कि आपका हेडफ़ोन 485 kbps की बिट दर के साथ ऑडियो का समर्थन करता है।
Android डिवाइस पर परीक्षण कैसे करें
एंड्रॉइड स्मार्टफोन या टैबलेट से परीक्षण करने के लिए आपको संशोधित ब्लूटूथ स्टैक का उपयोग करना होगा, जिसके लिए रूट विशेषाधिकार की आवश्यकता होती है।
Android पर ब्लूटूथ डेटा डंप कैसे कैप्चर करें
- ब्लूटूथ बंद करें;
- डेवलपर सेटिंग में, "ब्लूटूथ एचसीआई स्नूप लॉग सक्षम करें" स्विच सक्षम करें;
- ब्लूटूथ चालू करें, ब्लूटूथ मेनू का उपयोग करके अपने हेडसेट से कनेक्ट करें (यह महत्वपूर्ण है! ऑटो कनेक्शन की अनुमति न दें!);
- लघु ऑडियो नमूना चलाएं;
- डेवलपर सेटिंग खोलें, "ब्लूटूथ एचसीआई स्नूप लॉग सक्षम करें" स्विच को अक्षम करें;
- /storage/emulated/0/btsnoop_hci.log या /data/misc/bluetooth/logs/btsnoop_hci.log बनाया जाना चाहिए। यदि यह गायब है, तो /etc/bluetooth/bt_stack.conf को टेक्स्ट एडिटर से खोलें और BtSnoopFileName विकल्प में पथ देखें।
हेडफ़ोन में कोई क्रैकलिंग, ऑडियो रुकावट या अन्य ध्वनि विकृति नहीं होनी चाहिए। यदि आप पैच की गई लाइब्रेरी के साथ अच्छी उच्च-गुणवत्ता वाली ध्वनि सुनते हैं, तो इसका अर्थ है कि आपका हेडफ़ोन 512 kbps की बिट दर के साथ ऑडियो का समर्थन करता है।
कृपया उपरोक्त एल्गोरिथम का ध्यानपूर्वक पालन करें। विशेष रूप से, यदि आप हेडफ़ोन को बंद कर देते हैं या युग्मित करने के बाद डिस्कनेक्ट कर देते हैं, तो ब्लूटूथ सेटिंग से हेडफ़ोन को मैन्युअल रूप से कनेक्ट करना महत्वपूर्ण है, ऑटो कनेक्शन की अनुमति न दें!
वे उपकरण जो कम से कम 512 kbit/s SBC का समर्थन करते हैं
- 1अधिक iBमुफ़्त
- जेबीएल एवरेस्ट 310
- जेबीएल एवरेस्ट 700
- स्कलकैंडी एचईएसएच 3
- सोनी WI-C400
- सोनी एमडीआर-1एबीटी
- सोनी MDR-ZX770BT
- सोनी MDR-XB650BT
- सोनी MDR-XB950B1
- सोनी SBH50
- Bluedio T4s (बिटपूल अधिकतम 39. ड्यूल चैनल का समर्थन नहीं करने के लिए प्रतिक्रिया दें, लेकिन जबरन काम करें, 462 kbit/s। A2DP विनिर्देश के अनुरूप नहीं है।)
- Bluedio T5 (दोहरी चैनल का समर्थन नहीं करने का जवाब दें, लेकिन जबरन काम करें। A2DP विनिर्देश के अनुरूप नहीं है।)
- Bluedio T6 (दोहरी चैनल का समर्थन नहीं करने के लिए प्रतिक्रिया दें, लेकिन मजबूर होने पर काम करें। A2DP विनिर्देश के अनुरूप नहीं है। अधिकतम 97220 चिप को अपनाएं।)
- मार्शल मेजर II ब्लूटूथ
- RealForce D1 को ओवरड्राइव करें
- एडिफ़ायर W830BT
- DEXP BT-250
- लॉजिटेक बीटी एडाप्टर
- बिना नाम वाली ऑटोमोटिव हेड यूनिट (CSR8645 चिप)
- Sony DSX-A400BT ऑटोमोटिव हेड यूनिट
वे उपकरण जो 512 kbit/s से अधिक SBC का समर्थन करते हैं
- जेबीएल एवरेस्ट 310 (617-660 kbit/s)
- सोनी WI-C400 (576 kbit/s)
- Sony MDR-ZX770BT (617-660 kbit/s)
- मार्शल मेजर II ब्लूटूथ (617-660 kbit/s)
- RealForce D1 (730 kbit/s, डुअल चैनल, 4 सबबैंड) को ओवरड्राइव करें
वे उपकरण जो उच्च बिटरेट या दोहरे चैनल के साथ काम नहीं करते हैं
- हार्पर एचबी-202 (क्रैकिंग्स; बीकेन बीके3256 चिप)
- Sony Ericsson MW600 (उच्च आवृत्ति विरूपण, क्रैकलिंग; 2009 से उपकरण)
यह क्यों महत्वपूर्ण है:SBC 328k और 485k बनाम aptX
aptX ध्वनि गुणवत्ता की लोकप्रिय धारणा के विपरीत, कुछ मामलों में यह मानक 328k बिटरेट के साथ SBC से भी बदतर ऑडियो गुणवत्ता उत्पन्न कर सकता है।
SBC गतिशील रूप से आवृत्ति बैंड के लिए परिमाणीकरण बिट्स आवंटित करता है, जो "नीचे से ऊपर" के आधार पर कार्य करता है। यदि संपूर्ण बिटरेट का उपयोग निम्न और मध्यम आवृत्तियों के लिए किया गया था, तो ऊपरी आवृत्तियों को "कट ऑफ" (चुप) कर दिया जाता है।
aptX लगातार बिट्स की समान संख्या के साथ फ़्रीक्वेंसी बैंड को परिमाणित करता है, जो इसे एक निरंतर बिटरेट कोडेक बनाता है:44.1 kHz के लिए 352 kbps, 48 kHz के लिए 384 kbps। यह उन आवृत्तियों के लिए "बिट्स ट्रांसफर" नहीं कर सकता है जिनकी उनमें अधिकतर आवश्यकता होती है। एसबीसी के विपरीत, aptX आवृत्तियों को "कट" नहीं करेगा, लेकिन उनमें परिमाणीकरण शोर जोड़ देगा, ऑडियो की गतिशील रेंज को कम करेगा, और कभी-कभी क्रैकल्स को पेश करेगा। SBC, इसके विपरीत, "विवरण खाता है" - सबसे शांत क्षेत्रों को छोड़ देता है।
औसतन, SBC 328k की तुलना में, aptX व्यापक फ़्रीक्वेंसी रेंज वाले संगीत में कम विरूपण करता है, लेकिन संकीर्ण फ़्रीक्वेंसी रेंज और विस्तृत डायनेमिक रेंज वाले संगीत पर SBC 328k कभी-कभी जीत जाता है।
आइए हम एक विशेष मामले पर विचार करें, एक पियानो रिकॉर्डिंग। यहाँ एक स्पेक्ट्रोग्राम है:
अधिकतम ऊर्जा 0-4 kHz आवृत्तियों में निहित है, और 10 kHz तक चलती है।
फ़ाइल aptX फ़ाइल का स्पेक्ट्रोग्राम इस तरह दिखता है:
ये रहा एसबीसी 328k:
यह देखा जा सकता है कि SBC 328k समय-समय पर 16 kHz से ऊपर की सीमा को पूरी तरह से काट देता है, और इस मान से नीचे की श्रेणियों के लिए सभी उपलब्ध बिटरेट का उपयोग करता है। हालांकि, एपीटीएक्स ने मानव कान द्वारा श्रव्य आवृत्ति स्पेक्ट्रम में अधिक विकृतियां पेश कीं, जिसे एपीटीएक्स स्पेक्ट्रोग्राम (उज्ज्वल, अधिक विकृति) से घटाए गए मूल स्पेक्ट्रोग्राम पर देखा जा सकता है:
जबकि SBC 328k ने 0 से 10 kHz की सीमा में सिग्नल को कम विरूपण पेश किया है, और बाकी को काट दिया गया है:
SBC के लिए बिटरेट 485k, बैंड को काटे बिना, पूरी फ़्रीक्वेंसी रेंज को बचाने के लिए पर्याप्त था।
इस ऑडियो नमूने पर SBC 485k, 0-15 kHz की रेंज में aptX से बहुत बेहतर है, और एक छोटे लेकिन फिर भी ध्यान देने योग्य अंतर के साथ - 15-22 kHz (गहरा, कम विरूपण) पर:
उच्च-बिटरेट SBC पर स्विच करने पर, आपको अधिकांश समय किसी भी हेडफ़ोन पर aptX से बेहतर ध्वनि मिलेगी।
- मूल_और_aptx.zip
- sbc.zip
Android 5 - 7 पर ब्लूटूथ स्टैक को कैसे संशोधित करें
इन संशोधनों को स्टॉक एंड्रॉइड ब्लूटूथ स्टैक ब्ल्यूड्रॉइड (एंड्रॉइड 5) और फ्लोराइड (एंड्रॉइड 6-7) पर लागू किया जाना चाहिए। क्वालकॉम-संशोधित स्टैक समर्थित नहीं है।
संयुक्त स्टीरियो को मानक SBC कॉन्फ़िगरेशन में दोहरे चैनल से बदलें
android/प्लेटफ़ॉर्म/बाहरी/ब्लूटूथ/bluedroid/btif/co/bta_av_co.c:99
कोड:
स्थिरांक 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 से बदलें।
दोहरे चैनल की प्राथमिकता बढ़ाएं
android/प्लेटफ़ॉर्म/बाहरी/ब्लूटूथ/ब्लूड्रॉइड/btif/co/bta_av_co.c:41
कोड:
अगर (src_cap.ch_mode और A2D_SBC_IE_CH_MD_JOINT) pref_cap.ch_mode =A2D_SBC_IE_CH_MD_JOINT; और अगर (src_cap.ch_mode और A2D_SBC_IE_CH_MD_STEREO) pref_cap.ch_mode =A2D_SBC_IE_CH_MD_STEREO; और अगर (src_cap.ch_mode और A2D_SBC_IE_CH_MD_DUAL) pref_cap.ch_mode =A2D_SBC_IE_CH_MD_DUAL; और अगर (src_cap.ch_mode और A2D_SBC_IE_CH_MD_MONO) pref_cap.ch_mode =A2D_SBC_IE_CH_MD_MONO;अगर A2D_SBC_IE_CH_MD_DUAL के साथ शीर्ष पर ले जाएं।
- बिटरेट प्रतिबंध को अक्षम या बढ़ाएँ
एंड्रॉइड ब्लूटूथ स्टैक में न केवल बिटपूल सीमा है, बल्कि बिटरेट सीमा, 328 kbit/s भी है। यदि हेडफ़ोन समर्थन करते हैं, उदाहरण के लिए, 48 kHz के लिए बिटपूल 53, एंड्रॉइड बिटपूल को घटाकर 328 kbit/s की सीमा में फिट कर देगा। यह कोडेक बातचीत के बाद होगा, एन्कोडिंग चरण पर, ब्लूटूथ सेटकैपेबिलिटी पैकेट में बिटपूल मान को ध्यान में न रखें।
android/प्लेटफ़ॉर्म/बाहरी/ब्लूटूथ/ब्लूड्रॉइड/btif/src/btif_media_task.c:172
कोड:
#परिभाषित करें DEFAULT_SBC_BITRATE 328
512 से बदलें।
- (केवल प्रयोगों के लिए) एमटीयू सीमा अक्षम करें।
~580 kbit/s से अधिक बिटरेट के लिए यह आवश्यक है।
btif/src/btif_media_task.c:174
कोड:
/* 2DH5 पेलोड आकार 679 बाइट्स - (4 बाइट्स L2CAP हैडर + 12 बाइट्स AVDTP हैडर) */# MAX_2MBPS_AVDTP_MTU परिभाषित करें 663
Android 8 - 9 पर ब्लूटूथ स्टैक को कैसे संशोधित करें
इन संशोधनों का परीक्षण नहीं किया गया है, लेकिन काम करना चाहिए।
A2DP SBC स्रोत में दोहरे चैनल समर्थन जोड़ें
/प्लेटफ़ॉर्म/सिस्टम/बीटी/स्टैक/a2dp/a2dp_sbc.cc:55
कोड:
/ * SBC एसआरसी कोडेक क्षमताओं * / स्थिर स्थिरांक 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 में जोड़ें।
डिफ़ॉल्ट कॉन्फ़िगरेशन में संयुक्त स्टीरियो को दोहरे चैनल से बदलें
/प्लेटफ़ॉर्म/सिस्टम/बीटी/स्टैक/a2dp/a2dp_sbc.cc:82
कोड:
/ * डिफ़ॉल्ट SBC कोडेक विन्यास * / स्थिरांक 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_BITS_PER_SpleA2DP_SBC_IE_CH_MD_JOINT को A2DP_SBC_IE_CH_MD_DUAL से बदलें।
दोहरे चैनल की प्राथमिकता बढ़ाएं
/प्लेटफ़ॉर्म/सिस्टम/बीटी/स्टैक/a2dp/a2dp_sbc.cc:1155
कोड:
स्टेटिक बूल SELELET_BEST_CHANNEL_MODE (UINT8_T CH_MODE, TA2DP_SBC_CIE * P_RESULT, BTAV_A2DP_CODEC_CONFIG_A2DP_COCOMFIG) {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; सच लौटना; } अगर (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; सच लौटना; } अगर (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; सच लौटना; } अगर (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; सच लौटना; } झूठी वापसी;}अगर A2DP_SBC_IE_CH_MD_DUAL के साथ शीर्ष पर ले जाएं।
बिटरेट सीमा बढ़ाएं
/प्लेटफ़ॉर्म/सिस्टम/बीटी/स्टैक/a2dp/a2dp_sbc_encoder.cc:42
कोड:
#define A2DP_SBC_DEFAULT_BITRATE 328512 से बदलें।
- (केवल प्रयोगों के लिए) MTU सीमा अक्षम करें
~580 kbit/s से अधिक बिटरेट के लिए यह आवश्यक है।
/प्लेटफ़ॉर्म/सिस्टम/बीटी/स्टैक/a2dp/a2dp_sbc_encoder.cc:47
कोड:
#define MAX_2MBPS_AVDTP_MTU 663