यूएसबी डिजिटल ऑडियो

इस लेख में, यूएसबी डिजिटल ऑडियो और उससे जुड़े यूएसबी-आधारित प्रोटोकॉल के लिए, Android की सहायता की समीक्षा की गई है.

ऑडियंस

इस लेख का मकसद, Android डिवाइस के OEM, SoC वेंडर, यूएसबी ऑडियो डिवाइसों के सप्लायर, बेहतर ऑडियो ऐप्लिकेशन डेवलपर, और Android पर यूएसबी डिजिटल ऑडियो के अंदरूनी काम करने के तरीके के बारे में ज़्यादा जानने वाले लोगों को जानकारी देना है.

Nexus डिवाइसों के असली उपयोगकर्ताओं को, Nexus के सहायता केंद्र पर जाकर, यूएसबी होस्ट मोड का इस्तेमाल करके ऑडियो रिकॉर्ड करना और चलाना लेख पढ़ना चाहिए. हालांकि, यह लेख असली उपयोगकर्ताओं के लिए नहीं है, लेकिन ऑडियोफ़ाइल के कुछ उपभोक्ताओं को इसमें दिलचस्पी हो सकती है.

यूएसबी के बारे में खास जानकारी

यूनिवर्सल सीरियल बस (यूएसबी) के बारे में, Wikipedia के लेख यूएसबी में सामान्य जानकारी दी गई है. इसके अलावा, USB Implementers Forum, Inc के पब्लिश किए गए स्टैंडर्ड में, यूएसबी के बारे में आधिकारिक जानकारी दी गई है. हम यहां यूएसबी के मुख्य कॉन्सेप्ट के बारे में खास जानकारी दे रहे हैं, ताकि आपको आसानी से जानकारी मिल सके. हालांकि, स्टैंडर्ड ही आधिकारिक रेफ़रंस हैं.

बुनियादी कॉन्सेप्ट और शब्दावली

यूएसबी एक बस है, जिसमें डेटा ट्रांसफ़र करने की प्रोसेस को शुरू करने वाला एक डिवाइस होता है. इसे होस्ट कहा जाता है. होस्ट, बस की मदद से पैरफ़िरियल से संपर्क करता है.

ध्यान दें: डिवाइस और ऐक्सेसरी, पैरिफ़रल के सामान्य समानार्थी शब्द हैं. हम यहां उन शब्दों का इस्तेमाल नहीं करते, क्योंकि इनसे Android डिवाइस या Android के लिए बने ऐक्सेसरी मोड के साथ भ्रम हो सकता है.

होस्ट की एक अहम भूमिका एनिमरेशन है: यह बस से कनेक्ट किए गए पेरिफ़रल डिवाइसों का पता लगाने और डेस्क्रिप्टर के ज़रिए बताई गई उनकी प्रॉपर्टी के बारे में क्वेरी करने की प्रोसेस है.

कोई पेरिफ़रल एक फ़िज़िकल ऑब्जेक्ट हो सकता है, लेकिन असल में कई लॉजिकल फ़ंक्शन लागू करता है. उदाहरण के लिए, किसी वेबकैम में कैमरा फ़ंक्शन और माइक्रोफ़ोन ऑडियो फ़ंक्शन, दोनों हो सकते हैं.

हर सहायक डिवाइस के फ़ंक्शन का एक इंटरफ़ेस होता है. इससे उस फ़ंक्शन के साथ कम्यूनिकेट करने के लिए प्रोटोकॉल तय होता है.

होस्ट, किसी पाइप के ज़रिए किसी पेरिफ़रल से एंडपॉइंट से संपर्क करता है. यह एंडपॉइंट, पेरिफ़रल के किसी फ़ंक्शन से मिलने वाला डेटा सोर्स या सिंक होता है.

पाइप दो तरह के होते हैं: मैसेज और स्ट्रीम. मैसेज पाइप का इस्तेमाल, दोनों तरफ़ से कंट्रोल और स्टेटस के लिए किया जाता है. स्ट्रीम पाइप का इस्तेमाल, एकतरफ़ा डेटा ट्रांसफ़र के लिए किया जाता है.

