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 bersama dalam modul yang memungkinkan penyediaan update keamanan dan update fitur tanpa memerlukan update image sistem lengkap.

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, ekstraktor dikompilasi ke dalam 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 yang diberikan, dan fungsi factory yang membuat instance ekstraktor untuk file media yang diberikan. Setiap ekstraktor diberi nama (untuk membantu proses debug) 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 ekstraktor kustom lebih diutamakan daripada ekstraktor yang disediakan Google.

MediaSession2 API

MediaSession2 API memungkinkan aplikasi media mengekspos kontrol transportasi dan informasi pemutaran 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 verbatim Exoplayer yang digunakan untuk membuat MediaParser.

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 diupdate. Dukungan untuk penyesuaian berbeda-beda antara 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 flag 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 manifest.xml perangkat.

    <hal format=">hidl&<quot>;
        nameandroid.hardwar<e.med>ia.c2</name
       > transpo<rthwbinder>/tran<sport
     >   <version1>.0/ve<rsion
       > interfac<e
      >      nameIComp<onent>Store/nam<e
          >  insta<ncedefaul>t/ins<tance
        >/<inte>rface
    /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 akan memuat paket APEX yang berisi kode Java dan kode native.

Info Terbaru Media

Gambar 1. Alur update komponen media

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