
Android menyertakan Stagefright, mesin pemutaran media di tingkat asli yang memiliki codec berbasis perangkat lunak bawaan untuk format media populer.
Fitur pemutaran audio dan video Stagefright termasuk integrasi dengan codec OpenMAX, manajemen sesi, rendering yang disinkronkan waktu, kontrol transportasi, dan DRM.
Stagefright juga mendukung integrasi dengan codec perangkat keras khusus yang Anda sediakan. Untuk menyetel jalur perangkat keras untuk menyandikan dan mendekode media, Anda harus menerapkan codec berbasis perangkat keras sebagai komponen OpenMax IL (Lapisan Integrasi).
Catatan: Pembaruan stagefright dapat terjadi melalui proses pembaruan keamanan bulanan Android dan sebagai bagian dari rilis OS Android.
Arsitektur
Aplikasi media berinteraksi dengan kerangka kerja multimedia asli Android menurut arsitektur berikut.

Gambar 1. Arsitektur media
- Kerangka Aplikasi
- Pada tingkat kerangka aplikasi adalah kode aplikasi yang memanfaatkan API android.media untuk berinteraksi dengan perangkat keras multimedia.
- Binder IPC
- Proksi Binder IPC memfasilitasi komunikasi melewati batas proses. Mereka berada di direktori
frameworks/av/media/libmedia
dan dimulai dengan huruf "I". - Kerangka Multimedia Asli
- Pada level native, Android menyediakan framework multimedia yang menggunakan engine Stagefright untuk perekaman dan pemutaran audio dan video. Stagefright hadir dengan daftar default codec perangkat lunak yang didukung dan Anda dapat menerapkan codec perangkat keras Anda sendiri dengan menggunakan standar lapisan integrasi OpenMax. Untuk detail implementasi selengkapnya, lihat komponen MediaPlayer dan Stagefright yang terletak di
frameworks/av/media
. - OpenMAX Integration Layer (IL)
- OpenMAX IL menyediakan cara standar bagi Stagefright untuk mengenali dan menggunakan codec multimedia berbasis perangkat keras khusus yang disebut komponen. Anda harus menyediakan plugin OpenMAX dalam bentuk pustaka bersama bernama
libstagefrighthw.so
. Plugin ini menghubungkan Stagefright dengan komponen codec kustom Anda, yang harus diimplementasikan sesuai dengan standar komponen OpenMAX IL.
Menerapkan codec khusus
Stagefright hadir dengan codec perangkat lunak bawaan untuk format media umum, tetapi Anda juga dapat menambahkan codec perangkat keras khusus Anda sendiri sebagai komponen OpenMAX. Untuk melakukan ini, Anda harus membuat komponen OMX dan plugin OMX yang menghubungkan codec kustom Anda dengan kerangka kerja 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 lebih lanjut tentang spesifikasi OpenMAX IL, lihat situs web OpenMAX . - Buat plugin OpenMAX yang menghubungkan komponen Anda dengan layanan Stagefright. Untuk antarmuka untuk membuat plugin, lihat file header
frameworks/native/include/media/hardware/OMXPluginBase.h
danHardwareAPI.h
. - Bangun plugin Anda sebagai pustaka bersama dengan nama
libstagefrighthw.so
di Makefile produk Anda. Sebagai contoh:
LOCAL_MODULE := libstagefrighthw
Di Makefile perangkat Anda, pastikan Anda mendeklarasikan modul sebagai paket produk:
PRODUCT_PACKAGES += \ libstagefrighthw \ ...
Mengekspos codec ke kerangka kerja
Layanan Stagefright mem-parsing system/etc/media_codecs.xml
dan system/etc/media_profiles.xml
untuk mengekspos codec dan profil yang didukung pada perangkat ke pengembang aplikasi melalui kelas android.media.MediaCodecList
dan android.media.CamcorderProfile
. Anda harus membuat kedua file di direktori device/<company>/<device>/
dan menyalinnya ke direktori system/etc
image system/etc
di Makefile perangkat Anda. Sebagai 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.