Mengekspor statistik encoding video

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 tugas encoding video seperti encoding multi-pass dan prapemrosesan frame 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 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 Tipe I atau P atau B

Developer dapat mengambil informasi statistik untuk setiap frame menggunakan class developer MediaFormat.

Update 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 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 sebagai PICTURE_TYPE_I, PICTURE_TYPE_P, PICTURE_TYPE_B, atau PICTURE_TYPE_UNKNOWN.

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL menjelaskan tingkat informasi statistik encoding yang dipancarkan dari encoder video, sebagai berikut:

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 dari video input yang sama, satu dengan bitrate yang lebih tinggi, dan satu lagi dengan bitrate yang 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);