BR112015016361B1 - Operações de armazenamento temporário de vídeo para acesso aleatório em codificação de vídeo - Google Patents

Operações de armazenamento temporário de vídeo para acesso aleatório em codificação de vídeo Download PDF

Info

Publication number
BR112015016361B1
BR112015016361B1 BR112015016361-0A BR112015016361A BR112015016361B1 BR 112015016361 B1 BR112015016361 B1 BR 112015016361B1 BR 112015016361 A BR112015016361 A BR 112015016361A BR 112015016361 B1 BR112015016361 B1 BR 112015016361B1
Authority
BR
Brazil
Prior art keywords
image
access unit
video
unit
access
Prior art date
Application number
BR112015016361-0A
Other languages
English (en)
Other versions
BR112015016361A2 (pt
Inventor
Ye-Kui Wang
Ying Chen
Adarsh Krishnan Ramasubramonian
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112015016361A2 publication Critical patent/BR112015016361A2/pt
Publication of BR112015016361B1 publication Critical patent/BR112015016361B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

OPERAÇÕES DE ARMAZENAMENTO TEMPORÁRIO DE VÍDEO PARA ACESSO ALEATÓRIO EM CODIFICAÇÃO DE VÍDEO. Em um exemplo, a presente revelação fornece o recebimento em um fluxo de bits de vídeo de uma unidade de acesso que tem uma primeira imagem de ponto de acesso aleatório (RAP) e o recebimento no fluxo de bits de vídeo, após a unidade de acesso no fluxo de bits, de uma unidade de acesso subsequente que tem uma segunda imagem de RAP. Em um caso em que uma ou mais imagens anteriores ignoradas de acesso aleatório (RASL) para a unidade de acesso subsequente não estão presentes no fluxo de bits de vídeo recebido, trocar um tempo de remoção de armazenamento temporário de imagem precoce com base em um deslocamento de atraso de remoção de armazenamento temporário de imagem. Outro exemplo fornece o recebimento de uma unidade de acesso após uma inicialização precoce do decodificador de referência hipotético (HRD), sendo que a unidade de acesso tem uma imagem de RAP, em que unidades de acesso associadas contendo imagens de RASL não são recebidas e inicialização de um tempo de remoção de armazenamento temporário de imagem e um deslocamento de atraso de remoção de armazenamento temporário de imagem (...).

Description

[0001] Este pedido reivindica o benefício do Pedido Provisório n° US 61/749.820, depositado em 7 de janeiro de 2013, o conteúdo do qual é incorporado em sua totalidade ao presente documento a título de referência.
CAMPO DA TÉCNICA
[0002] Esta revelação refere-se a codificação de vídeo e, mais particularmente, a técnicas para controlar operações de armazenamento temporário de vídeo de um decodificador de vídeo.
ANTECEDENTES
[0003] Capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, que inclui televisões digitais, sistemas de difusão direta digitais, sistemas de difusão sem fio, assistentes pessoais digitais (PDAs), computadores do tipo laptop ou desktop, computadores do tipo tablet, leitores de livro digital, câmeras digitais, dispositivos de gravação digitais, reprodutores de mídia digital, dispositivos de videogame, consoles de videogame, telefones a rádio por satélite ou celulares, os chamados "telefones inteligentes", dispositivos de teleconferência por vídeo, dispositivos de transmissão contínua de vídeo e semelhantes. Os dispositivos de vídeo digital implantam técnicas de compressão de vídeo, tais como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Part 10, Codificação de Vídeo Avançada (AVC), o padrão Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de modo mais eficiente através da implantação de tais técnicas de compressão de vídeo.
[0004] As técnicas de compressão de vídeo realizam predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo com base em blocos, uma fatia de vídeo (isto é, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser partida em blocos de vídeo, que também podem ser chamados de treeblocks, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intra- codificada (I) de uma imagem são codificados através do uso de predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia inter-codificada (P ou B) de uma imagem podem usar predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação a amostras de referência em outras imagens de referência. As imagens podem ser chamadas de quadros, e as imagens de referência podem ser chamadas de quadros de referência.
[0005] A predição espacial ou temporal utiliza um bloco de predição. Dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco de predição. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que forma o bloco de predição, e sendo que os dados residuais indicam a diferença entre o bloco codificado e o bloco de predição. Um bloco intra-codificado é codificado de acordo com um modo de intra-codificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel em um domínio de transformada, o que resulta em coeficientes de transformadaresiduais, que então podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em uma matriz bidimensional, podem ser submetidos à varredura de modo a produzir um vetor unidimensional de coeficientes de transformada, e uma codificação por entropia pode ser aplicada para alcançar ainda mais compressão.
SUMÁRIO
[0006] Em geral, esta revelação descreve técnicas para controlar operações de armazenamento temporário em um decodificador de vídeo para imagens de ponto de acesso aleatório (RAP) tendo descartado imagens anteriores. Em alguns exemplos, quando um fluxo de bits inclui uma imagem de RAP subsequente que segue uma imagem de RAP inicial, um decodificador pode ser configurado para trocar um tempo de remoção de armazenamento temporário de imagem (CPB) codificado para acessar unidades que seguem a imagem de RAP subsequente quando imagens anteriores, tais como imagens anteriores ignoradas de acesso aleatório (RASL), para a imagem de RAP subsequente não estão presentes.
[0007] Em um exemplo da revelação, um método de processamento de dados de vídeo inclui receber em um fluxo de bits de vídeo uma unidade de acesso que tem uma primeira imagem de ponto de acesso aleatório (RAP), receber no fluxo de bits de vídeo, após a unidade de acesso no fluxo de bits, uma unidade de acesso subsequente que tem uma segunda imagem de RAP e, no caso em que uma ou mais imagens anteriores ignoradas de acesso aleatório (RASL) para as unidades de acesso subsequentes não estão presentes no fluxo de bits recebido, trocar um tempo de remoção de armazenamento temporário de imagem precoce com base em um desvio de atraso de remoção de armazenamento temporário de imagem.
[0008] Em outro exemplo da revelação, um método de processamento de dados de vídeo inclui receber uma unidade de acesso após uma inicialização precoce de um decodificador de referência hipotética (HRD), em que a unidade de acesso tem uma imagem de ponto de acesso aleatório (RAP), em que unidades de acesso associadas que contêm imagens anteriores ignoradas de acesso aleatório (RASL) não são recebidas, e a reinicializar um tempo de remoção de armazenamento temporário de imagem e um desvio de atraso de remoção de armazenamento temporário de imagem em resposta ao recebimento da unidade de acesso e não recebimento das unidades de acesso associadas contêm imagens de RASL.
[0009] Em outro exemplo, a revelação descreve um dispositivo para processar dados de vídeo que inclui um processador configurado para receber em um fluxo de bits de vídeo uma unidade de acesso que tem uma imagem de RAP, receber no fluxo de bits de vídeo, após a unidade de acesso no fluxo de bits, uma unidade de acesso subsequente que tem uma segunda imagem de RAP e, no caso em que uma ou mais imagens anteriores ignoradas de acesso aleatório (RASL) para a unidade de acesso subsequente não estão presentes no fluxo de bits recebido, trocar um tempo de remoção de armazenamento temporário de imagem precoce com base em um desvio de atraso de remoção de armazenamento temporário de imagem.
[0010] Em outro exemplo, a revelação descreve um dispositivo para processar dados de vídeo que inclui um processador configurado para receber uma unidade de acesso após uma inicialização precoce de um decodificador de referência hipotética (HRD), em que a unidade de acesso tem uma imagem de RAP, em que unidades de acesso associadas que contêm imagens de RASL não são recebidas, e reinicializar o HRD, que inclui reinicializar um tempo de remoção de armazenamento temporário de imagem e um desvio de atraso de remoção de armazenamento temporário de imagem em resposta ao recebimento da unidade de acesso e não recebimento das unidades de acesso associadas que contêm imagens de RASL.
[0011] Em outro exemplo, a revelação descreve um dispositivo para processar dados de vídeo que inclui meio para receber em um fluxo de bits de vídeo uma unidade de acesso que tem uma imagem de RAP, meio para receber no fluxo de bits de vídeo, após a unidade de acesso no fluxo de bits, uma unidade de acesso subsequente que tem uma segunda imagem de RAP e meio para trocar um tempo de remoção de armazenamento temporário de imagem precoce com base em um desvio de atraso de remoção de armazenamento temporário de imagem no caso de uma ou mais imagens anteriores ignoradas de acesso aleatório (RASL) para a unidade de acesso subsequente.
[0012] Em outro exemplo, a revelação descreve um dispositivo para processar dados de vídeo que inclui meio para receber uma unidade de acesso após uma inicialização precoce do decodificador de referência hipotética (HRD), em que a unidade de acesso tem uma imagem de RAP, em que unidades de acesso associadas que contêm imagens de RASL não são recebidas, e meio para reinicializar o HRD, que inclui reinicializar um tempo de remoção de armazenamento temporário de imagem e um desvio de atraso de remoção de armazenamento temporário de imagem em resposta ao recebimento da unidade de acesso e não recebimento das unidades de acesso associadas que contêm imagens de RASL.
[0013] Em outro exemplo, a revelação descreve um meio de armazenamento legível por computador. O meio de armazenamento legível por computador que tem armazenado no mesmo instruções que, mediante execução, fazem com que um ou mais processadores recebam em um fluxo de bits de vídeo uma unidade de acesso que tem uma imagem de RAP, recebam no fluxo de bits de vídeo, após a unidade de acesso no fluxo de bits, uma unidade de acesso subsequente que tem uma segunda imagem de RAP e, no caso em que uma ou mais imagens anteriores ignoradas de acesso aleatório (RASL) para a unidade de acesso subsequente não estão presentes no fluxo de bits recebido, troquem um tempo de remoção de armazenamento temporário de imagem precoce com base em um desvio de atraso de remoção de armazenamento temporário de imagem.
[0014] Em outro exemplo, a revelação descreve um meio de armazenamento legível por computador. Sendo que o meio de armazenamento legível por computador tem armazenado no mesmo instruções que, mediante execução, fazem com que um ou mais processadores recebam uma unidade de acesso após uma inicialização precoce do decodificador de referência hipotética (HRD), em que a unidade de acesso tem uma imagem de ponto de acesso aleatório (RAP), em que unidades de acesso associadas que contêm imagens anteriores ignoradas de acesso aleatório (RASL) não são recebidas, e reinicializem o HRD, que inclui reinicializar um tempo de remoção de armazenamento temporário de imagem e um desvio de atraso de remoção de armazenamento temporário de imagem em resposta ao recebimento da unidade de acesso e não recebimento das unidades de acesso associadas que contêm imagens de RASL.
[0015] Em outro exemplo, a revelação descreve um método de processamento de dados de vídeo que inclui sinalizar um desvio de atraso de remoção de CPB para cada unidade de acesso de CRA ou BLA, em que trocar o tempo de remoção de CBP de cada das unidades de acesso seguindo a unidade de acesso de CRA ou BLA em ordem de decodificação é precoce pelo desvio de atraso de remoção de CPB para cada unidade de acesso de CRA ou BLA para que as imagens associadas de RASL não estejam presentes, independentemente de se o HRD inicializa na unidade de acesso de CRA ou BLA.
[0016] Em alguns exemplos, a revelação descreve vários métodos. Uma ampla variedade de processadores, unidades de processamento e aparelhos pode ser configurada para implantar os exemplos de métodos. A revelação também descreve meios de armazenamento legíveis por computador que podem ser configurados para realizar as funções de qualquer um ou mais dos exemplos de métodos.
[0017] Os detalhes de um ou mais exemplos são demonstrados nos desenhos anexos e na descrição abaixo. Outros recursos, objetivos e vantagens se tornarão aparentes a partir da descrição e dos desenhos e a partir das reivindicações.
[0018] Os detalhes de um ou mais exemplos são demonstrados nos desenhos anexos e na descrição abaixo. Outros recursos, objetivos e vantagens se tornarão aparentes a partir da descrição e dos desenhos e a partir das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0019] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação de decodificação de vídeo exemplificativo que pode utilizar as técnicas descritas nesta revelação.
[0020] A Figura 2 é um diagrama de blocos que ilustra um codificador de vídeo exemplificativo que pode implantar as técnicas descritas nesta revelação.
[0021] A Figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplificativo que pode implantar as técnicas descritas nesta revelação.
[0022] A Figura 4 é um fluxograma que ilustra um método exemplificativo de acordo com um ou mais exemplos descritos nesta revelação.
[0023] A Figura 5 é um fluxograma que ilustra um método exemplificativo de acordo com um ou mais exemplos descritos nesta revelação.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[0024] Esta revelação descreve várias técnicas para controlar operações de armazenamento temporário em um decodificador de vídeo para imagens de ponto de acesso aleatório (RAP) tendo descartado imagens anteriores. As técnicas podem suportar operações de decodificador de referência hipotética (HRD) aprimoradas, que podem ser aplicadas através de unidades de acesso (AUs) intermediárias que contêm acesso aleatório limpo (CRA) ou imagens de acesso de enlace rompido (BLA), para que unidades de acesso anterior ignoradas de acesso aleatório (RASL) associadas sejam descartadas. Uma imagem de CRA contém somente I fatias e pode ser a primeira imagem no fluxo de bits em ordem de decodificação ou pode aparecer mais tarde no fluxo de bits. Uma imagem de CRA pode ter imagens de RADL ou RASL associadas. Quando uma imagem de CRA é a primeira imagem no fluxo de bits em ordem de decodificação, a imagem de CRA é a primeira imagem de uma sequência de vídeo codificado em ordem de decodificação, e quaisquer imagens associadas de RASL não são emitidas pelo decodificador e podem não ser decodificáveis, visto que as mesmas podem conter referências para imagens que não estão presentes no fluxo de bits. Uma imagem de BLA contém somente I fatias e pode ser a primeira imagem no fluxo de bits em ordem de decodificação ou pode aparecer mais tarde no fluxo de bits. Cada imagem de BLA começa uma nova sequência de vídeo codificado e tem o mesmo efeito no processo de decodificação como uma imagem de IDR. Entretanto, uma imagem de BLA contém elementos de sintaxe que especificam um conjunto de imagem de referência não vazio. As imagens de RASL são imagens anteriores de uma imagem de BLA ou CRA associada. Todas as imagens de RASL são imagens anteriores de uma imagem de BLA ou CRA associada. Quando a imagem de RAP associada é uma imagem de BLA ou é a primeira imagem codificada no fluxo de bits, a imagem de RASL não é emitida e pode não ser corretamente decodificável, visto que a imagem de RASL pode conter referências para imagens que não estão presentes no fluxo de bits. As imagens de RASL não são usadas como imagens de referência para o processo de decodificação de imagens de não RASL. Quando presentes, todas as imagens de RASL precedem, em ordem de decodificação, todas as imagens posteriores da mesma imagem de RAP associada.
[0025] Os padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), que inclui as extensões de codificação de vídeo escalável (SVC) e codificação de vídeo Multiview (MVC) do mesmo.
[0026] Além disso, existe um novo padrão de codificação de vídeo, a saber codificação de vídeo de alta eficiência (HEVC), desenvolvido pelo Joint Collaboration Team on Video Coding (JCT-VC) de ITU-T Video Coding Experts Group (VCEG) e ISO/IEC Motion Picture Experts Group (MPEG). Um rascunho (WD) de HEVC, Bross, et al, "High Efficiency Video Coding (HEVC) text specification draft 9", e referido como HEVC WD9 doravante, está disponível a partir de http://phenix.int- evry.fr/jct/doc_end_user/documents/11_Shanhai/wg11/JCTVC- K1003-v13.zip, a partir de 7 de janeiro de 2013.
[0027] Um rascunho recente do HEVC padrão, referido como "HEVC Working Draft 10" ou "WD10", é descrito no documento JCTVC-L1003v34, Bross et al, "High efficiency video coding (HEVC) text specification draft 10 (for FDIS & Last Call)," pelo Joint Collaborative Team em Video Coding (JCT-VC) de ITU-T SGI 6 WP3 e ISO/IEC JTC1/SC29/WG11, 12a reunião: Geneva, CH, 14 a 23 de janeiro de 2013, que é pode ser feito o download a partir de: http://phenix.int- evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC- L1003-v34.zip.
[0028] Um outro rascunho do padrão HEVC, referido no presente documento como "WD 10 revisions", é descrito em Bross et al, "Editor's proposed corrections to HEVC version 1", Joint Collaborative Team em Video Coding (JCT-VC) de ITU-T SGI 6 WP3 e ISO/IEC JTC1/SC29/WG11, 13a reunião, Incheon, KR, abril de 2013, assim como de 7 de junho de 2013, está disponível a partir de: http://phenix.int- evry.fr/jct/doc_end_user/documents/13_Incheon/wg11/JCTVC- M0432-v3.zip
[0029] Esforços de padronização de HEVC têm base em um modelo de um dispositivo de codificação de vídeo referido como o Modelo de Teste de HEVC (HM). O HM presume aprimoramentos nas capacidades de codificação de dispositivos de vídeo atuais em relação à codificação de dispositivos de vídeo disponíveis durante o desenvolvimento de outro padrões de codificação de vídeo anteriores, por exemplo, ITU-T H.264/AVC. Por exemplo, enquanto que H.264 fornece nove modos de codificação de intra-predição, o HEVC fornece uma quantidade de trinta e cinco modos de codificação de intra-predição. . Os conteúdos integrais de HEVC WD9 e HEVC WD 10 são incorporados ao presente documento a título de referência.
[0030] Os padrões de codificação de vídeo tipicamente incluem uma especificação de um modelo de armazenamento temporário de vídeo. Em AVC e HEVC, o modelo de armazenamento temporário é referido como o decodificador de referência hipotética (HRD), que inclui um modelo de armazenamento temporário tanto do armazenamento temporário de imagem codificada (CPB) quanto do armazenamento temporário de imagem decodificada (DPB). Os comportamentos CPB e DPB são matematicamente especificados. O HRD impõe diretamente restrições a temporização diferente, tamanhos de armazenamento temporário e taxas de bits, e indiretamente impõe restrições a características e estatísticas de fluxo de bits. Um conjunto completo de parâmetros de HRD inclui cinco parâmetros básicos: atraso de remoção de CPB inicial, tamanho de CPB, taxa de bits, atraso de emissão de DPB inicial e tamanho de DPB.
[0031] Em AVC e HEVC, a conformidade de fluxo de bits e a conformidade de decodificador são especificadas como partes da especificação de HRD. Embora o HRD seja referido como um decodificador, a especificação de HRD é tipicamente necessária no lado de codificador para garantir conformidade de fluxo de bits. Dois tipos de fluxo de bits ou conformidade de HRD, a saber tipo I e tipo II, são especificados. Além disso, dois tipos de conformidade de decodificador (conformidade de decodificador de temporização de emissão e conformidade de decodificador de ordem de emissão) são especificados.
[0032] O HRD é tipicamente inicializado em uma imagem de ponto de acesso aleatório (RAP). Em ambos HEVC e AVC, uma vez que o HRD é inicializado, o mesmo continua a operar até o fim de um fluxo de bits sem reinicialização.
[0033] Em HEVC WD9, se o HRD inicializa em uma unidade de acesso de CRA ou BLA (essa unidade de acesso inicial é chamada de unidade de acesso 0, tanto o padrão como o atraso de remoção de CPB inicial alternativo e desvio de atraso associado à unidade de acesso inicial 0 são escolhidos para serem usados nas operações de HRD, dependendo de se as unidades de acesso de RASL associadas à unidade de acesso 0 estão presentes. Se as unidades de acesso de RASL associadas à unidade de acesso 0 não estiverem presentes, o atraso de remoção de CPB inicial alternativo e desvio de atraso são escolhidos, por exemplo, por um decodificador de vídeo; de outro modo (isto é, as unidades de acesso de RASL associadas à unidade de acesso 0 estão presentes), o atraso de remoção de CPB inicial padrão e desvio de atraso são escolhidos, por exemplo, por um decodificador de vídeo. O conjunto de atraso de remoção de CPB inicial e desvio de atraso escolhido é, então, usado, por exemplo, por um decodificador de vídeo até o fim do fluxo de bits.
[0034] Na Publicação de Patente n° US 2013/0107953, data de publicação 2 de maio de 2013, depositada em 30 de outubro de 2012, sendo que o conteúdo em sua totalidade do qual é incorporado ao presente documento a título de referência, o método a seguir é descrito. Um desvio de atraso de remoção de CPB pode ser sinalizado para cada unidade de acesso de CRA. Se o HRD inicializa em uma tal unidade de acesso de CRA (também chamada de unidade de acesso 0), e as imagens de RASL associadas não estão presentes, o tempo de remoção de CPB de cada das unidades de acesso que segue a unidade de acesso de CRA em ordem de decodificação é trocado precocemente pelo desvio de atraso de remoção de CPB.
[0035] As técnicas de HRD conforme descrito em HEVC WD9 exibem os problemas a seguir. Primeiro, assume-se que o conjunto de atraso de remoção de CPB inicial e desvio de atraso escolhido se aplica ao caso em que todas as unidades de acesso de CRA ou BLA, se presentes, seguindo a unidade de acesso 0 em ordem de decodificação no fluxo de bits, têm as unidades de acesso de RASL associadas das mesmas presentes. As técnicas de HEVC WD9 atuais somente funcionariam corretamente se não existisse nenhuma unidade de acesso de CRA ou BLA que seguisse a unidade de acesso 0 em ordem de decodificação no fluxo de bits, e para a qual as unidades de acesso de RASL associadas não estão presentes. Entretanto, se existir uma tal unidade de acesso de CRA ou BLA presente no fluxo de bits, o CPB pode sobrecarregar após a primeira tal unidade de acesso de CRA ou BLA, e consequentemente resultados de decodificação inesperados podem ocorrer.
[0036] De modo similar, assume-se que o conjunto de atraso de remoção de CPB inicial e desvio de atraso escolhido se aplica ao caso em que todas as unidades de acesso de CRA ou BLA, se presentes, seguindo a unidade de acesso 0 em ordem de decodificação no fluxo de bits, não têm as unidades de acesso de RASL associadas das mesmas presentes. As técnicas de HEVC WD9 atuais somente funcionariam corretamente se não existisse nenhuma unidade de acesso de CRA ou BLA que seguisse a unidade de acesso 0 em ordem de decodificação no fluxo de bits, e as unidades de acesso de RASL associadas à unidade de acesso 0 estivessem presentes, e não funcionariam corretamente se existisse uma tal unidade de acesso de CRA ou BLA presente no fluxo de bits. Sob as técnicas propostas para HEVC WD9, isso se aplica a qualquer unidade de acesso de CRA ou BLA quando o conjunto de atraso de remoção de CPB inicial e desvio de atraso escolhido se aplica ao caso em que todas as unidades de acesso de CRA ou BLA, se presentes, seguindo a unidade de acesso 0 em ordem de decodificação no fluxo de bits, não têm as unidades de acesso de RASL associadas das mesmas presentes.
[0037] Outras suposições em um conjunto de atraso de remoção de CPB inicial e desvio de atraso escolhido também pode resultar em decodificação incorreta. Por exemplo, uma situação em que algumas unidades de acesso de CRA ou BLA seguindo a unidade de acesso 0 têm as unidades de acesso de RASL associadas das mesmas presentes, e outras unidades de acesso de CRA ou BLA seguindo a unidade de acesso 0 não têm as unidades de acesso de RASL associadas das mesmas presentes, também não pode decodificar corretamente enquanto a suposição na presença e ausência das unidades de acesso de RASL associadas às unidades de acesso de CRA ou BLA a seguir não se sustentar.
[0038] Em alguns casos, o desvio de atraso de remoção de CPB somente pode compensar os tempos de remoção de CPB para acessar unidades seguindo a unidade de acesso 0 devido ao descarte das unidades de acesso de RASL associadas à unidade de acesso 0. Se existir uma ou mais de uma unidade de acesso de CRA ou BLA que segue a unidade de acesso 0 em ordem de decodificação presente no fluxo de bits e para o qual as unidades de acesso de RASL associadas foram descartadas, o CPB pode sobrecarregar após a primeira tal unidade de acesso de CRA ou BLA, e consequentemente um resultado de decodificação inesperado pode ocorrer.
[0039] Um outro problema associado ao método em HEVC WD9 é da seguinte forma. Atualmente, quando a unidade de acesso (AU) 0 é uma AU de CRA ou BLA, se as AUs de RASL associadas estiverem presentes, o atraso de remoção de CPB inicial padrão e desvio de atraso são usados; de outro modo o atraso de remoção de CPB inicial alternativo e desvio de atraso são usados. Entretanto, a mudança do atraso de remoção de CPB inicial e desvio de atraso não muda a duração de tempo entre os tempos de decodificação (nominais) da AU0 e a primeira AU não RASL seguindo AU0 em ordem de decodificação. Por exemplo, assuma que existiam 10 imagens de RASL seguindo imediatamente a AU0 em ordem de decodificação e imediatamente seguidas por imagens posteriores no fluxo de bits original. Nessa situação, o tempo de remoção de CPB é igual ao tempo de remoção de CPB nominal para cada AU, e a duração de tempo entre os tempos de decodificação de quaisquer duas AUs consecutivas é um tique de relógio quando o fluxo de bits original é decodificado. De acordo com HEVC WD9, a duração de tempo entre os tempos de decodificação da AU0 e a primeira imagem posterior seria o mesmo (11 tiques de relógio) independentemente de se as imagens de RASL serem descartadas. Desse modo, a decodificação é contínua para o fluxo de bits original, porém não quando as imagens de RASL são descartadas.
[0040] Em vista desses problemas, esta revelação fornece vários métodos e técnicas para aprimorar armazenamento temporário de vídeo (por exemplo, aprimorar o HRD de HEVC WD9). Vários exemplos serão descritos com referência a HEVC WD9. Qualquer técnica de HRD não especificamente mencionada pode ser considerada ser a mesma conforme atualmente especificado em HEVC WD9 ou outras especificações de HEVC.
[0041] Em um exemplo da revelação, um desvio de atraso de remoção de CPB é sinalizado por um codificador de vídeo para cada unidade de acesso de CRA ou BLA. Para cada unidade de acesso de CRA ou BLA para que as imagens associadas de RASL não estejam presentes, independentemente de se o HRD (por exemplo, o decodificador de vídeo) inicializa na unidade de acesso de CRA ou BLA, o decodificador de vídeo troca o tempo de remoção de CPB de cada uma das unidades de acesso que segue a unidade de acesso de CRA ou BLA em ordem de decodificação precoce pelo desvio de atraso de remoção de CPB. Em um exemplo, o desvio pode ser um desvio acumulativo. Um tal desvio pode ser aplicado para trocar o tempo de remoção de CPB de cada uma das unidades de acesso que segue a unidade de acesso de CRA ou BLA em ordem de decodificação precoce pela quantidade acumulativa. Adicionalmente, quando o desvio devido a cada "imagem de RASL faltando" for idêntico, o desvio pode ser um desvio por imagem. Em um tal exemplo, o desvio pode ser multiplicado pela quantidade de imagens faltando. A seleção entre o atraso de remoção de CPB inicial alternativo e padrão e desvio de atraso para a unidade de acesso 0 pode ser realizada do mesmo modo como em HEVC WD9. Em outro exemplo, o atraso de remoção de CPB inicial padrão e desvio de atraso para unidade de acesso 0 são sempre escolhidos (isto é, sempre usados por decodificador de vídeo), e consequentemente, o atraso de remoção de CPB inicial alternativo e desvio de atraso não são sinalizados pelo codificador para unidades de acesso de CRA ou BLA a menos que parâmetros de CPB a nível de sub-imagem estejam presentes e então o atraso de remoção de CPB inicial alternativo e desvio de atraso são para o propósito de operações de HRD a nível de sub-imagem.
[0042] Em um método de processamento de dados de vídeo exemplificativo, um decodificador pode receber uma primeira unidade de acesso que tem uma imagem de ponto de acesso aleatório (RAP) em um fluxo de bits de vídeo. O decodificador também pode receber uma ou mais unidades de acesso subsequentes que têm uma imagem de RAP após a unidade de acesso ter a imagem de RAP. Por exemplo, o decodificador pode receber uma ou mais imagens de CRA ou BLA. No caso em que uma ou mais imagens de RASL para uma unidade de acesso subsequente dentre a uma ou mais unidades de acesso subsequentes não estiverem presentes no fluxo de bits recebido, o decodificador pode trocar um tempo de remoção de armazenamento temporário de imagem para um armazenamento temporário de imagem codificada (CPG) precoce com base em um desvio de atraso de remoção de armazenamento temporário de imagem. Conforme mencionado acima, o desvio de atraso de remoção de armazenamento temporário de imagem pode ser [descrever novamente como isso é obtido ou selecionado]
[0043] Em outro método de processamento de dados de vídeo exemplificativo, um decodificador pode receber uma unidade de acesso que tem uma imagem de RAP, em que unidades de acesso associadas que contêm imagens de RASL não são recebidas. O decodificador pode inicializar um tempo de remoção de armazenamento temporário de imagem e um desvio de atraso de remoção de armazenamento temporário de imagem em resposta ao recebimento da unidade de acesso e não recebimento das unidades de acesso associadas que contêm imagens de RASL.
[0044] Em outro exemplo da revelação, o HRD especifica que um decodificador de vídeo inicializa ou reinicializa em cada unidade de acesso de CRA ou BLA para a qual as unidades de acesso de RASL associadas não estão presentes. Nos exemplos acima relacionados a troca de um tempo de remoção de armazenamento temporário de imagem precoce com base em um desvio de atraso de remoção de armazenamento temporário de imagem uma tal inicialização ou reinicialização pode não ser necessária.
[0045] A Figura 1 é um diagrama de blocos que ilustra um exemplo de sistema de codificação de decodificação de vídeo 10 que pode utilizar as técnicas descritas nesta revelação. Conforme mostrado na Figura 1, o sistema 10 inclui um dispositivo de fonte 12 que gera dados de vídeo codificados para serem decodificados em um tempo mais tarde por um dispositivo de destino 14. O dispositivo de fonte 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla faixa de dispositivos, que inclui computadores do tipo desktop, computadores do tipo notebook (isto é, laptop), computadores do tipo tablet, set-top boxes (STB), aparelhos de telefone tais como os chamados telefones "inteligentes", os chamados computadores do tipo pad "inteligentes", televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de transmissão contínua de vídeo ou semelhantes. Em alguns casos, o dispositivo de fonte 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0046] O dispositivo de destino 14 pode receber os dados de vídeo codificados para serem decodificados através de um enlace 16. O enlace 16 pode compreender qualquer tipo de meio ou dispositivo com a capacidade de mover os dados de vídeo codificados a partir do dispositivo de fonte 12 para o dispositivo de destino 14. Em um exemplo, o enlace 16 pode compreender um meio de comunicação para habilitar o dispositivo de fonte 12 para transmitir dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, tal como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede com base em pacote, tal como uma rede de área local, uma rede de área ampla ou uma rede global tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações-base ou qualquer outro equipamento que possa ser útil para facilitar comunicação a partir do dispositivo de fonte 12 para o dispositivo de destino 14.
[0047] Alternativamente, dados codificados podem ser emitidos a partir da interface de emissão 22 para um dispositivo de armazenamento 34. De modo similar, dados codificados podem ser acessados a partir do dispositivo de armazenamento 34 pela interface de entrada 28. O dispositivo de armazenamento 34 pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados acessados localmente ou distribuídos tal como um disco rígido, discos do tipo Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou qualquer outro meio de armazenamento digital adequado para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento 34 pode corresponder a um servidor de arquivo ou um outro dispositivo de armazenamento intermediário que pode manter o vídeo codificado gerado pelo dispositivo de fonte 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenamento 34 através de transmissão contínua ou transmissão por download. O servidor de arquivo pode ser qualquer tipo de servidor com a capacidade de armazenar dados de vídeo codificados e transmitir tais dados de vídeo codificados para o dispositivo de destino 14. Exemplos de servidores de arquivo incluem um servidor da web (por exemplo, para um site da web), um servidor de FTP, dispositivos de armazenamento de rede anexados (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, que inclui uma conexão por Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão WiFi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento 34 pode ser uma transmissão por transmissão contínua, um transmissão por download ou uma combinação de ambas.
[0048] As técnicas desta revelação não são necessariamente limitadas a aplicações ou configurações sem fio. As técnicas podem ser aplicadas a codificação de vídeo em suporte de qualquer uma dentre uma variedade de aplicações multimídia, tais como transmissões públicas de televisão pelo ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo por transmissão contínua, por exemplo, através da Internet, codificação de vídeo digital para armazenar em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo de sentido único ou sentido duplo para suportar aplicações tais como transmissão contínua de vídeo, reprodução de vídeo, transmissão pública de vídeo e/ou telefonia por vídeo.
[0049] No exemplo da Figura 1, o dispositivo de fonte 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20 e uma interface de emissão 22. Em alguns casos, a interface de emissão 22 pode incluir um modulador/demodulador (modem) e/ou um transmissor. No dispositivo de fonte 12, a fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contém vídeo previamente capturado, uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo e/ou um sistema de gráficos de computador para gerar dados de gráficos de computador como a fonte de vídeo ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de fonte 12 e o dispositivo de destino 14 podem formar os chamados telefones com câmera ou telefones com vídeo. Entretanto, as técnicas descritas nesta revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas a aplicações sem fio e/ou com fio.
[0050] O vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. Os dados de vídeo codificados podem ser transmitidos diretamente para o dispositivo de destino 14 através da interface de emissão 22 do dispositivo de fonte 12. Os dados de vídeo codificados também (ou alternativamente) podem ser armazenados no dispositivo de armazenamento 34 para acesso mais tarde por dispositivo de destino 14 ou outro dispositivos, para decodificação e/ou reprodução.
[0051] Em AVC e HEVC, a conformidade de fluxo de bits e a conformidade de decodificador são especificadas como partes da especificação de HRD. O HRD é tipicamente necessário no lado do codificador de vídeo 20 para garantir conformidade de fluxo de bits, embora tipicamente não seja necessário no lado de decodificador. Dois tipos de fluxo de bits ou conformidade de HRD, a saber tipo I e tipo II, são especificados. Além disso, dois tipos de conformidade de decodificador, conformidade de decodificador de temporização de emissão e conformidade de decodificador de ordem de emissão são especificados.
[0052] O dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. A interface de entrada 28 de dispositivo de destino 14 recebe os dados de vídeo codificados sobre enlace 16. Os dados de vídeo codificados comunicados sobre enlace 16, ou fornecidos em dispositivo de armazenamento 34, podem incluir uma variedade de elementos de sintaxe gerados por codificador de vídeo 20 para uso por um decodificador de vídeo, tal como decodificador de vídeo 30, em decodificação dos dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento ou armazenados em um servidor de arquivo.
[0053] O dispositivo de exibição 32 pode ser integrado com o dispositivo de destino 14 ou externo ao mesmo. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e também ser configurado para fazer interface com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer um dentre uma variedade de dispositivos de exibição tais como um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED) ou um outro tipo de dispositivo de exibição.
[0054] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, tal como o padrão de codificação de vídeo de alta eficiência (HEVC) atualmente sob desenvolvimento, e pode se adaptar ao Modelo de Teste de HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões proprietários ou padrões da indústria, tal como o padrão ITU-T H.264, alternativamente chamado de MPEG-4, Part 10, codificação de vídeo avançada (AVC) ou extensões de tais padrões. As técnicas desta revelação, entretanto, não são limitadas a qualquer padrão de codificação em particular. Outros exemplos de padrões de compressão de vídeo incluem MPEG-2 e ITU-T H.263.
[0055] Embora não sejam mostrados na Figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser integrado com um codificador e decodificador de áudio e podem incluir unidades de MUX-DEMUX apropriadas, ou outro hardware e software, para manusear a codificação de ambos áudio e vídeo em uma transmissão de dados comum ou transmissões de dados separadas. Caso aplicável, em alguns exemplos, as unidades de MUX-DEMUX podem se adaptar ao protocolo de multiplexador de ITU H.223 ou a outros protocolos tal como o protocolo de datagrama de usuário (UDP).
[0056] O codificador de vídeo 20 e o decodificador de vídeo 30, cada um, podem ser implantados como qualquer um dentre uma variedade de conjunto de circuitos de codificador adequado, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica distinta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado e executar as instruções em hardware através do uso de um ou mais processadores para realizar as técnicas desta revelação. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, sendo que qualquer dos mesmos pode ser integrado como parte de um codificador/decodificador (CODEC) combinado em um dispositivo respectivo.
[0057] Conforme discutido acima, o JCT-VC desenvolveu o padrão HEVC. Os esforços de padronização de HEVC têm base em um modelo de um dispositivo de codificação de vídeo referido como o Modelo de Teste de HEVC (HM). O HM presume vários capacidades de codificação de dispositivos de vídeo adicionais em relação a dispositivos existentes de acordo com, por exemplo, ITU-T H.264/AVC. Por exemplo, enquanto que H.264 fornece nove modos de codificação de intra-predição, o HM pode fornecer uma quantidade de trinta e três modos de codificação de intra-predição.
[0058] Em geral, o modelo de trabalho do HM descreve que uma imagem ou um quadro de vídeo pode ser dividido em uma sequência de treeblocks ou unidades de codificação maiores (LCU) que incluem ambas amostras de luma e croma. Uma treeblock tem um propósito similar a um macrobloco do padrão H.264. Uma fatia inclui uma quantidade de treeblocks consecutivas em ordem de codificação. Uma imagem ou um quadro de vídeo pode ser partido em uma ou mais fatias. Cada treeblock pode ser dividida em unidades de codificação (CUs) de acordo com uma quadtree. Por exemplo, uma treeblock, como um nó raiz da quadtree, pode ser dividida em quatro nós filhos, e cada nó filho pode, por sua vez, ser um nó pai e ser dividido em outros quatro nós filhos. Um nó filho não dividido posterior, como um nó- folha da quadtree, inclui um nó de codificação, isto é, um bloco de vídeo codificado. Dados de sintaxe associados a um fluxo de bits codificado pode definir uma quantidade máxima de vezes que uma treeblock pode ser dividida e também pode definir um tamanho mínimo dos nós de codificação.
[0059] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformada (TUs) associadas com o nó de codificação. Um tamanho da CU corresponde, em geral, a um tamanho do nó de codificação e deve tipicamente ser quadrado em formato. O tamanho da CU pode estar na faixa a partir de 8x8 pixels a até o tamanho da treeblock com um máximo de 64x64 pixels ou mais. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Os dados de sintaxe associados com uma CU podem descrever, por exemplo, a partição da CU em uma ou mais PUs. Os modos de partição podem diferir entre se a CU é codificada em modo ignorado ou direto, codificada em modo de intra-predição ou codificada em modo de inter-predição. PUs podem ser partidas para não serem quadradas em formato. Os dados de sintaxe associados com uma CU também podem descrever, por exemplo, a partição da CU em uma ou mais TUs de acordo com uma quadtree. Uma TU pode ser quadrada ou não quadrada em formato.
[0060] O padrão HEVC permite transformações de acordo com TUs, que podem ser diferentes para CUs diferentes. As TUs são tipicamente dimensionadas com base no tamanho de PUs em uma dada CU definida para uma LCU partida, embora esse possa nem sempre ser o caso. As TUs são tipicamente do mesmo tamanho ou menores que as PUs. Em alguns exemplos, amostras residuais que correspondem a uma CU podem ser subdivididas em unidades menores através do uso de uma estrutura de quadtree conhecida como "residual quad tree" (RQT). Os nós-folha da RQT podem ser chamados de unidades de transformada (TUs). Valores de diferença de pixel associados com as TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantizados.
[0061] Em geral, uma PU inclui dados relacionados ao processo de predição. Por exemplo, quando a PU é codificada por intra-modo, a PU pode incluir dados que descrevem um modo de intra-predição para a PU. Como outro exemplo, quando a PU é codificada por inter-modo, a PU pode incluir dados que definem um vetor de movimento para a PU. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, precisão de um quarto de pixel ou precisão de um oitavo de pixel), uma imagem de referência para a qual o vetor de movimento aponta e/ou uma lista de imagem de referência (por exemplo, lista 0, lista 1 ou lista C) para o vetor de movimento.
[0062] Em geral, uma TU é usada para os processos de transformada e quantização. Uma dada CU que tem uma ou mais PUs também pode incluir uma ou mais unidades de transformada (TUs). Seguindo a predição, o codificador de vídeo 20 pode calcular valores residuais a partir do bloco de vídeo identificado pelo nó de codificação de acordo com a PU. O nó de codificação é então atualizado para fazer referência aos valores residuais ao invés do bloco de vídeo original. Os valores residuais compreendem valores de diferença de pixel que podem ser transformados em coeficientes de transformada, quantizados e submetidos à varredura através do uso das transformadas e outras informações de transformada especificadas nas TUs para produzir coeficientes de transformada serializados para codificação por entropia. O nó de codificação pode mais uma vez ser atualizado para fazer referência a esses coeficientes de transformada serializados. Esta revelação tipicamente usa o termo "bloco de vídeo" para fazer referência a um nó de codificação de uma CU. Em alguns casos específicos, esta revelação também pode usar o termo "bloco de vídeo" para fazer referência a uma treeblock, isto é, LCU, ou uma CU, que inclui um nó de codificação e PUs e TUs.
[0063] Uma sequência de vídeo tipicamente inclui uma série de imagens ou quadros de vídeo. Um grupo de imagens (GOP) inclui, em geral, uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em algum outro lugar, que descrevem uma quantidade de imagens inclusas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a fatia respectiva. O codificador de vídeo 20 opera tipicamente em blocos de vídeo em fatias de vídeo individuais de modo a codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação em uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis e podem diferir em tamanho de acordo com um padrão de codificação especificado.
[0064] Como um exemplo, o HM suporta predição em vários tamanhos de PU. Presumindo que o tamanho de uma CU particular é 2Nx2N, o HM suporta intra-predição em tamanhos de PU de 2Nx2N ou NxN, e inter-predição em tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N ou NxN. O HM também suporta partição assimétrica para inter-predição em tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Em partição assimétrica, uma direção de uma CU não é partida, enquanto a outra direção é partida em 25% e 75%. A porção da CU que corresponde à partição de 25% é indicada por um "n" seguido por uma indicação de "Cima", "Baixo", "Esquerda" ou "Direita". Desse modo, por exemplo, "2NxnU" se refere a uma CU de 2Nx2N que é partido horizontalmente com uma PU de 2Nx0,5N em cima e uma PU de 2Nxl,5N em baixo.
[0065] Nesta revelação, "NxN" e "N por N" podem ser usados de forma intercambiável para fazer referência às dimensões de pixel de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16x16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Do mesmo modo, um bloco de NxN tem, em geral, N pixels em uma direção vertical e N pixels em uma direção horizontal, em que N representa um valor de número inteiro não negativo. Os pixels em um bloco podem ser dispostos em fileiras e colunas. Além disso, os blocos não precisam ter, necessariamente, a mesma quantidade de pixels na direção horizontal como na direção vertical. Por exemplo, os blocos podem compreender NxM pixels, em que M não é necessariamente igual a N.
[0066] Seguindo a codificação intra-preditiva ou inter-preditiva através do uso das PUs de uma CU, o codificador de vídeo 20 pode calcular dados residuais para que as transformadas especificadas por TUs da CU sejam aplicadas. Os dados residuais podem corresponder a diferenças de pixel entre pixels da imagem descodificada e valores de predição que correspondem às CUs. O codificador de vídeo 20 pode formar os dados residuais para a CU e então transformar os dados residuais para produzir coeficientes de transformada.
[0067] Seguindo quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode realizar a quantização dos coeficientes de transformada. A quantização se refere, em geral, a um processo em que coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes, o que fornece compressão adicional. O processo de quantização pode reduzir a profundidade de bits associada com alguns ou todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para baixo para um valor de m bits durante a quantização, em que n é maior que m.
[0068] Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para submeter os coeficientes de transformada quantizados à varredura para produzir um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode realizar um dispositivo de varredura adaptável. Após realizar a varredura dos coeficientes de transformada quantizados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com codificação de comprimento variável adaptável por contexto (CAVLC), codificação aritmética binária adaptável por contexto (CABAC), codificação aritmética binária adaptável por contexto com base em sintaxe (SBAC), codificação por entropia de partição de intervalo de probabilidade (PIPE) ou uma outra metodologia de codificação por entropia. O codificador de vídeo 20 também pode codificar por entropia elementos de sintaxe associados com os dados de vídeo codificados para uso por decodificador de vídeo 30 em decodificação dos dados de vídeo.
[0069] Para realizar CABAC, o codificador de vídeo 20 pode atribuir um contexto em um modelo de contexto a um símbolo a ser transmitido. O contexto pode se referir a, por exemplo, se valores vizinhos do símbolo são diferentes de zero ou não. Para realizar CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. Palavras de código em VLC podem ser construídas de modo que códigos relativamente mais curtos correspondam a símbolos mais prováveis, enquanto códigos mais compridos corresponda a símbolos menos prováveis. Desse modo, o uso de VLC pode alcançar uma economia de bits em comparação , por exemplo, ao uso de palavras de código de comprimento igual para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0070] Em alguns exemplos, o dispositivo de destino 14 pode implantar um método de processamento de dados de vídeo. Por exemplo, o decodificador de vídeo 30 pode receber uma unidade de acesso que tem uma imagem de RAP. O decodificador de vídeo também pode receber uma ou mais unidades de acesso subsequentes após a unidade de acesso ter a imagem de RAP. No caso em que uma unidade de acesso subsequente dentre a uma ou mais unidades de acesso subsequentes não tem imagens associadas de RASL, o decodificador de vídeo 30 troca um tempo de remoção de armazenamento temporário de imagem precoce com base em um desvio de atraso de remoção de armazenamento temporário de imagem. Por exemplo, uma mensagem de período de armazenamento temporário SEI pode incluir um valor de desvio de atraso de CPB, por exemplo, cpb_delay_offset[ i ] que especifica, para o i-ésimo CPB, um desvio a ser usado. O desvio pode ser usado, por exemplo, em derivação dos tempos de remoção de CPB nominais de unidades de acesso seguindo, em ordem de decodificação, a unidade de acesso de CRA ou BLA associada com a mensagem de período de armazenamento temporário SEI quando as unidades de acesso de RASL associadas com a unidade de acesso de CRA ou BLA não estiverem presentes. O elemento de sintaxe pode ter um comprimento em bits gerado por au_cpb_removal_delay_length_minusl + 1 e pode ser, por exemplo, em unidades de um relógio de 90 kHz.
[0071] Em outros exemplos, o dispositivo de destino 14 pode implantar um outro método de processamento de dados de vídeo. Por exemplo, o decodificador de vídeo 30 pode receber uma unidade de acesso que tem uma imagem de RAP, em que unidades de acesso associadas que contêm imagens anteriores ignoradas de acesso aleatório (RASL) não são recebidas. O decodificador de vídeo 30 pode inicializar um tempo de remoção de armazenamento temporário de imagem e um desvio de atraso de remoção de armazenamento temporário de imagem em resposta ao recebimento da unidade de acesso e não recebimento das unidades de acesso associadas que contêm imagens de RASL.
[0072] Em outro exemplo, o decodificador de vídeo 30 pode receber uma unidade de acesso que tem uma imagem de RAP, em que unidades de acesso associadas que contêm imagens de RASL não são recebidas. O decodificador de vídeo 30 também pode inicializar um tempo de remoção de armazenamento temporário de imagem e um desvio de atraso de remoção de armazenamento temporário de imagem em resposta ao recebimento da unidade de acesso e não recebimento das unidades de acesso associadas que contêm imagens de RASL.
[0073] A Figura 2 é um diagrama de blocos que ilustra um codificador de vídeo exemplificativo 20 que pode implantar as técnicas descritas nesta revelação. O codificador de vídeo 20 pode realizar intra e inter- codificação de blocos de vídeo em fatias de vídeo. A intra- codificação depende de predição espacial para reduzir ou remover redundância espacial em vídeo em uma dada imagem ou quadro de vídeo. A inter-codificação depende de predição temporal para reduzir ou remover redundância temporal em vídeo em quadros ou imagens adjacentes de uma sequência de vídeo. O intra-modo (I modo) pode fazer referência a qualquer um dentre vários modos de compressão com base espacial. Os inter-modos, tal como predição unidirecional (P modo) ou bipredição (B modo), podem fazer referência a qualquer um dentre vários modos de compressão com base temporal.
[0074] No exemplo da Figura 2, o codificador de vídeo 20 inclui uma unidade de partição 35, uma unidade de processamento de predição 41, uma memória de imagem de referência 64, um somador 50, uma unidade de processamento de transformada 52, uma unidade de quantização 54 e uma unidade de codificação por entropia 56. A unidade de processamento de predição 41 inclui uma unidade de estimação de movimento 42, uma unidade de compensação de movimento 44 e uma unidade de processamento de intra- predição 46. Para reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui uma unidade de quantização inversa 58, uma unidade de processamento de transformada inversa 60 e um somador 62. Um filtro de desbloqueio (não mostrado na Figura 2) também pode ser incluído para filtrar contornos de bloco para remover artefatos de blocagem a partir de vídeo reconstruído. Caso desejado, o filtro de desbloqueio iria tipicamente filtrar a emissão de somador 62. Os filtros de laço adicionais (em laço ou pós laço) também podem ser usados além do filtro de desbloqueio.
[0075] Conforme mostrado na Figura 2, o codificador de vídeo 20 recebe dados de vídeo, e a unidade de partição 35 parte os dados em blocos de vídeo. Essa partição também pode incluir partição em fatias, ladrilhos ou outras unidades maiores, assim como partição de bloco de vídeo, por exemplo, de acordo com uma estrutura de quadtree de LCUs e CUs. O codificador de vídeo 20 ilustra, em geral, os componentes que codificam blocos de vídeo em uma fatia de vídeo a ser codificada. A fatia pode ser dividida em múltiplos blocos de vídeo (e possivelmente em conjuntos de blocos de vídeo chamados de ladrilhos). A unidade de processamento de predição 41 pode selecionar um dentre e uma pluralidade de modos de codificação possíveis, tal como um dentre uma pluralidade de modos de intra-codificação ou um dentre uma pluralidade de modos de inter-codificação, para o bloco de vídeo atual com base em resultados de erro (por exemplo, taxa de codificação e o nível de distorção). A unidade de processamento de predição 41 pode fornecer bloco intra ou inter-codificado resultante para o somador 50 para gerar dados de bloco residual e para somador 62 para reconstruir o bloco codificado para uso como uma imagem de referência.
[0076] A unidade de processamento de intra- predição 46 na unidade de processamento de predição 41 pode realizar a codificação intra-preditiva do bloco de vídeo atual em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia como o bloco atual a ser codificado para fornecer compressão espacial. A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 na unidade de processamento de predição 41 realizam a codificação inter-preditiva do bloco de vídeo atual em relação a um ou mais blocos preditivos em uma ou mais imagens de referência para fornecer compressão temporal.
[0077] A unidade de estimação de movimento 42 pode ser configurada para determinar o modo de inter- predição para uma fatia de vídeo de acordo com um padrão predeterminado para uma sequência de vídeo. O padrão predeterminado pode designar fatias de vídeo na sequência como fatias P ou fatias B. A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, porém são ilustradas separadamente para propósitos conceituais. A estimatição de movimento, realizada pela unidade de estimação de movimento 42, é o processo de geração de vetores de movimento, que estimam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar a disposição de uma PU de um bloco de vídeo em uma imagem ou quadro de vídeo atual em relação a um bloco de predição em uma imagem de referência.
[0078] Um bloco de predição é um bloco que é encontrado por ser proximamente compatível com a PU do bloco de vídeo a ser codificado em termos de diferença de pixel, que pode ser determinada pela soma de diferença absoluta (SAD), soma de diferença quadrada (SSD) ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores referentes às posições de pixel de números sub-inteiros de imagens de referência armazenadas em memória de imagem de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de um quarto de posições de pixel, um oitavo de posições de pixel ou outro fracionamento de posições de pixel da imagem de referência. Portanto, a unidade de estimação de movimento 42 pode realizar uma busca de movimento em relação às posições de pixel completas e fracionamento de posições de pixel e emitir um vetor de movimento com precisão de fracionamento de pixel.
[0079] A unidade de estimação de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia inter-codificada através da comparação da posição da PU para a posição de um bloco de predição de uma imagem de referência. A imagem de referência pode serselecionada a partir de uma primeira lista de imagem de referência (lista 0) ou uma segunda lista de imagem de referência (lista 1), em que cada uma das quais identifica uma ou mais imagens de referência armazenadas em memória de imagem de referência 64. A unidade de estimação de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e a unidade de compensação de movimento 44.
[0080] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco de predição com base no vetor de movimento determinado por estimação de movimento, que possivelmente realiza interpolações para precisão de subpixel. Mediante recebimento do vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagem de referência. O codificador de vídeo 20 forma um bloco de vídeo residual através da subtração de valores de pixel do bloco de predição a partir dos valores de pixel do bloco de vídeo atual que é codificado, que forma valores de diferença de pixel. Os valores de diferença de pixel formam dados residuais para o bloco e podem incluir ambos os componentes de diferença de luma e croma. O somador 50 representa o componente ou componentes que realizam essa operação de subtração. A unidade de compensação de movimento 44 também pode gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para uso por decodificador de vídeo 30 em decodificação dos blocos de vídeo da fatia de vídeo.
[0081] A unidade de processamento de intra- predição 46 pode intra-predizer um bloco atual, como uma alternativa para a inter-predição realizada pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44, conforme descrito acima. Em particular, a unidade de processamento de intra-predição 46 pode determinar um modo de intra-predição para uso para codificar um bloco atual. Em alguns exemplos, a unidade de processamento de intra-predição 46 pode codificar um bloco atual através do uso de vários modos de intra-predição, por exemplo, durante passos de codificação separados, e a unidade de processamento de intra-predição 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intra-predição apropriado para uso a partir dos modos testados. Por exemplo, a unidade de processamento de intra-predição 46 pode calcular valores de distorção por taxa através do uso de uma análise de distorção por taxa para os vários modos testados de intra-predição, e selecionar o modo de intra-predição que tem as melhores características de distorção por taxa dentre os modos testados. A análise de distorção por taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco descodificado original que foi codificado para produzir o bloco codificado, assim como uma taxa de bits (que é, uma quantidade de bits) usada para produzir o bloco codificado. A unidade de processamento de intra-predição 46 pode calcular razões a partir das distorções e taxas para os vários blocos codificados para determinar que modo de intra-predição exibe o melhor valor de distorção por taxa para o bloco.
[0082] De qualquer modo, após selecionar um modo de intra-predição para um bloco, a unidade de processamento de intra-predição 46 pode fornecer informações indicativas do modo de intra-predição selecionado para o bloco à unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar as informações que indicam o modo de intra- predição selecionado de acordo com as técnicas desta revelação. O codificador de vídeo 20 pode incluir nos dados de configuração de fluxo de bits transmitidos, que podem incluir uma pluralidade de tabelas de índice de modo de intra-predição e uma pluralidade de tabelas de índice de modo de intra-predição modificadas (também chamadas de tabelas de mapeamento de palavra de código), definições de contextos de codificação para vários blocos e indicações de um modo de intra-predição mais provável, uma tabela de índice de modo de intra-predição e uma tabela de índice de modo de intra-predição modificada para uso para cada do contextos.
[0083] Após a unidade de processamento de predição 41 gerar o bloco de predição para o bloco de vídeo atual através de tanto inter-predição como intra-predição, o codificador de vídeo 20 forma um bloco de vídeo residual através da subtração do bloco de predição a partir do bloco de vídeo atual. Os dados de vídeo residuais no bloco residual podem ser incluídos em uma ou mais TUs e aplicados à unidade de processamento de transformada 52. A unidade de processamento de transformada 52 transforma os dados de vídeo residuais em coeficientes de transformada residuais através do uso de uma transformada, tal como um transformada discreta de cosseno (DCT) ou uma transformada conceitualmente similar. A unidade de processamento de transformada 52 pode converter os dados de vídeo residuais a partir de um domínio de pixel em um domínio de transformada, tal como um domínio de frequência.
[0084] A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para unidade de quantização 54. A unidade de quantização 54 quantiza os coeficiente de transformada para reduzir adicionalmente a taxa de bits. O processo de quantização pode reduzir a profundidade de bits associada com alguns ou todos os coeficientes. O grau de quantização pode ser modificado através do ajuste de um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode então realizar uma varredura da matriz que inclui os coeficientes de transformada quantizada. Alternativamente, a unidade de codificação por entropia 56 pode realizar a varredura.
[0085] Seguindo a quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformada quantizada. Por exemplo, a unidade de codificação por entropia 56 pode realizar codificação de comprimento variável adaptável por contexto (CAVLC), codificação aritmética binária adaptável por contexto (CABAC), codificação aritmética binária adaptável por contexto com base em sintaxe (SBAC), codificação por entropia de partição de intervalo de probabilidade (PIPE) ou uma outra metodologia ou técnica de codificação por entropia. Seguindo a codificação por entropia pela unidade de codificação por entropia 56, o fluxo de bits codificado pode ser transmitido para o decodificador de vídeo 30 ou arquivado para mais tarde transmissão ou recuperação através do decodificador de vídeo 30. A unidade de codificação por entropia 56 também pode codificar por entropia os vetores de movimento e os outros elementos de sintaxe para a atual fatia de vídeo que é codificada.
[0086] A unidade de quantização inversa 58 e a unidade de processamento de transformada inversa 60 aplicam quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel para mais tarde usar como um bloco de referência de uma imagem de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência através da adição do bloco residual a um bloco de predição de uma das imagens de referência em uma das listas de imagem de referência. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para valores de cálculo de número sub-inteiro de pixel para uso em estimação de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado por movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de referência para armazenar na memória de imagem de referência 64 (algumas vezes referida como armazenamento temporário de imagem decodificada (DPB)). O bloco de referência pode ser usado pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência para realizar a inter-predição em um bloco em uma imagem ou quadro de vídeo subsequente.
[0087] Conforme discutido acima, em AVC e HEVC, a conformidade de fluxo de bits e a conformidade de decodificador são especificadas como partes da especificação de HRD. Embora o HRD seja considerado algum tipo de decodificador, o HRD é tipicamente necessário no codificador de vídeo 20 para garantir conformidade de fluxo de bits, enquanto que tipicamente não é necessário no lado de decodificador. Dois tipos de fluxo de bits ou conformidade de HRD, a saber tipo I e tipo II, são especificados. Além disso, dois tipos de conformidade de decodificador, conformidade de decodificador de temporização de emissão e conformidade de decodificador de ordem de emissão, são especificados.
[0088] O HRD é tipicamente inicializado em uma imagem de ponto de acesso aleatório (RAP). Em ambos HEVC e AVC, uma vez que o HRD é inicializado, o mesmo continua a operar até o fim de um fluxo de bits sem reinicialização.
[0089] Em HEVC WD9, se o HRD inicializa em uma unidade de acesso de CRA ou BLA essa unidade de acesso é chamada de unidade de acesso 0. Em alguns exemplos, o codificador de vídeo 20 pode transmitir ou armazenar ambos o padrão e o atraso de remoção de CPB inicial alternativo e o desvio de atraso associado com a unidade de acesso 0 a ser usada nas operações de HRD. O codificador de vídeo 20 pode então sinalizar o padrão e o atraso de remoção de CPB inicial alternativo e o desvio de atraso associado com a unidade de acesso 0. Se as unidades de acesso de RASL associadas com a unidade de acesso 0 não estiverem presentes, o atraso de remoção de CPB inicial alternativo e desvio de atraso são escolhidos, de outro modo (as unidades de acesso de RASL associadas com a unidade de acesso 0 estão presentes), o atraso de remoção de CPB inicial padrão e desvio de atraso são escolhidos. O conjunto de atraso de remoção de CPB inicial e desvio de atraso escolhido podem, então, ser sinalizados no fluxo de bits. O conjunto de atraso de remoção de CPB inicial e desvio de atraso escolhido também podem, então, ser usados até o fim do fluxo de bits. Essas informações podem ser sinalizadas, por exemplo, a partir do codificador de vídeo 20, através do uso de uma mensagem de período de armazenamento temporário SEI que inclui um valor de desvio de atraso de CPB, por exemplo, cpb_delay_offset[ i ] que especifica, para o i- ésimo CPB, um desvio a ser usado.
[0090] Em um exemplo, o codificador de vídeo 20 pode sinalizar um desvio de atraso de remoção de CPB para cada unidade de acesso de CRA ou BLA. Para cada unidade de acesso de CRA ou BLA para que as imagens associadas de RASL não estejam presentes, independentemente de se o HRD inicializa na unidade de acesso de CRA ou BLA, o tempo de remoção de CBP de cada das unidades de acesso que segue a unidade de acesso de CRA ou BLA em ordem de decodificação é trocado, por exemplo, no decodificador de vídeo 30, precoce pelo desvio de atraso de remoção de CPB. A seleção entre o atraso de remoção de CPB inicial alternativo e padrão e desvio de atraso para a unidade de acesso 0 é realizada do mesmo modo como em HEVC WD9. Alternativamente, o atraso de remoção de CPB inicial padrão e desvio de atraso para a unidade de acesso 0 são sempre escolhidos e consequentemente o atraso de remoção de CPB inicial alternativo e consequentemente o atraso de remoção de CPB inicial alternativo e desvio de atraso podem não ser sinalizados para unidades de acesso de CRA ou BLA a menos que parâmetros de CPB a nível de sub-imagem estejam presentes e então o atraso de remoção de CPB inicial alternativo e desvio de atraso são usados, por exemplo, pelo decodificador de vídeo 30, para o propósito de operações de HRD a nível de sub-imagem.
[0091] Em alguns exemplos, o codificador de vídeo 20 pode codificar um período de mensagem de informações de aprimoramento suplementar (SEI) de período de armazenamento temporário, por exemplo, com sintaxe e semânticas conforme descrito no item secundário C.2.3 de HEVC WD9 (temporização de decodificação e remoção de unidade de decodificação de unidade de decodificação). O codificador de vídeo 20 pode implantar as mudanças descritas no presente documento em conjunto com, por exemplo, HEVC WD9. Outras partes não mencionadas podem ser as mesmas como em HEVC WD9, ou outros padrões de HEVC, tais como padrões de HEVC subsequentes.
[0092] A Figura 3 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo 30 que pode implantar as técnicas descritas nesta revelação. No exemplo da Figura 3, o decodificador de vídeo 30 inclui um armazenamento temporário de imagem codificada (CPB) 78, uma unidade de decodificação por entropia 80, uma unidade de processamento de predição 81, uma unidade de quantização inversa 86, uma unidade de processamento de transformação inversa 88, um somador 90 e um armazenamento temporário de imagem decodificada (DPB) 92. A unidade de processamento de predição 81 inclui a unidade de compensação de movimento 82 e a unidade de processamento de intra-predição 84. O decodificador de vídeo 30 pode, em alguns exemplos, realizar um passo de decodificação geralmente recíproco ao passo de codificação descrito em relação ao codificador de vídeo 20 da Figura 2.
[0093] CPB 78 armazena imagens codificadas a partir do fluxo de bits de imagem codificada. Em um exemplo, CPB 78 é um armazenamento temporário primeiro para dentro primeiro para fora contendo unidades de acesso (AU) em ordem de decodificação. Uma AU é conjunto de unidades de camada de abstração de rede (NAL) que são associadas uma com a outra de acordo com uma regra de classificação especificada, são consecutivas em ordem de decodificação, e contêm exatamente uma imagem codificada. A ordem de decodificação é a ordem na qual as imagens são decodificadas, e pode diferir da ordem na qual as imagens são exibidas (isto é, a ordem de exibição). A operação do CPB pode ser especificada por um decodificador de referência hipotético (HRD) em HEVC WD9.
[0094] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados a partir do codificador de vídeo 20. A unidade de decodificação de entropia 80 de entropia de decodificador de vídeo 30 decodifica o fluxo de bits para gerar coeficientes quantizados, vetores de movimento, e outros elementos de sintaxe. A unidade de decodificação de entropia 80 encaminha os vetores de movimento e outros elementos de sintaxe para a unidade de processamento de predição 81. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou o nível de bloco de vídeo.
[0095] Quando a fatia de vídeo é codificada como uma fatia intra-codificada (I), a unidade de processamento de intra predição 84 de unidade de processamento de predição 81 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intra predição sinalizado e dados de blocos previamente decodificados do quadro atual ou imagem. Quando o quadro de vídeo é codificado como uma fatia inter- codificada (isto é, B, P ou GPB), a unidade de compensação de movimento 82 de unidade de processamento de predição 81 produz blocos preditivos para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 80. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagem de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, Lista 0 e Lista 1, com o uso de técnicas de construção padrão com base em imagens de referência armazenadas em DPB 92.
[0096] A unidade de compensação de movimento 82 determina as informações de predição para um bloco de vídeo da fatia de vídeo atual analisando-se os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 82 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra ou inter-predição) usado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de inter-predição (por exemplo, fatia B, fatia P ou fatia GPB), informações de construção para uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo inter- codificado da fatia, situação de inter-predição para cada bloco de vídeo inter-codificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0097] A unidade de compensação de movimento 82 também pode realizar interpolação com base em filtros de interpolação. A unidade de compensação de movimento 82 pode usar filtros de interpolação conforme usado pelo codificador de vídeo 20 durante codificação dos blocos de vídeo para calcular valores interpolados para pixels de número inteiro sub de blocos de referência. Nesse caso, a unidade de compensação de movimento 82 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e usar os filtros de interpolação para produzir blocos preditivos.
[0098] A unidade de quantização inversa 86 quantiza de modo inverso, isto é, de-quantiza, os coeficientes de transformada quantizados fornecidos no fluxo de bits e decodificados pela unidade de decodificação de entropia 80. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização calculado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, igualmente, um grau de quantização inversa que deve ser aplicado. A unidade de processamento de transformada inversa 88 aplica uma transformada inversa, por exemplo, um DCT inverso, uma transformada de número inteiro inverso, ou um processo de transformada inversa conceitualmente similar, aos coeficientes de transformada a fim de produzir blocos residuais no domínio de pixel.
[0099] Após a unidade de compensação de movimento 82 gerar o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado somando-se os blocos residuais a partir de unidade de processamento de transformada inversa 88 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 82. O somador 90 representa o componente ou componentes que realizam essa operação de soma. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados a fim de remover artefatos de blocagem. Outros filtros de loop (tanto no loop de codificação ou após o loop de codificação) também podem ser usados para suavizar as transições de pixel ou, de outra maneira, aperfeiçoar a qualidade de vídeo. Os blocos de vídeo decodificados em um determinado quadro ou imagem são, então, armazenados em DPB 92, que armazena imagens de referência usadas para compensação de movimento subsequente. DPB 92 também armazena vídeo decodificado para apresentação posterior em um dispositivo de exibição, tal como dispositivo de exibição 32 da Figura 1. Como CPB 78, em um exemplo, a operação de DPB 92 pode ser especificada pelo HRD em HVEC WD9. CPB 78 e DPB 92 podem compreender módulos de unidades de memória, ou podem compreender a mesma memória partida em diferentes regiões para definir CPB 78 e DPB 92.
[0100] Na seção a seguir, a revelação irá discutir recursos de HEVC de acesso aleatório, comutação de fluxo de bits, e imagens de ponto de acesso aleatório (RAP).
[0101] Acesso aleatório se refere a uma decodificação de um fluxo de bits de vídeo que se inicia a partir de uma imagem codificada que não é a primeira imagem codificada no fluxo de bits. O acesso aleatório a um fluxo de bits é necessário em muitas aplicações de vídeo, tais como difusão e transmissão, por exemplo, para usuários para sintonizar a um programa a qualquer momento, para comutar entre diferentes canais, para pular para partes específicas do vídeo, ou comutar para um fluxo de bits diferente para adaptação de fluxo (por exemplo, adaptação da taxa de bit, taxa de quadro, resolução espacial, e assim por diante). O acesso aleatório é capacitado inserindo-se imagens de acesso aleatório ou pontos de acesso aleatório (RAPs), muitas vezes em intervalos regulares, no fluxo de bits de vídeo.
[0102] A união de fluxo de bits se refere à concatenação de dois ou mais fluxos de bits ou partes dos mesmos. Por exemplo, um primeiro fluxo de bits pode ser anexado com um segundo fluxo de bits, possivelmente com algumas modificações em qualquer um ou ambos os fluxos de bits para gerar um fluxo de bits unido. A primeira imagem codificada no segundo fluxo de bits é também denominada o ponto de união. Portanto, as imagens após o ponto de união no fluxo de bits unido foram originadas a partir do segundo fluxo de bits enquanto as imagens que precedem o ponto de união no fluxo de bits unido foram originadas do primeiro fluxo de bits.
[0103] A união de fluxos de bits é realizado por splicers de fluxo de bits. Os splicers de fluxo de bits são frequentemente de peso leve (isto é, menos complexo ou menos capaz em termos de processamento) e muito menos inteligente do que os codificadores de vídeo 20. Por exemplo, os mesmos podem não ser equipados com capacidades de codificação e decodificação de entropia.
[0104] A comutação de fluxo de bits pode ser usada em ambientes de transmissão adaptável. Uma operação de comutação de fluxo de bits em determinadas imagens no fluxo de bits comutados é, de modo eficaz, uma operação de união de fluxo de bits em que o ponto de união é o ponto de comutação de fluxo de bits, isto é, a primeira imagem no fluxo de bits comutada.
[0105] A seção a seguir irá discutir imagens de RAP. Um exemplo de uma imagem de RAP é uma imagem de renovação de decodificação instantânea (IDR). Na imagem de IDR, conforme especificado em AVC ou HEVC, pode ser usado para acesso aleatório. Entretanto, visto que as imagens que seguem uma imagem de IDR em ordem de decodificação não podem usar imagens decodificadas antes da imagem de IDR como referências (por exemplo, para inter-predição), fluxos de bits que dependem de imagens de IDR para acesso aleatório podem ter eficiência de codificação significativamente inferior.
[0106] Para aperfeiçoar a eficiência de codificação, o conceito de imagens de acesso aleatório limpo (CRA) foi introduzido em HEVC para permitir que as imagens que seguem uma imagem de CRA em ordem de decodificação, mas precedem a mesma em ordem de saída, usem imagens decodificadas antes das imagens de CRA como uma referência. As imagens que seguem uma imagem de CRA em ordem de decodificação, mas precedem a imagem de CRA em ordem de saída, são denominadas imagens anteriores associadas com a imagem de CRA (ou imagens anteriores da imagem de CRA). As imagens anteriores de uma imagem de CRA são corretamente decodificáveis se a decodificação iniciar a partir de uma imagem de IDR ou CRA antes da imagem de CRA atual. Entretanto, as imagens anteriores de uma imagem de CRA podem não ser decodificáveis quando o acesso aleatório a partir da imagem de CRA ocorre; portanto, as imagens anteriores são tipicamente descartadas durante a decodificação de acesso aleatório. Para evitar a propagação de erro a partir de imagens de referência que podem não estar disponíveis dependendo de onde a decodificação iniciar, uma proposta para HEVC especifica que todas as imagens que seguem uma imagem de CRA tanto em ordem de decodificação como em ordem de saída não devem usar nenhuma imagem que precede a imagem de CRA em ordem de decodificação ou ordem de saída (que inclui as imagens anteriores) como uma referência.
[0107] O conceito de uma imagem de acesso de enlace rompido (BLA) foi adicionalmente introduzido em HEVC após a introdução de imagens de CRA, e é baseado no conceito de imagens de CRA. Uma imagem de BLA tipicamente se origina de união de fluxo de bits na posição de uma imagem de CRA, e no fluxo de bits unido, a imagem de CRA de ponto de união é alterada para uma imagem de BLA.
[0108] As imagens de IDR, imagens de CRA e imagens de BLA são coletivamente chamadas de imagens de ponto de acesso aleatório (RAP). Uma diferença significativa entre as imagens de BLA e imagens de CRA é conforme a seguir. Para uma imagem de CRA, as imagens anteriores associadas são corretamente decodificáveis se a decodificação iniciar a partir de uma imagem de RAP antes da imagem de CRA em ordem de decodificação, e pode não ser corretamente decodificável quando o acesso aleatório a partir da imagem de CRA ocorre (isto é, quando a decodificação inicia a partir da imagem de CRA ou, em outras palavras, quando a imagem de CRA é a primeira imagem no fluxo de bits). Para uma imagem de BLA, as imagens anteriores associadas podem não ser decodificáveis em todos os casos, até mesmo quando a decodificação inicia a partir de uma imagem de RAP antes da imagem de BLA em ordem de decodificação.
[0109] Para uma imagem de CRA ou BLA particular, algumas das imagens anteriores associadas são corretamente decodificáveis até mesmo quando a imagem de CRA ou BLA é a primeira imagem no fluxo de bits. Essas imagens anteriores são denominadas imagens anteriores decodificáveis (DLPs) ou imagens anteriores decodificáveis de acesso aleatório (RADL). Outras imagens anteriores são denominadas imagens anteriores não decodificáveis (NLPs), marcada para imagens descartadas (TFD) ou imagens anteriores ignoradas de acesso aleatório (RASL).
[0110] HEVC WD9 especifica os conceitos de um fluxo de bits como uma sequência de bits que forma a representação de imagens codificadas e dados associados que formam uma ou mais sequências de vídeo codificadas. O fluxo de bits é um termo usado de modo coletivo para se referir tanto a um fluxo de unidade NAL ou um fluxo de byte. HEVC WD9 especifica os conceitos de um fluxo elementar (ES) como uma sequência de um ou mais fluxos de bits.
[0111] Um fluxo elementar que consiste em dois ou mais fluxos de bits terá sido tipicamente formado unindo entre si dois ou mais fluxos de bits (ou partes dos mesmos). Se um fluxo elementar contiver múltiplos fluxos de bits, exceto o último fluxo de bits, ao final de cada um dos outros fluxos de bits há tipicamente um fim de unidade NAL de fluxo de bits (EOS).
[0112] Os padrões de codificação de vídeo tipicamente incluem uma especificação de um modelo de armazenamento temporário de vídeo. Em AVC e HEVC, o modelo de armazenamento temporário é denominado o decodificador de referência hipotético (HRD), que inclui um modelo de armazenamento temporário de ambos o armazenamento temporário de imagem codificada (CPB) e o armazenamento temporário de imagem decodificada (DPB). Os comportamentos de CPB e DPB são matematicamente especificados. O HRD impõe diretamente restrições em temporização diferente, tamanhos de armazenamento temporário e taxas de bits, e impõe indiretamente restrições em características fluxo de bits e estatísticas. Um conjunto completo de parâmetros de HRD incluem cinco parâmetros básicos: atraso de remoção de CPB inicial, tamanho de CPB, taxa de bits, atraso de saída de DPB inicial e tamanho de DPB.
[0113] Em AVC e HEVC, a conformidade de fluxo de bits e a conformidade de decodificador são especificadas como partes da especificação de HRD. Embora seja denominado um decodificador, a especificação de HRD é tipicamente necessária no lado de codificador para garantir conformidade de fluxo de bits. Dois tipos de conformidade de HRD ou fluxo de bits, a saber, Tipo I e Tipo II, são especificados. Além disso, dois tipos de conformidade de decodificador (conformidade de decodificador de temporização de saída e conformidade de decodificador de ordem de saída) são especificados.
[0114] O HRD é tipicamente inicializado em uma imagem de ponto de acesso aleatório. Em ambos HEVC e AVC, uma vez que o HRD é inicializado, o mesmo continua a operar até o fim de um fluxo de bits sem reinicialização.
[0115] Em HEVC WD9, se o HRD inicializar em uma unidade de acesso de CRA ou BLA (essa unidade de acesso é chamada de unidade de acesso 0), tanto o padrão ou o atraso de remoção de CPB inicial alternativo e deslocamento de atraso associados com a unidade de acesso 0 são escolhidos para serem usados nas operações de HRD, dependendo de se as unidades de acesso de RASL associadas com a unidade de acesso 0 estão presentes. Se as unidades de acesso de RASL associadas com a unidade de acesso 0 não estão presentes, o atraso de remoção de CPB inicial alternativo e deslocamento de atraso são escolhidos; de outra maneira (isto é, as unidades de acesso de RASL associadas com a unidade de acesso 0 estão presentes), o atraso de remoção de CPB inicial padrão e o deslocamento de atraso são escolhidos. O conjunto escolhido de atraso de remoção de CPB inicial e deslocamento de atraso é, então, usado pelo decodificador de vídeo 30 até o fim do fluxo de bits.
[0116] No Pedido de Patente no U.S. 13/664.279, depositado em 30 de outubro de 2012, todo o conteúdo do qual está incorporado ao presente documento a título de referência, o método a seguir é descrito. Um deslocamento de atraso de remoção de CPB pode ser sinalizado para cada unidade de acesso de CRA. Se o HRD inicializar em tal unidade de acesso de CRA (também chamada de unidade de acesso 0), e as imagens de RASL associadas não estiverem presentes, o tempo de remoção de CPB de cada uma das unidades de acesso seguindo a unidade de acesso de CRA em ordem de decodificação é alterado precocemente pelo deslocamento de atraso de remoção de CPB.
[0117] As técnicas de HRD em HEVC WD9 exibem os problemas a seguir. Primeiro, supondo que o conjunto escolhido de atraso de remoção de CPB inicial e deslocamento de atraso se aplica ao caso em que todas as unidades de acesso de CRA ou BLA, se presentes, seguindo a unidade de acesso 0 em ordem de decodificação no fluxo de bits, têm as unidades de acesso de RASL das mesmas associadas presentes. As técnicas atuais de HEVC WD9 só funcionarão corretamente se não houver unidade de acesso de CRA ou BLA que segue a unidade de acesso 0 em ordem de decodificação no fluxo de bits, e para a qual as unidades de acesso de RASL associadas não estão presentes. Entretanto, se houver tal unidade de acesso de CRA ou BLA presente no fluxo de bits, o CPB pode exceder após a primeira tal unidade de acesso de CRA ou BLA e, consequentemente, resultados de decodificação inesperados podem ocorrer.
[0118] De maneira similar, supondo que o conjunto escolhido de atraso de remoção de CPB inicial e deslocamento de atraso se aplica ao caso em que todas as unidades de acesso CRA ou BLA, se presentes, seguindo a unidade de acesso 0 em ordem de decodificação no fluxo de bits, não têm as unidades de acesso de RASL das mesmas associadas presentes. As técnicas atuais de HEVC WD9 só funcionarão corretamente se não houver unidade de acesso de CRA ou BLA que segue a unidade de acesso 0 em ordem de decodificação no fluxo de bits, e para a qual as unidades de acesso de RASL associadas estão presentes, e não funcionarão corretamente se houver tal unidade de acesso CRA ou BLA presente no fluxo de bits.
[0119] Outras suposições em um conjunto escolhido de atraso de remoção de CPB inicial e deslocamento de atraso também podem resultar em decodificação incorreta. Por exemplo, uma situação em que algumas unidades de acesso de CRA ou BLA seguindo a unidade de acesso 0 têm as unidades de acesso de RASL das mesmas associadas presentes, e outras unidades de acesso de CRA ou BLA seguindo a unidade de acesso 0 não têm as unidades de acessos de RASL associadas das mesmas presentes, também pode não decodificar corretamente, desde que a suposição nas presenças e ausências das unidades de acesso de RASL associadas para as unidade de acessos seguindo CRA ou BLA não se sustentem.
[0120] O deslocamento de atraso de remoção de CPB só pode compensar os tempos de remoção de CPB para unidades de acesso seguindo a unidade de acesso 0 devido ao descarte das unidades de acesso de RASL associadas com a unidade de acesso 0. Se houver uma ou mais do que uma unidades de acesso de CRA ou BLA que seguem a unidade de acesso 0 em ordem de decodificação presente no fluxo de bits e para a qual as unidades de acesso de RASL associadas foram descartadas, o CPB pode exceder após a primeira tal unidade de acesso de CRA ou BLA e, consequentemente, resultado de decodificação inesperado pode ocorrer.
[0121] Outro problema associado com o método em HEVC WD9 é conforme a seguir. Atualmente, quando a unidade de acesso (AU) 0 é uma AU de CRA ou BLA, se as AUs de RASL associadas estão presentes, o atraso de remoção de CPB inicial padrão e o deslocamento de atraso são usados; de outra maneira, o atraso de remoção de CPB inicial alternativo e o deslocamento de atraso são usados. Entretanto, a mudança do atraso de remoção de CPB inicial e o deslocamento de atraso não muda a duração de tempo entre os tempos de decodificação (nominal) de AU0 e a primeira AU não RASL seguindo a AU0 em ordem de decodificação. Por exemplo, supondo que houvesse 10 imagens de RASL seguindo imediatamente AU0 em ordem de decodificação e imediatamente seguidas por imagens posteriores no fluxo de bits original. Nessa situação, o tempo de remoção de CPB é igual ao tempo de remoção de CPB nominal para cada AU, e a duração de tempo entre os tempos de decodificação de qualquer uma das duas AUs consecutivas é um tique de relógio quando o fluxo de bits original é decodificado. De acordo com HEVC WD9, a duração de tempo entre os tempos de decodificação de AU0 e a primeira imagem posterior será a mesma (11 tiques de relógio) independente de se as imagens de RASL são descartadas. Desse modo, a decodificação é contínua para o fluxo de bits original, mas não quando as imagens de RASL são descartadas.
[0122] Tendo em vista os problemas, esta revelação fornece os métodos e técnicas a seguir para aperfeiçoar armazenamento temporário de vídeo (por exemplo, aperfeiçoar o HRD de HEVC WD9. Os exemplos a seguir serão descritos com referência a HEVC WD9. Quaisquer técnicas de HRD não mencionadas de maneira específica podem ser as mesmas da atualmente especificada em HEVC WD9, ou outros padrões de HEVC, tais como padrões de HEVC subsequentes.
[0123] Em um primeiro exemplo da revelação, um deslocamento de atraso de remoção de CPB é sinalizado pelo codificador de vídeo 20 para cada unidade de acesso de CRA ou BLA. Para cada unidade de acesso de CRA ou BLA para a qual as imagens de RASL associadas não estão presentes, independente de se o HRD (por exemplo, decodificador de vídeo 30) inicializar na unidade de acesso de CRA ou BLA, o decodificador de vídeo 30 troca o tempo de remoção de CPB de cada uma das unidades de acesso seguindo a unidade de acesso de CRA ou BLA em ordem de decodificação precoce pelo deslocamento de atraso de remoção de CPB. Conforme descrito acima, uma mensagem de SEI de período de armazenamento temporário pode incluir um valor de deslocamento de atraso de CPB, por exemplo, cpb_delay_offset[i] que especifica, para o CPB i-ésimo, um deslocamento a ser usado. O deslocamento pode ser usado, por exemplo, em derivação dos tempos de remoção de CPB nominal de unidades de acesso seguindo, em ordem de decodificação, a unidade de acesso de CRA ou BLA associada com a mensagem de SEI de período de armazenamento temporário quando as unidades de acesso de RASL associadas com a unidade de acesso de CRA ou BLA não estão presentes. O elemento de sintaxe pode ter um comprimento em bits dado por au_cpb_removal_delay_length minusl + 1 e pode ser, por exemplo, em unidades de um relógio de 90 kHz.
[0124] A seleção entre o atraso de remoção de CPB inicial padrão e alternativo e o deslocamento de atraso para a unidade de acesso 0 pode ser realizada do mesmo modo conforme em, por exemplo, HEVC WD9. Em outro exemplo, o atraso de remoção de CPB inicial padrão e o atraso deslocamento para a unidade de acesso 0 são sempre escolhidos (por exemplo, escolhidos no codificador de vídeo 20 para uso pelo decodificador de vídeo 30). Consequentemente, o codificador de vídeo 20 não sinaliza o atraso de remoção de CPB inicial alternativo e deslocamento de atraso para unidades de acesso de CRA ou BLA a menos que parâmetros de CPB de nível de sub-imagem estejam presentes e, então, o atraso de remoção de CPB inicial alternativo e deslocamento de atraso são para o propósito de operações de HRD de nível de sub-imagem. O atraso de remoção de CPB inicial alternativo e o deslocamento de atraso podem ser sinalizados com o uso de uma mensagem de SEI de período de armazenamento temporário que tem a sintaxe descrita no presente documento.
[0125] Em um segundo exemplo da revelação, o HRD especifica que um decodificador de vídeo (por exemplo, decodificador de vídeo 30) inicializa ou reinicializa em cada unidade de acesso de CRA ou BLA para a qual as unidades de acesso de RASL associadas não estão presentes, por exemplo, conforme identificado por qualquer uma das condições a seguir sendo verdadeira: a. nal_unit_type é igual a CRA_NUT ou BLA_W_LP, eUseAltCpbParamsFlag é igual a 1 ; b. nal_unit_type é igual a BLA_W_DLP ou BLA_N_LP. O elemento de sintaxe nal_unit_type especifica o tipo de uma estrutura de dados de carga de sequência de byte bruto (RBSP) contida na unidade de camada abstrata de rede (NAL). CRA_NUT é um tipo de NAL para um segmento de fatia codificada de uma imagem de CRA. BLA_W_LP é um tipo de NAL para um segmento de fatia codificada de uma imagem de BLA. Uma imagem de BLA que tem nal_unit_type igual a BLA_W_LP pode ter imagens RASL ou RADL associadas presentes no fluxo de bits. Uma imagem de BLA que tem nal_unit_type igual a BLA_W_DLP não tem imagens de RASL associadas presentes no fluxo de bits, mas pode ter imagens de RADL associadas no fluxo de bits. Assim, quando uma imagem de BLA tem um nal_unit_type igual a BLA_W_LP (que novamente pode ter imagens RASL ou RADL associadas presentes no fluxo de bits) o decodificador de vídeo 30 pode inicializar ou reinicializar em cada acesso de CRA ou BLA. Uma imagem de BLA que tem nal_unit_type igual a BLA_N_LP não tem imagens anteriores associadas presentes no fluxo de bits. Assim, quando uma imagem de BLA tem um nal_unit_type igual a BLA_N_LP o decodificador de vídeo 30 geralmente não inicializa ou reinicializa em cada acesso de CRA ou BLA. UseAltCpbParamsFlag indica se parâmetros de CPB alternativos são usados ou não. Se os parâmetros de CPG alternativos são usados, o decodificador de vídeo 30 pode usar um deslocamento especificado por um valor de deslocamento de atraso de CPB, por exemplo, cpb_delay_offset[i] que especifica, para o CPB i-ésimo, o deslocamento a ser usado.
[0126] Em um terceiro exemplo da revelação, cada unidade de acesso de CRA ou BLA para a qual as unidades de acesso de RASL associadas não estão presentes, por exemplo, conforme identificado por qualquer uma das condições a seguir sendo verdadeira, considera-se, por exemplo, pelo decodificador de vídeo 30, como a primeira unidade de acesso em um fluxo de bits (isto é, tal unidade de acesso inicia um novo fluxo de bits) e, desse modo, não é exigido que um fim de unidade de NAL de fluxo de bits esteja presente no fim de cada fluxo de bits que não é o último fluxo de bits em um fluxo elementar: a. nal_unit_type é igual a CRA_NUT ou BLA_W_LP, e UseAltCpbParamsFlag é igual a 1 ; b. nal_unit_type é igual a BLA_W_DLP ou BLA_N_LP. Consequentemente, ao implantar o modelo HRD, o decodificador de vídeo 30 inicializa ou reinicializa o HRD na unidade de acesso de acordo com o padrão de HEVC, por exemplo. Nesse terceiro exemplo, conforme discutido acima, cada unidade de acesso de CRA ou BLA para a qual as unidades de acesso de RASL associadas não estão presentes é considerada como a primeira unidade de acesso em um fluxo de bits.
[0127] Em um quarto exemplo da revelação, para cada unidade de acesso de CRA ou BLA para a qual as unidades de acesso de RASL associadas não estão presentes,por exemplo, conforme identificado por qualquer uma das condições a seguir sendo verdadeira, é exigido que haja um fim de unidade de NAL de fluxo de bits imediatamente precedente, em ordem de decodificação, a primeira unidade de NAL na unidade de acesso: a. nal_unit_type é igual a CRA_NUT ou BLA_W_LP, e UseAltCpbParamsFlag é igual a 1; b. nal_unit_type é igual a BLA_W_DLP ou BLA_N_LP. Consequentemente, ao implantar o modelo HRD, o decodificador de vídeo 30 pode inicializar ou reinicializar o HRD na unidade de acesso de acordo com padrão de HEVC, por exemplo.
[0128] Comum ao segundo, terceiro e quarto exemplos acima, quando o decodificador de vídeo 30 inicializa ou reinicializa em uma unidade de acesso de CRA ou BLA, em alguns exemplos, tanto o padrão como o atraso de remoção de CPB inicial alternativo e deslocamento de atraso associado com a unidade de acesso podem ser transmitidos ou armazenados pelo decodificador de vídeo 30 a ser usado nas operações de HRD, dependendo de se as unidades de acesso de RASL associadas com a unidade de acesso estão presentes. Se as unidades de acesso de RASL associadas com a unidade de acesso não estão presentes (por exemplo, quando qualquer uma das duas condições acima a ou b é verdadeira), o atraso de remoção de CPB inicial alternativo e deslocamento de atraso são escolhidos; de outra maneira (as unidades de acesso de RASL associadas com a unidade de acesso estão presentes), o atraso de remoção de CPB inicial padrão e deslocamento de atraso são escolhidos. O conjunto escolhido de atraso de remoção de CPB inicial e deslocamento de atraso é, então, usado pelo decodificador de vídeo 30 até o HRD ser reinicializado ou o fim do fluxo de bits. Em um exemplo, quando tal unidade de acesso de CRA ou BLA não é a primeira unidade de acesso no fluxo de bits (isto é, não é unidade de acesso 0), somente o CPB é reinicializado, o DPB não é reinicializado. Em outro exemplo, quando tal unidade de acesso de CRA ou BLA não é a primeira unidade de acesso no fluxo de bits (isto é, não é unidade de acesso 0), nem o CPB nem o DPB é reinicializado, mas, em vez disso, uma escolha é feita entre o atraso de remoção de CPB inicial padrão ou alternativo e deslocamento de atraso de modo similar à descrição acima. Por exemplo, o decodificador de vídeo 30 pode selecionar entre o atraso de remoção de CPB inicial padrão ou alternativo e deslocamento de atraso e, então, a alternativa selecionada pode ser usada por, por exemplo, decodificador de vídeo 30 até o HRD ser reinicializado ou o fim do fluxo de bits.
[0129] Uma discussão da primeira técnica exemplificativa é fornecida abaixo. Quaisquer referências a cláusulas e subcláusulas abaixo se referem a HEVC WD9. A menos que estabelecido de maneira específica, a operação e significado de todos os elementos de sintaxe é definida em HEVC WD9, e podem, em geral, ser aplicados a extensões de HEVC subsequentes.
[0130] De acordo com os sistemas e métodos descritos no presente documento, a sintaxe e semântica de mensagem de SEI de período de armazenamento temporário na subcláusula C.2.3 de HEVC WD9 (temporização de remoção de unidade de decodificação e decodificação de unidade de decodificação) em, por exemplo, HEVC WD9, podem ser alteradas conforme a seguir. O decodificador de vídeo 30 pode, por exemplo, implantar decodificação com o uso de alguns ou todos os aspectos da sintaxe e semântica de mensagem de SEI de período de armazenamento temporário de subcláusula C.2.3 de HEVC WD9. Os elementos de sintaxe atualizados estão em negrito. Outras partes não mencionadas podem ser as mesmas conforme em HEVC WD9 ou padrões de HEVC subsequentes. TABELA 1 - SINTAXE DE MENSAGEM DE SEI DE PERÍODO DE ARMAZENAMENTO TEMPORÁRIO
Figure img0001
Figure img0002
[0131] Uma mensagem de informações de aprimoramento suplementar de período de armazenamento temporário (SEI) fornece informações de deslocamento de atraso de remoção de CPB inicial e atraso de remoção de CPB inicial para inicialização do HRD na posição da unidade de acesso associada em ordem de decodificação.
[0132] O que vem a seguir se aplica para a sintaxe e semântica de mensagem de SEI de período de armazenamento temporário. Primeiro, os elementos de sintaxe initial_cpb_removal_delay_length_minusl, au_cpb_removal_delay_length_minusl, e sub_pic_cpb_params_present_flag, e as variáveis NalHrdBpPresentFlag e VclHrdBpPresentFlag, são encontrados em ou derivados em, por exemplo, decodificador de vídeo 30, a partir de elementos de sintaxe na estrutura de sintaxe hrd_parameters( ) que é aplicável a pelo menos um dos pontos de operação aos quais a mensagem de SEI de período de armazenamento temporário se aplica. Segundo, as variáveis CpbSize[i], BitRate[i] e CpbCnt são derivadas em, por exemplo, decodificador de vídeo 30, de elementos de sintaxe encontrados na estrutura de sintaxe sub_layer_hrd_parameters( ) que é aplicável a pelo menos um dos pontos de operação aos quais a mensagem de SEI de período de armazenamento temporário se aplica. Terceiro, quaisquer dois pontos de operação aos quais a mensagem de SEI de período de armazenamento temporário se aplica que tem valores OpTid diferentes tldA e tldB indicam que os valores de cpb_cnt_minusl [tldA] e cpb_cnt_minusl [tldB] codificados na estrutura(s) de sintaxe hrd_parameters( ) aplicável aos dois pontos de operação são idênticos. Quarto, quaisquer dois pontos de operação aos quais a mensagem de SEI de período de armazenamento temporário se aplica que tem valor OpLayerldSet diferentes layerldSetA e layerldSetB indicam que os valores de nal_hrd_parameters_present_flag e vcl_hrd_parameters_present_flag, respectivamente, para as duas estruturas de sintaxe hrd_parameters( ) aplicáveis aos dois pontos de operação são idênticos. Por fim, o fluxo de bits (ou uma parte dos mesmos) se refere ao subconjunto de fluxo de bits (ou uma parte do mesmo) associado com qualquer um dos pontos de operação aos quais a mensagem de SEI de período de armazenamento temporário se aplica.
[0133] Se os elementos de sintaxe NalHrdBpPresentFlag ou VclHrdBpPresentFlag forem iguais a 1, uma mensagem de SEI de período de armazenamento temporário aplicável aos pontos de operação especificados pode ser associada com qualquer unidade de acesso na sequência de vídeo codificada, e uma mensagem de SEI de período de armazenamento temporário aplicável aos pontos de operação especificados deve ser associada com cada unidade de acesso de RAP, com cada unidade de acesso associada com uma mensagem de SEI de ponto de recuperação. De outra maneira, (NalHrdBpPresentFlag e VclHrdBpPresentFlag são ambos iguais a 0), nesse exemplo, nenhuma unidade de acesso na sequência de vídeo codificada deve ser associada com uma mensagem de SEI de período de armazenamento temporário aplicável aos pontos de operação especificados.
[0134] Para algumas aplicações, a presença frequente de mensagens de SEI de período de armazenamento temporário pode ser desejável.
[0135] Quando uma unidade de NAL SEI que contém uma mensagem de SEI de período de armazenamento temporário e tem nuh_reserved_zero_6bits igual a 0 está presente, a unidade de NAL SEI deve preceder, em ordem de decodificação, a primeira unidade NAL VCL na unidade de acesso.
[0136] O elemento de sintaxe bp_seq_parameter_set_id especifica o sps_seq_parameter_set_id para o conjunto de parâmetro de sequência que é ativo para a imagem codificada associada com a mensagem SEI de período de armazenamento temporário. O valor de bp_seq_parameter_set_id deve ser igual ao valor de pps_seq_parameter_set_id no conjunto de parâmetro de imagem referenciado pelo slice_pic_parameter_set_id dos cabeçalhos de segmento de fatia da imagem codificada associada com a mensagem de SEI de período de armazenamento temporário. O valor de bp_seq_parameter_set_id deve ser na faixa de 0 a 15, inclusive.
[0137] O elemento de sintaxerap_cpb_params_present_flag igual a 1 especifica a presença dos elementos de sintaxe initial_alt_cpb_removal_delay[i] e initial_alt_cpb_removal_offset[i]. Quando não presente, o valor de rap_cpb_params_present_flag é deduzido ser igual a 0. Quando a imagem associada não é nem uma imagem de CRA nem uma imagem de BLA, o valor de rap_cpb_params_present_flag deve ser igual a 0.
[0138] O elemento de sintaxe initial_cpb_removal_delay[i] e initial_alt_cpb_removal_delay[i] especificam os atrasos de remoção de CPB inicial padrão e o alternativo, respectivamente, para o CPB i-ésimo. Os elementos de sintaxe têm um comprimento em bits dado por initial_cpb_removal_delay_length_minusl + 1, e são em unidades de um relógio de 90 kHz. Os valores dos elementos de sintaxe não devem ser iguais a 0 e devem ser menos do que ou igual a 90.000* (CpbSize[i] + BitRate[i]), o equivalente de tempo do tamanho de CPB em unidades de relógio de 90 kHz.
[0139] O elemento de sintaxe initial_cpb_removal_offset[i] e initial_alt_cpb_removal_offset[i] especificam os deslocamentos de remoção de CPB inicial padrão e o alternativo, respectivamente, para o CPB i-ésimo para especificar o tempo de entrega inicial de unidades de dados codificados para o CPB. Os elementos de sintaxe têm um comprimento em bits dado por initial_cpb_removal_delay_length_minusl + 1 e são em unidades de um relógio de 90 kHz.
[0140] Ao longo de toda a sequência de vídeo codificada, a soma de initial_cpb_removal_delay[i] e initial_cpb_removal_offset[i] deve ser constante para cada valor de i, e a soma de initial_alt_cpb_removal_delay[i] e initial_alt_cpb_removal_offset[i] deve ser constante para cada valor de i.
[0141] o elemento de sintaxe cpb_delay_offset[i] especifica, para o CPB i-ésimo, um deslocamento a ser usado na derivação dos tempos de remoção de CPB nominal de unidades de acesso seguindo, em ordem de decodificação, a unidade de acesso de CRA ou BLA associada com a mensagem de SEI de período de armazenamento temporário quando as unidades de acesso de RASL associadas com a unidade de acesso de CRA ou BLA não estão presentes. O elemento de sintaxe tem um comprimento em bits dado por au_cpb_removal_delay_length_minusl + 1 e é em unidades de um relógio de 90 kHz.
[0142] Em alguns exemplos, os codificadores de vídeo 20 são recomendados para não incluir initial_alt_cpb_removal_delay[i], initial_alt_cpb_removal_offset[i], e cpb_delay_offset[i] em mensagens de SEI de período de armazenamento temporário associadas com imagens de CRA ou BLA que têm imagens de RASL e RADL associadas que são intercaladas em ordem de decodificação.
[0143] A seção a seguir discutirá a temporização de remoção de unidade de decodificação e decodificação de unidades de decodificação. As variáveis InitCpbRemovalDelay[SchedSelldx], InitCpbRemovalDelayOffset[SchedSelldx], e cpbDelayOffset[SchedSelldx] são derivadas conforme a seguir. Primeiro, se uma ou mais dentre condição (A) e condição (B) apresentadas abaixo são verdadeiras, InitCpbRemovalDelay[SchedSelldx], InitCpbRemovalDelayOffset[SchedSelldx], e cpbDelayOffset[SchedSelldx] são definidos igual aos valores dos elementos de sintaxe de mensagem de SEI de período dearmazenamento temporário initial_alt_cpb_removal_delay[SchedSelldx], initial_alt_cpb_removal_offset[SchedSelldx], e cpb_delay_offset[SchedSelldx], respectivamente, que são selecionados dependendo de NalHrdModeFlag conforme especificado na subcláusula C.l de HVEC WD9. A condição (A) é que a unidade de acesso 0 é uma unidade de acesso de BLA para a qual a imagem codificada tem nal_unit_type igual a BLA_W_DLP ou BLA_N_LP, e o valor de rap_cpb_params_present_flag da mensagem de SEI de período de armazenamento temporário é igual a 1. A condição (B) é que a unidade de acesso 0 é uma unidade de acesso de BLA para a qual a imagem codificada tem nal_unit_type igual a BLA_W_LP ou é uma unidade de acesso de CRA, e o valor de rap_cpb_params_present_flag da mensagem de SEI de período de armazenamento temporário é igual a 1 , e uma ou mais das condições a seguir são verdadeiras: (1) UseAltCpbParamsFlag para unidade de acesso 0 é igual a 1. DefaultlnitCpbParamsFlag é igual a 0, (2) de outra maneira, InitCpbRemovalDelay[SchedSelldx] e InitCpbRemovalDelayOffset[SchedSelldx] são definidos igual aos valores dos elementos de sintaxe de mensagem de SEI de período de armazenamento temporário initial_cpb_removal_delay[SchedSelldx] e initial_cpb_removal_offset[SchedSelldx], respectivamente, que são selecionados dependendo de NalHrdModeFlag conforme especificado na subcláusula C.l, e cpbDelayOffset[SchedSelldx] é definido igual a 0.
[0144] O tempo de remoção nominal da unidade de acesso n a partir do CPB é especificado conforme a seguir. Primeiro, se unidade de acesso n é a unidade de acesso com n sendo igual a 0 (a unidade de acesso que inicializa o HRD), o tempo de remoção nominal da unidade deacesso a partir do CPB é especificado por: NominalRemovalTime(0) = InitCpbRemovalDelay[SchedSelldx]/90.000 (C-9) De outra maneira, quando a unidade de acesso n é a primeira unidade de acesso de um período de armazenamento temporário que não inicializa o HRD, o que vem a seguir se aplica. O tempo de remoção nominal da unidade de acesso n a partir do CPB é especificado por: NominalRemovalTime(n) = NominalRemovalTime(firstPicInPrevBuffPeriod) + ClockTick * ((AuCpbRemovalDelayVal(n))-cpbDelayOffset[SchedSelldx]) (C10) Em que NominalRemovalTime(firstPicInPrevBuffPeriod) é o tempo de remoção nominal da primeira unidade de acesso do período de armazenamento temporário prévio, e AuCpbRemovalDelayVal(n) é o valor de AuCpbRemovalDelayVal derivado de acordo com o au_cpb_removal_delay_minusl na imagem timing SEI mensagem, selecionado conforme especificado na subcláusula C.l, associada com a unidade de acesso n.
[0145] Após a derivação do tempo de remoção de CPB nominal da unidade de acesso n, o valor de cpbDelayOffset[SchedSelldx] é atualizado conforme a seguir. Se uma ou mais das condições a seguir são verdadeiras, cpbDelayOffset[SchedSelldx] é definido igual ao valor do elemento de sintaxe de mensagem de SEI de período de armazenamento temporário cpb_removal_delay_offset[SchedSelldx], selecionado dependendo de NalHrdModeFlag conforme especificado na subcláusula C.l de HVEC WD9. A unidade de acesso n é uma unidade de acesso de BLA para a qual a imagem codificada tem nal_unit_type igual a BLA_W_DLP ou BLA_N_LP, e o valor de rap_cpb_params_present_flag da mensagem de SEI deperíodo de armazenamento temporário é igual a 1. A unidade de acesso n é uma unidade de acesso de BLA para a qual a imagem codificada tem nal_unit_type igual a BLA_W_LP ou é uma unidade de acesso de CRA, e o valor de rap_cpb_params_present_flag da mensagem de SEI de período de armazenamento temporário é igual a 1, e UseAltCpbParamsFlag para a unidade de acesso n é igual a 1. De outra maneira, cpbDelayOffset[SchedSelldx] é definido igual a 0. Quando a unidade de acesso n não é a primeira unidade de acesso de um período de armazenamento temporária, o tempo de remoção nominal da unidade de acesso n a partir do CPB é especificado por:
[0146] NominalRemovalTime(n) = NominalRemovalTime(firstPicInCurrBuffPeriod) + ClockTick*((AuCpbRemovalDelayVal(n))- cpbDelayOffset[SchedSelldx](C-ll) em que NominalRemovalTime(firstPicInCurrBuffPeriod) é o tempo de remoção nominal da primeira unidade de acesso do período de armazenamento temporário atual.
[0147] Quando sub_pic_cpb_params_present_flag é igual a 1, o que vem a seguir e aplica. A variável cpbRemovalDelayInc(m) é derivada conforme a seguir. Se sub_pic_cpb_params_in_pic_timing_sei_flag é igual a 0, a variável cpbRemovalDelayInc(m) é definida para o valor de du_spt_cpb_removal_delay_increment na mensagem de SEI de informações de unidade de decodificação, selecionada conforme especificado na subcláusula C.l, associada com a unidade de decodificação m. De outra maneira, se du_common_cpb_removal_delay_flag é igual a 0, a variável cpbRemovalDelayInc(m) é definida para o valor de: du_cpb_removal_delay_increment_minusl[i]+ 1 para a unidade de decodificação m na mensagem de SEI de temporização deimagem, selecionada conforme especificado na subcláusula C. l, associada com a unidade de acesso n, em que o valor de i é 0 para as primeiras unidades NAL consecutivas num_nalus_in_du_minusl [0]+ 1 na unidade de acesso que contém a unidade de decodificação m, 1 para as unidades NAL num_nalus_in_du_minusl[1]+ 1 subsequentes na mesma unidade de acesso, 2 para as unidades NAL num_nalus_in_du_minusl [2]+ 1 subsequentes na mesma unidade de acesso, etc. De outra maneira, a variável cpbRemovalDelayInc(m) é definida para o valor de du_common_cpb_removal_delay_increment_minusl + 1 na imagem timing SEI mensagem, selecionada conforme especificado na subcláusula C.l, associada com a unidade de acesso n.
[0148] O tempo de remoção nominal de unidade de decodificação m a partir do CPB é especificado conforme a seguir, em que NominalRemovalTime(n) é o tempo de remoção nominal de unidade de acesso n. Se a unidade de decodificação m é a última unidade de decodificação na unidade de acesso n, o tempo de remoção nominal da unidade de decodificação m NominalRemovalTime(m) é definido para NominalRemovalTime(n). De outra maneira, (isto é, unidade de decodificação m não é a última unidade de decodificação na unidade de acesso n), o tempo de remoção nominal da unidade de decodificação m NominalRemovalTime(m) é derivado conforme a seguir. Se(sub_pic_cpb_params_in_pic_timing_sei_flag); NominalRemovalTime(m) = NominalRemovalTime(m + 1) - ClockSubTick * cpbRemovalDelayInc(m) (C-12) ainda NominalRemovalTime(m) = NominalRemovalTime(n) -ClockSubTick * cpbRemovalDelayInc( m ) O tempo de remoção de unidade de acesso n a partir do CPB é especificado conforme a seguir, em que FinalArrivalTime(m) e NominalRemovalTime(m) são o tempo de chegada final e tempo de remoção nominal, respectivamente, da última unidade de decodificação na unidade de acesso n, e FinalArrivalTime(n) e NominalRemovalTime(n) são o tempo de chegada final e tempo de remoção nominal, respectivamente, da unidade de acesso n. se(!low_delay_hrd_flag[HighestTid]||NominalRemova lTime(n)>= FinalArrivalTime(n)) CpbRemovalTime(n) = NominalRemovalTime(n) ainda se(sub_pic_cpb_params_present_flag) (C-13) CpbRemovalTime(n) = NominalRemovalTime(n) + Max((ClockSubTick * Ceil((FinalArrivalTime(m) - NominalRemovalTime(m))/ClockSubTick)), (ClockTick * Ceil((FinalArrivalTime(n) - NominalRemovalTime(n))/ClockTick))) ainda CpbRemovalTime(n) = NominalRemovalTime(n) + ClockTick * Ceil((FinalArrivalTime(n) - NominalRemovalTime(n))/ClockTick)
[0149] Quando SubPicCpbFlag é igual a 1, a variável lastDuInAuFlag é definida igual a 1 se a unidade de decodificação m é a última unidade de decodificação de unidade de acesso n e 0 de outra maneira, e o tempo de remoção de unidade de decodificação m a partir do CPB é especificada conforme a seguir. se(!low_delay_hrd_flag[HighestTid]||NominalRemova lTime(m)>= FinalArrivalTime(m)) CpbRemovalTime(m) = NominalRemovalTime(m) ainda se(!lastDuInAuFlag) (C-14) CpbRemovalTime(m) = NominalRemovalTime(m) + ClockSubTick * Ceil((Final ArrivalTime(m) - NominalRemovalTime(m))/ClockSubTick) aindaCpbRemovalTime(m) = CpbRemovalTime(n)
[0150] Quando low_delay_hrd_flag[HighestTid] é igual a 1 e NominalRemovalTime(m) < FinalArrivalTime(m), o tamanho da unidade de decodificação m é tão grande que a mesma evita remoção no tempo de remoção de nominal. No tempo de remoção de CPB de unidade de decodificação m, a unidade de decodificação é instantaneamente decodificada. A imagem n é considerada como decodificada quando a última unidade de decodificação da imagem é decodificada. As mudanças descritas acima também podem ser implantadas por um codificador de vídeo 20, por exemplo, para codificar um fluxo de bits com o uso de alguns ou todos os aspectos da sintaxe e semântica de mensagem de SEI de período de armazenamento temporário e subcláusula C.2.3 de HEVC WD9 de modo que o fluxo de bits possa ser decodificado pelo decodificador de vídeo 30.
[0151] A Figura 4 é um fluxograma que ilustra um método exemplificativo de acordo com um ou mais exemplos descritos nesta revelação. O dispositivo de destino 14 pode implantar um método de processamento de dados de vídeo. Por exemplo, o decodificador de vídeo 30 pode receber uma unidade de acesso que tem uma imagem de RAP em um fluxo de bits de vídeo (400). O decodificador de vídeo também pode receber, no fluxo de bits, após a unidade de acesso, uma unidade de acesso subsequente que tem uma imagem de RAP (402). No caso em que uma ou mais imagens anteriores ignoradas de acesso aleatório (RASL) para a unidade de acesso subsequente não estão presentes no fluxo de bits recebido, trocar um tempo de remoção de armazenamento temporário de imagem precoce com base em um deslocamento de atraso de remoção de armazenamento temporário de imagem (404).
[0152] Em alguns exemplos, o armazenamento temporário de imagem inclui um armazenamento temporário de imagem codificada (CPB) e o deslocamento de atraso de remoção de armazenamento temporário de imagem inclui um deslocamento de atraso de remoção de CPB. Em outros exemplos, o armazenamento temporário de imagem inclui um armazenamento temporário de imagem decodificada (DPB) e o deslocamento de atraso de remoção de armazenamento temporário de imagem inclui um deslocamento de atraso de remoção de DPB.
[0153] O decodificador de vídeo 30 pode receber o deslocamento de atraso de remoção de armazenamento temporário de imagem para a unidade de acesso. Em alguns exemplos, o decodificador de vídeo 30 pode receber o deslocamento de atraso de remoção de armazenamento temporário de imagem em uma mensagem de SEI de período de armazenamento temporário. Em alguns exemplos, a imagem de RAP inclui uma dentre uma imagem de acesso aleatório limpo (CRA) e uma imagem de acesso de enlace rompido (BLA).
[0154] A Figura 5 é um fluxograma que ilustra um método exemplificativo de acordo com um ou mais exemplos descritos nesta revelação. O dispositivo de destino 14 pode implantar um método de processamento de dados de vídeo. Por exemplo, o decodificador de vídeo 30 pode receber uma unidade de acesso, por exemplo, após uma inicialização precoce, sendo que a unidade de acesso tem uma imagem de ponto de acesso aleatório (RAP). Isso pode ser, por exemplo, após uma unidade de acesso de RAP que inicializa o HRD. As unidades de acesso associadas podem conter imagens anteriores ignoradas de acesso aleatório (RASL) não são recebidas (500). O decodificador de vídeo 30 pode inicializar um tempo de remoção de armazenamento temporário de imagem e um deslocamento de atraso de remoção de armazenamento temporário de imagem em resposta ao recebimento da unidade de acesso e não recebimento das unidades de acesso associadas contendo imagens de RASL (502).
[0155] O tempo de remoção de armazenamento temporário de imagem inclui um tempo de remoção de armazenamento temporário de imagem codificada (CPB) e o deslocamento de atraso de remoção de armazenamento temporário de imagem inclui um deslocamento de atraso de remoção de CPB. O tempo de remoção de armazenamento temporário de imagem inclui um tempo de remoção de armazenamento temporário de imagem decodificada (DPB) e o deslocamento de atraso de remoção de armazenamento temporário de imagem inclui um deslocamento de atraso de remoção de DPB. Em um exemplo, o decodificador de vídeo 30 pode receber o deslocamento de atraso de remoção de armazenamento temporário de imagem em uma mensagem de SEI de período de armazenamento temporário.
[0156] Em um exemplo, a imagem RAP é uma imagem de acesso aleatório limpo (CRA). Em outro exemplo, a imagem de RAP é uma imagem de acesso de enlace rompida (BLA) que pode ter imagens de RASL associadas ou imagens decodificáveis ignoradas de acesso aleatório (RADL). A imagem RAP é uma dentre uma imagem de acesso de enlace rompido (BLA) que não tem imagens de RASL associadas, mas pode ter imagens RADL, e uma imagem de BLA que não têm imagens anteriores associadas. Um exemplo pode incluir adicionalmente designar a unidade de acesso recebida como a primeira unidade de acesso em um fluxo de bits.
[0157] Em outro método exemplificativo de processamento de dados de vídeo, um codificador de vídeo tal como codificador de vídeo 20 ou decodificador de vídeo 30 pode sinalizar um deslocamento de atraso de remoção de CPB para cada unidade de acesso de CRA ou BLA. O codificador de vídeo também pode trocar o tempo de remoção de CBP de cada uma das unidades de acesso que seguem a unidade de acesso de CRA ou BLA em ordem de decodificação precoce pelo deslocamento de atraso de remoção de CPB para cada unidade de acesso de CRA ou BLA para a qual as imagens de RASL associadas não estão presentes, independente de se o HRD inicializa na unidade de acesso de CRA ou BLA.
[0158] Em outro método exemplificativo de processamento de dados de vídeo, o codificador de vídeo pode sinalizar um deslocamento de atraso de remoção de CPB para cada unidade de acesso de CRA ou BLA. O codificador de vídeo também pode selecionar o atraso de remoção de CPB inicial padrão e o deslocamento de atraso para a unidade de acesso 0 de modo que atraso de remoção de CPB inicial alternativo e deslocamento de atraso não sejam sinalizados para unidades de acesso de CRA ou BLA a menos que os parâmetros de CPB de nível de sub-imagem estejam presentes. Em um exemplo, o atraso de remoção de CPB inicial alternativo e o deslocamento de atraso podem ser para operações de HRD de nível de sub-imagem.
[0159] Em um ou mais exemplos, as funções descritas podem ser implantadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implantado em software, as funções podem ser armazenadas em ou transmitidas, como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento com base em hardware.Os meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível tal como meios de armazenamento de dados, ou meios de comunicação incluindo qualquer meio que facilita a transferência de um programa de computador de um lugar para o outro, por exemplo, de acordo com um protocolo de comunicação. Desse modo, meios legíveis por computador podem geralmente corresponder a (1) meios de armazenamento legíveis por computador tangível que não é transitório ou (2) um meio de comunicação tal como um sinal ou onda portadora. Os meios de armazenamento de dados podem ser qualquer meio disponível que pode ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implantação das técnicas descritas nessa revelação. Um produto de programa de computador pode incluir um meio legível por computador.
[0160] A título de exemplo, e não limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que pode ser usado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que pode ser acessado por um computador. Além disso, qualquer conexão é chamada de maneira apropriada um meio legível por computador. Por exemplo, se as instruções forem transmitidas a partir de um site da web, servidor ou outra fonte remota com o uso de um cabo coaxial, cabo de fibra óptica, par torcido, linha de assinatura digital (DSL), ou tecnologias sem fio tais como infravermelha, rádio, e micro-onda, então, o cabo coaxial, cabo de fibra óptica, par torcido, DSL, ou tecnologias sem fio tais como infravermelha, rádio e micro-onda estão incluídas na definição de meio. Deve-se entender, entretanto, que os meios de armazenamento legíveis por computador e meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transientes, mas são, em vez disso, direcionados a meios de armazenamento não transiente, tangível. Disco magnético e disco óptico, conforme usado no presente documento, incluem disco compacto (CD), disco a laser, disco óptico, disco versátil digital (DVD), disquete, e disco Blu-ray, em que os discos magnéticos normalmente reproduzem dados de modo magnético, enquanto os discos ópticos reproduzem dados de modo óptico com lasers. Combinações do acima também devem estar incluídas dentro do escopo de meios legíveis por computador.
[0161] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs), ou outro conjunto de circuitos lógicos discretos ou integrados equivalentes. Assim, o termo "processador", conforme usado no presente documento, pode se referir a qualquer um das estruturas antecedentes ou qualquer outra estrutura adequada para implantação das técnicas descritas no presente documento. Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser implantadas inteiramente em um ou mais circuitos ou elementos lógicos.
[0162] As técnicas desta revelação podem ser implantadas em uma grande variedade de dispositivos ou aparelhos, incluindo um fone de mão sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chip). Vários componentes, módulos ou unidades são descritas nesta revelação para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente realização por unidades de hardware diferentes. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores conforme descrito acima, em conjunto com adequada software e/ou firmware.
[0163] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (5)

