Android 10 বা তার পরবর্তী ভার্সনে আপডেট করা যাবে এমন বেশ কিছু মিডিয়া কম্পোনেন্ট থাকে যার মাধ্যমে Google Play Store ইনফ্রাস্ট্রাকচার বা পার্টনারের দেওয়া ওভার-দ্য-এয়ার (OTA) মেকানিজমের সাহায্যে ফ্রেমওয়ার্ক কম্পোনেন্ট আপডেট করা যায়। মিডিয়া কম্পোনেন্টগুলি একসাথে মডিউলে প্যাকেজ করা থাকে যা সম্পূর্ণ সিস্টেম ইমেজ আপডেট করার প্রয়োজন ছাড়াই নিরাপত্তা আপডেট এবং ফিচার আপডেট প্রদান করার অনুমতি দেয়।
নিম্নলিখিত মডিউলে আপডেট করা যায় এমন মিডিয়া কম্পোনেন্ট থাকে।
মিডিয়া। এই মডিউলে মিডিয়া এক্সট্র্যাক্টর,
MediaSession2API এবংMediaParserAPI অন্তর্ভুক্ত।মিডিয়া কোডেক। এই মডিউলে আপডেট করা যায় এমন সফ্টওয়্যার Codec2 কম্পোনেন্ট রয়েছে।
MediaProvider. এই মডিউল ইন্ডেক্স করা মেটাডেটা (এসডি কার্ড ও USB ডিভাইস থেকে অডিও, ভিডিও ও ছবি) অপ্টিমাইজ করে এবং MediaStore পাবলিক API-এর মাধ্যমে অ্যাপের জন্য সেই ডেটা উপলভ্য করে।
কাস্টম এক্সট্র্যাক্টর ও ডিকোডার যোগ করার ব্যাপারে বিস্তারিত জানতে, মিডিয়া কম্পোনেন্ট কাস্টমাইজ করা দেখুন।
মিডিয়া এক্সট্র্যাক্টর
Android 9 ও তার আগের ভার্সনে, এক্সট্র্যাক্টরকে একটি
libstagefright.so ফাইলে কম্পাইল করা হয়। Android 10 বা তার পরের যেকোনও ভার্সনে,
মিডিয়া এক্সট্র্যাক্টর হল আলাদা কম্পোনেন্ট। প্রতিটি এক্সট্র্যাক্টরের নিজস্ব .so ফাইল
থাকে, যার একটি এন্ট্রি পয়েন্ট থাকে। এটি স্নিফার ফাংশন প্রদান করে, যার মাধ্যমে এটি নির্ধারণ করা যায় যে
এক্সট্র্যাক্টরটি প্রদত্ত মিডিয়া ফাইল হ্যান্ডেল করতে পারবে কিনা। এছাড়াও, এতে ফ্যাক্টরি ফাংশন থাকে, যা প্রদত্ত মিডিয়া ফাইলের জন্য
এক্সট্র্যাক্টরের একটি ইনস্ট্যান্স তৈরি করে। প্রতিটি এক্সট্র্যাক্টরের নাম দেওয়া হয়
(যাতে ডিবাগিং করতে সুবিধা হয়) এবং কোন এক্সট্র্যাক্টর সবচেয়ে নতুন তা বোঝাতে ভার্সন নম্বর দেওয়া হয়।
মিডিয়া ফ্রেমওয়ার্ক অটোমেটিক সব উপলভ্য এক্সট্র্যাক্টর .so ফাইল লোড করে, তাই
আপনি libstagefright বা অন্যান্য মিডিয়া ফ্রেমওয়ার্ক লাইব্রেরি পরিবর্তন করার প্রয়োজন ছাড়াই
নতুন .so ফাইল যোগ করে নিজের এক্সট্র্যাক্টর তৈরি করতে পারবেন। এছাড়াও, আপনি এটি নিশ্চিত করতে পারেন
যে Google-এর দেওয়া এক্সট্র্যাক্টরের পরিবর্তে কাস্টম এক্সট্র্যাক্টরকে অগ্রাধিকার দেওয়া হয়েছে।
MediaSession2 API
MediaSession2 API, Android ফ্রেমওয়ার্ক ও অন্যান্য অ্যাপের মতো প্রসেসকে মিডিয়া অ্যাপের ট্রান্সপোর্ট কন্ট্রোল ও প্লেব্যাক তথ্য অ্যাক্সেস করতে দেয়। এই কম্পোনেন্ট কাস্টমাইজ করা যাবে না।
MediaParser API
MediaParser API, ExoPlayer-কে মিডিয়া কন্টেনার থেকে মিডিয়া স্যাম্পেল এক্সট্র্যাক্ট করার জন্য ফ্রেমওয়ার্ক মিডিয়া কন্টেনার পার্সারকে দক্ষতার সাথে ব্যবহার করার অনুমতি দেয়। MediaParser সোর্স কোড বাউন্ডারিতে নিম্নলিখিত পরিবর্তনগুলি অন্তর্ভুক্ত করে:
frameworks/base/apex/media/framework/java/android/media/MediaParser.java. API ও থিন লেয়ার প্রয়োগ।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প্রসেস আবার ব্যবহার করতে, আগে থেকে থাকাmediacodecফাইলে (frameworks/av/services/mediacodec/main_codecservice.cpp)StoreImplclass from frameworks/av/media/codec2/hidl/services/vendor.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 প্যাকেজ লোড করে যার মধ্যে Java ও নেটিভ কোড থাকে।
ছবি ১. মিডিয়া কম্পোনেন্ট আপডেট ফ্লো
ফ্রেমওয়ার্ক APEX প্যাকেজ ইনস্টল করার পরে, ডিভাইস রিবুট হয় এবং ডিস্ক ইমেজ মাউন্ট করে
এবং মিডিয়া সিস্টেম প্রসেস (media.extractor এবং media.codec) মাউন্ট পয়েন্ট থেকে
আপডেট করা মডিউল লোড করে।