Computer >> कंप्यूटर ट्यूटोरियल >  >> समस्या निवारण >> Android

बेहतर ब्लूटूथ ऑडियो गुणवत्ता के लिए Android पर ब्लूटूथ स्टैक्स कैसे संशोधित करें

चेतावनी: यह एक अत्यधिक उन्नत गाइड है जिसमें Android पर आपके ब्लूटूथ स्टैक्स को संशोधित करना शामिल है - इस गाइड को पूरी तरह से पढ़ें और सभी निर्देशों का ठीक से पालन करें।

इस तथ्य के बावजूद कि ब्लूटूथ हेडसेट और ब्लूटूथ ऑडियो काफी लोकप्रिय हो गए हैं, यह ऑडियोफाइल्स के लिए थोड़ा मुद्दा है क्योंकि ब्लूटूथ को ऑडियो गुणवत्ता कम करने के लिए सिद्ध किया गया है, क्योंकि ऑडियो जानकारी और आवृत्तियों के बिट्स ब्लूटूथ स्ट्रीमिंग पर हवा में खो जाते हैं।

यही कारण है कि कुछ निर्माता aptX और LDAC कोडेक्स डाल रहे हैं, मानक SBC ब्लूटूथ कोडेक पर ध्वनि गुणवत्ता बढ़ाने के लिए जो सभी हेडफोन और अधिकांश ब्लूटूथ डिवाइस द्वारा समर्थित है - हालांकि, aptX और LDAC कोडेक्स वाले डिवाइस बहुत अधिक महंगे हैं क्योंकि इन कोडेक्स को लाइसेंस शुल्क की आवश्यकता होती है, जिसका भुगतान उपभोक्ता लंबे समय में करता है।

SBC ब्लूटूथ कोडेक की कम ऑडियो गुणवत्ता सभी वर्तमान ब्लूटूथ स्टैक्स और हेडफोन के कॉन्फ़िगरेशन की कृत्रिम सीमाओं के कारण होती है, और इस सीमा को किसी भी मौजूदा डिवाइस पर बायपास किया जा सकता है।

यदि आप ब्लूटूथ ऑडियो में रुचि रखते हैं, तो हम आपको इस गाइड के अंत में दिखाएंगे कि ब्लूटूथ ऑडियो लॉग डंप कैसे लें और इसका निरीक्षण करें कि आपके Android के ब्लूटूथ रिसीवर से आपको किस तरह की ऑडियो गुणवत्ता और आवृत्ति मिल रही है।

इस गाइड का अधिकांश भाग कुछ सरल ट्विक्स और आपके ब्लूटूथ ऑडियो आउटपुट को पढ़ने के तरीकों पर केंद्रित होगा ताकि मानक SBC ब्लूटूथ कोडेक्स के आउटपुट गुणवत्ता को काफी बढ़ाया जा सके - कृपया इस पूरे गाइड को ध्यान से पढ़ें क्योंकि यह काफी शैक्षिक है और आपके डिवाइस मॉडल के आधार पर फ्लैश या ट्विक करने के लिए बहुत सी अलग-अलग चीजें हैं।

इस गाइड के अंत में बहुत सारे लोकप्रिय Android डिवाइस के लिए प्री-पैच्ड ब्लूटूथ स्टैक्स की एक सूची है - इन्हें रिकवरी में किसी अन्य फ्लैशेबल .zip की तरह फ्लैश किया जा सकता है - यदि कोई भी डिवाइस आपका नहीं है, तो आपको Android पर ब्लूटूथ स्टैक्स को संशोधित करने के लिए गाइड का पालन करना होगा।

SBC कोडेक के बारे में संक्षिप्त तकनीकी जानकारी

SBC के बहुत सारे अलग-अलग पैरामीटर हैं जो कनेक्शन सेटअप चरण के दौरान बातचीत की जाती हैं:

  • ऑडियो चैनल प्रकार और संख्या: जॉइंट स्टीरियो, स्टीरियो, डुअल चैनल, मोनो;
  • आवृत्ति बैंड की संख्या: 4 या 8;
  • एक पैकेट में ऑडियो ब्लॉक की संख्या: 4, 8, 12, 16;
  • क्वांटाइजेशन बिट एलोकेशन एल्गोरिथम: लाउडनेस, SNR;
  • क्वांटाइजेशन प्रक्रिया में उपयोग किए जाने वाले अधिकतम और न्यूनतम बिट पूल: आमतौर पर 2-53।

