Android 11 और इसके बाद के वर्शन में, डिवाइस बनाने वाली कंपनियां ये काम कर सकती हैं जब किसी ऑडियो डिवाइस में कोई ऑडियो डिवाइस मौजूद हो, तो वह खास ऑडियो इफ़ेक्ट अपने-आप अटैच और चालू कर सकता है ऑडियो कैप्चर या प्लेबैक के लिए चुना गया है. एक बड़ा सुधार यह है कि वीडियो में ऑडियो इफ़ेक्ट डालने की वजह से का इस्तेमाल ऐसे ऑडियो पाथ पर किया जा सकता है जो ऑडियो एचएएल के नीचे पूरी तरह से लागू होता है. और एक आउटपुट डिवाइस) को ऑडियो इफ़ेक्ट फ़्रेमवर्क से कंट्रोल किया जा सकता है.
यह सुविधा मुख्य रूप से वाहन संबंधित OEM के लिए है. हालांकि, इसे किसी दूसरे Android डिवाइस में भी इस्तेमाल किया जा सकता है डिवाइस के नाप या आकार. उदाहरण के लिए, एक ऐप्लिकेशन एफ़एम ट्यूनर पर आवाज़ को बेहतर बनाने की सुविधा का इस्तेमाल कर रहा है ऑडियो DSP के ज़रिए स्पीकर से सीधे कनेक्ट होने पर दिया जाने वाला आउटपुट.
ज़रूरी शर्तें
- किसी अन्य ऑडियो इफ़ेक्ट की तरह, इस इफ़ेक्ट को वेंडर लाइब्रेरी की मदद से लागू किया जाना चाहिए और इस इफ़ेक्ट को सूची में शामिल किया जाना चाहिए
audio_effects.xml
कॉन्फ़िगरेशन फ़ाइल में. - इसका असर प्री-प्रोसेस या पोस्ट-प्रोसेसिंग का होना चाहिए
(
TYPE_PRE_PROC
याTYPE_POST_PROC
को फ़्लैग करेंEffectDescriptor.flags
में सेट है). - अगर असर को लागू करने का तरीका HW ऐक्सेलरेटेड है
(
EffectDescriptor.flags
मेंHW_ACC_TUNNEL
को फ़्लैग किया गया है), इसे किसी ऐसे ऑडियो पाथ से अटैच किया जा सकता है जो पूरी तरह से एचएएल के नीचे होता है (कोई प्लेबैक नहीं) या ऑडियो एचएएल पर खोली गई ऑडियो स्ट्रीम कैप्चर करने की सुविधा मिलती है).
डिवाइस इफ़ेक्ट बनाना और चालू करना
किसी डिवाइस के ऑडियो इफ़ेक्ट को इन दो तरीकों में से किसी एक का इस्तेमाल करके इंस्टैंशिएट किया जा सकता है.
ऑडियो इफ़ेक्ट की कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल करना
इस तरीके में, सिलसिलेवार तरीके से अटैच किए गए ऑडियो इफ़ेक्ट को स्टैटिक तरीके से बनाने की सुविधा मिलती है और सिंक या सोर्स के तौर पर किसी डिवाइस को चुनकर, किसी भी ऑडियो पाथ के लिए चालू किया जा सकता है.
audio_effects.xml
में एक खास सेक्शन जोड़कर ऐसा किया जाता है
फ़ाइल को इस प्रकार से फ़ाइल करें:
<deviceEffects> <devicePort type="AUDIO_DEVICE_IN_BUILTIN_MIC" address="bottom"> <apply effect="agc"/> </devicePort> </deviceEffects>
सिस्टम एपीआई का इस्तेमाल करना
एक नया @SystemApi कंस्ट्रक्टर
android.media.audiofx.AudioEffect
क्लास का इस्तेमाल करके, डिवाइस इफ़ेक्ट बनाएं और चालू करें:
AudioEffect(@NonNull UUID uuid, @NonNull AudioDeviceAttributes device);
यूनीक ऑडियो इफ़ेक्ट आईडी और ऑडियो डिवाइस डिस्क्रिप्टर की जानकारी देकर, इफ़ेक्ट बनाने के बाद, इसे मौजूदा AudioEffect एपीआई की मदद से, चालू या बंद किया जा सकता है.
अगर एपीआई लागू करने के किसी दिए गए डिवाइस/इफ़ेक्ट के कॉम्बिनेशन के साथ काम करता है, तो क्वेरी करने के लिए भी एपीआई उपलब्ध है.
static boolean isEffectSupportedForDevice( @NonNull UUID uuid, @NonNull AudioDeviceAttributes device);
नए एचएएल एपीआई
ऑडियो इफ़ेक्ट एचएएल
createEffect()
तरीके के लिए, ऑडियो इफ़ेक्ट HAL V6.0 में नया हस्ताक्षर जोड़ा गया है
इससे डिवाइस से अटैच किए गए इफ़ेक्ट को बनाने की अनुमति दी जा सकती है:
IEffectFactory::createEffect(Uuid uid, AudioSession session, AudioIoHandle ioHandle, AudioPortHandle device)
- तय किया गया
AudioSession
,AudioSessionConsts.DEVICE
होना चाहिए. AudioIoHandle
को अनदेखा कर दिया जाता है, अगरsession
AudioSessionConsts.DEVICE
.device
की पहचान, ऑडियो फ़्रेमवर्क के ज़रिए असाइन किए गए उसके यूनीकAudioPortHandle
से की जाती है. ऐसा तब होता है, जब डिवाइस को यहां से चुना जाता हैIDevice::createAudioPatch()
तरीके से ऑडियो HAL.
ऑडियो एचएएल
डिवाइस इफ़ेक्ट की सुविधा के साथ काम करने के लिए, ऑडियो एचएएल को ऑडियो रूटिंग लागू करना होगा
को कंट्रोल करने के लिए, IDevice::createAudioPatch()
API का इस्तेमाल करें. यह
IDevice::supportsAudioPatches()
मेथड रिपोर्टिंग true
.
एपीआई के दो नए तरीके,
IDevice::addDeviceEffect(AudioPortHandle device, uint64_t effectId)
और
IDevice::removeDeviceEffect(AudioPortHandle device, uint64_t effectId)
एचएएल को लागू करने की प्रोसेस को बताता है कि डिवाइस इफ़ेक्ट को चालू या बंद कर दिया गया है
.
डिवाइस की पहचान उसके AudioPortHandle
आईडी से की जाती है. इसका इस्तेमाल तब किया जाता है, जब
पैच को IDevice::createAudioPatch()
तरीके से बनाया गया है.
ऑडियो एचएएल एपीआई का इस्तेमाल, लागू करने के तरीके से किया जा सकता है. ऐसा तब किया जा सकता है, जब इफ़ेक्ट को चालू या बंद करने पर, ऑडियो और इफ़ेक्ट एचएएल.