Media

Ikon Android Media HAL

Android menyertakan Stagefright, mesin pemutaran media di tingkat native yang memiliki codec bawaan berbasis software untuk format media populer.

Fitur pemutaran audio dan video Stagefright mencakup integrasi dengan codec OpenMAX, pengelolaan sesi, rendering yang disinkronkan waktu, kontrol transpor, dan DRM.

Stagefright juga mendukung integrasi dengan codec hardware kustom yang disediakan oleh Anda. Untuk menetapkan jalur hardware guna mengenkode dan mendekode media, Anda harus menerapkan codec berbasis hardware sebagai komponen OpenMax IL (Lapisan Integrasi).

Catatan: Update Stagefright dapat dilakukan melalui proses update keamanan bulanan Android dan sebagai bagian dari rilis Android OS.

Arsitektur

Aplikasi media berinteraksi dengan framework multimedia native Android sesuai dengan arsitektur berikut.

Arsitektur media Android

Gambar 1. Arsitektur media

Framework Aplikasi
Di tingkat framework aplikasi adalah kode aplikasi yang menggunakan API android.media untuk berinteraksi dengan hardware multimedia.
IPC Binder
Proxy IPC Binder memfasilitasi komunikasi melalui batas proses. File ini berada di direktori frameworks/av/media/libmedia dan dimulai dengan huruf "I".
Framework Multimedia Native
Di tingkat native, Android menyediakan framework multimedia yang menggunakan mesin Stagefright untuk perekaman dan pemutaran audio dan video. Stagefright disertakan dengan daftar default codec software yang didukung dan Anda dapat menerapkan codec hardware Anda sendiri menggunakan standar lapisan integrasi OpenMax. Untuk mengetahui detail implementasi selengkapnya, lihat komponen MediaPlayer dan Stagefright yang terletak di frameworks/av/media.
Lapisan Integrasi OpenMAX (IL)
OpenMAX IL menyediakan cara standar bagi Stagefright untuk mengenali dan menggunakan codec multimedia berbasis hardware kustom yang disebut komponen. Anda harus menyediakan plugin OpenMAX dalam bentuk library bersama bernama libstagefrighthw.so. Plugin ini menautkan Stagefright dengan komponen codec kustom Anda, yang harus diterapkan sesuai dengan standar komponen OpenMAX IL.

Mengimplementasikan codec kustom

Stagefright dilengkapi dengan codec software bawaan untuk format media umum, tetapi Anda juga dapat menambahkan codec hardware kustom Anda sendiri sebagai komponen OpenMAX. Untuk melakukannya, Anda harus membuat komponen OMX dan plugin OMX yang menggabungkan codec kustom dengan framework Stagefright. Untuk contoh komponen, lihat hardware/ti/omap4xxx/domx/; untuk contoh plugin untuk Galaxy Nexus, lihat hardware/ti/omap4xx/libstagefrighthw.

Untuk menambahkan codec Anda sendiri:

  1. Buat komponen Anda sesuai dengan standar komponen OpenMAX IL. Antarmuka komponen terletak di file frameworks/native/include/media/OpenMAX/OMX_Component.h. Untuk mempelajari spesifikasi OpenMAX IL lebih lanjut, lihat situs OpenMAX.
  2. Buat plugin OpenMAX yang menautkan komponen Anda dengan layanan Stagefright. Untuk antarmuka guna membuat plugin, lihat file header frameworks/native/include/media/hardware/OMXPluginBase.h dan HardwareAPI.h.
  3. Build plugin Anda sebagai library bersama dengan nama libstagefrighthw.so di Makefile produk Anda. Misalnya:
    LOCAL_MODULE := libstagefrighthw
    

    Dalam Makefile perangkat, pastikan Anda mendeklarasikan modul sebagai paket produk:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

Mengekspos codec ke framework

Layanan Stagefright mengurai system/etc/media_codecs.xml dan system/etc/media_profiles.xml untuk mengekspos codec dan profil yang didukung di perangkat kepada developer aplikasi melalui class android.media.MediaCodecList dan android.media.CamcorderProfile. Anda harus membuat kedua file di direktori device/<company>/<device>/ dan menyalinnya ke direktori system/etc image sistem di Makefile perangkat Anda. Contoh:

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 \

Untuk contoh lengkap, lihat device/samsung/tuna/media_codecs.xml dan device/samsung/tuna/media_profiles.xml .

Catatan: Mulai Android 4.1, elemen <Quirk> untuk codec media tidak lagi didukung.