
Android, popüler medya formatları için yerleşik yazılım tabanlı codec bileşenlerine sahip yerel düzeyde bir medya oynatma motoru olan Stagefright'ı içerir.
Stagefright ses ve video oynatma özellikleri arasında OpenMAX codec bileşenleri, oturum yönetimi, zamanla senkronize oluşturma, aktarım kontrolü ve DRM ile entegrasyon bulunur.
Stagefright, sizin tarafınızdan sağlanan özel donanım kodekleriyle entegrasyonu da destekler. Ortamı kodlamak ve kodunu çözmek için bir donanım yolu ayarlamak için, bir OpenMax IL (Entegrasyon Katmanı) bileşeni olarak donanım tabanlı bir codec bileşeni uygulamanız gerekir.
Not: Stagefright güncellemeleri, Android aylık güvenlik güncelleme süreci aracılığıyla ve bir Android işletim sistemi sürümünün parçası olarak gerçekleştirilebilir.
Mimari
Medya uygulamaları, aşağıdaki mimariye göre Android yerel multimedya çerçevesiyle etkileşime girer.

Şekil 1. Medya mimarisi
- Uygulama Çerçevesi
- Uygulama çerçevesi düzeyinde, multimedya donanımıyla etkileşim kurmak için android.media API'lerini kullanan uygulama kodu bulunur.
- bağlayıcı IPC
- Binder IPC proxy'leri, süreç sınırları üzerinden iletişimi kolaylaştırır.
frameworks/av/media/libmedia
dizininde bulunurlar ve "I" harfiyle başlarlar. - Yerel Multimedya Çerçevesi
- Yerel düzeyde Android, ses ve video kaydı ve oynatma için Stagefright motorunu kullanan bir multimedya çerçevesi sağlar. Stagefright, desteklenen yazılım codec bileşenlerinin varsayılan bir listesiyle birlikte gelir ve OpenMax entegrasyon katmanı standardını kullanarak kendi donanım codec bileşeninizi uygulayabilirsiniz. Daha fazla uygulama ayrıntısı için,
frameworks/av/media
içinde bulunan MediaPlayer ve Stagefright bileşenlerine bakın. - OpenMAX Entegrasyon Katmanı (IL)
- OpenMAX IL, Stagefright'ın bileşenler adı verilen özel donanım tabanlı multimedya kodeklerini tanıması ve kullanması için standart bir yol sağlar. libstagefrighthw.so adlı paylaşılan bir kitaplık biçiminde bir OpenMAX eklentisi
libstagefrighthw.so
. Bu eklenti, Stagefright'ı, OpenMAX IL bileşen standardına göre uygulanması gereken özel kodek bileşenlerinize bağlar.
Özel kodekleri uygulama
Stagefright, yaygın medya biçimleri için yerleşik yazılım kodekleriyle birlikte gelir, ancak OpenMAX bileşenleri olarak kendi özel donanım kodeklerinizi de ekleyebilirsiniz. Bunu yapmak için, özel kodeklerinizi Stagefright çerçevesiyle birbirine bağlayan OMX bileşenleri ve bir OMX eklentisi oluşturmalısınız. Örneğin bileşenler için, hardware/ti/omap4xxx/domx/
; Galaxy Nexus için örnek bir eklenti için, bkz. hardware/ti/omap4xx/libstagefrighthw
.
Kendi kodeklerinizi eklemek için:
- Bileşenlerinizi OpenMAX IL bileşen standardına göre oluşturun. Bileşen arabirimi,
frameworks/native/include/media/OpenMAX/OMX_Component.h
dosyasında bulunur. OpenMAX IL spesifikasyonu hakkında daha fazla bilgi edinmek için OpenMAX web sitesine bakın. - Bileşenlerinizi Stagefright hizmetine bağlayan bir OpenMAX eklentisi oluşturun. Eklentiyi oluşturacak arabirimler için
frameworks/native/include/media/hardware/OMXPluginBase.h
veHardwareAPI.h
başlık dosyalarına bakın. - Eklentinizi, Makefile ürününüzdeki
libstagefrighthw.so
adıyla paylaşılan bir kitaplık olarak oluşturun. Örneğin:LOCAL_MODULE := libstagefrighthw
Cihazınızın Makefile'ında modülü bir ürün paketi olarak bildirdiğinizden emin olun:
PRODUCT_PACKAGES += \ libstagefrighthw \ ...
Codec'leri çerçeveye gösterme
Stagefright hizmeti, cihazdaki desteklenen codec bileşenlerini ve profilleri android.media.MediaCodecList
ve android.media.CamcorderProfile
sınıfları aracılığıyla uygulama geliştiricilerine göstermek için system/etc/media_codecs.xml
ve system/etc/media_profiles.xml
öğelerini ayrıştırır. Her iki dosyayı da device/<company>/<device>/
dizininde oluşturmalı ve bunu, cihazınızın Makefile'ındaki sistem görüntüsünün system/etc
dizinine kopyalamalısınız. Örneğin:
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 \
Tam örnekler için bkz. device/samsung/tuna/media_codecs.xml
ve device/samsung/tuna/media_profiles.xml
.
Not: Android 4.1'den itibaren, medya kodekleri için <Quirk>
öğesi artık desteklenmemektedir.