Medya modülleri

Android 10 veya sonraki sürümlerde, çerçeve bileşenlerinin Google Play Store altyapısı veya bir iş ortağı tarafından sağlanan kablosuz (OTA) mekanizması aracılığıyla güncellenmesini sağlayan, güncellenebilir çeşitli medya bileşenleri bulunur. Medya bileşenleri, tam sistem görüntüsü güncellemesi gerektirmeden güvenlik güncellemeleri ve özellik güncellemeleri sağlamaya olanak tanıyan modüller halinde paketlenir.

Güncellenebilir medya bileşenleri aşağıdaki modüllerde bulunur.

Özel ayıklayıcılar ve kod çözücüler ekleme hakkında ayrıntılı bilgi için Medya Bileşenlerini Özelleştirme başlıklı makaleyi inceleyin.

Medya çıkarma araçları

Android 9 ve önceki sürümlerde ayıklayıcılar tek bir libstagefright.so dosyası halinde derlenir. Android 10 veya sonraki sürümlerde medya ayıklayıcılar ayrı bileşenlerdir. Her çıkarıcının, giriş noktası olan kendi .so dosyası vardır. Bu giriş noktası, çıkarıcının verilen medya dosyasını işleyip işleyemeyeceğini belirlemek için bir sniffer işlevi ve verilen medya dosyası için çıkarıcının bir örneğini oluşturan bir factory işlevi sağlar. Her çıkarıcı, hata ayıklamaya yardımcı olmak için adlandırılır ve en yeni çıkarıcının hangisi olduğunu belirtmek için sürüm bilgisi eklenir.

Medya çerçevesi, mevcut tüm ayıklayıcı .so dosyalarını otomatik olarak yükler. Böylece, libstagefright veya diğer medya çerçevesi kitaplıklarını değiştirmenize gerek kalmadan yeni bir .so dosyası ekleyerek kendi ayıklayıcılarınızı oluşturabilirsiniz. Ayrıca, Google tarafından sağlanan ayıklayıcı yerine özel bir ayıklayıcının tercih edilmesini de sağlayabilirsiniz.

MediaSession2 API

MediaSession2 API, medya uygulamalarının aktarım kontrollerini ve oynatma bilgilerini Android çerçevesi ve diğer uygulamalar gibi diğer işlemlere göstermesine olanak tanır. Bu bileşen özelleştirilemez.

MediaParser API

MediaParser API, ExoPlayer'ın medya örneklerini medya kapsayıcılarından çıkarmak için çerçeve medya kapsayıcı ayrıştırıcılarını verimli bir şekilde kullanmasına olanak tanır. MediaParser, kaynak kodu sınırlarında aşağıdaki değişiklikleri içerir:

  • frameworks/base/apex/media/framework/java/android/media/MediaParser.java. API ve ince katman uygulaması.

  • external/exoplayer/. MediaParser'ın temelini oluşturan Exoplayer'ın bire bir kaynakları.

MediaParser API özelleştirilemez. MediaParser'ı test etmek için cts/tests/tests/mediaparser/ bölümündeki testleri kullanın.

Medya codec'leri

Medya Codec'leri modülü, güncellenebilir Codec2 yazılım bileşenlerini içerir. Özelleştirme desteği, sürümler arasında farklılık gösterir:

  • Android 11 veya sonraki sürümlerde (özellikle Google Play sistem güncellemesi v292100200), ION bellek ayırma parametrelerini özelleştirebilirsiniz (ayrıntılar için aşağıya bakın).

  • Android 9 veya önceki sürümlerde OMX codec API'si güncellenemez ancak satıcı bölümünde kullanılabilir.

ION bellek ayırma

Android 11 veya sonraki sürümlerde ve Google Play sistem güncellemesi v292100200 ya da sonraki sürümlerde, ION bellek ayırma için aşağıdaki parametreleri özelleştirebilirsiniz.

Parametre Varsayılan değer Açıklama
heapMask 0xFFFFFFFF Tüm yığın türlerine izin verilir.
allocFlags 0 İşaret ayarlanmadı.
minAlignment 0 Hizalama yok.

Parametreleri geçersiz kılmak için:

  1. Varsayılan bir android.hardware.media.c2 hizmeti kaydedin ve özel ION kullanım parametreleri sağlayın.

  2. Aşağıdaki kodu cihaza manifest.xml ekleyin.

    <hal format="hidl">
        <name>android.hardware.media.c2</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>IComponentStore</name>
            <instance>default</instance>
        </interface>
    </hal>
    

Biçim ve bağımlılıklar

Medya modülü (com.android.media) ve Medya Codec modülü (com.android.media.swcodec), APEX biçimindedir. Dahil edilen medya bileşenleri yalnızca NDK API'lerini kullanır.

Güncellemeler

Güncelleme sırasında cihazdaki çerçeve bileşenleri, Java ve yerel kod içeren bir APEX paketi yükler.

Medya Güncellemeleri

1. şekil. Medya bileşeni güncelleme akışı

Çerçeve APEX paketini yükledikten sonra cihaz yeniden başlatılır ve disk görüntüsü bağlanır. Medya sistemi işlemleri (media.extractor ve media.codec) güncellenen modülleri bağlama noktasından yükler.