Statistiken zur Videocodierung exportieren

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

Wenn SoC-Anbieter Statistiken zur Videocodierung exportieren möchten, müssen sie den Videocodierertreiber ändern, wie unter Updates für den Videocodierertreiber beschrieben.

Daten zu Video-Codierungsstatistiken

Unter Android 13 exportiert der Video-Encoder Statistikdaten, wie in der folgenden Tabelle dargestellt.

Name der Encoder-Statistiken Beschreibung
Durchschnittlicher Block‑QP pro Frame Der Durchschnitt aller Block-QPs im Videobild, die in den Bitstream codiert sind
Bildtyp Geben Sie „I“, „P“ oder „B“ ein.

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

Updates für den Videocoder-Treiber

Damit der Export von Video-Codierungsstatistiken unterstützt wird, müssen SoC-Anbieter den Video-Encoder-Treiber ändern. In Android 13 wurden der Codec 2.0-Basis die folgenden Schlüssel 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 Durchschnitt der Block-QPs auf die nächste Ganzzahl runden, bevor er an Codec 2.0 ausgegeben wird.

    • 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. Dieser Zustand tritt auf, wenn keine Koeffizienten 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 Menge der Informationen zu Codierungsstatistiken, die vom Video-Encoder ausgegeben werden:

Eine Referenzimplementierung finden Sie unter VideoEncodingStatisticsTest.

Zertifizierungsstufe

Führen Sie den VideoEncodingStatisticsTest-CTS-Test aus, um zu prüfen, ob der durchschnittliche QP-Teil der Videocodierungsstatistiken korrekt funktioniert. Beim CTS werden zwei Codierungen desselben Eingabevideos ausgeführt, eine mit einer höheren Bitrate und eine mit einer niedrigeren Bitrate. Im CTS werden dann die beiden exportierten durchschnittlichen QP-Werte der beiden Codierungen verglichen. 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, besteht der CTS.

Um zu prüfen, ob das Exportieren von Video-Codierungsstatistiken deaktiviert wird, wenn die Funktion aktiviert ist, verwenden Sie den VIDEO_ENCODING_STATISTICS_LEVEL_NONE-Schlüssel wie folgt:

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