होस्ट, डेटा ट्रांसफ़र की प्रोसेस शुरू करता है. इसलिए, इनपुट और आउटपुट शब्दों को होस्ट के हिसाब से दिखाया जाता है. इनपुट ऑपरेशन, डेटा को सहायक डिवाइस से होस्ट पर ट्रांसफ़र करता है, जबकि आउटपुट ऑपरेशन, डेटा को होस्ट से सहायक डिवाइस पर ट्रांसफ़र करता है.

डेटा ट्रांसफ़र के तीन मुख्य मोड हैं: इंटरप्ट, बल्क, और आइसोक्रोनस. ऑडियो के संदर्भ में, आइसोक्रोनस मोड के बारे में ज़्यादा जानकारी दी जाएगी.

सहायक डिवाइस में ऐसे टर्मिनल हो सकते हैं जो सहायक डिवाइस के अलावा, बाहरी दुनिया से भी कनेक्ट होते हैं. इस तरह, यूएसबी प्रोटोकॉल और "असल दुनिया" के सिग्नल के बीच अनुवाद करने के लिए, पेरिफ़रल का इस्तेमाल किया जाता है. टर्मिनल, फ़ंक्शन के लॉजिकल ऑब्जेक्ट होते हैं.

Android के यूएसबी मोड

डेवलपमेंट मोड

डेवलपमेंट मोड, Android के शुरुआती वर्शन से ही मौजूद है. Android डिवाइस, Linux, Mac OS X या Windows जैसे डेस्कटॉप ऑपरेटिंग सिस्टम पर चलने वाले होस्ट पीसी के लिए, यूएसबी डिवाइस के तौर पर दिखता है. सिर्फ़ एक फ़ंक्शन दिखता है. यह Android fastboot या Android Debug Bridge (adb) में से कोई एक होता है. fastboot और adb प्रोटोकॉल, यूएसबी के ज़रिए एक साथ ज़्यादा डेटा ट्रांसफ़र करने के मोड के ऊपर लेयर किए गए हैं.

होस्ट मोड

होस्ट मोड, Android 3.1 (एपीआई लेवल 12) में लॉन्च किया गया था.

Android डिवाइस को होस्ट के तौर पर काम करना चाहिए. ज़्यादातर Android डिवाइसों में एक माइक्रो-यूएसबी कनेक्टर होता है, जो सीधे तौर पर होस्ट के तौर पर काम नहीं करता. इसलिए, आम तौर पर इस तरह के ऑन-द-गो (OTG) अडैप्टर की ज़रूरत होती है:

ओटीजी

पहली इमेज. ऑन-द-गो (OTG) अडैप्टर

ऐसा हो सकता है कि किसी खास पेरिफ़रल को चलाने के लिए, Android डिवाइस ज़रूरत के मुताबिक पावर न दे. यह इस बात पर निर्भर करता है कि पेरिफ़रल को कितनी पावर की ज़रूरत है और Android डिवाइस कितनी पावर दे सकता है. ज़रूरत के मुताबिक पावर उपलब्ध होने पर भी, Android डिवाइस की बैटरी चार्ज होने में काफ़ी समय लग सकता है. इन स्थितियों में, इस तरह के किसी हब का इस्तेमाल करें:

पावर हब

दूसरी इमेज. पावर हब

ऐक्सेसरी मोड

ऐक्सेसरी मोड को Android 3.1 (एपीआई लेवल 12) में लॉन्च किया गया था. साथ ही, इसे Android 2.3.4 में बैक-पोर्ट किया गया था. इस मोड में, Android डिवाइस किसी दूसरे डिवाइस के कंट्रोल में, यूएसबी डिवाइस के तौर पर काम करता है. जैसे, होस्ट के तौर पर काम करने वाले डॉक. डेवलपमेंट मोड और ऐक्सेसरी मोड के बीच का अंतर यह है कि होस्ट को adb के अलावा, यूएसबी के अन्य फ़ंक्शन भी दिखते हैं. Android डिवाइस, डेवलपमेंट मोड में शुरू होता है. इसके बाद, फिर से बातचीत की प्रक्रिया के ज़रिए, ऐक्सेसरी मोड में ट्रांज़िशन होता है.

