অ্যান্ড্রয়েড ১০ বা তার উচ্চতর সংস্করণে বেশ কিছু আপডেটেবল মিডিয়া কম্পোনেন্ট অন্তর্ভুক্ত রয়েছে, যা গুগল প্লে স্টোর পরিকাঠামোর মাধ্যমে অথবা কোনো পার্টনার-প্রদত্ত ওভার-দ্য-এয়ার (OTA) পদ্ধতির মাধ্যমে ফ্রেমওয়ার্ক কম্পোনেন্টগুলো আপডেট করতে সক্ষম করে। মিডিয়া কম্পোনেন্টগুলো মডিউল আকারে একত্রিত থাকে, যা সম্পূর্ণ সিস্টেম ইমেজ আপডেট করার প্রয়োজন ছাড়াই নিরাপত্তা ও ফিচার আপডেট প্রদান করতে সাহায্য করে।
নিম্নলিখিত মডিউলগুলিতে আপডেটযোগ্য মিডিয়া উপাদানসমূহ বিদ্যমান।
মিডিয়া। এই মডিউলে মিডিয়া এক্সট্র্যাক্টর ,
MediaSession2API এবংMediaParserAPI অন্তর্ভুক্ত রয়েছে।মিডিয়া কোডেক । এই মডিউলটিতে হালনাগাদযোগ্য সফটওয়্যার কোডেক২ উপাদানসমূহ অন্তর্ভুক্ত রয়েছে।
মিডিয়াপ্রোভাইডার । এই মডিউলটি ইনডেক্স করা মেটাডেটা (এসডি কার্ড এবং ইউএসবি ডিভাইস থেকে প্রাপ্ত অডিও, ভিডিও এবং ছবি) অপ্টিমাইজ করে এবং মিডিয়াস্টোর পাবলিক এপিআই-এর মাধ্যমে সেই ডেটা অ্যাপগুলোর জন্য উপলব্ধ করে।
কাস্টম এক্সট্র্যাক্টর এবং ডিকোডার যোগ করার বিস্তারিত তথ্যের জন্য, ‘মিডিয়া কম্পোনেন্ট কাস্টমাইজ করা’ দেখুন।
মিডিয়া এক্সট্র্যাক্টর
অ্যান্ড্রয়েড ৯ এবং তার নিচের সংস্করণগুলিতে, এক্সট্র্যাক্টরগুলি একটিমাত্র libstagefright.so ফাইলে কম্পাইল করা থাকে। অ্যান্ড্রয়েড ১০ বা তার উপরের সংস্করণগুলিতে, মিডিয়া এক্সট্র্যাক্টরগুলি আলাদা কম্পোনেন্ট হিসেবে থাকে। প্রতিটি এক্সট্র্যাক্টরের নিজস্ব .so ফাইল থাকে, যেখানে একটি এন্ট্রি পয়েন্ট থাকে যা একটি স্নিফার ফাংশন সরবরাহ করে। এই স্নিফার ফাংশনটি নির্ধারণ করে যে এক্সট্র্যাক্টরটি প্রদত্ত মিডিয়া ফাইলটি হ্যান্ডেল করতে পারবে কি না। এছাড়া, উক্ত মিডিয়া ফাইলের জন্য এক্সট্র্যাক্টরটির একটি ইনস্ট্যান্স তৈরি করার জন্য একটি ফ্যাক্টরি ফাংশনও থাকে। প্রতিটি এক্সট্র্যাক্টরের একটি নাম (ডিবাগিং-এ সহায়তার জন্য) এবং একটি ভার্সন থাকে, যা নির্দেশ করে কোনটি সবচেয়ে নতুন।
মিডিয়া ফ্রেমওয়ার্ক স্বয়ংক্রিয়ভাবে সমস্ত উপলব্ধ এক্সট্র্যাক্টর .so ফাইল লোড করে, তাই আপনি libstagefright বা অন্যান্য মিডিয়া ফ্রেমওয়ার্ক লাইব্রেরি পরিবর্তন না করেই একটি নতুন .so ফাইল যোগ করে আপনার নিজস্ব এক্সট্র্যাক্টর তৈরি করতে পারেন। এছাড়াও আপনি নিশ্চিত করতে পারেন যে গুগল-প্রদত্ত এক্সট্র্যাক্টরের চেয়ে আপনার নিজস্ব এক্সট্র্যাক্টরটিই বেশি প্রাধান্য পাবে।
মিডিয়াসেশন২ এপিআই
MediaSession2 API মিডিয়া অ্যাপগুলোকে তাদের ট্রান্সপোর্ট কন্ট্রোল এবং প্লেব্যাক তথ্য অ্যান্ড্রয়েড ফ্রেমওয়ার্ক ও অন্যান্য অ্যাপের মতো অন্যান্য প্রসেসের কাছে প্রকাশ করার সুযোগ দেয়। এই কম্পোনেন্টটি কাস্টমাইজ করা যায় না।
মিডিয়াপার্সার এপিআই
MediaParser API, ExoPlayer-কে ফ্রেমওয়ার্ক মিডিয়া কন্টেইনার পার্সারগুলির কার্যকর ব্যবহারের মাধ্যমে মিডিয়া কন্টেইনার থেকে মিডিয়া স্যাম্পল নিষ্কাশন করতে সক্ষম করে। MediaParser সোর্স কোডের সীমানায় নিম্নলিখিত পরিবর্তনগুলি অন্তর্ভুক্ত করে:
frameworks/base/apex/media/framework/java/android/media/MediaParser.java. এপিআই এবং থিন লেয়ার ইমপ্লিমেন্টেশন।external/exoplayer/. এক্সোপ্লেয়ারের হুবহু সোর্স কোড, যার উপর ভিত্তি করে মিডিয়াপার্সার তৈরি করা হয়েছে।
MediaParser API কাস্টমাইজ করা যায় না। MediaParser পরীক্ষা করার জন্য, cts/tests/tests/mediaparser/ -এ থাকা টেস্টগুলো ব্যবহার করুন।
মিডিয়া কোডেক
মিডিয়া কোডেকস মডিউলে আপডেটযোগ্য সফটওয়্যার কোডেক২ কম্পোনেন্ট অন্তর্ভুক্ত রয়েছে। কাস্টমাইজেশনের সাপোর্ট বিভিন্ন রিলিজের মধ্যে ভিন্ন হয়:
অ্যান্ড্রয়েড ১১ বা তার পরবর্তী সংস্করণে (বিশেষত গুগল প্লে সিস্টেম আপডেট v292100200-এ ), আপনি ION মেমরি অ্যালোকেশনের প্যারামিটারগুলো কাস্টমাইজ করতে পারেন (বিস্তারিত জানতে নিচে দেখুন)।
অ্যান্ড্রয়েড ৯ বা তার নিচের সংস্করণগুলোতে OMX কোডেক API আপডেট করা যায় না, কিন্তু আপনি এটি ভেন্ডর পার্টিশনে ব্যবহার করতে পারবেন।
ION মেমরি বরাদ্দ
Android 11 বা তার পরবর্তী সংস্করণ এবং Google Play System Update 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 থেকেStoreImplক্লাসটি বিদ্যমানmediacodecফাইলে ( frameworks/av/services/mediacodec/main_codecservice.cpp ) কপি এবং রেজিস্টার করুন।
ডিভাইস
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 ফরম্যাটে রয়েছে। অন্তর্ভুক্ত মিডিয়া কম্পোনেন্টগুলো শুধুমাত্র NDK API-এর উপর নির্ভর করে।
আপডেট
আপডেট চলাকালীন, ডিভাইসের ফ্রেমওয়ার্ক কম্পোনেন্টগুলো একটি APEX প্যাকেজ লোড করে, যেটিতে জাভা এবং নেটিভ কোড থাকে।

চিত্র ১. মিডিয়া কম্পোনেন্ট আপডেট প্রবাহ
ফ্রেমওয়ার্কটি APEX প্যাকেজ ইনস্টল করার পর, ডিভাইসটি রিবুট হয়ে ডিস্ক ইমেজটি মাউন্ট করে এবং মিডিয়া সিস্টেম প্রসেসগুলো ( media.extractor ও media.codec ) মাউন্ট পয়েন্ট থেকে আপডেট হওয়া মডিউলগুলো লোড করে।