AIDL HAL में, कॉन्फ़िगर की जा सकने वाली ऑडियो नीति का इस्तेमाल

Android 16 से, एआईडीएल ऑडियो एचएएल इंटरफ़ेस, कॉन्फ़िगर की जा सकने वाली ऑडियो नीति (सीएपी) के साथ पूरी तरह से काम करता है.

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

पैरामीटर फ़्रेमवर्क

सीएपी को Intel Parameter Framework के आधार पर लागू किया जाता है. CAP को Android 6 में लॉन्च किया गया था. पैरामीटर फ़्रेमवर्क (पीएफ़डब्ल्यू) की मदद से, किसी सिस्टम को पैरामीटर के हिसाब से बताया जा सकता है. कॉन्फ़िगरेशन वाली एक्सएमएल फ़ाइल का इस्तेमाल करके, PfW प्लगिन का इस्तेमाल करके पैरामीटर को कार्रवाइयों से जोड़ता है. साथ ही, मौजूदा शर्तों के हिसाब से पैरामीटर बदलने के लिए नियम उपलब्ध कराता है.

HIDL में सीएपी का स्ट्रक्चर

एचआईडीएल में, सीएपी के लिए सभी कॉन्फ़िगरेशन एक्सएमएल में तय किए गए थे. ज़्यादा जानकारी के लिए, पैरामीटर फ़्रेमवर्क और पैरामीटर फ़्रेमवर्क का इस्तेमाल करके कॉन्फ़िगरेशन करना लेख पढ़ें. एक्सएमएल फ़ाइलों का इस्तेमाल इन कामों के लिए किया गया था:

  • पैरामीटर के स्ट्रक्चर की जानकारी (यानी कि PfW के लिए ऑडियो डोमेन की जानकारी)
  • मानदंडों की परिभाषाएं
  • रूटिंग की रणनीतियों के नियम (इनपुट और आउटपुट डिवाइस चुनना)
  • वॉल्यूम टेबल की जानकारी

HIDL की मदद से, Android फ़्रेमवर्क इन एक्सएमएल फ़ाइलों को सीधे वेंडर पार्टीशन से लोड कर पाता था. इन XML फ़ाइलों के लिए, HAL API के हिस्से के तौर पर XSD स्कीमा तय किया गया था. इसलिए, इसकी अनुमति दी गई थी. HIDL HAL की हर मुख्य रिलीज़ के लिए, एक XSD स्कीमा होता है. पिछली रिलीज़ के साथ काम करने की सुविधा, मुख्य रिलीज़ के लिए ज़रूरी नहीं थी.

AIDL में सीएपी का स्ट्रक्चर

एआईडीएल पर स्विच करने के बाद, एचएएल एपीआई के रिलीज़ किए गए वर्शन, पिछले वर्शन के साथ काम करने चाहिए. एचआईडीएल के हिसाब से, एआईडीएल एचएएल का हर वर्शन "माइनर" अपडेट होता है. एचएएल एपीआई के हिस्से के तौर पर, अब XSD स्कीमा का इस्तेमाल नहीं किया जा सकता. ऐसा इसलिए है, क्योंकि स्कीमा में बैकवर्ड-कंपैटिबल अपडेट तय करने का कोई तरीका नहीं है. इसलिए, एक्सएमएल फ़ाइलों में पहले से तय किए गए कॉन्फ़िगरेशन को अब HAL को एआईडीएल एपीआई का इस्तेमाल करके देना होगा. इसे आसान बनाने के लिए, CAP कॉन्फ़िगरेशन के स्ट्रक्चर को AIDL में बदल दिया जाता है. यह Android 15 के लिए, AIDL ऑडियो HAL में ऑडियो नीति कॉन्फ़िगरेशन XML के जैसा होता है.

CAP के लिए डेटा स्ट्रक्चर, सामान्य स्टेबल डेटा टाइप में जोड़े जाते हैं. इनमें ये पार्सल शामिल होते हैं:

