USB उपकरणों पर पसंदीदा मिक्सर विशेषताएँ

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

यह सुविधा USB उपकरणों के लिए वैकल्पिक बिट-परफेक्ट प्लेबैक मिक्सर व्यवहार के लिए भी समर्थन प्रदान करती है। बिट-परफेक्ट मोड संगत डिजिटल से एनालॉग कनवर्टर्स (डीएसी) पर मास्टर क्वालिटी प्रमाणित (एमक्यूए) और डायरेक्ट स्ट्रीम डिजिटल (डीएसडी) प्रारूपों के लिए प्लेबैक सक्षम बनाता है।

इंटरफेस

ऑडियो नीति प्रबंधक फ्रेमवर्क में मिक्सर विशेषताओं को संभालता है। AudioMixerAttributes वर्ग मिक्सर की विशेषताओं का प्रतिनिधित्व करता है। AudioMixerAttributes वर्ग में एक AudioFormat ऑब्जेक्ट शामिल है जो मिक्सर के लिए ऑडियो डेटा प्रारूप, चैनल मास्क और नमूना दर का वर्णन करता है। डिफ़ॉल्ट रूप से, फ़्रेमवर्क मिक्सर व्यवहार को निर्धारित करता है, जो सभी ऑडियो स्रोतों को मिश्रित करता है और वॉल्यूम नियंत्रण और प्रभाव लागू करता है।

यदि मिक्सर व्यवहार BIT_PERFECT मोड का उपयोग करता है, तो सिस्टम ऑडियो सामग्री को बिना किसी संशोधन के ऑडियो फ्रेमवर्क, HAL और वैकल्पिक रूप से डिजिटल सिग्नल प्रोसेसर (DSP) के माध्यम से एपीआई से यूएसबी डिवाइस तक भेजता है। BIT_PERFECT मोड एमक्यूए या डीएसडी जैसे एन्कोडेड प्रारूपों का समर्थन करता है, जिस पर कोई भी वॉल्यूम स्केलिंग या मिश्रण डेटा के अर्थ को नष्ट कर सकता है।

जब ऐप्स मिक्सर विशेषताओं को कॉन्फ़िगर करते हैं, तो आवश्यकता पड़ने पर फ्रेमवर्क नई विशेषताओं के साथ आउटपुट स्ट्रीम को फिर से खोल देता है। जब मिक्सर विशेषताएँ सेट की जाती हैं तो निम्न चित्र ऐप, फ्रेमवर्क और HAL के बीच इंटरफ़ेस दिखाता है:

preferred-mixer-attr

चित्र 1. ऐप, फ्रेमवर्क और एचएएल के बीच इंटरफ़ेस।

कार्यान्वयन

USB ऑडियो के लिए BIT_PERFECT विशेषता के अलावा पसंदीदा मिक्सर विशेषताओं का कार्यान्वयन Android 14 के लिए अनिवार्य है।

पसंदीदा मिक्सर विशेषताएँ

पसंदीदा मिक्सर विशेषताओं का समर्थन करने के लिए, विक्रेताओं को यूएसबी डिवाइस को डायनेमिक मिक्स पोर्ट पर रूट करने का समर्थन करना चाहिए, निम्नानुसार:

  1. usb_audio_policy_configuration.xml में डायनामिक मिक्स पोर्ट को परिभाषित करें।

  2. ऑडियो नीति कॉन्फ़िगरेशन में या getAudioPorts और getAudioRoutes AIDL विधियों में USB उपकरणों को डायनामिक मिक्स पोर्ट पर रूट करने की क्षमता की घोषणा करें।

hardware/libhardware/modules/usbaudio के अंतर्गत USB ऑडियो HAL के लिए संदर्भ कार्यान्वयन देखें। frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml में डायनामिक मिक्स पोर्ट का एक उदाहरण देखें।

बिट-परिपूर्ण प्लेबैक विशेषता

बिट-परफेक्ट प्लेबैक विशेषता वैकल्पिक है और केवल ऑडियो एचएएल के एआईडीएल कार्यान्वयन में समर्थित है। बिट-परफेक्ट प्लेबैक का समर्थन करने के लिए, विक्रेताओं को डायनेमिक मिक्स पोर्ट में बिट-परफेक्ट आउटपुट फ़्लैग AUDIO_OUTPUT_FLAG_BIT_PERFECT जोड़ना होगा जिसे USB डिवाइस पर रूट किया जा सकता है।

निम्नलिखित कोड नमूना usb_audio_policy_configuration.xml में AUDIO_OUTPUT_FLAG_BIT_PERFECT ध्वज का उपयोग दिखाता है:

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

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

मान्यकरण

USB उपकरणों के लिए पसंदीदा मिक्सर विशेषताओं के समर्थन को मान्य करने के लिए PreferredMixerAttributesTestActivity.java में CTS परीक्षण चलाएँ।

BIT_PERFECT विशेषता के कार्यान्वयन को मान्य करने के लिए, USB DAC का उपयोग करें जो पल्स-कोड मॉड्यूलेशन (PCM) ऑडियो प्रारूपों पर MQA और DSD का समर्थन करता है।