
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şenleriyle entegrasyon, oturum yönetimi, zaman senkronize işleme, aktarım kontrolü ve DRM yer alır.
Stagefright ayrıca sizin tarafınızdan sağlanan özel donanım codec bileşenleriyle entegrasyonu da destekler. Medyayı kodlamak ve kodunu çözmek için bir donanım yolu ayarlamak için, OpenMax IL (Entegrasyon Katmanı) bileşeni olarak donanım tabanlı bir codec bileşeni uygulamanız gerekir.
Not: Stagefright güncellemeleri, Android'in aylık güvenlik güncelleme süreci aracılığıyla ve Android işletim sistemi sürümünün bir parçası olarak gerçekleşebilir.
Mimari
Medya uygulamaları Android yerel multimedya çerçevesiyle aşağıdaki mimariye göre 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 oynatımı 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 codec bileşenlerini tanıması ve kullanması için standartlaştırılmış bir yol sağlar.
libstagefrighthw.so
adında paylaşılan bir kitaplık biçiminde bir OpenMAX eklentisi sağlamalısınız. Bu eklenti, Stagefright'ı OpenMAX IL bileşen standardına göre uygulanması gereken özel codec bileşenlerinize bağlar.
Özel codec bileşenlerini uygulama
Stagefright, yaygın medya formatları için yerleşik yazılım kodlayıcılarıyla birlikte gelir, ancak aynı zamanda kendi özel donanım kodlayıcılarınızı OpenMAX bileşenleri olarak da ekleyebilirsiniz. Bunu yapmak için, özel codec bileşenlerinizi Stagefright çerçevesiyle birbirine bağlayan OMX bileşenlerini ve bir OMX eklentisini oluşturmanız gerekir. Örnek bileşenler için hardware/ti/omap4xxx/domx/
bakın; Galaxy Nexus'a yönelik örnek bir eklenti için bkz. hardware/ti/omap4xx/libstagefrighthw
.
Kendi codec'lerinizi eklemek için:
- Bileşenlerinizi OpenMAX IL bileşen standardına göre oluşturun. Bileşen arayüzü
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 arayüzler için,
frameworks/native/include/media/hardware/OMXPluginBase.h
veHardwareAPI.h
başlık dosyalarına bakın. - Eklentinizi, ürününüzün Makefile dosyasında
libstagefrighthw.so
adıyla paylaşılan bir kitaplık olarak oluşturun. Örneğin:LOCAL_MODULE := libstagefrighthw
Cihazınızın Makefile dosyasında modülü bir ürün paketi olarak bildirdiğinizden emin olun:
PRODUCT_PACKAGES += \ libstagefrighthw \ ...
Codec bileşenlerini çerçeveye sunma
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 sunmak için system/etc/media_codecs.xml
ve system/etc/media_profiles.xml
ayrıştırır. Her iki dosyayı da device/<company>/<device>/
dizininde oluşturmalı ve bunu aygıtınızın Makefile dosyası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 \
Örneklerin tamamı için, bkz device/samsung/tuna/media_codecs.xml
ve device/samsung/tuna/media_profiles.xml
.
Not: Android 4.1'den itibaren medya codec bileşenleri için <Quirk>
öğesi artık desteklenmemektedir.