Mulai Android 13, klien aplikasi dapat meminta encoder video untuk mengekspor statistik encoding untuk setiap frame video yang di-encode. Dengan statistik yang diperoleh dari encoder video, aplikasi dapat mengoptimalkan tugas encoding video seperti encoding multipass dan pra-pemrosesan frame sebelum encoding.
Untuk mengekspor statistik encoding video, vendor SoC harus mengubah driver encoder video seperti yang dijelaskan dalam Pembaruan pada driver encoder video.
Data statistik encoding video
Dengan Android 13, encoder video mengekspor data statistik seperti yang ditunjukkan dalam tabel berikut.
Nama statistik encoder | Deskripsi |
---|---|
QP blok rata-rata per frame | Rata-rata semua QP blok dalam frame video yang dienkode ke dalam bitstream |
Jenis gambar | Ketik I atau P atau B |
Developer dapat mengambil informasi statistik untuk setiap frame menggunakan class developer
MediaFormat
.
Pembaruan pada driver encoder video
Untuk mendukung ekspor statistik encoding video, vendor SoC harus mengubah driver encoder video. Kunci berikut ditambahkan di dasar Codec 2.0 di Android 13:
KEY_VIDEO_QP_AVERAGE
menjelaskan QP blok rata-rata per frame.Aturan berikut berlaku untuk penerapan kunci
KEY_VIDEO_QP_AVERAGE
:Encoder SoC harus membulatkan rata-rata QP blok ke bilangan bulat terdekat sebelum memancarkan ke Codec 2.0.
Nilai rata-rata dihitung hanya dari bidang luma.
Encoder SoC harus menampilkan
INT_MAX
jika semua blok dalam frame saat ini berada dalam mode dilewati. Kondisi ini terjadi saat tidak ada koefisien yang dienkode dan tidak ada info QP signifikan yang dienkode dalam frame.
KEY_PICTURE_TYPE
mendeskripsikan jenis gambar frame yang dienkode sebagaiPICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
, atauPICTURE_TYPE_UNKNOWN
.KEY_VIDEO_ENCODING_STATISTICS_LEVEL
menjelaskan tingkat informasi statistik encoding yang dikeluarkan dari encoder video, sebagai berikut:Jika encoder tidak menghasilkan informasi tentang statistik encoding, kunci ini disetel ke
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
.Saat encoder membuat
KEY_VIDEO_QP_AVERAGE
danKEY_PICTURE_TYPE
untuk setiap frame, kunci ini disetel keVIDEO_ENCODING_STATISTICS_LEVEL_1
.
Lihat VideoEncodingStatisticsTest
untuk implementasi referensi.
Validasi
Jalankan pengujian CTS VideoEncodingStatisticsTest
untuk memvalidasi bahwa bagian QP rata-rata dari statistik encoding video
berfungsi dengan benar: CTS menjalankan dua encoding video input yang sama, satu dengan
bitrate yang lebih tinggi, dan yang lainnya dengan bitrate yang lebih rendah. CTS kemudian membandingkan dua nilai QP rata-rata yang diekspor dari dua encoding. Jika QP rata-rata dari encoding dengan bitrate yang lebih rendah lebih tinggi daripada QP rata-rata dari encoding dengan bitrate yang lebih tinggi, CTS lulus.
Untuk memvalidasi penonaktifan fitur mengekspor statistik encoding video saat diaktifkan, gunakan kunci VIDEO_ENCODING_STATISTICS_LEVEL_NONE
sebagai berikut:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);