BR112015025639B1 - Alinhamento poc de camada cruzada para fluxos de bits de várias camadas que podem incluir imagens irap não alinhadas - Google Patents

Alinhamento poc de camada cruzada para fluxos de bits de várias camadas que podem incluir imagens irap não alinhadas Download PDF

Info

Publication number
BR112015025639B1
BR112015025639B1 BR112015025639-2A BR112015025639A BR112015025639B1 BR 112015025639 B1 BR112015025639 B1 BR 112015025639B1 BR 112015025639 A BR112015025639 A BR 112015025639A BR 112015025639 B1 BR112015025639 B1 BR 112015025639B1
Authority
BR
Brazil
Prior art keywords
image
poc
value
reset
video
Prior art date
Application number
BR112015025639-2A
Other languages
English (en)
Other versions
BR112015025639A2 (pt
BR112015025639A8 (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 BR112015025639A2 publication Critical patent/BR112015025639A2/pt
Publication of BR112015025639A8 publication Critical patent/BR112015025639A8/pt
Publication of BR112015025639B1 publication Critical patent/BR112015025639B1/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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • H04N19/68Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience involving the insertion of resynchronisation markers into the bitstream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

Landscapes

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

Abstract

ALINHAMENTO POC DE CAMADA CRUZADA PARA FLUXOS DE BITS DE VÁRIAS CAMADAS QUE PODEM INCLUIR IMAGENS IRAP NÃO ALINHADAS. Em um exemplo, um codificador de vídeo é configurado para codificar um valor para um elemento de sintaxe que indica se pelo menos uma parte do valor de total de ordens de imagem (POC) de uma imagem será reinicializada em um valor de zero, quando um valor para um elemento de sintaxe indicar que a parte do valor POC será reinicializada no valor de zero, reinicializar pelo menos a parte do valor POC de modo que a parte do valor POC seja igual a zero, e codificar os dados de vídeo utilizando o valor POC reinicializado. Codificar dados de vídeo utilizando o valor POC reinicializado pode incluir intra-predizer um bloco de uma imagem subsequente com relação à imagem, onde o bloco pode incluir um parâmetro de movimento que identifica a imagem utilizando-se o valor POC reinicializado. O bloco pode ser codificado utilizando-se inter-predição temporal ou predição inter-camada.

Description

[0001] Este pedido reivindica o benefício do pedido provisório norte-americano N°. de Série 61/809 855, depositado a 8 de abril de 2013, e do pedido provisório norte-americano N°. de Série 61/846 532, depositado a 15 de julho de 2103, cada um dos quais é por este incorporado em sua respectiva totalidade à guisa de referência.
CAMPO TÉCNICO
[0002] Esta revelação refere-se à codificação de vídeo.
ANTECEDENTES
[0003] Capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de aparelhos, que incluem televisões digitais, sistemas de broadcast direto digitais, sistemas de broadcast sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou de mesa, computadores tablet, leitoras de e-books, câmeras digitais, aparelhos de gravação digital, tocadores de meios digitais, aparelhos para jogos de vídeo, consoles para jogos de vídeo, telefones celulares ou de rádio-satélite, os chamados "telefones inteligentes", aparelhos de teleconferência de vídeo, aparelhos de fluxo contínuo de vídeo e semelhantes. Os aparelhos de vídeo digital implementam técnicas de codificação de vídeo tais como as descritas nos padrões definidos pelo MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 Parte 10, Codificação Avançada de Vídeo (AVC) , o padrão de Codificação de Vídeo de Alta Eficácia (HEVC) atualmente em desenvolvimento, e extensões de tais padrões. Os aparelhos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeos digitais de maneira mais eficaz pela implementação de técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover a redundância inerente a sequências de vídeo. Para codificação de vídeo baseada em blocos, uma fatia de vídeo (um quadro de vídeo ou uma parte de quadro de vídeo, por exemplo), pode ser particionada em blocos de vídeo que podem ser também referidos como blocos de árvore, 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 utilizando-se predição espacial com 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 pode utilizar predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e as imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Dados residuais representam definições de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco inter-codifiçado é codificado de acordo com um vetor de movimento que indica um bloco de amostras de referência que forma o bloco preditivo, e os dados residuais que indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intra-codifiçado é codificado de acordo com um modo de intra-codificação e os dados residuais. Para compactação adicional, os dados residuais podem ser transformados no domínio de pixel no domínio de transformada, do que resultam coeficientes de transformada residuais que podem ser então quantificados. Os coeficientes de transformada quantificados, inicialmente dispostos em um arranjo bidimensional, podem ser varridos de modo a ser produzir um vetor unidimensional de coeficientes de transformada, e a codificação por entropia pode ser aplicada de modo a se obter uma compactação ainda maior.
SUMÁRIO
[0006] Em geral, esta revelação descreve técnicas para codificar um elemento de sintaxe para uma imagem que indica se um valor o total de ordens de imagem (POC) para a imagem será reinicializado. Em particular, um codificador de vídeo (tal como um codificador de vídeo ou um decodificador de vídeo) pode codificar um valor que indica que o valor POC para uma imagem de ponto de acesso não intra-aleatório (IRAP) será reinicializado quando a imagem não IRAP for incluída em uma unidade de acesso com uma imagem IRAP, como, por exemplo, em camadas de codificação de vídeo diferentes. Desta maneira, as técnicas desta revelação podem suportar não alinhamento de imagens IRAP através de camadas de codificação de vídeo diferentes, ao mesmo tempo assegurando também que os valores POC são alinhados entre imagens de camadas de codificação de vídeo diferentes.
[0007] Em exemplo, um método para decodificar dados de vídeo inclui determinar se o valor para um elemento de sintaxe indica que pelo menos uma parte do valor de total de ordens de imagem (POC) de uma imagem será reinicializada em um valor de zero, quando o valor para o elemento de sintaxe indicar que a parte do valor POC será reinicializada no valor de zero, reinicializando pelo menos a parte do valor POC de modo que a parte do valor POC seja igual a zero, e decodificar dados de vídeo utilizando-se o valor POC reinicializado.
[0008] Em outro exemplo, um método para codificar dados de vídeo inclui determinar se se vai reinicializar pelo menos uma parte do valor de total de ordens de imagem (POC) de uma imagem em um valor de zero, em resposta à determinação de reinicializar a pelo menos parte do valor POC, reinicializar pelo menos uma parte do valor POC, de modo que a parte do valor POC seja igual a zero, e codificar um valor para um elemento de sintaxe que indica que pelo menos a parte do valor POC será reinicializada no valor de zero e codificar dados de vídeo utilizando o valor POC reinicializado.
[0009] Em outro exemplo, um aparelho para codificar dados de vídeo inclui um codificador de vídeo configurado para codificar um valor para um elemento de sintaxe que indica se pelo menos uma parte do valor de total de ordens de imagem (POC) de uma imagem será reinicializada em um valor de zero, quando o valor para o elemento de sintaxe indicar que a parte do valor POC será reinicializada no valor de zero, reinicializar pelo menos a parte do valor POC de modo que a parte do valor POC seja igual a zero e codificar dados de vídeo utilizando o valor POC reinicializado.
[0010] Em outro exemplo, um aparelho para codificar dados de vídeo inclui um dispositivo para codificar um valor para um elemento de sintaxe que indica se pelo menos uma parte do valor de total de ordens de imagem (POC) de uma imagem será reinicializada a um valor de zero, um dispositivo para reinicializar, quando o valor para o elemento de sintaxe indicar que a parte do valor POC será reinicializada ao valor de zero, pelo menos a parte do valor POC de modo que a parte do valor POC seja igual a zero, e um dispositivo para codificar dados de video utilizando o valor POC reinicializado.
[0011] Em outro exemplo, um meio de armazenamento passível de leitura por computador tem armazenadas nele instruções que, quando executadas, fazem com que um processador programável codifique um valor para um elemento de sintaxe que indica se pelo menos uma parte do valor de total de ordens de imagem (POC) de uma imagem será reinicializada a um valor de zero, quando o valor para o elemento de sintaxe indicar que a parte do valor POC será reinicializada ao valor de zero. Reinicialize pelo menos a parte do valor de ponderação de modo que a parte do valor POC seja igual a zero e codifique dados de vídeo utilizando o valor POC reinicializado.
[0012] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição seguinte. Outros recursos, objetos e vantagens serão evidentes com a descrição e com os desenhos, e com as reivindicações.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[0013] A Figura 1 é um de maneira que mostra um sistema de codificação e decodificação de vídeo exemplar de acordo com um ou mais zonas descritos nesta revelação.
[0014] A Figura 2 é um diagrama de blocos que mostra um codificador de vídeo exemplar que pode implementar as técnicas descritas nesta revelação.
[0015] A Figura 3 é um diagrama de blocos que mostra um decodificador de vídeo exemplar que pode implementar as técnicas descritas nesta revelação.
[0016] A Figura 4 é um diagrama conceptual que mostra uma sequência de imagens de vídeo codificadas.
[0017] A Figura 5 é um fluxograma que mostra um método exemplar para codificar dados de vídeo de acordo com as técnicas desta revelação.
[0018] A Figura 6 é um fluxograma que mostra um método exemplar para decodificar dados de vídeo de acordo com as técnicas desta revelação.
DESCRIÇÃO DETALHADA
[0019] Esta revelação descreve técnicas para suportar imagens de ponto de acesso intra-aleatório (IRAP) não alinhadas que podem iniciar uma nova sequência de vídeo codificada de modo que se garanta que os mesmos valores de total de ordens de imagem (POC) sejam alinhados à maneira de camadas cruzadas. As técnicas podem ser aplicadas à codificação de várias camadas. Alguns métodos revelados podem ser também aplicados à codificação de vídeo de camada única.
[0020] Em particular, as imagens IRAP não alinhadas ocorrem em situações nas quais uma unidade de acesso inclui tanto uma imagem IRAP quanto uma imagem não IRAP em camadas de codificação de vídeo diferentes. As imagens em uma sequência de vídeo codificada (CVS) têm valores POC que identificam de modo a única as respectivas imagens nessa CVS. Os valores POC de imagens indicam geralmente ordens de saída das imagens com relação a outras imagens na mesma CVS. As imagens IRAP têm valores POC de zero. Assim, as imagens IRAP não alinhadas levam a unidade de acesso que incluem imagens que tem valores POC diferentes.
[0021] Entretanto, os valores POC são utilizados para identificar imagens de referência inter- camada. Ou seja, quando uma imagem é codificada utilizando- se predição inter-camada (predição inter-vista), o valor POC de uma imagem de referência é sinalizado de modo que um decodificador de vídeo possa identificar a imagem de referência. No caso de valores POC estarem alinhados, é simples determinar que a imagem atual é predita inter- camada, a saber, quando o valor POC da imagem de referência é idêntico ao valor POC da imagem atual. Valores POC alinhados incorretamente de imagens entre camadas de codificação de vídeo tornam a identificação de imagens de referência mais difícil. Além disto, as fronteiras entre unidades de acesso tornam-se difíceis de detectar e podem tender a erros.
[0022] Portanto, esta revelação descreve técnicas para permitir imagens IRAP não alinhadas, assegurando ao mesmo tempo que os valores POC para imagens em uma unidade de acesso comum sejam alinhadas de maneira cruzada. Em particular, um elemento de sintaxe pode indicar que pelo menos uma parte de um valor POC para uma imagem será reinicializada (isto é, fixada em um valor de zero). Por exemplo, um codificador de vídeo pode determinar que uma unidade de acesso inclui uma imagem IRAP em uma camada e uma imagem não IRAP em outra camada diferente. 0 codificador de vídeo pode, portanto, sinalizar que o valor POC para imagem não IRAP será reinicializado. Um decodificador de vídeo pode reinicializar o valor POC para a imagem não IRAP e também modificar valores POC de outras imagens na mesma camada de codificação de vídeo da imagem não IRAP. Ou seja, o decodificador de vídeo pode modificar valores POC destas outras imagens de modo que as definições entre o valor POC da imagem não IRAP e outras imagens na mesma camada e a mesma CVS permaneçam constantes após a reinicialização do valor POC da imagem não IRAP.
[0023] Pelo ajuste dos valores POC desta maneira, pode-se assegurar que todas as imagens em uma unidade de acesso comum tenham o mesmo valor POC, embora não seja necessário alinhar as imagens IRAP. Assim, a detecção de fronteiras entre unidades de acesso pode ser simplificada e tornada mais resiliente a erros, e a identificação de imagens de referência inter-camada pode ser também simplificada.
[0024] Os padrões de codificação de vídeo incluem o ITU-T H.261, o ISO/IEC MPEG-1 Visual, o ITU-T H.262 ou ISSO/IEC MPEG-2 Visual, o ITU-T H.263, O ISO/IEC MPEG-4 Visual e o ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), que inclui sua Codificação Escalonável de Vídeo (SVC) e extensões da Codificação de Vídeo de Várias Vistas (MVC).
[0025] Recentemente, o desenho de um novo padrão de codificação de vídeo, a saber, a Codificação de Vídeo de Alta Eficácia (HEVC) foi finalizado pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo (VCEG) ITU-T e do Grupo de Especialistas em Imagens em Movimento (MPEG) ISO/IEC a especificação de Rascunho HEVC mais recente referida como WD10 HEVC daqui por diante, está disponível de: http://phenix.int- evry.fr/j ct/doc_end_user/documents/12_Geneva/wgll/JCTVC- L1003-v34.zip.
[0026] A extensão de várias vistas da HEVC, a saber, a MV-HEVC, está sendo também desenvolvida pelo JCT- 3V. Um Rascunho Operacional (WD) recente da MV-HEVC, referido como WD3 MV-HEVC daqui por diante, está disponível de: http://phenix.it- sudparis.eu/j ct2/doc_end_user/documents/3_Geneva/wgll/JCT3V -C1004-V4.zip.
[0027] A extensão escalonável da HEVC denominada de SHVC, está também sendo desenvolvida pelo JCT-VC. Um Rascunho Operacional (WD) recente da SHVC, referido como WD1 SHVC daqui por diante, está disponível de: http://phenix.int- evry.fr/j ct/doc_end_user/documents/12_Geneva/wgll/JCTVC- L1008-V1.zip.
[0028] Este documento supõe os conceitos seguintes de imagem (codificada), unidade de acesso (AU) , IRAP AU, sequência de vídeo codificada (CVS) e fluxo de bits, embora os métodos se apliquem também se algumas destas suposições forem alteradas: imagem (codificada): Semelhante à definição de imagem atual (codificada), onde uma imagem codificada é equivalente a uma representação em camada na SVC, um componente de vista na MVC e um componente de vista de textura ou profundidade no MVC + D. - unidade de acesso: Semelhante à SVC e MVC, uma AU consiste em todas as imagens codificadas associadas ao mesmo tempo de saída e a suas unidades não VCL conexas. - unidade de acesso IRAP: Uma unidade de acesso na qual todas as imagens codificadas são imagens IRAP. - sequência de vídeo codificada (CVS): Uma sequência de unidades de acesso que consiste na ordem de decodificação em uma unidade de acesso IRAP com NoRaslOutputFlag igual a 1, seguida de zero ou mais unidades de acesso que não são unidades de acesso IRAP NoRaslOutputFlag igual a 1, que incluem todas as unidades de acesso subsequentes até mas que não incluem qualquer unidade de acesso subsequente que é uma unidade de acesso IRAP com NoRaslOutputFlag igual a 1. o Note-se que as palavras são idênticas às do WD10 HEVC. - fluxo de bits: Uma sequência de bits sob a forma de um fluxo de unidades NAL ou um fluxo de bytes, que forma a representação de uma ou mais CVSs. o A primeira AU em um fluxo de bits será uma AU IRAP (conforme definido acima).
[0029] As imagens de renovação de decodificador instantânea (IDR), as imagens de acesso aleatório limpas (CRA) e as imagens de acesso a link quebrado (BLA) são coletivamente referidas como imagens IRAP. A necessidade de alinhamento de camadas cruzadas para imagens IRAP desabilitariam alguns cenário de utilização vantajosos. Em um fluxo de bits de duas camadas, quando há mais imagens IRAP na camada base do que na camada de aperfeiçoamento, em aplicativos de broadcast e multicast, a sintonização de baixo retardo enquanto ao mesmo tempo a eficácia de codificação evada pode ser obtida. Assim, é desejável proporcionar imagens IRAP não alinhadas.
[0030] Entretanto, quando uma imagem (PicA) é uma imagem IRAP com NoRaslOutputFlag igual a 1, e outra imagem (PicB) na unidade de acesso não é uma imagem IRAP com NoRaslOutputFlag igual a 1, o valor POC de uma imagem (PicC) na imagem que contém a PicA pode ser diferente do valor POC de uma imagem (PicD) na camada que contém a PicB, onde PicC e PicD estão na mesma unidade de acesso e PicC pode ou pode ou pode não ser PicA (e consequentemente PicD pode ou pode não ser PicD). Isto é porque cada imagem IRAP com NoRaslOutputFlag igual a 1 reinicializa o valor POC como sendo igual aos bits menos significativos (LSB) POC sinalizados ou derivados para imagem IRAP com NoRaslOutputFlag igual a 1.
[0031] Isto torna mais difícil a identificação de imagens de referência em codificação de vídeo de várias camadas com predição inter-camada comparada com quando valores POC são alinhados de maneira cruzada. No WD3 MV- HEVC, POC é utilizado como uma das identificações bidirecionais para identificar uma imagem de referência inter-camada.
[0032] Além disso, isto torna a detecção de fronteiras entre unidades de acesso (AUs) mais difícil e não resiliente a erros. Por exemplo, suponha-se que a AU1 consiste em PicA e PicB na camada base e na camada de aperfeiçoamento, respectivamente, e que a AU1 precede a AU2 na ordem de decodificação. Em seguida, se tanto a PicB quanto a PicC se perderem, não há maneira de o decodificador saber que a PicA e a PicD recebidas pertencem a duas AUs diferentes com base nas imagens codificadas. No mesmo exemplo, se a AU2 consistir em apenas na PicD na camada de aperfeiçoamento enquanto a PicC jamais existe, então o mesmo problema ocorreria mesmo quando apenas uma imagem, a PicB se perde.
[0033] Esta revelação descreve técnicas que permitem o alinhamento não cruzado de imagens IRAP com NoRaslOutputFlag igual a 1, ao mesmo tempo proporcionando alinhamento cruzado de valores POC para todas as AUs.
[0034] A Figura 1 é um diagrama de blocos que mostra um sistema de codificação e decodificação de vídeo exemplar de acordo com um ou mais exemplos descritos nesta revelação. Por exemplo, o sistema 10 inclui um aparelho de origem 12 e um aparelho de destino 14. O aparelho de origem 12 e o aparelho de destino 14 são configurados para implementar as técnicas descritas nesta revelação. Em alguns exemplos, o sistema 10 pode ser configurado para suportar codificação, transmissão, armazenamento, decodificação e/ou apresentação de dados de vídeo codificados, tais como dados de vídeo codificados de acordo com o padrão HEVC, conforme descrito, por exemplo, no WD10 e suas extensões, tais como, por exemplo, as extensões descritas no WD3 MV-HEVC, no WD1 SHVC ou semelhantes. Entretanto, as técnicas descritas nesta revelação podem ser aplicadas a outros padrões ou outras extensões de codificação de vídeo.
[0035] Conforme mostrado na Figura 1, o sistema 10 inclui um aparelho de origem 12 que gera dados de vídeo codificados a serem decodificados posteriormente por um aparelho de destino 14. O aparelho de origem 12 e o aparelho de destino 14 podem compreender qualquer um de uma ampla faixa de aparelhos, inclusive computadores de mesa, computadores notebook (isto é, laptop), computadores tablet, conversores set-top box, aparelhos telefônicos tais como os chamados telefones inteligentes", os chamados dispositivos "inteligentes", televisões, câmeras, aparelhos de exibição, tocadores de meios digitais, consoles para jogos de vídeo, aparelhos de fluxo contínuo de vídeo ou semelhantes. Em alguns casos, o aparelho de origem 12 e o aparelho de destino 14 podem ser equipados para comunicação sem fio.
[0036] 0 aparelho de destino 14 pode receber os dados de vídeo codificados a serem decodificados por meio de um link 16. O link 16 pode compreender qualquer tipo de meio ou aparelho capaz de mover os dados de vídeo codificados do aparelho de origem 12 até o aparelho de destino 14. Em um exemplo, o link 16 pode compreender um meio de comunicação para permitir que o aparelho de origem 12 transmita dados de vídeo codificados diretamente para o aparelho 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 aparelho de destino 14. 0 meio de comunicação pode compreender qualquer meio de comunicação sem fio ou cabeado, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área estendida ou uma rede global 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 a comunicação do aparelho de origem 12 com o aparelho de destino 14.
[0037] Alternativamente, os dados codificados podem ser transmitidos da interface de saída 22 para um aparelho de armazenamento 34. Da mesma maneira, os dados codificados podem ser acessados do aparelho de armazenamento 34 por uma interface de entrada. 0 aparelho de armazenamento 34 pode incluir qualquer um de diversos meios de armazenamento de dados distribuídos ou localmente acessados, tais como uma unidade rígida, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou quaisquer outros meios de armazenamento digital para armazenar dados de vídeo codificados. Em outro exemplo, o aparelho de armazenamento 34 pode corresponder a um servidor de arquivos ou outro aparelho de armazenamento intermediário que possa guardar o vídeo codificado gerado pelo aparelho de origem 12. O aparelho de destino 14 pode acessar dados de vídeo armazenados do aparelho de armazenamento 34 por meio de fluxo contínuo ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o aparelho de destino 14. Servidores de arquivos exemplares incluem um servidor da Web (para um site da Web, por exemplo), um servidor FTP, aparelhos de armazenamento anexados a redes (NAS) ou uma unidade de disco local. 0 aparelho de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, inclusive uma conexão com a Internet. Isto pode incluir um canal sem fio (uma conexão WiFi, por exemplo), uma conexão cabeada (como, por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambas que seja adequada para acessar dados de vídeo codificados em um servidor de arquivos. A transmissão de dados de vídeo codificados do aparelho de armazenamento 34 pode ser uma transmissão de fluxo contínuo, uma transmissão de download ou uma combinação de ambas.
[0038] As técnicas desta revelação não estão limitadas a aplicativos ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte a qualquer um de diversos aplicativos multimídia, tais como broadcasts de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo de fluxo contínuo, como, por exemplo, por meio da Internet, codificação de vídeo digital para armazenamento em uma maneira eficaz de dados, decodificação de vídeo digital armazenado em uma maneira eficaz de dados, ou outros aplicativos. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo unidimensional ou bidimensional para suportar aplicativos tais como fluxo contínuo de vídeo, repetição de vídeo, execução de broadcasts de vídeo e/ou telefonia com vídeo.
[0039] No exemplo da Figura 1, o aparelho de origem 12 inclui uma fonte de vídeo 18, um codificador de vídeo 2 0 e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador/demodulador (modem) e/ou um transmissor. No aparelho de origem 12, a fonte de vídeo 18 pode incluir uma fonte, tal como, um aparelho de captação de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo que contém vídeo previamente captado, uma interface de alimentação de vídeo, para receber vídeo de um provedor de conteúdos 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 exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o aparelho de origem 12 e o aparelho 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 aplicadas à codificação de vídeo em geral e podem ser aplicadas a aplicativos sem fio e/ou cabeados.
[0040] 0 vídeo captado, pré-captado 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 aparelho de destino 14 por maio da interface de saída 22 do aparelho de origem 12. Os dados de vídeo codificados podem ser também (ou alternativamente) armazenados no aparelho de armazenamento 34 para acesso posterior pelo aparelho de destino 14 ou por outros aparelhos, para decodificação e/ou repetição.
[0041] 0 aparelho de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30 e um aparelho 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 do aparelho de destino 14 recebe os dados de vídeo codificados através do link 16. Os dados de vídeo codificados comunicados através do link 16 ou fornecidos no aparelho de armazenamento 34, podem incluir diversos elementos de sintaxe gerados pelo codificador de vídeo 20 para utilização por um decodificador de vídeo, tal como o decodificador de vídeo 30, na 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 arquivos.
[0042] O aparelho de exibição 32 pode ser integrado com o, ou externo ao, aparelho de destino 14. Em alguns exemplos, o aparelho de destino 14 pode incluir um aparelho de exibição integrado e pode ser também configurado para formar interface com um aparelho de exibição externo. Em outros exemplos, o aparelho de destino 14 pode ser um aparelho de exibição. Em geral, o aparelho de exibição 32 exibe os dados de vídeo decodificados ao usuário e pode compreender qualquer um de diversos aparelhos de exibição, tais como uma tela de cristal líquido (LCD) , uma tela de plasma, uma tela de diodo emissor de luz orgânico (OLED) ou outro tipo de aparelho de exibição.
[0043] 0 codificador de vídeo 20 e o decodificador de vídeo 30 podem funcionar de acordo com um padrão de compactação de vídeo, tal como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação Avançada de Vídeo (AVC) ou extensões de tais padrões. Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem funcionar de acordo com outros padrões patenteados ou industriais, tais como o padrão de Codificação de Vídeo de Alta Eficácia (HEVC) atualmente em desenvolvimento, assim como extensões do padrão HEVC. As técnicas desta revelação, contudo, não estão limitadas a qualquer padrão de codificação específico. Outros exemplos de padrão compactação de vídeo inclui o MPEG-2 e o ITU-T H.263.
[0044] Embora não mostrado na Figura 1, sob alguns aspectos, o codificador de vídeo 20 e decodificador de vídeo 30, podem ser, cada, integrados com um codificador de vídeo e decodificador de vídeo de áudio e podem incluir unidades MUX-DEMUX apropriadas ou outro hardware e software, para processar a codificação tanto de áudio quanto de vídeo em um fluxo de dados comum ou fluxo de dados separados. Se aplicável, em alguns exemplos, as unidades MUX-DEMUX podem conformar-se ao protocolo de multiplexador ITU H.223 ou a outros protocolos tais como o protocolo de datagrama de usuário (UDP).
[0045] De acordo com as técnicas desta revelação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar valores de elementos de sintaxe que indicam se valores de total de ordens de imagem (POC) de imagens serão parcialmente ou completamente reinicializados. Uma reinicialização parcial pode corresponder à configuração de uma parte do valor POC, como, por exemplo, apenas bits mais significativos (MSBs), igual a zero. Uma reinicialização completa pode corresponder à configuração de todos os bits do valor POC igual a zero. Assim, quando o elemento de sintaxe indicar que o valor POC de uma imagem será reinicializado parcial ou completamente, o decodificador de vídeo 30 pode reinicializar os bits correspondentes do valor POC em zero.
[0046] Além disso, o decodificador de vídeo 30 pode também configurar bits de valores POC de outras imagens na mesma camada da imagem para a qual o valor POC foi reinicializado, de modo que as definições entre os valores POC destas outras imagens permaneçam o mesmo após a reinicialização, bem como antes da reinicialização. Para cada uma de N outras imagens, por exemplo, o decodificador de vídeo 3 0 pode determinar uma diferença de Di, onde i fica entre 0 e N-l inclusive e representa uma destas outras imagens. Neste exemplo, o decodificador de vídeo 30 pode calcular Di + POCbase - POCi, onde "base refere-se à imagem para a qual o valor POC foi reinicializado. O decodificador de vídeo 30 pode então ser decrementado de modo que POCi_decremented + Di — POCftase_ reset i onde POCi_decremented representa o valor POC decrementado da imagem i e POCbase_reset representa o valor reinicializado de POCbase. Em exemplos nos quais o valor POC de uma imagem que será reinicializada for fixada em zero, o decodificador de vídeo 30 pode decrementar os valores POC de outras imagens na mesma CVS e na mesma camada de codificação de vídeo pelo valor POC inicial (isto é, antes da reinicialização da imagem). Alternativamente, o decodificador de vídeo 30 pode fixar os valores POC de outras imagens na mesma CVS e na mesma camada de codificação de vídeo como iguais à diferença entre o valor POC inicial da imagem para a qual o valor POC será reinicializado e o valor POC da outra imagem (isto é, igual a Di) .
[0047] Em um conjunto de exemplos, um primeiro indicador é adicionado a um cabeçalho de fatia para especificar se os valores POC são reinicializados como iguais aos bits menos significativos (LSBs) POC, isto é, os bits mais significativos (MSBs) POC são reinicializados como iguais a zero e, se este for o caso, os valores POC de todas as imagens na mesma camada da imagem atual e no armazenador de imagens decodificadas (DPB) são decrementados, de modo que a diferença entre os valores POC da imagem atual e qualquer imagem na mesma camada e no DPB permaneça a mesma como se o primeiro indicador indicasse o contrário.
[0048] Neste conjunto de exemplos, um segundo indicador pode ser adicionado ao cabeçalho de fatia para especificar se os LSBs POC são reinicializados como sendo iguais a zero. Quando utilizado junto com o primeiro indicador, o segundo indicador permite que decodificadores aloquem livremente valores diferentes de LSBs POC para imagens nas camadas diferentes. Este conjunto de exemplos permite o alinhamento não cruzado de imagens IRAP com NoRaslOutputFlag igual a 1, ao mesmo tempo garantindo o alinhamento cruzado de valores POC para todas as AUs ao mesmo tempo, em que as imagens IRAP com NoRaslOutputFlag igual a 1 pode ser qualquer um dos três tipos imagens IRAP, isto é, imagens IDR, CRA e BLA.
[0049] Em outro conjunto de exemplos, é proposto que, quando imagens IDR não estão alinhadas em uma unidade de acesso, se pelo menos uma imagem nessa AU for uma imagem IDR, os valores POC de todas as imagens em uma unidade de acesso são fixados em zero, à semelhança de uma imagem IDR. Isto permitiria o alinhamento não cruzado de imagens IRAP com NoRaslOutputFlag igual a 1, garantindo ao mesmo tempo o alinhamento cruzado de valores POC para todas as AUs ao mesmo tempo, em que as imagens IRAP com NoRaslOutputFlag igual a 1 são imagens IDR, mais especificamente o seguinte se aplica a estes conjuntos de exemplos: 1. Um indicador, a saber, idr_au_jpresent_flag é sinalizado no cabeçalho de fatia, como, por exemplo, sendo parte dos bits sinalizados no início do cabeçalho de fatia com slice_reserved_flag[ i ]. a. Para uma imagem com nuh_layer_id maior que 0, o indicador igual a 1 indica que o valor POC é reinicializado em 0, uma vez que é feito para uma imagem IDR, o indicador 0 indica que o valor POC não é reinicializado. 2. Para uma imagem IDR, este indicador pode ser utilizado para outros fins ou pode ser reservado como sendo 1, ou pode estar ausente, mas inferido como sendo igual a 1.
[0050] Para ambos os conjuntos de exemplos, para uma imagem com nuh_layer_id igual a 0 o indicador não toma qualquer efeito para um decodificador da versão HEVC 1 (que é um decodificador 2D de uma camada baseado no WD10 HEVC, uma vez que tal decodif icador ignora o(s) indicador(es)).
[0051] Diversos exemplos de implementações detalhadas destas técnicas exemplares são descritos em seguida. As alterações propostas são realçadas em seguida, onde o texto em itálico representa acréscimos e [removido:""] representa supressões com relação à versões anteriores do padrão. Em geral, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para executar as técnicas desta revelação. Esta revelação descreve um "codificador de vídeo" como executando estas técnicas. Deve ficar entendido que o termo "codificador de vídeo" pode referir-se a um codificador de vídeo, tal como o codificador de vídeo 20 ou a um decodificador de vídeo, tal como o decodificador de vídeo 30. Da mesma maneira, o termo codificação de vídeo pode referir-se à codificação de vídeo e/ou decodificação de vídeo. Um codificador de vídeo tal como o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode ser configurado para executar qualquer uma ou todas as técnicas descritas nesta revelação, no caso determinadas técnicas serem descritas da perspectiva de um decodificador de vídeo, um codificador de vídeo pode executar as mesmas técnicas ou técnicas semelhantes (correspondentes, por exemplo). Da mesma maneira, no caso de determinadas técnicas serem descritas da perspectiva de um codificador de vídeo, um decodificador de vídeo pode executar as mesmas técnicas ou técnicas semelhantes (correspondentes, por exemplo).
[0052] É descrito em seguida um primeiro exemplo de acordo com as técnicas desta revelação. Este exemplo é referido em seguida como Exemplo 1. A sintaxe e a semântica em seguida, em geral, referem-se a seções correspondentes no WD10 HEVC. Conforme mencionado acima, o que é realçado indica acréscimos propostos e tachado indica supressões propostas.
Exemplo 1
[0053] A sintaxe e a semântica de cabeçalho de segmentos de fatias gerais são primeiro descritas em seguida. Sintaxe de cabeçalho de segmento de fatia geral
Figure img0001
[0054] São descritos em seguida os elementos semânticas de cabeçalho de segmentos de fatias gerais. Conforme mencionado acima o texto em itálico indica acréscimos propostos e [removido:""] indica supressões propostas. A semântica para elementos de sintaxe inalterados pode permanecer idêntica à semântica descrita na versão anterior do padrão.
[0055] poc_msb_reset_flag igual a 1 especifica que o total de ordens de imagem derivado para imagem atual é igual a slice_pic_order_cnt_lsb. poc_msb_reset_flag igual a zero especifica que o total de imagens de ordem de imagens derivado para a imagem atual pode ou pode não ser igual a slice_pic_order_cnt_lsb.
[0056] Quando presente poc_msb_reset_flag será igual a 1 quando a imagem atual não for uma imagem TRAP com NoRaslOutputFlag igual ale pelo menos uma imagem na unidade de acesso atual for uma imagem TRAP com NoRaslOutputFlag igual a 1.
[0057] Quando não presente o valor de poc_msb_reset_flag é identificado como sendo igual a 0.
[0058] pocmsbresetflag especifica que o total de ordens de imagem derivado para a imagem atual ê igual a 0. poc_msb_reset_flag igual a 0 especifica que o total de ordens de imagem derivado para a imagem atual pode ou pode não ser igual a 0.
[0059] Quando presente, o valor de poc_lsb_reset_flag será igual a 1 quando a imagem atual não for uma imagem IDR e pelo menos uma imagem na unidade de acesso atual for uma imagem IDR.
[0060] Quando não presente, o valor de poc_lsb_reset_flag é inferido como sendo igual a 0.
[0061] Por conseguinte, o codificador de vídeo 20 pode fixar poc_msb_reset_flag como tendo um valor de 1 para uma imagem que não é uma imagem TRAP e que está em uma unidade de acesso que inclui uma imagem TRAP, como, por exemplo, em uma camada de codificação de vídeo diferente. Da mesma maneira, o decodificador de vídeo 30 ao receber um valor de 1 para uma imagem que não é uma imagem IRAP, pode reinicializar o valor dos MSBs do valor POC para imagem e ajustar os valores POC de outras imagens na mesma camada e na mesma sequência de vídeo codificada conforme necessário.
[0062] Os elementos semânticos de processo de decodificação gerais são descritos em seguida. O decodificador de vídeo 30 pode ser configurado para decodificar dados de vídeo conforme descrito em seguida. O codificador de vídeo 20 pode ser configurado para codificar dados de vídeo de acordo com um processo correspondente ao descrito em seguida. Conforme mencionado acima, as alterações em seguida podem ser feitas com relação a partes correspondentes do WD10 HEVC. 0 texto em itálico indica acréscimos propostos e [removido:""] indica supressões propostas. Processo de decodificação geral A entrada para este processo é um fluxo de bits. A saída deste processo é uma lista de imagens decodificadas. A lista de identificadores de camada (T) TargetDecLeyerldList, que especifica a lista de valores nuh_layer_id em ordem crescente de valores nuh_layer_id, das unidades NAL a serem decodificadas, é especificada de maneira seguinte: Se alguns dispositivos externos, não especificados neste Relatório, estiver disponível para configurar TargetDecLeyerldList é configurado pelos dispositivos externos. - Caso contrário, se o processo de decodificação for chamado em um teste de conformação de fluxo de bits especificado no sub-parágrafo C.l, TargetDecLeyerldList é configurado conforme especificado no sub-parágrafo C.l. Caso contrário TargetDecLeyerldList contém apenas um valor nuh_layer_id que é igual a 0. 0 HighestTid, que identifica a sub-camada temporal mais elevada a ser decodificada, ê especificado de maneira seguinte: - Se algum dispositivo externo, não especificado neste Relatório, estiver disponível para configurar HighestTid, HighestTid é configurado pelo dispositivo externo. - Caso contrário, se o processo de decodificação for chamado em um teste de conformação de fluxo de bits especificado no sub-parágrafo C.l, HighestTid é configurado conforme especificado no sub-parágrafo C.l. - Caso contrário HighestTid é configurado como igual a sps_max_sub_layers_minusl. 0 processo de extração de sub-fluxo de bits especificado no parágrafo 10 é aplicado com o fluxo de bits, HighestTid, e TargetDecLeyerldList como entradas, e a saída é atribuída a um fluxo de bits referido como BitstreamToDecode. Os processos de decodificação especificados no restante deste sub-parágrafo se aplicam a cada imagem codificada, referida como a imagem atual e denotada pela variável CurrPic, em BitstreamToDecode. Dependendo do valor de chroma_format_idc, o número de arranjos de amostra da imagem atual é o seguinte: - Se chroma_format_idc for igual a zero a imagem atual consiste em 1 arranjo de amostra Si. - Caso contrário (chroma_format_idc não é igual a zero) a imagem atual consiste em 3 arranjos de amostra Si, Scbz Scr. O processo de decodificação para a imagem atual recebe como entradas os elementos de sintaxe e as variáveis de caixa alta do parágrafo 7. Quando se interpreta a semântica de cada elemento de sintaxe em cada unidade NAL, o termo "o fluxo de bits" (ou uma parte dele, como, por exemplo, uma CVS do fluxo de bits) refere-se a BitstreamToDecode (ou a uma parte dele). O processo de decodificação é especificado de modo que todos os decodificadores produzam imagens decodificadas colhidas e numericamente idênticas. Qualquer processo de decodificação que produza imagens decodificadas colhidas idênticas às produzidas pelo processo aqui descrito (com a ordem de saída ou a temporização de saída correta, conforme especificada) se conforma aos requisitos de processo de decodificação deste Relatório. Quando a imagem atual ê uma imagem TRAP, o seguinte se aplica: - Se a imagem atual for uma imagem IDR ou uma imagem BLA, a variável NoRaslOutputFlag ê configurada como igual a 1. - Caso contrário (a imagem atual ê uma imagem CRA), o seguinte se aplica: - Se a imagem atual for a primeira imagem no fluxo de bits em ordem decodificação ou a primeira imagem que se segue a uma unidade NAL de fim de sequência em ordem de decodificação, todas as imagens na mesma unidade de acesso serão imagens CRA, a variável NoRaslOutputFlag é configurada como igual a 1. - Caso contrário, se algum dispositivo externo não especificado neste Relatório estiver disponível para fixar a variável HandleCraAsBlaFlag em um valor para a imagem atual, a variável HandleCraAsBlaFlag é configurada como igual ao valor apresentado pelo dispositivo externo e a variável NoRaslOutputFlag é configurada como igual a HandleCraAsBlaFlag. Neste caso o valor HandleCraAsBlaFlag para imagem atual não será igual a 1 quando houver uma imagem não CRA na unidade de acesso atual. - Caso contrário, a variável HandleCraAsBlaFlag é configurada como igual a 0 e a variável NoRaslOutputFlag ê configurada como igual a 0. Quando a imagem atual tem nuh_layer_id igual a 0, o processo de decodificação para uma imagem codificada com nuh_layer_id igual a 0 especificada no sub-parágrafo 8.1.1 é chamado.
[0063] É descrita em seguida a semântica para o processo de decodificação para uma imagem codificada com nuh_layer_id igual a 0. O decodificador de vídeo 30 pode ser configurado para decodificar dados de vídeo conforme descrito em seguida. 0 codificador de vídeo 20 pode ser configurado para codificar dados de vídeo de acordo com o processo correspondente ao descrito em seguida. Processo de decodifIcação para uma imagem codificada com nuh_layer_id Igual a 0 Quando a imagem atual é uma imagem BLA que tem nal_unit_type igual BLA_W_LP ou é uma imagem CRA, o seguinte se aplica: - Se algum dispositivo externo não especificado neste Relatório estiver disponível para fixar a variável UseAltCpbParamsFlag em um valor, UseAltCpbParamsFlag é fixado como igual ao valor apresentado pelo dispositivo externo. - Caso contrário, o valor de UseAltCpbParamsFlag é fixado como igual a 0. [removido:"Quando a imagem atual é uma imagem IRAP, o seguinte se aplica: - Se a imagem atual com um nuh_layer_id específico for uma imagem IDR, uma imagem BLH, a primeira imagem com esse nuh_layer_id específico no fluxo de bits em ordem de decodif icação, ou a primeira imagem com esse nuh_layer_id específico que se segue a uma unidade NAL de fim de sequência em ordem de decodificação, a variável NoRaslOutputFlag é fixada como igual a 1. - Caso contrário, se algum dispositivo externo não especificado neste Relatório estiver disponível para fixar a variável HandleCraAsBlaFlag em um valor para imagem atual, a variável HandleCraAsBlaFlag é fixada como igual ao valor apresentado pelo dispositivo externo e a variável NoRaslOutputFlag é fixada como igual HandleCraAsBlaFlag. - Caso contrário, a variável HandleCraAsBlaFlag é fixada como igual a 0 e a variável NoRaslOutputFlag é fixada como igual a 0."] Dependendo do valor de separate_colour_plane_flag, o processo de decodificação é estruturado de maneira seguinte: - Se separate_colour_plane_flag for igual a 0, o processo de decodificação é chamado uma única vez com a imagem atual sendo a saída. Caso contrário (separate_colour_plane_flag é igual a 1) , o processo de decodificação é chamado três vezes. As entradas no processo de decodificação são todas as unidades NAL da imagem codificada com valor idêntico de colour_jplane_id. O processo de decodificação de unidades NAL com um valor específico de colour_plane_id é especificado como se apenas uma CVS com formato colorido monocromático com esse valor específico de colour_plane_id estivesse presente no fluxo de bits. A saída de cada um do três processos de decodificação é atribuída a um dos 3 arranjos de amostra da imagem atual, com as unidades NAL com colour_plane_id igual a 0, 1 e 2 sendo atribuído a St, SCb e Scr, respectivamente. OBSERVAÇÃO - A variável ChromaArrayType é derivada como igual a 0 quando separate_colour_plane_flag é igual ale chroma_format_idc é igual a 3. No processo de decodificação, o valor desta variável é avaliado, do que resultam operações idênticas à das imagens monocromáticas (quando chroma_format_idc é igual a 0) . O processo de decodificação funciona da maneira seguinte para a imagem atual CurrPic: 1. A decodificação de unidades NAL é especificada no sub-parágrafo 8.2. 2. Os processos no sub-parágrafo 8.3 especificam os processos de decodificação seguintes, que utilizam elementos de sintaxe na camada de segmento de fatia e acima: - Variáveis e funções referentes ao total de ordens de imagem são derivadas no sub-parágrafo 8.3.1. É necessário chamar isto apenas para o primeiro segmento de fatia de uma imagem. - 0 processo de decodificação para RPS no sub- parágrafo 8.3.2 é chamado, e nele as imagens de referência podem ser marcadas como "não utilizadas para referência" ou "utilizadas para referência de longo prazo". É necessário invocar isto apenas para o primeiro segmento de fatia de uma imagem. - Quando a imagem atual é uma imagem BLA ou é uma imagem CRA com NoRaslOutputFlag igual a 1, é chamado o processo de decodificação para gerar imagens de referência indisponíveis especificadas no sub-parágrafo 8.3.3, que é necessário chamar apenas para o primeiro segmento de fatia de uma imagem. PicOutputFlag é configurado da seguinte maneira: - Se a imagem atual for uma imagem RASL e o NoRaslOutputFlag da imagem TRAP conexa for igual a 1, PicOutputFlag é configurada como igual a 0. Caso contrário, PicOutputFlag é configurado como igual a pic_output_flag. - No início do processo de decodificação para cada fatia P ou B, o processo de decodif icação para construção de listas de imagens de referência especificada no sub-parágrafo 8.3.4 é chamado para derivação da lista 0 de imagens de referência (RefPicListO) e, quando se decodifica uma fatia B, a lista de imagens de referência 1 (RefPicListl). 3. Os processos nos sub-parágrafos 8.4, 8.5, 8.6 e 8.7 especificam processos de decodificação que utilizam elementos de sintaxe em todas as camadas de estrutura sintática. É um requisito da conformação do fluxo de bits que as fatias codificadas da imagem contenham dados de segmento de fatia para cada unidade de árvore de codificação da imagem, de modo que a divisão da imagem em fatias, a divisão das fatias em segmentos de fatia e a divisão dos segmentos de fatia em unidades de árvore de codificação formem, cada uma, um particionamento da imagem. 4. Depois de todas as fatias da imagem atual terem sido decodificadas, a imagem decodificada é marcada como "utilizada para referência de curto prazo".
[0064] Os elementos semânticos para o processo de decodificação para o total de ordens de imagem são descritos em seguida. Processo de decodifIcação para total de ordens de Imagem A saída deste processo é PicOrderCntVal, o total de ordens de imagem da imagem atual. Os totais de ordem de imagem são utilizados para identificar imagens, para derivar parâmetros de movimento no modo de fusão e predição de vetores de movimento e para verificação de conformação do decodificador (ver sub- parágrafo C.5) . Cada imagem codificada é associada a uma variável de total de ordens de imagem, denotada como PicOrderCntVal. Quando a imagem atual não é uma imagem IRAP com NoRaslOutputFlag igual a 1, as variáveis prevOrderCntLsb e prevOrderCntMsb são derivadas da maneira seguinte: - Que prevTidOPic seja a imagem anterior em ordem de decodificação que tem Temporalld igual a 0 e nuh_layer_id igual a nuh_layer_id da imagem atual e que não é uma imagem RASL, uma imagem RADL ou uma imagem de não referência de sub-camada e que prevPicOrderCnt seja igual a PicOrderCntVal de prevTidOPic. - A variável prevPicOrderCnt é fixada como igual a prevPicOrderCnt & (MaxPicOrderCntLsb - 1) [removido: "slice_pic_order_cnt_lsb de prevTidOPic"]. - A variável prevPicOrderCntMsb é fixada como igual a prevPicOrderCnt - prevPicOrderCntLsb [removido: "PicOrderCntMsb de prevTidOPic"]. - A variável prevOrderCntMsb da imagem atual é derivada da maneira seguinte: - Se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, prevOrderCntMsb é fixado como igual a 0. - Caso contrário, prevOrderCntMsb é derivado da maneira seguinte: Se ( (slice_pic_order_cnt_lsb < prevPicOrderCntLsb ) && ((prevPicOrderCntLsb - slice_pic_order_cnt_lsb) > MaxPicOrderCntLsb / 2))) prevOrderCntMsb = prevPicOrderCntMsb + MaxPicOrderCntLsb (8-1) Caso contrário se ((slice pic order ent Isb > prevPicOrderCntLsb) && ((slice j>ic_order_cnt_lsb - prevPicOrderCntLsb) > (MaxPicOrderCntLsb I 2))) prevOrderCntMsb = prevPicOrderCntMsb MaxPicOrderCntLsb Caso contrário prevOrderCntMsb = prevPicOrderCntMsb PicOrderCntVal é derivado da maneira seguinte: PicOrderCntVal = (poc_msb_reset_flag ? 0 prevOrderCntMsb) (8 - 2) (poc_lsb_reset_flag? 0: slice_pic_order_cnt_lsb ) OBSERVAÇÃO 1 - Todas as imagens IDR terão PicOrderCntVal igual a 0 uma vez que slice_pic_order_cnt_lsb é inferido como sendo 0 para imagens IDR e prevPicOrderCntLsb e prevPicOrderCntMsb são ambos fixados como igual a 0. Quando poc_msb_reset_flag é igual a 1, o PicOrderCntVal de cada imagem que está no DPB e pertence à mesma camada da imagem atual é decrementado por prevOrderCntMsb. Quando poc_lsb_reset_flag é igual a 1, o PicOrderCntVal de cada imagem que está no DPB e pertence à mesma camada da imagem atual é decrementado por sl i ce^pi c_order_cnt_lsb. O valor de PicOrderCntVal estará na faixa de -231 a 231 - 1, inclusive. Em uma CVS, os valores de PicOrderCntVal para quaisquer duas imagens codificadas, na mesma camada, não serão os mesmos. A função PicOrderCnt ( PicX ) é especificada da maneira seguinte: PicOrderCnt ( picX ) = PicOrderCntVal da imagem picX (8-3) a função DiffPicOrderCnt( picA, picB ) é especificada da maneira seguinte: DiffPicOrderCnt( picA, picB ) = PicOrderCnt( picA ) - PicOrderCnt( picB ) (8-4) O fluxo de bits não conterá dados que resultem em valores de DiffPicOrderCnt( picA, picB ) utilizados no processo de decodificação que não estão na faixa de - 215 a 215 - 1. inclusive. OBSERVAÇÃO 2 - Que X seja a imagem atual e Y e Z sejam duas outras imagens na mesma sequência, Y e Z são considerados como estando na mesma direção de ordem de saída de X quando tanto DiffPicOrderCnt( X, Y ) quanto DiffPicOrderCnt( X, Z ) são positivos ou ambos são negativos. Processo de decodificação para conjunto de imagens de referência Este processo é chamado uma vez por imagem, após a decodificação de um cabeçalho de fatia, mas antes da decodificação de qualquer unidade de codificação e antes do processo de decodificação para construção de listas de imagens de referência para a fatia conforme especificado no sub-parágrafo 8.3.3. Este processo pode resultar em que uma ou mais imagens de referência no DPB sejam marcadas como "não utilizadas para referência" ou "utilizadas para referência de longo prazo". OBSERVAÇÃO 1-0 RPS é uma descrição absoluta das imagens de referência utilizadas no processo de decodificação da imagem codificada atual e de futuras imagens codificadas. A sinalização de RPS é explícita no sentido de que todas as imagens de referência incluídas no RPS são enumeradas explicitamente. Uma imagem decodificada no DPB pode ser marcada como "não utilizada para referência", "utilizada para referência de curto prazo" ou "utilizada para referência de longo prazo", mas apenas uma entre estas três em qualquer dado momento durante o funcionamento do processo de decodificação. A atribuição destas marcações a uma imagem remove implicitamente outra destas marcações quando aplicável. Quando uma imagem é referida como sendo marcada como "utilizada para referência" isto refere-se coletivamente à imagem que é marcada como "utilizada para referência de curto prazo" ou "utilizada para referência de longo prazo" (mas não ambas). Quando a imagem atual é uma imagem IRAP com NoRaslOutputFlag = 1, todas as imagens de referência atualmente no DPB (se existente) são marcadas como "não utilizadas para referência". As imagens de referência de curto prazo são identificadas por seus valores de PicOrderCntVal. As imagens de referência de longo prazo são identificadas ou por seus valores de PicOrderCntVal ou por seus valores de slice_pic_order_cnt_lsb. Cinco listas de valores de total de ordens de imagem são construídas para se derivar o RBS. Estas cinco listas são PocStCurrBefore, PocStCurrAfter, PocStFoll, PocLtCurr e PocLtFoll são todas configuradas como estando vazias, e NumPocStCurrBefore, NumPocStCurrAfter, NumPocStFoll, NumPocLtCurr e NumPocLtFoll são todas configuradas como iguais a 0. - Caso contrário, e aplicado o seguinte: para( i=0, j =0, k=0; i < NumNegativPics[ CurrRpsIdx ] ; i++ ) se( UsedByCurrPicSO[ CurrRpsIdx ] [ i ]) PocStCurrBefore[ j++ ] = PicOrderCntVal + DeltaPocSO[ CurrRpsIdx ][ i ] caso contrário PocStFoll[ k++ ] = PicOrderCntVal + DeltaPocSO[ CurrRpsIdx ][ i ] NumPocStCurrBefore = j para( i = 0, j = 0; i < NumPositivePics[ CurrRpsIdx ]; i++ ) se(UsedByCurrPicSl[ CurrRpsIdx ][ i ] ) PocStCurrAfter[ j++ ] = PicOrderCntVal + DeltaPocSl[ CurrRpsIdx ][ i ] caso contrário PocStFoll[ k++ ] = PicOrderCntVal + DeltaPocSl[ CurrRpsIdx ][ i ] NumPocStCurrAfter = j NumPocStFoll = k (8-5) para(i = 0, j = 0, k = 0, i< num_long_term_sps - num long term pics; i++ ){ pocLt = PocLsbLt [ 1 ] se( delta_poc_msb_present_flag[ i ]) pocLt + = PicOrderCntVal DeltaPocMsbCycleLt[ i ]* MaxPicOrderCntLsb - PicOrderCntVal & (MaxPicOrderCntLsb - 1) if( UsedByCurrPicLt[ 1 ] ) { PocLtCurr[ j ] + pocLt CurrDeltaPocMsbPresentFlag[ j ++ ] = delta_poc_msb_present_flag[ i ] } caso contrário { PocLtFoll[ k ] = pocLt FollDeltaPocMsbPresentFlag[ j++ ] delta poc msb present flag [ i ] } } NumPocLtCurr = j NumPocLtCurr = k onde PicOrderCntVal é o total de ordens de imagem da imagem atual especificado no sub-parágrafo 8.3.1. OBSERVAÇÃO 2 - Um valor de CurrRpsIdx na faixa de 0 a num_short_term_ref_pic_sets - 1, inclusive, indica que um RPS de curto prazo candidato do SPS ativo está sendo utilizado, onde CurrRpsIdx é o índice do RPS de curto prazo candidato na lista de RPSs de curto prazo candidatos sinalizados no SPS ativo. CurrRpsIdx igual a num_short_term_ref_pic_sets indica que o RPS de curto prazo da imagem atual é diretamente sinalizado no cabeçalho de fatia. Para cada i na faixa de 0 a NumPocLtCurr - 1, inclusive, quando CurrDeltaPocMsbPresentFlag[ i ] é igual a 1, é um requisito da conformação do fluxo de bits que as condições seguintes se apliquem:
Exemplo 2
[0065] A descrição seguinte refere-se a um segundo exemplo de acordo com esta revelação. A sintaxe e a semântica abaixo, em geral, referem-se a seções correspondentes no WD10 HEVC. Conforme mencionado acima, o texto em itálico indica acréscimos propostos e [removido:""] indica supressões propostas.
[0066] A sintaxe e a semântica de cabeçalho de segmento de fatia gerais são primeiro descritas abaixo: Sintaxe de cabeçalho de segmento de fatia geral
Figure img0002
[0067] Alternativamente, a sintaxe pode ser a seguinte:
Figure img0003
[0068] Os elementos semânticos de cabeçalho de fatia de segmento de fatia gerais são descritos em seguida: Semântica geral de cabeçalho segmento de fatia poc_reset_flag igual a 1 especifica que o total de ordens de imagem derivado para a imagem atual é igual a 0. poc_reset_flag igual a 0 especifica que o total de ordens de imagem derivado para imagem atual pode ou pode não ser igual a 0. Quando presente o valor de poc_reset_flag será igual a 1 quando a imagem atual não for imagem IDR e pelo menos uma imagem na unidade de acesso atual for uma imagem IDR. Quando não presente, o valor poc_reset_flag ê inferido como sendo igual a 0.
[0069] Por conseguinte, o codificador de vídeo 20 pode configurar o poc_reset_flag como tendo um valor de 1 para uma imagem que não seja uma imagem IRAP e que esteja em uma unidade de acesso que inclui uma imagem IRAP, como, por exemplo, em uma camada de codificação de vídeo diferente. Da mesma maneira, o decodificador de vídeo 30, ao receber um valor de 1 para uma imagem que não é uma imagem IRAP, pode reinicializar o valor POC da imagem e ajustar os valores POC de outras imagens na mesma camada e na mesma sequência de vídeo codificada conforme necessário.
[0070] Alterações propostas no processo de decodificação de acordo com este segundo exemplo são descritas em seguida. Alterações no processo de decodifIcação Processo de decodificação de fatias 8.3.1 Processo de decodificação para total de ordens de imagem A saída deste processo é PicOrderCntVal, o total de ordens de imagem da imagem atual. Os totais de ordens de imagem são utilizados para identificar imagens, para derivar parâmetros de movimento no modo de fusão e predição de vetores de movimento e para verificação de conformação de decodificador (ver sub-parágrafo C.5). Cada imagem codificada é associada a uma variável de total de ordens de imagem, denotada como PicOrderCntVal. Quando a imagem atual não é uma imagem IRAP com NoRaslOutputFlag igual a 1, as variáveis prevPicOrderCntLsb e prevPicOrderCntMsb são derivadas da maneira seguinte: - que prevTidOPic seja a imagem anterior em ordem de decodificação que tem Temporalld igual a 0 e nuh_layer_id igual a nuh_layer_id da imagem atual e que não é uma imagem RASL, uma imagem RADL ou uma imagem de não referência de sub-camada, e que prevPicOrderCnt seja igual a PicOrderCntVal de prevTidOPic. A variável prevPicOrderCntLsb é configurada como igual prevPicOrderCnt & ( MaxPicOrderCntLsb - 1 ) [removido: "slice_pic_order_cnt_lsb de prevTidOPic"]. A variável prevPicOrderCntMsb é configurada como igual a prevPicOrderCnt - prevPicOrderCntLsb [removido: "prevOrderCntMsb de prevTidOPic"]. A variável prevOrderCntMsb da imagem atual é derivada da maneira seguinte: - Se a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, prevOrderCntMsb é configurado como igual a 0. - Caso contrário, prevOrderCntMsb é derivado da maneira seguinte: se( ( slice_pic_order_cnt_lsb < prevPicOrderCntLsb ) && ( ( prevPicOrderCntLsb - slice_pic_order_cnt_lsb ) >= ( MaxPicOrderCntLsb / 2 ) ) ) prevOrderCntMsb = prevPicOrderCntMsb + MaxPicOrderCntLsb (8-1) caso contrário se ( ( slice_pic_order_cnt_lsb > prevPicOrderCntLsb ) && / 2 ) ) ) prevOrderCntMsb + prevPicOrderCntMsb MaxPicOrderCntLsb caso contrário picOrderCntMsb = prevPicOrderCntMsb PicOrderCntVal é derivado da maneira seguinte: PicOrderCntVal = prevOrderCntMsb + slice_pic_order_cnt_lsb (8-2) OBSERVAÇÃO 1 - Todas as imagens IDR terão PicOrderCntVal igual a 0 uma vez que slice_pic_order_cnt_lsb é inferido como sendo 0 para imagens IDR e prevPicOrderCntLsb e prevPicOrderCntMsb são ambos configurados como iguais a 0. Quando poc_reset_flag é igual alo seguinte se aplica em ordem: - PicOrderCntVal de cada imagem que está no DPB e pertence à mesma camada da imagem atual ê decrementada por PicOrderCntVal. - PicOrderCntVal ê configurado em 0. O valor de PicOrderCntVal estará na faixa de -231 a 231 - 1, inclusive. Em uma CVS, os valores de PicOrderCntVal para quaisquer duas imagens codificadas na mesma camada não serão os mesmos. A função PicOrderCnt( picX ) é especificada da maneira seguinte: PicOrderCnt( picX ) = PicOrderCntVal da imagem picX (8-3). A função DiffPicOrderCnt ( picA, picB ) é especificada da maneira seguinte: DiffPicOrderCnt( picA, picB ) = PicOrderCnt( picA ) - PicOrderCnt( picB ) (8-4) O fluxo de bits não conterá dados que resultem em valores de DiffPicOrderCnt( picA, picB ) utilizados no processo de decodificação que não estão na faixa de -215 a 215 - 1, inclusive. OBSERVAÇÃO 2 - Que X seja imagem atual e Y e Z sejam duas outras imagens na mesma sequência, Y e Z sejam consideradas como estando na mesma direção de ordem de saída de X quando tanto DiffPicOrderCnt( X, Y ) quando DiffPicOrderCnt( X, Z ) são positivos ou ambos são negativos.
[0071] 0 processo de decodificação para o conjunto de imagens de referência neste exemplo pode ser idêntico ao descrito para o Exemplo 1.
[0072] Desta maneira, o codificador de vídeo 2 0 pode ser configurado para fixar um valor para um elemento de sintaxe (poc_msb_reset_flag ou poc_reset_flag, por exemplo) que indica se pelo menos uma parte de um valor POC para uma imagem será reinicializada. Conforme discutido acima, o codificador de vídeo 20 pode ser configurado para fixar o valor do elemento de sintaxe de modo a indicar que o valor POC será reinicializado quando a imagem estiver incluída em uma unidade de acesso que inclui pelo menos uma imagem IRAP. O decodificador de vídeo 30, da mesma maneira, pode determinar, a partir do valor do elemento de sintaxe, se vai reinicializar pelo menos uma parte do valor POC (ou o valor POC inteiro de uma imagem). Por exemplo, no caso de o elemento de sintaxe se o poc_msb_reset_flag, o decodificador de vídeo 30 pode reinicializar MSBs do valor POC da imagem. Quando o elemento de sintaxe é o poc_reset_flag, o decodificador de vídeo 30 pode reinicializar o valor POC inteiro.
[0073] Além disto, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ajustar os valores POC de outras imagens na mesma camada e na mesma sequência codificada (CVS) de modo que as diferenças entre os valores POC relativos ao valor POC a ser ajustado permaneçam constantes antes da reinicialização e depois. Desta maneira, quando o codificador de vídeo 20 codifica um bloco de uma imagem utilizando predição inter-camada, onde a imagem (após o ajuste de POC discutido acima) tem um valor POC de N, o bloco pode identificar a imagem de referência utilizando o valor POC de N. Ou seja, após o ajuste, cada imagem em uma unidade de acesso terá o mesmo valor POC.
[0074] Além do mais, o decodificador de vídeo 30 pode ser configurado para detectar fronteiras de unidades de acesso.
[0075] 0 codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, implementados como qualquer um de diversos circuitos de codificador adequados, tais como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados específicos de aplicativo (ASICs), arranjos de portas programáveis no campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações deles. Quando as técnicas são implementadas parcialmente em software, um aparelho pode armazenar instruções para o software em um meio passível de leitura por computador não transitório adequado e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta revelação. Cada um do codificador de vídeo 20 e do decodificador de vídeo 3 0 pode ser incluído em um ou mais codificadores ou decodificadores, ambos os quais podem ser integrados como parte de um codificador/decodificador (CODEC) em um respectivo aparelho.
[0076] O codificador de vídeo 20 e o decodificador de vídeo 30 podem funcionar, cada um, em geral, em conformidade com o WD10 HEVC, o WD3 MV-HEVC e/ou o WD1 SHVC conforme descrito acima, ou com outros padrões ou extensões semelhantes às quais as técnicas descritas nesta revelação podem ser úteis. O padrão HEVC especifica várias capacidades adicionais de aparelhos de codificação de vídeo com relação a aparelhos existentes de acordo com o ITU-T H.264/AVC. Por exemplo, ao passo que o H.264 apresentada nove modos de codificação intra-preditiva, o padrão HEVC pode apresentar um máximo de trinta e três modos de codificação intra-preditiva.
[0077] Em geral, um quadro ou imagem de vídeo pode ser dividida em uma sequência de blocos de árvore ou maiores unidades de codificação (LCUs), que incluem amostras tanto luma quanto croma. Um bloco de árvore no processo de codificação HEVC tem uma finalidade semelhante de um macrobloco do padrão H.264. Uma fatia inclui, vários blocos de árvore consecutivos em ordem de decodificação. Um quadro ou imagem de vídeo pode ser particionada em uma ou mais fatias. Cada bloco de árvore pode ser dividido em unidades de codificação (CUs) de acordo com uma transformação quadtree. Por exemplo, um bloco de árvore, como um nó-raiz da transformação quadtree, pode ser dividido em quatro nós-filho, e cada nó-filho pode ser por sua vez um nó-pai e ser dividido em outros quatro nós- filho. Um nó-filho não dividido, final, como um nó-folha da transformação quadtree, compreende um nó de codificação, isto é, um bloco de vídeo codificado. Dados de sintaxe associados a um fluxo de bits codificado podem definir um número máximo de vezes em que um bloco de árvore pode ser dividido e podem também definir um tamanho mínimo dos nós de codificação.
[0078] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformada (TUs) associadas ao nó de codificação. O tamanho da CU corresponde ao tamanho do nó de codificação e deve ser de conformação. O tamanho da CU pode variar de 8x8 pixels até o tamanho do bloco de árvore com um máximo de 64x64 pixels ou mais. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Dados de sintaxe associados a uma CU podem descrever, por exemplo, o particionamento da CU em uma ou mais PUs. Os modos de particionamento podem diferir se a CU é saltada ou codificada no modo direto, codificada no modo de intra- predição ou codificada no modo de inter-predição. As PUs podem ser particionadas para serem de conformação não quadrada. Os dados de sintaxe associados a uma CU podem descrever também, por exemplo, o particionamento da CU em uma ou mais TUs de acordo com uma transformação quadtree. Uma TU pode ser de conformação quadrada ou não quadrada.
[0079] 0 padrão HEVC proporciona transformações de acordo com TUs, que podem ser diferentes para CUs diferentes. As TUs são tipicamente dimensionadas com base no tamanho das PUs dentro de uma dada CU definida para uma LCU particionada, embora este possa não sempre o caso. As TUs são tipicamente do mesmo tamanho menores que as PUs. Em alguns exemplos, amostras residuais que correspondem a uma CU podem ser subdivididas em unidades menores utilizando-se uma estrutura de transformação quadtree conhecida como "transformação quadtree residual" (RQT). Os nós-folha da RQT podem ser referidos como unidades de transformada (TUs). Os valores de diferença de pixel associados às TUs podem ser transformados de modo a se produzirem coeficientes de transformada, que podem ser quantificados.
[0080] Em geral, uma PU inclui dados relacionados com o processo de predição. Quando a PU ê codificada no intra-modo, por exemplo, a PU pode incluir dados que descrevem um modo de intra-predição para a PU. Como outro exemplo, quando a PU é codificada de maneira inter-modal, 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 (precisão de um quatro de pixel ou precisão de um oitavo de pixel, por exemplo), uma imagem de referência indicada pelo vetor de movimento e/ou uma lista de imagens de referência (a RefPicListO (LO) ou RefPicListl (Ll), por exemplo) para o vetor de movimento.
[0081] Em geral, uma TU é utilizada no processos de transformada e quantificação. Uma dada CU que tem uma ou mais PUs pode incluir também uma ou mais unidades de transformada (TUs). Em seguida à predição, o codificador de vídeo 20 pode calcular valores residuais que correspondem à PU. Os valores residuais compreendem valores de diferença de pixel que podem ser transformados em coeficientes de transformada, quantificados e varridos utilizando-se as TUs de modo a se produzirem coeficientes de transformada serializados para codificação por entropia. Esta revelação utiliza tipicamente o termo "bloco de vídeo" para referir-se a um nó de codificação de uma CU. Em alguns casos específicos, esta revelação pode utilizar também o termo "bloco de vídeo" para referir-se a um bloco de árvore, isto é, uma LCU ou uma CU, que inclui um nó de codificação e PUs e TUs.
[0082] Para codificação de vídeo de acordo com o padrão HEVC, um quadro de vídeo pode ser particionado em unidades de codificação (CUs), unidades de predição (PUs) e unidades de transformada (TUs). Uma CU refere-se geralmente a um região de imagem que funciona como uma unidade básica à qual diversas ferramentas de codificação são aplicadas para compactação de vídeo. Uma CU tem tipicamente uma geometria quadrada e pode ser considerada semelhante ao chamado "macrobloco" de acordo com outros padrões de codificação de vídeo, tais como, por exemplo, o ITU-T H.264.
[0083] Para se obter maior eficácia de codificação, uma CU pode ter um tamanho variável dependendo dos dados de vídeo que contém. Ou seja, uma CU pode ser particionada, ou dividida em blocos menores, ou sub-CUs, cada uma das quais pode ser também referida como CU. Além disto, cada CU que não é dividida em sub-CUs pode ser também particionada em uma ou mais PUs e TUs para fins de predição e transformada da CU, respectivamente.
[0084] As PUs podem ser consideradas como sendo semelhantes às chamadas partições de um bloco de acordo com outros padrões de codificação de vídeo, tais como o H.264. As PUs são a base sobre a qual a predição para o bloco é efetuada de modo a se produzirem coeficientes "residuais". Os coeficientes residuais de uma CU representam a diferença entre dados de vídeo da CU e dados preditos para a CU determinada utilizando-se uma ou mais PUs da CU. Especificamente, a PU ou PUs especificam como a CU é particionada para fins de predição e qual modo de predição é utilizado para para predizer os dados de vídeo contidos dentro de cada partição da CU.
[0085] Uma ou mais TUs de uma CU especificam partições de um bloco de coeficientes residuais da CU com base nas quais uma transformada é aplicada ao bloco de modo a se para produzir um bloco de coeficientes de transformada residuais para a CU. A TU ou TUs podem ser também associadas ao tipo de transformada que é aplicado. A transformada converte os coeficientes de um domínio de pixel ou espacial em um domínio de transformada, tal como um domínio de frequência. Além disto, a TU ou TUs podem especificar parâmetros com base nos quais a quantificação é aplicada ao bloco resultante de coeficientes de transformada residuais de modo a se produzir um bloco de coeficientes de transformada residuais quantificados. Os coeficientes de transformada residuais podem ser quantificados de modo a se reduzir possivelmente a quantidade de dados utilizados para representar os coeficientes.
[0086] Uma CU inclui geralmente um componente de luminância denotado como Y e dois componentes de crominância denotados como U e V. Em outras palavras, uma dada CU que não seja também dividida em sub-CUs pode incluir componentes Y, U e V, cada um dos quais pode ser também particionado em uma ou mais PUs e TUs para fins de predição e transformada da CU, conforme descrito anteriormente. Dependendo do formato de amostragem de vídeo, por exemplo, o tamanho dos componentes U e V, em termos do número de amostras, pode ser o mesmo ou diferente do tamanho do componente Y. Sendo assim, as técnicas descritas acima, com referência à predição, transformada e quantificação podem ser executadas para cada um dos componentes Y, U e V de uma dada CU.
[0087] Para codificar uma CU, um ou mais preditores para a CU são primeiro derivados com base em uma ou mais PUs da CUs. Um preditor é um bloco de referência que contém dados preditos para a CU e é derivado com base em uma PU correspondente para a CU, conforme descrito anteriormente. Por exemplo, a PU indica uma partição da CU para a qual dados preditos serão determinados, e um modo de predição utilizado para determinar os dados preditos. O preditor pode ser derivado ou através de intra- (I) predição (isto é, predição espacial) ou inter-(P ou B) predição (isto é, predição temporal). Consequentemente, algumas CUs podem ser intra-codifiçadas (I) utilizando-se predição espacial com referência à blocos de referência vizinhos, ou CUs, no mesmo quadro, enquanto outras CUs podem ser inter-codifiçadas (P ou B) com relação a blocos de referência, ou CUs em outros quadros.
[0088] Quando da identificação do preditor ou preditores com base na PU ou PUs da CU, é calculada a diferença entre os dados de vídeo originais da CU que corresponde à PU ou PUs e os dados preditos para a CU contida no preditor ou preditores. Esta diferença, também referida como resíduo de predição, compreende coeficientes residuais, e refere-se às diferenças de pixels entre partes da CU especificadas pela PU ou PUs e o preditor ou preditores, conforme descrito anteriormente. Os coeficientes residuais são geralmente dispostos em um arranjo bidimensional (2D) que corresponde à PU ou PUs da CU.
[0089] De modo a se obter compactação adicional, o resíduo de predição é geralmente transformado, como, por exemplo, utilizando-se uma transformada de co- seno discreta (DCT), uma transformada de número inteiro, uma transformada de Karhunen-Loeve (K-L) ou outra transmitida. A transformada converte o resíduo de predição, isto é, os coeficientes residuais, no domínio espacial em coeficientes de transformada residuais no domínio de transformada, como, por exemplo, um domínio da frequência, conforme também descrito anteriormente. Os coeficientes de transformada são também geralmente dispostos em um arranjo 2D que corresponde a TU ou TUs da CU. Para compactação adicional, os coeficientes de transformada residuais podem ser quantificados de modo a se reduzir possivelmente a quantidade de dados utilizados para representar os coeficientes, conforme também descrito anteriormente.
[0090] Para se obter compactação ainda maior, um codificador por entropia codifica em seguida os coeficientes de transformada residuais resultantes, utilizando Codificação Aritmética Binária Adaptativa ao Contexto (CABAC), Codificação de Comprimento Variável Adaptativa ao Contexto (CAVLC), Codificação por Entropia com Particionamento de Intervalos de Probabilidade (PIPE), ou outra metodologia de codificação por entropia. A codificação por entropia pode obter esta compactação adicional reduzindo ou removendo a redundância estatística inerente aos dados de vídeo da CU, representados pelos coeficientes, com relação a outras CUs.
[0091] Uma sequência de vídeo inclui tipicamente uma série de quadros ou imagens de vídeo. Um grupo de imagens (GOP) compreende geralmente uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe no cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em qualquer outro lugar, que descreve várias imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a respectiva fatia. 0 codificador de vídeo 20 funciona tipicamente em blocos de vídeo dentro de 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 dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis e podem diferir em tamanho de acordo com o padrão de codificação especificado.
[0092] Como exemplo, a HEVC suporta predição em diversos tamanhos de PU. Supondo-se que o tamanho de uma CU específica seja 2Nx2N, a HEVC suporta intra-predição em tamanhos de PU de 2Nx2N ou NxN e inter-predição em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N ou NxN. A HEVC suporta também particionamento assimétrico para inter- predição em tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. No particionamento assimétrico uma direção de uma CU não é particionada, enquanto a outra direção é particionada em 25% e 75%. A parte da CU que corresponde à partição de 25% é indicada por um "n" seguido de uma indicação de "Para Cima", "Para Baixo", "Esquerda" ou "Direita". Assim, "2nxnU" refere-se a uma CU 2Nx2N que é particionada em sentido horizontal com uma PU 2NxO,5N no topo e uma PU 2Nxl,5N na base.
[0093] Nesta revelação, "NxN" e "NporN" podem ser utilizados de maneira intercambiável para referir-se à dimensões de pixel de um bloco de vídeo em termos das dimensões vertical e horizontal, como, por exemplo, 16x16 pixels ou 16porl6 pixels. Em geral, um bloco de 16x16 terá 16 pixels na direção vertical (y = 16) e 16 pixels na direção horizontal (x = 16). Da mesma maneira, um bloco NxN tem geralmente N pixels na direção vertical e N pixels na direção horizontal, onde N representa um valor de número inteiro não negativo. Os pixels em um bloco podem ser dipostos em um bloco em fileiras e colunas. Além do mais, não é necessário que os blocos tenham o mesmo número de pixels na direção horizontal como na direção vertical. Por exemplo, os blocos podem compreender MxM pixels onde M não é necessariamente igual a N.
[0094] Em seguida à codificação intra- preditiva ou inter-preditiva que utiliza as PUs de uma CU, o codificador de vídeo 20 pode calcular os dados residuais para as TUs da CU. As PUs podem corresponde dados de pixel no domínio espacial (também referido como domínio de pixel) e as TUs podem compreender coeficientes no domínio de transformada após a aplicação de uma transformada, como, por exemplo, uma transformada de co-seno discreta (DCT), uma transformada de número inteiro, uma transformada wavelet ou uma transformada conceptualmente semelhante a dados de vídeo residuais. Os dados residuais pode corresponder a diferenças de pixel entre os pixels da imagem não codificada e os valores de predição que correspondem às PUs. 0 codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU e em seguida transformar as TUs de modo a se produzirem coeficientes de transformada para a CU.
[0095] Após quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode efetuar a quantificação dos coeficientes de transformada. A quantificação refere-se geralmente a um processador no qual coeficientes de transformada são quantificados para reduzir possivelmente de dados utilizados para representar os coeficientes, obtendo-se compactação adicional. 0 processo de quantificação pode reduzir a profundidade de bit associada ao alguns ou todos os coeficientes. Por exemplo, o valor de n bits pode ser arredondado para menos até um valor de m bits durante a quantificação, onde n é maior que m.
[0096] Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura pré-definida de modo a varrer os coeficientes de transformada quantificados para produção de um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode efetuar uma varredura adaptativa. Depois de varrer os coeficientes de transformada quantificados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, de acordo, por exemplo, com a codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptiva ao contexto (CABAC), codificação aritmética binária adaptiva ao contexto baseada em sintaxe (SBAC), codificação por Entropia com Particionamento de Intervalos de Probabilidade ou outra metodologia de codificação por entropia. 0 codificador de vídeo 20 pode codificar por entropia também elementos de sintaxe associados aos dados de vídeo codificados para utilização pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0097] Para efetuar CABAC, o codificador de vídeo 2 0 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. 0 contexto pode referir-se, por exemplo, a se os valores vizinhos do símbolo são não zero ou não. Para efetuar 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 na VLC podem ser construídas de modo que códigos relativamente mais curtos correspondam a símbolos mais prováveis, enquanto códigos mais longos correspondam a símbolos menos prováveis. Desta maneira, a utilização da VLC pode levar à obtenção de uma economia de bits comparada, por exemplo, com a utilização de palavras de código de comprimento igual para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada no contexto atribuído ao símbolo.
[0098] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para implementar as técnicas exemplares desta revelação. O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser comumente referidos como codificador de vídeo.
[0099] Por exemplo, o decodificador de vídeo 30 pode ser configurado para receber um primeiro elemento de sintaxe que especifica se o valor de total de ordens de imagem (POC) da imagem atual é reinicializado como sendo igual a um conjunto dos bits menos significativos (LSBs) do valor POC da imagem atual, quando o primeiro elemento de sintaxe especifica que o valor POC da imagem atual é reinicializado como sendo igual ao conjunto de LSBs do valor POC da imagem atual, decrementar os valores POC de outras imagens na mesma camada de codificação da imagem atual, de modo que a diferença entre o valor POC da imagem atual e o valor POC de qualquer uma das imagens na mesma camada permaneça idêntica à de antes que o valor POC da imagem atual foi reinicializado, e decodificar pelo menos algumas da imagem atual e das outras imagens utilizando os valores POC decrementados. As outras imagens podem incluir imagens de referência de curto prazo e imagens de referência de longo prazo, e o decodificador de vídeo 30 pode decrementar os valores POC para as imagens de referência de curto prazo e para as imagens de referência de longo prazo.
[0100] Quando o primeiro elemento de sintaxe especifica que o valor POC da imagem atual é reinicializado como sendo igual ao conjunto de LSBs de valor POC, o decodificador de vídeo 30 pode decrementar os valores POC de outras imagens em um armazenador de imagens decodificadas (DPB) de modo que a diferença entre o valor POC da imagem atual e o valor POC de qualquer uma das imagens no DPB permaneçam idênticas à antes que o valor POC da imagem atual foi reinicializado.
[0101] Quando o primeiro elemento de sintaxe especifica que o valor POC da imagem atual é reinicializado como sendo igual ao conjunto de LSBs do valor POC da imagem atual, os bits mais significativos (MSBs) do valor POC da imagem atual são reinicializados em zero. Em um exemplo, os LSBs e MSBs do valor POC da imagem atual são mutuamente exclusivos.
[0102] Em alguns exemplos, o decodificador de vídeo 30 pode receber um segundo elemento de sintaxe que especifica se os LSBs do valor POC da imagem atual são reinicializados em zero. Os primeiro e/ou 2 elementos de sintaxe podem ser, cada um, um indicador, e um ou ambos os elementos de sintaxe podem ser recebidos em um cabeçalho de fatia. A imagem atual pode compreender uma de uma imagem IDR, CRA ou BLA.
[0103] Em outro exemplo, o decodificador de vídeo 30 pode ser configurado para receber um primeiro elemento de sintaxe que especifica se o valor de total de ordens de imagem (POC) da imagem atual é reinicializado como sendo igual a zero, quando o primeiro elemento de sintaxe especifica que o valor POC da imagem atual é reinicializado como sendo igual a zero, se a imagem atual estiver em uma camada maior que a camada zero, reinicializar a imagem atual como sendo igual a zero e decodificar a imagem atual utilizando o valor POC reinicializado.
[0104] Em um exemplo, a imagem atual é uma imagem não IDR. 0 elemento de sintaxe pode compreender um indicador, tal como um idr_au_present_flag. 0 elemento de sintaxe pode ser recebido em um cabeçalho de fatia. Quando a imagem atual é uma imagem IDR, o elemento de sintaxe sempre especifica que o valor POC da imagem atual é reinicializado como sendo igual a zero.
[0105] O codificador de vídeo 20 pode ser também configurado para executar métodos de acordo com os exemplos desta revelação. Por exemplo, o codificador de vídeo 2 0 pode ser configurado para gerar um primeiro elemento de sintaxe que especifica se o valor de total de ordens de imagem (POC) da imagem atual é reinicializado como sendo igual a um conjunto dos bits menos significativos (LSBs) do valor POC da imagem atual, quando o primeiro elemento de sintaxe especificar que o valor POC da imagem atual é reinicializado como sendo igual ao conjunto de LSBs do valor POC da imagem atual, decrementar os valores POC de outras imagens em uma mesma camada de codificação da imagem atual, de modo que a diferença entre o valor POC da imagem atual e o valor POC de qualquer uma das imagens na mesma camada permaneça idêntica à de antes que o valor POC da imagem atual foi reinicializado, e codificar pelo menos algumas da imagem atual e das outras imagens utilizando os valores POC decrementados.
[0106] Quando o primeiro elemento de sintaxe referida que o valor POC da imagem atual é reinicializado como sendo igual ao conjunto de LSBs de valor POC, o codificador de vídeo 20 pode decrementar os valores POC de outras imagens em um armazenador de imagens decodificadas (DPB) , de modo que a diferença entre o valor POC da imagem atual e o valor POC de qualquer uma das imagens no DPB permaneça igual à de antes que o valor POC da imagem atual fosse reinicializado.
[0107] Quando o primeiro elemento de sintaxe especifica que o valor POC da imagem atual é reinicializado como sendo igual ao conjunto de LSBs do valor POC da imagem atual, os bits mais significativos (MSBs) do valor POC da imagem atual são reinicializado em zero. Em um exemplo, os LSBs e MSBs do valor POC da imagem atual são mutuamente exclusivos.
[0108] O codificador de vídeo 20 pode gerar um segundo elemento de sintaxe que especifica se os LSBs do valor POC da imagem atual são reinicializado em zero. Os primeiro e/ou segundo elementos de sintaxe podem ser, cada um, um indicador, e um ou ambos os elementos de sintaxe podem ser recebidos em um cabeçalho de fatia. A imagem atual pode compreender uma de uma imagem IDR, CRA ou BLA.
[0109] Em outro exemplo, o codificador de vídeo 2 0 pode ser configurado para gerar um primeiro elemento de sintaxe que especifica se o valor de total de ordens de imagem (POC) da imagem atual é reinicializado como sendo igual a zero, quando o primeiro elemento de sintaxe especifica que o valor POC da imagem atual é reinicializado como sendo igual a zero, se a imagem atual estiver em uma camada maior que a camada zero, reinicializar a imagem atual como sendo igual a zero e codificar a imagem atual utilizando o valor POC reinicializado. A imagem atual pode ser uma imagem IDR. O elemento de sintaxe pode compreender um indicador, tal como um idr_au_present_flag, e o indicador pode ser sinalizado em um cabeçalho de fatia. Quando a imagem for uma imagem IDR, o elemento de sintaxe sempre especifica que o valor POC da imagem atual é reinicializado como sendo igual a zero.
[0110] A Figura 2 é um diagrama de blocos que mostra um codificador de vídeo 20 exemplar que pode implementar as técnicas descritas nesta revelação. 0 codificador de vídeo 20 pode efetuar intra- e inter- codificação de blocos de vídeo dentro de fatias de vídeo. A intra-codificação recorre à predição espacial para reduzir ou remover a redundância espacial em vídeo dentro de um dado quadro ou imagem de vídeo. A inter-codificação recorre à predição temporal para reduzir ou remover a redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. O intra-modo (modo I) pode referir-se a qualquer um de vários modos de compactação espacial. Inter-modos, tais como a predição unidirecional (modo P) ou bi-predição (modo B). podem referir-se a qualquer um de vários modos de compactação temporal.
[0011] No exemplo da Figura 2, o codificador de vídeo 20 inclui uma unidade de particionamento 40, uma unidade de processamento de predição 42, uma memória de imagens de referência 64, um somador 50, uma unidade de processamento de transformadas 52, uma unidade de processamento de quantificação e uma unidade de codificação por entropia 56. A unidade de processamento de predição 42 inclui uma unidade de estimação de movimento 44, uma unidade de compensação de movimento 46 e uma unidade de intra-predição. Para reconstrução de blocos de vídeo, o codificador de vídeo 20 inclui também uma unidade de processamento de quantificaçã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) pode ser também incluído para filtrar fronteiras entre blocos para remoção para artefatos de blocagem do vídeo reconstruído. Se desejado, o filtro de desbloqueio filtraria tipicamente a saída do somador 62. Filtros de malha adicionais (em malha ou pós-malha) podem ser também utilizados além do filtro de desbloqueio.
[0112] Em diversos exemplos, uma unidade do codificador de vídeo 20 pode ser encarregada de executar as técnicas desta revelação. Além disto, em alguns exemplos, as técnicas desta revelação podem ser divididas entre uma ou mais das unidades do codificador de vídeo 20.
[0113] Conforme mostrado na Figura 2, o codificador de vídeo 20 recebe dados de vídeo, e a unidade de particionamento 40 particiona os dados em blocos de vídeo. Este particionamento pode incluir também particionamento em fatias, justaposições ou outras unidades maiores, assim como particionamento de blocos de vídeo, como, por exemplo, de acordo com uma estrutura de transformação quadtree de LCUs e CUs. O codificador de vídeo 20 mostra geralmente os componentes que codificam blocos de vídeo dentro de uma fatia de vídeo a ser codificada. A fatia pode ser dividida em vários blocos de vídeo (e possivelmente em conjuntos de blocos de vídeo referidos como justaposições). A unidade de processamento de predição 42 pode selecionar um de uma série de modos de codificações possíveis, tal como um de uma série de modos de intra-codificação ou de uma série de modos inter- codif icação, para o bloco de vídeo atual com base em resultados de erro (taxa de codificação e nível de distorção, por exemplo). A unidade de processamento de predição 42 pode fornecer o bloco intra- ou inter- codif içado resultante ao somador 50 de modo a gerar dados de bloco residuais e ao somador 62 para reconstruir bloco codificado para utilização como uma imagem de referência.
[0114] A unidade de intra-predição 48 dentro da unidade de processamento de predição 42 pode efetuar codificação intra-preditiva do bloco de vídeo atual com relação a um ou mais blocos vizinhos na mesma imagem ou fatia do bloco atual a ser codificado de modo a se obter compactação espacial. A unidade de estimação de movimento 44 e a unidade de compensação de movimento 4 6 dentro da unidade de processamento de predição 42 efetuam codificação inter-preditiva do bloco de vídeo atual com relação a um ou mais blocos preditivos em uma ou mais imagens de referência de modo a se obter compactação temporal.
[0115] A unidade de estimação de movimento 44 pode ser configurada para determinar um 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. A unidade de estimação de movimento 44 e a unidade de compensação de movimento podem ser altamente integradas, mas são mostradas separadamente para fins conceptuais. A estimação de movimento, efetuada pela unidade de estimação de movimento 44, e o processo de gerar vetores de movimento que estimam o movimento para blocos de vídeo. E um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro do quadro ou imagem de vídeo atual com relação a um bloco preditivo dentro de uma imagem de referência.
[0116] Um bloco preditivo é um bloco que se verifica corresponder intimamente à PU do bloco de vídeo a ser codificado em termos de diferença de pixel, que pode ser determinada pela soma da diferença absoluta (SAD) peça soma da diferença ao quadrado (SSD) ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de sub-pixel de número inteiro de imagens de referência armazenadas na memória de imagens de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de um quarto de pixel, posições de um oitavo de pixel ou outras posições de pixel fracionárias da imagem de referência. Portanto, a unidade de estimação de movimento pode efetuar uma busca de movimento com relação às posições de pixel completas e posições de pixel fracionárias e transmitir um vetor de movimento com precisão de pixel fracionária.
[0117] A unidade de estimação de movimento 44 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia inter-codifiçada comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada de uma primeira lista de imagens de referência (LO) ou de uma segunda lista de imagens de referência (Ll), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagens de referência 64. A unidade de estimação de movimento 44 envia o vetor de movimento calculado à unidade de codificação por entropia 56 e à unidade de compensação de movimento 4.
[0118] A compensação de movimento, efetuada pela unidade de compensação de movimento 46, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pela estimação de movimento, efetuando possivelmente interpolações até precisão de sub- pixel. Ao receber o vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 46 pode localizar o bloco preditivo para o qual o vetor de movimento aponta em uma das listas de imagens de referência. O codificador de vídeo 20 forma um bloco de vídeo residual subtraindo valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo atual que é codificado, formando valores de diferença de pixel. Os valores de diferença de pixel formam dados residuais para o bloco e podem incluir componentes de diferença tanto luma quanto croma. 0 somador 50 representa o componente ou componentes que executam esta operação de subtração. A unidade de compensação de movimento 46 pode também gerar elementos de sintaxe associados aos blocos de vídeo e à fatia de vídeo para utilização pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0119] Além disso, em alguns casos, a unidade de processamento de predição 42 pode determinar a predição de um bloco de uma imagem utilizando predição inter-camada. Para dados de vídeo de várias vistas, por exemplo, a unidade de processamento de predição 42 pode determinar a predição de uma bloco de uma imagem de uma vista a partir de uma imagem de outra vista utilizando predição inter- vista. No caso de predição inter-vista, a unidade de estimação de movimento 44 pode calcular um vetor de movimento de disparidade para o bloco, onde o vetor de movimento de disparidade identifica geralmente a posição de um bloco de referência em uma imagem de uma vista de referência. Como outros exemplo, para codificação escalonável de vídeo, a unidade de processamento de predição 42 pode determinar a predição de um bloco de uma imagem de uma camada a partir de uma imagem de unidade de acesso camada utilizando predição inter-camada.
[0120] A predição inter-camada (que inclui predição inter-vista no sentido de que as vistas podem ser consideradas um tipo de camada) pode envolver a utilização de vetores de movimento que indicam blocos de referência em camadas diferentes, e não blocos na mesma camada, mas em imagens de ocorrências temporais diferentes. Tipicamente, a predição inter-camada é efetuada utilizando-se da mesma unidade de acesso de uma imagem que inclui um bloco a ser predito utilizando-se predição inter-camada. Os parâmetros de movimento para um bloco inter-predito podem, portanto, identificar uma imagem de referência utilizando-se, por exemplo, um valor de total de ordens de imagem (POC).
[0121] Tipicamente, as técnicas de extensões de codificação inter-camada (extensões de várias vistas e escalonável da HEVC, por exemplo) têm sido baseadas na suposição de que os valores POC são alinhados, isto é, de que todas as imagens na mesma unidade de acesso têm o mesmo valor POC. De modo a se conseguir isto, técnicas convencionais têm também alinhado imagens de ponto de acesso intra-aleatórias (IRAP). Entretanto, conforme observado acima, forçar o alinhamento de imagens IRAP prejudica determinados cenários de utilização vantajosos.
[0122] Portanto, de acordo com as técnicas desta revelação, a unidade de processamento de predição 42 não alinha necessariamente todas as imagens IRAP entre camadas diferentes. Ou seja, a unidade de processamento de predição 42 pode determinar a codificação de pelo menos uma imagem de uma unidade de acesso que inclui uma imagem IRAP como uma imagem não IRAP. Entretanto, a unidade de processamento de predição 42 pode utilizar as técnicas desta revelação para obter o não alinhamento de imagens IRAP enquanto mantém o alinhamento de valores POC entre imagens de camadas diferentes. Desta maneira, a unidade de processamento de predição pode assegurar que blocos preditos inter-camadas de imagens possam referir-se apropriadamente a imagens de referência em camadas diferentes nas quais as imagens de referência têm os mesmos valores POC das imagens que incluem os blocos preditos inter-camada, sem alinhamento de imagens IRAP.
[0123] Em particular, de acordo com as técnicas desta revelação, a unidade de processamento de predição 42 pode receber uma imagem a ser codificada para uma unidade de acesso que inclui imagem IRAP. Ou seja, o codificador de vídeo 20 pode ter codificado anteriormente uma camada base (ou outra camada) que inclui a imagem IRAP e determinado a codificação da imagem IRAP como uma imagem IRAP, como, por exemplo, uma imagem IDR, CRA ou BLA. Entretanto, o codificador de vídeo 20 pode determinar então a codificação de uma imagem co-localizada (isto é, uma imagem na mesma unidade de acesso) em outra camada como uma imagem não IRAP.
[0124] Depois de determinar a codificação de uma imagem como uma imagem não IRAP que está na mesma unidade de acesso de uma imagem IRAP, o codificador de vídeo 2 0 pode fixar um valor para um elemento de sintaxe que indica que pelo menos uma parte do valor POC para imagem não IRAP será reinicializada em um valor de zero. A pelo menos parte do valor POC pode incluir apenas bits mais significativos (MSBs) do valor POC, ou o valor POC inteiro (isto é, todos os bits do valor POC). 0 elemento de sintaxe pode compreender o poc_msb_reset_flag do Exemplo 1 acima ou o poc_reset_flag do Exemplo 2 acima.
[0125] 0 codificador de vídeo 20 pode reinicializar também o valor POC para a imagem depois de determinar a codificação da imagem como uma imagem não IRAP. Além disso, o codificador de vídeo 20 pode reinicializar os valores POC de imagens na memória de imagens de referência 64 que estão na mesma camada da imagem e na mesma sequência de vídeo codificada da imagem. Em particular, a reinicialização dos valores POC destas imagens pode incluir assegurar que as diferenças entre o valor POC da imagem atual e os valores POC para estas outras imagens permaneçam as mesmas antes e depois da reinicialização. Assim, se uma imagem na memória de imagens de referência 64 tiver uma diferença de valor POC com relação ao valor POC da imagem atual de N, o codificador de vídeo 2 0 pode reinicializar o valor POC da imagem na memória de imagens de referência 64 de modo que o valor POC seja igual ao valor POC reinicializado da imagem atual menos N.
[0126] Desta maneira, quando codifica imagens subsequentes (imagens da mesma camada ou de camadas codificadas em seguida, por exemplo) utilizando predição inter-camada, o codificador de vídeo 20 pode codificar dados de sintaxe que identificam uma imagem de referência utilizando um valor POC para imagem de referência que é igual ao valor POC para uma imagem que inclui um bloco predito inter-camada que refere-se à imagem de referência.
[0127] A unidade de intra-predição 48 pode intra-predizer o bloco atual, como uma alternativa à inter- predição efetuada pela unidade de estimação de movimento 44 e pela unidade de compensação de movimento 46, conforme descrito acima. Em particular, a unidade de intra-predição 48 pode determinar um modo de intra-predição a ser utilizado para codificar o bloco atual. Em alguns exemplos, a unidade de intra-predição 48 pode codificar o bloco atual utilizando diversos modos de intra-predição, como, por exemplo, durante passagens de codificação separadas, e a unidade de intra-predição 48 pode selecionar um modo de intra-predição apropriado a ser utilizado a partir dos modos testados. Por exemplo, a unidade de intra-predição 48 pode calcular valores de distorção de taxa utilizando uma análise de distorção de taxa para os diversos modos de intra-predição testados e selecionar o modo de intra- predição que tem as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa determina geralmente o grau de distorção (ou erro) entre um bloco codificado e um bloco codificado original que foi codificado de modo a se produzir o bloco codificado, bem como uma taxa de bits (isto é, o número de bits) utilizada para produzir o bloco codificado. A unidade de intra-predição 48 pode calcular razões a partir das distorções e taxas para os diversos blocos codificados de modo a determinar qual modo de intra-predição apresenta o melhor valor de distorção de taxa para o bloco.
[0128] Seja como for, depois de selecionar um modo de intra-predição para um bloco, a unidade de intra- predição 48 pode enviar informações que indicam o 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 um modo de intra-predição selecionado de acordo com as técnicas desta revelação. O codificador de vídeo 20 pode incluir no fluxo de bits transmitido dados de configuração, que podem incluir uma série de tabelas de índices de modo de intra-predição e uma série de tabelas de índices de modo de intra-predição modificadas (também referidas como tabelas de mapeamento em palavras de código), definições de contexto de codificação para diversos blocos e indicações do modo de intra-predição mais provável, uma tabela de índices de modo de intra-predição e uma tabela de índices de modo de intra-predição modificada a ser utilizada para cada um dos contextos.
[0129] Depois que a unidade de processamento de predição 42 gera o bloco preditivo para o bloco atual por meio ou de inter-predição ou intra-predição, o codificador de vídeo 20 forma um bloco de vídeo residual subtraindo o bloco preditivo 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 transformadas 52. A unidade de processamento de transformadas 52 transforma os dados de vídeo residuais em coeficientes de transformada residuais utilizando uma transformada, tal como uma transformada de co-seno discreta (DCT) ou transformada conceptualmente semelhante. A unidade de processamento de transformadas 52 pode converter os dados de vídeo residuais do domínio de pixel no domínio de transformada, tal como um domínio da frequência.
[0130] A unidade de processamento de transformadas 52 pode enviar os coeficientes de transformada resultantes à unidade de processamento de quantificação 54. A unidade de processamento de quantificação 54 quantifica os coeficientes de transformada de modo a reduzir também a taxa de bits. O processo de quantificação pode reduzir a profundidade de bit associada ao alguns ou todos os coeficientes. O grau de quantificação pode ser modificado pelo ajuste de um parâmetro de quantificação. Em alguns exemplos, a unidade de processamento de quantificação 54 pode efetuar então uma varredura da matriz que inclui os coeficientes de transformada quantificados. Alternativamente, a unidade de codificação por entropia 56 pode efetuar a varredura.
[0131] Em seguida à quantificação, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformada quantificados. Por exemplo, a unidade de codificação por entropia 56 pode efetuar codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptiva ao contexto (CABAC), codificação aritmética binária adaptiva ao contexto baseada em sintaxe (SBAC), codificação por entropia com particionamento de intervalos de probabilidade (PIPE) ou outra metodologia ou técnica de codificação por entropia. Em seguida à 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 transmissão ou recuperação posterior pelo decodificador de vídeo 30. A unidade de codificação por entropia 56 pode codificar também por entropia os vetores de movimento e os outros elementos de sintaxe para fatia de vídeo atual que ê codificada.
[0131] A unidade de processamento de quantificação inversa 58 e a unidade de processamento de transformadas inversa 60 pode aplicar quantificação inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel para utilização posterior como um bloco de referência de uma imagem de referência. A unidade de compensação de movimento 46 pode calcular um bloco de referência adicionando o bloco residual a um bloco preditivo de uma das imagens de referência dentro de uma das listas de imagens de referência. A unidade de compensação de movimento 46 pode aplicar também um ou mais filtros de interpolação ao bloco residual reconstruído de modo a calcular valores de sub- pixel de número inteiro para utilização na estimação de movimento. 0 somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado em movimento produzido pela unidade de compensação de movimento 46 de modo a se produzir um bloco de referência para armazenamento na memória de imagens de referência 64. O bloco de referência pode ser utilizado pela unidade de estimação de movimento 44 e pela unidade de compensação de movimento 46 como um bloco de referência de modo a ser inter-predizer um bloco em um quadro ou imagem de vídeo subsequente.
[0133] Desta maneira, o codificador de vídeo 20 representa um exemplo de codificador de vídeo configurado para codificar um valor para um elemento de sintaxe que indica se pelo menos uma parte do valor de total de ordens de imagem (POC) de uma imagem será reinicializada em um valor de zero, quando o valor para o elemento de sintaxe indicar que a parte do valor POC será reinicializada no valor de zero, reinicializar pelo menos a parte do valor POC de modo que a parte do valor POC seja igual a zero e codificar dados de vídeo utilizando o valor POC reinicializado.
[0134] A Figura 3 é um diagrama de blocos que mostra um decodificador de vídeo 30 exemplar que pode implementar as técnicas descritas nesta revelação. No exemplo da Figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, uma unidade de processamento de predição 71, uma unidade de processamento de quantificação inversa 76, uma unidade de transformação inversa 78, um somador 80 e uma memória de imagens de referência 82. A unidade de processamento de predição 71 inclui uma unidade de compensação de movimento 72 e uma unidade de intra-predição 74. 0 decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação geralmente complementar à passagem de codificação descrita com relação ao codificador de vídeo 20 da Figura 2.
[0135] Em diversos exemplos, uma unidade do decodificador de vídeo 30 pode ser encarregada de executar as técnicas desta revelação. Além disto, em alguns exemplos, as técnicas desta revelação podem ser divididas entre uma ou mais das unidades do decodificador de vídeo 30.
[0136] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa os blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe conexos do codificador de vídeo 20. A unidade de decodificação por entropia 70 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits de modo a gerar coeficientes quantificados, vetores de movimento e outros elementos de sintaxe. A unidade de decodificação por entropia 70 emite os vetores de movimento e outros elementos de sintaxe para a unidade de processamento de predição 71. O decodificador de vídeo 3 0 pode receber os elementos de sintaxe ao nível de fatia de vídeo e/ou ao nível de bloco de vídeo.
[0137] Quando a fatia de vídeo é codificada como uma fatia intra-codificada (I) , a unidade de intra- predição 74 da unidade de processamento de predição 71 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base no modo de intra-predição sinalizado e em dados de blocos decodificados anteriormente do quadro ou imagem atual. Quando a imagem de vídeo é codificada como uma fatia inter-codificada (isto é, B ou P) , a unidade de compensação de movimento 72 da unidade de processamento de predição 71 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 por entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. 0 decodificador de vídeo 30 pode construir as listas de imagens de referência, Lista 0 e Lista 1, utilizando técnicas de construção pré-definidas ou qualquer outra técnica baseada nas imagens de referência armazenadas na memória de imagens de referência 82.
[0138] A unidade de compensação de movimento 72 determina informações de predição para um bloco de vídeo da fatia de vídeo atual efetuando parse nos vetores de movimento e em outros elementos de sintaxe, e utiliza as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual que é decodificado. Por exemplo, a unidade de compensação de movimento 72 utiliza alguns dos elementos de sintaxe recebidos para determinar o modo de predição (intra- ou inter-predição, por exemplo) utilizado para codificar os blocos de vídeo da fatia de vídeo, o tipo de fatia de inter-predição (fatia B ou fatia P, por exemplo), informações de construção para uma ou mais das listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo inter-codifiçado da fatia, a condição de intra-predição para cada bloco de vídeo inter-codifiçado e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0139] A unidade de compensação de movimento 72 pode também efetuar interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode utilizar os filtros de interpolação utilizados pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular valores interpolados para sub-pixels de número inteiro de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[0140] De acordo com as técnicas desta revelação, a unidade de codificação por entropia 70 pode decodificar um valor para um elemento de sintaxe que indica se pelo menos uma parte um primeiro valor de total de ordens de imagem (POC) de uma imagem será reinicializada em um valor de zero. 0 elemento de sintaxe pode compreender, por exemplo, o poc_msb_reset_flag do Exemplo 1 descrito acima ou o poc_reset_flag do Exemplo 2 descrito acima. 0 decodificador de vídeo 30 pode reinicializar então a pelo menos parte do valor POC quando o elemento de sintaxe tiver um valor que indica que o valor POC será reinicializado. Por exemplo, o decodificador de vídeo 30 pode configurar bits para pelo menos parte (bits mais significativos para poc_msb_reset_flag ou todos os bits para o poc_reset_flag, por exemplo) do valor POC como iguais a zero.
[0141] Além disso, o decodificador de video 30 pode ajustar os valores POC de outras imagens na memória de imagens de referência 82 também (isto é, as imagens que estão na mesma camada de codificação de vídeo e na mesma sequência de vídeo codificada). Por exemplo, o decodificador de vídeo 30 pode decrementar os valores POC das outras imagens de modo que a diferença entre os valores POC e o valor POC para qual a reinicialização foi sinalizada permaneça idêntica à de antes da reinicialização. Assim, se uma imagem na memória de imagens de referência 82 tiver uma diferença de valor POC com relação ao valor POC da imagem atual de N, o decodificador de vídeo 3 0 pode reinicializar o valor POC da imagem na memória de imagens de referência de modo que o valor POC seja igual ao valor POC reinicializado da imagem atual menos N.
[0142] Em geral, os blocos de vídeo que são inter-preditos podem incluir elementos de sintaxe que identificam blocos de referência se a inter-predição é temporal ou inter-camada (inter-vista). De acordo com as técnicas desta revelação, os elementos de sintaxe para blocos inter-preditos podem identificar uma imagem de referência utilizando o valor POC da imagem de referência em seguida a uma reinicialização, conforme discutido acima. Assim, o decodificador de vídeo 30 não precisa ajustar valores POC que identificam imagens de referência quando sinalizados como informações de movimento para fins de inter-predição.
[0143] A unidade de processamento de quantificação inversa 76 quantifica por inversão, isto é, desquantifica, os coeficientes de transformada quantificados apresentados no fluxo de bits e decodificado pela unidade de decodificação por entropia 70. O processo de quantificação inversa pode incluir a utilização de um parâmetro de quantificação calculado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo de modo a se determinar o grau de quantificação e, da mesma maneira, o grau de quantificação inversa que deve ser aplicado. A unidade de processamento de transformadas inversa 78 aplica uma transformada inversa, como, por exemplo, uma DCT inversa, uma transformada de número inteiro inversa ou um processo de transformada inversa conceptualmente semelhante, aos coeficientes de transformada de modo a se produzirem blocos residuais no domínio de pixel.
[0144] Depois que a unidade de compensação de movimento 72 gera o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e em outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado somando os blocos residuais da unidade de processamento de transformadas inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. O somador 80 representa o componente ou componentes que executam esta operação de somar. Se desejado, um filtro de desbloqueio pode ser também aplicado para filtrar os blocos decodificados de modo a se remover os artefatos de bloqueio. Os filtros de malha (ou na malha de codificação ou depois da malha de codificação) podem ser também utilizados para suavizar as transições entre pixels ou senão aperfeiçoar a qualidade de vídeo. Os blocos de vídeo decodificados em um dado quadro ou imagem são então armazenados na memória de imagens de referência 82, que armazena imagens de referência utilizadas para compensação de movimento subsequente. A memória de imagens de referência 82 armazena também vídeo decodificado para apresentação posterior em um aparelho de exibição, tal como o aparelho de exibição 32 da Figura 1. Em alguns exemplos, um ou mais aspectos das técnicas descritas nesta revelação podem ser executados por um aparelho de rede intermediário como um elemento de rede ciente de meios (MAME) um processador de adaptação de fluxos, um processador de emendas ou um processador de edição. Por exemplo, tal aparelho intermediário pode ser configurado para gerar qualquer uma de diversas sinalizações, conforme descrito nesta revelação. Por exemplo, tão aparelho intermediário pode ser configurado para receber um primeiro elemento de sintaxe que especifica se o valor de total de ordens de imagem (POC) da imagem atual será reinicializado como sendo igual a um conjunto dos bits menos significativos (LSBs) do valor POC da imagem atual, quando o primeiro elemento de sintaxe especificar que o valor POC da imagem atual é reinicializado como sendo igual ao conjunto de LSBs do valor POC da imagem atual, decrementar os valores POC de outras imagens na mesma camada de codificação da imagem atual de modo que a diferença entre o valor POC da imagem atual e o valor POC de qualquer uma das imagens na mesma camada permaneça idêntica à de antes que o valor POC da imagem atual fosse reinicializado e decodificar pelo menos algumas da imagem atual e da outras imagens utilizando os valores POC decrementados.
[0146] Em outro exemplo, tal aparelho intermediário pode ser configurado para receber um primeiro elemento de sintaxe que especifica se o valor de total de ordens de imagem (POC) da imagem atual é reinicializado como sendo igual a zero quando o primeiro elemento de sintaxe especificar que o valor POC da imagem atual é reinicializado como sendo igual zero, se a imagem atual estiver em uma camada maior que a camada 0, reinicializar a imagem atual como sendo igual a zero e decodificar a imagem atual utilizando o valor POC reinicializado.
[0147] Desta maneira, o decodificador de vídeo 30 representa um exemplo de codificador de vídeo configurado para codificar um valor para um elemento de sintaxe que indica se pelo menos uma parte do valor de total de ordens de imagem (POC) de uma imagem será reinicializada em um valor de zero, quando o valor para o elemento de sintaxe indicar que a parte do valor POC será reinicializada no valor de zero, reinicializar pelo menos a parte do valor POC de modo que a parte do valor POC seja igual a zero e codificar dados de vídeo utilizando o valor POC reinicializado.
[0148] A Figura 4 é um diagrama conceptual que mostra uma sequência de imagens de vídeo codificadas 100- 132. As imagens são sombreadas de maneira diferente para indicar posições dentro de uma estrutura de predição hierárquica. Por exemplo, as imagens 100, 116 e 132 são sombreadas em preto para representar que as imagens 100, 116, 132 estão no topo da estrutura de predição hierárquica. As imagens 100, 116, 132 podem compreender, por exemplo, imagens intra-codifiçadas ou imagens inter- codifiçadas que são preditas a partir de outras imagens em uma única direção (imagens P, por exemplo). Quando intra- codif içadas, as imagens 100, 116, 132 são preditas unicamente a partir de dados dentro da mesma imagem. Quando inter-codifiçada, a imagem 116, por exemplo, pode ser codificada com relação a dados da imagem 100, conforme indicado pela seta tracejada da imagem 116 à imagem 100. As imagens 116, 132 formam imagens-chave dos grupos de imagens (GOPs) 134, 136, respectivamente.
[0149] As imagens 108, 124 são sombreadas em preto para indicar que elas são as seguintes na hierarquia de codificação após as imagens 100, 116 e 132. As imagens 108, 124 podem compreender imagens codificadas bidirecionais, de predição inter-modal. Por exemplo, a imagem 108 pode ser predita a partir de dados das imagens 100 e 116, enquanto a imagem 124 pode ser predita a partir das imagens 116 e 132. As imagens 104, 112, 120 e 128 são ligeiramente sombreadas para indicar que elas são as seguintes na hierarquia de codificação após as imagens 108 e 124. As imagens 104, 112, 120 e 128 podem compreender também imagens codificadas por predição inter-modal, bidirecionais. Por exemplo, a imagem 104 pode ser predita a partir das imagens 100 e 108, a imagem 112 pode ser predita a partir das imagens 108 e 116, a imagem 120 pode ser predita a partir das imagens 116 e 124 e a imagem 128 pode ser predita a partir das imagens 124 e 132.
[0150] Finalmente, as imagens 102, 106, 110, 114, 118, 122, 126 e 130 são sombreadas em branco para indicar que estas imagens são as últimas na hierarquia de codificação. As imagens 102, 106, 110, 114, 118, 122, 126 e 130 podem ser imagens codificadas por predição inter-modal, bidirecionais. A imagem 102 pode ser predita a partir das imagens 100 e 104, a imagem 106 pode ser predita a partir das imagens 104 e 108, a imagem 110 pode ser predita a partir das imagens 108 e 112, a imagem 114 pode ser predita a partir das imagens 112 e 116, a imagem 118 pode ser predita a partir das imagens 116 e 120, a imagem 122 pode ser predita a partir das imagens 12 0 e 124, a imagem 126 pode ser predita a partir das imagens 124 e 128 e a imagem 130 pode ser predita a partir das imagens 128 e 132.
[0151] As imagens 100-132 são mostradas em ordem de exibição. Ou seja, após a decodificação, a imagem 100 é exibida antes da imagem 102, a imagem 102 é exibida antes da imagem 104 e assim por diante. Devido à hierarquia de codificação, as imagens 100-132 podem ser decodificadas em uma ordem diferente. Além do mais, depois de serem codificadas, as imagens 100-132 podem ser dispostas em ordem de decodificação em um fluxo de bits que inclui dados codificados para as imagens 100-132. Por exemplo, a imagem 116 pode ser exibida por último entre as imagens do GOP 134. Devido à hierarquia de codificação, contudo, a imagem 116 pode ser codificada primeiro do GOP 134. Ou seja, de modo a se decodificar apropriadamente a imagem 108, por exemplo, pode ser necessário decodificar a imagem 116 primeiro de modo a atuar como uma imagem de referência para a imagem 108. Da mesma maneira, a imagem 108 pode atuar como uma imagem de referência para as imagens 104, 106, 110 e 112 e, portanto, pode ser necessário decodificá-la antes das imagens 104, 106, 110 e 112.
[0152] 0 tempo no qual a imagem é exibida pode ser referido como tempo de apresentação. Ao passo que o tempo no qual a imagem é decodificada pode ser referido como tempo de decodificação. Os tempos de decodificação e os tempos de apresentação geralmente fornecem indicações de ordenamento temporal com relação a outras imagens da mesma sequência. A diferença entre o tempo de decodificação de uma imagem e o tempo de apresentação da imagem pode ser referida como retardo de ordenamento de imagens para a imagem.
[0153] De acordo com as técnicas desta revelação, um codificador de vídeo (o codificador de vídeo 20 e/ou o decodif icador de vídeo 30, por exemplo) pode ajustar os valores POC para imagens em uma camada de codificação de vídeo quando uma das imagens é uma imagem não IRAP que é incluída em uma unidade de acesso que inclui também uma imagem IRAP (de uma camada de codificação de vídeo diferente). Por exemplo, suponha-se que a imagem 132 seja uma imagem P e seja co-localizada com (isto é, incluída na mesma unidade de acesso) com uma imagem de outra camada de codificação de vídeo que é uma imagem IRAP. Neste exemplo, a imagem 132 seria uma imagem não IRAP (uma vez que é inter-codifiçada) que é incluída na mesma unidade de acesso de uma imagem IRAP.
[0154] Consequentemente, continuando o exemplo apresentado acima, o codificador de vídeo codificaria um valor para um elemento de sintaxe que indica que o valor POC para imagem 132 será reinicializado. Ou seja, o elemento de sintaxe indicaria que pelo menos uma parte do valor POC para a imagem 132 será reinicializada (em um valor de zero). Por conseguinte, o codificador de vídeo pode ajustar o valor POC da imagem 132. Por exemplo, de acordo com om o Exemplo 1 discutido acima, no qual o elemento de sintaxe é poc_msb_reset_flag, o codificador de vídeo fixaria os bits mais significativos (MSBs) do valor POC da imagem 132 como igual a zero. Como outro exemplo, de acordo com o Exemplo 2 discutido acima, no qual o elemento de sintaxe é poc_reset_flag, o codificador de vídeo fixaria o valor POC inteiro da imagem 132 como igual a zero.
[0155] O codificador de vídeo pode ajustar também os valores POC de outras imagens. Por exemplo, supondo-se que as imagens 100 e 116 foram codificadas anteriormente, o codificador de vídeo pode ajustar os valores POC das imagens 100 e 116 com base no valor POC reinicializado para imagem 132. No exemplo da Figura 4, o valor POC da imagem 132 é oito vezes maior que o valor POC da imagem 116 e dezesseis vezes maior que o valor POC da imagem 100. No Exemplo 2, no qual o valor POC inteiro é reinicializado, o codificador de vídeo pode ajustar o valor POC da imagem 100 como sendo igual a -16 (dezesseis negativos) e o valor POC da imagem 116 como sendo igual a - 8 (oito negativos). Desta maneira, as diferenças entre os valores POC da imagem 132 e das imagens 100 e 116 podem permanecer constantes depois da reinicialização de valor POC, com relação a antes da reinicialização de valor POC.
[0156] O exemplo acima explicou a modificação dos valores POC das imagens 100 e 116 com base na suposição de que estas imagens estariam já presentes em um armazenador de imagens decodificadas (DPB) quando da codificação da imagem 132. Em alguns casos, as imagens 102- 114 podem estar também presentes no DPB, e neste caso, o codificador de vídeo pode ajustar igualmente os valores POC das imagens 102-114. Entretanto, uma vez que as imagens 118-132 podem depender da imagem 132, espera-se que as imagens 118-130 estariam presentes no DPB quando a imagem 132 vier a ser reinicializada. Ou seja, as imagens 118-130 têm uma ordem de decodificação que é posterior à ordem de decodificação da imagem 132. Portanto, o codificador de vídeo não precisa ajustar os valores POC para as imagens 118-130. Em alguns exemplos, as imagens 102-114 podem ter também uma ordem de decodificação que é posterior à ordem de decodificação da imagem 132.
[0157] A Figura 5 é um fluxograma que mostra um método exemplar para codificar dados de vídeo de acordo com as técnicas desta revelação. 0 codificador de vídeo 20 é descrito como executando o método da Figura 5. Entretanto, Deve ficar entendido que outros aparelhos de codificação podem ser configurados para executar este ou um método semelhante. Além disto, as etapas do método podem ser executadas em uma ordem diferente ou em paralelo, e determinadas etapas podem ser adicionadas ou omitidas.
[0158] No exemplo da Figura 5, o codificador de vídeo 20 codifica inicialmente imagens de uma primeira camada de codificação de vídeo (150). Conforme discutido acima, a camada pode compreender a uma camada de codificação escalonável de vídeo ou a uma vista para codificação de vídeo de várias vistas. A utilização do termo "primeiro" neste exemplo pretende ser nominal e não ordinal; em alguns zonas, o codificador de vídeo 20 pode ter codificado uma ou mais camadas de codificação de vídeo adicionais antes da primeira camada discutida com relação à Figura 5. Codificar imagens da primeira camada de codificação de vídeo envolve geralmente codificar determinadas imagens da primeira camada como imagens de ponto de acesso intra-aleatório (IRAP) e outras imagens como imagens não IRAP, como, por exemplo, imagens inter- preditas (sejam temporais ou inter-camada).
[0159] 0 codificador de vídeo 20 pode determinar então uma imagem de uma segunda camada de codificação de vídeo que é co-localizada com uma imagem IRAP da primeira camada de codificação de vídeo (152). Entretanto, o codificador de vídeo 20 pode determinar a codificação desta imagem da segunda camada de codificação de vídeo como uma imagem não IRAP (154) . Por exemplo, o codificador de vídeo 20 pode determinar a codificação da imagem utilizando inter-predição temporal e/ou predição inter-camada (inter-vista, por exemplo).
[0160] Em consequência de a imagem se uma imagem não IRAP, mas co-localizada com uma imagem IRAP (incluída na mesma unidade de acesso da imagem IRAP, por exemplo) o codificador de vídeo 20 pode codificar um valor para um elemento de sintaxe que indica que pelo menos uma parte do valor POC para imagem será reinicializada (156) . Por exemplo, o elemento de sintaxe pode compreender o poc_msb_reset_flag do Exemplo 1 discutido acima ou o poc_reset_flag discutido acima. Além do mais, o codificador de vídeo 2 0 pode ajustar os valores POC da imagem e das imagens codificadas anteriormente e que estão na mesma camada e na mesma sequência de vídeo codificada (158). Em particular, o codificador de vídeo 20 pode ajustar os valores POC das outras imagens de modo que as diferenças entre os valores POC das outras imagens e da imagem atual permaneçam as mesmas depois da reinicialização do valor POC para a imagem atual como antes da reinicialização.
[0161] 0 codificador de vídeo 20 pode codificar também a imagem (160) . Ou seja, para cada bloco da imagem, o codificador de vídeo 20 pode determinar se vai intra-predizer ou inter-predizer (utilizando predição temporal ou inter-camada) ou bloco. 0 codificador de vídeo 20 pode codificar então a imagem (162) e armazenar a imagem decodificada em um armazenador de imagens decodificadas (DPB) como, por exemplo, a memória de imagens de referência 64. O codificador de vídeo 20 pode codificar então uma parte de uma imagem subsequente (como, por exemplo, uma imagem na mesma camada que tem uma ordem de codificação posterior ou uma imagem na mesma unidade de acesso de uma camada diferente) com relação à imagem decodificada (166). De modo a identificar a imagem decodificada, o codificador de vídeo 20 pode codificar o valor POC reinicializado para a imagem decodificada como informações de movimento de um bloco da imagem subsequente (168) .
[0162] Desta maneira, o método da Figura 5 representa um exemplo de método que inclui determinar se se vai reinicializar pelo menos uma parte do valor de total de ordens de imagem (POC) de uma imagem em um valor de zero, em resposta à determinação de reinicializar a pelo menos parte do valor POC, reinicializar pelo menos a parte do valor POC de modo que a parte do primeiro valor POC seja igual a zero e codificar um valor para um elemento de sintaxe que indica que pelo menos a parte do valor POC será reinicializada no valor de zero e codificar dados de vídeo utilizando o valor POC reinicializado.
[0163] A Figura 6 é um fluxograma que mostra um método exemplar para decodificar dados de vídeo de acordo com as técnicas desta revelação. O decodificador de vídeo 30 é descrito como executando o método da Figura 6. Entretanto, deve ficar entendido que outros aparelhos de codificação podem ser configurados para executar este ou um método semelhante. Além disto, as etapas do método podem ser executadas em uma ordem diferente ou em paralelo, e determinadas etapas podem ser adicionadas ou omitidas.
[0164] No exemplo da Figura 6, o decodificador de vídeo 30 decodificada inicialmente imagens de uma primeira camada de codificação de vídeo (180). Conforme discutido acima, a camada pode corresponder a uma camada de codificação escalonável de vídeo ou a uma vista para codificação de vídeo de várias vistas. A utilização do termo "primeira" neste contexto pretende ser nominal e não ordinal; em alguns exemplos, o decodificador de vídeo 30 pode ter decodificado uma ou mais camadas de codificação de vídeo adicionais antes da primeira camada discutida com relação à Figura 6. Decodificar imagens da primeira camada de codificação de vídeo envolve geralmente decodificar determinadas imagens da primeira camada como imagens de ponto de acesso intra-aleatório (IRAP) e outras imagens como imagens não IRAP, como, por exemplo, inter-preditas (sejam temporais ou inter-camada).
[0165] O decodificador de vídeo 30 pode decodificar então um elemento de sintaxe para uma imagem de uma segunda camada de codificação de vídeo que ê co- localizada com (isto é, na mesma unidade de acesso) uma imagem IRAP da primeira camada de codificação de vídeo que indica que pelo menos uma parte do valor POC para a imagem será reinicializada (182). Por exemplo, o elemento de sintaxe pode compreender o poc_msb_reset_flag do Exemplo 1 discutido acima ou o poc_reset_flag do Exemplo 2 discutido acima. Com base no valor deste elemento de sintaxe, o decodificador de vídeo 30 pode ajustar os valores POC da imagem e de imagens decodificadas anteriormente que estão na mesma camada e na mesma sequência de vídeo codificada (184). Em particular, o decodificador de vídeo 30 pode ajustar os valores POC das outras imagens de modo que as diferenças entre os valores POC das outras imagens e da imagem atual permaneçam as mesmas após a reinicialização do valor POC para a imagem atual como antes da reinicialização.
[0166] 0 decodificador de vídeo 30 pode decodificar também a imagem (186) e armazenar a imagem decodificada em um armazenador de imagens decodificadas (DPB), como, por exemplo, a memória de imagens de referência 82 (188). Decodificar a imagem pode incluir decodificar blocos da imagem utilizando intra-predição, inter-predição temporal e/ou predição inter-camada. Quando efetua predição inter-camada, o decodificador de vídeo 30 pode decodificar um valor POC para uma imagem de referência em outra camada (a imagem IRAP na primeira camada, por exemplo) que é igual ao valor POC reinicializado para a imagem atual. Quando efetua inter-predição temporal, o decodificador de vídeo 30 pode decodificar um valor POC para uma imagem de referência no DPB onde o valor POC decodificado pode corresponder a um dos valores POC ajustados para uma das imagens decodificadas anteriormente no DPB.
[0167] Além disso, o decodificador de vídeo 30 pode utilizar a imagem decodificada como uma imagem de referência para uma imagem que será decodificada em seguida. Ou seja, o decodificador de vídeo 30 pode decodificar o valor POC reinicializado da imagem decodificada como informação de movimento (um parâmetro de movimento, por exemplo) para um bloco de uma imagem subsequente (190). A imagem subsequente pode ser uma imagem subsequente na segunda camada ou uma imagem de uma camada diferente (uma imagem na mesma unidade de acesso da imagem decodificada, por exemplo). Em ambos os casos, as informações de movimento decodificadas podem incluir uma referência ao valor POC da imagem decodificada, que corresponde ao valor POC reinicializado para a imagem decodificada (isto é, não o valor POC para imagem anterior a reinicialização). Com base neste valor POC decodificado como informação de movimento para o bloco da imagem subsequente, o decodificador de vídeo 30 pode decodificar o bloco da imagem subsequente com relação à imagem decodificada (192).
[0168] Desta maneira, o método da Figura 6 representa um exemplo de método que inclui determinar se o valor para um elemento de sintaxe indica que pelo menos uma parte do valor de total de ordens de imagem (POC) de uma imagem será reinicializada em um valor de zero, quando o valor para o elemento de sintaxe indica que a parte do valor POC será reinicializada no valor de zero, reinicializar pelo menos a parte do valor POC de modo que a parte do valor POC seja igual a zero e decodificar dados de vídeo utilizando o valor POC reinicializado.
[0169] Em um ou mais exemplos, as funções descritas podem implementadas com aplicativos em hardware, software, firmware ou qualquer combinação deles. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código, em um meio passível de leitura por computador e executadas por uma unidade de processamento baseada em hardware. Os meios passíveis de leitura por computador podem incluir meios de armazenamento passíveis de leitura por computador que correspondem a um meio tangível tal como meios de armazenamento de dados ou meios de comunicação que incluam qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, como, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, os meios passíveis de leitura por computador podem corresponder geralmente a (1) meios de armazenamento passíveis de leitura por computador tangíveis que são não transitórios ou (2) a um meio de comunicação tal como um sinal ou onda portadora. Os meios de armazenamento de dados podem ser quaisquer meios disponíveis que possam ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, códigos e/ou estruturas de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio passível de leitura por computador.
[0170] A título de exemplo, e não de limitação, tais meios de armazenamento passíveis de leitura por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros aparelhos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado sob a forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disto, qualquer conexão é denominada apropriadamente de meio passível de leitura por computador. Por exemplo, se as instruções forem transmitidas de um site da Web, servidor ou outra fonte remota utilizando-se um cabo coaxial, um cabo de fibra ótica, um par trançado, uma linha de assinante digital (DSL) ou tecnologias sem fio, tais como infravermelho, rádio e microonda, então o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou tecnologias sem fio, tais como infravermelho, rádio e microonda são incluídos na definição de meio. Deve ficar entendido, contudo, que os meios de armazenamento passíveis de leitura por computador e os meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas são em vez disso direcionados a meios de armazenamento não transitórios, tangíveis. Disco (disk e disc) conforme aqui utilizado, inclui disco compacto (CD), disco de laser, disco óptico, disco versátil digital (DVD), disco flexível e disco Blu-ray, onde discos {disks) reproduzem usualmente dados magneticamente, enquanto discos {discs) reproduzem dados opticamente com lasers. Combinações dos componentes acima devem ser também incluídas dentro do alcance dos meios passíveis de leitura por computador.
[0171] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados específicos de aplicativo (ASICs) , arranjos lógicos programáveis no campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo processador conforme aqui utilizado, pode referir-se a qualquer uma das estruturas precedentes ou a qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disto, sob alguns aspectos, a funcionalidade aqui descrita pode ser proporcionada dentro de hardware dedicado e/ou módulos de software configurados para codificação e decodificação ou incorporados a um codec combinado. Além disto, as técnicas podem ser completamente implementadas em um ou mais circuitos ou elementos lógicos.
[0172] As técnicas desta revelação podem ser implementadas em uma ampla variedade de aparelhos ou equipamentos, que incluem um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (um conjunto de chips, por exemplo). Diversos componentes, módulos ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de aparelhos configurados para executar as técnicas descritas, mas não exigem necessariamente execução por unidades de hardware diferentes. Em vez disso, conforme descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware de codec ou apresentadas por uma coleção de unidades de hardware interoperantes, que incluem um ou mais processadores descritos acima, em conjunto com software e/ou firmware adequado.
[0173] Foram descritos diversos exemplos. Estes e outros exemplos estão dentro do alcance das reivindicações seguintes.

