मल्टी-ज़ोन ऑडियो रूटिंग

कार ऑडियो सेवा कारों में उपयोग के मामलों को सुविधाजनक बनाने के लिए कोर ऑडियो डायनेमिक ऑडियो नीति का उपयोग करती है।

  • प्रत्येक यात्री के लिए अलग ऑडियो प्लेबैक, जिसे मल्टी-ज़ोन ऑडियो कहा जाता है, जिसमें प्रत्येक ज़ोन ध्वनि के समवर्ती प्लेबैक की अनुमति देता है।

  • डायनामिक ऑडियो ज़ोन कॉन्फ़िगरेशन.

  • पैसेंजर प्राइमरी ज़ोन ऑडियो कास्ट।

  • यात्री का ऑडियो मिरर.

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

मल्टी-ज़ोन ऑडियो

मल्टी-ज़ोन ऑडियो कई उपयोगकर्ताओं को AAOS के साथ एक साथ इंटरैक्ट करने में सक्षम बनाता है। आउटपुट डिवाइस का एक सेट एक ज़ोन से जुड़ा होता है, और प्रत्येक ज़ोन ऑडियो फ़ोकस और वॉल्यूम स्तर को बनाए रखता है। यात्री अपना ऑडियो सुन सकते हैं जबकि ड्राइवर प्राथमिक क्षेत्र (आमतौर पर, मुख्य केबिन) में किसी अन्य स्रोत को सुनता है।

मल्टी-ज़ोन ऑडियो आर्किटेक्चर

कार ऑडियो सेवा वास्तुकला

चित्र 1. कार ऑडियो सेवा वास्तुकला।

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

कार ऑडियो कॉन्फ़िगरेशन

आमतौर पर, आउटपुट डिवाइस को एक ऑडियो ज़ोन को सौंपा जाता है। प्रत्येक ऑडियो ज़ोन को car_audio_configuration.xml में परिभाषित किया गया है। निम्नलिखित कोड स्निपेट चित्र 1 के लिए कार ऑडियो कॉन्फ़िगरेशन दिखाता है:

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone0" audioZneId="0" occupantZoneI="0">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                   <volumeGoups>
                        <group>
                            <device address="bus_1">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_2">
                                <context context="navigation"/>
                            </device>
                        </group>
                        ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_6">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_7">
                                <context context="navigation"/>
                           </device>
                       </group>
                       ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        ...
    ...
   </zones>
</carAudioConfiguration>

occupantZoneId CarOccupantZoneManager द्वारा प्रबंधित एक कार सेवा परिभाषा है। इसका उपयोग कारों में किसी उपयोगकर्ता के लिए विशिष्ट सीट स्थान पर मैपिंग को परिभाषित करने के लिए किया जाता है। CarOccupantZoneService उपयोगकर्ता द्वारा डिस्प्ले में लॉग इन करने के बाद अधिभोगी क्षेत्र से डिस्प्ले, अन्य बाह्य उपकरणों और उपयोगकर्ता तक मैपिंग को भी परिभाषित करता है। एक ऑडियो ज़ोन में है:

  • एक ऑडियो ज़ोन आईडी और एक अधिभोगी ज़ोन आईडी।

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

    • जब वॉल्यूम बदला जाता है, तो समूह के सभी ऑडियो डिवाइस उसी तरह नियंत्रित होते हैं।

    • प्रत्येक ऑडियो डिवाइस को ऑडियो विशेषताओं की एक सूची सौंपी गई है। इस जानकारी का उपयोग अलग-अलग निर्दिष्ट ऑडियो विशेषताओं के साथ ऑडियो नीति मिश्रण बनाने के लिए किया जाता है।

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

मल्टी-ज़ोन ऑडियो यात्री लॉगिन वर्कफ़्लो

जब कोई यात्री अपने संबंधित डिस्प्ले में लॉग इन करता है तो नीचे दिया गया अनुक्रम आरेख ऑडियो रूटिंग को सक्षम करने के लिए प्रवाह दिखाता है:

छवि

चित्र 2।

इस क्रम में, उपयोगकर्ता लॉगिन को ऑक्यूपेंट ज़ोन सेवा के माध्यम से कार ऑडियो सेवा में प्रसारित किया जाता है।

  1. कार ऑडियो सेवा (एक विशिष्ट ऑडियो ज़ोन के लिए) उपयोगकर्ता डिवाइस समानता को हटाने के लिए AudioPolicy#removeUserIdDeviceAffinity API का उपयोग करती है। यह एपीआई एक यूजर आईडी लेता है। इस मामले में, पिछले क्षेत्र का उपयोगकर्ता.

  2. AudioPolicy#setUserIdDeviceAffinity API नए उपयोगकर्ता को एक ज़ोन निर्दिष्ट करता है, जो एक विशिष्ट ज़ोन कॉन्फ़िगरेशन के लिए उपयोगकर्ता आईडी और सभी डिवाइस लेता है।

