Media

Ikon Android Media HAL

Android menyertakan Stagefright, yaitu mesin pemutaran media di tingkat native yang memiliki kodek berbasis perangkat lunak untuk format media populer.

Fitur pemutaran audio dan video Stagefright menyertakan integrasi dengan Codec OpenMAX, pengelolaan sesi, rendering sinkron waktu, transpor kontrol, dan DRM.

Stagefright juga mendukung integrasi dengan codec perangkat keras khusus yang disediakan oleh maksimal. Untuk menyetel jalur hardware guna mengenkode dan mendekode media, Anda harus mengimplementasikan codec berbasis hardware sebagai komponen OpenMax IL (Integration Layer).

Catatan: Update Stagefright dapat terjadi melalui Keamanan bulanan Android update 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. Media arsitektur

Kerangka Kerja Aplikasi
Pada level framework aplikasi adalah kode aplikasi yang menggunakan android.media API untuk berinteraksi dengan hardware multimedia.
IPC Binder
Proxy Binder IPC memfasilitasi komunikasi melalui batas-batas proses. File tersebut berada di direktori frameworks/av/media/libmedia dan diawali dengan huruf "I".
Framework Multimedia Native
Pada tingkat native, Android menyediakan framework multimedia yang menggunakan mesin Stagefright untuk perekaman dan pemutaran audio dan video. Panggung memiliki daftar {i>default<i} dari {i>code <i}perangkat lunak yang didukung dan Anda dapat menerapkan codec perangkat keras Anda sendiri dengan menggunakan standar lapisan integrasi OpenMax. Sebagai detail implementasi selengkapnya, lihat komponen MediaPlayer dan Stagefright yang berada di frameworks/av/media.
Lapisan Integrasi OpenMAX (IL)
OpenMAX IL memberikan cara terstandardisasi bagi Stagefright untuk mengenali dan menggunakan {i>codec<i} multimedia berbasis perangkat keras khusus yang disebut {i>component<i}. Anda harus memasukkan plugin OpenMAX dalam bentuk pustaka bersama yang dinamai libstagefrighthw.so. Plugin ini menautkan Stagefright dengan komponen codec, yang harus diterapkan sesuai dengan OpenMAX IL komponen standar.

Mengimplementasikan codec kustom

{i>Sagefright<i} dilengkapi dengan codec perangkat lunak {i>built-in<i} untuk format media umum, tetapi Anda juga dapat menambahkan codec perangkat keras khusus Anda sendiri sebagai komponen OpenMAX. Yang akan dilakukan ini, Anda harus membuat komponen OMX dan {i>plugin<i} OMX yang saling terkait codec kustom Anda dengan kerangka kerja Stagefright. Untuk contoh komponen, lihat hardware/ti/omap4xxx/domx/; guna mendapatkan contoh plugin untuk Galaxy Nexus, lihat hardware/ti/omap4xx/libstagefrighthw.

Untuk menambahkan codec Anda sendiri:

  1. Buat komponen sesuai dengan standar komponen OpenMAX IL. Tujuan antarmuka komponen terletak di File frameworks/native/include/media/OpenMAX/OMX_Component.h. Kepada pelajari lebih lanjut spesifikasi OpenMAX IL, lihat Situs OpenMAX.
  2. Buat plugin OpenMAX yang menautkan komponen Anda dengan Stagefright layanan. Untuk antarmuka pembuatan plugin, lihat frameworks/native/include/media/hardware/OMXPluginBase.h dan File header HardwareAPI.h.
  3. Bangun plugin Anda sebagai library bersama dengan nama libstagefrighthw.so di Makefile produk Anda. Contoh:
    LOCAL_MODULE := libstagefrighthw
    

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

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

Mengekspos codec ke framework

Layanan Stagefright mengurai system/etc/media_codecs.xml dan system/etc/media_profiles.xml untuk mengekspos codec yang didukung dan profil di perangkat kepada developer aplikasi melalui android.media.MediaCodecList dan Class android.media.CamcorderProfile. Anda harus membuat kedua file di direktori device/<company>/<device>/ lalu salin 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 lengkapnya, 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.