وسائط

رمز Android Media HAL

يشتمل Android على Stagefright ، وهو محرك تشغيل وسائط على المستوى الأصلي يحتوي على برامج ترميز مدمجة قائمة على البرامج لتنسيقات الوسائط الشائعة.

تتضمن ميزات تشغيل الصوت والفيديو Stagefright التكامل مع برامج ترميز OpenMAX وإدارة الجلسة والعرض المتزامن مع الوقت والتحكم في النقل وإدارة الحقوق الرقمية.

يدعم Stagefright أيضًا التكامل مع برامج ترميز الأجهزة المخصصة التي تقدمها. لتعيين مسار جهاز لترميز الوسائط وفك تشفيرها ، يجب عليك تنفيذ برنامج ترميز مستند إلى الأجهزة كمكون OpenMax IL (طبقة التكامل).

ملاحظة: يمكن أن تحدث تحديثات Stagefright من خلال عملية التحديث الأمني ​​الشهرية لنظام Android وكجزء من إصدار نظام التشغيل Android.

هندسة عامة

تتفاعل تطبيقات الوسائط مع إطار عمل الوسائط المتعددة الأصلي لنظام Android وفقًا للبنية التالية.

هندسة وسائط Android

الشكل 1. هندسة الوسائط

إطار تطبيق
على مستوى إطار عمل التطبيق ، يوجد رمز تطبيق يستخدم واجهات برمجة تطبيقات android.media للتفاعل مع أجهزة الوسائط المتعددة.
بيندر IPC
تعمل وكلاء Binder IPC على تسهيل الاتصال عبر حدود العملية. وهي موجودة في دليل frameworks/av/media/libmedia وتبدأ بالحرف "I".
إطار عمل الوسائط المتعددة الأصلي
على المستوى الأصلي ، يوفر Android إطار عمل للوسائط المتعددة يستخدم محرك Stagefright لتسجيل الصوت والفيديو وتشغيله. يأتي Stagefright مع قائمة افتراضية لبرامج الترميز المدعومة ويمكنك تنفيذ برنامج ترميز الأجهزة الخاص بك باستخدام معيار طبقة تكامل OpenMax. لمزيد من تفاصيل التنفيذ ، راجع مكونات MediaPlayer و Stagefright الموجودة في frameworks/av/media .
طبقة تكامل OpenMAX (IL)
يوفر OpenMAX IL طريقة معيارية لـ Stagefright للتعرف على برامج ترميز الوسائط المتعددة المعتمدة على الأجهزة واستخدامها والتي تسمى المكونات. يجب عليك توفير مكون OpenMAX الإضافي في شكل مكتبة مشتركة تسمى libstagefrighthw.so . يربط هذا المكون الإضافي 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. قم ببناء المكون الإضافي الخاص بك كمكتبة مشتركة باسم libstagefrighthw.so في منتجك Makefile. فمثلا:
    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>/ ونسخه إلى دليل system/etc الخاص بصور النظام في ملف Makefile بجهازك. فمثلا:

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> الخاص ببرامج ترميز الوسائط مدعومًا.