
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.

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:
- 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. - 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
danHardwareAPI.h
. - 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.