Ab Android 13 können App-Clients den Video-Encoder anfordern, um Codierungsstatistiken für jeden codierten Videoframe zu exportieren. Anhand der Statistiken, die vom Videoencoder abgerufen werden, können Anwendungen ihre Videocodierungsaufgaben wie die Multipass-Codierung und Frame-Vorverarbeitung vor der Codierung optimieren.
Zum Exportieren von Videocodierungsstatistiken müssen SoC-Anbieter den Video-Encoder-Treiber wie unter Updates für den Video-Encoder-Treiber beschrieben ändern.
Statistikdaten zur Videocodierung
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 mithilfe der Entwicklerklasse MediaFormat
statistische Informationen für jeden Frame abrufen.
Updates für den Videoencoder-Treiber
Damit der Export von Statistiken zur Videocodierung unterstützt wird, müssen SoC-Anbieter den Video-Encoder-Treiber ändern. Die folgenden Schlüssel werden der Codec 2.0-Basis in Android 13 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 Daten an Codec 2.0 ausgibt.
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 auf, wenn keine Koeffizienten codiert sind und keine wichtigen QP-Informationen im Frame codiert sind.
KEY_PICTURE_TYPE
beschreibt den Bildtyp des codierten Frames alsPICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
oderPICTURE_TYPE_UNKNOWN
.KEY_VIDEO_ENCODING_STATISTICS_LEVEL
gibt die Ebene der Codierungsstatistiken an, die vom Video-Encoder gesendet werden.Wenn der Encoder keine Informationen zu Codierungsstatistiken generiert, wird dieser Schlüssel auf
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
gesetzt.Wenn der Encoder
KEY_VIDEO_QP_AVERAGE
undKEY_PICTURE_TYPE
für jeden Frame generiert, wird dieser Schlüssel aufVIDEO_ENCODING_STATISTICS_LEVEL_1
gesetzt.
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 Codierungen. 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 Sie die Funktion zum Exportieren von Videocodierungsstatistiken deaktivieren möchten, wenn sie aktiviert ist, verwenden Sie den Tastendruck VIDEO_ENCODING_STATISTICS_LEVEL_NONE
wie unten beschrieben:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);