Android 4.1 में, ऐक्सेसरी मोड में कुछ और सुविधाएं जोड़ी गईं. इनमें, ऑडियो की सुविधा भी शामिल है.

यूएसबी ऑडियो

यूएसबी क्लास

हर पेरिफ़रल फ़ंक्शन के लिए, एक डिवाइस क्लास दस्तावेज़ होता है, जिसमें उस फ़ंक्शन के लिए स्टैंडर्ड प्रोटोकॉल की जानकारी होती है. इससे क्लास के मुताबिक होस्ट और पेरिफ़रल फ़ंक्शन, एक-दूसरे के काम करने के तरीके के बारे में पूरी जानकारी के बिना, इंटर-ऑपरेट कर सकते हैं. अगर होस्ट और पेरिफ़रल को अलग-अलग इकाइयां उपलब्ध कराती हैं, तो क्लास के नियमों का पालन करना ज़रूरी है.

ड्राइवरलेस शब्द, क्लास के मुताबिक के लिए एक सामान्य समानार्थी शब्द है. इससे पता चलता है कि इस तरह के डिवाइस की स्टैंडर्ड सुविधाओं का इस्तेमाल, ऑपरेटिंग सिस्टम के हिसाब से ड्राइवर इंस्टॉल किए बिना किया जा सकता है. यह माना जा सकता है कि मुख्य डेस्कटॉप ऑपरेटिंग सिस्टम के लिए, "ड्राइवर की ज़रूरत नहीं है" के तौर पर विज्ञापन किया गया कोई भी पेरिफ़रल, क्लास के मुताबिक होगा. हालांकि, इसमें कुछ अपवाद हो सकते हैं.

यूएसबी ऑडियो क्लास

यहां हम सिर्फ़ उन सहायक डिवाइसों के बारे में बात करते हैं जो ऑडियो फ़ंक्शन लागू करते हैं और इसलिए, ऑडियो डिवाइस क्लास के मुताबिक होते हैं. यूएसबी ऑडियो क्लास स्पेसिफ़िकेशन के दो वर्शन हैं: क्लास 1 (UAC1) और 2 (UAC2).

अन्य क्लास से तुलना

यूएसबी में कई अन्य डिवाइस क्लास शामिल हैं. इनमें से कुछ को ऑडियो क्लास के साथ गलत तरीके से जोड़ा जा सकता है. मास स्टोरेज क्लास (एमएससी) का इस्तेमाल, मीडिया को सेक्टर के हिसाब से ऐक्सेस करने के लिए किया जाता है. वहीं, मीडिया ट्रांसफ़र प्रोटोकॉल (एमटीपी) का इस्तेमाल, मीडिया की पूरी फ़ाइल को ऐक्सेस करने के लिए किया जाता है. ऑडियो फ़ाइलों को ट्रांसफ़र करने के लिए, MSC और MTP, दोनों का इस्तेमाल किया जा सकता है. हालांकि, रीयल-टाइम स्ट्रीमिंग के लिए सिर्फ़ यूएसबी ऑडियो क्लास का इस्तेमाल किया जा सकता है.

ऑडियो टर्मिनल

आम तौर पर, किसी ऑडियो डिवाइस के टर्मिनल एनालॉग होते हैं. परिधीय डिवाइस के इनपुट टर्मिनल पर मौजूद एनालॉग सिग्नल को एनालॉग-टू-डिजिटल कन्वर्टर (एडीसी) की मदद से डिजिटल में बदला जाता है. इसके बाद, होस्ट के इस्तेमाल के लिए, इसे यूएसबी प्रोटोकॉल पर भेजा जाता है. एडीसी, होस्ट के लिए डेटा सोर्स होता है. इसी तरह, होस्ट यूएसबी प्रोटोकॉल पर डिजिटल ऑडियो सिग्नल को बाहरी डिवाइस पर भेजता है. वहां डिजिटल-टू-एनालॉग कन्वर्टर (डीएसी) इसे एनालॉग आउटपुट टर्मिनल में बदलता है और दिखाता है. डीएसी, होस्ट के लिए सिंक होता है.

