Medya

Android Medya HAL simgesi

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.

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.
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, varsayılan desteklenen yazılım codec bileşenleri 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 uygulayın

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:

  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 bakın.
  2. 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 ve HardwareAPI.h başlık dosyalarına bakın.
  3. 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 gösterin

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.