Modul media

Android 10 atau yang lebih tinggi menyertakan beberapa komponen media yang dapat diupdate yang memungkinkan pembaruan komponen framework melalui infrastruktur Google Play Store atau melalui mekanisme over-the-air (OTA) yang disediakan partner. Komponen media dikemas dalam modul yang memungkinkan penyediaan update keamanan dan update fitur tanpa memerlukan update image sistem penuh.

Komponen media yang dapat diupdate ada di modul berikut.

Untuk mengetahui detail tentang cara menambahkan ekstraktor dan dekoder kustom, lihat Menyesuaikan Komponen Media.

Ekstraktor media

Di Android 9 dan yang lebih rendah, pengekstrak dikompilasi menjadi satu file libstagefright.so. Di Android 10 atau yang lebih tinggi, ekstraktor media adalah komponen terpisah. Setiap ekstraktor memiliki file .so sendiri dengan titik entri yang menyediakan fungsi sniffer untuk menentukan apakah ekstraktor dapat menangani file media tertentu, dan fungsi factory yang membuat instance ekstraktor untuk file media tertentu. Setiap ekstraktor diberi nama (untuk membantu proses debug) dan diberi versi untuk menunjukkan ekstraktor mana yang terbaru.

Framework media ini secara otomatis memuat semua file .so ekstraktor yang tersedia, sehingga Anda dapat membuat ekstraktor sendiri dengan menambahkan file .so baru tanpa perlu mengubah libstagefright atau library framework media lainnya. Anda juga dapat memastikan bahwa ekstraktor kustom lebih disukai daripada ekstraktor yang disediakan Google.

MediaSession2 API

MediaSession2 API memungkinkan aplikasi media mengekspos kontrol transpor dan informasi pemutarannya ke proses lain seperti framework Android dan aplikasi lainnya. Komponen ini tidak dapat disesuaikan.

MediaParser API

MediaParser API memungkinkan ExoPlayer memanfaatkan parser container media framework secara efisien untuk mengekstrak sampel media dari penampung media. MediaParser menyertakan perubahan berikut pada batas kode sumber:

  • frameworks/base/apex/media/framework/java/android/media/MediaParser.java. Implementasi API dan lapisan tipis.

  • external/exoplayer/. Sumber verbatim Exoplayer tempat MediaParser dibuat.

MediaParser API tidak dapat disesuaikan. Untuk menguji MediaParser, gunakan pengujian di cts/tests/tests/mediaparser/.

Codec media

Modul Codec Media mencakup komponen Codec2 software yang dapat diperbarui. Dukungan untuk penyesuaian berbeda-beda di antara rilis:

  • Di Android 11 atau yang lebih tinggi (khususnya Update Sistem Google Play v292100200), Anda dapat menyesuaikan parameter untuk alokasi memori ION (lihat di bawah untuk mengetahui detailnya).

  • Di Android 9 atau yang lebih lama, OMX codec API tidak dapat diupdate, tetapi Anda masih dapat menggunakannya di partisi vendor.

Alokasi memori ION

Di Android 11 atau yang lebih tinggi dan Update Sistem Google Play v292100200 atau yang lebih tinggi, Anda dapat menyesuaikan parameter berikut untuk alokasi memori ION.

Parameter Nilai default Deskripsi
heapMask 0xFFFFFFFF Semua jenis heap diizinkan.
allocFlags 0 Tidak ada tanda yang ditetapkan.
minAlignment 0 Tidak ada perataan.

Untuk mengganti parameter:

  1. Daftarkan layanan android.hardware.media.c2 default dan berikan parameter penggunaan ION kustom.

  2. Tambahkan kode berikut ke perangkat manifest.xml.

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

Format dan dependensi

Modul Media (com.android.media) dan modul Media Codec (com.android.media.swcodec) dalam format APEX. Komponen media yang disertakan hanya mengandalkan API NDK.

Update

Selama update, komponen framework pada perangkat akan memuat paket APEX yang berisi kode native dan Java.

Update Media

Gambar 1. Alur update komponen media

Setelah framework menginstal paket APEX, perangkat akan dimulai ulang dan memasang proses sistem media dan image disk (media.extractor dan media.codec) memuat modul yang diupdate dari titik pemasangan.