Dimulai dengan Android 13, klien aplikasi dapat meminta pembuat enkode video untuk mengekspor statistik pengkodean untuk setiap frame video yang dikodekan. Dengan statistik yang diperoleh dari pembuat enkode video, aplikasi dapat mengoptimalkan tugas pengkodean videonya seperti pengkodean multipass dan prapemrosesan bingkai sebelum pengkodean.
Untuk mengekspor statistik pengkodean video, vendor SoC harus mengubah driver encoder video seperti yang dijelaskan dalam Pembaruan driver encoder video .
Data statistik pengkodean video
Dengan Android 13, encoder video mengekspor data statistik seperti yang ditunjukkan pada tabel berikut.
Nama statistik pembuat enkode | Keterangan |
---|---|
Rata-rata blok QP per frame | Rata-rata semua blok QP dalam bingkai video yang dikodekan ke dalam bitstream |
Jenis gambar | Tipe I atau P atau B |
Pengembang dapat mengambil informasi statistik untuk setiap frame dengan menggunakan kelas pengembang MediaFormat
.
Pembaruan pada driver encoder video
Untuk mendukung ekspor statistik pengkodean video, vendor SoC harus mengubah driver encoder video. Kunci berikut ditambahkan di basis 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 blok QP ke bilangan bulat terdekat sebelum memancarkan ke Codec 2.0.
Nilai rata-rata dihitung hanya dari bidang luma.
Encoder SoC harus mengembalikan
INT_MAX
jika semua blok dalam frame saat ini berada dalam mode dilewati. Kondisi ini terjadi ketika tidak ada koefisien yang dikodekan dan tidak ada info QP signifikan yang dikodekan dalam frame.
KEY_PICTURE_TYPE
menjelaskan tipe gambar dari bingkai yang dikodekan sebagaiPICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
, atauPICTURE_TYPE_UNKNOWN
.KEY_VIDEO_ENCODING_STATISTICS_LEVEL
menjelaskan tingkat informasi statistik pengkodean yang dipancarkan dari encoder video, sebagai berikut:Jika pembuat enkode tidak menghasilkan informasi tentang statistik pengkodean, kunci ini disetel ke
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
.Saat encoder menghasilkan
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 pengkodean video berfungsi dengan benar: CTS menjalankan dua pengkodean video input yang sama, satu dengan bitrate lebih tinggi, dan satu lagi dengan bitrate lebih rendah. CTS kemudian membandingkan dua nilai QP rata-rata yang diekspor dari dua pengkodean. Jika rata-rata QP dari pengkodean dengan bitrate lebih rendah lebih tinggi dari rata-rata QP dari pengkodean dengan bitrate lebih tinggi, CTS lolos.
Untuk memvalidasi penonaktifan fitur ekspor statistik pengkodean 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);