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.
- 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:
- 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. - Buat plugin OpenMAX yang menautkan komponen Anda dengan Stagefright
layanan. Untuk antarmuka pembuatan plugin, lihat
frameworks/native/include/media/hardware/OMXPluginBase.h
dan File headerHardwareAPI.h
. - 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.