À partir d'Android 13, les clients d'application peuvent demander à l'encodeur vidéo d'exporter des statistiques d'encodage pour chaque frame vidéo encodé. Grâce aux statistiques obtenues de l'encodeur vidéo, les applications peuvent optimiser leurs tâches d'encodage vidéo, telles que l'encodage multipass et le prétraitement des images avant l'encodage.
Pour exporter des statistiques d'encodage vidéo, les fournisseurs de SoC doivent modifier le pilote d'encodeur vidéo comme décrit dans la section Mises à jour du pilote d'encodeur vidéo.
Données statistiques sur l'encodage vidéo
Avec Android 13, l'encodeur vidéo exporte des données statistiques, comme indiqué dans le tableau suivant.
Nom des statistiques de l'encodeur | Description |
---|---|
QP de bloc moyen par frame | Moyenne de tous les QP de bloc dans l'image vidéo qui sont encodés dans le flux de bits. |
Type d'image | Type 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 permettre 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 sous Android 13:
KEY_VIDEO_QP_AVERAGE
décrit le QP de bloc moyen 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 du bloc à l'entier le plus proche avant d'émettre le codec 2.0.
La valeur moyenne n'est calculée qu'à partir d'un plan Luma.
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 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 vérifier que la partie QP moyenne des statistiques d'encodage vidéo fonctionne correctement : CTS exécute deux encodages de la même vidéo d'entrée, l'un avec un débit plus élevé et l'autre avec un débit plus faible. 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 à celui moyen de l'encodage avec le débit le plus élevé, la CTS réussit.
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);