Statistiken zur Videocodierung exportieren

Ab Android 13 können App-Clients den Video-Encoder anfordern, Codierungsstatistiken für jeden codierten Videoframe zu exportieren. Mit den vom Video-Encoder abgerufenen Statistiken können Apps ihre Videocodierungsaufgaben optimieren, z. B. Multipass-Codierung und Frame-Vorverarbeitung vor der Codierung.

Wenn SoC-Anbieter Videocodierungsstatistiken exportieren möchten, müssen sie den Treiber des Video-Encoders ändern. Weitere Informationen finden Sie unter Updates am Treiber des Video-Encoders.

Daten zu Videocodierungsstatistiken

In Android 13 exportiert der Video-Encoder Statistiken wie in der folgenden Tabelle dargestellt.

Name der Encoder-Statistiken Beschreibung
Durchschnittliche Block-QP pro Frame Der Durchschnitt aller Block-QPs im Videoframe, die in den Bitstream codiert sind
Bildtyp Typ I, P oder B

Entwickler können mit der MediaFormat Entwicklerklasse Statistiken für jeden Frame abrufen.

Updates am Treiber des Video-Encoders

Damit Videocodierungsstatistiken exportiert werden können, müssen SoC-Anbieter den Treiber des Video-Encoders ändern. In Android 13 werden der Codec 2.0-Basis die folgenden Schlüssel hinzugefügt:

  • KEY_VIDEO_QP_AVERAGE beschreibt die durchschnittliche Block-QP pro Frame.

    Für die Implementierung des Schlüssels KEY_VIDEO_QP_AVERAGE gelten die folgenden Regeln:

    • Der SoC-Encoder muss den Durchschnitt der Block-QPs auf die nächste Ganzzahl runden, bevor er ihn an Codec 2.0 sendet.

    • Der Durchschnittswert wird nur aus einer Luma-Ebene berechnet.

    • Der SoC-Encoder muss INT_MAX zurückgeben, wenn sich alle Blöcke im aktuellen Frame im übersprungenen Modus befinden. Diese Bedingung tritt ein, wenn keine Koeffizienten codiert werden und keine signifikanten QP-Informationen im Frame codiert sind.

  • KEY_PICTURE_TYPE beschreibt den Bildtyp des codierten Frames als PICTURE_TYPE_I, PICTURE_TYPE_P, PICTURE_TYPE_B, oder PICTURE_TYPE_UNKNOWN.

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL beschreibt die Ebene der Informationen zu Codierungsstatistiken, die vom Video-Encoder ausgegeben werden. Die Werte sind wie folgt definiert:

Eine Referenzimplementierung finden Sie unter VideoEncodingStatisticsTest.

Validierung

Führen Sie den VideoEncodingStatisticsTest CTS-Test aus, um zu prüfen, ob der durchschnittliche QP-Teil der Videocodierungsstatistiken korrekt funktioniert. CTS führt zwei Codierungen desselben Eingabevideos aus, eine mit einer höheren Bitrate und eine mit einer niedrigeren Bitrate. Anschließend vergleicht CTS die beiden exportierten durchschnittlichen QP-Werte aus den beiden Codierungen. Wenn die durchschnittliche QP aus der Codierung mit der niedrigeren Bitrate höher ist als die durchschnittliche QP aus der Codierung mit der höheren Bitrate, besteht der CTS-Test.

Wenn Sie prüfen möchten, ob die Funktion zum Exportieren von Videocodierungsstatistiken deaktiviert werden kann, wenn sie aktiviert ist, verwenden Sie den Schlüssel VIDEO_ENCODING_STATISTICS_LEVEL_NONE wie folgt:

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