Claims (15)

1. Método para decodificar dados de vídeo, o método caracterizado pelo fato de que compreende: receber uma unidade de acesso que inclui um conjunto de primeiras imagens em respectivas primeiras camadas de codificação de vídeo e uma segunda imagem em uma segunda camada de codificação de vídeo diferente das primeiras camadas de codificação de vídeo, em que o conjunto das primeiras imagens inclui todas as imagens na unidade de acesso que não são imagens de restauração instantânea de decodificador (IDR) e a segunda imagem é uma imagem IDR; e, para cada primeira imagem do conjunto de primeiras imagens: receber um elemento de sintaxe indicativo sobre se pelo menos uma parte de um valor de contagem de ordem de imagem, POC, da primeira imagem será reinicializada para um valor de zero, reinicializar pelo menos a parte do valor POC de modo que a parte do valor POC seja igual a zero, quando o valor para o elemento de sintaxe indicar que a parte do valor POC deve ser reinicializada para o valor de zero, em que, antes de reinicializar o valor POC, o valor POC para a primeira imagem é diferente de um segundo valor POC para a segunda imagem; e decodificar dados de vídeo utilizando o valor POC reinicializado, em que POC é uma variável associada a uma imagem que identifica exclusivamente a imagem associada dentre imagens em uma sequência de vídeo codificado; e em que uma unidade de acesso inclui todas as imagens codificadas associadas com o mesmo tempo de saída.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o valor para o elemento de sintaxe indica se todos os bits, incluindo a parte, do valor POC devem ser reinicializados para o valor de zero, o método compreendendo adicionalmente, quando o valor para o elemento de sintaxe indicar que todos os bits do valor POC serão reinicializados para o valor de zero, reinicializar o valor POC de modo que todos os bits do valor POC sejam iguais a zero.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que reinicializar o valor POC para a primeira imagem compreende reinicializar o valor POC para a primeira imagem de modo que, após a reinicialização, o valor POC para a primeira imagem seja igual ao valor POC para a segunda imagem.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a unidade de acesso compreende adicionalmente uma terceira imagem em uma terceira camada de codificação de vídeo diferente da primeira camada de codificação de vídeo e da segunda camada de codificação de vídeo, e em que decodificar dados de vídeo utilizando o valor POC reinicializado compreende decodificar um bloco da terceira imagem utilizando predição inter-camada com relação à primeira imagem quando o bloco inclui uma referência ao valor POC reinicializado.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente, para cada primeira imagem do conjunto de primeiras imagens, quando o elemento de sintaxe indicar que a parte do valor POC da primeira imagem deve ser reinicializada para o valor de zero: determinar um valor POC de uma imagem adicional, em que a primeira imagem e a imagem adicional estão em uma camada de codificação de vídeo comum e em uma sequência de vídeo codificada comum; determinar uma primeira diferença entre o valor POC da primeira imagem e o valor POC da imagem adicional; e decrementar o valor POC da imagem adicional de modo que uma segunda diferença entre o valor POC decrementado da imagem adicional e o valor POC reinicializado da primeira imagem seja igual à primeira diferença.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente, para cada primeira imagem do conjunto de primeiras imagens, quando o elemento de sintaxe indicar que a parte do valor POC da primeira imagem deve ser reinicializada para o valor de zero: determinar valores POC para uma pluralidade de outras imagens em uma camada de codificação de vídeo comum com a primeira imagem; determinar diferenças entre o valor POC da primeira imagem e os valores POC para as outras imagens; e decrementar os valores POC para as outras imagens de modo que as respectivas diferenças entre os valores POC decrementados e o valor POC reinicializado da primeira imagem sejam iguais às respectivas diferenças determinadas entre o valor POC da primeira imagem e os valores POC para as outras imagens.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que os dados para um conjunto de imagens de referência indicam se as outras imagens são imagens de referência de curto prazo ou imagens de referência de longo prazo, e em que decrementar os valores POC compreende: decrementar os valores POC para as imagens de referência de curto prazo; e decrementar os valores POC para as imagens de referência de longo prazo.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o elemento de sintaxe compreende um indicador de reinicialização de POC.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente decodificar um cabeçalho de fatia que inclui o elemento de sintaxe.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a parte compreende os bits mais significativos, MSBs, do valor POC.
11. Método para codificar dados de vídeo, o método caracterizado pelo fato de que compreende: formar uma unidade de acesso incluindo um conjunto de primeiras imagens em respectivas primeiras camadas de codificação de vídeo e uma segunda imagem em uma segunda camada de codificação de vídeo, em que a segunda camada de codificação de vídeo é diferente das primeiras camadas de codificação de vídeo, em que o conjunto de primeiras imagens inclui todas as imagens na unidade de acesso que não são imagens de restauração instantânea de decodificador (IDR) e a segunda imagem é uma imagem IDR; e para cada primeira imagem do conjunto de primeiras imagens: determinar se reinicializa pelo menos uma parte de um valor de contagem de ordem de imagem, POC, da primeira imagem para um valor de zero; em resposta à determinação de reinicializar a pelo menos parte do valor POC, reinicializar pelo menos a parte do valor POC de modo que a parte do valor POC seja igual a zero, em que, antes de reinicializar o valor POC, o valor POC para a primeira imagem é diferente de um segundo valor POC para a segunda imagem; codificar um valor para um elemento de sintaxe que indica que pelo menos a parte do valor POC deve ser reinicializada para o valor de zero; e codificar dados de vídeo utilizando o valor POC reinicializado; em que POC é uma variável associada a uma imagem que identifica exclusivamente a imagem associada entre imagens em uma sequência de vídeo codificado; e em que uma unidade de acesso inclui todas as imagens codificadas associadas com o mesmo tempo de saída.
12. Dispositivo para decodificar dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: meios para receber uma unidade de acesso que inclui um conjunto de primeiras imagens em respectivas primeiras camadas de codificação de vídeo e uma segunda imagem em uma segunda camada de codificação de vídeo diferente das primeiras camadas de codificação de vídeo, em que o conjunto das primeiras imagens inclui todas as imagens na unidade de acesso que não são imagens de restauração instantânea de decodificador (IDR) e a segunda imagem é uma imagem IDR; e, para cada primeira imagem do conjunto de primeiras imagens: meios para receber um elemento de sintaxe indicativo sobre se pelo menos uma parte de um valor de contagem de ordem de imagem, POC, da primeira imagem será reinicializada para um valor de zero, meios para reinicializar pelo menos a parte do valor POC de modo que a parte do valor POC seja igual a zero, quando o valor para o elemento de sintaxe indicar que a parte do valor POC deve ser reinicializada para o valor de zero, em que, antes de reinicializar o valor POC, o valor POC para a primeira imagem é diferente de um segundo valor POC para a segunda imagem; e meios para decodificar dados de vídeo utilizando o valor POC reinicializado, em que POC é uma variável associada a uma imagem que identifica exclusivamente a imagem associada dentre imagens em uma sequência de vídeo codificado; e em que uma unidade de acesso inclui todas as imagens codificadas associadas com o mesmo tempo de saída.
13. Dispositivo para codificar dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: meios para formar uma unidade de acesso incluindo um conjunto de primeiras imagens em respectivas primeiras camadas de codificação de vídeo e uma segunda imagem em uma segunda camada de codificação de vídeo, em que a segunda camada de codificação de vídeo é diferente das primeiras camadas de codificação de vídeo, em que o conjunto de primeiras imagens inclui todas as imagens na unidade de acesso que não são imagens de restauração instantânea de decodificador (IDR) e a segunda imagem é uma imagem IDR; e para cada primeira imagem do conjunto de primeiras imagens: meios para determinar se reinicializa pelo menos uma parte de um valor de contagem de ordem de imagem, POC, da primeira imagem para um valor de zero; meios para reinicializar, em resposta à determinação de reinicializar a pelo menos parte do valor POC, pelo menos a parte do valor POC de modo que a parte do valor POC seja igual a zero, em que, antes de reinicializar o valor POC, o valor POC para a primeira imagem é diferente de um segundo valor POC para a segunda imagem; meios para codificar um valor para um elemento de sintaxe que indica que pelo menos a parte do valor POC deve ser reinicializada para o valor de zero; e meios para codificar dados de vídeo utilizando o valor POC reinicializado; em que POC é uma variável associada a uma imagem que identifica exclusivamente a imagem associada entre imagens em uma sequência de vídeo codificado; e em que uma unidade de acesso inclui todas as imagens codificadas associadas com o mesmo tempo de saída.
14. Dispositivo, de acordo com a reivindicação 12 ou 13, caracterizado pelo fato de que o dispositivo compreende pelo menos um dentre: um circuito integrado; um microprocessador; um dispositivo de comunicação sem fio.
15. Memória legível por computador caracterizada pelo fato de que compreende instruções armazenadas na mesma que, quando executadas, fazem com que um processador de um dispositivo para decodificar dados de vídeo realize o método conforme definido nas reivindicações 1 a 10 ou de um dispositivo para codificar dados de vídeo realize o método conforme definido na reivindicação 11.
BR112015025639-2A 2013-04-08 2014-04-07 Alinhamento poc de camada cruzada para fluxos de bits de várias camadas que podem incluir imagens irap não alinhadas BR112015025639B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201361809855P 2013-04-08 2013-04-08
US61/809,855 2013-04-08
US201361846532P 2013-07-15 2013-07-15
US61/846,532 2013-07-15
US14/245,115 2014-04-04
US14/245,115 US9532052B2 (en) 2013-04-08 2014-04-04 Cross-layer POC alignment for multi-layer bitstreams that may include non-aligned IRAP pictures
PCT/US2014/033172 WO2014168872A1 (en) 2013-04-08 2014-04-07 Cross-layer poc alignment for multi-layer bitstreams that may include non-aligned irap pictures

