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.
Media. Modul ini mencakup ekstraktor media,
MediaSession2API, danMediaParserAPI.Codec Media. Modul ini mencakup komponen Codec2 software yang dapat diupdate.
MediaProvider. Modul ini mengoptimalkan metadata yang diindeks (audio, video, dan gambar dari kartu SD dan perangkat USB perangkat) serta menyediakan data tersebut untuk aplikasi melalui MediaStore API publik .
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:
Daftarkan layanan
android.hardware.media.c2default dan berikan parameter penggunaan ION kustom.Untuk membuat layanan baru, salin file frameworks/av/media/codec2/hidl/services/vendor.cpp ke repositori Anda, lalu ubah
StoreImpl::Interface::SetIonUsage()sesuai kebutuhan.Untuk menggunakan kembali proses (OMX)
media.codec, salin dan daftarkanStoreImplclass dari frameworks/av/media/codec2/hidl/services/vendor.cpp ke filemediacodecyang ada (frameworks/av/services/mediacodec/main_codecservice.cpp).
Tambahkan kode berikut ke
manifest.xmlperangkat.<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.
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.