डिकोडर को इन पैरामीटर्स के किसी भी संयोजन का समर्थन करना आवश्यक है। एन्कोडर उनमें से केवल एक भाग को लागू कर सकता है।

मौजूदा ब्लूटूथ स्टैक्स आमतौर पर निम्नलिखित प्रोफाइल पर बातचीत करते हैं: जॉइंट स्टीरियो, 8 बैंड, 16 ब्लॉक, लाउडनेस, बिटपूल 2..53। यह प्रोफाइल 328 kbps के बिटरेट के साथ 44.1 kHz ऑडियो को एन्कोड करता है।

बिटपूल पैरामीटर सीधे उसी प्रोफाइल के भीतर बिटरेट को प्रभावित करता है: यह जितना अधिक होगा, बिटरेट उतना ही अधिक होगा, और इसलिए गुणवत्ता।

हालांकि, बिटपूल पैरामीटर एक विशिष्ट प्रोफाइल से बंधा नहीं है। बिटरेट अन्य पैरामीटर्स द्वारा भी महत्वपूर्ण रूप से प्रभावित होता है: ऑडियो चैनल प्रकार, आवृत्ति बैंड की संख्या, ऑडियो ब्लॉक की संख्या। आप बिटपूल को बदले बिना गैर-मानक प्रोफाइल पर बातचीत करके बिटरेट को अप्रत्यक्ष रूप से बढ़ा सकते हैं।

उदाहरण के लिए, डुअल चैनल चैनलों को अलग-अलग एन्कोड करता है, प्रत्येक चैनल के लिए पूरे बिटपूल का उपयोग करता है। डिवाइस को जॉइंट स्टीरियो के बजाय डुअल चैनल का उपयोग करने के लिए मजबूर करने से हमें समान अधिकतम बिटपूल पर लगभग दोगुना बिटरेट मिलेगा, 617 kbps।

मुझे लगता है कि बिटपूल एक आंतरिक चर होना चाहिए। यह A2DP विनिर्देश डिजाइन दोष है कि बिटपूल मान अन्य कोडेक पैरामीटर्स से बंधा नहीं है और केवल एक वैश्विक मान के रूप में परिभाषित है।

ये निश्चित बिटपूल और बिटरेट मान उच्च-गुणवत्ता वाले ऑडियो के लिए अनुशंसित मूल्यों से उत्पन्न होते हैं। लेकिन सिफारिश इन मूल्यों तक प्रोफाइल को सीमित करने का बहाना नहीं है।

A2DP विनिर्देश v1.2, जो 2007 से 2015 तक सक्रिय था, सभी डिकोडर्स को 512 kbps तक बिटरेट के साथ सही ढंग से काम करने की आवश्यकता है:

SNK का डिकोडर उन सभी संभावित बिटपूल मूल्यों का समर्थन करेगा जो अधिकतम बिट दर के अतिरिक्त परिणाम नहीं देते हैं। यह प्रोफाइल उपलब्ध अधिकतम बिट दर को मोनो के लिए 320kb/s और दो-चैनल मोड के लिए 512kb/s तक सीमित करता है।

विनिर्देश के नए संस्करण में कोई बिटरेट सीमा नहीं है। यह माना जाता है कि 2015 के बाद जारी आधुनिक हेडफोन 1000 kbps तक बिटरेट का समर्थन कर सकते हैं।

किसी कारण से, वर्तमान में परीक्षण किए गए सभी ब्लूटूथ स्टैक्स (Linux (PulseAudio), Android, Blackberry और macOS) में अधिकतम बिटपूल पैरामीटर की कृत्रिम सीमाएं हैं, जो सीधे अधिकतम बिटरेट को प्रभावित करती हैं। लेकिन यह सबसे बड़ी समस्या नहीं है, लगभग सभी हेडफोन अधिकतम बिटपूल मान को 53 तक सीमित करते हैं।

अधिकांश डिवाइस संशोधित ब्लूटूथ स्टैक पर 507 kbps के बिटरेट पर बिना इंटरप्शन और क्रैकलिंग के ठीक काम करते हैं। लेकिन ऐसा बिटरेट सामान्य परिस्थितियों में, स्टॉक ब्लूटूथ स्टैक्स के साथ कभी भी बातचीत नहीं किया जाएगा।

