Exporta estadísticas de codificación de video

A partir de Android 13, los clientes de apps pueden solicitar que el codificador de video exporte estadísticas de codificación para cada fotograma de video codificado. Con las estadísticas obtenidas del codificador de video, las apps pueden optimizar sus tareas de codificación de video, como la codificación de varios pasos y el procesamiento previo de fotogramas antes de la codificación.

Para exportar estadísticas de codificación de video, los proveedores de SoC deben cambiar el controlador del codificador de video como se describe en Actualizaciones del controlador del codificador de video.

Datos de estadísticas de codificación de video

Con Android 13, el codificador de video exporta datos de estadísticas como se muestra en la siguiente tabla.

Nombre de las estadísticas del codificador Descripción
QP de bloque promedio por fotograma Es el promedio de todos los QP de bloque en el fotograma de video que se codifican en el flujo de bits.
Tipo de imagen Tipo I, P o B

Los desarrolladores pueden recuperar información de estadísticas de cada fotograma mediante la clase para desarrolladores MediaFormat.

Actualizaciones del controlador del codificador de video

Para admitir la exportación de estadísticas de codificación de video, los proveedores de SoC deben cambiar el controlador de codificador de video. En la base del códec 2.0 de Android 13, se agregaron las siguientes claves:

  • KEY_VIDEO_QP_AVERAGE describe la QP de bloque promedio por fotograma.

    Las siguientes reglas se aplican a la implementación de la clave KEY_VIDEO_QP_AVERAGE:

    • El codificador de SoC debe redondear el promedio de las QP de bloque al número entero más cercano antes de emitirlos al códec 2.0.

    • El valor promedio se calcula solo a partir de un plano de luma.

    • El codificador de SoC debe mostrar INT_MAX si todos los bloques del fotograma actual están en el modo omitido. Esta condición se produce cuando no se codifican coeficientes ni información de QP significativa en la trama.

  • KEY_PICTURE_TYPE describe el tipo de imagen del marco codificado como PICTURE_TYPE_I, PICTURE_TYPE_P, PICTURE_TYPE_B o PICTURE_TYPE_UNKNOWN.

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL describe el nivel de codificación de la información de estadísticas que emite el codificador de video de la siguiente manera:

Consulta VideoEncodingStatisticsTest para ver una implementación de referencia.

Validación

Ejecuta la prueba de CTS de VideoEncodingStatisticsTest para validar que la parte promedio de QP de las estadísticas de codificación de video funcione correctamente: CTS ejecuta dos codificaciones del mismo video de entrada, una con una tasa de bits más alta y otra con una tasa de bits más baja. Luego, CTS compara los dos valores promedio de QP exportados de las dos codificaciones. Si la QP promedio de la codificación con la tasa de bits más baja es mayor que la QP promedio de la codificación con la tasa de bits más alta, el CTS aprueba.

Para validar que se desactive la exportación de estadísticas de codificación de video cuando está habilitada, usa la clave VIDEO_ENCODING_STATISTICS_LEVEL_NONE de la siguiente manera:

format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);