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ş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.

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 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:

  1. 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.
  2. Bileşenlerinizi Stagefright hizmetine bağlayan bir OpenMAX eklentisi oluşturun. Eklentiyi oluşturacak arabirimler için frameworks/native/include/media/hardware/OMXPluginBase.h ve HardwareAPI.h başlık dosyalarına bakın.
  3. 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.