***PC पर परीक्षण के लिए आवश्यक: bluetooth-dualchannel-test-ubuntu-18.04.1-desktop-amd64.iso.torrent

PC पर परीक्षण कैसे करें

ब्लूटूथ एडाप्टर के साथ PC पर हाई बिटरेट SBC हेडफोन संगतता परीक्षण करना सबसे आसान है। मैंने एक संशोधित ब्लूटूथ स्टैक के साथ Ubuntu इमेज तैयार की है, जिसे वर्चुअल मशीन में चलाया जा सकता है (ब्लूटूथ एडाप्टर को वर्चुअल मशीन के अंदर USB डिवाइस के रूप में कनेक्ट करके, यह लैपटॉप में बने एडाप्टर्स के साथ भी काम करता है) या USB फ्लैश ड्राइव से बूट करके। यह इमेज निम्नलिखित प्रोफाइल का उपयोग करती है: डुअल चैनल, 8 बैंड, 16 ब्लॉक, लाउडनेस, बिटपूल 2..41, 44.1 kHz, जो 485 kbps बिटरेट प्रदान करता है।

VM में चल रहा है

  • Virtualbox और Virtualbox Extension Pack डाउनलोड करें: https://www.virtualbox.org/wiki/Downloads;
  • Virtualbox इंस्टॉल करें, इसे शुरू करें;
  • File → Preferences → Extensions का उपयोग करके Extension Pack इंस्टॉल करें;
  • नई वर्चुअल मशीन बनाएं: Linux, Ubuntu (64-bit), 1024 RAM. HDD न बनाएं।
  • वर्चुअल मशीन सेटिंग्स पर नेविगेट करें, Storage में Controller: IDE, Empty चुनें, CD आइकन दबाएं → Choose virtual optical disk file;
  • डाउनलोड की गई bluetooth-dualchannel-test-ubuntu-18.04.1-desktop-amd64.iso चुनें;
  • सेटिंग्स विंडो सेव करें और बंद करें, वर्चुअल मशीन शुरू करें;
  • नीचे दाएं कोने में USB केबल आइकन पर राइट-क्लिक करें, अपना ब्लूटूथ एडाप्टर चुनें;

PC पर चल रहा है

इमेज BIOS/CSM और UEFI बूटिंग का समर्थन करती है।

  • Etcher का उपयोग करके इमेज को USB फ्लैश ड्राइव पर बर्न करें: https://www.balena.io/etcher/. यह ऑपरेशन USB ड्राइव पर मौजूद सभी मौजूदा फाइलों को हटा देगा।
  • PC बंद करें;
  • USB फ्लैश ड्राइव डालें, PC चालू करें और बूट ऑर्डर बटन दबाएं (आमतौर पर Esc या F12);
  • अपना USB फ्लैश ड्राइव चुनें।

परीक्षण करना

  • (वैकल्पिक लेकिन अनुशंसित) डेस्कटॉप पर "Btsnoop Dump" स्क्रिप्ट पर डबल क्लिक करें। यह बाद में विश्लेषण के लिए ब्लूटूथ डेटा कैप्चर शुरू करेगा। टर्मिनल विंडो बंद न करें।
  • हेडफोन को पेयरिंग मोड पर स्विच करें;
  • ऊपर दाएं कोने में तीर पर क्लिक करें, ब्लूटूथ आइकन चुनें → ब्लूटूथ सेटिंग्स;
  • अपने हेडफोन चुनें, पेयरिंग पूरी होने तक प्रतीक्षा करें और विंडो बंद करें;
  • Ubuntu वॉल्यूम को लगभग 2/3 पर सेट करें। हेडसेट बटन का उपयोग करके वॉल्यूम भी कम करें क्योंकि पेयरिंग के बाद यह बहुत जोर से हो सकता है।
  • "music" फोल्डर खोलें, "testrecord1.flac" चलाएं;
  • (वैकल्पिक लेकिन अनुशंसित) प्लेयर बंद करें, टर्मिनल विंडो बंद करें। यह डेटा कैप्चर बंद कर देगा।
  • (वैकल्पिक लेकिन अनुशंसित) Firefox ब्राउज़र खोलें, डेटा डंप (डेस्कटॉप पर btsnoop_hci.btsnoop) को https://btcodecs.valdikss.org.ru/ पर अपलोड करें

