رسانه

نماد Android Media HAL

‫Android شامل Stagefright، موتور بازپخش رسانه در سطح بومی است که دارای کدک‌های نرم‌افزاری داخلی برای قالب‌های رسانه‌ای پرطرفدار است.

ویژگی‌های بازپخش صوتی و تصویری Stagefright شامل یکپارچه‌سازی با کدک‌های OpenMAX، مدیریت جلسه، رندرینگ هم‌زمان، کنترل انتقال، و DRM می‌شود.

Stagefright همچنین از ادغام با کدک‌های سخت‌افزاری سفارشی ارائه‌شده توسط شما پشتیبانی می‌کند. برای تنظیم مسیر سخت‌افزاری برای کدبندی و کدگشایی رسانه، باید یک کدبند سخت‌افزاری را به‌عنوان یک جزء OpenMax IL (لایه یکپارچه‌سازی) پیاده‌سازی کنید.

توجه: به‌روزرسانی‌های Stagefright می‌تواند ازطریق فرایند به‌روزرسانی امنیتی ماهانه Android و به‌عنوان بخشی از انتشار سیستم‌عامل Android انجام شود.

معماری

برنامه‌های رسانه با چارچوب چندرسانه‌ای بومی Android مطابق با معماری زیر تعامل دارند.

معماری رسانه Android

شکل ۱. معماری رسانه

چارچوب برنامه
در سطح چارچوب برنامه، کد برنامه وجود دارد که از میاناهای برنامه‌سازی کاربردی android.media برای تعامل با سخت‌افزار چندرسانه‌ای استفاده می‌کند.
Binder IPC
کارگزاران نیابتی IPC Binder ارتباط را در مرزهای فرایند تسهیل می‌کنند. در دایرکتوری frameworks/av/media/libmedia قرار دارند و با حرف «I» شروع می‌شوند.
چارچوب چندرسانه‌ای بومی
در سطح بومی، Android چارچوب چندرسانه‌ای ارائه می‌دهد که از موتور Stagefright برای ضبط و بازپخش صدا و ویدیو استفاده می‌کند. Stagefright با فهرست پیش‌فرضی از کدک‌های نرم‌افزاری پشتیبانی‌شده ارائه می‌شود و می‌توانید کدک سخت‌افزاری خودتان را بااستفاده از استاندارد لایه ادغام OpenMax پیاده‌سازی کنید. برای جزئیات بیشتر درباره پیاده‌سازی، به اجزای MediaPlayer و Stagefright واقع در frameworks/av/media مراجعه کنید.
OpenMAX Integration Layer (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 تصویر سیستم در «فایل ساخت» دستگاهتان کپی کنید. برای مثال:

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> برای کدک‌های رسانه دیگر پشتیبانی نمی‌شود.