Medya

Android Media HAL simgesi

Android, popüler medya formatları için yerleşik yazılım tabanlı kodeklere 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, zaman eşzamanlı işleme, aktarım denetimi ve DRM ile entegrasyon bulunur.

Stagefright ayrıca 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, donanım tabanlı bir codec bileşenini bir OpenMax IL (Entegrasyon Katmanı) bileşeni olarak uygulamanız gerekir.

Not: Stagefright güncellemeleri, Android aylık güvenlik güncellemesi süreci aracılığıyla ve bir Android OS sürümünün parçası olarak gerçekleştirilebilir.

Mimari

Medya uygulamaları, aşağıdaki mimariye göre Android yerel multimedya çerçevesi ile 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 kodudur.
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 frameworks/av/media/libmedia 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 gelir ve OpenMax tümleştirme katmanı standardını kullanarak kendi donanım codec bileşeninizi uygulayabilirsiniz. Daha fazla uygulama detayı için, frameworks/av/media media'da 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 standartlaştırılmış bir yol sağlar. Libstagefrighthw.so adlı paylaşılan 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şenlerinizle bağlar.

Özel codec bileşenleri uygulama

Stagefright, yaygın medya formatları için yerleşik yazılım kodekleriyle birlikte gelir, ancak kendi özel donanım kodeklerinizi de OpenMAX bileşenleri olarak ekleyebilirsiniz. Bunu yapmak için, özel kodeklerinizi Stagefright çerçevesi ile birbirine bağlayan OMX bileşenleri ve bir OMX eklentisi oluşturmanız gerekir. Örneğin bileşenler, hardware/ti/omap4xxx/domx/ bakın; Galaxy Nexus için örnek bir eklenti için, hardware/ti/omap4xx/libstagefrighthw .

Kendi kodeklerinizi 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şturmaya yönelik 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üzde 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 beyan ettiğinizden emin olun:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

Codec bileşenlerini çerçeveye açığa çıkarma

Stagefright hizmeti, cihazda desteklenen kodekleri 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 ayrıştırır. Her iki dosyayı da device/<company>/<device>/ dizininde oluşturmalı ve bunu, cihazınızın Makefile dosyasındaki sistem görüntüsünün system/etc dizinine kopyalamanız gerekir. Ö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, 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.