Modul media

Android 10 atau yang lebih tinggi menyertakan beberapa komponen media yang dapat diupdate yang memungkinkan update komponen framework melalui infrastruktur Google Play Store atau melalui mekanisme over-the-air (OTA) yang disediakan partner. Komponen media dikemas bersama 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.

Pengekstrak media

Di Android 9 dan yang lebih rendah, ekstraktor dikompilasi menjadi satu file libstagefright.so. Di Android 10 atau yang lebih tinggi, pengekstraksi 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 penelusuran kesalahan) dan diberi versi untuk menunjukkan ekstraktor mana yang terbaru.

Framework media 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 pengekstrak kustom lebih diutamakan daripada pengekstrak yang disediakan Google.

MediaSession2 API

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

MediaParser API

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

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

  • external/exoplayer/. Sumber kata demi kata Exoplayer yang menjadi dasar pembuatan MediaParser.

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

Codec media

Modul Media Codecs mencakup komponen Codec2 software yang dapat diupdate. Dukungan untuk penyesuaian berbeda-beda di setiap rilis:

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

  • Di Android 9 atau yang lebih rendah, 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 keselarasan.

Untuk mengganti parameter:

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

  2. Tambahkan kode berikut ke manifest.xml perangkat.

    <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 Codec Media (com.android.media.swcodec) berada dalam format APEX. Komponen media yang disertakan hanya mengandalkan NDK API.

Update

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

Pembaruan Media

Gambar 1. Alur update komponen media

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