Statistiken zur Videocodierung exportieren

Ab Android 13 können App-Clients den Videoencoder bitten, Codierungsstatistiken für jeden codierten Videoframe zu exportieren. Anhand der vom Videoencoder erfassten Statistiken können Apps ihre Videocodierungsaufgaben wie die Multipass-Codierung und die Frame-Vorverarbeitung vor der Codierung optimieren.

Um Videocodierungsstatistiken zu exportieren, müssen SoC-Anbieter den Videoencoder-Treiber wie unter Aktualisierungen des Videoencoder-Treibers beschrieben ändern.

Daten zu Videocodierungsstatistiken

Unter Android 13 exportiert der Videoencoder Statistikdaten wie in der folgenden Tabelle dargestellt.

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

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

Updates für den Videoencoder-Treiber

Um den Export von Videocodierungsstatistiken zu unterstützen, müssen SoC-Anbieter den Video-Encoder-Treiber ändern. Die folgenden Schlüssel werden in der Codec 2.0-Basis in Android 13 hinzugefügt:

  • KEY_VIDEO_QP_AVERAGE beschreibt den durchschnittlichen Block-QP pro Frame.

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

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

    • Der Mittelwert 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. Dieser Zustand tritt auf, wenn keine Koeffizienten codiert und keine signifikanten QP-Informationen im Frame codiert werden.

  • 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 gibt die Codierungsstatistiken an, die vom Video-Encoder gesendet werden. Die Codierungsstatistiken werden in den folgenden Stufen angegeben:

Eine Referenzimplementierung finden Sie unter VideoEncodingStatisticsTest.

Zertifizierungsstufe

Führe den VideoEncodingStatisticsTest-CTS-Test aus, um zu prüfen, ob der durchschnittliche QP-Teil der Videocodierungsstatistiken richtig funktioniert: CTS führt zwei Codierungen desselben Eingabevideos aus, eine mit einer höheren und eine mit einer niedrigeren Bitrate. CTS vergleicht dann die beiden exportierten durchschnittlichen QP-Werte aus den beiden Encodings. Wenn der durchschnittliche QP-Wert der Codierung mit der niedrigeren Bitrate höher ist als der durchschnittliche QP-Wert der Codierung mit der höheren Bitrate, wird CTS bestanden.

Wenn du prüfen möchtest, ob die Funktion zum Exportieren von Video-Codierungsstatistiken deaktiviert ist, verwende den VIDEO_ENCODING_STATISTICS_LEVEL_NONE-Schlüssel wie unten beschrieben:

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