رسانه ها

نماد Android Media HAL

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

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

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

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

معماری

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

معماری رسانه اندروید

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

چارچوب برنامه
در سطح چارچوب برنامه ، کد برنامه ای وجود دارد که از API های android.media برای تعامل با سخت افزار چندرسانه ای استفاده می کند.
اتصال دهنده IPC
پروکسی های Binder IPC ارتباطات را از مرزهای فرآیند تسهیل می کنند. آنها در frameworks/av/media/libmedia فهرست قرار دارند و با حرف "I" شروع می شوند.
چارچوب چندرسانه ای بومی
در سطح بومی ، Android یک چارچوب چندرسانه ای فراهم می کند که از موتور Stagefright برای ضبط و پخش صدا و فیلم استفاده می کند. Stagefright با لیست پیش فرض کدک های نرم افزاری پشتیبانی شده همراه است و شما می توانید با استفاده از استاندارد لایه ادغام OpenMax ، کدک سخت افزاری خود را پیاده سازی کنید. برای جزئیات بیشتر در مورد پیاده سازی ، به اجزای MediaPlayer و Stagefright که در frameworks/av/media واقع شده اند ، مراجعه کنید.
لایه ادغام OpenMAX (IL)
OpenMAX IL یک روش استاندارد برای شناسایی و استفاده از کدک های چندرسانه ای مبتنی بر سخت افزار به نام اجزا St برای Stagefright فراهم می کند. شما باید یک پلاگین OpenMAX در قالب یک کتابخانه مشترک به نام libstagefrighthw.so . این پلاگین Stagefright را با اجزای کدک سفارشی شما پیوند می دهد ، که باید طبق استاندارد م componentلفه OpenMAX IL پیاده سازی شود.

اجرای کدک های سفارشی

Stagefright همراه با کدک های نرم افزاری داخلی برای قالب های رایج رسانه است ، اما شما همچنین می توانید رمزگذارهای سخت افزاری دلخواه خود را به عنوان م Openلفه های OpenMAX اضافه کنید. برای انجام این کار ، شما باید اجزای OMX و یک پلاگین OMX ایجاد کنید که کدک های سفارشی شما را با چارچوب Stagefright متصل کند. به عنوان مثال ، به hardware/ti/omap4xxx/domx/ . برای مثال به یک پلاگین برای Galaxy Nexus ، به hardware/ti/omap4xx/libstagefrighthw .

برای افزودن رمزگذارهای خود:

  1. اجزای خود را مطابق با استاندارد جز component OpenMAX IL ایجاد کنید. رابط م componentلفه در 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 تصویر 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> برای کدک های رسانه ای دیگر پشتیبانی نمی شود.