आप म्यूजिक फोल्डर में अन्य संगीत सुन सकते हैं, या अपना खुद का अपलोड कर सकते हैं;

हेडफोन में कोई क्रैकलिंग, ऑडियो रुकावट या अन्य ध्वनि विरूपण नहीं होना चाहिए। यदि आप अच्छी उच्च-गुणवत्ता वाली ध्वनि सुनते हैं, तो इसका मतलब है कि आपके हेडफोन 485 kbps के बिट रेट के साथ ऑडियो का समर्थन करते हैं।

Android डिवाइस पर परीक्षण कैसे करें

Android स्मार्टफोन या टैबलेट से परीक्षण करने के लिए आपको संशोधित ब्लूटूथ स्टैक का उपयोग करने की आवश्यकता है, जिसके लिए रूट विशेषाधिकार की आवश्यकता होती है।

Android पर ब्लूटूथ डेटा डंप कैसे कैप्चर करें

  1. ब्लूटूथ बंद करें;
  2. डेवलपर सेटिंग्स में, "Enable Bluetooth HCI snoop log" स्विच सक्षम करें;
  3. ब्लूटूथ चालू करें, ब्लूटूथ मेनू का उपयोग करके अपने हेडसेट से कनेक्ट करें (यह महत्वपूर्ण है! ऑटो कनेक्शन की अनुमति न दें!);
  4. छोटा ऑडियो सैंपल चलाएं;
  5. डेवलपर सेटिंग्स खोलें, "Enable Bluetooth HCI snoop log" स्विच अक्षम करें;
  6. /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 का समर्थन करने वाले डिवाइस

  • 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 (बिटपूल मैक्स 39. डुअल चैनल का समर्थन नहीं करने का जवाब देते हैं, लेकिन मजबूर करने पर काम करते हैं, 462 kbit/s. A2DP विनिर्देश के अनुरूप नहीं।)
  • Bluedio T5 (डुअल चैनल का समर्थन नहीं करने का जवाब देते हैं, लेकिन मजबूर करने पर काम करते हैं। A2DP विनिर्देश के अनुरूप नहीं।)
  • Bluedio T6 (डुअल चैनल का समर्थन नहीं करने का जवाब देते हैं, लेकिन मजबूर करने पर काम करते हैं। A2DP विनिर्देश के अनुरूप नहीं। Adopt Max 97220 चिप।)
  • Marshall Major II Bluetooth
  • Overdrive RealForce D1
  • Edifier W830BT
  • DEXP BT-250
  • Logitech BT Adapter
  • नोम ऑटोमोटिव हेड यूनिट (CSR8645 चिप)
  • Sony DSX-A400BT ऑटोमोटिव हेड यूनिट

512 kbit/s से अधिक SBC का समर्थन करने वाले डिवाइस

  • 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, डुअल चैनल, 4 सबबैंड)

उच्च बिटरेट या डुअल चैनल के साथ काम नहीं करने वाले डिवाइस

  1. Harper HB-202 (क्रैकलिंग; Beken BK3256 चिप)
  2. Sony Ericsson MW600 (हाई फ्रीक्वेंसी डिस्टॉर्शन, क्रैकलिंग; 2009 का डिवाइस)

यह महत्वपूर्ण क्यों है: SBC 328k और 485k बनाम aptX

लोकप्रिय धारणा के विपरीत aptX ध्वनि गुणवत्ता के, कुछ मामलों में यह मानक 328k बिटरेट के साथ SBC से भी खराब ऑडियो गुणवत्ता पैदा कर सकता है।

SBC डायनामिक रूप से आवृत्ति बैंड के लिए क्वांटाइजेशन बिट्स आवंटित करता है, "बॉटम-टू-टॉप" आधार पर कार्य करता है। यदि पूरा बिटरेट निचली और मध्य आवृत्तियों के लिए उपयोग किया गया था, तो ऊपरी आवृत्तियों को "काट दिया जाता है" (मौन)।