सीएपी कॉन्फ़िगरेशन का एंट्री पॉइंट, AudioHalEngineConfig.CapSpecificConfig स्ट्रक्चर में होता है. सीएपी डेटा स्ट्रक्चर के डायग्राम के लिए, AudioHalCapConfiguration.aidl में मौजूद टिप्पणियां देखें.

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

माइग्रेशन के उदाहरण

इस सेक्शन में दिए गए विकल्पों के आधार पर, पार्टनर यह तय कर सकते हैं कि उन्हें कौनसे विकल्प चुनने हैं. यह इस बात पर निर्भर करता है कि वे ऐसे प्रॉडक्ट को पहली बार लॉन्च कर रहे हैं जो पहले CAP का इस्तेमाल नहीं करता था या वे किसी मौजूदा प्रॉडक्ट को माइग्रेट कर रहे हैं.

नया प्रॉडक्ट

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

एक्सएमएल का इस्तेमाल करने का फ़ायदा यह है कि स्क्रिप्टिंग टूल का एक सेट मौजूद है. इससे, खास जानकारी से कॉन्फ़िगरेशन जनरेट करने में मदद मिलती है.

अगर ओईएम, वेंडर पार्टीशन पर सीएपी कॉन्फ़िगरेशन सेव करने के लिए एक्सएमएल का इस्तेमाल करता है, तो हमारा सुझाव है कि कॉन्फ़िगरेशन को AIDL में बदलने के लिए, एक्सएमएल पार्सर के डिफ़ॉल्ट तरीके का इस्तेमाल करें.

मौजूदा प्रॉडक्ट के लिए अपडेट

अगर प्रॉडक्ट पहले से ही सीएपी का इस्तेमाल करता है और इस वजह से इसमें एक्सएमएल कॉन्फ़िगरेशन है, तो एचएएल के AIDL वर्शन के साथ मौजूदा सीएपी का इस्तेमाल जारी रखा जा सकता है.

CAP कॉन्फ़िगरेशन के HIDL और AIDL वर्शन में, प्रॉडक्ट की रणनीतियों के लिए नाम रखने के तरीके अलग-अलग होते हैं. HIDL में, पहले से मौजूद ("लेगसी") रणनीतियों में छोटे अक्षरों वाले छोटे नाम इस्तेमाल किए जाते हैं, जैसे कि media. वहीं, AIDL में पहले से मौजूद रणनीतियों में, STRATEGY_ से शुरू होने वाले बड़े अक्षरों वाले नाम इस्तेमाल किए जाते हैं. उदाहरण के लिए, STRATEGY_MEDIA. CapProductStrategies.xml में, पहले से मौजूद रणनीतियों की सूची देखें. इसी फ़ाइल में, ओईएम के हिसाब से तय की गई रणनीतियों के लिए "पहले से असाइन किए गए" आईडी तय किए जाते हैं. ये आईडी, vx_10xx के नाम के पैटर्न के हिसाब से होते हैं. इनमें 1000 से 1039 तक की संख्याएं होती हैं.

लेगसी प्रॉडक्ट

अगर CAP पर निर्भर रहने वाला प्रॉडक्ट, वेंडर पार्टिशन को अपडेट नहीं करता है और HIDL पर बना रहता है, तो सिस्टम पार्टिशन को Android 16 पर अपडेट किया जा सकता है. यह फ़्रेमवर्क, लेगसी सीएपी कॉन्फ़िगरेशन के साथ काम करता है.

लागू करने का उदाहरण

पार्टनर को अपने प्लैटफ़ॉर्म के लिए सीएपी लागू करने में मदद करने के लिए, एओएसपी में Cuttlefish वर्चुअल डिवाइस के "automotive" फ़्लेवर का एक उदाहरण दिया गया है. यह AIDL HAL के साथ सीएपी का इस्तेमाल करता है. डिवाइस के हिसाब से कॉन्फ़िगरेशन, device/google/cuttlefish/shared/auto/audio/policy/engine में मौजूद है. इसका टारगेट नाम aosp_cf_x86_64_auto और lunch है. Android.bp फ़ाइल का इस्तेमाल, CAP वेंडर की फ़ाइलों का पूरा सेट जनरेट करने के लिए किया जा सकता है.