गतिशील क्षेत्र विन्यास

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

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

डायनामिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो

चित्र 3. डायनेमिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो।

चित्र 3 डायनेमिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो के लिए आर्किटेक्चर का चित्रण करता है। ऑडियो ज़ोन 1 में दो कॉन्फ़िगरेशन, Config 0 और Config 1 शामिल हैं, जो क्रमशः आउटपुट डिवाइस स्पीकर और हेडरेस्ट से जुड़े हैं।

लॉग इन करने पर, उपयोगकर्ता को स्वचालित रूप से डिफ़ॉल्ट कॉन्फ़िगरेशन असाइन किया जाता है। जब उपयोगकर्ता कॉन्फ़िगरेशन बदलने का चुनाव करता है, आमतौर पर सिस्टम यूआई के माध्यम से, कार ऑडियो सेवा दो कॉन्फ़िगरेशन के बीच स्विच निष्पादित करती है। इस तरह, आउटपुट डिवाइस को Z1 स्पीकर और Z1 हेडरेस्ट के बीच स्विच किया जाता है।

नीचे दिया गया कोड स्निपेट इस डायनेमिक ज़ोन कॉन्फ़िगरेशन के लिए सेटअप दिखाता है।

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="Zone 1 Config 0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_100">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
                <zoneConfig name="Zone 1 Config 1">
                    <volumeGroups>
                        <group>
                            <device address="bus_101">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
    </zones>

ऑडियो कॉन्फ़िगरेशन के प्रबंधन की सुविधा के लिए कार ऑडियो प्रबंधक कॉन्फ़िगरेशन को प्रबंधित करने के लिए एपीआई को उजागर करता है:

  • किसी ज़ोन के लिए क्वेरी कॉन्फ़िगरेशन उपलब्ध है.
  • क्वेरी ने वर्तमान में किसी ज़ोन के लिए कॉन्फ़िगरेशन सेट किया है।
  • किसी भिन्न कॉन्फ़िगरेशन पर स्विच करें.

एक सिस्टम यूआई ऐप या सेवा ऑडियो ज़ोन के लिए कॉन्फ़िगरेशन को प्रबंधित करने के लिए इन एपीआई का उपयोग कर सकती है जैसा कि चित्र 4 में दिखाया गया है। क्वेरी एपीआई यात्री को दोनों को उजागर करती है। उपयोगकर्ता वांछित कॉन्फ़िगरेशन के लिए एक कमांड टैप करके एक अलग कॉन्फ़िगरेशन का चयन कर सकता है।

डायनामिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो

चित्र 4. डायनेमिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो।

प्राथमिक क्षेत्र यात्री ऑडियो कास्ट

प्राइमरी जोन पैसेंजर ऑडियो कास्ट एंड्रॉइड 14 में शुरू की गई एक सुविधा है जो यात्रियों को प्राइमरी जोन में अपने मीडिया ऑडियो को कास्ट करने की अनुमति देती है। इस तरीके से यात्री के मीडिया ऑडियो को मुख्य केबिन में डाला जा सकता है जबकि ड्राइवर का पूरा नियंत्रण रहता है।

नीचे दिया गया चित्र प्राथमिक क्षेत्र यात्री मीडिया ऑडियो कास्ट के लिए आर्किटेक्चर का एक सरलीकृत संस्करण दिखाता है।

डायनामिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो

चित्र 5. डायनेमिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो।

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

  • यात्रियों के लिए मीडिया आउटपुट डिवाइस को उपकरणों की सूची से हटा दिया गया है
  • ड्राइवर के लिए मीडिया आउटपुट डिवाइस को डिवाइस की सूची में जोड़ा गया है
  • यात्री ऑडियो ज़ोन के लिए शेष आउटपुट डिवाइस उपकरणों की सूची में बने रहेंगे

उपकरणों की यह नई सूची AudioPolicy#setUserIdDeviceAffinity API द्वारा यात्री को सौंपी गई है। एपीआई को दिए गए पैरामीटर उपकरणों की सूची और यात्री उपयोगकर्ता आईडी हैं। जब ऑडियो सिस्टम की ऑडियो नीति सेवा यह पूछती है कि यात्री से जुड़े मीडिया ट्रैक के लिए कौन सा ऑडियो मिश्रण चुना जाना है, तो प्राथमिक क्षेत्र से जुड़े मीडिया ऑडियो मिश्रण का चयन किया जाता है।

