Como validar streams HEVC com Zond 265
By Olga Krovyakova - modified October 9, 2023, created April 2, 2019.
Análise do tamanho do buffer de CEC
Gerando relatórios via interface de linha de comando
EXPERIMENTE ZOND 265 GRATUITAMENTE
O que verificar
Ao desenvolver, ajustar e testar componentes de codec de codificação de vídeo de alta eficiência (HEVC), os pesquisadores se deparam com a tarefa de validação de fluxo de vídeo. Para reproduzir corretamente um arquivo ou stream em qualquer reprodutor, não basta apenas verificar se ele está corretamente decodificado por uma ferramenta especial de referência. Além disso, você precisa determinar se o fluxo de vídeo testado está em conformidade com a especificação HEVC [1].
Para HEVC, existe um documento ISO especial que descreve como verificar streams de vídeo e decodificadores:
Tecnologia da informação - Codificação de alta eficiência e entrega de mídia em ambientes heterogêneos - Parte 5: Teste de conformidade HEVC e software de referência [2].
O processo de validação pode ser dividido em várias etapas. Um resultado de teste negativo de uma das condições resultará em erro. Os tipos de condição podem ser divididos em três grupos:
- restrições descritas na especificação HEVC
- para decodificar o fluxo pelo utilitário de HEVC Test Model (HM) projeto [3], para escrever todos os avisos
- admissibilidade e alteração dos parâmetros básicos do vídeo: resolução de quadros e taxa de quadros
As restrições descritas na especificação HEVC são as seguintes:
– valores máximos e mínimos dos parâmetros da unidade Network Abstraction Layer (NAL)
– compatibilidade de cada parâmetro com outros
– validade da ordem das unidades NAL, validade da estrutura do fluxo
– restrições de nível e perfil especificados
– disponibilidade de parâmetros de decodificação de uma sequência de vídeo - Conjunto de parâmetros de vídeo (VPS), Conjunto de parâmetros de sequência (SPS), Conjunto de parâmetros de imagem (PPS) e quadros necessários para reconstrução
– parâmetros do decodificador de referência hipotético (HRD), afetando a reprodução do fluxo em tempo real
Como verificar por Zond 265
Por exemplo, o arquivo «tractor_1920x1080p_25fps.yuv» [5] é codificado pelo compressor HM e, em seguida, em um arquivo compactado, alguns parâmetros das unidades NAL são ajustados em um editor HEX para cobrir parte dos erros potenciais com a ajuda do destaque recurso do Zond 265. Em seguida, o resultado é validado. É impossível modificar os parâmetros do arquivo para que todas as restrições sejam violadas. Portanto, apenas algumas restrições são selecionadas.
É melhor usar o conteúdo da guia Bitstream para uma análise detalhada dos erros encontrados. Depois que um arquivo for aberto, todas as unidades NAL com todos os parâmetros deverão ser listadas na guia Bitstream. Ao decodificar, Zond 265
1) verifica as restrições descritas na especificação;
2) coleta todos os avisos que surgiram no utilitário de decodificação HM.
Se algo der errado, uma notificação aparecerá perto da unidade NAL correspondente. A notificação inclui o nome da unidade NAL, seu deslocamento no fluxo, o deslocamento de bit do parâmetro’onde um erro é encontrado e um link para a página de especificações (ela será aberta em uma nova janela do navegador) onde você pode encontrar os detalhes.
Você pode expandir uma após a outra uma série de listas de erros da Fatia B (quadro 0), SPS, Fatia B (quadro 4) clicando no ícone vermelho com o ponto de exclamação.
A Figura 1 mostra a lista de todos os erros encontrados no SPS.
Figura 1. Janela com lista de erros da aba Bitstream
Você pode então expandir a lista SPS e explorar valores e erros de parâmetros (figura 2).
Figura 2. Mensagem de erro para um único parâmetro do SPS
O resultado da verificação dos parâmetros SPS é descrito abaixo.
Mensagem | Descrição |
---|---|
O valor de sps_max_sub_layers_minus1 deve estar no intervalo de 0 a 6, inclusive. É igual a 7 | É uma restrição da especificação. O tipo está verificando o valor máximo |
Quando vps_temporal_id_nesting_flag for igual a 1, sps_temporal_id_nesting_flag deverá ser igual a 1 | É uma restrição da especificação. O tipo está verificando a compatibilidade de cada parâmetro com outros |
O valor de pic_width_in_luma_samples deve ser menor ou igual a Sqrt( MaxLumaPs * 8 ), especificado para general_level_idc. Pela especificação, o valor de pic_width_in_luma_samples não deve ser maior que 1402 para o nível 2.1 | É uma restrição da especificação. O tipo está verificando as restrições especificadas para determinado perfil e nível |
Depois você expande uma fatia do primeiro quadro (figura 3).
Figura 3. Lista de erros para uma fatia do quadro 0
Erros de inacessibilidade do parâmetro de decodificação são apresentados em uma lista de erros do primeiro quadro.
Mensagem | Descrição |
---|---|
Não há nenhum VPS ativo disponível Não há SPS ativo disponível |
É uma restrição da especificação. O tipo está verificando a acessibilidade dos parâmetros de decodificação |
Você expande uma lista de erros do quadro 4 (figura 4).
Figura 5. Lista de todos os erros de um arquivo com menu de contexto
O resultado da validação do quadro 4 é descrito abaixo.
Mensagem | Descrição |
---|---|
A imagem de referência de curto prazo com POC = 2 foi perdida ou não foi decodificada corretamente | É uma restrição da especificação. O tipo está verificando a disponibilidade de quadros necessários para reconstrução |
decodificar CTU#46: exceção decodificar CTU#49: exceção decodificar CTU#50: exceção |
É uma mensagem recebida do decodificador. A reconstrução dos blocos não foi aprovada. Eles serão exibidos incorretamente na imagem final |
É melhor usar o conteúdo da guia Erros quando for necessário encontrar todos os erros em um arquivo e classificá-los por tipo. As mensagens de erro são acumuladas tanto para o quadro atual quanto para todo o fluxo em listas na aba (figura 5).
Figura 6. Gráfico de plenitude da CEC desenhado, com base nos dados de HRD disponíveis nas mensagens SEI
Figura 7. Gráfico de plenitude da CEC desenhado, com base em dados coletados manualmente
Análise do tamanho do buffer de CEC
Os gráficos de plenitude do Coded Picture Buffer (CPB) disponíveis no Hypothetical Reference Decoder (HRD) são necessários para identificar problemas (por exemplo, atrasos) ao reproduzir fluxos de vídeo em uma rede com uma largura de banda pequena. Como fonte de informação, os dados registrados em mensagens de informação suplementar de aprimoramento (SEI) (atraso inicial, taxa de bits, etc.) podem ser usados, ou esses dados podem ser definidos manualmente. As áreas de overflow ou underflow (destacadas em vermelho) indicam problema no intervalo (figura 6, figura 7). Em caso de problemas na elaboração dos gráficos, a mensagem de erro correspondente será exibida nas abas Bitstream e Erros.
Figura 8. Relatório de erros importado para planilhas do Google
Gerando relatórios via interface de linha de comando
A geração de relatórios via interface de linha de comando é útil quando um fluxo de vídeo deve ser validado automaticamente. Para gerar um relatório você deve iniciar o Zond 265 com os parâmetros abaixo.
Parâmetro | Descrição |
---|---|
-relatório | Afirma que o Zond 265 deve funcionar no modo de geração de relatórios |
t = erros | Define o tipo de relatório |
o= | Define o caminho do arquivo CSV de saída. É igual a “out.csv” por padrão |
Por exemplo, para analisar o arquivo «tractor.265» em busca de erros e salvá-los no arquivo «tractor-errors.csv», você precisa executar o comando:
zond265.exe trator.265 -relatório t = erros o =”trator-errors.csv”
Como resultado, você obtém um arquivo CSV que pode ser importado para o software processador de tabelas. A Figura 8 mostra o arquivo “tractor-errors.csv” importado para o Google Spreadsheets.
Referências
1. Especificação HEVC – http://www.itu.int/rec/T-REC-H.265
2. «Tecnologia da informação - Codificação de alta eficiência e entrega de mídia em ambiente heterogêneo - Parte 5: Teste de conformidade HEVC e software de referência» – http://mpeg.chiariglione.org/standards/mpeg-h/hevc-conformance- teste/rascunho de trabalho-conformidade com hevc
3. Página inicial do projeto HM – https://hevc.hhi.fraunhofer.de/
4. Projeto residencial Zond 265 – https://www.solveigmm.com/en/products/zond/
5. URL da sequência de teste – https://media.xiph.org/ldv/pub/test_sequences/1080p/tractor.yuv
EXPERIMENTE ZOND 265 GRATUITAMENTE
- 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 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!