মিডিয়া

অ্যান্ড্রয়েড মিডিয়া HAL আইকন

অ্যান্ড্রয়েডের মধ্যে রয়েছে স্টেজফ্রাইট, নেটিভ লেভেলে একটি মিডিয়া প্লেব্যাক ইঞ্জিন যা জনপ্রিয় মিডিয়া ফরম্যাটের জন্য অন্তর্নির্মিত সফ্টওয়্যার-ভিত্তিক কোডেক রয়েছে।

স্টেজফ্রাইট অডিও এবং ভিডিও প্লেব্যাক বৈশিষ্ট্যগুলি OpenMAX কোডেকগুলির সাথে একীকরণ, সেশন পরিচালনা, সময়-সিঙ্ক্রোনাইজড রেন্ডারিং, পরিবহন নিয়ন্ত্রণ এবং DRM অন্তর্ভুক্ত করে।

স্টেজফ্রাইট আপনার দ্বারা প্রদত্ত কাস্টম হার্ডওয়্যার কোডেকগুলির সাথে একীকরণ সমর্থন করে৷ মিডিয়া এনকোড এবং ডিকোড করার জন্য একটি হার্ডওয়্যার পাথ সেট করতে, আপনাকে অবশ্যই একটি OpenMax IL (ইন্টিগ্রেশন লেয়ার) উপাদান হিসাবে একটি হার্ডওয়্যার-ভিত্তিক কোডেক প্রয়োগ করতে হবে।

দ্রষ্টব্য: স্টেজফ্রাইট আপডেটগুলি Android মাসিক নিরাপত্তা আপডেট প্রক্রিয়ার মাধ্যমে এবং একটি Android OS রিলিজের অংশ হিসাবে ঘটতে পারে।

স্থাপত্য

মিডিয়া অ্যাপ্লিকেশনগুলি নিম্নলিখিত আর্কিটেকচার অনুসারে অ্যান্ড্রয়েড নেটিভ মাল্টিমিডিয়া ফ্রেমওয়ার্কের সাথে ইন্টারঅ্যাক্ট করে।

অ্যান্ড্রয়েড মিডিয়া আর্কিটেকচার

চিত্র 1. মিডিয়া আর্কিটেকচার

অ্যাপ্লিকেশন ফ্রেমওয়ার্ক
অ্যাপ্লিকেশন ফ্রেমওয়ার্ক স্তরে একটি অ্যাপ্লিকেশন কোড যা মাল্টিমিডিয়া হার্ডওয়্যারের সাথে ইন্টারঅ্যাক্ট করতে android.media API ব্যবহার করে।
বাইন্ডার আইপিসি
বাইন্ডার আইপিসি প্রক্সিগুলি প্রক্রিয়া সীমানার উপর যোগাযোগের সুবিধা দেয়। এগুলি frameworks/av/media/libmedia ডিরেক্টরিতে অবস্থিত এবং "I" অক্ষর দিয়ে শুরু হয়।
নেটিভ মাল্টিমিডিয়া ফ্রেমওয়ার্ক
নেটিভ লেভেলে, অ্যান্ড্রয়েড একটি মাল্টিমিডিয়া ফ্রেমওয়ার্ক প্রদান করে যা অডিও এবং ভিডিও রেকর্ডিং এবং প্লেব্যাকের জন্য স্টেজফ্রাইট ইঞ্জিন ব্যবহার করে। স্টেজফ্রাইট সমর্থিত সফ্টওয়্যার কোডেকগুলির একটি ডিফল্ট তালিকার সাথে আসে এবং আপনি OpenMax ইন্টিগ্রেশন লেয়ার স্ট্যান্ডার্ড ব্যবহার করে আপনার নিজস্ব হার্ডওয়্যার কোডেক প্রয়োগ করতে পারেন। আরও বাস্তবায়নের বিশদ বিবরণের জন্য, frameworks/av/media এ অবস্থিত MediaPlayer এবং Stagefright উপাদানগুলি দেখুন।
OpenMAX ইন্টিগ্রেশন লেয়ার (IL)
OpenMAX IL স্টেজফ্রাইটের জন্য কাস্টম হার্ডওয়্যার-ভিত্তিক মাল্টিমিডিয়া কোডেকগুলিকে কম্পোনেন্টগুলি চিনতে এবং ব্যবহার করার জন্য একটি প্রমিত উপায় প্রদান করে। আপনাকে libstagefrighthw.so নামে একটি ভাগ করা লাইব্রেরির আকারে একটি OpenMAX প্লাগইন প্রদান করতে হবে। এই প্লাগইনটি আপনার কাস্টম কোডেক উপাদানগুলির সাথে স্টেজফ্রাইটকে লিঙ্ক করে, যা OpenMAX IL উপাদান মান অনুযায়ী প্রয়োগ করা আবশ্যক।