1. Método para processar dados de vídeo, o método caracterizado por compreender: receber, em um fluxo de bits de vídeo, uma unidade de acesso inicial que tem uma imagem de ponto de acesso aleatório (RAP), em que um decodificador de referência hipotética (HRD) inicializa na unidade de acesso inicial; receber uma unidade de acesso subsequente que tem uma imagem de RAP; receber, em uma mensagem de informações de aprimoramento suplementar (SEI) de período de armazenamento temporário, um deslocamento de atraso de remoção de armazenamento temporário de imagem para a unidade de acesso subsequente, e trocar um tempo de remoção de armazenamento temporário de imagem para um armazenamento temporário de imagem anterior, por um deslocamento de atraso de remoção de armazenamento temporário de imagem, independentemente de se o HRD inicializa na unidade de acesso subsequente, se: a unidade de acesso subsequente tem um tipo de unidade de camada de abstração de rede (NAL) que indica uma unidade de acesso de acesso de enlace interrompido (BLA) para qual a imagem codificada não tem imagens anteriores ignoradas de acesso aleatório (RASL) associadas presentes no fluxo de bits, mas podem ter imagens anteriores decodificáveis de acesso aleatório (RADL) associadas, ou um tipo de unidade de camada de abstração de rede (NAL) que indica uma unidade de acesso BLA para qual a imagem codificada não tem imagens anteriores, e um valor de um elemento de sintaxe indica que um atraso de remoção de armazenamento temporário de imagem codificada (CPB) inicial alternativo e um deslocamento de remoção de CPB inicial alternativo são especificados na mensagem SEI de período de armazenamento; ou a unidade de acesso subsequente tem um tipo de unidade NAL que indica uma unidade de acesso BLA para qual a imagem codificada pode ter imagens RASL ou RADL associadas presentes no fluxo de bits, ou que indica uma unidade de acesso de acesso aleatório limpo (CRA), um valor de um elemento de sintaxe indica que um atraso de remoção de armazenamento temporário de imagem codificada (CPB) inicial alternativo e um deslocamento de remoção de CPB inicial alternativo são especificados na mensagem SEI de período de armazenamento temporário, e um valor de variável UseAltCpbParamsFlag para a unidade de acesso subsequente indica que parâmetros de CPB alternativos são utilizados.
2. Método, de acordo com a reivindicação 1, caracterizado por compreender adicionalmente trocar o tempo de remoção de armazenamento temporário de imagem pelo armazenamento temporário de imagem baseado anteriormente em uma acumulação de deslocamentos de atraso de remoção de armazenamento temporário de imagem respectivos para as unidades de acesso, subsequente às unidade de acesso iniciais, tendo imagens de RAP; ou compreendendo adicionalmente trocar o tempo de remoção de armazenamento temporário de imagem pelo armazenamento temporário de imagem baseado anteriormente em deslocamentos de atraso de remoção de armazenamento temporário de imagem, tanto para a unidade de acesso subsequente que tem a imagem de RAP, como para a unidade de acesso inicial que tem a imagem de RAP que inicializa o HRD.
3. Método, de acordo com a reivindicação 1, caracterizado por o tempo de remoção de armazenamento temporário de imagem compreender um armazenamento temporário de imagem decodificada (DPB) e o deslocamento de atraso de remoção de armazenamento temporário de imagem compreender um deslocamento de atraso de remoção de DPB.
4. Dispositivo para processar dados de vídeo, caracterizado por compreender: meios para receber, em um fluxo de bits de vídeo, uma unidade de acesso inicial que tem uma imagem de ponto de acesso aleatório (RAP), em que um decodificador de referência hipotética (HRD) inicializa a unidade de acesso inicial; meios para receber uma unidade de acesso subsequente que tem uma imagem de RAP; meios para receber, em uma mensagem de informações de aprimoramento suplementar (SEI) de período de armazenamento temporário, um deslocamento de atraso de remoção de armazenamento temporário de imagem para a unidade de acesso subsequente, e meios para trocar um tempo de remoção de armazenamento temporário de imagem para um armazenamento temporário de imagem anterior, por um deslocamento de atraso de remoção de armazenamento temporário de imagem, independentemente de se o HRD inicializa na unidade de acesso subsequente, se: a unidade de acesso subsequente tem um tipo de unidade de camada de abstração de rede (NAL) que indica uma unidade de acesso de acesso de enlace interrompido (BLA) para qual a imagem codificada não tem imagens anteriores ignoradas de acesso aleatório (RASL) associadas presentes no fluxo de bits, mas podem ter imagens anteriores decodificáveis de acesso aleatório (RADL) associadas, ou um tipo de unidade de camada de abstração de rede (NAL) que indica uma unidade de acesso BLA para qual a imagem codificada não tem imagens anteriores, e um valor de um elemento de sintaxe indica que um atraso de remoção de armazenamento temporário de imagem codificada (CPB) inicial alternativo e um deslocamento de remoção de CPB inicial alternativo são especificados na mensagem SEI de período de armazenamento; ou a unidade de acesso subsequente tem um tipo de unidade NAL que indica uma unidade de acesso BLA para qual a imagem codificada pode ter imagens RASL ou RADL associadas presentes no fluxo de bits, ou que indica uma unidade de acesso de acesso aleatório limpo (CRA), um valor de um elemento de sintaxe indica que um atraso de remoção de armazenamento temporário de imagem codificada (CPB) inicial alternativo e um deslocamento de remoção de CPB inicial alternativo são especificados na mensagem SEI de período de armazenamento temporário, e um valor de variável UseAltCpbParamsFlag para a unidade de acesso subsequente indica que parâmetros de CPB alternativos são utilizados.
5. Memória legível por computador, caracterizada por possuir instruções nela armazenadas que, quando executadas, fazem com que um computador realize o método conforme definido em qualquer uma das reivindicações 1 a 3.
BR112015016361-0A 2013-01-07 2013-11-26 Operações de armazenamento temporário de vídeo para acesso aleatório em codificação de vídeo BR112015016361B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361749820P 2013-01-07 2013-01-07
US61/749,820 2013-01-07
US14/089,495 2013-11-25
US14/089,495 US9402076B2 (en) 2013-01-07 2013-11-25 Video buffering operations for random access in video coding
PCT/US2013/072086 WO2014107250A1 (en) 2013-01-07 2013-11-26 Video buffering operations for random access in video coding

