हाई रिज़ॉल्यूशन वाला ऑडियो

Android 10 के रिलीज़ में, ज़्यादा रिज़ॉल्यूशन वाले ऑडियो के लिए ये सुधार किए गए हैं:

  • फ़्लोट: WAV, FLAC कोडेक, और एक्सट्रैक्टर को अपडेट किया गया है. अब ये फ़्लोट (बिना किसी नुकसान के 24+ बिट की सटीक जानकारी) के साथ काम करते हैं. डाउनमिक्स और वर्चुअलाइज़र इफ़ेक्ट को फ़्लोट के लिए अपडेट किया गया है. MediaPlayer (NuPlayer) में, सटीक जानकारी को अपडेट किया गया है.
  • ज़्यादा फ़्रीक्वेंसी: WAV, FLAC कोडेक, और एक्सट्रैक्टर को अपडेट किया गया है. अब ये 192 किलोहर्ट्ज़ के साथ काम करते हैं. Android में डिफ़ॉल्ट रूप से मौजूद इफ़ेक्ट को, स्टैंडर्ड फ़्रीक्वेंसी पर 192 किलोहर्ट्ज़ के साथ काम करने के लिए टेस्ट किया गया है. मान्य स्टैंडर्ड फ़्रीक्वेंसी 88.2 किलोहर्ट्ज़, 96 किलोहर्ट्ज़, 176.4 किलोहर्ट्ज़, और 192 किलोहर्ट्ज़ हैं.
  • मल्टीचैनल: 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 (मोनो) बनी रहेगी.
    • चैनल की पोज़िशन मास्क (कैननिकल) और चैनल इंडेक्स मास्क (1 << n) - 1 दोनों के साथ काम करें.
  • अगर आपको वेंडर के लेगसी आउटपुट इफ़ेक्ट के साथ काम करना है और उन्हें अपडेट नहीं किया जा सकता तो लेगसी कोड की पुष्टि इस तरह करें:
    • लेगसी आउटपुट (इंसर्ट) इफ़ेक्ट ऐसे कॉन्फ़िगरेशन अस्वीकार करें जिनके साथ काम नहीं किया जा सकता EFFECT_CMD_SET_CONFIG.
      • देखें कि फ़ॉर्मैट int16 है.
      • देखें कि इनपुट और आउटपुट चैनल मास्क स्टीरियो हैं.
      • अगर इनमें से कोई भी जांच पूरी नहीं होती है, तो -EINVAL दिखाएं.
    • AudioFlinger, लेगसी आउटपुट (ऑक्सिलरी) इफ़ेक्ट को मोनो इनपुट चैनल मास्क और संभावित तौर पर मल्टीचैनल आउटपुट चैनल मास्क के साथ कॉन्फ़िगर करता है. यह इस बात पर निर्भर करता है कि आउटपुट सिंक मल्टीचैनल है या नहीं. इन्हें EFFECT_CMD_SET_CONFIG में, ऐसे कॉन्फ़िगरेशन अस्वीकार करने चाहिए जिनके साथ काम नहीं किया जा सकता.
      • देखें कि फ़ॉर्मैट int16 है.
      • देखें कि इनपुट चैनल मास्क मोनो है और आउटपुट चैनल मास्क स्टीरियो है.
      • अगर इनमें से कोई भी जांच पूरी नहीं होती है, तो -EINVAL दिखाएं.
    • लेगसी कोड की पुष्टि करें. यह न मान लें कि यह काम करता है!