मीडिया मॉड्यूल

एंड्रॉइड 10 या उच्चतर में कई अद्यतन करने योग्य मीडिया घटक शामिल हैं जो Google Play Store बुनियादी ढांचे के माध्यम से या पार्टनर-प्रदत्त ओवर-द-एयर (ओटीए) तंत्र के माध्यम से फ्रेमवर्क घटकों को अपडेट करने में सक्षम बनाते हैं। मीडिया घटकों को मॉड्यूल में एक साथ पैक किया जाता है जो पूर्ण सिस्टम छवि अपडेट की आवश्यकता के बिना सुरक्षा अपडेट और फीचर अपडेट प्रदान करने की अनुमति देता है।

अद्यतन करने योग्य मीडिया घटक निम्नलिखित मॉड्यूल में मौजूद हैं।

कस्टम एक्सट्रैक्टर और डिकोडर जोड़ने के विवरण के लिए, मीडिया घटकों को अनुकूलित करना देखें।

मीडिया निकालने वाले

एंड्रॉइड 9 और उससे पहले के संस्करण में, एक्सट्रैक्टर्स को एक एकल libstagefright.so फ़ाइल में संकलित किया जाता है। एंड्रॉइड 10 या उच्चतर में, मीडिया एक्सट्रैक्टर अलग घटक हैं। प्रत्येक एक्सट्रैक्टर के पास एक प्रवेश बिंदु के साथ अपनी .so फ़ाइल होती है जो यह निर्धारित करने के लिए एक स्निफ़र फ़ंक्शन प्रदान करती है कि क्या एक्सट्रैक्टर दिए गए मीडिया फ़ाइल को संभाल सकता है, और एक फ़ैक्टरी फ़ंक्शन जो दिए गए मीडिया फ़ाइल के लिए एक्सट्रैक्टर का एक उदाहरण बनाता है। प्रत्येक एक्सट्रैक्टर को नाम दिया गया है (डीबगिंग में मदद करने के लिए) और यह इंगित करने के लिए संस्करण दिया गया है कि कौन सा एक्सट्रैक्टर सबसे नया है।

मीडिया फ्रेमवर्क स्वचालित रूप से सभी उपलब्ध एक्सट्रैक्टर .so फ़ाइलों को लोड करता है, इसलिए आप libstagefright या अन्य मीडिया फ्रेमवर्क लाइब्रेरीज़ को संशोधित करने की आवश्यकता के बिना एक नई .so फ़ाइल जोड़कर अपने स्वयं के एक्सट्रैक्टर्स बना सकते हैं। आप यह भी सुनिश्चित कर सकते हैं कि Google द्वारा प्रदत्त एक्सट्रैक्टर की तुलना में कस्टम एक्सट्रैक्टर को प्राथमिकता दी जाए।

मीडियासेशन2 एपीआई

MediaSession2 API मीडिया ऐप्स को अपने ट्रांसपोर्ट नियंत्रण और प्लेबैक जानकारी को एंड्रॉइड फ्रेमवर्क और अन्य ऐप्स जैसी अन्य प्रक्रियाओं में प्रदर्शित करने की अनुमति देता है। इस घटक को अनुकूलित नहीं किया जा सकता.

मीडिया पार्सर एपीआई

MediaParser API ExoPlayer को मीडिया कंटेनरों से मीडिया नमूने निकालने के लिए फ्रेमवर्क मीडिया कंटेनर पार्सर्स का कुशल उपयोग करने की अनुमति देता है। MediaParser में स्रोत कोड सीमाओं में निम्नलिखित परिवर्तन शामिल हैं:

  • frameworks/base/apex/media/framework/java/android/media/MediaParser.java एपीआई और पतली परत कार्यान्वयन।

  • external/exoplayer/ । एक्सोप्लेयर शब्दशः स्रोत जिस पर MediaParser बनाया गया है।

MediaParser API को अनुकूलित नहीं किया जा सकता. MediaParser का परीक्षण करने के लिए, cts/tests/tests/mediaparser/ में परीक्षणों का उपयोग करें।

मीडिया कोडेक्स

मीडिया कोडेक्स मॉड्यूल में अद्यतन करने योग्य सॉफ़्टवेयर कोडेक2 घटक शामिल हैं। अनुकूलन के लिए समर्थन रिलीज़ के बीच भिन्न होता है:

  • एंड्रॉइड 11 या उच्चतर (विशेष रूप से Google Play सिस्टम अपडेट v292100200 ) में, आप ION मेमोरी आवंटन के लिए मापदंडों को अनुकूलित कर सकते हैं (विवरण के लिए नीचे देखें)।

  • एंड्रॉइड 9 या उससे पहले के संस्करण में, ओएमएक्स कोडेक एपीआई अद्यतन करने योग्य नहीं है, लेकिन आप अभी भी इसे विक्रेता विभाजन में उपयोग कर सकते हैं।

आईओएन मेमोरी आवंटन

एंड्रॉइड 11 या उच्चतर और Google Play सिस्टम अपडेट v292100200 या उच्चतर में, आप ION मेमोरी आवंटन के लिए निम्नलिखित मापदंडों को अनुकूलित कर सकते हैं।

पैरामीटर डिफ़ॉल्ट मान विवरण
heapMask 0xFFFFFFFF सभी प्रकार के ढेर की अनुमति है.
allocFlags 0 कोई ध्वज सेट नहीं.
minAlignment 0 कोई संरेखण नहीं.

पैरामीटर्स को ओवरराइड करने के लिए:

  1. एक डिफ़ॉल्ट android.hardware.media.c2 सेवा पंजीकृत करें और कस्टम ION उपयोग पैरामीटर प्रदान करें।

  2. निम्न कोड को डिवाइस manifest.xml में जोड़ें।

    <hal format="hidl">
        <name>android.hardware.media.c2</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>IComponentStore</name>
            <instance>default</instance>
        </interface>
    </hal>
    

प्रारूप और निर्भरताएँ

मीडिया मॉड्यूल ( com.android.media ) और मीडिया कोडेक मॉड्यूल ( com.android.media.swcodec ) APEX प्रारूप में हैं। शामिल मीडिया घटक केवल एनडीके एपीआई पर निर्भर करते हैं।

अपडेट

अपडेट के दौरान, डिवाइस पर फ्रेमवर्क घटक एक एपेक्स पैकेज लोड करते हैं जिसमें जावा और मूल कोड होता है।

मीडिया अपडेट

चित्र 1. मीडिया घटक अद्यतन प्रवाह

फ़्रेमवर्क APEX पैकेज को स्थापित करने के बाद, डिवाइस रीबूट करता है और डिस्क छवि और मीडिया सिस्टम प्रक्रियाओं ( media.extractor और media.codec ) को माउंट करता है और माउंट बिंदु से अद्यतन मॉड्यूल को लोड करता है।