Medya modülleri

Android 10 veya sonraki sürümler, çerçeve bileşenlerinin Google Play Store altyapısı veya iş ortağı tarafından sağlanan kablosuz (OTA) mekanizması üzerinden güncellenmesini sağlayan çeşitli güncellenebilir medya bileşenleri içerir. Medya bileşenleri, tam sistem resmi güncellemesi gerektirmeden güvenlik güncellemeleri ve özellik güncellemeleri sunmayı sağlayan modüllere birlikte 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 ayıklama araçları

Android 9 ve önceki sürümlerde ayıklayıcılar tek bir libstagefright.so dosyasında derlenir. Android 10 veya sonraki sürümlerde medya ayıklayıcıları ayrı bileşenlerdir. Her ayıklayıcının, ayıklayıcının belirli bir medya dosyasını işleyip işleyemeyeceğini belirlemek için bir sniffer işlevi sağlayan bir giriş noktası ve belirli bir medya dosyası için ayıklayıcı örneği oluşturan bir factory işlevi içeren kendi .so dosyası vardır. Her ayıklayıcı, adlandırılır (hata ayıklama işlemine yardımcı olmak için) ve hangi ayıklayıcının en yeni olduğunu belirtmek için sürüm numarasıyla etiketlenir.

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. 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 denetimlerini ve oynatma bilgilerini Android çerçevesi ve diğer uygulamalar gibi başka işlemlere göstermesine olanak tanır. Bu bileşen özelleştirilemez.

MediaParser API'sı

MediaParser API, ExoPlayer'ın medya kapsayıcılarından medya örnekleri ayıklamak için çerçeve medya kapsayıcı ayrıştırıcılarını verimli bir şekilde kullanmasına olanak tanır. MediaParser, kaynak kodunda 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 oluşturulduğu Exo oynatıcı tam 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 Codecs modülü, güncellenebilir Codec2 yazılımı bileşenleri 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 292100200 sürümü) ION bellek ayırmayla ilgili parametreleri özelleştirebilirsiniz (ayrıntılar için aşağıya bakın).

  • Android 9 veya önceki sürümlerde OMX codec API güncellenemez ancak tedarikçi bölümünde kullanmaya devam edebilirsiniz.

ION bellek ayırma

Android 11 veya sonraki sürümlerde ve Google Play Sistem Güncellemesi 292100200 sürümü veya 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 Hiçbir iş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 manifest.xml cihazı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'i 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

Ş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ü monte eder. Medya sistemi işlemleri (media.extractor ve media.codec) ise güncellenmiş modülleri montaj noktasından yükler.