الوسائط

رمز Android Media HAL

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

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

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

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

هندسة معمارية

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

بنية الوسائط في Android

الشكل 1: بنية الوسائط

إطار عمل التطبيق
على مستوى إطار عمل التطبيق، يتوفّر رمز التطبيق الذي يستخدم واجهات برمجة التطبيقات android.media للتفاعل مع أجهزة الوسائط المتعددة.
Binder IPC
تسهِّل الوكلاء لبروتوكول IPC في Binder عملية التواصل عبر حدود العمليات. يمكن العثور عليها في الدليل 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 .

ملاحظة: اعتبارًا من الإصدار 4.1 من Android، لم يعُد عنصر <Quirk> لبرامج ترميز الوسائط متوافقًا.