प्राथमिक क्षेत्र ऑडियो कास्ट के लिए एक प्रमुख आवश्यकता यह है कि प्राथमिक क्षेत्र के मीडिया आउटपुट डिवाइस को अन्य ऑडियो विशेषता उपयोगों से अलग किया जाए। अन्यथा, ऑडियो मिश्रण के निर्माण के दौरान, अन्य ऑडियो विशेषताओं को मिश्रण में जोड़ा जाता है। जब मिश्रण का चयन ऑडियो सिस्टम द्वारा किया जाता है, तो मिश्रण से जुड़ी सभी ध्वनियों को मुख्य केबिन में प्लेबैक के लिए चुना जाता है।

यात्री क्षेत्र ऑडियो दर्पण

ऑडियो मिरर सुविधा यात्रियों को ऑडियो साझा करने में सक्षम बनाती है। मिरर सुविधा प्रत्येक ऑडियो ज़ोन में ऑडियो डेटा को डुप्लिकेट करती है ताकि सभी यात्री एक ही ऑडियो सुन सकें। इस मामले में, ऑडियो फोकस को ऑडियो मिररिंग में शामिल यात्रियों के साथ साझा किया जाता है।

ऑडियो मिरर रूटिंग

ऑडियो मिररिंग सक्षम करने के लिए कम से कम दो यात्रियों की आवश्यकता होती है। परिणामस्वरूप, केवल दो यात्री ऑडियो ज़ोन वाले ऑडियो कॉन्फ़िगरेशन के लिए एक दर्पण आउटपुट डिवाइस की आवश्यकता होगी। उपरोक्त परिभाषा के साथ, दो समवर्ती मिररिंग सत्र शुरू किए जा सकते हैं।

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

डायनामिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो

चित्र 6. डायनेमिक ज़ोन कॉन्फ़िगरेशन वर्कफ़्लो।

यह रूटिंग तभी सक्षम होती है जब यात्री मिररिंग मोड में हों। यदि नहीं, तो ऑडियो ज़ोन के लिए संबंधित उपकरण यात्रियों को सौंपे जाते हैं। जब किसी यात्री के लिए पहली बार मिररिंग सक्षम की जाती है, तो AudioPolicy#setUserIdDeviceAffinity API रूटिंग को संशोधित करता है:

  • यात्रियों के लिए मीडिया आउटपुट डिवाइस को उपकरणों की सूची से हटा दिया गया है।
  • मिरर आउटपुट डिवाइस को उपकरणों की सूची में जोड़ा गया।
  • यात्री ऑडियो ज़ोन के लिए शेष आउटपुट डिवाइस उपकरणों की सूची में बने रहेंगे।

उपकरणों की सूची के साथ, उपकरणों की अद्यतन सूची और यात्री की उपयोगकर्ता आईडी के साथ एपीआई को कॉल किया जाता है। निम्नलिखित छवि ऑडियो मिरर वर्कफ़्लो का अनुक्रम आरेख प्रदान करती है।

ऑडियो मिरर वर्कफ़्लो

चित्र 7. ऑडियो मिरर वर्कफ़्लो।

चित्र 7 में, ऑडियो मिररिंग के प्रबंधन के लिए कार ऑडियो प्रबंधक के एपीआई को मीडिया सिस्टम सेवा से बुलाया जाता है। विशेष रूप से, उपयोगकर्ता 1 और उपयोगकर्ता 2 के लिए ऑडियो मिररिंग को सक्षम करने के लिए एपीआई, CarAudioManager#enableMirrorForAudioZones

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

उपरोक्त छवि में, कार ऑडियो सेवा mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20 भेजती है

कहाँ,

bus_1000 स्रोत बस है और bus_10 और bus_20 गंतव्य बसें हैं।

अनुक्रम आरेख में AudioManager#setParameters API के माध्यम से भेजा गया सिग्नल नहीं दिखाया गया है, जो ऑडियो सेवा के माध्यम से HAL तक पहुंचता है।

ऑडियो मिरर को अक्षम करने पर, निम्न सिग्नल भेजा जाता है, mirroring_src=bus_1000;mirroring=off । ऑडियो मिररिंग सक्षम नहीं होने पर ऑडियो डुप्लिकेशन को अक्षम करने के लिए एचएएल द्वारा इस सिग्नल का उपयोग किया जा सकता है। ऑडियो मिररिंग डिवाइस को परिभाषित करने के लिए, कार ऑडियो कॉन्फ़िगरेशन फ़ाइल में mirroringDevices नामक एक अनुभाग होता है, जैसा कि नीचे दिए गए स्निपेट पर दिखाया गया है।

इस स्निपेट में, दो मिररिंग डिवाइस परिभाषित किए गए हैं, bus_1000 और bus_2000 , ताकि चार यात्री ऑडियो मिररिंग का उपयोग कर सकें।

<carAudioConfiguration version="3">
   <mirroringDevices>
       <mirroringDevice address="bus_1000"/>
       <mirroringDevice address="bus_2000"/>
   </mirroringDevices>
  <zones>
    ....
  </zones>
</carAudioConfiguration>