चैनल

ऑडियो फ़ंक्शन वाले किसी पेरिफ़रल में, सोर्स टर्मिनल, सिंक टर्मिनल या दोनों शामिल हो सकते हैं. हर डायरेक्शन में एक चैनल (मोनो), दो चैनल (स्टीरियो) या उससे ज़्यादा चैनल हो सकते हैं. दो से ज़्यादा चैनल वाले पेरिफ़रल को मल्टीचैनल कहा जाता है. आम तौर पर, स्टीरियो स्ट्रीम को लेफ़्ट और राइट चैनलों के तौर पर समझा जाता है. साथ ही, मल्टीचैनल स्ट्रीम को हर चैनल के हिसाब से स्पेस में जगहों के तौर पर समझा जाता है. हालांकि, हर चैनल को कोई खास स्टैंडर्ड स्पेसियल मतलब न असाइन करना भी सही है. खास तौर पर, एचडीएमआई के मुकाबले यूएसबी ऑडियो के लिए ऐसा करना ज़्यादा सही है. इस मामले में, यह तय करना ऐप्लिकेशन और उपयोगकर्ता के ऊपर है कि हर चैनल का इस्तेमाल कैसे किया जाए. उदाहरण के लिए, चार चैनलों वाली यूएसबी इनपुट स्ट्रीम में, पहले तीन चैनल किसी कमरे में मौजूद अलग-अलग माइक्रोफ़ोन से जुड़े हो सकते हैं और आखिरी चैनल को एएम रेडियो से इनपुट मिल रहा हो.

आइसोक्रोनस ट्रांसफ़र मोड

यूएसबी ऑडियो, रीयल-टाइम की सुविधाओं के लिए, आइसोक्रोनस ट्रांसफ़र मोड का इस्तेमाल करता है. ऐसा करने पर, गड़बड़ी ठीक करने की सुविधा काम नहीं करती. आइसोक्रोनस मोड में, बैंडविड्थ की गारंटी होती है. साथ ही, साइकलिकल रेडंडेंसी चेक (सीआरसी) का इस्तेमाल करके, डेटा ट्रांसमिशन से जुड़ी गड़बड़ियों का पता लगाया जाता है. हालांकि, गड़बड़ी होने पर पैकेट की पुष्टि नहीं की जाती या उसे फिर से ट्रांसमिट नहीं किया जाता.

आइसोक्रोनस ट्रांसमिशन, हर फ़्रेम की शुरुआत (एसओएफ़) की अवधि में होते हैं. फ़ुल-स्पीड के लिए, SOF की अवधि एक मिलीसेकंड और ज़्यादा स्पीड के लिए 125 माइक्रोसेकंड होती है. फ़ुल-स्पीड फ़्रेम में 1023 बाइट तक का पेलोड होता है और हाई-स्पीड फ़्रेम में 1024 बाइट तक का पेलोड होता है. इन दोनों को जोड़कर, हम ज़्यादा से ज़्यादा ट्रांसफ़र रेट को प्रति सेकंड 1,023,000 या 8,192,000 बाइट के तौर पर कैलकुलेट करते हैं. इससे, ऑडियो के सैंपल रेट, चैनल की संख्या, और बिट डेप्थ के लिए एक ऊपरी सीमा तय होती है. हालांकि, असल में यह सीमा कम होती है.

आइसोक्रोनस मोड में, तीन सब-मोड होते हैं:

  • आस-पास की रोशनी के हिसाब से रंग बदल जाता है
  • एसिंक्रोनस
  • सिंक्रोनस

