Exporter les statistiques d'encodage vidéo

À 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 de l'encodeur vidéo, comme décrit dans la section 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 des données statistiques, comme indiqué dans le tableau suivant.

Nom des statistiques de l'encodeur Description
QP moyen en bloc par image Moyenne de tous les QP de bloc dans le frame 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 image à l'aide de la méthode MediaFormat pour les développeurs.

Mises à jour du pilote de l'encodeur vidéo

Pour permettre l'exportation des statistiques d'encodage vidéo, les fournisseurs SoC doivent modifier le et le pilote d'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 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 de bloc à l'entier le plus proche avant d'émettre vers 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 de la couche actuelle image sont en mode "sauté". Cette condition se produit lorsqu'aucun coefficient n'est et qu'aucune information QP significative n'est encodée dans la trame.

  • KEY_PICTURE_TYPE décrit le type d'image du frame encodé comme PICTURE_TYPE_I, PICTURE_TYPE_P, PICTURE_TYPE_B ou PICTURE_TYPE_UNKNOWN.

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL décrit le niveau d'informations statistiques d'encodage émises par l'encodeur vidéo, comme suit :

Pour obtenir une implémentation de référence, consultez VideoEncodingStatisticsTest.

Validation

Exécutez la VideoEncodingStatisticsTest. Test CTS pour vérifier que la partie QP moyenne des statistiques d'encodage vidéo fonctionne correctement: CTS exécute deux encodages pour la même vidéo d'entrée, l'un avec un et un autre avec un débit inférieur. CTS compare ensuite les les 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, CTS passe.

Pour valider la désactivation de la fonctionnalité d'exportation des statistiques d'encodage vidéo lorsque utilisez la clé VIDEO_ENCODING_STATISTICS_LEVEL_NONE comme suit:

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