Media

Android Media HAL simgesi

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.

Android medya mimarisi

Ş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/libmedia dizininde 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/media konumundaki 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.so adlı 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:

  1. 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 göz atın.
  2. 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.h ve HardwareAPI.h başlık dosyalarında verilmiştir.
  3. Ürününüzün Makefile dosyasında eklentinizi libstagefrighthw.so adı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.