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.
Media. Modul ini mencakup pengekstrak media,
MediaSession2
API, danMediaParser
API.Codec Media. Modul ini mencakup komponen Codec2 software yang dapat diperbarui.
MediaProvider. Modul ini mengoptimalkan metadata yang diindeks (audio, video, dan gambar dari kartu SD dan perangkat USB) serta menyediakan data tersebut untuk aplikasi melalui API publik MediaStore.
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:
Daftarkan layanan
android.hardware.media.c2
default 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
media.codec
(OMX), salin dan daftarkan classStoreImpl
dari frameworks/av/media/codec2/hidl/services/vendor.cpp ke filemediacodec
yang ada (frameworks/av/services/mediacodec/main_codecservice.cpp).
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.
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.