Android 16 से, एआईडीएल ऑडियो एचएएल इंटरफ़ेस, कॉन्फ़िगर की जा सकने वाली ऑडियो नीति (सीएपी) के साथ पूरी तरह से काम करता है.
इस पेज पर, ऑडियो नीति के कॉन्फ़िगरेशन को माइग्रेट करने में पार्टनर और SoC के वेंडर की मदद करने के लिए, ज़रूरी तकनीकी जानकारी दी गई है.
पैरामीटर फ़्रेमवर्क
सीएपी को लागू करने का तरीका, Intel पैरामीटर फ़्रेमवर्क पर आधारित है. सीएपी को Android 6 में पेश किया गया था. पैरामीटर फ़्रेमवर्क (PfW) की मदद से, किसी सिस्टम के बारे में पैरामीटर के हिसाब से बताया जा सकता है. कॉन्फ़िगरेशन एक्सएमएल फ़ाइल का इस्तेमाल करके, PfW प्लग इन का इस्तेमाल करके पैरामीटर को ऐक्शन से बांधता है. साथ ही, मौजूदा शर्तों के हिसाब से पैरामीटर बदलने के लिए नियम उपलब्ध कराता है.
HIDL में CAP का स्ट्रक्चर
एचआईडीएल में, सीएपी के लिए सभी कॉन्फ़िगरेशन एक्सएमएल में बताए गए थे. ज़्यादा जानकारी के लिए, पैरामीटर फ़्रेमवर्क और पैरामीटर फ़्रेमवर्क का इस्तेमाल करके कॉन्फ़िगरेशन देखें. एक्सएमएल फ़ाइलों का इस्तेमाल इनके बारे में बताने के लिए किया गया था:
- पैरामीटर के स्ट्रक्चर के बारे में जानकारी (यानी, PfW के लिए ऑडियो डोमेन के बारे में जानकारी)
- शर्तों की परिभाषाएं
- रूटिंग की रणनीतियों के लिए नियम (इनपुट और आउटपुट डिवाइस चुनना)
- वॉल्यूम टेबल की जानकारी
HIDL की मदद से, Android फ़्रेमवर्क इन एक्सएमएल फ़ाइलों को सीधे वेंडर पार्टीशन से लोड कर पाता था. इसकी अनुमति इसलिए दी गई थी, क्योंकि इन एक्सएमएल फ़ाइलों के लिए, एचएएल एपीआई के हिस्से के तौर पर एक एक्सएसडी स्कीमा तय किया गया था. HIDL HAL के हर मेजर वर्शन के लिए, एक XSD स्कीमा होता था. बड़ी रिलीज़ के लिए, पुराने सिस्टम के साथ काम करने की ज़रूरत नहीं थी.
एआईडीएल में सीएपी का स्ट्रक्चर
एआईडीएल पर ट्रांज़िशन के बाद, एचएएल एपीआई रिलीज़, पिछली रिलीज़ के साथ काम करती रहेंगी. एचआईडीएल के हिसाब से, एआईडीएल एचएएल की हर रिलीज़ एक "मामूली" अपडेट होती है. एचएएल एपीआई के हिस्से के तौर पर, अब XSD स्कीमा का इस्तेमाल नहीं किया जा सकता. ऐसा इसलिए है, क्योंकि स्कीमा में ऐसे अपडेट तय करने का कोई तरीका नहीं है जो पुराने वर्शन के साथ काम करते हों. इसलिए, पहले एक्सएमएल फ़ाइलों में तय किया गया कॉन्फ़िगरेशन, अब एआईडीएल एपीआई का इस्तेमाल करके एचएएल को उपलब्ध कराना होगा. इसे आसान बनाने के लिए, CAP कॉन्फ़िगरेशन के स्ट्रक्चर को एआईडीएल में बदल दिया गया है. यह Android 15 के लिए, एआईडीएल ऑडियो एचएएल में ऑडियो नीति कॉन्फ़िगरेशन एक्सएमएल की तरह ही है.
सीएपी के लिए डेटा स्ट्रक्चर, सामान्य स्टैबल डेटा टाइप में जोड़े जाते हैं. इनमें ये पार्सल किए जा सकने वाले आइटम शामिल होते हैं:
AudioHalCapConfiguration.aidl
AudioHalCapCriterionV2.aidl
AudioHalCapDomain.aidl
AudioHalCapParameter.aidl
AudioHalCapRule.aidl
सीएपी कॉन्फ़िगरेशन का एंट्री पॉइंट, AudioHalEngineConfig.CapSpecificConfig
स्ट्रक्चर में होता है. सीएपी डेटा स्ट्रक्चर का डायग्राम देखने के लिए, AudioHalCapConfiguration.aidl
में मौजूद टिप्पणियां देखें.
एआईडीएल एचएएल के डिफ़ॉल्ट तौर पर लागू होने वाले वर्शन में, एक हेल्पर क्लास होती है. यह पार्टनर के लिए माइग्रेशन को आसान बनाने के लिए, लेगसी सीएपी एक्सएमएल फ़ाइलों के कॉन्टेंट के आधार पर, एआईडीएल पार्सलबल भरती है.
माइग्रेशन की स्थितियां
पार्टनर, इस सेक्शन में दिए गए विकल्पों को इस आधार पर चुन सकते हैं कि क्या यह किसी ऐसे प्रॉडक्ट का पहला लॉन्च है जो पहले सीएपी का इस्तेमाल नहीं कर रहा था या किसी मौजूदा प्रॉडक्ट को माइग्रेट किया जा रहा है.
नया प्रॉडक्ट
ऑडियो नीति लागू करने के लिए CAP का इस्तेमाल करने वाले नए प्रॉडक्ट के लिए, OEM, वेंडर साइड पर CAP कॉन्फ़िगरेशन को सेव करने के लिए, एक्सएमएल का इस्तेमाल कर सकता है.
एक्सएमएल का इस्तेमाल करने का फ़ायदा यह है कि इसमें स्क्रिप्टिंग टूल का एक सेट मौजूद होता है. इनकी मदद से, हाई लेवल की जानकारी से कॉन्फ़िगरेशन जनरेट किया जा सकता है.
अगर OEM, वेंडर के partition पर CAP कॉन्फ़िगरेशन को सेव करने के लिए एक्सएमएल का इस्तेमाल करता है, तो हमारा सुझाव है कि कॉन्फ़िगरेशन को AIDL में बदलने के लिए, एक्सएमएल पार्स करने वाले टूल के डिफ़ॉल्ट तरीके का इस्तेमाल करें.
मौजूदा प्रॉडक्ट के लिए अपडेट
अगर प्रॉडक्ट पहले से ही सीएपी का इस्तेमाल करता है और उसमें एक्सएमएल कॉन्फ़िगरेशन है, तो एचएएल के एआईडीएल वर्शन के साथ मौजूदा सीएपी का इस्तेमाल जारी रखा जा सकता है.
CAP कॉन्फ़िगरेशन के HIDL और AIDL वर्शन में, प्रॉडक्ट की रणनीतियों के लिए नाम रखने का तरीका अलग-अलग होता है. HIDL में, पहले से मौजूद ("लेगसी") रणनीतियों में, media
जैसे छोटे नामों का इस्तेमाल किया जाता है. वहीं, एआईडीएल में, पहले से मौजूद रणनीतियों में STRATEGY_
के साथ सभी कैप वाले नामों का इस्तेमाल किया जाता है. उदाहरण के लिए, STRATEGY_MEDIA
. CapProductStrategies.xml
में, पहले से मौजूद रणनीतियों की सूची देखें.
यह फ़ाइल, OEM के हिसाब से बनी रणनीतियों के लिए "पहले से तय किए गए" आईडी तय करती है. ये आईडी, vx_10xx
के नाम वाले पैटर्न के हिसाब से तय किए जाते हैं. इनमें 1000
से 1039
तक की संख्याएं होती हैं.
लेगसी प्रॉडक्ट
अगर सीएपी पर निर्भर रहने वाला प्रॉडक्ट, अपने वेंडर पार्टिशन को अपडेट नहीं करता और HIDL पर बना रहता है, तो सिस्टम पार्टिशन को Android 16 पर अपडेट किया जा सकता है. यह फ़्रेमवर्क, लेगसी सीएपी कॉन्फ़िगरेशन के साथ काम करता रहेगा.
लागू करने का उदाहरण
पार्टनर अपने प्लैटफ़ॉर्म के लिए सीएपी लागू कर सकें, इसके लिए AOSP में Cuttlefish वर्चुअल डिवाइस के "ऑटोमोटिव" फ़्लेवर का उदाहरण दिया गया है. यह डिवाइस, एआईडीएल एचएएल के साथ सीएपी का इस्तेमाल करता है. डिवाइस के हिसाब से कॉन्फ़िगरेशन, device/google/cuttlefish/shared/auto/audio/policy/engine में मौजूद होता है. इसमें aosp_cf_x86_64_auto
का टारगेट नाम lunch
होता है. CAP वेंडर फ़ाइलों का पूरा सेट जनरेट करने के लिए, Android.bp
फ़ाइल का इस्तेमाल रेफ़रंस के तौर पर किया जा सकता है.