Android 10 या उसके बाद के वर्शन में, अपडेट किए जा सकने वाले कई मीडिया कॉम्पोनेंट शामिल होते हैं. यह Google Play Store के इन्फ़्रास्ट्रक्चर या पार्टनर के उपलब्ध कराए गए ओवर द एयर (ओटीए) सिस्टम की मदद से, फ़्रेमवर्क के कॉम्पोनेंट को अपडेट करने की सुविधा देता है. मीडिया कॉम्पोनेंट को ऐसे मॉड्यूल में एक साथ पैकेज किया जाता है जो पूरे सिस्टम इमेज अपडेट की ज़रूरत के बिना भी सुरक्षा से जुड़े अपडेट और सुविधा के अपडेट दे सकता है.
अपडेट किए जा सकने वाले मीडिया कॉम्पोनेंट, इन मॉड्यूल में मौजूद होते हैं.
मीडिया. इस मॉड्यूल में मीडिया एक्सट्रैक्टर,
MediaSession2
एपीआई, औरMediaParser
एपीआई शामिल हैं.मीडिया कोडेक. इस मॉड्यूल में, अपडेट किए जा सकने वाले सॉफ़्टवेयर Codec2 कॉम्पोनेंट शामिल हैं.
MediaProvider. यह मॉड्यूल, इंडेक्स किए गए मेटाडेटा (एसडी कार्ड और यूएसबी डिवाइसों से मिले ऑडियो, वीडियो, और इमेज) को ऑप्टिमाइज़ करता है. साथ ही, MediaStore के सार्वजनिक एपीआई की मदद से, उस डेटा को ऐप्लिकेशन के लिए उपलब्ध कराता है.
कस्टम एक्सट्रैक्टर और डिकोडर जोड़ने के बारे में जानने के लिए, मीडिया कॉम्पोनेंट को पसंद के मुताबिक बनाना लेख पढ़ें.
मीडिया एक्सट्रैक्टर
Android 9 और इससे पहले के वर्शन में, एक्सट्रैक्टर को एक ही
libstagefright.so
फ़ाइल में कंपाइल किया जाता है. Android 10 या इसके बाद के वर्शन में, मीडिया एक्सट्रैक्टर अलग-अलग कॉम्पोनेंट होते हैं. हर एक्सट्रैक्टर की अपनी .so
फ़ाइल होती है. इसमें एक एंट्री पॉइंट होता है, जो स्निफ़र फ़ंक्शन उपलब्ध कराता है. इससे यह पता चलता है कि एक्सट्रैक्टर, दी गई मीडिया फ़ाइल को हैंडल कर सकता है या नहीं. साथ ही, इसमें एक फ़ैक्ट्री फ़ंक्शन होता है, जो दी गई मीडिया फ़ाइल के लिए एक्सट्रैक्टर का एक इंस्टेंस बनाता है. डेटा इकट्ठा करने वाले हर टूल को नाम
(डीबग करने में मदद करने के लिए) दिया जाता है. साथ ही, उसके वर्शन से पता चलता है कि कौनसा डेटा इकट्ठा करने वाले टूल का नया वर्शन है.
मीडिया फ़्रेमवर्क, इकट्ठा करने वाले सभी उपलब्ध .so
फ़ाइलों को अपने-आप लोड करता है, ताकि आप एक नई .so
फ़ाइल जोड़कर अपने डेटा इकट्ठा करने वाले टूल बना सकें. इसके लिए, आपको libstagefright
या अन्य मीडिया फ़्रेमवर्क की लाइब्रेरी में बदलाव करने की ज़रूरत नहीं है. यह भी पक्का किया जा सकता है कि Google के उपलब्ध कराए गए डेटा एक्सट्रैक्ट करने वाले टूल के बजाय,
पसंद के मुताबिक डेटा इकट्ठा करने वाले टूल को प्राथमिकता दी जाए.
MediaSession2 API
MediaSession2 API की मदद से, मीडिया ऐप्लिकेशन अपने ट्रांसपोर्ट कंट्रोल और प्लेबैक की जानकारी को अन्य प्रोसेस के साथ शेयर कर सकते हैं. जैसे, Android फ़्रेमवर्क और अन्य ऐप्लिकेशन. इस कॉम्पोनेंट को पसंद के मुताबिक नहीं बनाया जा सकता.
MediaParser एपीआई
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 सिस्टम अपडेट v292100200) में, 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
प्रोसेस का फिर से इस्तेमाल करने के लिए, frameworks/av/media/codec2/hidl/services/vendor.cpp से मौजूदाmediacodec
फ़ाइल (frameworks/av/services/mediacodec/main_codecservice.cpp) में कॉपी और रजिस्टर करें.StoreImpl
डिवाइस
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 फ़ॉर्मैट में हों. शामिल किए गए मीडिया कॉम्पोनेंट सिर्फ़ एनडीके एपीआई पर निर्भर होते हैं.
अपडेट
अपडेट के दौरान, डिवाइस पर मौजूद फ़्रेमवर्क कॉम्पोनेंट, एक ऐसा APEX पैकेज लोड करते हैं जिसमें Java और नेटिव कोड होता है.
पहला डायग्राम. मीडिया कॉम्पोनेंट अपडेट करने का फ़्लो
फ़्रेमवर्क के APEX पैकेज को इंस्टॉल करने के बाद, डिवाइस रीबूट हो जाता है और डिस्क इमेज को माउंट कर देता है. साथ ही, मीडिया सिस्टम प्रोसेस (media.extractor
और media.codec
) माउंट पॉइंट से अपडेट किए गए मॉड्यूल लोड कर देती हैं.