अडैप्टिव सब-मोड में, पेरिफ़रल सिंक या सोर्स, होस्ट के सैंपल रेट में होने वाले बदलाव के हिसाब से अडजस्ट हो जाता है.

असाइनोक्रोनस (इसे इनपुट के हिसाब से अपने-आप बदलने वाला फ़ीडबैक भी कहा जाता है) सब-मोड में, सिंक या सोर्स सैंपल रेट तय करता है और होस्ट उसे लागू करता है. असाइन्क्रोनस सब-मोड का मुख्य सैद्धांतिक फ़ायदा यह है कि सोर्स या सिंक यूएसबी घड़ी, डीएसी या एडीसी को चलाने वाली घड़ी के करीब होती है. यह घड़ी, सोर्स या सिंक यूएसबी घड़ी के जैसी हो सकती है या उससे ली गई हो सकती है. इस प्रॉक्सिमिटी का मतलब है कि असाइनोक्रोनस सब-मोड, क्लॉक जटर के लिए कम संवेदनशील होना चाहिए. इसके अलावा, होस्ट क्लॉक की तुलना में डीएसी या एडीसी के लिए इस्तेमाल की जाने वाली क्लॉक को ज़्यादा सटीक और कम ड्रिफ़्ट के लिए डिज़ाइन किया जा सकता है.

सिंक्रोनस सब-मोड में, हर SOF अवधि में तय संख्या में बाइट ट्रांसफ़र किए जाते हैं. ऑडियो सैंपल रेट, यूएसबी क्लॉक से मिलता है. आम तौर पर, ऑडियो के साथ सिंक्रोनस सब-मोड का इस्तेमाल नहीं किया जाता, क्योंकि होस्ट और पेरिफ़रल, दोनों USB क्लॉक के हिसाब से काम करते हैं.

नीचे दी गई टेबल में, आइसोक्रोनस सब-मोड के बारे में खास जानकारी दी गई है:

सब-मोड
हर पैकेट में बाइट की संख्या
सैंपल रेट
तय करता है
ऑडियो के लिए इस्तेमाल किया जाता है
अडैप्टिव अस्थिर होस्ट हां
एसिंक्रोनस अस्थिर पेरिफ़रल हां
सिंक्रोनस तय यूएसबी घड़ी no

असल में, सब-मोड का फ़र्क़ पड़ता है. हालांकि, अन्य बातों को भी ध्यान में रखना चाहिए.

Android डिवाइसों पर यूएसबी ऑडियो क्लास की सुविधा

डेवलपमेंट मोड

डेवलपमेंट मोड में, यूएसबी ऑडियो काम नहीं करता.

होस्ट मोड

Android 5.0 (एपीआई लेवल 21) और इसके बाद के वर्शन, यूएसबी ऑडियो क्लास 1 (UAC1) की सुविधाओं के सबसेट के साथ काम करते हैं:

  • Android डिवाइस, होस्ट के तौर पर काम करना चाहिए
  • ऑडियो फ़ॉर्मैट PCM (इंटरफ़ेस टाइप I) होना चाहिए
  • बिट डेप्थ 16-बिट, 24-बिट या 32-बिट होनी चाहिए. इसमें, 32-बिट वाले शब्द के सबसे अहम बिट में, काम के ऑडियो डेटा के 24 बिट को बाईं ओर से अलाइन किया गया हो
  • सैंपल रेट 48, 44.1, 32, 24, 22.05, 16, 12, 11.025 या 8 किलोहर्ट्ज़ होना चाहिए
  • चैनल की संख्या एक (मोनो) या दो (स्टीरियो) होनी चाहिए

Android फ़्रेमवर्क के सोर्स कोड को पढ़ने पर, इन सुविधाओं के साथ काम करने के लिए ज़रूरी कोड के अलावा, अतिरिक्त कोड दिख सकता है. हालांकि, इस कोड की पुष्टि नहीं की गई है. इसलिए, ज़्यादा बेहतर सुविधाओं पर अब तक दावा नहीं किया गया है.

ऐक्सेसरी मोड

