Android 10 atau lebih tinggi menyertakan beberapa komponen media yang dapat diperbarui yang memungkinkan pembaruan komponen kerangka kerja melalui infrastruktur Google Play Store atau melalui mekanisme over-the-air (OTA) yang disediakan mitra. Komponen media dikemas bersama dalam modul yang memungkinkan penyediaan pembaruan keamanan dan pembaruan fitur tanpa memerlukan pembaruan citra sistem penuh.
Komponen media yang dapat diperbarui ada dalam modul berikut.
Media. Modul ini mencakup ekstraktor media , API
MediaSession2
, dan APIMediaParser
.Codec Media . Modul ini mencakup komponen perangkat lunak Codec2 yang dapat diperbarui.
Penyedia Media . Modul ini mengoptimalkan metadata yang diindeks (audio, video, dan gambar dari kartu SD dan perangkat USB) dan membuat data tersebut tersedia untuk aplikasi melalui API publik MediaStore .
Untuk detail tentang menambahkan ekstraktor dan dekoder khusus, lihat Menyesuaikan Komponen Media .
Ekstraktor media
Di Android 9 dan yang lebih rendah, ekstraktor dikompilasi menjadi satu file libstagefright.so
. Di Android 10 atau lebih tinggi, ekstraktor media adalah komponen terpisah. Setiap ekstraktor memiliki file .so
sendiri dengan titik masuk yang menyediakan fungsi sniffer untuk menentukan apakah ekstraktor dapat menangani file media tertentu, dan fungsi pabrik 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.
Kerangka kerja media secara otomatis memuat semua file .so
ekstraktor yang tersedia, sehingga Anda dapat membuat ekstraktor Anda sendiri dengan menambahkan file .so
baru tanpa perlu memodifikasi libstagefright
atau pustaka kerangka media lainnya. Anda juga dapat memastikan bahwa ekstraktor khusus lebih disukai daripada ekstraktor yang disediakan Google.
API MediaSesi2
API MediaSession2 memungkinkan aplikasi media mengekspos kontrol transportasi dan memutar informasi ke proses lain seperti kerangka Android dan aplikasi lainnya. Komponen ini tidak dapat dikustomisasi.
API MediaParser
API MediaParser memungkinkan ExoPlayer memanfaatkan parser wadah media kerangka kerja secara efisien untuk mengekstrak sampel media dari wadah media. MediaParser menyertakan perubahan berikut pada batasan 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 dikustomisasi. Untuk menguji MediaParser, gunakan pengujian di cts/tests/tests/mediaparser/
.
Codec media
Modul Media Codecs mencakup komponen perangkat lunak Codec2 yang dapat diperbarui. Dukungan untuk penyesuaian berbeda antar rilis:
Di Android 11 atau lebih tinggi (khususnya Pembaruan Sistem Google Play v292100200 ), Anda dapat menyesuaikan parameter alokasi memori ION (lihat detailnya di bawah).
Di Android 9 atau lebih rendah, API codec OMX tidak dapat diperbarui, namun Anda masih dapat menggunakannya di partisi vendor.
Alokasi memori ION
Di Android 11 atau lebih tinggi dan Pembaruan Sistem Google Play v292100200 atau lebih tinggi, Anda dapat menyesuaikan parameter berikut untuk alokasi memori ION.
Parameter | Nilai bawaan | Keterangan |
---|---|---|
heapMask | 0xFFFFFFFF | Semua jenis tumpukan diperbolehkan. |
allocFlags | 0 | Tidak ada bendera yang disetel. |
minAlignment | 0 | Tidak ada keselarasan. |
Untuk mengganti parameter:
Daftarkan layanan
android.hardware.media.c2
default dan berikan parameter penggunaan ION khusus.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 kelasStoreImpl
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 ketergantungan
Modul Media ( com.android.media
) dan modul Media Codec ( com.android.media.swcodec
) dalam format APEX . Komponen media yang disertakan hanya mengandalkan API NDK.
Pembaruan
Selama pembaruan, komponen kerangka kerja pada perangkat memuat paket APEX yang berisi Java dan kode asli.
Gambar 1. Alur pembaruan komponen media
Setelah kerangka kerja menginstal paket APEX, perangkat melakukan boot ulang dan memasang image disk dan proses sistem media ( media.extractor
dan media.codec
) memuat modul yang diperbarui dari titik pemasangan.