কাস্টম কোডেক প্রয়োগ করুন

স্টেজফ্রাইট সাধারণ মিডিয়া ফর্ম্যাটের জন্য অন্তর্নির্মিত সফ্টওয়্যার কোডেকগুলির সাথে আসে, তবে আপনি OpenMAX উপাদান হিসাবে আপনার নিজস্ব কাস্টম হার্ডওয়্যার কোডেক যুক্ত করতে পারেন। এটি করার জন্য, আপনাকে অবশ্যই OMX উপাদান এবং একটি OMX প্লাগইন তৈরি করতে হবে যা স্টেজফ্রাইট কাঠামোর সাথে আপনার কাস্টম কোডেকগুলিকে একত্রিত করে। উদাহরণের জন্য, hardware/ti/omap4xxx/domx/ দেখুন; গ্যালাক্সি নেক্সাসের জন্য একটি উদাহরণ প্লাগইনের জন্য, hardware/ti/omap4xx/libstagefrighthw দেখুন।

আপনার নিজস্ব কোডেক যোগ করতে:

  1. OpenMAX IL উপাদান মান অনুযায়ী আপনার উপাদান তৈরি করুন. কম্পোনেন্ট ইন্টারফেসটি frameworks/native/include/media/OpenMAX/OMX_Component.h ফাইলে অবস্থিত। OpenMAX IL স্পেসিফিকেশন সম্পর্কে আরও জানতে, OpenMAX ওয়েবসাইট পড়ুন।
  2. একটি OpenMAX প্লাগইন তৈরি করুন যা স্টেজফ্রাইট পরিষেবার সাথে আপনার উপাদানগুলিকে লিঙ্ক করে৷ প্লাগইন তৈরি করতে ইন্টারফেসের জন্য, frameworks/native/include/media/hardware/OMXPluginBase.h এবং HardwareAPI.h হেডার ফাইলগুলি দেখুন।
  3. আপনার পণ্য মেকফাইলে libstagefrighthw.so নামে একটি শেয়ার্ড লাইব্রেরি হিসাবে আপনার প্লাগইন তৈরি করুন৷ যেমন:
    LOCAL_MODULE := libstagefrighthw
    

    আপনার ডিভাইসের মেকফাইলে, নিশ্চিত করুন যে আপনি মডিউলটিকে একটি পণ্য প্যাকেজ হিসাবে ঘোষণা করেছেন:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

ফ্রেমওয়ার্কে কোডেক প্রকাশ করুন

স্টেজফ্রাইট পরিষেবা android.media.MediaCodecList এবং android.media.CamcorderProfile ক্লাসের মাধ্যমে অ্যাপ ডেভেলপারদের কাছে ডিভাইসে সমর্থিত কোডেক এবং প্রোফাইলগুলিকে প্রকাশ করতে system/etc/media_codecs.xml এবং system/etc/media_profiles.xml বিশ্লেষণ করে। আপনাকে অবশ্যই device/<company>/<device>/ ডিরেক্টরিতে উভয় ফাইল তৈরি করতে হবে এবং এটিকে আপনার ডিভাইসের মেকফাইলে সিস্টেম ইমেজের system/etc ডিরেক্টরিতে কপি করতে হবে। যেমন:

PRODUCT_COPY_FILES += \
  device/samsung/tuna/media_profiles.xml:system/etc/media_profiles.xml \
  device/samsung/tuna/media_codecs.xml:system/etc/media_codecs.xml \

সম্পূর্ণ উদাহরণের জন্য, device/samsung/tuna/media_codecs.xml এবং device/samsung/tuna/media_profiles.xml দেখুন।

দ্রষ্টব্য: Android 4.1 হিসাবে, মিডিয়া কোডেকগুলির জন্য <Quirk> উপাদানটি আর সমর্থিত নয়।