Come convalidare i flussi HEVC con Zond 265
By Olga Krovyakova - modified October 9, 2023, created April 2, 2019.
Analisi della dimensione del buffer CPB
Generazione di report tramite interfaccia a riga di comando
Cosa controllare
Durante lo sviluppo, la messa a punto e il test dei componenti codec HEVC (High Efficiency Video Coding), i ricercatori devono affrontare il compito di convalida del flusso video. Per riprodurre correttamente un file o uno streaming su qualsiasi lettore, non è sufficiente verificare se è stato decodificato correttamente da uno speciale strumento di riferimento. Inoltre, è necessario determinare se il flusso video testato è conforme alla specifica HEVC [1].
Per HEVC, esiste uno speciale documento ISO che descrive come controllare i flussi video e i decoder:
Tecnologia dell'informazione - Codifica ad alta efficienza e distribuzione multimediale in ambienti eterogenei - Parte 5: test di conformità HEVC e software di riferimento [2].
Il processo di validazione può essere suddiviso in più fasi. Un risultato negativo del test di una delle condizioni risulterà in un errore. I tipi di condizioni possono essere suddivisi in tre gruppi:
- restrizioni descritte nelle specifiche HEVC
- per decodificare il flusso mediante l'utilità del progetto HEVC Test Model (HM) [3], per scrivere tutti gli avvisi
- ammissibilità e modifica dei parametri di base del video: risoluzione dei fotogrammi e frequenza dei fotogrammi
Le restrizioni descritte nelle specifiche HEVC sono le seguenti:
– valori massimi e minimi dei parametri dell'unità Network Abstraction Layer (NAL)
– compatibilità di ciascun parametro con gli altri
– validità dell'ordine delle unità NAL, validità della struttura del flusso
– restrizioni di livello e profilo specificati
– disponibilità dei parametri di decodifica di una sequenza video: set di parametri video (VPS), set di parametri di sequenza (SPS), set di parametri di immagine (PPS) e fotogrammi necessari per la ricostruzione
– parametri dell'ipotetico decoder di riferimento (HRD), che influenzano la riproduzione dello streaming in tempo reale
Come controllare con Zond 265
Ad esempio, il file «trattore_1920x1080p_25fps.yuv» [5] è codificato dal compressore HM e quindi, in un file compresso, alcuni parametri delle unità NAL vengono ottimizzati in un editor HEX per coprire parte dei potenziali errori con l'aiuto dell'evidenziazione caratteristica di Zond 265. Quindi il risultato viene convalidato. È impossibile modificare i parametri del file in modo che tutte le restrizioni vengano violate. Quindi vengono selezionate solo diverse restrizioni.
È preferibile utilizzare il contenuto della scheda Bitstream per un'analisi dettagliata degli errori rilevati. Una volta aperto un file, tutte le unità NAL con tutti i parametri dovrebbero essere elencate nella scheda Bitstream. Durante la decodifica, Zond 265
1) verifica i vincoli descritti nella specifica;
2) raccoglie tutti gli avvisi emersi nell'utilità di decodifica HM.
Se qualcosa va storto, apparirà una notifica vicino all'unità NAL corrispondente. La notifica include il nome dell'unità NAL, il suo offset nel flusso, l'offset del bit del parametro’in cui viene rilevato un errore e un collegamento alla pagina delle specifiche (verrà aperto in una nuova finestra del browser) dove è possibile trovare i dettagli.
È possibile espandere in successione una serie di elenchi di errori di Slice B (frame 0), SPS, Slice B (frame 4) cliccando sull'icona rossa con il punto esclamativo.
La Figura 1 mostra l'elenco di tutti gli errori riscontrati nell'SPS.
Figura 1. Finestra con elenco errori della scheda Bitstream
È quindi possibile espandere l'elenco SPS ed esplorare i valori dei parametri e gli errori (figura 2).
Figura 2. Messaggio di errore per un singolo parametro di SPS
Il risultato del controllo dei parametri PLC è descritto di seguito.
Messaggio | Descrizione |
---|---|
Il valore di sps_max_sub_layers_minus1 deve essere compreso tra 0 e 6 inclusi. È uguale a 7 | È una restrizione delle specifiche. Il tipo sta controllando il valore massimo |
Quando vps_temporal_id_nesting_flag è uguale a 1, sps_temporal_id_nesting_flag sarà uguale a 1 | È una restrizione delle specifiche. Il tipo verifica la compatibilità di ciascun parametro con gli altri |
Il valore di pic_width_in_luma_samples deve essere inferiore o uguale a Sqrt( MaxLumaPs * 8 ), specificato per general_level_idc. Dalle specifiche, il valore di pic_width_in_luma_samples non deve essere maggiore di 1402 per il livello 2.1 | È una restrizione delle specifiche. Il tipo sta controllando le restrizioni specificate per un dato profilo e livello |
Quindi espandi una porzione del primo fotogramma (figura 3).
Figura 3. Elenco degli errori per una porzione del fotogramma 0
Gli errori di inaccessibilità dei parametri di decodifica sono presentati in un elenco di errori del primo frame.
Messaggio | Descrizione |
---|---|
Non è disponibile alcun VPS attivo Non è disponibile alcun SPS attivo |
È una restrizione delle specifiche. Il tipo sta verificando l'accessibilità dei parametri di decodifica |
Si espande un elenco di errori del frame 4 (figura 4).
Figura 5. Elenco di tutti gli errori di un file con un menu contestuale
Il risultato della convalida del frame 4 è descritto di seguito.
Messaggio | Descrizione |
---|---|
L'immagine di riferimento a breve termine con POC = 2 è persa o non decodificata correttamente | È una restrizione delle specifiche. La tipologia sta verificando la disponibilità dei telai necessari per la ricostruzione |
decodificare CTU#46: eccezione decodificare CTU#49: eccezione decodificare CTU#50: eccezione |
È il messaggio ricevuto dal decoder. La ricostruzione dei blocchi non è stata approvata. Verranno visualizzati in modo errato nell'immagine finale |
È preferibile utilizzare il contenuto della scheda Errori quando è necessario trovare tutti gli errori in un file e ordinarli in base al tipo. I messaggi di errore vengono accumulati sia per il frame corrente che per l'intero flusso negli elenchi della scheda (figura 5).
Figura 6. Grafico della pienezza del CPB tracciato, basato sui dati HRD disponibili nei messaggi SEI
Figura 7. Grafico della pienezza del CPB tracciato, basato sui dati impostati manualmente
Analisi della dimensione del buffer CPB
I grafici della pienezza del Coded Picture Buffer (CPB) disponibili sull'Hypotetical Reference Decoder (HRD) sono necessari per identificare i problemi (ad esempio ritardi) durante la riproduzione di flussi video su una rete con una larghezza di banda ridotta. Come fonte di informazioni, è possibile utilizzare i dati registrati nei messaggi SEI (Supplemental Enhancement Information) (ritardo iniziale, bit rate, ecc.) oppure è possibile impostare manualmente questi dati. Le aree di overflow o underflow (evidenziate in rosso) indicano un problema nell'intervallo (figura 6, figura 7). In caso di problemi durante il disegno dei grafici, il messaggio di errore corrispondente verrà visualizzato nelle schede Bitstream ed Errori.
Figura 8. Rapporto sugli errori importato in Fogli di calcolo Google
Generazione di report tramite interfaccia a riga di comando
La generazione di report tramite l'interfaccia della riga di comando è utile quando un flusso video deve essere convalidato automaticamente. Per generare un report è necessario avviare Zond 265 con i parametri seguenti.
Parametro | Descrizione |
---|---|
-rapporto | Afferma che Zond 265 dovrebbe funzionare in modalità di generazione di report |
t=errori | Imposta il tipo di rapporto |
o= | Imposta il percorso del file CSV di output. Per impostazione predefinita è uguale a “out.csv&rdquo |
Ad esempio, per analizzare gli errori nel file «linear.265» e salvarli nel file «linear-errors.csv», è necessario eseguire il comando:
zond265.exe trattore.265 -report t=errori o=”trattore-errori.csv”
Di conseguenza si ottiene un file CSV che può essere importato nel software del processore da tavolo. La Figura 8 mostra il file “drawer-errors.csv” importato in Fogli di calcolo Google.
Riferimenti
1. Specifica HEVC – http://www.itu.int/rec/T-REC-H.265
2. «Tecnologia dell'informazione - Codifica ad alta efficienza e distribuzione multimediale in ambiente eterogeneo - Parte 5: Test di conformità HEVC e software di riferimento» – http://mpeg.chiariglione.org/standards/mpeg-h/hevc-conformance- test/conformità-bozza-di-lavoro-hevc
3. Home page del progetto HM – https://hevc.hhi.fraunhofer.de/
4. Progetto casa Zond 265 – https://www.solveigmm.com/en/products/zond/
5. URL della sequenza di test – https://media.xiph.org/ldv/pub/test_sequences/1080p/tractor.yuv
Olga Krovyakova is the Technical Support Manager in Solveig Multimedia since 2010.
She is the author of many text and video guidelines of company's products: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ and TriMP4.
She works with programs every day and therefore knows very well how they work. Сontact Olga via support@solveigmm.com if you have any questions. She will gladly assist you!