aptX आवृत्ति बैंड को लगातार समान संख्या में बिट्स के साथ क्वांटाइज़ करता है, जो इसे एक स्थिर बिटरेट कोडेक बनाता है: 44.1 kHz के लिए 352 kbps, 48 kHz के लिए 384 kbps। यह उन आवृत्तियों में "बिट्स ट्रांसफर" नहीं कर सकता जिनमें उनकी सबसे अधिक आवश्यकता होती है। SBC के विपरीत, aptX आवृत्तियों को "काट" नहीं देगा, लेकिन उनमें क्वांटाइजेशन शोर जोड़ देगा, ऑडियो की डायनामिक रेंज को कम करेगा, और कभी-कभी क्रैकल्स पेश करेगा। SBC, इसके विपरीत, "डिटेल्स खाता है" - सबसे शांत क्षेत्रों को त्याग देता है।

औसतन, विस्तृत आवृत्ति रेंज वाले संगीत की तुलना में, aptX कम विरूपण पैदा करता है, लेकिन संकीर्ण आवृत्ति रेंज और विस्तृत डायनामिक रेंज वाले संगीत पर SBC 328k कभी-कभी जीतता है।

आइए एक विशेष मामले पर विचार करें, एक पियानो रिकॉर्डिंग। यहां एक स्पेक्ट्रोग्राम है:

अधिकांश ऊर्जा 0-4 kHz आवृत्तियों में निहित है, और 10 kHz तक रहती है। aptX फाइल का स्पेक्ट्रोग्राम ऐसा दिखता है:

यहां SBC 328k है:

यह देखा जा सकता है कि SBC 328k समय-समय पर 16 kHz से ऊपर की रेंज को पूरी तरह से काट देता है, और इस मूल्य से नीचे की रेंज के लिए सभी उपलब्ध बिटरेट का उपयोग करता है। हालांकि, aptX ने मानव कान द्वारा श्रव्य आवृत्ति स्पेक्ट्रम में अधिक विकृति पेश की, जिसे मूल स्पेक्ट्रोग्राम से aptX स्पेक्ट्रोग्राम घटाकर देखा जा सकता है (उज्जवल, अधिक विकृति):

जबकि SBC 328k ने 0 से 10 kHz की रेंज में सिग्नल में कम विकृति पेश की है, और बाकी को काट दिया गया है:

SBC के लिए 485k बिटरेट पूरे आवृत्ति रेंज को बचाने के लिए पर्याप्त था, बिना बैंड को काटे।

SBC 485k इस ऑडियो सैंपल पर 0-15 kHz की रेंज में aptX से बहुत बेहतर है, और एक छोटे लेकिन अभी भी ध्यान देने योग्य अंतर के साथ - 15-22 kHz पर (गहरा, कम विकृति):

हाई-बिटरेट SBC पर स्विच करके, आप अधिकांश समय, किसी भी हेडफोन पर aptX से बेहतर ध्वनि प्राप्त करेंगे।

Android 5 - 7 पर ब्लूटूथ स्टैक्स कैसे संशोधित करें

इन संशोधनों को स्टॉक Android ब्लूटूथ स्टैक्स Bluedroid (Android 5) और Fluoride (Android 6-7) पर लागू किया जाना चाहिए। Qualcomm-संशोधित स्टैक समर्थित नहीं है।

मानक SBC कॉन्फ़िगरेशन में जॉइंट स्टीरियो को डुअल चैनल से बदलें

android/platform/external/bluetooth/bluedroid/btif/co/bta_av_co.c:99

कोड:

 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 से बदलें।

डुअल चैनल प्राथमिकता बढ़ाएं

android/platform/external/bluetooth/bluedroid/btif/co/bta_av_co.c:41

कोड:

 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; A2D_SBC_IE_CH_MD_DUAL के साथ if को शीर्ष पर ले जाएं।

बिटरेट प्रतिबंध अक्षम या बढ़ाएं

Android ब्लूटूथ स्टैक में न केवल बिटपूल सीमा है, बल्कि बिटरेट सीमा भी है, 328 kbit/s। यदि हेडफोन उदाहरण के लिए 48 kHz के लिए बिटपूल 53 का समर्थन करते हैं, तो Android बिटपूल को 328 kbit/s सीमा में फिट करने के लिए कम कर देगा। यह कोडेक बातचीत के बाद, एन्कोडिंग चरण पर होगा, ब्लूटूथ SetCapabilities पैकेट में बिटपूल मान को ध्यान में न रखते हुए।

android/platform/external/bluetooth/bluedroid/btif/src/btif_media_task.c:172

कोड:

#define DEFAULT_SBC_BITRATE 328

512 से बदलें।

(केवल प्रयोग के लिए) MTU सीमा अक्षम करें

यह ~580 kbit/s से अधिक बिटरेट के लिए आवश्यक है।

btif/src/btif_media_task.c:174

कोड:

/* 2DH5 पेलोड साइज 679 बाइट्स - (4 बाइट्स L2CAP हेडर + 12 बाइट्स AVDTP हेडर) */ #define MAX_2MBPS_AVDTP_MTU 663

Android 8 - 9 पर ब्लूटूथ स्टैक्स कैसे संशोधित करें

इन संशोधनों का परीक्षण नहीं किया गया है, लेकिन काम करना चाहिए।

A2DP SBC सोर्स में डुअल चैनल समर्थन जोड़ें

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:55

कोड:

/* SBC SRC कोडेक क्षमताएं */ 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 */ }; 

ch_mode में A2DP_SBC_IE_CH_MD_DUAL जोड़ें।

डिफ़ॉल्ट कॉन्फ़िगरेशन में जॉइंट स्टीरियो को डुअल चैनल से बदलें

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:82

कोड:

/* डिफ़ॉल्ट SBC कोडेक कॉन्फ़िगरेशन */ 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 से बदलें।

डुअल चैनल प्राथमिकता बढ़ाएं

/platform/system/bt/stack/a2dp/a2dp_sbc.cc:1155

कोड:

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; }

A2DP_SBC_IE_CH_MD_DUAL के साथ if को शीर्ष पर ले जाएं।

बिटरेट सीमा बढ़ाएं

/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:42

कोड:

#define A2DP_SBC_DEFAULT_BITRATE 328

512 से बदलें।

(केवल प्रयोग के लिए) MTU सीमा अक्षम करें

यह ~580 kbit/s से अधिक बिटरेट के लिए आवश्यक है।

/platform/system/bt/stack/a2dp/a2dp_sbc_encoder.cc:47

कोड:

#define MAX_2MBPS_AVDTP_MTU 663
  1. एंड्रॉइड पर रोडरनर ईमेल सेटअप करने के लिए चरण-दर-चरण गाइड एंड्रॉइड पर रोडरनर ईमेल सेटअप करने के लिए चरण-दर-चरण गाइड

    टाइम वार्नर केबल इंटरनेट सर्विस प्रोवाइडर अपने उपयोगकर्ताओं को रोडरनर ईमेल प्रदान करता है। यदि आप टाइम वार्नर केबल ISP का उपयोग करते हैं, तो आपको एक रोडरनर ईमेल अकाउंट तक पहुंच दी गई होगी जिसका उपयोग आप ईमेल भेजने या प्राप्त करने के लिए कर सकते हैं। रोडरनर एक ईमेल सेवा है जो केवल टाइम वार्नर केबल इं

  1. एंड्रॉइड पर ब्लूटूथ डिवाइस बैटरी लेवल जांचें - आसान चरण एंड्रॉइड पर ब्लूटूथ डिवाइस बैटरी लेवल जांचें - आसान चरण

    तकनीकी दुनिया में प्रगति के साथ, तकनीकी डिवाइस भी वायरलेस हो रहे हैं। पहले, लोग ऑडियो से कनेक्ट करने या एक डिवाइस से दूसरे डिवाइस में फाइल ट्रांसफर करने के लिए तारों का उपयोग करते थे। लेकिन, अब हम सब कुछ वायरलेस तरीके से आसानी से कर सकते हैं, चाहे ब्लूटूथ डिवाइस का उपयोग करके ऑडियो सुनना हो या एक डि

  1. Android के लिए शीर्ष 18 मुफ्त Audio Editing Apps: अपने Projects को तुरंत बेहतर बनाएं Android के लिए शीर्ष 18 मुफ्त Audio Editing Apps: अपने Projects को तुरंत बेहतर बनाएं

    Audio Part को Edit करना किसी भी Project का अभिन्न अंग है, चाहे वह Movie, Radio, Podcast, आदि हो। मौजूदा Social Media Trends को देखते हुए, कई छोटे Musicians और Content Creators को अपनी Content के लिए Basic Audio Editor की आवश्यकता होती है ताकि वे अपनी प्रतिभा और Creatives का सर्वश्रेष्ठ Upload कर सके