Publications (2)

Publication Number Publication Date
BR112015016361A2 BR112015016361A2 (pt) 2017-07-11
BR112015016361B1 true BR112015016361B1 (pt) 2023-02-14

Family

ID=51060933

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015016361-0A BR112015016361B1 (pt) 2013-01-07 2013-11-26 Operações de armazenamento temporário de vídeo para acesso aleatório em codificação de vídeo

Country Status (14)

Country Link
US (1) US9402076B2 (pt)
EP (1) EP2941869B1 (pt)
JP (1) JP6169723B2 (pt)
KR (1) KR101724223B1 (pt)
CN (1) CN104904208B (pt)
BR (1) BR112015016361B1 (pt)
DK (1) DK2941869T3 (pt)
ES (1) ES2707892T3 (pt)
HU (1) HUE040707T2 (pt)
PL (1) PL2941869T3 (pt)
PT (1) PT2941869T (pt)
SI (1) SI2941869T1 (pt)
TW (1) TWI561059B (pt)
WO (1) WO2014107250A1 (pt)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2813075A1 (en) * 2012-02-08 2014-12-17 Thomson Licensing Method and apparatus for using an ultra-low delay mode of a hypothetical reference decoder
JP6045222B2 (ja) * 2012-06-28 2016-12-14 株式会社Nttドコモ 動画像予測復号装置、方法及びプログラム
US9374585B2 (en) * 2012-12-19 2016-06-21 Qualcomm Incorporated Low-delay buffering model in video coding
KR102383006B1 (ko) 2013-04-07 2022-04-04 돌비 인터네셔널 에이비 출력 계층 세트들에서의 시그널링 변경
US9591321B2 (en) * 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets
US10547834B2 (en) * 2014-01-08 2020-01-28 Qualcomm Incorporated Support of non-HEVC base layer in HEVC multi-layer extensions
KR102477964B1 (ko) * 2015-10-12 2022-12-16 삼성전자주식회사 미디어 전송 시스템에서 비디오 비트스트림의 임의 접근 및 재생을 가능하게 하는 기법
US10623755B2 (en) * 2016-05-23 2020-04-14 Qualcomm Incorporated End of sequence and end of bitstream NAL units in separate file tracks
WO2021134018A1 (en) 2019-12-26 2021-07-01 Bytedance Inc. Signaling of decoded picture buffer parameters in layered video
KR20220115958A (ko) 2019-12-26 2022-08-19 바이트댄스 아이엔씨 코딩된 비트스트림들에서의 비디오 계층들의 시그널링에 대한 제약들
JP2023508680A (ja) 2019-12-27 2023-03-03 バイトダンス インコーポレイテッド ビデオコーディングにおけるサブピクチャシグナリング
WO2021142369A1 (en) 2020-01-09 2021-07-15 Bytedance Inc. Signalling of the wavefront parallel processing
EP4140128A4 (en) 2020-05-22 2023-08-02 ByteDance Inc. RESTRICTIONS ON IMAGE TYPES IN VIDEO BITSTREAM PROCESSING
CN115943627A (zh) * 2020-06-08 2023-04-07 字节跳动有限公司 对编解码视频图片中条带计数的约束
US11962936B2 (en) 2020-09-29 2024-04-16 Lemon Inc. Syntax for dependent random access point indication in video bitstreams
US20240155114A1 (en) * 2021-02-26 2024-05-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Video coding concept allowing for limitation of drift
CN112888062B (zh) * 2021-03-16 2023-01-31 芯原微电子(成都)有限公司 数据同步方法、装置、电子设备及计算机可读存储介质
US11695965B1 (en) 2022-10-13 2023-07-04 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video coding using a coded picture buffer

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7532670B2 (en) 2002-07-02 2009-05-12 Conexant Systems, Inc. Hypothetical reference decoder with low start-up delays for compressed image and video
US8861599B2 (en) * 2011-03-08 2014-10-14 Sony Corporation Context reduction for last transform position coding
US20130170561A1 (en) 2011-07-05 2013-07-04 Nokia Corporation Method and apparatus for video coding and decoding
US9264717B2 (en) * 2011-10-31 2016-02-16 Qualcomm Incorporated Random access with advanced decoded picture buffer (DPB) management in video coding
US9225978B2 (en) * 2012-06-28 2015-12-29 Qualcomm Incorporated Streaming adaption based on clean random access (CRA) pictures
JP5891975B2 (ja) * 2012-07-02 2016-03-23 富士通株式会社 動画像符号化装置、動画像復号装置、動画像符号化方法および動画像復号方法
US9351005B2 (en) * 2012-09-24 2016-05-24 Qualcomm Incorporated Bitstream conformance test in video coding