Android 4.1 (एपीआई लेवल 16) में, होस्ट पर ऑडियो चलाने की सुविधा सीमित तौर पर जोड़ी गई है. ऐक्सेसरी मोड में होने पर, Android अपने ऑडियो आउटपुट को यूएसबी पर अपने-आप भेज देता है. इसका मतलब है कि Android डिवाइस, होस्ट के लिए डेटा सोर्स के तौर पर काम करता है. उदाहरण के लिए, डॉक.

ऐक्सेसरी मोड के ऑडियो में ये सुविधाएं होती हैं:

  • Android डिवाइस को किसी ऐसे होस्ट के पास होना चाहिए जो इस बारे में जानकार हो और जो पहले Android डिवाइस को डेवलपमेंट मोड से ऐक्सेसरी मोड में बदल सके. इसके बाद, होस्ट को सही एंडपॉइंट से ऑडियो डेटा ट्रांसफ़र करना होगा. इसलिए, होस्ट को Android डिवाइस "ड्राइवरलेस" नहीं दिखता.
  • निर्देश, इनपुट होना चाहिए, जो होस्ट के हिसाब से दिया गया हो
  • ऑडियो फ़ॉर्मैट 16-बिट PCM होना चाहिए
  • सैंपल रेट 44.1 किलोहर्ट्ज़ होना चाहिए
  • चैनलों की संख्या दो (स्टीरियो) होनी चाहिए

ऐक्सेसरी मोड के ऑडियो का इस्तेमाल, आम तौर पर नहीं किया जाता है. इसलिए, फ़िलहाल नए डिज़ाइन के लिए इसका सुझाव नहीं दिया जाता.

यूएसबी डिजिटल ऑडियो के इस्तेमाल के उदाहरण

जैसा कि नाम से पता चलता है, यूएसबी डिजिटल ऑडियो सिग्नल को डिजिटल डेटा स्ट्रीम से दिखाया जाता है. आम तौर पर, TRS मिनी हेडसेट कनेक्टर में एनालॉग सिग्नल का इस्तेमाल किया जाता है. किसी भी डिजिटल सिग्नल को सुनने से पहले, उसे एनालॉग में बदलना ज़रूरी है. कन्वर्ज़न को किसी भी जगह पर डालने के फ़ायदे और नुकसान होते हैं.

दो डीएसी की कहानी

नीचे दिए गए उदाहरण वाले डायग्राम में, हम दो डिज़ाइन की तुलना कर रहे हैं. सबसे पहले, हमारे पास एक ऐसा मोबाइल डिवाइस है जिसमें ऐप्लिकेशन प्रोसेसर (एपी), ऑन-बोर्ड डीएसी, एम्प्लफ़ायर, और हेडफ़ोन से जुड़ा एनालॉग टीआरएस कनेक्टर है. हम ऐसे मोबाइल डिवाइस को भी स्मार्ट डिवाइस मानते हैं जिसे यूएसबी के ज़रिए बाहरी यूएसबी डीएसी और एम्प्लफ़ायर से कनेक्ट किया गया हो. साथ ही, हेडफ़ोन से भी कनेक्ट किया गया हो.

डीएसी की तुलना

तीसरी इमेज. दो डीएसी की तुलना

कौनसा डिज़ाइन बेहतर है? इसका जवाब आपकी ज़रूरतों पर निर्भर करता है. दोनों के अपने फ़ायदे और नुकसान हैं.

ध्यान दें: यह तुलना कृत्रिम है, क्योंकि किसी असली Android डिवाइस में दोनों विकल्प उपलब्ध होंगे.

पहला डिज़ाइन A आसान है, कम खर्चीला है, और कम बिजली का इस्तेमाल करता है. साथ ही, यह ज़्यादा भरोसेमंद डिज़ाइन होगा, बशर्ते कि इसमें इस्तेमाल किए गए कॉम्पोनेंट भी उतने ही भरोसेमंद हों. हालांकि, आम तौर पर ऑडियो क्वालिटी और अन्य ज़रूरी शर्तों के बीच समझौता करना पड़ता है. उदाहरण के लिए, अगर यह डिवाइस आम लोगों के लिए है, तो हो सकता है कि इसे आम उपभोक्ता की ज़रूरतों के हिसाब से डिज़ाइन किया गया हो, न कि ऑडियोफ़ाइल के लिए.

