Android 13 में, ओईएम के लिए एक स्टैंडर्ड तरीका पेश किया गया है. इससे वे वेंडर के हिसाब से किए गए कस्टम बदलावों या एसडीके की ज़रूरत के बिना, स्पेशल ऑडियो और हेड ट्रैकिंग की सुविधा दे सकते हैं.
स्पेशल ऑडियो एक ऐसी टेक्नोलॉजी है जिसका इस्तेमाल, सुनने वाले व्यक्ति के आस-पास एक साउंड फ़ील्ड बनाने के लिए किया जाता है. स्पेशल ऑडियो की सुविधा की मदद से, उपयोगकर्ता चैनलों और अलग-अलग आवाज़ों को उन जगहों पर सुन पाते हैं जहां ऑडियो डिवाइस के ट्रांसड्यूसर की फ़िज़िकल पोज़िशन अलग-अलग होती हैं. उदाहरण के लिए, स्पेशल ऑडियो की सुविधा से उपयोगकर्ता, हेडफ़ोन पर मल्टीचैनल साउंडट्रैक सुन सकता है. स्पेशल ऑडियो की सुविधा का इस्तेमाल करने वाले लोग, हेडफ़ोन से अपने सामने चल रहे डायलॉग और अपने पीछे चल रहे सराउंड इफ़ेक्ट को सुन सकते हैं. भले ही, उनके हेडफ़ोन में सिर्फ़ दो ट्रांसड्यूसर हों.
हेड ट्रैकिंग की मदद से, उपयोगकर्ता को यह समझने में मदद मिलती है कि उसके सिर के चारों ओर, वर्चुअल साउंड स्टेज किस तरह से काम कर रहा है. यह सुविधा सिर्फ़ तब काम करती है, जब लेटेंसी कम हो. लेटेंसी का मतलब है कि उपयोगकर्ता के सिर हिलाने और वर्चुअल स्पीकर की पोज़िशन में बदलाव होने के बीच कितना समय लगता है.
Android 13, स्थान-संबंधी ऑडियो और हेड ट्रैकिंग की सुविधा को ऑप्टिमाइज़ करता है. इसके लिए, यह ऑडियो पाइपलाइन में सबसे निचले स्तर पर स्थान-संबंधी ऑडियो प्रोसेसिंग की सुविधा देता है, ताकि कम से कम लेटेन्सी मिल सके.
भवन निर्माण
Android 13 में, Android के ऑडियो फ़्रेमवर्क और एपीआई में बदलाव किया गया है. इससे पूरे नेटवर्क में स्पेशल ऑडियो टेक्नोलॉजी को अपनाने में मदद मिलती है.
इस इमेज में, Android 13 के साथ ऑडियो पाइपलाइन आर्किटेक्चर में किए गए स्पेशल ऑडियो से जुड़े बदलावों के बारे में बताया गया है:
पहली इमेज. स्पेशलाइज़र के साथ ऑडियो पाइपलाइन आर्किटेक्चर
नए मॉडल में, स्पैशलाइज़र ऑडियो फ़्रेमवर्क का हिस्सा है और इसे डिकोडर से अलग कर दिया गया है. स्पेशलाइज़र, मिले-जुले ऑडियो कॉन्टेंट को लेता है और ऑडियो एचएएल को स्टीरियो स्ट्रीम रेंडर करता है. स्पेशलाइज़र को डिकोडर से अलग करने पर, ओईएम डिकोडर और स्पेशलाइज़र के लिए अलग-अलग वेंडर चुन सकते हैं. साथ ही, हेड ट्रैकिंग के लिए राउंड-ट्रिप की ज़रूरी लेटेन्सी हासिल कर सकते हैं. इस नए मॉडल में, हेड ट्रैकिंग के लिए सेंसर फ़्रेमवर्क के हुक भी शामिल हैं.
इस इमेज में, स्पेशल ऑडियो और हेड ट्रैकिंग इफ़ेक्ट के लिए, ऑडियो फ़्रेमवर्क के सिस्टम आर्किटेक्चर के बारे में बताया गया है:
दूसरी इमेज. स्पेशलाइज़र और हेड ट्रैकिंग की सुविधा वाला सिस्टम आर्किटेक्चर
सभी स्पेशल ऑडियो एपीआई को ऐप्लिकेशन लेवल पर, public
Spatializer
क्लास में ग्रुप किया जाता है. ऑडियो सेवा में मौजूद SpatializerHelper
क्लास, सिस्टम यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट के साथ इंटरैक्ट करता है. इससे, प्लैटफ़ॉर्म और कनेक्ट किए गए डिवाइस की क्षमताओं के आधार पर, स्पैटियलाइज़र से जुड़ी सुविधाओं को मैनेज किया जा सकता है. ऑडियो पॉलिसी सर्विस में मौजूद नई Spatializer
क्लास, स्पेशल ऑडियो ग्राफ़ बनाती है और उसे कंट्रोल करती है. इस ग्राफ़ की ज़रूरत मल्टीचैनल मिक्सिंग और स्पेशल ऑडियो के लिए होती है. यह ग्राफ़, ओईएम की बताई गई क्षमताओं, कनेक्ट किए गए डिवाइसों, और इस्तेमाल के चालू उदाहरणों के आधार पर बनाया जाता है. नया मिक्सर क्लास SpatializerThread
, मल्टीचैनल ट्रैक को मिक्स करता है. इसके बाद, मिक्स किए गए ट्रैक को पोस्ट-प्रोसेसिंग FX इंजन को भेजता है. यह इंजन, ऑडियो एचएएल को स्टीरियो आउटपुट देता है. हेड ट्रैकिंग के लिए, SpatializerPoseController
क्लास, हेड ट्रैकिंग से जुड़े फ़ंक्शन को ग्रुप करती है. साथ ही, यह सेंसर स्टैक से इंटरफ़ेस करती है. इसके अलावा, यह सेंसर सिग्नल को मर्ज और फ़िल्टर करती है. इन सिग्नल को इफ़ेक्ट इंजन को भेजा जाता है. हेड ट्रैकिंग सेंसर का डेटा, ब्लूटूथ ड्राइवर से एचआईडी प्रोटोकॉल के ज़रिए भेजा जाता है.
Android 13 के ऑडियो पाइपलाइन आर्किटेक्चर में हुए बदलावों से, इन चीज़ों को बेहतर बनाया गया है:
- स्पेशलाइज़र और हेडफ़ोन के बीच इंतज़ार का समय कम किया गया है.
- ऐप्लिकेशन डेवलपर को एक ही जगह पर एपीआई उपलब्ध कराना.
- सिस्टम एपीआई के ज़रिए हेड ट्रैकिंग की स्थिति को कंट्रोल करना.
- हेड ट्रैकिंग सेंसर का पता लगाना और उन्हें चालू ऑडियो डिवाइसों से जोड़ना.
- अलग-अलग सेंसर से सिग्नल मर्ज करना और हेड पोज़ का हिसाब लगाना. इसका इस्तेमाल, स्पैशलाइज़र इफ़ेक्ट इंजन कर सकता है.
हेड ट्रैकिंग यूटिलिटी लाइब्रेरी का इस्तेमाल करके, पूर्वाग्रह को कम करने, स्थिर रहने का पता लगाने, और दर की सीमा तय करने जैसी सुविधाएं लागू की जा सकती हैं.
स्पेशल ऑडियो वाले एपीआई
Android 13 में, स्पेशल ऑडियो सिस्टम और डेवलपर एपीआई उपलब्ध हैं.
ओईएम, ऐप्लिकेशन के काम करने के तरीके को सुविधा की उपलब्धता और चालू होने की स्थिति के हिसाब से बदल सकते हैं. यह स्थिति, सिस्टम एपीआई सेट करते हैं. ऐप्लिकेशन, ऑडियो एट्रिब्यूट को कॉन्फ़िगर करके, स्पेशल ऑडियो की सुविधा बंद कर सकते हैं. ऐसा इसलिए किया जाता है, ताकि ऑडियो स्ट्रीम को स्पेशल ऑडियो के लिए पहले से प्रोसेस किया जा सके.
डेवलपर के लिए उपलब्ध एपीआई के बारे में जानने के लिए, Spatializer
देखें.
ओईएम, सिस्टम एपीआई का इस्तेमाल करके, आवाज़ और ब्लूटूथ सेटिंग के यूज़र इंटरफ़ेस (यूआई) को लागू कर सकते हैं. इससे उपयोगकर्ता, अपने डिवाइस के लिए स्पेशल ऑडियो और हेड ट्रैकिंग की सुविधा की स्थिति को कंट्रोल कर पाता है. उपयोगकर्ता, आवाज़ की सेटिंग के यूज़र इंटरफ़ेस (यूआई) में जाकर, स्पीकर और वायर वाले हेडफ़ोन के लिए स्पेशल ऑडियो की सुविधा को चालू या बंद कर सकता है. स्पीकर के लिए स्पेशल ऑडियो की सेटिंग सिर्फ़ तब उपलब्ध होती है, जब स्पेशल ऑडियो इफ़ेक्ट लागू करने की सुविधा, ट्रांसऑरल मोड के साथ काम करती हो.
उपयोगकर्ता, हर डिवाइस के लिए ब्लूटूथ डिवाइस की सेटिंग में जाकर, स्पेशल ऑडियो और हेड ट्रैकिंग की सुविधा को चालू या बंद भी कर सकता है. हेड ट्रैकिंग की सेटिंग सिर्फ़ तब उपलब्ध होती है, जब ब्लूटूथ हेडसेट में हेड ट्रैकिंग सेंसर मौजूद हो.
अगर स्पेशल ऑडियो की सुविधा उपलब्ध है, तो इसकी डिफ़ॉल्ट सेटिंग हमेशा चालू रहती है. सिस्टम एपीआई की पूरी सूची देखने के लिए, Spatializer.java
पर जाएं.
हेड ट्रैकिंग के नए सेंसर टाइप Sensor.TYPE_HEAD_TRACKER
को सेंसर फ़्रेमवर्क में जोड़ा गया है. साथ ही, इसे सेंसर HAL के ज़रिए ब्लूटूथ या यूएसबी पर डाइनैमिक सेंसर के तौर पर दिखाया जाता है.
स्पेशल ऑडियो की सुविधा इंटिग्रेट करना
स्पेशलाइज़र इफ़ेक्ट इंजन को लागू करने के साथ-साथ, ओईएम को अपने प्लैटफ़ॉर्म को स्पेशल ऑडियो की सुविधा के साथ काम करने के लिए कॉन्फ़िगर करना होगा.
ज़रूरी शर्तें
स्पेशल ऑडियो की सुविधा को इंटिग्रेट करने के लिए, इन ज़रूरी शर्तों को पूरा करना होगा:
- ऑडियो एचएएल और ऑडियो डीएसपी में, स्पेशल ऑडियो के लिए एक अलग आउटपुट पाथ होना चाहिए.
- हेड ट्रैकिंग के साथ स्पेशल ऑडियो की सुविधा के लिए, हेडफ़ोन में हेड ट्रैकर सेंसर पहले से मौजूद होने चाहिए.
- इस सुविधा को लागू करने के लिए, यह ज़रूरी है कि यह ब्लूटूथ हेडसेट से फ़ोन तक एचआईडी प्रोटोकॉल के ज़रिए हेड ट्रैकिंग के लिए सुझाए गए स्टैंडर्ड के मुताबिक हो.
- स्पेशल ऑडियो की सुविधा के लिए, Audio HAL v7.1 ज़रूरी है.
स्पेशल ऑडियो की सुविधा को इंटिग्रेट करने के लिए, यह तरीका अपनाएं:
अपनी
device.mk
फ़ाइल में, स्पेशल ऑडियो की सुविधा के बारे में इस तरह बताएं:PRODUCT_PROPERTY_OVERRIDES += \ ro.audio.spatializer_enabled=true
इससे
AudioService
को स्पैटियलाइज़र सपोर्ट शुरू करने में मदद मिलती है.audio_policy_configuration.xml
में स्पेशल ऑडियो मिक्स के लिए, खास आउटपुट का एलान करें. इसके लिए, यह तरीका अपनाएं:<audioPolicyConfiguration> <modules> <module> <mixPorts> <mixPort name="spatializer" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER"> <profile name="sa" format="AUDIO_FORMAT_PCM_FLOAT" samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
audio_effects.xml
में, स्पैशलाइज़र इफ़ेक्ट लाइब्रेरी को इस तरह से एलान करें:<audio_effects_conf> <libraries> <library name="spatializer_lib" path="libMySpatializer.so"/> … </libraries> <effects> <effect name="spatializer" library="spatializer_lib" uuid="myunique-uuid-formy-spatializereffect"/>
स्पेशलाइज़र इफ़ेक्ट लागू करने वाले वेंडर को इन बातों का ध्यान रखना होगा:
- बुनियादी कॉन्फ़िगरेशन और कंट्रोल, Effect HAL में मौजूद अन्य इफ़ेक्ट की तरह ही होता है.
फ़्रेमवर्क को काम करने वाली सुविधाओं और कॉन्फ़िगरेशन का पता लगाने के लिए, कुछ खास पैरामीटर की ज़रूरत होती है. जैसे:
SPATIALIZER_PARAM_SUPPORTED_LEVELS
SPATIALIZER_PARAM_LEVEL
SPATIALIZER_PARAM_HEADTRACKING_SUPPORTED
SPATIALIZER_PARAM_HEADTRACKING_MODE
SPATIALIZER_PARAM_SUPPORTED_CHANNEL_MASKS
SPATIALIZER_PARAM_SUPPORTED_SPATIALIZATION_MODES
SPATIALIZER_PARAM_HEAD_TO_STAGE
ज़्यादा जानकारी के लिए,
effect_spatializer.h
पर जाएं.
सुझाव
हमारा सुझाव है कि ओईएम, लागू करने के दौरान इन दिशा-निर्देशों का पालन करें:
- इंटरऑपरेबिलिटी को आसान बनाने और इंतज़ार के समय के लक्ष्यों को पूरा करने के लिए, LE ऑडियो का इस्तेमाल करें.
- सेंसर की हलचल का पता चलने से लेकर हेडफ़ोन तक ऑडियो पहुंचने में लगने वाला समय, 150 मि॰से॰ से कम होना चाहिए. इससे उपयोगकर्ता अनुभव बेहतर होता है.
- एडवांस्ड ऑडियो डिस्ट्रिब्यूशन प्रोफ़ाइल (A2DP) के साथ ब्लूटूथ (BT) क्लासिक के लिए:
- कम लेटेंसी वाले कोडेक का इस्तेमाल करें, जैसे कि Opus.
- ऑडियो एचएएल में, इंतज़ार के समय को कंट्रोल करने वाले फ़ंक्शन लागू करें. इससे हेड ट्रैकिंग बंद होने पर, बैटरी और परफ़ॉर्मेंस को ऑप्टिमाइज़ किया जा सकता है. साथ ही, हेड ट्रैकिंग की सुविधा को ऐसी स्थितियों में बंद किया जा सकता है जहां यह ठीक से काम नहीं कर रही है.
Validation
स्पेशल ऑडियो की सुविधा के काम करने की पुष्टि करने के लिए, SpatializerTest.java
में उपलब्ध सीटीएस टेस्ट का इस्तेमाल करें.
स्पैशलाइज़ेशन या हेड ट्रैकिंग एल्गोरिदम को सही तरीके से लागू न करने पर, राउंड-ट्रिप लेटेन्सी से जुड़े सुझावों को पूरा नहीं किया जा सकता. ये सुझाव, सुझाव में दिए गए हैं.