Android 14, डेवलपर एपीआई उपलब्ध कराता है इसका इस्तेमाल करके, ऐप्लिकेशन, यूएसबी के लिए पसंदीदा मिक्सर एट्रिब्यूट को क्वेरी और कॉन्फ़िगर कर सकते हैं ऑडियो प्लेबैक. पसंदीदा मिक्सर एट्रिब्यूट यूएसबी से ऑडियो चलाने का अनुभव बेहतर बना सकते हैं. इसके लिए, ऐप्लिकेशन को ऑडियो फ़ॉर्मैट सेट करने की अनुमति देनी होगी, चैनल मास्क, सैंपल रेट, और मिक्सर के काम करने का तरीका. पसंदीदा विकल्पों का इस्तेमाल करके इस सुविधा के साथ काम करने वाले यूएसबी डिवाइसों पर मिक्सर एपीआई की मदद से, लोग वीडियो स्ट्रीम होने और उसके दिखने के समय का अंतर कम कर सकते हैं और हाई रिज़ॉल्यूशन ऑडियो कॉन्टेंट अपलोड करते हैं.
यह सुविधा, वैकल्पिक बिट-परफ़ेक्ट प्लेबैक मिक्सर के साथ भी काम करती है यूएसबी डिवाइसों के काम करने का तरीका. बिट-परफ़ेक्ट मोड, मास्टर के लिए प्लेबैक को सक्षम करता है इन विज्ञापनों में क्वालिटी पुष्टि (MQA) और डायरेक्ट स्ट्रीम डिजिटल (DSD) फ़ॉर्मैट के साथ काम करने वाले डिजिटल से एनालॉग कन्वर्टर (DACs).
इंटरफ़ेस
ऑडियो पॉलिसी मैनेजर, फ़्रेमवर्क में मिक्सर एट्रिब्यूट को हैंडल करता है. कॉन्टेंट बनाने
AudioMixerAttributes
क्लास, मिक्सर के एट्रिब्यूट दिखाती है. AudioMixerAttributes
क्लास में
AudioFormat
ऐसा ऑब्जेक्ट जो ऑडियो डेटा के फ़ॉर्मैट, चैनल मास्क, और सैंपल रेट की जानकारी देता है
मिक्सर. डिफ़ॉल्ट रूप से, फ़्रेमवर्क यह तय करता है कि मिक्सर का व्यवहार किस तरह
सभी ऑडियो सोर्स से कनेक्ट किया जाता है. साथ ही, वॉल्यूम कंट्रोल और इफ़ेक्ट लागू किए जाते हैं.
अगर मिक्सर के काम करने के तरीके में BIT_PERFECT
मोड का इस्तेमाल होता है, तो सिस्टम ऑडियो भेजता है
ऑडियो फ़्रेमवर्क, एचएएल, और वैकल्पिक रूप से ऐसे कॉन्टेंट में कोई बदलाव नहीं किया जाना चाहिए
डिजिटल सिग्नल प्रोसेसर (डीएसपी), एपीआई से लेकर यूएसबी डिवाइस तक. कॉन्टेंट बनाने
BIT_PERFECT
मोड, कोड में बदले गए फ़ॉर्मैट के साथ काम करता है. जैसे, MQA या DSD. ऐसे फ़ॉर्मैट पर किसी भी तरह के कोड का इस्तेमाल किया जा सकता है
वॉल्यूम स्केलिंग या मिक्सिंग से डेटा का मतलब खत्म हो सकता है.
जब ऐप्लिकेशन मिक्सर के एट्रिब्यूट कॉन्फ़िगर करते हैं, तो फ़्रेमवर्क आउटपुट स्ट्रीम को फिर से खोलता है अगर ज़रूरी हो, तो नए एट्रिब्यूट भी जोड़े जा सकते हैं. नीचे दिए गए डायग्राम में, दोनों के बीच का इंटरफ़ेस दिखाया गया है जब मिक्सर एट्रिब्यूट सेट होते हैं, तब ऐप्लिकेशन, फ़्रेमवर्क, और एचएएल:
पहला डायग्राम. ऐप्लिकेशन, फ़्रेमवर्क, और एचएएल के बीच का इंटरफ़ेस.
लागू करना
BIT_PERFECT
के अलावा पसंदीदा मिक्सर एट्रिब्यूट को लागू करना
यूएसबी ऑडियो के लिए, Android 14 के लिए यह ज़रूरी है.
मिक्सर के पसंदीदा एट्रिब्यूट
पसंदीदा मिक्सर एट्रिब्यूट के साथ काम करने के लिए, वेंडर को रूटिंग यूएसबी डिवाइसों की सुविधा देनी होगी में यहां बताए गए तरीके से बदलाव करें:
usb_audio_policy_configuration.xml
में डाइनैमिक मिक्स पोर्ट तय करें.यूएसबी डिवाइसों को डाइनैमिक मिक्स पोर्ट पर रूट करने की सुविधा इनमें से किसी एक में बताएं ऑडियो नीति को कॉन्फ़िगर करना या
getAudioPorts
औरgetAudioRoutes
एआईडीएल तरीके में.
hardware/libhardware/modules/usbaudio
में, यूएसबी ऑडियो एचएएल के लिए रेफ़रंस लागू करने का तरीका देखें.
frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml
में डाइनैमिक मिक्स पोर्ट का उदाहरण देखें.
बिट-परफ़ेक्ट प्लेबैक एट्रिब्यूट
बिट-परफ़ेक्ट प्लेबैक एट्रिब्यूट ज़रूरी नहीं है और यह सिर्फ़ एआईडीएल में काम करता है
ऑडियो एचएएल को लागू करना. बिलकुल सटीक प्लेबैक का समर्थन करने के लिए, वेंडर को यह करना होगा
डाइनैमिक में बिट-परफ़ेक्ट आउटपुट फ़्लैग AUDIO_OUTPUT_FLAG_BIT_PERFECT
जोड़ें
USB डिवाइस में रूट किए जा सकने वाले मिक्स पोर्ट को.
नीचे दिया गया कोड सैंपल, AUDIO_OUTPUT_FLAG_BIT_PERFECT
के इस्तेमाल को दिखाता है
usb_audio_policy_configuration.xml
में फ़्लैग:
<module name="usb" halVersion="2.0">
<mixPorts>
<mixPort name="hifi_output"
role="source" flags="AUDIO_OUTPUT_FLAG_BIT_PERFECT">
</mixPort>
</mixPorts>
<devicePorts>
<devicePort tagName="USB Device Out"
type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
</devicePort>
</devicePorts>
<routes>
<route type="mix" sink="USB Device Out"
sources="hifi_output"/>
</routes>
</module>
अगर बिट-परफ़ेक्ट प्लेबैक एट्रिब्यूट दिया गया है, तो एचएएल को यह पक्का करना होगा कि ऑडियो स्ट्रीम को बिना किसी बदलाव के यूएसबी डिवाइस पर भेजा जाता है, ऑडियो स्ट्रीम में वॉल्यूम स्केलिंग, सैंपल रेट कन्वर्ज़न या ऑडियो नहीं होना चाहिए प्रोसेसिंग इफेक्ट्स हैं और इन्हें DSP में मिलाया नहीं जाना चाहिए. इस मामले में, हार्डवेयर वॉल्यूम को कंट्रोल करता है, क्योंकि फ़्रेमवर्क उपलब्ध नहीं कराता किसी भी तरह के सॉफ़्टवेयर की आवाज़ को कंट्रोल करने की सुविधा मिलती है.
पुष्टि करें
सीटीएस टेस्ट इसमें हों
PreferredMixerAttributesTestActivity.java
का इस्तेमाल करें.
BIT_PERFECT
एट्रिब्यूट लागू करने की पुष्टि करने के लिए, ऐसे यूएसबी डीएसी इस्तेमाल करें जो
ये पल्स-कोड मॉड्यूलेशन (पीसीएम) वाले ऑडियो फ़ॉर्मैट पर, एमक्यूए और डीएसडी के साथ काम करते हैं.