दूसरे डिज़ाइन में, बाहरी ऑडियो डिवाइस C को बेहतर ऑडियो क्वालिटी और ज़्यादा पावर आउटपुट के लिए डिज़ाइन किया जा सकता है. इससे, आम तौर पर इस्तेमाल होने वाले Android डिवाइस B की कीमत पर कोई असर नहीं पड़ेगा. हां, यह ज़्यादा महंगा डिज़ाइन है, लेकिन इसकी कीमत सिर्फ़ वे लोग चुकाते हैं जिन्हें यह डिज़ाइन चाहिए.

मोबाइल डिवाइसों में हाई-डेंसिटी सर्किट बोर्ड होते हैं. इस वजह से, क्रॉसटॉक की संभावना ज़्यादा होती है. इससे आस-पास मौजूद एनालॉग सिग्नल खराब हो जाते हैं. डिजिटल कम्यूनिकेशन में शोर कम होता है. इसलिए, डीएसी को Android डिवाइस A से बाहरी सर्किट बोर्ड C पर ले जाने से, आखिरी एनालॉग स्टेज को घने और शोर वाले सर्किट बोर्ड से अलग किया जा सकता है. इससे बेहतर क्वालिटी का ऑडियो मिलता है.

दूसरी ओर, दूसरा डिज़ाइन ज़्यादा जटिल है. साथ ही, जटिलता बढ़ने से, गड़बड़ियों की संभावना भी बढ़ जाती है. USB कंट्रोलर से भी अतिरिक्त इंतज़ार का समय होता है.

होस्ट मोड ऐप्लिकेशन

यूएसबी होस्ट मोड के ऑडियो ऐप्लिकेशन में ये शामिल हैं:

  • संगीत सुनना
  • टेलीफ़ोनी
  • इंस्टैंट मैसेज और वॉइस चैट
  • रिकॉर्डिंग

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

यूएसबी डिजिटल ऑडियो के लिए कोई एपीआई नहीं है. बेहतर तरीके से इस्तेमाल करने के लिए, अपने-आप रूटिंग की सुविधा, यूएसबी के साथ काम करने वाले ऐप्लिकेशन के साथ रुकावट डाल सकती है. ऐसे ऐप्लिकेशन के लिए, सेटिंग / डेवलपर के लिए सेटिंग और टूल के मीडिया सेक्शन में जाकर, अपने-आप रूटिंग होने की सुविधा बंद करें.

होस्ट मोड में डीबग करना

यूएसबी होस्ट मोड में, यूएसबी के ज़रिए adb डीबगिंग की सुविधा उपलब्ध नहीं है. इसके विकल्प के तौर पर, Android डीबग ब्रिज के वायरलेस इस्तेमाल सेक्शन को देखें.

यूएसबी ऑडियो लागू करना

ऑडियो से जुड़े डिवाइस बेचने वाली कंपनियों के लिए सुझाव

Android डिवाइसों के साथ काम करने के लिए, ऑडियो डिवाइसों के वेंडर को ये काम करने चाहिए:

  • ऑडियो क्लास के नियमों का पालन करने के लिए डिज़ाइन करना; फ़िलहाल, Android क्लास 1 को टारगेट करता है, लेकिन क्लास 2 के लिए प्लान करना बेहतर होगा
  • क्विर्क से बचना
  • रेफ़रंस और लोकप्रिय Android डिवाइसों के साथ इंटरऑपरेबिलिटी (टूल का एक-दूसरे के साथ काम करना) की जांच करना
  • काम करने वाली सुविधाओं, ऑडियो क्लास के पालन, बिजली की ज़रूरतों वगैरह की जानकारी साफ़ तौर पर दें, ताकि उपभोक्ता सही फ़ैसले ले सकें

