Exportieren Sie Videokodierungsstatistiken

Ab Android 13 können App-Clients den Video-Encoder auffordern, Codierungsstatistiken für jedes codierte Videobild zu exportieren. Mit den vom Video-Encoder erhaltenen Statistiken können Apps ihre Video-Kodierungsaufgaben wie Multipass-Kodierung und Frame-Vorverarbeitung vor der Kodierung optimieren.

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

Statistikdaten zur Videokodierung

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

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

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

Aktualisierungen des Video-Encoder-Treibers

Um den Export von Videokodierungsstatistiken zu unterstützen, müssen SoC-Anbieter den Videokodierertreiber ä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 Schlüssels KEY_VIDEO_QP_AVERAGE gelten folgende Regeln:

    • Der SoC-Encoder muss den Durchschnitt der Block-QPs auf die nächste ganze Zahl 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. Dieser Zustand tritt auf, wenn keine Koeffizienten codiert sind 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 Codierungsstatistikinformationen, die vom Video-Encoder ausgegeben werden, wie folgt:

Eine Referenzimplementierung finden Sie unter VideoEncodingStatisticsTest .

Validierung

Führen Sie den CTS-Test VideoEncodingStatisticsTest aus, um zu überprüfen, ob der durchschnittliche QP-Teil der Videokodierungsstatistik ordnungsgemäß funktioniert: CTS führt zwei Kodierungen desselben Eingabevideos aus, eine mit einer höheren Bitrate und eine mit einer niedrigeren Bitrate. CTS vergleicht dann die beiden exportierten durchschnittlichen QP-Werte aus den beiden Kodierungen. Wenn der durchschnittliche QP der Kodierung mit der niedrigeren Bitrate höher ist als der durchschnittliche QP der Kodierung mit der höheren Bitrate, wird CTS bestanden.

Um das Deaktivieren der Funktion zum Exportieren von Videokodierungsstatistiken zu überprüfen, 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);