À partir d'Android 13, les clients d'application peuvent demander à l'encodeur vidéo d'exporter les statistiques d'encodage pour chaque frame vidéo encodé. Grâce aux statistiques obtenues à partir de l'encodeur vidéo, les applications peuvent optimiser leurs tâches d'encodage vidéo, telles que l'encodage multipasse et le prétraitement des frames avant l'encodage.
Pour exporter les statistiques d'encodage vidéo, les fournisseurs de SoC doivent modifier le pilote de l'encodeur vidéo, comme décrit dans Mises à jour du pilote de l'encodeur vidéo.
Données statistiques sur l'encodage vidéo
Avec Android 13, l'encodeur vidéo exporte les données statistiques comme indiqué dans le tableau suivant.
Nom des statistiques de l'encodeur | Description |
---|---|
QP moyen des blocs par frame | Moyenne de tous les QP de bloc dans le frame vidéo encodés dans le flux binaire |
Type d'image | Saisissez "I", "P" ou "B". |
Les développeurs peuvent récupérer des informations statistiques pour chaque frame à l'aide de la classe de développeur MediaFormat
.
Mises à jour du pilote de l'encodeur vidéo
Pour prendre en charge l'exportation des statistiques d'encodage vidéo, les fournisseurs de SoC doivent modifier le pilote de l'encodeur vidéo. Les clés suivantes sont ajoutées à la base Codec 2.0 dans Android 13 :
KEY_VIDEO_QP_AVERAGE
décrit le QP moyen des blocs par frame.Les règles suivantes s'appliquent à l'implémentation de la clé
KEY_VIDEO_QP_AVERAGE
:L'encodeur SoC doit arrondir la moyenne des QP de bloc à l'entier le plus proche avant d'émettre vers Codec 2.0.
La valeur moyenne n'est calculée qu'à partir d'un plan de luminance.
L'encodeur SoC doit renvoyer
INT_MAX
si tous les blocs du frame actuel sont en mode ignoré. Cette condition se produit lorsqu'aucun coefficient n'est encodé et qu'aucune information QP significative n'est encodée dans le frame.
KEY_PICTURE_TYPE
décrit le type d'image du frame encodé commePICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
ouPICTURE_TYPE_UNKNOWN
.KEY_VIDEO_ENCODING_STATISTICS_LEVEL
décrit le niveau d'informations sur les statistiques d'encodage émises par l'encodeur vidéo, comme suit :Lorsque l'encodeur ne génère aucune information sur les statistiques d'encodage, cette clé est définie sur
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
.Lorsque l'encodeur génère
KEY_VIDEO_QP_AVERAGE
etKEY_PICTURE_TYPE
pour chaque frame, cette clé est définie surVIDEO_ENCODING_STATISTICS_LEVEL_1
.
Pour obtenir une implémentation de référence, consultez VideoEncodingStatisticsTest
.
Validation
Exécutez le test CTS VideoEncodingStatisticsTest
pour valider que la partie QP moyenne des statistiques d'encodage vidéo fonctionne correctement. Le test CTS exécute deux encodages de la même vidéo d'entrée, l'un avec un débit binaire plus élevé et l'autre avec un débit binaire plus faible. Le CTS compare ensuite les deux valeurs QP moyennes exportées des deux encodages. Si le QP moyen de l'encodage avec le débit inférieur est supérieur au QP moyen de l'encodage avec le débit supérieur, le CTS est réussi.
Pour valider la désactivation de la fonctionnalité d'exportation des statistiques d'encodage vidéo lorsqu'elle est activée, utilisez la clé VIDEO_ENCODING_STATISTICS_LEVEL_NONE
comme suit :
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);