Android डिवाइस बनाने वाली OEM कंपनियों और SoC वेंडर के लिए सुझाव

यूएसबी डिजिटल ऑडियो की सुविधा इस्तेमाल करने के लिए, डिवाइस के OEM और SoC वेंडर को ये काम करने होंगे:

  • यूएसबी होस्ट मोड के साथ काम करने वाला हार्डवेयर डिज़ाइन करना
  • android.hardware.usb.host.xml सुविधा फ़्लैग की मदद से, फ़्रेमवर्क लेवल पर सामान्य यूएसबी होस्ट की सुविधा चालू करना
  • सभी ज़रूरी कर्नेल सुविधाएं चालू करें: यूएसबी होस्ट मोड, यूएसबी ऑडियो, आइसोक्रोनस ट्रांसफ़र मोड
  • हाल ही में रिलीज़ किए गए कर्नेल और पैच के साथ अप-टू-डेट रहें; क्लास के मुताबिक काम करने के अच्छे लक्ष्य के बावजूद, ऐसे ऑडियो डिवाइस मौजूद हैं जिनमें गड़बड़ियां हैं. हाल ही में रिलीज़ किए गए कर्नेल में, ऐसी गड़बड़ियों को ठीक करने के तरीके मौजूद हैं
  • यूएसबी ऑडियो नीति को नीचे बताए गए तरीके से चालू करें
  • device.mk में PRODUCT_PACKAGES में audio.usb.default जोड़ें
  • आम तौर पर इस्तेमाल होने वाले यूएसबी ऑडियो पेरिफ़ेरल के साथ काम करने की जांच करना

यूएसबी ऑडियो नीति चालू करना

यूएसबी ऑडियो को चालू करने के लिए, ऑडियो नीति कॉन्फ़िगरेशन फ़ाइल में एक एंट्री जोड़ें. आम तौर पर, यह यहां होता है:

device/oem/codename/audio_policy.conf

पाथनेम कॉम्पोनेंट "oem" को, Android डिवाइस बनाने वाले ओईएम के नाम से बदला जाना चाहिए. साथ ही, "codename" को डिवाइस के कोड नेम से बदला जाना चाहिए.

एंट्री का एक उदाहरण यहां दिया गया है:

audio_hw_modules {
  ...
  usb {
    outputs {
      usb_accessory {
        sampling_rates 44100
        channel_masks AUDIO_CHANNEL_OUT_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_OUT_USB_ACCESSORY
      }
      usb_device {
        sampling_rates dynamic
        channel_masks dynamic
        formats dynamic
        devices AUDIO_DEVICE_OUT_USB_DEVICE
      }
    }
    inputs {
      usb_device {
        sampling_rates dynamic
        channel_masks AUDIO_CHANNEL_IN_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_IN_USB_DEVICE
      }
    }
  }
  ...
}

सोर्स कोड

यूएसबी ऑडियो के लिए, ऑडियो हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल) को लागू करने का तरीका यहां बताया गया है:

hardware/libhardware/modules/usbaudio/

यूएसबी ऑडियो एचएएल, tinyalsa पर काफ़ी निर्भर करता है. इस बारे में ऑडियो के लिए इस्तेमाल होने वाले शब्द में बताया गया है. यूएसबी ऑडियो, आइसोक्रोनस ट्रांसफ़र पर निर्भर करता है. हालांकि, ALSA के लागू होने से, इसे अलग कर दिया जाता है. इसलिए, यूएसबी ऑडियो एचएएल और tinyalsa को यूएसबी प्रोटोकॉल के इस हिस्से के बारे में चिंता करने की ज़रूरत नहीं है.

यूएसबी ऑडियो की जांच करना

यूएसबी ऑडियो के लिए सीटीएस टेस्टिंग के बारे में जानकारी पाने के लिए, यूएसबी ऑडियो सीटीएस की पुष्टि करने वाले टेस्ट देखें.