Medya modülleri

Android 10 veya üzeri, çerçeve bileşenlerinin Google Play Store altyapısı veya iş ortağı tarafından sağlanan kablosuz (OTA) mekanizma aracılığıyla güncellenmesine olanak tanıyan çeşitli güncellenebilir medya bileşenleri içerir. 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 bir arada paketlenmiştir.

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

Özel çıkarıcılar ve kod çözücüler eklemeyle ilgili ayrıntılar için bkz. Medya Bileşenlerini Özelleştirme .

Medya çıkarıcılar

Android 9 ve önceki sürümlerde çıkarıcılar tek bir libstagefright.so dosyasında derlenir. Android 10 veya üzeri sürümlerde medya çıkarıcılar ayrı bileşenlerdir. Her çıkarıcının, çıkarıcının verilen medya dosyasını işleyip işleyemeyeceğini belirlemek için bir algılama işlevi sağlayan bir giriş noktasına ve verilen medya dosyası için çıkarıcının bir örneğini oluşturan bir fabrika işlevine sahip kendi .so dosyası vardır. Her çıkarıcının adı (hata ayıklamaya yardımcı olmak için) ve hangi çıkarıcının en yeni olduğunu gösterecek şekilde sürümlendirilir.

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

MediaSession2 API'si

MediaSession2 API, medya uygulamalarının taşıma kontrollerini ve oynatma bilgilerini Android çerçevesi ve diğer uygulamalar gibi diğer işlemlere sunmasına olanak tanır. Bu bileşen özelleştirilemez.

MediaParser API'si

MediaParser API, ExoPlayer'ın medya konteynerlerinden medya örneklerini çıkarmak için çerçeve medya konteyneri 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 üzerine inşa edildiği Exoplayer kelimesi kelimesine kaynaklar.

MediaParser API'si özelleştirilemez. MediaParser'ı test etmek için cts/tests/tests/mediaparser/ içindeki testleri kullanın.

Medya codec bileşenleri

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

  • Android 11 veya üzeri sürümlerde (özellikle Google Play Sistem Güncellemesi v292100200 ), ION bellek tahsisine ilişkin parametreleri ö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 bunu satıcı bölümünde kullanmaya devam edebilirsiniz.

ION hafıza tahsisi

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

Parametre Varsayılan değer Tanım
heapMask 0xFFFFFFFF Tüm yığın türlerine izin verilir.
allocFlags 0 Bayrak ayarlanmadı.
minAlignment 0 Hizalama yok.

Parametreleri geçersiz kılmak için:

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

  2. Aşağıdaki kodu cihazın manifest.xml dosyasına 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'lerine dayanı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

Şekil 1. 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ünü bağlar ve medya sistemi işlemleri ( media.extractor ve media.codec ) güncellenen modülleri bağlama noktasından yükler.