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

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 दिखाएं.
    • लेगसी कोड की पुष्टि करें. यह मत मानें कि यह काम करेगा!