Also Published As

Publication number Publication date
CN104904208B (zh) 2019-03-01
BR112015016361A2 (pt) 2017-07-11
JP6169723B2 (ja) 2017-07-26
PT2941869T (pt) 2019-01-30
DK2941869T3 (en) 2019-02-18
KR20150104172A (ko) 2015-09-14
SI2941869T1 (sl) 2019-02-28
KR101724223B1 (ko) 2017-04-06
TWI561059B (en) 2016-12-01
ES2707892T3 (es) 2019-04-05
EP2941869B1 (en) 2018-10-24
CN104904208A (zh) 2015-09-09
US9402076B2 (en) 2016-07-26
WO2014107250A1 (en) 2014-07-10
TW201444341A (zh) 2014-11-16
US20140192882A1 (en) 2014-07-10
JP2016507964A (ja) 2016-03-10
EP2941869A1 (en) 2015-11-11
PL2941869T3 (pl) 2019-04-30
HUE040707T2 (hu) 2019-03-28

Similar Documents

Publication Publication Date Title
BR112015016361B1 (pt) Operações de armazenamento temporário de vídeo para acesso aleatório em codificação de vídeo
KR102115050B1 (ko) 비디오 시퀀스들에서 랜덤 액세스 포인트 픽처들에 대한 디코딩된 픽처 버퍼 프로세싱
ES2810202T3 (es) Adaptación de transmisión continua basada en imágenes de acceso aleatorio limpio (CRA)
KR101721344B1 (ko) 향상된 랜덤 액세스 포인트 화상 거동들을 갖는 비디오 코딩
BR112014033008B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões
BR112015006486B1 (pt) Tempos de chegada e remoção nominal de buffer de imagem codificada na codificação de vídeo
BR112015006441B1 (pt) Indicação e ativação de conjuntos de parâmetros para codificação de vídeo
BR112014024849B1 (pt) Armazenamento em buffer de vídeo de baixo retardo em codificação de vídeo
BR112014010418B1 (pt) Acesso aleatório com gerenciamento de buffer de imagem decodificada avançada (dpb) na codificação de vídeo
BR112015016230B1 (pt) Sinalização condicional de informação de temporização de contagem de ordem de imagens para temporização de vídeo em codificação de vídeo
BR112014026745B1 (pt) Métodos para decodificar e codificar dados de vídeo, dispositivo de decodificação de vídeo para decodificar dados de vídeo e memória legível por computador
WO2014011363A1 (en) Sei message including fixed-length coded video parameter set id (vps_id)
BR112015007273B1 (pt) Método e dispositivo para processar dados de vídeo de múltiplas camadas, dispositivo de codificação de vídeo e memória legível por computador
BR112014033011B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B15K Others concerning applications: alteration of classification

Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04N 19/107 , H04N 19/70

Ipc: H04N 19/107 (2014.01), H04N 19/433 (2014.01), H04N

B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 26/11/2013, OBSERVADAS AS CONDICOES LEGAIS