Mulai Android 13, klien aplikasi dapat meminta encoder video untuk mengekspor statistik encoding untuk setiap frame video yang dienkode. Dengan statistik yang diperoleh dari encoder video, aplikasi dapat mengoptimalkan video tugas penyandian data seperti penyandian multi-pass dan pra-pemrosesan {i>frame<i} sebelum encoding.
Untuk mengekspor statistik encoding video, vendor SoC harus mengubah encoder video seperti yang dijelaskan dalam Update pada driver encoder video.
Data statistik encoding video
Dengan Android 13, encoder video mengekspor 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 bitstream |
Jenis foto | Tipe I atau P atau B |
Pengembang dapat mengambil informasi statistik untuk setiap {i>frame<i} dengan menggunakan
MediaFormat
developer lainnya.
Update pada driver encoder video
Untuk mendukung ekspor statistik encoding video, vendor SoC harus mengubah driver encoder video. Tombol berikut ini ditambahkan di basis Codec 2.0 di Android 13:
KEY_VIDEO_QP_AVERAGE
mendeskripsikan ukuran per frame QP blok rata-rata.Aturan berikut berlaku untuk penerapan
KEY_VIDEO_QP_AVERAGE
kunci:Encoder SoC harus membulatkan rata-rata QP blok ke nilai terdekat bilangan bulat sebelum dimunculkan ke Codec 2.0.
Nilai rata-rata hanya dihitung dari bidang luma.
Encoder SoC harus menampilkan
INT_MAX
jika semua blok dalam berada dalam mode yang dilewati. Kondisi ini terjadi ketika tidak ada koefisien dikodekan dan tidak ada info QP signifikan yang dienkode dalam {i>frame<i}.
KEY_PICTURE_TYPE
menjelaskan jenis gambar frame yang dienkode sebagaiPICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
, atauPICTURE_TYPE_UNKNOWN
.KEY_VIDEO_ENCODING_STATISTICS_LEVEL
mendeskripsikan tingkat informasi statistik encoding yang dimunculkan dari encoder video, sebagai berikut:Saat encoder tidak menghasilkan informasi tentang statistik encoding, kunci ini ditetapkan ke
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
.Saat encoder menghasilkan
KEY_VIDEO_QP_AVERAGE
danKEY_PICTURE_TYPE
untuk setiap frame, kunci ini ditetapkan keVIDEO_ENCODING_STATISTICS_LEVEL_1
.
Lihat VideoEncodingStatisticsTest
untuk implementasi referensi.
Validasi
Menjalankan VideoEncodingStatisticsTest
Tes CTS untuk memvalidasi bahwa bagian QP rata-rata dari statistik encoding video
bekerja dengan benar: CTS menjalankan dua pengkodean dari video input yang sama, satu dengan
yang lebih tinggi, dan lainnya dengan kecepatan bit lebih rendah. CTS kemudian membandingkan kedua
nilai QP rata-rata yang diekspor
dari kedua pengkodean. Jika QP rata-rata dari proses
dengan kecepatan bit lebih rendah lebih tinggi daripada QP rata-rata dari
kecepatan bit yang lebih tinggi, CTS akan lulus.
Untuk memvalidasi penonaktifan fitur ekspor 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);