Android 10 या इसके बाद के वर्शन में, अपडेट किए जा सकने वाले कई मीडिया कॉम्पोनेंट शामिल हैं. इनकी मदद से, Google Play Store के इन्फ़्रास्ट्रक्चर या पार्टनर की ओर से उपलब्ध कराए गए ओवर-द-एयर (OTA) मैकेनिज़्म के ज़रिए, फ़्रेमवर्क कॉम्पोनेंट को अपडेट किया जा सकता है. मीडिया कॉम्पोनेंट को मॉड्यूल में एक साथ पैकेज किया जाता है. इससे, पूरे सिस्टम इमेज को अपडेट किए बिना, सुरक्षा और फ़ीचर से जुड़े अपडेट उपलब्ध कराए जा सकते हैं.
अपडेट किए जा सकने वाले मीडिया कॉम्पोनेंट, इन मॉड्यूल में मौजूद होते हैं.
मीडिया. इस मॉड्यूल में मीडिया एक्सट्रैक्टर,
MediaSession2API, औरMediaParserAPI शामिल हैं.मीडिया कोडेक. इस मॉड्यूल में, अपडेट किए जा सकने वाले सॉफ़्टवेयर Codec2 कॉम्पोनेंट शामिल हैं.
MediaProvider. यह मॉड्यूल, इंडेक्स किए गए मेटाडेटा (एसडी कार्ड और यूएसबी डिवाइसों से ऑडियो, वीडियो, और इमेज) को ऑप्टिमाइज़ करता है. साथ ही, MediaStore के सार्वजनिक एपीआई के ज़रिए, ऐप्लिकेशन के लिए यह डेटा उपलब्ध कराता है.
कस्टम एक्सट्रैक्टर और डिकोडर जोड़ने के बारे में ज़्यादा जानकारी के लिए, मीडिया कॉम्पोनेंट को पसंद के मुताबिक बनाना लेख पढ़ें.
मीडिया एक्सट्रैक्टर
Android 9 और इससे पहले के वर्शन में, एक्सट्रैक्टर को libstagefright.so की एक फ़ाइल में कंपाइल किया जाता है. Android 10 या इसके बाद के वर्शन में, मीडिया एक्सट्रैक्टर अलग-अलग कॉम्पोनेंट होते हैं. हर एक्सट्रैक्टर की अपनी .so फ़ाइल होती है. इसमें एक एंट्री पॉइंट होता है. यह एंट्री पॉइंट, स्निफ़र फ़ंक्शन उपलब्ध कराता है. इससे यह पता चलता है कि एक्सट्रैक्टर, दी गई मीडिया फ़ाइल को प्रोसेस कर सकता है या नहीं. साथ ही, इसमें एक फ़ैक्ट्री फ़ंक्शन भी होता है, जो दी गई मीडिया फ़ाइल के लिए एक्सट्रैक्टर का इंस्टेंस बनाता है. हर एक्सट्रैक्टर का नाम दिया जाता है, ताकि डीबग करने में मदद मिल सके. साथ ही, हर एक्सट्रैक्टर का वर्शन भी दिया जाता है, ताकि यह पता चल सके कि कौनसे एक्सट्रैक्टर का सबसे नया वर्शन है.
मीडिया फ़्रेमवर्क, उपलब्ध सभी एक्सट्रैक्टर की .so फ़ाइलें अपने-आप लोड कर लेता है. इसलिए, नई .so फ़ाइल जोड़कर, अपने एक्सट्रैक्टर बनाए जा सकते हैं. इसके लिए, libstagefright या मीडिया फ़्रेमवर्क की अन्य लाइब्रेरी में बदलाव करने की ज़रूरत नहीं होती. आपके पास यह पक्का करने का विकल्प भी होता है कि Google की ओर से उपलब्ध कराए गए एक्सट्रैक्टर के बजाय, कस्टम एक्सट्रैक्टर को प्राथमिकता दी जाए.
MediaSession2 API
MediaSession2 API की मदद से, मीडिया ऐप्लिकेशन अपने ट्रांसपोर्ट कंट्रोल और प्लेबैक की जानकारी, Android फ़्रेमवर्क और अन्य ऐप्लिकेशन जैसी अन्य प्रोसेस के लिए उपलब्ध करा सकते हैं. इस कॉम्पोनेंट को पसंद के मुताबिक नहीं बनाया जा सकता.
MediaParser API
MediaParser API की मदद से, ExoPlayer, फ़्रेमवर्क मीडिया कंटेनर पार्सर का बेहतर तरीके से इस्तेमाल करके, मीडिया कंटेनर से मीडिया सैंपल निकाल सकता है. MediaParser में, सोर्स कोड की सीमाओं में ये बदलाव किए गए हैं:
frameworks/base/apex/media/framework/java/android/media/MediaParser.java. एपीआई और थिन लेयर लागू करने की प्रोसेस.external/exoplayer/. Exoplayer के वे सोर्स कोड जिन पर MediaParser बनाया गया है.
MediaParser API को पसंद के मुताबिक नहीं बनाया जा सकता. MediaParser की जांच करने के लिए, cts/tests/tests/mediaparser/ में मौजूद टेस्ट का इस्तेमाल करें.
मीडिया कोडेक
मीडिया कोडेक मॉड्यूल में, अपडेट किए जा सकने वाले सॉफ़्टवेयर Codec2 कॉम्पोनेंट शामिल हैं. पसंद के मुताबिक बनाने की सुविधा, वर्शन के हिसाब से अलग-अलग होती है:
Android 11 या इसके बाद के वर्शन (खास तौर पर, Google Play के सिस्टम अपडेट का वर्शन 292100200) में, ION मेमोरी के बंटवारे के लिए पैरामीटर को पसंद के मुताबिक बनाया जा सकता है. ज़्यादा जानकारी के लिए, नीचे दिया गया सेक्शन देखें.
Android 9 या इससे पहले के वर्शन में, OMX कोडेक API को अपडेट नहीं किया जा सकता. हालांकि, इसे वेंडर पार्टीशन में इस्तेमाल किया जा सकता है.
ION मेमोरी का बंटवारा
Android 11 या इसके बाद के वर्शन और Google Play के सिस्टम अपडेट v292100200 या इसके बाद के वर्शन में, ION मेमोरी के बंटवारे के लिए इन पैरामीटर को पसंद के मुताबिक बनाया जा सकता है.
| पैरामीटर | डिफ़ॉल्ट वैल्यू | ब्यौरा |
|---|---|---|
heapMask |
0xFFFFFFFF |
सभी हीप टाइप की अनुमति है. |
allocFlags |
0 |
कोई फ़्लैग सेट नहीं है. |
minAlignment |
0 |
कोई अलाइनमेंट नहीं है. |
पैरामीटर को ओवरराइड करने के लिए:
android.hardware.media.c2की डिफ़ॉल्ट सेवा रजिस्टर करें और ION के इस्तेमाल के लिए, पसंद के मुताबिक पैरामीटर उपलब्ध कराएं.नई सेवा बनाने के लिए, frameworks/av/media/codec2/hidl/services/vendor.cpp फ़ाइल को अपने रिपॉज़िटरी में कॉपी करें. इसके बाद, ज़रूरत के हिसाब से
StoreImpl::Interface::SetIonUsage()में बदलाव करें.(OMX)
media.codecप्रोसेस को फिर से इस्तेमाल करने के लिए,StoreImplक्लास को frameworks/av/media/codec2/hidl/services/vendor.cpp से कॉपी करें और इसे मौजूदाmediacodecफ़ाइल (frameworks/av/services/mediacodec/main_codecservice.cpp) में रजिस्टर करें.
डिवाइस की
manifest.xmlमें यह कोड जोड़ें.<hal format=">hidl&<quot>; nameandroid.hardwar<e.med>ia.c2</name > transpo<rthwbinder>/tran<sport > <version1>.0/ve<rsion > interfac<e > nameIComp<onent>Store/nam<e > insta<ncedefaul>t/ins<tance >/<inte>rface /hal
फ़ॉर्मैट और डिपेंडेंसी
मीडिया मॉड्यूल (com.android.media) और मीडिया कोडेक मॉड्यूल
(com.android.media.swcodec), APEX
फ़ॉर्मैट में हैं. शामिल किए गए मीडिया कॉम्पोनेंट, सिर्फ़ NDK API पर निर्भर करते हैं.
अपडेट
अपडेट के दौरान, डिवाइस पर मौजूद फ़्रेमवर्क कॉम्पोनेंट, Java और नेटिव कोड वाला APEX पैकेज लोड करते हैं.
पहली इमेज. मीडिया कॉम्पोनेंट को अपडेट करने का फ़्लो
फ़्रेमवर्क के APEX पैकेज को इंस्टॉल करने के बाद, डिवाइस रीबूट होता है और डिस्क इमेज माउंट होती है. इसके बाद, मीडिया सिस्टम की प्रोसेस (media.extractor और media.codec), माउंट पॉइंट से अपडेट किए गए मॉड्यूल लोड करती हैं.