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 | El promedio de todos los QPs 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 para cada fotograma con la
MediaFormat
clase de desarrollador.
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 del codificador de video. Las siguientes claves se agregan en la base de Codec 2.0 en Android 13:
KEY_VIDEO_QP_AVERAGEdescribe el QP de bloque promedio por fotograma.Se aplican las siguientes reglas a la implementación de la clave
KEY_VIDEO_QP_AVERAGE:El codificador de SoC debe redondear el promedio de los QPs de bloque al número entero más cercano antes de emitir a Codec 2.0.
El valor promedio se calcula solo a partir de un plano de luma.
El codificador de SoC debe mostrar
INT_MAXsi todos los bloques del fotograma actual están en el modo omitido. Esta condición se produce cuando no se codifican coeficientes y no se codifica información de QP significativa en el fotograma.
KEY_PICTURE_TYPEdescribe el tipo de imagen del fotograma codificado comoPICTURE_TYPE_I,PICTURE_TYPE_P,PICTURE_TYPE_B, oPICTURE_TYPE_UNKNOWN.KEY_VIDEO_ENCODING_STATISTICS_LEVELdescribe el nivel de información de estadísticas de codificación emitida desde el codificador de video, de la siguiente manera:Cuando el codificador no genera información sobre las estadísticas de codificación, esta clave se establece en
VIDEO_ENCODING_STATISTICS_LEVEL_NONE.Cuando el codificador genera
KEY_VIDEO_QP_AVERAGEyKEY_PICTURE_TYPEpara cada fotograma, esta clave se establece enVIDEO_ENCODING_STATISTICS_LEVEL_1.
Consulta VideoEncodingStatisticsTest
para obtener una implementación de referencia.
Validación
Ejecuta la prueba del VideoEncodingStatisticsTest
CTS para validar que la parte de QP promedio de las estadísticas de codificación de video
funcione correctamente: el 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, el CTS compara los dos valores de QP promedio exportados de las dos codificaciones. Si el QP promedio de la codificación con la tasa de bits más baja es más alto que el QP promedio de la codificación con la tasa de bits más alta, el CTS pasa.
Para validar la desactivación de la función de 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);