অ্যান্ড্রয়েড 10 বা উচ্চতর অনেকগুলি আপডেটযোগ্য মিডিয়া উপাদান রয়েছে যা Google Play স্টোর অবকাঠামোর মাধ্যমে বা অংশীদার-প্রদত্ত ওভার-দ্য-এয়ার (OTA) পদ্ধতির মাধ্যমে ফ্রেমওয়ার্ক উপাদানগুলি আপডেট করতে সক্ষম করে। মিডিয়া উপাদানগুলি মডিউলগুলিতে একসাথে প্যাকেজ করা হয় যা সম্পূর্ণ সিস্টেম ইমেজ আপডেটের প্রয়োজন ছাড়াই সুরক্ষা আপডেট এবং বৈশিষ্ট্য আপডেটগুলি প্রদান করতে দেয়।
নিম্নলিখিত মডিউলগুলিতে আপডেটযোগ্য মিডিয়া উপাদান বিদ্যমান।
মিডিয়া। এই মডিউলটিতে মিডিয়া এক্সট্র্যাক্টর ,
MediaSession2
API , এবংMediaParser
API গুলি অন্তর্ভুক্ত রয়েছে৷মিডিয়া কোডেক । এই মডিউলটিতে আপডেটযোগ্য সফ্টওয়্যার কোডেক2 উপাদান রয়েছে।
মিডিয়া প্রদানকারী । এই মডিউলটি ইন্ডেক্স করা মেটাডেটা (এসডি কার্ড এবং ইউএসবি ডিভাইস থেকে অডিও, ভিডিও এবং ছবি) অপ্টিমাইজ করে এবং সেই ডেটা মিডিয়াস্টোর পাবলিক API-এর মাধ্যমে অ্যাপগুলিতে উপলব্ধ করে।
কাস্টম এক্সট্রাক্টর এবং ডিকোডার যোগ করার বিষয়ে বিস্তারিত জানার জন্য, মিডিয়া উপাদান কাস্টমাইজ করা দেখুন।
মিডিয়া এক্সট্রাক্টর
অ্যান্ড্রয়েড 9 এবং তার নিচের সংস্করণে, এক্সট্র্যাক্টারদের একটি একক libstagefright.so
ফাইলে কম্পাইল করা হয়। অ্যান্ড্রয়েড 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/
এক্সোপ্লেয়ার শব্দাত্মক উত্স যার উপর মিডিয়াপার্সার তৈরি করা হয়েছে।
MediaParser API কাস্টমাইজ করা যাবে না। MediaParser পরীক্ষা করতে, cts/tests/tests/mediaparser/
এ পরীক্ষাগুলি ব্যবহার করুন।
মিডিয়া কোডেক
মিডিয়া কোডেক মডিউল আপডেটযোগ্য সফ্টওয়্যার কোডেক 2 উপাদান অন্তর্ভুক্ত করে। কাস্টমাইজেশনের জন্য সমর্থন রিলিজের মধ্যে আলাদা:
Android 11 বা উচ্চতর সংস্করণে (বিশেষত Google Play সিস্টেম আপডেট v292100200 ), আপনি ION মেমরি বরাদ্দের জন্য প্যারামিটারগুলি কাস্টমাইজ করতে পারেন (বিশদ বিবরণের জন্য নীচে দেখুন)।
অ্যান্ড্রয়েড 9 বা তার চেয়ে কম সময়ে, OMX কোডেক এপিআই আপডেটযোগ্য নয়, তবে আপনি এখনও এটি বিক্রেতা পার্টিশনে ব্যবহার করতে পারেন।
ION মেমরি বরাদ্দ
Android 11 বা উচ্চতর এবং Google Play সিস্টেম আপডেট v292100200 বা উচ্চতর সংস্করণে, আপনি ION মেমরি বরাদ্দের জন্য নিম্নলিখিত প্যারামিটারগুলি কাস্টমাইজ করতে পারেন৷
প্যারামিটার | ডিফল্ট মান | বর্ণনা |
---|---|---|
heapMask | 0xFFFFFFFF | সমস্ত গাদা ধরনের অনুমোদিত. |
allocFlags | 0 | কোনো পতাকা সেট করা হয়নি। |
minAlignment | 0 | কোনো প্রান্তিককরণ নেই। |
পরামিতি ওভাররাইড করতে:
একটি ডিফল্ট
android.hardware.media.c2
পরিষেবা নিবন্ধন করুন এবং কাস্টম ION ব্যবহারের পরামিতি প্রদান করুন৷একটি নতুন পরিষেবা তৈরি করতে, ফ্রেমওয়ার্ক/av/media/codec2/hidl/services/vendor.cpp ফাইলটি আপনার সংগ্রহস্থলে অনুলিপি করুন তারপর প্রয়োজন অনুসারে
StoreImpl::Interface::SetIonUsage()
সংশোধন করুন।(OMX)
media.codec
প্রক্রিয়াটি পুনঃব্যবহার করতে,StoreImpl
ক্লাস ফ্রেমওয়ার্ক/av/media/codec2/hidl/services/vendor.cpp থেকে বিদ্যমান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 প্যাকেজ লোড করে যাতে জাভা এবং নেটিভ কোড থাকে।
চিত্র 1. মিডিয়া উপাদান আপডেট প্রবাহ
ফ্রেমওয়ার্ক APEX প্যাকেজ ইনস্টল করার পরে, ডিভাইসটি পুনরায় বুট করে এবং ডিস্ক ইমেজ এবং মিডিয়া সিস্টেম প্রক্রিয়াগুলি ( media.extractor
এবং media.codec
) মাউন্ট পয়েন্ট থেকে আপডেট হওয়া মডিউলগুলি লোড করে৷