Android, popüler medya biçimleri için yerleşik yazılım tabanlı codec'lere sahip yerel düzeyde bir medya oynatma motoru olan Stagefright'ı içerir.
Stagefright ses ve video oynatma özellikleri arasında OpenMAX codec'leriyle entegrasyon, oturum yönetimi, zaman senkronize edilmiş oluşturma, aktarım kontrolü ve DRM bulunur.
Stagefright, sizin tarafınızdan sağlanan özel donanım codec'leriyle entegrasyonu da destekler. Medyayı kodlamak ve kodlarını çözmek için bir donanım yolu ayarlamak istiyorsanız OpenMax IL (Entegrasyon Katmanı) bileşeni olarak donanım tabanlı bir codec'i uygulamanız gerekir.
Not: Stagefright güncellemeleri, Android aylık güvenlik güncellemesi süreci ve Android OS sürümü kapsamında yapılabilir.
Mimari
Medya uygulamaları, aşağıdaki mimariye göre Android yerel multimedya çerçevesiyle etkileşim kurar.

Ş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.
- Cilt IPC
- Binder IPC proxy'leri, işlem sınırları üzerinden iletişimi kolaylaştırır.
Bunlar
frameworks/av/media/libmediadizininde bulunur ve "I" harfi ile başlar. - Yerel Multimedya Çerçevesi
- Android, ses ve video kaydı ve oynatma için Stagefright motorunu kullanan bir yerel düzeyde multimedya çerçevesi sağlar. Stagefright, desteklenen yazılım codec'lerinin varsayılan bir listesini içerir. OpenMax entegrasyon katmanı standardını kullanarak kendi donanım codec'inizi de uygulayabilirsiniz. Daha fazla uygulama ayrıntısı için
frameworks/av/mediakonumundaki MediaPlayer ve Stagefright bileşenlerine bakın. - OpenMAX Entegrasyon Katmanı (IL)
- OpenMAX IL, Stagefright'ın bileşen adı verilen özel donanım tabanlı multimedya codec'lerini tanıması ve kullanması için standartlaştırılmış bir yöntem sağlar.
libstagefrighthw.soadlı bir paylaşılan kitaplık biçiminde bir OpenMAX eklentisi sağlamanız gerekir. Bu eklenti, Stagefright'ı özel codec bileşenlerinizle bağlar. Bu bileşenler, OpenMAX IL bileşen standardına göre uygulanmalıdır.
Özel codec'leri uygulama
Stagefright, yaygın medya biçimleri için yerleşik yazılım codec'leri ile birlikte gelir ancak OpenMAX bileşenleri olarak kendi özel donanım codec'lerinizi de ekleyebilirsiniz. Bunun için OMX bileşenlerini ve özel codec'lerinizi Stagefright çerçevesiyle bir araya getiren bir OMX eklentisi oluşturmanız gerekir. Örnek bileşenler için hardware/ti/omap4xxx/domx/ bölümüne, Galaxy Nexus için örnek eklenti için hardware/ti/omap4xx/libstagefrighthw bölümüne bakın.
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.hdosyasında bulunur. OpenMAX IL spesifikasyonu hakkında daha fazla bilgi edinmek için OpenMAX web sitesine göz atın. - Bileşenlerinizi Stagefright hizmetine bağlayan bir OpenMAX eklentisi oluşturun. Eklentiyi oluşturmak için gereken arayüzler
frameworks/native/include/media/hardware/OMXPluginBase.hveHardwareAPI.hbaşlık dosyalarında verilmiştir. - Ürününüzün Makefile dosyasında eklentinizi
libstagefrighthw.soadıyla paylaşılan kitaplık olarak derleyin. Örneğin:
LOCAL_MODULE := libstagefrighthw
Cihazınızın Makefile dosyasında modülü ürün paketi olarak tanımladığınızdan emin olun:
PRODUCT_PACKAGES += \ libstagefrighthw \ ...
Kodekleri çerçeveye gösterme
Stagefright hizmeti, cihazdaki desteklenen codec'leri ve profilleri android.media.MediaCodecList ve android.media.CamcorderProfile sınıfları aracılığıyla uygulama geliştiricilere 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şturmanız ve cihazınızın Makefile dosyasında sistem görüntüsünün system/etc dizinine kopyalamanız gerekir. Örnek:
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 device/samsung/tuna/media_codecs.xml
ve device/samsung/tuna/media_profiles.xml sayfalarına bakın .
Not: Android 4.1'den itibaren medya codec'leri için <Quirk> öğesi artık desteklenmemektedir.