Android 10 रिलीज़ में, हाई रिज़ॉल्यूशन ऑडियो के लिए ये सुधार किए गए हैं:
- फ़्लोट: WAV, FLAC कोडेक, और एक्सट्रैक्टर को अपडेट किया गया है, ताकि फ़्लोट (24 बिट से ज़्यादा बिट की लॉसलेस सटीक जानकारी) का इस्तेमाल किया जा सके. डाउनमिक्स और वर्चुलाइज़र इफ़ेक्ट को फ़्लोट करने के लिए अपडेट किया गया है. MediaPlayer (NuPlayer) में, जगह की सटीक जानकारी देने की सुविधा को अपडेट किया गया है.
- ज़्यादा फ़्रीक्वेंसी: WAV, FLAC कोडेक, और एक्सट्रैक्टर को 192 किलोहर्ट्ज़ के साथ काम करने के लिए अपडेट किया गया है. Android के डिफ़ॉल्ट इफ़ेक्ट की जांच, स्टैंडर्ड फ़्रीक्वेंसी पर 192 kHz के साथ काम करने के लिए की गई है. स्टैंडर्ड फ़्रीक्वेंसी में 88.2 kHz, 96 kHz, 176.4 kHz, और 192 kHz शामिल हैं.
- मल्टीचैनल: Android डिवाइसों पर वीडियो चलाने के डिफ़ॉल्ट इफ़ेक्ट की जांच, आठ चैनलों के साथ मल्टीचैनल के लिए की गई है.
- समय: समय की जानकारी, ऑडियो फ़्रेमवर्क में शामिल होती है.
Android 9 से, इन सुधारों को लागू करने के लिए, किसी पार्टनर की ज़रूरत नहीं होगी:
- एक साथ चलने वाले क्लाइंट आउटपुट ट्रैक की संख्या 14 से बढ़कर 40 हो गई है. ऐसा इसलिए हुआ है, क्योंकि Android 8.x में ऐप्लिकेशन के लिए
AudioTrack
के सीमित क्लाइंट इंस्टेंस एक समस्या रहे हैं. - क्लाइंट/सर्वर की ज़्यादा से ज़्यादा मेमोरी, 4 एमबी से बढ़कर 32 एमबी हो गई है. यह डिवाइस की कुल मेमोरी पर निर्भर करता है. इससे एक साथ ज़्यादा हाई रिज़ॉल्यूशन वाले ऑडियो ट्रैक चलाए जा सकते हैं.
- ऐप्लिकेशन और सिस्टम यूज़र इंटरफ़ेस (यूआई) के बीच संसाधन का विवाद रोकने के लिए, मिले-जुले ट्रैक की कुल संख्या 32 से बढ़कर 256 हो जाती है.
आउटपुट इफ़ेक्ट में बदलाव
Android 11 रिलीज़ में हुए बदलावों के बारे में जानने के लिए, ऑडियो इफ़ेक्ट देखें.
Android 9 रिलीज़ होने से पहले, इफ़ेक्ट चेन प्रोसेसिंग को स्टीरियो int16 सैंपल फ़ॉर्मैट में लागू किया गया था. इसकी कई सीमाएं थीं:
- सभी आउटपुट इफ़ेक्ट की वजह से, फ़्लोटिंग पॉइंट ऑडियो डेटा को int16 में ज़बरदस्ती बदला गया. इसकी वजह से, सटीक कन्वर्ज़न वैल्यू में कमी आई.
- आउटपुट सिंक से, आउटपुट इफ़ेक्ट अस्वीकार कर दिए गए. इन सिंक में चैनलों की संख्या दो से ज़्यादा थी.
Android 9 रिलीज़ में, इफ़ेक्ट चेन को प्रोसेस करने वाली पाइपलाइन को अपग्रेड किया गया है, ताकि वह मल्टीचैनल फ़्लोट फ़ॉर्मैट के साथ काम कर सके. खास बातें:
- Android सॉफ़्टवेयर इफ़ेक्ट, पहले से ही स्टीरियो फ़्लोट में माइग्रेट हो चुके हैं.
- लेगसी इफ़ेक्ट, फ़ॉर्मैट अडैप्टर के साथ काम करते हैं. ये ज़रूरत के हिसाब से, फ़्लोट को int16 में बदल देते हैं.
आउटपुट इफ़ेक्ट लागू करना
आउटपुट इफ़ेक्ट के लिए रेफ़रंस के तौर पर लागू करने का तरीका,
frameworks/av/media/libeffects
में उपलब्ध है.
Android 10 रिलीज़ के लिए, अपने कस्टम आउटपुट इफ़ेक्ट लागू करने वाले पार्टनर को ये काम करने चाहिए:
- मल्टीचैनल फ़्लोट फ़ॉर्मैट के साथ काम करने के लिए, आउटपुट इफ़ेक्ट अपडेट करें:
- अब Int16 की प्रोसेसिंग सहायता की ज़रूरत नहीं है.
- आउटपुट चैनल की संख्या 2 से 8 होनी चाहिए. आने वाले समय में, इसे इस्तेमाल करने के लिए, 1 से 30 तक की संख्या का इस्तेमाल करें.
- इन्सर्ट इफ़ेक्ट के लिए, इनपुट चैनल की संख्या, आउटपुट चैनल की संख्या से मेल खाती हो. सहायक इफ़ेक्ट के लिए, इनपुट चैनल की संख्या एक (मोनो) ही दिखती रहेगी.
(1 << n) - 1
के चैनल रैंक मास्क (कैननिकल) और चैनल इंडेक्स मास्क, दोनों का इस्तेमाल किया जा सकता है.
- अगर आपको लेगसी वेंडर के आउटपुट इफ़ेक्ट के साथ काम करना जारी रखना है और
उन्हें अपडेट नहीं किया जा सकता, तो लेगसी कोड की पुष्टि करने के लिए, यहां दिया गया तरीका अपनाएं:
- लेगसी आउटपुट (शामिल करें) इफ़ेक्ट,
EFFECT_CMD_SET_CONFIG
में काम न करने वाले कॉन्फ़िगरेशन को अस्वीकार करना चाहिए.- देखें कि फ़ॉर्मैट int16 है या नहीं.
- पक्का करें कि इनपुट और आउटपुट चैनल मास्क, स्टीरियो हों.
- अगर दोनों में से कोई भी जांच पूरी नहीं होती है, तो
-EINVAL
दिखाएं.
- लेगसी आउटपुट (अतिरिक्त) इफ़ेक्ट को AudioFlinger के ज़रिए कॉन्फ़िगर किया जाता है. इसके लिए, मोनो इनपुट चैनल मास्क और संभावित तौर पर मल्टीचैनल आउटपुट चैनल मास्क का इस्तेमाल किया जाता है. यह इस बात पर निर्भर करता है कि आउटपुट सिंक मल्टीचैनल है या नहीं.
उन्हें
EFFECT_CMD_SET_CONFIG
में, काम न करने वाले कॉन्फ़िगरेशन अस्वीकार करने होंगे.- देखें कि फ़ॉर्मैट int16 है या नहीं.
- देखें कि इनपुट चैनल मास्क मोनो है और आउटपुट चैनल मास्क स्टीरियो है.
- अगर दोनों में से कोई भी जांच पूरी नहीं होती है, तो
-EINVAL
दिखाएं.
- लेगसी कोड की पुष्टि करें. यह न समझें कि यह काम कर रहा है!
- लेगसी आउटपुट (शामिल करें) इफ़ेक्ट,