মাধ্যম

Android Media HAL আইকন

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

Stagefright অডিও ও ভিডিও প্লেব্যাক ফিচারের মধ্যে রয়েছে OpenMAX কোডেক, সেশন ম্যানেজমেন্ট, টাইম-সিনক্রোনাইজড রেন্ডারিং, ট্রান্সপোর্ট কন্ট্রোল ও DRM-এর সাথে ইন্টিগ্রেশন।

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

মনে রাখবেন: Stagefright আপডেট Android মাসিক নিরাপত্তা আপডেট প্রসেসের মাধ্যমে এবং Android OS রিলিজের অংশ হিসেবে হতে পারে।

স্থাপত্যশিল্প

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

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

ছবি ১. মিডিয়া আর্কিটেকচার

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

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

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

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

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

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

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

ফ্রেমওয়ার্কে কোডেক এক্সপোজ করা

Stagefright পরিষেবা system/etc/media_codecs.xml ও system/etc/media_profiles.xml পার্স করে, যাতে android.media.MediaCodecList ও android.media.CamcorderProfile ক্লাসের মাধ্যমে অ্যাপ ডেভেলপারদের কাছে ডিভাইসে কাজ করে এমন কোডেক ও প্রোফাইল প্রকাশ করা যায়। আপনাকে অবশ্যই device/<company>/<device>/ ডিরেক্টরিতে দুটি ফাইলই তৈরি করতে হবে এবং আপনার ডিভাইসের Makefile-এ সিস্টেম ইমেজের 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> এলিমেন্ট আর কাজ করে না।