Publications (3)

Publication Number Publication Date
BR112015025639A2 BR112015025639A2 (pt) 2017-07-18
BR112015025639A8 BR112015025639A8 (pt) 2020-06-23
BR112015025639B1 true BR112015025639B1 (pt) 2023-03-28

Family

ID=51654433

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015025639-2A BR112015025639B1 (pt) 2013-04-08 2014-04-07 Alinhamento poc de camada cruzada para fluxos de bits de várias camadas que podem incluir imagens irap não alinhadas

Country Status (9)

Country Link
US (1) US9532052B2 (pt)
EP (1) EP2984844B1 (pt)
JP (1) JP6158422B2 (pt)
KR (1) KR101818831B1 (pt)
CN (1) CN105122814B (pt)
BR (1) BR112015025639B1 (pt)
ES (1) ES2773276T3 (pt)
HU (1) HUE047299T2 (pt)
WO (1) WO2014168872A1 (pt)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SI4017006T1 (sl) 2011-09-22 2023-12-29 Lg Electronics, Inc. Postopek in naprava za signaliziranje informacij o sliki ter postopek za dekodiranje in naprava, ki le-tega uporablja
KR102290421B1 (ko) * 2013-04-05 2021-08-17 삼성전자주식회사 랜덤 엑세스를 위한 멀티 레이어 비디오 부호화 방법 및 그 장치, 랜덤 엑세스를 위한 멀티 레이어 비디오 복호화 방법 및 그 장치
US9525883B2 (en) * 2013-07-15 2016-12-20 Qualcomm Incorporated Cross-layer alignment of intra random access point pictures
KR20150043222A (ko) * 2013-10-12 2015-04-22 삼성전자주식회사 멀티 레이어 비디오 부호화 방법 및 그 장치, 멀티 레이어 비디오 복호화 방법 및 그 장치
US9900605B2 (en) 2013-10-14 2018-02-20 Qualcomm Incorporated Device and method for scalable coding of video information
WO2015057124A1 (en) 2013-10-14 2015-04-23 Telefonaktiebolaget L M Ericsson (Publ) Picture order count alignment in scalble video
US9628820B2 (en) 2013-11-19 2017-04-18 Qualcomm Incorporated POC value design for multi-layer video coding
US9674544B2 (en) 2013-11-25 2017-06-06 Qualcomm Incorporated POC value design for multi-layer video coding
US9942546B2 (en) 2013-12-12 2018-04-10 Qualcomm Incorporated POC value design for multi-layer video coding
CN104754347B (zh) * 2013-12-26 2019-05-17 中兴通讯股份有限公司 视频图像序号的编码、解码方法及装置、电子设备
CN104754358B (zh) * 2013-12-27 2019-02-19 中兴通讯股份有限公司 码流的生成和处理方法、装置及系统
KR102266902B1 (ko) * 2014-01-13 2021-06-18 삼성전자주식회사 멀티 레이어 비디오 부호화 방법 및 장치, 멀티 레이어 비디오 복호화 방법 및 장치
US9794595B2 (en) * 2014-03-18 2017-10-17 Qualcomm Incorporated Derivation of end of sequence NAL unit information for multi-layer bitstreams
CN112118454B (zh) * 2019-06-20 2023-02-24 腾讯美国有限责任公司 视频解码方法、设备和计算机可读存储介质
US11166038B2 (en) * 2019-06-20 2021-11-02 Tencent America LLC Method for support of scalability with adaptive picture resolution
WO2021061025A1 (en) * 2019-09-24 2021-04-01 Huawei Technologies Co., Ltd. An encoder, a decoder with picture order counter derivation
US11962936B2 (en) 2020-09-29 2024-04-16 Lemon Inc. Syntax for dependent random access point indication in video bitstreams

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10674171B2 (en) * 2011-09-27 2020-06-02 Telefonaktiebolaget Lm Ericsson (Publ) Decoders and methods thereof for managing pictures in video decoding process
KR20130037161A (ko) * 2011-10-05 2013-04-15 한국전자통신연구원 스케일러블 비디오 코딩을 위한 향상된 계층간 움직임 정보 예측 방법 및 그 장치
KR102094503B1 (ko) * 2012-04-15 2020-03-30 삼성전자주식회사 다계층 비디오 부호화 방법 및 장치, 다계층 비디오 복호화 방법 및 장치
US9807421B2 (en) * 2013-04-05 2017-10-31 Sharp Kabushiki Kaisha NAL unit type restrictions
US9591321B2 (en) * 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets

