A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Exporta estadísticas de codificación de video
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
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 para cada fotograma con la clase de desarrollador 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 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 QP de bloque al número entero más cercano antes de transmitirlo 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 de la trama 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 fotograma del fotograma codificado como PICTURE_TYPE_I
, PICTURE_TYPE_P
, PICTURE_TYPE_B
o PICTURE_TYPE_UNKNOWN
.
KEY_VIDEO_ENCODING_STATISTICS_LEVEL
describe el nivel de información de estadísticas de codificación 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 el QP promedio de la codificación con la tasa de bits más baja es superior al QP promedio de la codificación con la tasa de bits más alta, se aprueba la CTS.
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);
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-27 (UTC)"],[],[],null,["# Export video encoding statistics\n\nStarting with Android 13, app clients can request the\nvideo encoder to export encoding statistics for each encoded video frame. With\nthe statistics obtained from the video encoder, apps can optimize their video\nencoding tasks such as multipass encoding and frame preprocessing prior to\nencoding.\n\nTo export video encoding statistics, SoC vendors must change the video encoder\ndriver as described in [Updates to the video encoder driver](#updates-encoder).\n\nVideo encoding statistics data\n------------------------------\n\nWith Android 13, the video encoder exports statistics\ndata as shown in the following table.\n\n| Name of encoder statistics | Description |\n|----------------------------|-------------------------------------------------------------------------------------|\n| Average block QP per frame | The average of all block QPs in the video frame that are encoded into the bitstream |\n| Picture type | Type I or P or B |\n\nDevelopers can retrieve statistics information for each frame by using the\n[`MediaFormat`](https://developer.android.com/reference/android/media/MediaFormat)\ndeveloper class.\n\nUpdates to the video encoder driver\n-----------------------------------\n\nTo support the export of video encoding statistics, SoC vendors must change the\nvideo encoder driver. The following keys are added in the Codec 2.0 base in\nAndroid 13:\n\n- [`KEY_VIDEO_QP_AVERAGE`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1154) describes the per-frame\n average block QP.\n\n The following rules apply to the implementation of the `KEY_VIDEO_QP_AVERAGE`\n key:\n - The SoC encoder must round the average of the block QPs to the nearest\n integer before emitting to Codec 2.0.\n\n - The average value is computed only from a luma plane.\n\n - The SoC encoder must return `INT_MAX` if all the blocks in the current\n frame are in the skipped mode. This condition occurs when no coefficients are\n encoded and no significant QP info is encoded in the frame.\n\n- [`KEY_PICTURE_TYPE`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1163)\n describes the picture type of the encoded frame as [`PICTURE_TYPE_I`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_I),\n [`PICTURE_TYPE_P`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_P),\n [`PICTURE_TYPE_B`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_B),\n or [`PICTURE_TYPE_UNKNOWN`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_UNKNOWN).\n\n- [`KEY_VIDEO_ENCODING_STATISTICS_LEVEL`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1122) describes the level of\n encoding statistics information emitted from video encoder, as follows:\n\n - When the encoder generates no information about encoding statistics,\n this key is set to [`VIDEO_ENCODING_STATISTICS_LEVEL_NONE`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1129).\n\n - When the encoder generates `KEY_VIDEO_QP_AVERAGE` and `KEY_PICTURE_TYPE`\n for each frame, this key is set to [`VIDEO_ENCODING_STATISTICS_LEVEL_1`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1136).\n\nSee [`VideoEncodingStatisticsTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/media/codec/src/android/media/codec/cts/VideoEncodingStatisticsTest.java;drc=77bafd18279c8d6dad49fd74dac2e369fdc6ba69;l=56)\nfor a reference implementation.\n\nValidation\n----------\n\nRun the [`VideoEncodingStatisticsTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/media/codec/src/android/media/codec/cts/VideoEncodingStatisticsTest.java;drc=77bafd18279c8d6dad49fd74dac2e369fdc6ba69;l=56)\nCTS test to validate that the average QP part of the video encoding statistics\nworks correctly: CTS runs two encodings of the same input video, one with a\nhigher bitrate, and another with a lower bitrate. CTS then compares the two\nexported average QP values from the two encodings. If the average QP from the encoding\nwith the lower bitrate is higher than the average QP from the encoding with the\nhigher bitrate, CTS passes.\n\nTo validate turning off the exporting video encoding statistics feature when\nenabled, use the `VIDEO_ENCODING_STATISTICS_LEVEL_NONE` key as follows: \n\n format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);"]]