So validieren Sie HEVC-Streams mit Zond 265
Von Olga Krovyakova - geändert am 9. Oktober 2023, erstellt am 2. April 2019.
Generieren von Berichten über die Befehlszeilenschnittstelle
Was zu überprüfen ist
Beim Entwickeln, Optimieren und Testen von HEVC-Codec-Komponenten (High Efficiency Video Coding) stehen Forscher vor der Aufgabe der Videostream-Validierung. Um eine Datei oder einen Stream in einem beliebigen Player korrekt abzuspielen, reicht es nicht aus, nur zu überprüfen, ob sie von einem speziellen Referenztool korrekt dekodiert wurde. Darüber hinaus müssen Sie feststellen, ob der getestete Videostream der HEVC-Spezifikation [1]entspricht.
Für HEVC gibt es ein spezielles ISO-Dokument, das beschreibt, wie Videostreams und Decoder überprüft werden:
Informationstechnologie – Hocheffiziente Codierung und Medienbereitstellung in heterogenen Umgebungen – Teil 5: HEVC-Konformitätstests und Referenzsoftware [2].
Der Validierungsprozess kann in mehrere Phasen unterteilt werden. Ein negatives Testergebnis einer der Bedingungen führt zu einem Fehler. Die Konditionsarten lassen sich in drei Gruppen einteilen:
- einschränkungen, die in der HEVC-Spezifikation beschrieben sind
- um den Stream mit dem Dienstprogramm von HEVC Test Model (HM) Projekt [3]zu dekodieren, um alle Warnungen auszuschreiben
- zulässigkeit und Änderung grundlegender Parameter des Videos: Bildauflösung und Bildrate
Die in der HEVC-Spezifikation beschriebenen Einschränkungen sind wie folgt:
– maximal- und Minimalwerte der NAL-Einheitsparameter (Network Abstraction Layer)
– kompatibilität jedes Parameters mit anderen
– gültigkeit der Reihenfolge der NAL-Einheiten, Gültigkeit der Struktur des Streams
– einschränkungen der angegebenen Ebene und des angegebenen Profils
– verfügbarkeit von Dekodierungsparametern einer Videosequenz – Videoparametersatz (VPS), Sequenzparametersatz (SPS), Bildparametersatz (PPS) und für die Rekonstruktion benötigte Frames
– parameter des hypothetischen Referenzdecoders (HRD), die die Wiedergabe des Streams in Echtzeit beeinflussen
So prüfen Sie mit Zond 265
Beispielsweise wird die Datei «tractor_1920x1080p_25fps.yuv» [5] vom HM-Kompressor codiert und dann werden in einer komprimierten Datei einige Parameter von NAL-Einheiten in einem HEX-Editor angepasst, um einen Teil der potenziellen Fehler mithilfe der Hervorhebung abzudecken Funktion von Zond 265. Anschließend wird das Ergebnis validiert. Es ist nicht möglich, die Parameter der Datei so zu ändern, dass alle Einschränkungen verletzt werden. Daher werden nur einige Einschränkungen ausgewählt.
Für eine detaillierte Analyse der gefundenen Fehler ist es besser, den Inhalt der Bitstream-Registerkarte zu verwenden. Sobald eine Datei geöffnet wurde, sollten alle NAL-Einheiten mit allen Parametern auf der Registerkarte „Bitstream“ aufgelistet sein. Beim Dekodieren Zond 265
1) überprüft die in der Spezifikation beschriebenen Einschränkungen;
2) sammelt alle Warnungen, die im Dekodierdienstprogramm HM aufgetreten sind.
Wenn etwas schief geht, erscheint eine Benachrichtigung neben der entsprechenden NAL-Einheit. Die Benachrichtigung enthält den Namen der NAL-Einheit, ihren Offset im Stream, den Bit-Offset des Parameters’, an dem ein Fehler gefunden wurde, und einen Link zur Spezifikationsseite (sie wird in einem neuen Browserfenster geöffnet), wo Sie ihn finden können die Details.
Sie können eine Reihe von Fehlerlisten von Slice B (Frame 0), SPS, Slice B (Frame 4) nacheinander erweitern, indem Sie auf das rote Symbol mit dem Ausrufezeichen klicken.
Abbildung 1 zeigt die Liste aller im SPS gefundenen Fehler.
Abbildung 1. Fenster mit Fehlerliste der Registerkarte „Bitstream“
Anschließend können Sie die SPS-Liste erweitern und Parameterwerte und Fehler untersuchen (Abbildung 2).
Abbildung 2. Fehlermeldung für einen einzelnen Parameter von SPS
Das Ergebnis der SPS-Parameterprüfung wird unten beschrieben.
Nachricht | Beschreibung |
---|---|
Der Wert von sps_max_sub_layers_minus1 muss im Bereich von 0 bis einschließlich 6 liegen. Es ist gleich 7 | Es handelt sich um eine Einschränkung der Spezifikation. Der Typ prüft den Maximalwert |
Wenn vps_temporal_id_nesting_flag gleich 1 ist, muss sps_temporal_id_nesting_flag gleich 1 sein | Es handelt sich um eine Einschränkung der Spezifikation. Der Typ prüft die Kompatibilität jedes Parameters mit anderen |
Der Wert von pic_width_in_luma_samples muss kleiner oder gleich Sqrt( MaxLumaPs * 8 ) sein, angegeben für general_level_idc. Laut Spezifikation sollte der Wert von pic_width_in_luma_samples für Level 2.1 nicht größer als 1402 sein | Es handelt sich um eine Einschränkung der Spezifikation. Der Typ überprüft die für ein bestimmtes Profil und eine bestimmte Ebene angegebenen Einschränkungen |
Anschließend erweitern Sie einen Ausschnitt des ersten Frames (Abbildung 3).
Abbildung 3. Fehlerliste für ein Segment von Frame 0
Fehler aufgrund der Unzugänglichkeit von Decodierungsparametern werden in einer Fehlerliste des ersten Frames angezeigt.
Nachricht | Beschreibung |
---|---|
Es ist kein aktiver VPS verfügbar Es ist kein aktives SPS verfügbar |
Es handelt sich um eine Einschränkung der Spezifikation. Der Typ prüft die Zugänglichkeit von Dekodierungsparametern |
Sie erweitern eine Fehlerliste von Frame 4 (Abbildung 4).
Abbildung 5. Liste aller Fehler einer Datei mit Kontextmenü
Das Ergebnis der Validierung von Frame 4 wird unten beschrieben.
Nachricht | Beschreibung |
---|---|
Kurzzeit-Referenzbild mit POC = 2 geht verloren oder wird nicht korrekt dekodiert | Es handelt sich um eine Einschränkung der Spezifikation. Der Typ prüft die Verfügbarkeit der für die Rekonstruktion benötigten Frames |
cTU#46 dekodieren: Ausnahme cTU#49 dekodieren: Ausnahme cTU#50 dekodieren: Ausnahme |
Es handelt sich um eine vom Decoder erhaltene Nachricht. Der Wiederaufbau der Blöcke wurde nicht bestanden. Sie werden auf einem endgültigen Bild falsch angezeigt |
Es ist besser, den Inhalt der Registerkarte „Fehler“ zu verwenden, wenn alle Fehler in einer Datei gefunden und nach ihrem Typ sortiert werden müssen. Fehlermeldungen werden sowohl für den aktuellen Frame als auch für den gesamten Stream in Listen auf der Registerkarte gesammelt (Abbildung 5).
Abbildung 6. CPB-Füllungsdiagramm, basierend auf HRD-Daten, die in SEI-Nachrichten verfügbar sind
Abbildung 7. CPB-Fülle-Diagramm, basierend auf einem manuellen Datensatz
Diagramme der Fülle des Coded Picture Buffer (CPB), die auf dem Hypothetical Reference Decoder (HRD) verfügbar sind, werden benötigt, um Probleme (z. B. Verzögerungen) bei der Wiedergabe von Videostreams über ein Netzwerk mit geringer Bandbreite zu identifizieren. Als Informationsquelle können die in SEI-Nachrichten (Supplemental Enhancement Information) aufgezeichneten Daten (Anfangsverzögerung, Bitrate usw.) verwendet werden oder diese Daten können manuell eingestellt werden. Überlauf- oder Unterlaufbereiche (rot hervorgehoben) weisen auf ein Problem im Intervall hin (Abbildung 6, Abbildung 7). Bei Problemen beim Zeichnen von Diagrammen wird die entsprechende Fehlermeldung in den Registerkarten „Bitstream“ und „Fehler“ angezeigt.
Abbildung 8. In Google Spreadsheets importierter Fehlerbericht
Generieren von Berichten über die Befehlszeilenschnittstelle
Das Generieren von Berichten über die Befehlszeilenschnittstelle ist nützlich, wenn ein Videostream automatisch validiert werden soll. Um einen Bericht zu erstellen, sollten Sie Zond 265 mit den folgenden Parametern starten.
Parameter | Beschreibung |
---|---|
-bericht | Gibt an, dass Zond 265 im Berichtserstellungsmodus arbeiten soll |
t=Fehler | Legt den Berichtstyp fest |
o= | Legt den Pfad der Ausgabe-CSV-Datei fest. Es ist standardmäßig gleich “out.csv&rdquo |
Um beispielsweise die Datei «traktor.265» auf Fehler zu analysieren und sie in den Dateien «traktor-errors.csv», zu speichern, müssen Sie den folgenden Befehl ausführen:
zond265.exetractor.265 -report t=errors o=”tractor-errors.csv”
Als Ergebnis erhalten Sie eine CSV-Datei, die in die Tabellenverarbeitungssoftware importiert werden kann. Abbildung 8 zeigt die Datei “tractor-errors.csv” , die in Google Spreadsheets importiert wurde.
Verweise
1. HEVC-Spezifikation – http://www.itu.int/rec/T-REC-H.265
2. «Informationstechnologie – Hocheffiziente Codierung und Medienbereitstellung in heterogenen Umgebungen – Teil 5: HEVC-Konformitätstest- und Referenzsoftware» – http://mpeg.chiariglione.org/standards/mpeg-h/hevc-conformance- Prüfung/Arbeitsentwurf-HEVC-Konformität
3. HM-Projekthomepage – https://hevc.hhi.fraunhofer.de/
4. Zond 265 Heimprojekt – https://www.solveigmm.com/en/products/zond/
5. Testsequenz-URL – https://media.xiph.org/ldv/pub/test_sequences/1080p/tractor.yuv
- https://www.solveigmm.com/en/howto/netflix-vmaf-how-to-measure-video-quality-with-vmaf-in-zond-265/
- https://www.solveigmm.com/en/howto/zond-265-tutorial/
Olga Krovyakova ist seit 2010 Technical Support Manager bei Solveig Multimedia.
Sie ist Autorin zahlreicher Text- und Video-Richtlinien für Produkte: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ und TriMP4.
Sie arbeitet jeden Tag mit Programmen und weiß daher sehr gut, wie sie funktionieren. Wenden Sie sich bei Fragen an Olga über support@solveigmm.com.
Sie hilft Ihnen gerne weiter!