Also Published As

Publication number Publication date
EP2984844A1 (en) 2016-02-17
BR112015025639A2 (pt) 2017-07-18
US9532052B2 (en) 2016-12-27
BR112015025639A8 (pt) 2020-06-23
KR20150140732A (ko) 2015-12-16
HUE047299T2 (hu) 2020-04-28
US20140301439A1 (en) 2014-10-09
CN105122814A (zh) 2015-12-02
KR101818831B1 (ko) 2018-01-15
EP2984844B1 (en) 2019-11-13
JP2016518776A (ja) 2016-06-23
CN105122814B (zh) 2018-10-26
ES2773276T3 (es) 2020-07-10
JP6158422B2 (ja) 2017-07-05
WO2014168872A1 (en) 2014-10-16

Similar Documents

Publication Publication Date Title
BR112015025639B1 (pt) Alinhamento poc de camada cruzada para fluxos de bits de várias camadas que podem incluir imagens irap não alinhadas
ES2744201T3 (es) Dispositivo y procedimiento para la codificación escalable de información de vídeo
BR112014017159B1 (pt) Conjuntos de parâmetros de codificação e cabeçalhos de unidade nal para codificação de vídeo
BR112015032977B1 (pt) Equipamento e método para codificar informações de vídeo, equipamento e método para decodificar informações de vídeo, e memória legível por computador
BR112017003073B1 (pt) Unificação de cópia de intrabloco e interpredição
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
BR122017006773B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões
BR112015006856B1 (pt) Método e aparelho para decodificar dados de vídeo, método e aparelho para codificar dados de vídeo e memória legível por computador
BR112015016011B1 (pt) Método de decodificação de vídeo inter-vista ou intercamada, método de codificação de vídeo inter-vista ou inter-camada, dispositivo e memória legível por computador
BR112016000866B1 (pt) Processamento de compensação de iluminação para codificação de vídeo
BR112014006842B1 (pt) Método e dispositivo para codificar dados de vídeo e mídia de armazenamento não transitório legível por computador
BR112014011060B1 (pt) Número de redução de contextos para codificação aritmética binária adaptativa de contexto
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
KR102148061B1 (ko) Mv-hevc 에서의 인터-뷰 종속성 타입
BR112015006839B1 (pt) Sinalizando identificadores de camada para pontos de operação em codificação de vídeo
BR112015008574B1 (pt) Métodos para decodificar e codificar dados de vídeo, dispositivos para decodificar e codificar dados de vídeo, e, memória legível por computador
JP6453355B2 (ja) マルチレイヤビデオコーディングのためのpoc値設計
BR112014032473B1 (pt) Método e dispositivo para decodificar dados de vídeo, método e dispositvo para codificar dados de vídeo e mídia de armazenamento legível por computador
BR122022009499A2 (pt) Método de codificação implementado por um codificador de vídeo, dispositivo de codificação, sistema e meio legível por computador não transitório
BR112016015552B1 (pt) Métodos para codificação de um conjunto de imagens de referência (rps) entre camadas e codificação de unidades da camada de acesso à rede (nal) do fim do fluxo de bits
BR112016011818B1 (pt) Projeto de valor de poc para codificação de vídeo de multicamada
BR112016021476B1 (pt) Método e dispositivo para codificar dados de vídeo e memória legível por computador
BR112016013141B1 (pt) Design de valor poc para codificação de vídeo de multicamadas
BR112014033011B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões
BR112016029356B1 (pt) Método para decodificar e codificar e dispositivo para decodificar dados de vídeo de acordo com um padrão de codificação de vídeo de alta eficiência (hevc)

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
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 07/04/2014, OBSERVADAS AS CONDICOES LEGAIS