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