BR112014017118B1 - Determinar contextos para codificar dados de coeficiente de transformada em codificação de vídeo - Google Patents

Determinar contextos para codificar dados de coeficiente de transformada em codificação de vídeo Download PDF

Info

Publication number
BR112014017118B1
BR112014017118B1 BR112014017118-1A BR112014017118A BR112014017118B1 BR 112014017118 B1 BR112014017118 B1 BR 112014017118B1 BR 112014017118 A BR112014017118 A BR 112014017118A BR 112014017118 B1 BR112014017118 B1 BR 112014017118B1
Authority
BR
Brazil
Prior art keywords
block
sub
context
video
transform coefficient
Prior art date
Application number
BR112014017118-1A
Other languages
English (en)
Other versions
BR112014017118A2 (pt
BR112014017118A8 (pt
Inventor
Marta Karczewicz
Joel Sole Rojals
Vadim SEREGIN
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 BR112014017118A2 publication Critical patent/BR112014017118A2/pt
Publication of BR112014017118A8 publication Critical patent/BR112014017118A8/pt
Publication of BR112014017118B1 publication Critical patent/BR112014017118B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)

Abstract

DETERMINAR CONTEXTOS PARA CODIFICAR DADOS DE COEFICIENTE DE TRANSFORMADA EM CODIFICAÇÃO DE VÍDEO. Em um exemplo, um dispositivo para codificação de dados de vídeo inclui um codificador de vídeo configurado para determinar os valores para os indicadores de sub-bloco codificados de um ou mais sub-blocos vizinhos para um sub-bloco atual, determine um contexto para codificação de um coeficiente de transformação do sub-bloco atual com base nos valores para os indicadores de sub-bloco codificados e codifique por entropia o coeficiente de transformação utilizando o contexto determinado.

Description

[0001] Esse pedido reivindica os benefícios do pedido provisório U.S. No. 61/586.668, depositado em 13 de janeiro de 2012, pedido provisório U.S. No. 61/588.595, depositado em 19 de janeiro de 2012, e pedido provisório U.S. No. 61/597.097, depositado em 9 de fevereiro de 2012, cada um dos quais é incorporado aqui por referência em sua totalidade.
Campo da Invenção
[0002] Essa descrição refere-se à codificação de vídeo.
Descrição da Técnica Anterior
[0003] Capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, incluindo televisores digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, computadores tablet, leitoras de e-book, câmeras digitais, dispositivos de gravação digital, aparelhos de mídia digital, dispositivos de jogos de vídeo, consoles de jogos, telefones de rádio via satélite ou celular, os chamados "smartphones", dispositivos de teleconferência de vídeo, dispositivos de sequenciamento de vídeo, e similares. Dispositivos de vídeo digital implementam técnicas de compressão de vídeo, tal como as descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H. 263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e extensões de tais padrões Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar, e/ou armazenar informação de vídeo digital de forma mais eficiente pela implementação de tais técnicas de compressão de vídeo.
[0004] As técnicas de compressão de vídeo realizam a predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou remover a redundância inerente às sequências de vídeo. Para a codificação de vídeo com base em bloco, uma fatia de vídeo (isso é, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também podem ser 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 intracodificada (I) de uma imagem são codificados utilizando-se predição espacial com relação às amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem utilizar predição espacial com relação às amostras de referência nos blocos vizinhos na mesma imagem ou predição temporal com relação às 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 de predição para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco de predição. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco de predição, e os dados residuais indicando a diferença entre o bloco codificado e o bloco de predição. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel em um domínio de transformada, resultando em coeficientes de transformada residuais, que então podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em um conjunto bidimensional, podem ser digitalizados a fim de produzir um vetor unidimensional de coeficientes de transformada, e a codificação por entropia pode ser aplicada para alcançar ainda mais compressão.
Sumário da Invenção
[0006] Em geral, essa descrição descreve as técnicas relacionadas com a determinação de contextos para a codificação por entropia, por exemplo, utilizando codificação aritmética binária adaptativa de contexto (CABAC), de dados de vídeo. A codificação CABAC geralmente envolve a determinação de um contexto quando da codificação de representações binarizadas de vários elementos de sintaxe. Exemplos de elementos de sintaxe incluem dados para coeficientes de transformada, tal como dados indicando se os coeficientes de transformada são significativos, sinais de coeficientes de transformada que são significativos, e valores de nível para os coeficientes de transformada que são significativos. Os coeficientes de transformada geralmente correspondem a coeficientes de um bloco de transformada, tal como uma unidade de transformada (TU). Essa descrição descreve as técnicas para determinar os contextos para codificação de coeficientes de transformada com base em regiões de um bloco de transformada no qual os coeficientes de transformada ocorrem.
[0007] Em um exemplo, um método de codificação de dados de vídeo inclui a determinação de um contexto para codificação de um coeficiente de transformada de um bloco de vídeo com base em uma região do bloco de vídeo onde o coeficiente de transformada ocorre, e a codificação por entropia do coeficiente de transformada utilizando o contexto determinado.
[0008] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui um codificador de vídeo configurado para determinar um contexto para codificação de um coeficiente de transformada de um bloco de vídeo com base em uma região do bloco de vídeo onde o coeficiente de transformada ocorre, e codifica por entropia o coeficiente de transformada utilizando o contexto determinado.
[0009] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui meios para determinar um contexto para codificação de um coeficiente de transformada de um bloco de vídeo com base em uma região do bloco de vídeo onde o coeficiente de transformada ocorre, e meios para codificar por entropia o coeficiente de transformada utilizando o contexto determinado.
[0010] Em outro exemplo, um meio de armazenamento legível por computador possui armazenado no mesmo instruções que, quando executadas, fazem com que um processador determine um contexto para codificação de um coeficiente de transformada de um bloco de vídeo com base em uma região do bloco de vídeo onde o coeficiente de transformada ocorre, e codifique por entropia o coeficiente de transformada utilizando o contexto determinado.
[0011] Em outro exemplo, um método de decodificação de dados de vídeo inclui a determinação de se um coeficiente de transformada de um bloco de vídeo é um coeficiente de transformada DC, quando o coeficiente de transformada é determinado como sendo o coeficiente de transformada DC do bloco de vídeo, determinando um contexto para decodificação do coeficiente de transformada com base no coeficiente de transformada sendo o coeficiente de transformada DC sem considerar um tamanho do bloco de vídeo, e decodificar por entropia o coeficiente de transformada utilizando o contexto determinado.
[0012] Em outro exemplo, um dispositivo para decodificação de dados de vídeo inclui um decodificador de vídeo configurado para determinar se um coeficiente de transformada de um bloco de vídeo é um coeficiente de transformada DC, quando o coeficiente de transformada é determinado como sendo um coeficiente de transformada DC do bloco de vídeo, determina um contexto para decodificação do coeficiente de transformada com base no coeficiente de transformada sendo o coeficiente de transformada DC sem considerar um tamanho do bloco de vídeo e decodifica por entropia o coeficiente de transformada utilizando o contexto determinado.
[0013] Em outro exemplo, um dispositivo para decodificação de dados de vídeo inclui meios para determinar se um coeficiente de transformada de um bloco de vídeo é um coeficiente de transformada DC, meios para determinar, quando o coeficiente de transformada é determinado como sendo o coeficiente de transformada DC do bloco de vídeo, um contexto para decodificação do coeficiente de transformada com base no coeficiente de transformada sendo o coeficiente de transformada DC sem considerar um tamanho do bloco de vídeo, e meios para decodificar por entropia o coeficiente de transformada utilizando o contexto determinado.
[0014] Em outro exemplo, um meio de armazenamento legível por computador possui armazenado no mesmo instruções que, quando executadas, fazem com que um processador determine se um coeficiente de transformada de um bloco de vídeo é um coeficiente de transformada DC, quando o coeficiente de transformada é determinado como sendo o coeficiente de transformada DC do bloco de vídeo, determinam um contexto para decodificação do coeficiente de transformada com base no coeficiente de transformada sendo o coeficiente de transformada DC sem considerar um tamanho do bloco de vídeo, e decodificam por entropia o coeficiente de transformada utilizando o contexto determinado.
[0015] Em outro exemplo, um método de codificação de dados de vídeo inclui a determinação de se um coeficiente de transformada de um bloco de vídeo é um coeficiente de transformada DC, quando o coeficiente de transformada for determinado como sendo o coeficiente de transformada DC do bloco de vídeo, determina um contexto para codificação do coeficiente de transformada com base no coeficiente de transformada sendo o coeficiente de transformada DC sem considerar um tamanho do bloco de vídeo, e codifica por entropia o coeficiente de transformada utilizando o contexto determinado.
[0016] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui um codificador de vídeo configurado para determinar se um coeficiente de transformada de um bloco de vídeo é um coeficiente de transformada DC, quando o coeficiente de transformada for determinado como sendo um coeficiente de transformada DC do bloco de vídeo, determina um contexto para codificação do coeficiente de transformada com base no coeficiente de transformada sendo o coeficiente de transformada DC sem considerar um tamanho do bloco de vídeo, e codifica por entropia o coeficiente de transformada utilizando o contexto determinado.
[0017] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui meios para determinar se um coeficiente de transformada de um bloco de vídeo é um coeficiente de transformada DC, meios para determinar, quando o coeficiente de transformada é determinado como sendo o coeficiente de transformada DC do bloco de vídeo, um contexto para codificação do coeficiente de transformada com base no coeficiente de transformada sendo o coeficiente de transformada DC sem considerar um tamanho do bloco de vídeo, e meios para codificar por entropia o coeficiente de transformada utilizando o contexto determinado.
[0018] Em outro exemplo, um meio de armazenamento legível por computador tem armazenadas no mesmo instruções que, quando executadas, fazem com que um processador determine se um coeficiente de transformada de um bloco de vídeo é um coeficiente de transformada DC, quando o coeficiente de transformada é determinado como sendo o coeficiente de transformada DC do bloco de vídeo, determina um contexto para codificação do coeficiente de transformada com base no coeficiente de transformada sendo o coeficiente de transformada DC sem considerar um tamanho do bloco de vídeo, e codificar por entropia o coeficiente de transformada utilizando o contexto determinado.
[0019] Em outro exemplo, um método de decodificação de dados de vídeo inclui determinar valores para indicadores de sub-bloco codificados de um ou mais sub-blocos vizinhos para um sub-bloco atual, determinando um contexto para decodificar um coeficiente de transformada do sub-bloco atual com base nos valores para os indicadores de sub-bloco codificados, e decodificando por entropia o coeficiente de transformada utilizando o contexto determinado.
[0020] Em outro exemplo, um dispositivo para decodificação de dados de vídeo inclui um decodificador de vídeo configurado para determinar os valores para os indicadores de sub-bloco codificados de um ou mais sub- blocos vizinhos para um sub-bloco atual, com base nos valores para os indicadores de sub-bloco codificados, e decodificar por entropia o coeficiente de transformada utilizando o contexto determinado.
[0021] Em outro exemplo, um dispositivo para decodificação de dados de vídeo inclui meios para determinar os valores para indicadores de sub-bloco codificados de um ou mais sub-blocos vizinhos de um sub- bloco atual, meios para determinar um contexto para decodificar um coeficiente de transformada do sub-bloco atual com base nos valores para os indicadores de sub-bloco codificados, e meios para decodificar por entropia o coeficiente de transformada utilizando o contexto determinado.
[0022] Em outro exemplo, um meio de armazenamento legível por computador possui armazenadas no mesmo instruções que, quando executadas, fazem com que um processador determine os valores para os indicadores de sub-bloco codificados de um ou mais sub-blocos vizinhos de um sub-bloco atual, determine um contexto para decodificação de um coeficiente de transformada do sub- bloco atual com base nos valores para os indicadores de sub-bloco codificados e decodifique por entropia o coeficiente de transformada utilizando o contexto determinado.
[0023] Em outro exemplo, um método de codificação de dados de vídeo inclui a determinação de valores para os indicadores de sub-bloco codificados de um ou mais sub- blocos vizinhos de um sub-bloco atual, determinando um contexto para a codificação de um coeficiente de transformada do sub-bloco atual com base nos valores para os indicadores de sub-bloco codificados, e codificando por entropia o coeficiente de transformada utilizando o contexto determinado.
[0024] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui um codificador de vídeo configurado para determinar os valores para indicadores de sub-bloco codificados de um ou mais sub- blocos vizinhos de um sub-bloco atual, determinar um contexto para codificação de um coeficiente de transformada do sub-bloco atual com base nos valores para os indicadores de sub-bloco codificados, e codificar por entropia o coeficiente de transformada utilizando o contexto determinado.
[0025] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui meios para determinar os valores para indicadores de sub-bloco codificados de um ou mais sub-blocos vizinhos de um sub-bloco atual, meios para determinar um contexto para codificar um coeficiente de transformada do sub-bloco atual com base nos valores para os indicadores de sub-bloco codificado, e meios para codificar por entropia o coeficiente de transformada utilizando o contexto determinado.
[0026] Em outro exemplo, um meio de armazenamento legível por computador possui armazenado no mesmo instruções que, quando executadas, fazem com que um processador determine os valores para os indicadores de sub-bloco codificados de um ou mas sub-blocos vizinhos de um sub-bloco atual, determine um contexto para codificação de um coeficiente de transformada do sub-bloco atual com base nos valores para os indicadores de sub-bloco codificados, e codifique por entropia o coeficiente de transformada utilizando o contexto determinado.
[0027] Os detalhes de um ou mais exemplos são apresentados nos desenhos em anexo e na descrição abaixo. Outras características, objetivos e vantagens serão aparentes a partir da descrição e dos desenhos e das reivindicações.
Breve Descrição dos Desenhos
[0028] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo ilustrativo que pode utilizar as técnicas de interpredição descritas nessa descrição.
[0029] A figura 2 é um diagrama em bloco ilustrando um codificador de vídeo ilustrativo que pode implementar as técnicas de interpredição descritas nessa descrição.
[0030] A figura 3 é um diagrama em bloco ilustrando um decodificador de vídeo ilustrativo que pode implementar as técnicas de interpredição descritas nessa descrição.
[0031] A figura 4 é um diagrama conceitual que ilustra uma relação entre os coeficientes de transformada em um bloco de vídeo e um mapa de significância associado com o bloco de vídeo.
[0032] As figuras 5A a 5D são diagramas conceituais que ilustram exemplos de blocos de dados de vídeo digitalizados utilizando uma ordem de digitalização em zigue-zague, uma ordem de digitalização horizontal, uma ordem de digitalização vertical, e uma ordem de digitalização diagonal.
[0033] A figura 6 é um diagrama conceitual que ilustra um bloco de vídeo ilustrativo dividido em sub- blocos para a codificação de coeficiente de transformada.
[0034] A figura 7 é um diagrama conceitual que ilustra um suporte de cinco pontos ilustrativo utilizado para definir um modelo de contexto para um mapa de significância de coeficientes em um bloco de vídeo digitalizado utilizando uma ordem de digitalização diagonal reversa.
[0035] As figuras 8A e 8B são diagramas conceituais que ilustram a dependência de contexto dentro do suporte de cinco pontos.
[0036] As figuras 9A e 9B são diagramas conceituais que ilustram divisões ilustrativas de um bloco de vídeo em duas ou mais regiões.
[0037] A figura 10 é um diagrama conceitual que ilustra a designação ilustrativa dos contextos com base em posição ou vizinhança para cada região de um bloco de vídeo.
[0038] A figura 11 é um diagrama conceitual que ilustra a designação ilustrativa dos desvios de contexto para cada região de um bloco de vídeo.
[0039] A figura 12 é um diagrama conceitual que ilustra uma divisão embutida ilustrativa de um bloco de vídeo em duas ou mais regiões com base nos tamanhos de TU que correlacionam com os modelos de contexto existentes.
[0040] As figuras 13A e 13B são diagramas conceituais que ilustram as divisões ilustrativas de um bloco de vídeo em duas ou mais regiões.
[0041] As figuras 14A e 14B são diagramas conceituais que ilustram a designação ilustrativa dos desvios de contexto para cada região de um bloco de vídeo.
[0042] A figura 15 é um fluxograma ilustrando um método ilustrativo para codificação de um bloco atual.
[0043] A figura 16 é um fluxograma ilustrando um método ilustrativo para a decodificação de um bloco de dados de vídeo atual.
Descrição Detalhada da Invenção
[0044] Em geral, essa descrição descreve as técnicas relacionadas com a determinação de contextos para codificação por entropia, por exemplo, utilizando codificação aritmética binária adaptativa de contexto (CABAC), dos dados de vídeo. A codificação CABAC geralmente envolve a determinação de um contexto quando da codificação de representações binarizadas de vários elementos de sintaxe. Os elementos de sintaxe incluem, por exemplo, dados para coeficientes de transformada, tal como dados indicando se os coeficientes de transformada são significativos, sinais dos coeficientes de transformada que são significativos, e valores de nível para os coeficientes de transformada que são significativos. Os coeficientes de transformada geralmente correspondem a coeficientes de um bloco de transformada, tal como uma unidade de transformada (TU). Essa descrição descreve técnicas para determinar os contextos para a codificação dos coeficientes de transformada com base nas regiões de um bloco de transformada onde os coeficientes de transformada ocorrem.
[0045] Em geral, de acordo com as técnicas dessa descrição, um codificador de vídeo pode ser configurado para determinar o contexto para codificação de um coeficiente de transformada com base em uma região na qual o coeficiente de transformada ocorre e então codificar por entropia o coeficiente de transformada utilizando o contexto determinado. Um bloco de vídeo pode ser dividido em regiões em uma variedade de formas. As figuras 9A e 1 ilustram exemplos nos quais um bloco de vídeo é dividido em uma primeira região incluindo um ou mais sub-blocos superiores esquerdos (por exemplo, sub-blocos 4 x 4) e uma segunda região incluindo sub-blocos fora da primeira região. A figura 9B ilustra um exemplo no qual um bloco de vídeo é dividido em regiões ao longo de uma direção diagonal. A figura 10 ilustra um exemplo no qual um bloco de vídeo é dividido em quartiles, e o quartile superior esquerdo é adicionalmente dividido em uma primeira sub- região incluindo sub-blocos de uma parte superior esquerda do quartile superior esquerdo e uma segunda sub-região incluindo sub-blocos do quartile superior esquerdo fora da primeira sub-região. A figura 12 ilustra um exemplo no qual um bloco de vídeo é dividido em regiões que correspondem aos tamanhos de bloco de vídeo (por exemplo, 4 x 4, 8 x 8, 16 x 16, e 32 x 32). A figura 13A ilustra um exemplo no qual um bloco de vídeo é dividido em regiões retangulares horizontais. A figura 13B ilustra um exemplo no qual um bloco de vídeo é dividido em regiões retangulares verticais. Essas figuras são descritas em maiores detalhes abaixo.
[0046] Em vários exemplos, um codificador de vídeo pode ser configurado para determinar um contexto para codificação de um coeficiente de transformada de várias formas, por exemplo, com base em uma região na qual o coeficiente de transformada ocorre. Por exemplo, um codificador de vídeo pode ser configurado para determinar um contexto utilizando informação de contexto com base em posição para algumas regiões ou informação de contexto com base em vizinhança para outras regiões. Em alguns exemplos, todos os coeficientes de transformada dentro de uma região em particular podem ser codificados utilizando o mesmo contexto, determinado com base na região. Em outros exemplos, os contextos para os coeficientes de transformada dentro de uma região podem ser determinados com base em uma vizinhança de contexto. Em outros exemplos ainda, um codificador de vídeo pode determinar um desvio a ser aplicado a um contexto com base na região na qual um coeficiente de transformada ocorre. Isso é, cada uma das regiões pode ser associada com um desvio de contexto em particular a ser aplicado a um contexto.
[0047] As técnicas dessa descrição podem reduzir o consumo de largura de banda, levando à economia de bits quando da codificação dos elementos de sintaxe para os coeficientes de transformada. Tais elementos de sintaxe podem incluir todo e qualquer indicador de coeficiente significativo (que indica se um coeficiente de transformada correspondente é significativo, isso é, diferente de zero), um sinal de coeficientes significativos, uma indicação de se um coeficiente significativo possui um valor absoluto maior que 1, uma indicação de se um coeficiente significativo com um valor absoluto superior a 1 possui um valor absoluto maior que 2, e/ou um valor de nível restante para coeficientes possuindo valores absolutos superiores a 2.
[0048] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo ilustrativo 10 que pode utilizar as técnicas descritas nessa descrição. Como ilustrado na figura 1, o sistema 10 inclui um dispositivo de origem 12 que gera dados de vídeo codificados a serem decodificados posteriormente por um dispositivo de destino 14. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores desktop, computadores notebook (isso é, laptop), computadores tablet, caixas de decodificação, aparelhos telefônicos tal como os chamados "smartphones", os chamados "smartpads", televisores,câmeras, dispositivos de exibição, aparelhos de mídia digital, consoles de jogos de vídeo, dispositivo de sequenciamento de vídeo, ou similares. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0049] O dispositivo de destino 14 pode receber dados de vídeo codificados a serem decodificados através de um link 16. O link 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, o link 16 pode compreender um meio de comunicação para permitir que o dispositivo de origem 12 transmita os dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio e transmitido para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem ou com fio, tal como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão física. O meio de comunicação pode formar parte de uma rede com base em pacote, tal como uma rede de área local, uma rede de área ampla, ou uma rede global, tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0050] Alternativamente, os dados codificados podem ser enviados a partir da interface de saída 22 para um dispositivo de armazenamento 34. De forma similar, os dados codificados podem ser acessados do dispositivo de armazenamento 34 pela interface de entrada. O dispositivo de armazenamento 34 pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente tal como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outro meio de armazenamento digital adequado para armazenamento de dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento 34 pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que pode manter o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento 34 através de sequenciamento ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo ilustrativos incluem um servidor de rede (por exemplo, para um sítio da rede), um servidor FTP, dispositivos de armazenamento anexados à rede (NAS), ou um acionador de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados do dispositivo de armazenamento 34 pode ser uma transmissão de sequenciamento, uma transmissão de download, ou uma combinação de ambos.
[0051] As técnicas dessa descrição não são necessariamente limitadas aos aplicativos ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo suportando qualquer um dentre a variedade de aplicativos de multimídia, tal como difusões de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões de vídeo de sequenciamento, por exemplo, através da Internet, codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outros aplicativos. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo de via única ou duas vias para suportar os aplicativos tal como o sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo, e/ou vídeo telefonia.
[0052] No exemplo da figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20 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 dispositivo de origem 12, a fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo contendo vídeo capturado previamente, uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo e/ou um sistema gráfico de computador para gerar dados gráficos de computador como vídeo fonte, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 pode formar telefones de câmera ou vídeo telefones. No entanto, as técnicas descritas nessa descrição podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas aos aplicativos com e/ou sem fio.
[0053] O vídeo capturado, pré-capturado, ou gerado por computador pode ser codificado pelo codificador de vídeo 20. Os dados de vídeo codificados podem ser transmitidos diretamente para o dispositivo de destino 14 através da interface de saída 22 do dispositivo de origem 12. Os dados de vídeo codificados também podem (ou alternativamente) ser armazenados no dispositivo de armazenamento 34 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução.
[0054] O dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30, e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. A interface de entrada 28 do dispositivo de destino 14 recebe 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 dispositivo de armazenamento 34, podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 para uso por um decodificador de vídeo, tal como o decodificador de vídeo 30, na decodificação de dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento ou armazenados em um servidor de arquivo.
[0055] O dispositivo de exibição 32 pode ser integrado com, ou externo ao dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e também pode ser configurado para interfacear com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer um dentre uma variedade de dispositivos de exibição tal como um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo de emissão de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0056] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compreensão de vídeo, tal como um padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e pode se conformar ao Modelo de Teste HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões proprietários ou da indústria, tal como padrão ITU- T H.264, alternativamente referido como MPEG-4, Parte 10, codificação de Vídeo Avançada (AVC), ou extensões de tais padrões. Extensões de padrões incluem, por exemplo, uma codificação de vídeo escalonável (SVC), uma codificação de vídeo de múltiplas vistas (MC), tridimensional (3D) tal como codificação de informação de profundidade, e similares. As técnicas dessa descrição, no entanto, não estão limitadas a qualquer padrão de codificação em particular ou extensão de padrão. Outros exemplos dos padrões de compressão de vídeo incluem MPEG-2 e ITU-T H.263.
[0057] Apesar de não ilustrado na figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser integrados a um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX adequadas, ou outro hardware e software, para manusear a codificação de ambos o áudio e vídeo em uma sequência de dados comum ou sequências de dados separadas. Se aplicável, em alguns exemplos, as unidades MUX-DEMUX podem se conformar ao protocolo de multiplexador ITU H.223, ou outros protocolos tal como o protocolo de datagrama de usuário (UDP).
[0058] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um dentre uma variedade de conjuntos de circuitos e codificador adequados, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicativo (ASICs), conjuntos de porta programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado e executar as instruções em hardware utilizando um ou mais processadores para realizaras técnicas dessa descrição. Cada codificador de vídeo 20 e decodificador de vídeo 30 podem ser incluídos em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo.
[0059] O JCT-VC está trabalhando no desenvolvimento do padrão HEVC. Os esforços de padronização HEVC são baseados em um modelo de evolução de um dispositivo de codificação de vídeo referido como Modelo de Teste HEVC (HM). HM presume várias capacidades adicionais dos dispositivos de codificação de vídeo com relação aos dispositivos existentes de acordo com, por exemplo, ITU-T H.264/AVC.Por exemplo, ao passo que H.264 fornece nove modos de codificação de intrapredição, HM pode fornecer tanto quanto trinta e três modos de codificação de intrapredição.
[0060] Em geral, o modelo de trabalho de HM descreve que um quadro de vídeo ou imagem possa ser dividido em uma sequência de blocos de árvore ou unidades de codificação maiores (LCU) que incluem ambas as amostras de luminescência e crominância. Um bloco de árvore possui uma finalidade similar a um macrobloco do padrão H.264. Uma fatia inclui um número de blocos de árvore consecutivos na ordem de codificação. Um quadro de vídeo ou imagem pode ser dividido em uma ou mais fatias. Cada bloco de árvore pode ser dividido em unidades de codificação (CUs) de acordo com um quadtree. Por exemplo, um bloco de árvore, como um nó raiz do quadtree, pode ser dividido em quatro nós criança, e cada nó criança pode, por sua vez, ser um nó parente e pode ser dividido em outros quatro nós crianças. Um nó criança não dividido final como um nó folha do quadtree,compreende um nó de codificação, isso é, um bloco de vídeo codificado. Os dados de sintaxe associados com uma sequência de bits codificada podem definir um número máximo de vezes que um bloco de árvore pode ser dividido, e também pode definir um tamanho mínimo dos nós de codificação.
[0061] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformada (TUs) associadas com o nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e deve ter um formato quadrado. O tamanho da CU pode variar de 8 x 8 pixels até um tamanho de bloco de árvore com um máximo de 64 x 64 pixels ou mais. Cada CU pode conter um ou mais PUs e uma ou mais TUs. Os dados de sintaxe associados com uma CU podem descrever, por exemplo, a partição da CU em uma ou mais PUs. Os modos de partição podem diferir entre se a CU foi codificada por pulo ou modo direto, codificada por modo de intrapredição, ou codificada por modo de interpredição. As PUs podem ser divididas para terem um formato não quadrado. Os dados de sintaxe associados com uma CU também podem descrever, por exemplo, a divisão da CU em uma ou mais TUs de acordo com um quadtree. Uma TU pode ser quadrada ou não.
[0062] O padrão HEVC permite as transformações de acordo com as TUs, que podem ser diferentes para CUs diferentes. As TUs são tipicamente dimensionadas com base no tamanho das PUs dentro de uma determinada CU definida por uma LCU dividida, apesar de isso nem sempre ser o caso. As TUs são tipicamente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, as amostras residuais correspondentes a uma CU podem ser subdivididas em unidades menores utilizando uma estrutura de quadtree conhecida como "quadtree residual" (RQT). Os nós folha do RQT podem ser referidos como unidades de transformada (TUs). Os valores de diferença de pixel associados com as TUs podem ser transformados para produzir os coeficientes de transformada que podem ser quantizados.
[0063] Em geral, uma PU inclui dados relacionados com o processo de predição. Por exemplo, quando a PU é codificada por intramodo, a PU pode incluir dados descrevendo um modo de intrapredição para a PU. Como outro exemplo, quando a PU é codificada por intermodo, a PU pode incluir dados definindo um vetor de movimento para a PU. Os dados definindo o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, precisão de um quarto de pixel ou precisão de um oitavo de pixel), uma imagem de referência para a qual o vetor de movimento aponta, e/ou uma lista de imagens de referência para o vetor de movimento.
[0064] Em geral, uma TU é utilizada para os processos de transformada e quantização. Uma determinada CU possuindo uma ou mais PUs também pode incluir uma ou mais TUs. Seguindo a predição, o codificador de vídeo 20 pode calcular valores residuais correspondendo à PU. Os valores residuais compreendem valores de diferença de pixel que podem ser transformados em coeficientes de transformada, quantizados e digitalizados utilizando as TUs para produzir coeficientes de transformada serializados para codificação por entropia. Essa descrição utiliza tipicamente o termo "bloco de vídeo" para fazer referência a um nó de codificação de uma CU. Em alguns casos específicos, essa descrição pode utilizar também o termo "bloco de vídeo" para fazer referência ao bloco de árvore, isso é, LCU ou uma CU, que inclui um nó de codificação e PUs e TUs.
[0065] Uma sequência de vídeo inclui tipicamente uma série de quadros ou imagens de vídeo. Um grupo de imagens (GOP) geralmente compreende uma série de uma ou mais imagens de vídeo.Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em outro local, que descreve um número de 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 fatia respectiva. O codificador de vídeo 20 opera tipicamente em blocos de vídeo dentro de fatias de vídeo individuais a fim de 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 um padrão de codificação especificado.
[0066] Como um exemplo, HM suporta a predição em vários tamanhos de PU. Assumindo-se que o tamanho de uma CU em particular seja de 2N x 2N, HM suporta a intrapredição nos tamanhos de PU de 2N x 2N ou N x N e a interpredição em tamanhos de PU simétricos 2N x 2N, 2N x N, N x 2N, ou N x N. HM também suporta a partição assimétrica para a interpredição nos tamanhos de PU de 2N x nU, 2N x nD, nL x 2N e nR x 2N. Na partição assimétrica uma direção de uma CU não é dividida, enquanto a outra direção é dividida em 25% e 75%. A parte da CU correspondente à partição de 25% é indicada por um "n" seguido pela indicação de "para cima", "para baixo", "para a esquerda" ou "para a direita". Dessa forma, por exemplo, "2N x nU" se refere a uma CU de 2N x 2N que é dividida horizontalmente com uma PU de 2N x 0,5N em cima e uma PU de 2N x 1,5N em baixo.
[0067] Nessa descrição, "N x N" e "N por N" podem ser utilizados de forma intercambiável para fazer referência às dimensões de pixel de um bloco de vídeo em termos de dimensões verticais e horizontais, por exemplo, 16 x 16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16 x 16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Da mesma forma, um bloco N x N geralmente possui N pixels em uma direção vertical e N pixel sem uma direção horizontal, onde N representa um valor inteiro não negativo. Os pixels em um bloco podem ser dispostos em fileiras e colunas. Ademais, os blocos não precisam ter necessariamente o mesmo número de pixels na direção horizontal que na direção vertical. Por exemplo, os blocos podem compreender N x M pixels, onde M não é necessariamente igual a N.
[0068] Seguindo a codificação intrapredita ou interpredita utilizando as PUs de uma CU, o codificador de vídeo 20 pode calcular os dados residuais para as TUs da CU. As PUs podem compreender 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 seguindo a aplicação de uma transformada, por exemplo, uma transformada de cosseno discreto (DCT), uma transformada de inteiro, uma transformada de wavelet, ou uma transformada conceitualmente similar aos dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixel entre os pixels da imagem não codificada e valores de predição correspondentes às PUs. O codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU, e então transformar as TUs para produzir coeficientes de transformada para a CU.
[0069] Seguindo quaisquer transformações para produzir os coeficientes de transformada, o codificador de vídeo 20 pode realizar a quantização dos coeficientes de transformada. A quantização geralmente se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizados para representar os coeficientes, fornecendo compressão adicional. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para baixo para um valor de m bits durante a quantização, onde n é maior que m.
[0070] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem utilizar uma ordem de digitalização predefinida para digitalizar os coeficientes de transformada quantizados para produzir um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem realizar uma digitalização adaptativa. Depois da digitalização dos coeficientes de transformada quantizados para formar um vetor unidimensional, ou durante a digitalização, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação de comprimento variável adaptativa de contexto (CAVLC), a codificação aritmética binária adaptativa de contexto (CABAC), codificação aritmética binária adaptativa de contexto com base em sintaxe (SBAC), codificação por Entropia de Partição de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação por entropia. O decodificador de vídeo 30 pode decodificar por entropia os coeficientes, realizar um processo de quantização inversa e um processo de transformada inversa para reproduzir os dados residuais, e combinar os dados residuais com dados de predição para produzir os dados de vídeo decodificados. O codificador de vídeo 20 também pode codificar por entropia os elementos de sintaxe associados com os dados de vídeo codificados para uso pelo decodificador de vídeo 30 na decodificação de dados de vídeo.
[0071] Para realizar CABAC, o codificador de vídeo 20 e o decodificador de vídeo 30 pode designar um contexto dentro de um modelo de contexto para um símbolo a ser codificado. O contexto pode se referir a, por exemplo, se os valores vizinhos do símbolo são diferentes de zero ou não. De acordo com as técnicas dessa descrição, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode ser configurado para determinar o contexto para codificação por entropia (por exemplo, codificação por entropia ou decodificação por entropia) um coeficiente de transformada com base em uma região de um bloco de vídeo no qual o coeficiente de transformada ocorre.
[0072] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados com definições de várias regiões para os blocos de vídeo (por exemplo, unidades de transformada). Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados com definições das regiões para vários tamanhos de blocos de vídeo. Em alguns exemplos, codificador de vídeo 20 pode determinar um método pelo qual dividir um bloco de vídeo em regiões e codificar os dados representativos de como o bloco deve ser dividido. Cada uma das regiões pode ser associada com um valor respectivo e/ou técnica para determinação do contexto para os coeficientes de transformada que ocorrem dentro da região respectiva.
[0073] Por exemplo, uma região em particular de um bloco de vídeo pode ser associada com um esquema de determinação de contexto com base em vizinhos, enquanto outra região do bloco de vídeo pode ser associada com um esquema de determinação de contexto com base em posição. Como outro exemplo, uma região de um bloco de vídeo pode ser associada com um desvio a ser aplicado a um contexto determinado para os coeficientes de transformada localizados nessa região. As diferentes regiões do mesmo bloco de vídeo podem ser associadas com diferentes valores de desvio e/ou técnicas diferentes para calcular o contexto.
[0074] Como um exemplo, um bloco de vide pode incluir duas regiões diferentes: uma primeira região incluindo um ou mais sub-blocos (por exemplo, sub-blocos de coeficiente de transformada 4 x 4) em um canto superior esquerdo do bloco DCE vídeo, e uma segunda região incluindo outros sub-blocos do bloco de vídeo que não são incluídos na primeira região. Mais especificamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem determinar uma coordenada x e y de um sub-bloco e determinar se o sub- bloco está na primeira região ou na segunda região pela comparação da soma de x e y a um valor limite. Se a soma de x e y for inferior ao limite, o codificador de vídeo 20 e o decodificador de vídeo 30 podem determinar que o sub-bloco está na primeira região, e, do contrário, o codificador de vídeo 20 e o decodificador de vídeo 30 podem determinar que o sub-bloco está na segunda região. O codificador de vídeo 20 e o decodificador de vídeo 30 podem determinar o contexto para os coeficientes de um bloco de vídeo com base no fato de se os coeficientes estão em um sub-bloco da primeira região ou um sub-bloco da segunda região.
[0075] Por exemplo, em algumas regiões, o contexto pode ser um contexto fixo, no qual o codificador de vídeo 20 e o decodificador de vídeo 30 codificam os coeficientes de transformada em tais regiões utilizando o contexto fixo. Isso é, o codificador de vídeo 20 e o decodificador de vídeo 30 podem aplicar o mesmo contexto a todos os coeficientes de transformada na região. Alternativamente, cada um dos sub-blocos na região podem ser associados com o mesmo método de determinação de contexto (por exemplo, o método de contexto fixo), mas diferentes sub-blocos na região devem ter diferentes contextos fixos. O codificador de vídeo 20 e o decodificador de vídeo 30 podem determinar um contexto fixo para um sub-bloco com base na posição do sub-bloco na região. Como outro exemplo adicional, contextos fixos podem ser designados para posições de coeficiente de transformada individuais dentro da região. Isso é, o codificador de vídeo 20 e o decodificador de vídeo 30 podem determinar o contexto para codificação de um coeficiente de transformada dentro da região com base em uma posição do coeficiente de transformada no bloco de vídeo, o sub-bloco e/ou a região.
[0076] Como outro exemplo, em algumas regiões, um modelo de contexto pode ser definido de acordo com os sub- blocos vizinhos. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados com conjuntos de contextos para cada sub-bloco dentro de uma região particular. Isso é, cada sub-bloco na região pode ser associado com um conjunto respectivo de contextos. O codificador de vídeo 20 e o decodificador de vídeo 30 pode selecionar um contexto adequado a partir do conjunto de contextos para cada coeficiente de transformada no sub- bloco respectivo. O conjunto de contextos para um sub-bloco pode ser diferente do conjunto de contextos para outro sub- bloco.
[0077] Como outro exemplo, indicadores individuais para cada sub-bloco em uma região podem ser codificados representando se são coeficientes significativos (isso é, diferentes de zero) no sub-bloco correspondente. Esses indicadores podem ser referidos como indicadores de sub-bloco codificados. Tais indicadores podem ser utilizados para selecionar o contexto para a codificação de coeficientes de transformada nos sub-blocos. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem determinar o contexto para a codificação de coeficientes de transformada em um sub-bloco com base nos valores dos indicadores de um ou ais sub-blocos vizinhos. Por exemplo, os indicadores podem ter valores binários de 0 ou 1, e o codificador de vídeo 20 e o decodificador de vídeo 30 pode determinar o contexto para codificação de coeficientes de transformada em um sub-bloco atual com base na soma dos valores de indicador para um sub-bloco vizinho direito e um sub-bloco vizinho abaixo (também referido como um sub-bloco vizinho inferior). Outras fórmulas também podem ser utilizadas para calcular o contexto para um sub- bloco.
[0078] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para implementar toda e qualquer técnica dessa descrição, sozinha ou qualquer combinação. Uma combinação ilustrativa dessas técnicas é que o codificador de vídeo 20 e o decodificador de vídeo 30 possam ser configurados para dividir uma unidade de transformada em sub-blocos (por exemplo, sub-blocos de 4 x 4 pixels), e então determinar o contexto para a codificação de dados de um coeficiente de transformada em particular de um sub-bloco com base em ambas uma posição do coeficiente de transformada no sub- bloco e com base nos indicadores de bloco codificados para um ou mais sub-blocos vizinhos, por exemplo, um sub-bloco vizinho esquerdo e um sub-bloco vizinho inferior.
[0079] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar um ou mais elementos de sintaxe representativos dos coeficientes de transformada utilizando contextos determinados nesses vários exemplos. Os coeficientes de transformada podem incluir vários tipos de elementos de sintaxe. Por exemplo, um coeficiente de transformada pode incluir um indicador de coeficiente significativo (significant_coeff_flag) indicativo de se o coeficiente de transformada possui um valor diferente de zero (isso é, é significativo). Se o coeficiente de transformada for significativo, o coeficiente de transformada pode incluir um valor de sinal (por exemplo, coeff_sign_flag) indicando se o valor do coeficiente de transformada é maior que ou menor que 0 e um valor indicativo de se o valor absoluto do coeficiente de transformada é superior a 1 (por exemplo, coeff_abs_level_greater1_flag). Se o coeficiente de transformada possuir um valor absoluto superior a 1, o coeficiente de transformada pode incluir um valor indicativo de se o coeficiente de transformada possui um valor absoluto superior a 2 (por exemplo, coeff_abs_level_greater2_flag). Se o coeficiente de transformada possuir um valor absoluto superior a 2, o coeficiente de transformada menos dois (por exemplo, coeff_abs_level_remaining).
[0080] Um codificador CABAC de codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar todo e qualquer desses valores utilizando contextos determinados de acordo com as técnicas dessa descrição. Adicionalmente, ou na alternativa, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar dos indicativos de uma posição de um último coeficiente significativo (por exemplo, last_significant_coeff_x_prefix, last_significant_coeff_x_suffix, last_significant_coeff_y_prefix, e last_significant_coeff_y_suffix) utilizando o contexto determinado de acordo com as técnicas dessa descrição.
[0081] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para realizar qualquer uma ou mais das técnicas descritas nessa descrição, sozinhas ou em qualquer combinação. Várias técnicas para determinação de um contexto para codificação de um coeficiente de transformada de um bloco de vídeo com base em uma região do bloco de vídeo no qual o coeficiente de transformada ocorre e a codificação por entropia do coeficiente de transformada utilizando o contexto determinado são descritas abaixo. Exemplos de tais técnicas são descritos com relação às figuras de 9 a 14 abaixo. Em geral, a codificação do coeficiente de transformada utilizando o contexto determinado inclui a codificação de um ou mais elementos de sintaxe do coeficiente de transformada utilizando o contexto determinado. A determinação do contexto geralmente inclui a determinação de uma região na qual o coeficiente de transformada ocorre e determinando o contexto com base na região. Por exemplo, a região pode ser associada com um contexto particular ou conjunto de contextos, e/ou associada com uma ou mais técnicas para determinação de contexto.
[0082] A figura 2 é um diagrama em bloco ilustrando um codificador de vídeo ilustrativo 20 que pode implementar as técnicas de interpredição descritas nessa descrição. O codificador de vídeo 20 pode realizar a intra e intercodificação de blocos de vídeo dentro de fatias de vídeo. A intracodificação se baseia na predição espacial para reduzir ou remover a redundância espacial no vídeo dentro de um quadro ou imagem de vídeo determinado. A intercodificação se baseia na predição temporal para reduzir ou remove a redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. O intramodo (modo I) pode se referir a qualquer um dos vários modos de compressão com base espacial. Intermodos, tal como a predição unidirecional (modo P) ou predição dupla (modo B), podem fazer referência a qualquer um dos vários modos de compressão com base temporal.
[0083] No exemplo da figura 2, o codificador de vídeo 20 inclui uma unidade de seleção de modo 35, o processador de predição 41, a memória de imagem de referência 64, o somador 50, a unidade de processamento de transformada 52, a unidade de quantização 54, e a unidade de codificação por entropia 56. O processador de predição 41 inclui uma unidade de estimativa de movimento 42, unidade de compensação de movimento 44, e unidade de intrapredição 46. Para a reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui unidade de quantização inversa 58, unidade de transformada inversa 60 e somador 62. Um filtro de desbloqueio (não ilustrado na figura 2) também pode ser incluído para filtrar os limites de bloco para remover os artefatos de bloqueio do vídeo reconstruído. Se desejado, o filtro de desbloqueio filtraria tipicamente a saída do somador 62. Filtros de circuito adicionais (em circuito ou pós-circuito) também podem ser utilizados em adição ao filtro de desbloqueio.
[0084] Como ilustrado na figura 2, o codificador de vídeo 20 recebe dados de vídeo, e a unidade de seleção de modo 35 divide os dados em blocos de vídeo. Essa partição também pode incluir a partição em fatias, tiles ou outras unidades maiores, além de partição de bloco de vídeo, por exemplo, de acordo com uma estrutura de quadtree de LCUs e CUs. O codificador de vídeo 20 geralmente ilustra os componentes que codificam os blocos de vídeo dentro de uma fatia de vídeo a ser codificada. A fatia pode ser dividida em múltiplos blocos de vídeo (e possivelmente em conjuntos de blocos de vídeo referidos como tiles). O processador de predição 41 pode selecionar um dentre uma pluralidade de modos de codificação possíveis, tal como um dentre uma pluralidade de modos de intracodificação ou um dentre uma pluralidade de modos de intercodificação, para o bloco de vídeo atual com base em resultados de erro (por exemplo, taxa de codificação e nível de distorção). O processador de predição 41 pode fornecer o bloco intra ou intercodificado resultante para o somador 50 para gerar dados de bloco residuais e para o somador 62 para reconstruir o bloco codificado para uso como uma imagem de referência.
[0085] A unidade de intrapredição 46 dentro do processador de predição 41 pode realizar a codificação de intrapredição do bloco de vídeo atual com relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco atual a ser codificado para fornecer compressão espacial. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 dentro do processador de predição 41 realizam a codificação de interpredição do bloco de vídeo atual com relação a um ou mais blocos de predição em uma ou mais imagens de referência para fornecer a compressão temporal.
[0086] A unidade de estimativa de movimento 42 pode ser configurada para determinar o modo de interpredição para uma fatia de vídeo de acordo com um padrão predeterminado para uma sequência de vídeo. O padrão predeterminado pode designar fatias de vídeo na sequência como fatias P, fatias B ou fatias GPB. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. A estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de geração de vetores de movimento, que estimam o movimento para os blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de um quadro ou imagem de vídeo atual com relação a um bloco de predição dentro de uma imagem de referência.
[0087] Um bloco de predição é um bloco que é considerado como combinando de perto com a 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), soma da diferença quadrada (SSD), ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular os valores para as posições de pixel de subinteiro das imagens de referência armazenadas na memória de imagem 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 fracionadas da imagem de referência. Portanto, a unidade de estimativa de movimento 42 pode realizar uma busca de movimento com relação às posições de pixel inteiro e posições de pixel fracionado e enviar um vetor de movimento com a precisão de pixel fracionado.
[0088] A unidade de estimativa de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada pela comparação da posição da PU com a posição de um bloco de predição de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou uma segunda lista de imagens de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e a unidade de compensação de movimento 44.
[0089] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver a coleta ou geração do bloco de predição com base no vetor de movimento determinado pela estimativa de movimento, possivelmente realizando as interpolações para precisão de subpixel. Mediante o recebimento do vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco predito para o qual o vetor de movimento aponta em uma das listas de imagem de referência. A unidade de compensação de movimento 44 também pode gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação de blocos de vídeo da fatia de vídeo.
[0090] A unidade de interpredição 46 pode intraprever um bloco atual, como uma alternativa para a interpredição realizada pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de intrapredição 46 pode determinar um modo de intrapredição para utilizar para codificar um bloco atual. Em alguns exemplos, a unidade de intrapredição 46 pode codificar um bloco atual utilizando vários modos de intrapredição, por exemplo, durante passagens de codificação separadas, e unidade de intrapredição 46 (ou unidade de seleção de modo 35, em alguns exemplos) pode selecionar um modo de intrapredição adequado para uso a partir dos modos testados. Por exemplo, a unidade de intrapredição 46 pode calcular valores de distorção de taxa utilizando a análise de distorção de taxa para vários modos de intrapredição testados, e selecionar o modo de intrapredição possuindo as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco não codificado original que foi codificado para produzir o bloco codificado, além de uma taxa de bit (isso é, um número de bits) utilizada para produzir o bloco codificado. A unidade de intrapredição 46 pode calcular as razões das distorções e taxas para os vários blocos codificados para determinar qual modo de intrapredição exibe o melhor valor de distorção de taxa par ao bloco.
[0091] Em qualquer caso, depois da seleção de um modo de intrapredição para um bloco, a unidade de intrapredição 46 pode fornecer informação indicativa do modo de intrapredição selecionado para o bloco para a unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar a informação indicando o modo de intrapredição selecionado de acordo com as técnicas dessa descrição. O codificador de vídeo 20 pode incluir na sequência de bits transmitida dados de configuração que podem incluir uma pluralidade de tabelas de índice de modo de intrapredição e uma pluralidade de tabelas de índice de modo de intrapredição modificadas (também referidas como tabelas de mapeamento de palavra código), definições de contextos de codificação para vários blocos, e indicações e um modo de intrapredição mais provável, uma tabela de índice de modo de intrapredição e uma tabela de índice de modo de intrapredição modificada para uso para cada um dos contextos.
[0092] Depois da predição, o processador 41 gera o bloco de predição para o bloco de vídeo atual através de interpredição ou intrapredição, o codificador de vídeo 20 forma um bloco de vídeo residual pela subtração do bloco de predição a partir do bloco de vídeo atual. O somador 50 representa a unidade que realiza esse cálculo. Os dados de vídeo residuais no bloco residual podem ser incluídos em uma ou mais TUs e aplicados à unidade de processamento de transformada 52. A unidade de processamento de transformada 52 geralmente converte os dados de vídeo residuais de um domínio de pixel para um domínio de transformada, tal como um domínio de frequência. A unidade de processamento de transformada 52 pode transformar os dados de vídeo residuais em coeficientes de transformada residual utilizando uma transformada, tal como uma transformada de cosseno discreto (DCT) ou uma transformada conceitualmente similar. Alternativamente, a unidade de processamento de transformada 52 pode aplicar uma transformada bidimensional (2D) (em ambas as direções horizontal e vertical) aos dados residuais nas TUs.
[0093] A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 quantiza os coeficientes de transformada para reduzir adicionalmente a taã de bit. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. O grau de quantização pode ser modificado pelo ajuste de um parâmetro de quantização.
[0094] Seguindo a quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformada quantizados. Por exemplo, a unidade de codificação por entropia 56 pode realizar a codificação de comprimento variável adaptativa de contexto (CAVLC), a codificação aritmética binária adaptativa (CABAC), a codificação aritmética binária adaptativa de contexto com base em sintaxe (SBAC), a codificação por entropia de partição de intervalo de probabilidade (PIPE), ou outra metodologia de codificação por entropia ou técnica. Tal codificação por entropia inclui geralmente a digitalização dos coeficientes de transformada quantizados (geralmente referidos simplesmente como "coeficientes de transformada" por motivos de brevidade), uma ou mais vezes, e os elementos de sintaxe de codificação por entropia para os coeficientes de transformada durante cada digitalização, tal como elementos de sintaxe indicando se os coeficientes de transformada correspondente são significativos, possuem um valor absoluto superior a 1 ou 2, o valor absoluto (ou uma parte do mesmo, por exemplo, uma parte maior que 2) e sinal de coeficientes significativos.
[0095] De acordo com as técnicas dessa descrição, a unidade de codificação por entropia 56 pode determinar um contexto para codificação (isso é, codificação por entropia) um coeficiente de transformada de um bloco de vídeo (por exemplo, uma unidade de transformada) com base em uma região de bloco de vídeo onde o coeficiente de transformada ocorre. Por exemplo, durante a digitalização, a unidade de codificação por entropia 56 pode determinar uma posição do coeficiente de transformada no bloco de vídeo, e determinar em que região a posição ocorre. Adicionalmente, a unidade de codificação por entropia 56 pode incluir dados de configuração definindo as regiões para um bloco de vídeo.
[0096] Por exemplo, a unidade de codificação por entropia 56 pode ser configurada com um valor limite. Nesse exemplo, a unidade de codificação por entropia 56 pode determinar se as coordenadas x e y definindo a posição do coeficiente de transformada possuem uma soma (isso é, x + y) que é maior do que o valor limite. Uma primeira região, nesse exemplo, corresponde aos coeficientes de transformada para os quais a soma dos valores de coordenadas x e y é inferior ao valor limite, e uma segunda região corresponde aos coeficientes de transformada para os quais a soma dos valores de coordenada x e y é maior do que ou igual ao valor limite. Alternativamente, os múltiplos valores limítrofes podem ser utilizados para definir múltiplas regiões. Um exemplo das regiões definidas dessa forma é ilustrado na figura 9B, que é descrita em maiores detalhes abaixo.
[0097] Como outro exemplo, a unidade de codificação por entropia 56 pode ser configurada para determinar a posição de um sub-bloco, incluindo o coeficiente de transformada, no bloco de vídeo. Um sub- bloco pode corresponder a um sub-bloco do coeficiente de transformada 4 x 4. Isso é, um bloco de vídeo pode incluir uma pluralidade de sub-blocos não sobrepostos, cada um possuindo o mesmo tamanho, por exemplo, coeficientes de transformada 4 x 4. Para se determinar uma região para um sub-bloco, a unidade de codificação por entropia 56 pode comparar a soma de uma coordenada x e y do sub-bloco (por exemplo, um coeficiente de transformada particular do sub- bloco, tal como um coeficiente de transformada superior esquerdo do sub-bloco) para o valor limítrofe. Se a soma das coordenadas x e y é inferior a valor limite ou não pode ser indicativo de se os coeficientes de transformada do sub-bloco são incluídos em uma primeira região ou uma segunda região.
[0098] Por exemplo, deixe Cij representar a posição de um sub-bloco possuindo um coeficiente de transformada superior esquerdo na posição (i,j), onde x=i e y=j. Adicionalmente, deixe T definir o valor limite. A unidade de codificação por entropia 56 pode determinar uma região na qual os coeficientes de transformada dos sub- bloco ocorrem utilizando o seguinte pseudocódigo: (i+j<T)? região 1: região 2.
[0099] Nesse exemplo, quando i+j é inferior a T (isso é, a soma das coordenadas x e y do sub-bloco é inferior ao valor limite), a unidade de codificação por entropia 56 determina que todos os coeficientes de transformada do sub-bloco ocorrem na região 1, ao passo que quando i+j é maior do que ou igual a T (isso é, a soma das coordenadas x e y do sub-bloco é maior do que ou igual ao valor limite), a unidade de codificação por entropia 56 determina que todos os coeficientes de transformada do sub- bloco ocorrem na região 2. Esses e outros exemplos das regiões são descritos em maiores detalhes abaixo com relação às figuras de 9 a 14.
[0100] A unidade de codificação por entropia 56 pode ser configurada para determinar os contextos com base nas regiões de várias formas. Por exemplo, a unidade de codificação por entropia 56 pode determinar o contexto para codificação de um coeficiente de transformada, com base na região na qual o coeficiente de transformada ocorre, utilizando a localização do coeficiente de transformada no bloco de vídeo ou a posição do sub-bloco 4 x 4 no qual o coeficiente de transformada ocorre.
[0101] Alternativamente, um modelo de contexto pode ser definido de acordo com os sub-blocos 4 x 4 vizinhos. Por exemplo, a unidade de codificação por entropia 56 pode designar para cada sub-bloco 4 x 4, um conjunto respectivo de contextos disponíveis, e selecionar um dos contextos para o coeficiente de transformada atual a ser codificado no sub-bloco, por exemplo, com base em uma posição do coeficiente de transformada no sub-bloco. Os conjuntos de contextos podem ser designados para sub-blocos respectivos, de modo que cada sub-bloco possa ter um conjunto diferente de contextos disponíveis. Como outro exemplo adicional, a unidade de codificação por entropia 56 pode calcular um contexto como ctx = Right4x4SubBlockFlag + Bottom4x4SubbockFlag. Nesse caso, Right4x4SubBlockFlag representa um indicador de sub-bloco codificado para um sub-bloco vizinho direito, enquanto Bottom4x4ubBlockFlag representa um indicador de sub-bloco codificado para um indicador de sub-bloco codificado vizinho inferior.
[0102] Em alguns exemplos, a unidade de codificação por entropia 56 pode aplicar um desvio ao contexto determinado para a codificação por entropia de um coeficiente de transformada, e pode adicionalmente determinar o desvio para aplicar com base na região na qual o coeficiente de transformada ocorre. Isso é, a unidade de codificação por entropia 56 pode calcular um contexto de base da mesma forma geral para coeficientes de duas ou mais regiões, mas regiões diferentes podem ter valores de desvio correspondentes diferentes. Dessa forma, a unidade de codificação por entropia 56 pode aplicar o desvio ao valor de contexto calculado com base no desvio para o qual a região é mapeada (isso é, o desvio com o qual a região está associada).
[0103] A unidade de codificação por entropia 56 pode determinar se um coeficiente de transformada é um coeficiente de transformada DC (corrente direta) (tipicamente apresentada no canto superior esquerdo do bloco de transformada), e selecionar o contexto para codificação do coeficiente de transformada com base na região na qual o coeficiente de transformada ocorre além de se o coeficiente de transformada é o coeficiente de transformada Dc ou não. Por exemplo, a unidade de codificação por entropia 56 pode determinar contextos para transformar coeficientes utilizando contextos compartilhados para posições dedicadas. Isso é, o contexto compartilhado pode compreender o mesmo contexto que é aplicado a todos os coeficientes de transformada ocorrendo em uma posição particular, por exemplo, um canto superior esquerdo de um sub-bloco. Dessa forma, o contexto compartilhado pode incluir adicionalmente uma indicação de um contexto particular a ser aplicado quando da codificação de um coeficiente de transformada DC, em oposição aos coeficientes de transformada não DC ocorrendo na posição superior esquerda de outros sub-blocos.
[0104] Adicionalmente ou alternativamente, o contexto compartilhado pode compreender contextos compartilhados entre diferentes tamanhos de blocos para coeficientes de transformada ocorrendo em posições particulares dos blocos. Por exemplo, a unidade de codificação por entropia 56 pode ser configurada para aplicar o mesmo contexto quando da codificação de coeficientes de transformada DC de blocos de vídeo (por exemplo, TUs) de qualquer tamanho, por exemplo, 4 x 4, 8 x 8, 16 x 16 ou similares. Isso é, a unidade de codificação por entropia 56 pode incluir dados que mapeiam o coeficiente de transformada DC, para blocos de qualquer tamanho, para os mesmos dados de contexto para codificação do coeficiente de transformada DC. Em outras palavras, a unidade de codificação por entropia 56 pode ser configurada para codificar o coeficiente de transformada DC utilizando um contexto determinado para o coeficiente de transformada DC, sem considerar um tamanho do bloco de vídeo atual sendo codificado. Tipicamente, o coeficiente de transformada DC é o coeficiente superior esquerdo do bloco de vídeo.
[0105] Seguindo a codificação por entropia pela unidade de codificação por entropia 56, a sequência de bits codificada pode ser transmitida para o decodificador de vídeo 30, ou arquivada para transmissão ou recuperação futura pelo decodificador de vídeo 30. A unidade de codificação por entropia 56 também pode codificar por entropia os vetores de movimento, indicações intramodo e outros elementos de sintaxe para a fatia de vídeo atual sendo codificada.
[0106] A unidade de quantização inversa 58 e a unidade de transformada inversa 60 aplicam a quantização inversa e a transformada inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel para uso posterior como um bloco de referência de uma imagem de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência pela adição de bloco residual a um bloco de predição de uma das imagens de referência dentro de uma das listas de imagem de referência. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular os valores de pixel subinteiros para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um bloco de referência para armazenamento na memória de imagem de referência 64. O bloco de referência pode ser utilizado pela unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 como um bloco de referência para interpredizer um bloco em um quadro ou imagem de vídeo subsequente.
[0107] Dessa forma, o codificador de vídeo 20 representa um exemplo de um codificador de vídeo configurado para determinar um contexto para codificar um coeficiente de transformada de um bloco de vídeo com base em uma região do bloco de vídeo onde o coeficiente de transformada ocorre, e codifica por entropia o coeficiente de transformada utilizando o contexto determinado. A região pode compreender uma dentre uma primeira região compreendendo um ou mais sub-blocos 4 x 4 superior esquerdo dos coeficientes de transformada do bloco de vídeo e uma segunda região compreendendo coeficientes de transformada do bloco de vídeo fora da primeira região.
[0108] A figura 3 é um diagrama em bloco ilustrando um decodificador de vídeo ilustrativo 30 que pode implementar as técnicas de interpredição descritas nessa descrição. No exemplo da figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 80, processador de predição 81, unidade de quantização inversa 86, unidade de transformada inversa 88, somador 90, e memória de imagem de referência 92. O processador de predição 81 inclui a unidade de compensação de movimento 82 e a unidade de intrapredição 84. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente alternada à passagem de codificação descrita com relação ao codificador de vídeo 20 a partir da figura 2.
[0109] Durante o processo de decodificação, o decodificador de vídeo 30 recebe uma sequência de bits de vídeo codificados que representa os blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados a partir do codificador de vídeo 20. A unidade de decodificação por entropia 80 do decodificador de vídeo 30 decodifica por entropia a sequência de bits para gerar os coeficientes quantizados, vetores de movimento e outros elementos de sintaxe. A unidade de decodificação por entropia 80 avança os vetores de movimento, as indicações de intramodo, e outros elementos de sintaxe relacionados com predição para o processador de predição 81. A unidade de decodificação por entropia 80 envia os coeficientes quantizados, na fora de um bloco (por exemplo, uma TU) para a unidade de quantização inversa 86. O decodificador de vídeo 30 pode receber elementos de sintaxe no nível de fatia de vídeo e/ou o nível de bloco de vídeo.
[0110] Em particular, de acordo com as técnicas dessa descrição, a unidade de decodificação por entropia 80 pode determinar o contexto para a decodificação por entropia dos coeficientes de transformada com base em uma região de um bloco no qual os coeficientes de transformada ocorrem. Especificamente, a unidade de decodificação por entropia 80 pode determinar o contexto com base em uma região do bloco no qual o coeficiente de transformada ocorrerá uma vez que o coeficiente de transformada é posicionado dentro do bloco. A unidade de decodificação por entropia 80 pode ser configurada para determinar as regiões como explicado com relação às figuras de 9 a 14 abaixo, ou outras regiões similares. Por exemplo, como ilustrado na figura 9A, a unidade de decodificação por entropia 80 pode ser configurada para determinar se um coeficiente de transformada ocorrerá em uma primeira região incluindo um ou mais sub-blocos em um canto superior esquerdo do bloco, ou uma segunda região incluindo sub-blocos fora da primeira região, e determina o contexto com base no fato de se o coeficiente de transformada ocorrerá na primeira região ou na segunda região.
[0111] Da mesma forma, a unidade de codificação por entropia 80 pode determinar o contexto com base na região, visto que a unidade de decodificação por entropia 80 pode ser configurada com uma ou mais várias técnicas para calcular ou determinar o contexto associado com os coeficientes em cada região. Isso é, cada região pode ser associada com uma ou mais técnicas para calcular ou determinar o contexto. Por exemplo, uma região pode ser associada com um contexto que é compartilhado entre um ou mais coeficientes de transformada. Como outro exemplo, uma região pode ser associada com os contextos que são compartilhados entre os sub-blocos da região. Como outro exemplo adicional, uma região pode ser associada com um valor de desvio a ser aplicado a um valor de contexto calculado para um coeficiente de transformada na região. A unidade de decodificação por entropia 80 pode ser configurada para determinar o contexto para decodificação de um coeficiente de transformada utilizando essas ou outras técnicas como descrito aqui, com base na região na qual o coeficiente de transformada ocorre. A unidade de decodificação por entropia 80 pode então decodificar por entropia o coeficiente de transformada utilizando o contexto determinado.
[0112] Adicionalmente ou alternativamente, o contexto compartilhado pode compreender contextos compartilhados entre diferentes tamanhos de blocos para os coeficientes de transformada ocorrendo em posições particulares dos blocos. Por exemplo, a unidade de decodificação por entropia 80 pode ser configurada para aplicar o mesmo contexto quando da codificação de coeficientes de transformada DC de blocos de vídeo (por exemplo, TUs) de qualquer tamanho, por exemplo, 4 x 4, 8 x 8, 16 x 16 ou similares. Isso é, a unidade de decodificação por entropia 80 pode incluir dados que mapeiam o coeficiente de transformada DC, para blocos de qualquer tamanho, para os mesmos dados de contexto para codificação do coeficiente de transformada DC. Em outras palavras, a unidade de decodificação por entropia 80 pode ser configurada para codificar o coeficiente de transformada DC utilizando um contexto determinado para o coeficiente de transformada DC, sem considerar um tamanho do bloco de vídeo atual sendo codificado. Tipicamente, o coeficiente de transformada DC é o coeficiente superior esquerdo do bloco de vídeo.
[0113] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intrapredição 84 do processador de predição 81 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados de blocos previamente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (isso é, B, P ou GPB), a unidade de compensação de movimento 82 do processador de predição 81 produz blocos de predição 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 80. Os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagem de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, a Lista 0 e a Lista 1, utilizando técnicas de construção padrão com base nas imagens de referência armazenadas na memória de imagem de referência 92.
[0114] A unidade de compensação de movimento 82 determina a informação de predição para um bloco de vídeo da fatia de vídeo atual pela análise de vetores de movimento e outros elementos de sintaxe, e utiliza a informação de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 82 utiliza alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intrapredição ou interpredição) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B, fatia P ou fatia GPB), informação de construção para uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, situação de interpredição para cada bloco de vídeo intercodificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0115] A unidade de compensação de movimento 82 também pode realizar a interpolação com base em filtros de interpolação. A unidade de compensação de movimento 82 pode utilizar filtros de interpolação como utilizados pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular os valores interpolados para pixels subinteiros de blocos de referência. Nesse caso, a unidade de compensação de movimento 82 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 de predição.
[0116] A unidade de quantização inversa 86 quantiza de forma inversa, isso é, desquantiza, os coeficientes de transformada quantizados fornecidos na sequência de bits e decodificados pela unidade de decodificação por entropia 80. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização calculado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado. A unidade de transformada inversa 88 aplica uma transformada inversa, por exemplo, uma DCT inversa, uma transformada de inteiro inversa, ou um processo de transformada inversa conceitualmente similar, aos coeficientes de transformada a fim de produzir blocos residuais no domínio de pixel.
[0017] Em alguns casos, a unidade de transformada inversa 88 pode aplicar uma transformada inversa bidimensional (2D) (em ambas a direção horizontal e vertical) aos coeficientes. De acordo com as técnicas dessa descrição, a unidade de transformada inversa 88 pode, ao invés disso, aplicar uma transformada inversa unidimensional horizontal (1D), uma transformada inversa 1D vertical, ou nenhuma transformada aos dados residuais em cada uma das TUs. O tipo de transformada aplicada aos dados residuais no codificador de vídeo 20 pode ser sinalizado para o decodificador de vídeo 30 para aplicar um tipo adequado de transformada inversa aos coeficientes de transformada.
[0018] Depois de a unidade de compensação de movimento 82 gerar o bloco de predição para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado pela soma dos blocos residuais a partir da unidade de transformada inversa 88 com os blocos de predição correspondentes gerados pela unidade de compensação de movimento 82. O somador 90 representa um componente ou componentes que realizam essa operação de soma. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados a fim de remover os artefatos de bloqueio. Outros filtros de circuito (no circuito de codificação ou depois do circuito de codificação) também podem ser utilizados para suavizar as transições de pixel, ou de outra forma aperfeiçoar a qualidade de vídeo. Os blocos de vídeo decodificados em um quadro ou imagem determinado são então armazenados na memória de imagem de referência 92, que armazena as imagens de referência utilizadas para compensação de movimento subsequente. A memória de imagem de referência 92 também armazena o vídeo decodificado para apresentação posterior em um dispositivo de exibição, tal como o dispositivo de exibição 32 da figura 1.
[0119] Dessa forma, o decodificador de vídeo 30 representa um exemplo de um codificador de vídeo configurado para determinar um contexto para codificação de um coeficiente de transformada de um bloco de vídeo com base em uma região do bloco de vídeo onde o coeficiente de transformada ocorre, e codificar por entropia o coeficiente de transformada utilizando o contexto determinado. A região pode compreender uma de uma primeira região compreendendo um ou mais sub-blocos 4 x 4 superiores esquerdos dos coeficientes de transformada do bloco de vídeo e uma segunda região compreendendo coeficientes de transformada do bloco de vídeo fora da primeira região.
[0120] A figura 4 é um diagrama conceitual que ilustra uma relação entre os coeficientes de transformada em um bloco de vídeo e um mapa de significância associado com o bloco de vídeo. Como ilustrado na figura 4, o mapa de significância inclui um "1" para indicar cada caso de um valor de coeficiente significativo, isso é, um valor superior a zero, no bloco de vídeo. O mapa de significância pode ser sinalizado em uma sequência de bits que é decodificável por um decodificador de vídeo, tal como o decodificador de vídeo 30, para determinar a localização do coeficientes significativos, isso é, maior do que zero, no bloco de vídeo a ser decodificado. Mais especificamente, uma posição de um último coeficiente diferente de zero dentro do bloco de vídeo de ser sinalizada na sequência de bits. A posição do último coeficiente diferente de zero no bloco de vídeo depende da ordem de digitalização utilizada para o bloco de vídeo. Os elementos de sintaxe adicionais podem ser sinalizados para indicar outros coeficientes significativos com relação ao último coeficiente diferente de zero de acordo com uma ordem de digitalização conhecida ou que possa se tornar conhecida.
[0121] As figuras 5A a 5D são diagramas conceituais que ilustram exemplos de blocos de dados de vídeo digitalizados utilizando-se uma ordem de digitalização em zigue-zague, uma ordem de digitalização horizontal, uma ordem de digitalização vertical, e uma ordem de digitalização diagonal. Como ilustrado nas figuras de 5A a 5D, um bloco 8 x 8 de dados de vídeo, por exemplo, uma TU de uma CU, podem incluir 64 coeficientes de transformada em posições de bloco correspondentes, denotados por círculos. Nesse exemplo, os blocos 100, 102, 104 e 106 possuem, cada um, um tamanho de 8 x 8 e, portanto, incluem 64 coeficientes de transformada gerados utilizando as técnicas de predição previamente descrita.
[0122] De acordo com as técnicas descritas nessa descrição, os 64 coeficientes de transformada em cada um dos blocos 100, 102, 104 e 106 podem ter sido transformados, ou podem ser transformados de forma inversa, utilizando uma dentre uma transformada 2D, uma transformada 1D horizontal, e uma transformada 1D vertical, ou os coeficientes de transformada podem não ser transformados de forma alguma. Se transformados ou não, os coeficientes em cada um dos blocos de vídeo 100, 102, 104 e 106 são digitalizados na preparação para codificação por entropia utilizando uma dentre uma ordem de digitalização em zigue- zague, uma ordem de digitalização horizontal, uma ordem de digitalização vertical e uma ordem de digitalização diagonal.
[0123] Como ilustrado na figura 5A, a ordem de digitalização associada com o bloco 100 é a ordem de digitalização em zigue-zague. A ordem de digitalização em zigue-zague faz com que um codificador de vídeo, tal como o codificador de vídeo 20 ou o decodificador de vídeo 30, possa digitalizar os coeficientes de transformada quantizados do bloco 100 em diagonal como indicado pelas setas na figura 5A. De forma similar, na figura 5D, a ordem de digitalização diagonal faz com que um codificador de vídeo digitalize os coeficientes de transformada quantizados do bloco 106 em uma diagonal como indicado pelas setas na figura 5D. Como ilustrado nas figuras 5B e 5C, as ordens de digitalização associadas com os blocos 102 e 104 são a ordem de digitalização horizontal e a ordem de digitalização vertical, respectivamente. A ordem de digitalização horizontal faz com que um codificador de vídeo digitalize os coeficientes de transformada quantizados do bloco 102 em uma forma horizontal linha por linha ou "raster", enquanto a ordem de digitalização vertical faz com que um codificador de vídeo digitalize os coeficientes de transformada quantizados do bloco 104 de uma forma vertical linha por linha, ou "raster girada", também indicado pelas setas nas figuras 5B e 5C.
[0124] Em outros exemplos, como descrito acima, um bloco pode ter um tamanho que é menor ou maior do que o comprimento de blocos 100, 102, 104 e 106, e pode incluir mais ou menos coeficientes de transformada quantizados e posições de bloco correspondentes. Nesses exemplos, uma ordem de digitalização associada com um bloco em particular pode fazer com que um codificador de vídeo digitalize os coeficientes de transformada quantizados do bloco de forma substancialmente similar ao ilustrado nos exemplos dos blocos de 8 x 8 das figuras 5A a 5D, por exemplo, um bloco de 4 x 4 ou um bloco de 16 x 16, devem ser digitalizados seguindo qualquer uma das ordens de digitalização previamente descritas.
[0125] Apesar de a direção das digitalizações das figuras 5A a 5D ser geralmente ilustrada como prosseguindo a partir dos coeficientes de baixa frequência para os coeficientes de alta frequência, em outros exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para realizar uma ordem de digitalização inversa, na qual a digitalização pode prosseguir a partir dos coeficientes de alta frequência para os coeficientes de baixa frequência. Isso é, o codificador de vídeo 20 e o decodificador de vídeo 30 podem digitalizar os coeficientes na ordem inversa da ilustrada nas figuras de 5A a 5D.
[0126] A figura 6 é um diagrama conceitual que ilustra um bloco de vídeo ilustrativo 110 dividido em sub- blocos para codificação do coeficiente de transformada. Um codificador de vídeo pode subdividir qualquer unidade de transformada (TU) que é maior do que um tamanho de sub- bloco determinado em sub-blocos. Por exemplo, o bloco de vídeo 110 é dividido em quatro sub-blocos 4 x 4.
[0127] No exemplo ilustrado da figura 6, o codificador de vídeo divide o bloco de vídeo 110 em sub- blocos de 4 x 4. Em outros exemplos, o codificador de vídeo pode dividir os blocos de vídeo em sub-blocos de outros tamanhos, por exemplo, 8 x 8, 16 x 16, e similares. Se o codificador de vídeo utilizar o mesmo tamanho de sub-bloco para todas as TUs de um quadro ou fatia, ganhos podem ser alcançados em uma implementação de hardware devido à uniformidade alcançada com os tamanhos de sub-bloco. Por exemplo, todo o processamento pode ser dividido em tais sub-blocos, independentemente do tamanho de TU. Um tamanho de sub-bloco uniforme não é necessário, no entanto, para realizar as técnicas dessa descrição.
[0128] Para a codificação de coeficiente, um codificador de vídeo pode digitalizar cada sub-bloco 4 x 4 de bloco de vídeo 110 utilizando uma ordem de digitalização diagonal, como ilustrado na figura 6. Em alguns exemplos, o codificador de vídeo pode utilizar uma digitalização unificada para digitalizar os coeficientes de transformada de cada sub-bloco. Nesse caso, a mesma ordem de digitalização é utilizada para informação de significância, isso é, um mapa de significância, níveis de coeficiente, sinal e similares. Em um primeiro exemplo, como ilustrado na figura 6, o codificador de vídeo pode digitalizar os coeficientes de transformada utilizando uma digitalização diagonal. Em outro exemplo, o codificador de vídeo pode digitalizar os coeficientes de transformada em uma ordem que é oposta é ilustrada na figura 6, por exemplo, uma digitalização diagonal reversa que começa no canto inferior direito e prossegue para o canto superior esquerdo. Em outros exemplos, o codificador de vide pode digitalizar os coeficientes de transformada utilizando uma digitalização em zigue-zague, horizontal ou vertical. Outras direções/orientações de digitalização também são possíveis.
[0129] Para facilitar a explicação, essa descrição descreve sub-blocos de um bloco de vídeo como sendo sub-blocos 4 x 4. As técnicas dessa descrição, no entanto, também podem ser aplicadas com relação aos sub- blocos de diferentes tamanhos, por exemplo, 8 x 8, 16 x 16, e similares. Para cada bloco 4 x 4 um significant_coeffgroup_flag é codificado, e se houver pelo menos um coeficiente diferente de zero no sub-bloco esse indicador é configurado para um, do contrário, é igual a zero. Se significant_coeffgroup_flag for diferente de zero para um determinado sub-bloco, o sub-bloco de 4 x 4 é digitalizado na ordem diagonal retroativa e significant_coeff_flag é codificado para cada coeficiente do sub-bloco para indicar a significância do coeficiente. O grupo desses indicadores pode ser referido como um mapa de significância para ob loco de vídeo. Em alguns exemplos, ao invés da sinalização explícita do mapa de significância, significant_coeffgroup_flag pode ser implicitamente derivado utilizando-se os indicadores de sub-bloco 4 x 4 vizinhos, ou quando o sub-bloco 4 x 4 contém o último coeficiente ou um coeficiente DC. Valores absolutos dos coeficientes também são codificados, isso é, níveis de coeficiente.
[0130] Apesar de a direção de digitalização na figura 6 ser geralmente ilustrada como prosseguindo dos coeficientes de baixa frequência para coeficientes de alta frequência, em outros exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para realizar uma ordem de digitalização inversa, na qual a digitalização pode prosseguir dos coeficientes de alta frequência para os coeficientes de baixa frequência. Isso é, o codificador de vídeo 20 e o decodificador de vídeo 30 podem digitalizar os coeficientes na ordem inversa à ilustrada na figura 6.
[0131] A figura 7 é um diagrama conceitual que ilustra uma vizinhança de suporte de cinco pontos ilustrativa utilizada para definir um modelo de contexto para seleção dos contextos para um mapa de significância de coeficientes em um bloco de vídeo 112 digitalizado utilizando uma ordem de digitalização diagonal inversa. Como notado acima, para a codificação adaptativa de contexto, os coeficientes de transformada podem ser codificados com base em um modelo de contexto que descreve as probabilidades de o coeficiente de transformada possuir um valor de 0 ou um valor de 1. Com relação à codificação do mapa de significância, o modelo de contexto descreve as probabilidades de se um coeficiente de transformada em particular é significante, isso é, diferente de zero.
[0132] Para a codificação de mapa de significância, um suporte de cinco pontos S pode ser utilizado para definir um modelo de contexto para codificar o mapa de significância dos coeficientes de transformada do bloco de vídeo 112. O suporte de cinco pontos pode ser referido como uma "vizinhança de suporte de contexto" ou simplesmente uma "vizinhança de suporte". Isso é, um codificador de vídeo pode observar o suporte para determinar a probabilidade de significância de uma posição atual ser igual a um ou zero. A vizinhança de suporte de contexto define os coeficientes vizinhos (por exemplo, que podem incluir informação de significância) que podem ser utilizados com os contextos para codificação de um coeficiente atual. De acordo com alguns exemplos dessa descrição, a vizinhança de suporte de contexto pode ser diferente para diferentes posições de coeficiente dentro de um bloco ou sub-bloco.
[0133] No exemplo ilustrado na figura 7, o suporte de cinco pontos S é representado por um ponto cercado por um quadrado, com relação a uma corrente ou posição "alvo" representada por um ponto cercado por um círculo. O modelo de contexto Ctx (equação (1) abaixo) pode ser definido como uma soma dos indicadores significantes em cada ponto do suporte, onde um indicador de significância pode ser configurado para "1" se o coeficiente de transformada correspondente for diferente de zero, e configurado para "0",do contrário.
Figure img0001
De acordo, a contagem do indicador de significância pode ser inferior ou igual à cardinalidade do suporte. O valor de ctx não é necessariamente o valor de contexto bruto, mas pode ser aplicado a um valor de contexto base, na forma de um desvio, para derivar o contexto a ser utilizado para codificar os dados para um coeficiente em particular.
[0134] No entanto, o suporte S ilustrado na figura 7 pode não ser adequado quando do cálculo de contexto para mais de um coeficiente de transformada (por exemplo, informação de significância associada com o coeficiente de transformada) em paralelo (referido como "cálculo de contexto de significância paralelo" ou simplesmente "cálculo de contexto paralelo"). Por exemplo, a utilização do suporte S ilustrado na figura 7 pode impedir a capacidade de o codificador de vídeo em calcular contextos para informação de significância em paralelo, visto que todos os dados no suporte S devem estar disponíveis (por exemplo, já codificados) para permitir o cálculo em paralelo dos contextos. Em alguns casos, como descrito abaixo com relação à figura 8A, um codificador pode ser forçado a esperar por um elemento de suporte no suporte S para terminar a codificação antes da determinação do contexto para outro elemento de suporte no suporte S. Esse retardo reduz a capacidade de o codificador de vídeo em processar de forma eficiente a informação de significância.
[0135] As figuras 8A e 8B são diagramas conceituais que ilustram a dependência de contexto dentro do suporte de cinco pontos. Por exemplo, para se calcular um contexto de significância para a posição circulada, pode ser necessário se analisar o indicador de significância da posição dentro do suporte S apresentado por um diamante (ilustrado na figura 8A). Tal análise pode introduzir um retardo se houver uma exigência para que se calcule os contextos de significância de dois coeficientes em paralelo, visto que o diamante é posicionado imediatamente antes do elemento circulado na ordem de digitalização. Isso é, o contexto da posição circulada não pode ser calculado ao mesmo tempo em que a posição marcada por um diamante, visto que a posição circulada depende da posição marcada pelo diamante, e, portanto, a posição marcada por um diamante deve ser codificada antes da determinação do contexto para a posição circulada.
[0136] Para se resolver essa dependência, determinados elementos podem ser removidos do suporte S, criando o suporte com um chamado "furo" (ponto não preenchido cercado por um triângulo, ilustrado na figura 8B). Por exemplo, o indicador de significância no furo é pulado e não é levado em consideração para o cálculo de contexto (isso é, considerado igual a zero). De acordo, não existe necessidade de se analisar o indicador de significância na posição de furo. O formato de suporte de 5 pontos depende da posição para permitir um melhor processamento paralelo.
[0137] As figuras 9A e 9B são diagramas conceituais que ilustram as divisões ilustrativas de um bloco de vídeo em duas ou mais regiões. No HM atual, a modelagem de contexto de vizinhança é utilizada para tamanhos de TU superiores a 8 x 8 (isso é, 16 x 16, 32 x 32 e tamanhos de transformada não quadrados 16 x 4, 4 x 16, 32 x 8 e 8 x 32) com o suporte de 5 pontos. No entanto, a modelagem de contexto com o suporte de 5 pontos pode aumentar a complexidade dos cálculos de contexto nos tamanhos de bloco maiores. A região R1 da figura 9A representa ume exemplo de uma região incluindo um ou mais sub-blocos 4 x 4 superiores esquerdos dos coeficientes de transformada de um bloco de vídeo, enquanto a região R2 da figura 9A representa um exemplo de uma região incluindo coeficientes de transformada do bloco de vídeo fora da região R1. A figura 9A também representa um exemplo no qual uma pluralidade de regiões compreende conjuntos respectivos de um ou mais sub-blocos.
[0138] De acordo com as técnicas descritas nessa descrição, um codificador de vídeo, tal como um codificador de vídeo 20 ou decodificador de vídeo 30, pode dividir um bloco de vídeo em regiões R (por exemplo, como ilustrado nas figuras 9A e 9B) e utiliza diferentes procedimentos de designação de contexto para cada uma das regiões diferentes. Por exemplo, algumas regiões podem utilizar contexto fixo ou com base em posição e algumas regiões podem utilizar contexto com base em vizinhança. Como ilustrado na figura 9A, as regiões podem ser baseadas em sub-blocos 4 x 4 de modo que todos os sub-blocos sejam incluídos em uma região ou outra. Além disso, a divisão em regiões pode ser flexível em alguns exemplos. Como ilustrado na figura 9B, o bloco de vídeo pode ser dividido em regiões na direção diagonal de modo que as partes dos sub-blocos possam ser incluídas em duas regiões diferentes. Em outros exemplos, a divisão pode ser dependente das posições de coeficiente ou da posição do sub-bloco 4 x 4 contendo esse coeficiente.
[0139] Em alguns exemplos, o contexto pode ser definido de acordo coma posição de coeficiente no bloco de vídeo, ou de acordo com a posição do sub-bloco 4 x 4 que contém esse coeficiente. Alternativamente, o modelo de contexto pode ser definido de acordo com os sub-blocos 4 x 4 vizinhos. Por exemplo, cada coeficiente dentro do mesmo sub-bloco 4 x 4 pode utilizar um ou mais contextos, coeficientes do próximo sub-bloco 4 x 4 podem utilizar também um ou vários contextos. No entanto, os contextos de um sub-bloco 4 x 4 pode ser diferente dos contextos com base em sub-bloco 4 x 4 anterior. Alternativamente, os contextos podem ser calculados como Ctx = Right4x4SubBlockFlag + Bottom4x4subBlockFlag, ou fórmulas similares dependendo da vizinhança. Novamente, Right4x4SubBlockFlag pode representar um indicador de sub- bloco codificado para um sub-bloco vizinho direito (por exemplo, indicando se o sub-bloco 4 x 4 vizinho direito inclui pelo menos um coeficiente diferente de zero), e o Bortom4x4SubBlockFlag pode representar um indicador de sub- bloco codificado para um sub-bloco vizinho direito (por exemplo, indicando se o sub-bloco 4 x 4 vizinho inferior inclui pelo menos um coeficiente diferente de zero).
[0140] A figura 10 é um diagrama conceitual que ilustra a designação ilustrativa dos contextos com base em vizinhança ou posição para cada região de um bloco de vídeo. Como ilustrado na figura 10, o tipo híbrido de contextos pode ser utilizado também, por exemplo, visto que para alguns contextos de regiões podem ser baseados em vizinhança e algumas regiões do mesmo bloco de vídeo pode ser com base em posição ou fixo. Uma vantagem em potencial da abordagem com base em posição é que não é necessário se calcular o contexto no sentido do coeficiente. Ao invés disso, um codificador de vídeo pode calcular o contexto uma vez para todos os coeficientes em uma região, de modo que todos os coeficientes na região possuam o mesmo contexto. A figura 10 representa um exemplo no qual uma pluralidade de regiões compreende um conjunto respectivo de um ou mais sub-blocos.
[0141] Para um coeficiente com coordenadas (x, y), as regiões podem ser definidas de acordo com a posição do coeficiente. Por exemplo, se a condição (x + y >= limite) for verdadeira, então o codificador de vídeo pode determinar que o coeficiente correspondente ocorra dentro da região R2; do contrário, se a condição não for verdadeira, o codificador de vídeo determina que o coeficiente correspondente ocorre dentro da região R1. De forma similar, as coordenadas podem ser designadas para regiões com base nos sub-blocos 4 x 4. Para o sub-bloco com (X, Y) coordenadas, as regiões podem ser definidas de acordo com a posição de sub-bloco 4 x 4. Por exemplo, se a condição (X + Y >= Limite) for verdadeira, então o codificador de vídeo pode determinar que o coeficiente correspondente ocorra dentro da região R2; do contrário, o codificador de vídeo pode determinar que o coeficiente correspondente ocorre dentro da região R1. O limite pode ser fixo em algum valor predefinido, tal como um número inteiro igual a 4, 5, 6, 7 ou 8, ou pode depender do bloco de vídeo, por exemplo, o tamanho da TU.
[0142] Dessa forma, a figura 10 representa um exemplo no qual um codificador de vídeo pode ser configurado para determinar o contexto para a codificação de um coeficiente de transformada, com base em uma região na qual o coeficiente de transformada ocorre, utilizando uma informação de contexto com base em posição e uma informação de contexto com base em vizinhança na região. Em particular, se um coeficiente de transformada estiver em uma primeira região, o codificador de vídeo pode utilizar uma primeira abordagem de determinação de contexto para determinar o contexto para a codificação do coeficiente de transformada. Se um coeficiente de transformada estiver em uma segunda região, o codificador de vídeo pode utilizar uma segunda abordagem de determinação de contexto para determinar o contexto para a codificação do coeficiente de transformada, onde a segunda abordagem de determinação de contexto é diferente da primeira abordagem de determinação de contexto e a primeira região é diferente da segunda região. Em um exemplo, as primeira e segunda regiões não se sobrepõem. Novamente, exemplos das primeira e segunda abordagens de determinação de contexto incluem o uso da informação de contexto com base em posição e a informação de contexto com base em vizinhança.
[0143] A figura 11 é um diagrama conceitual que ilustra a designação ilustrativa dos desvios de contexto para cada região de um bloco de vídeo. O modelo de contexto pode ser separado para diferentes regiões, mas ainda utilizar o mesmo método para o cálculo de contexto. Em outras palavras, um codificador de vídeo pode ser configurado com um método para calcular o contexto para codificação de um coeficiente de transformada, mas pode incluir diferentes modelos de contexto, determinados com base em uma região na qual o coeficiente de transformada ocorre.
[0144] Por exemplo, o contexto pode ser calculado com base na vizinhança, mas para diferentes regiões utiliza um desvio. O desvio para cada região pode ser fixo ou dependente de um ou mais dentre um tamanho de bloco de vídeo, posição de coeficiente no bloco de vídeo ou sub- bloco, e posição de sub-bloco no bloco de vídeo. A região R1 da figura 11 representa outro exemplo de uma região incluindo um ou mais sub-blocos 4 x 4 superiores esquerdos dos coeficientes de transformada de um bloco de vídeo, enquanto a região R2 da figura 11 representa outro exemplo de uma região incluindo coeficientes de transformada do bloco de vídeo fora da região R1. A figura 11 também é um exemplo no qual uma pluralidade de regiões compreende conjuntos respectivos de um ou mais sub-blocos.
[0145] Com o desvio, o contexto pode ser calculado de acordo com a equação (2).
Figure img0002
Alternativamente, o codificador de vídeo pode calcular o contexto de acordo com uma função utilizado CTx como uma entrada, por exemplo, Ctx = (Ctx + 1) >> 1.
[0146] Um exemplo dos desvios com base em região é ilustrado na figura 11, onde as regiões R1 e R2 são definidas com base nos sub-blocos de 4 x 4 e desvios são diferentes para regiões R1 e R2. Os valores de desvio offset1 e offset2 podem ser quaisquer números inteiros, por exemplo, offset1 = 0, offset2 = 3. Em outro exemplo, outras divisões em regiões também são possíveis, e as divisões em mais de duas regiões também são possíveis.
[0147] A figura 12 é um diagrama conceitual que ilustra uma divisão embutida ilustrativa de um bloco de vídeo em duas ou mais regiões com base em tamanhos de TU que correlacionam com os modelos de contexto existentes. Visto que existem vários tamanhos de TU no HM atual (4 x 4, 8 x 8, 16 x 16 e 32 x 32), a divisão de blocos maiores pode ser feita ao longo de tamanhos menores de TU utilizando um estilo embutido de divisão, como ilustrado na figura 12. Para a divisão embutida, o método de cálculo de contexto pode ser compartilhado e o modelo de contexto propriamente dito pode ser compartilhado.
[0148] Por exemplo, para um tamanho de TU de 32 x 32, na região R1, representando uma TU 4 x 4, o cálculo de contexto pode utilizar o mesmo método para o cálculo de contexto que para uma TU de tamanho 4 x 4. Adicionalmente, um modelo de contexto pode ser compartilhado entre a TU de tamanho 4 x 4 e R1 da TU de tamanho 32 x 32, ou um desvio pode ser aplicado ao modelo de contexto para a TU de tamanho 4 x 4. Quanto a Rw, o método de cálculo de contexto pode ser compartilhado entre uma TU de tamanho 8 x 8 e R2 da TU de tamanho 32 x 32. R3 representa uma região TU de 16 x 16, enquanto R4 representa uma região TU de 32 x 32. Uma vantagem em potencial desse método é que as mesmas unidades podem ser utilizadas para os cálculos de contexto, e a correlação adicional entre as regiões embutidas e as TUs pode ser levada em consideração.
[0149] Alternativamente, utilizando-se a divisão de estilo embutida, alguns modelos de contexto de mapa de significância podem ser compartilhados para posições dedicadas entre todas as TUs ou algum grupo de TUs. Por exemplo, um modelo de contexto, correspondendo aos coeficientes DC, pode ser compartilhado entre todas as TUs com tamanhos de 4 x 4 a 32 x 32. Como outro exemplo, um modelo de contexto, relacionado com os coeficientes de alta frequência, pode ser compartilhado entre todas as TUs. Nesses casos, a região R1, representando uma TU 4 x 4, na TU de tamanho 32 x 32 pode utilizar o mesmo modelo de contexto para os coeficientes DC e/ou coeficientes de alta frequência que as TUs possuindo qualquer um dos tamanhos 4 x 4, 8 x 8, 16 x 16, 32 x 32, e similares.
[0150] Como um exemplo adicional, ao invés de compartilhar entre todas as TUs, um modelo de contexto dos coeficientes descritos acima (por exemplo, coeficientes DC e/ou de alta frequência) podem ser compartilhados entre apenas um subconjunto ou grupo de todas as TUs. Por exemplo, o modelo de contexto do coeficiente pode ser compartilhado apenas entre dois tamanhos de TUs, tal como TUs 4 x 4 e 8 x 8. Nesse caso, a região R1, representando uma TU 4 x 4, na TU de tamanho 32 x 32 pode utilizar o mesmo modelo de contexto para os coeficientes DC e/ou coeficientes de alta frequência como as TUs possuindo tamanho 4 x 4 e 8 x 8.
[0151] Dessa forma, o exemplo da figura 12 representa um exemplo no qual um codificador de vídeo, tal como o codificador de vídeo 20 ou decodificador de vídeo 30, pode ser configurado para determinar uma região na qual um coeficiente de transformada ocorre a partir de uma pluralidade de regiões de um bloco de vídeo, onde cada uma das regiões corresponde a um tamanho respectivo dentre uma pluralidade de tamanhos de unidade de transformada (TU), e onde o codificador de vídeo determina o contexto pela seleção de um contexto que é compartilhado entre a região e uma TU possuindo o mesmo tamanho que a região.
[0152] A figura 12 também representa um exemplo no qual um codificador de vídeo, tal como o codificador de vídeo 20 ou o decodificador de vídeo 30, pode ser configurado para determinar uma região na qual um coeficiente de transformada ocorre a partir de uma pluralidade de regiões de um bloco de vídeo, onde cada uma das regiões corresponde a um tamanho respectivo dentre uma pluralidade de tamanhos de unidade de transformada (TU), e onde para determinar o contexto, o codificador de vídeo seleciona um contexto compartilhado para as posições dedicadas de coeficientes de transformada entre duas ou mais TUs de diferentes tamanhos, onde a região possui o mesmo tamanho de uma das duas ou mais TUs de tamanhos diferentes. O contexto compartilhado para as posições dedicadas dos coeficientes de transformada pode compreender um contexto para um dos coeficientes DC e coeficientes de alta frequência compartilhados entre duas ou mais TUs de tamanhos diferentes. Adicionalmente ou alternativamente, o contexto compartilhado para as posições dedicadas dos coeficientes de transformada pode compreender um contexto compartilhado entre uma primeira TU possuindo um tamanho de coeficientes de transformada 4 x 4 e uma segunda TU possuindo um tamanho de coeficientes de transformada 8 x 8.
[0153] As figuras 13A e 13B são diagramas conceituais que ilustram as divisões ilustrativas de um bloco de vídeo em duas ou mais regiões. De uma forma similar como descrito acima com relação aos exemplos onde as regiões são baseadas em sub-blocos quadrados, por exemplo, de 4 x 4, as técnicas dessa descrição também descrevem um método de classificação para dividir um bloco de vídeo, por exemplo, uma TU, em duas ou mais regiões com base em sub-blocos de formato retangular. Por exemplo, os sub-blocos 2 x 8 e 8 x 2 podem ser utilizados para um bloco de vídeo de 8 x 8 dependendo da digitalização de coeficientes como ilustrado nas figuras 13A e 13B. Nesse exemplo, o codificador de vídeo aplica uma digitalização horizontal para os coeficientes no bloco ilustrado na figura 13A e uma digitalização vertical ao bloco ilustrado na figura 13B. Nos exemplos ilustrados nas figuras 13A e 13B, um bloco quadrado representa um coeficiente único, e o tamanho de todo o bloco de vídeo é 8 x 8.
[0154] De acordo com as técnicas dessa descrição, o bloco de vídeo pode ser dividido em diferentes regiões retangulares, por exemplo, R1, R2, R3 e R4. Cada uma das diferentes regiões retangulares pode ter uma designação de contexto diferente. Por exemplo, para algumas regiões,um contexto fixo pode ser utilizado. Essas regiões podem ser formadas com base nos sub-blocos retangulares (por exemplo, 2 x 8, ou 8 x 2), descritos acima e ilustrados nas figuras 13A e 13B. Por exemplo, o contexto pode ser definido de acordo com a posição de coeficiente no bloco de vídeo, ou de acordo com a posição do sub-bloco retangular que contém esse coeficiente.
[0155] Alternativamente, o modelo de contexto pode ser definido de acordo com os sub-blocos de formato retangular vizinhos. Por exemplo, cada coeficiente dentro do mesmo sub-bloco retangular pode utilizar um ou vários contextos. Adicionalmente, os coeficientes do sub-bloco retangular vizinho também pode utilizar um ou vários contextos. No entanto, os contextos de um sub-bloco retangular pode ser diferente dos contextos com base em sub-bloco retangular anteriores. Um tipo híbrido de contextos pode ser utilizado também, por exemplo, visto que alguns contextos de regiões podem ser baseados em vizinhança e para algumas regiões do mesmo bloco de vídeo podem ser fixos ou com base em posição. Uma vantagem da abordagem com base em posição é que não é necessário se calcular contexto no sentido de coeficiente, isso pode ser feito uma vez para uma região. Além disso, a divisão pode depender das posições de coeficiente ou da posição do sub- bloco retangular contendo esse coeficiente.
[0156] Para um coeficiente com coordenadas (x, y), as regiões podem ser definidas de acordo com a posição de coeficiente. Por exemplo, se a condição (x + y >= limite) for verdadeira, então esse coeficiente pode ser designado para a região R2; do contrário, pode ser designado para a região R1. De uma forma similar isso pode ser feito com base em um sub-bloco de formato retangular, para o sub-bloco com coordenadas (X, Y), regiões podem ser definidas de acordo com a posição de sub-bloco retangular. Por exemplo, se a condição (X + Y >- Limite) for verdadeira, então esse coeficiente pode ser designado para a região R2, do contrário, como o número inteiro (por exemplo, igual a 0 ou 1) ou pode ser dependente ao tamanho de TU.
[0157] Alternativamente, um modelo de contexto pode ser diferente para regiões diferentes, mas ainda utilizar o mesmo método para cálculo de contexto. Por exemplo, o contexto pode ser calculado com base na vizinhança, mas para regiões diferentes utiliza um desvio. Um desvio pode ser fixo, dependente de tamanho de bloco de vídeo, ou dependente de um ou mais dentre a posição de coeficiente no bloco de vídeo e/ou sub-bloco retangular, posição do sub-bloco retangular contendo o coeficiente atual no bloco de vídeo, ou qualquer combinação dessas condições.
[0158] Com um desvio, o contexto pode ser calculado de acordo com a equação (3).
Figure img0003
[0159] Alternativamente, o contexto pode ser calculado de acordo com uma função utilizando Ctx como uma entrada, por exemplo, Ctx = (Ctx + 1)>>1.
[0160] As figuras 14A e 14B são diagramas conceituais que ilustram a designação ilustrativa dos desvios de contexto para cada região de um bloco de vídeo. Nesses exemplos, as regiões R1 e R2 são definidas com base nos sub-blocos retangulares e direção de digitalização, e os desvios são diferentes para as regiões R1 e R2. Os valores de desvio offset1 e offset2 podem ser quaisquer números inteiros, por exemplo, offset1 = 0, offset2 = 3. Outras divisões em regiões também são possíveis. Por exemplo, um número de regiões pode ser maior que dois. Deve-se notar que sub-blocos retangulares 2 x 8 e 8 x 2, dependendo das direções de digitalização de coeficiente, foram utilizados nessa descrição como um exemplo. Métodos similares podem ser utilizados para outros sub-blocos de formato retangular com o tamanho M x N sem restrição.
[0161] Em geral, essa descrição descreve a divisão de blocos de vídeo com base sub-bloco de 4 x 4 quadrado, com base em diagonal e sub-bloco de 2 x 8 e 8 x 2 retangular. Em outros exemplos, outros tipos de divisão são possíveis, e a divisão pode ser flexível com base em vários formatos, por exemplo, retangular, quadrado, triangular e similares, com diferentes tamanhos. Essa descrição também descreve a divisão de blocos de vídeo em qualquer número de regiões. Essa descrição descreve adicionalmente o agrupamento de coeficientes em regiões com base em sub- blocos retangulares, sub-blocos quadrados, ou com base em outros agrupamentos tal como divisões diagonais de um bloco de vídeo. Os limites e desvios descritos acima também são fornecidos como um exemplo, outros valores ou dependências de vizinho podem ser explorados.
[0162] Técnicas similares como descrito nessa descrição podem ser utilizadas para unidades de transformada não quadradas ou outros formatos de unidades. As técnicas descritas podem ser aplicadas à codificação de mapa de significância, e a outra codificação de sintaxe e compartimento de coeficientes de transformada sem limitação. Adicionalmente, essa descrição se refere tipicamente aos blocos de vídeo como blocos TU, mas as técnicas podem ser aplicadas a quaisquer TUs, PUs, CUs, LCUs ou outros grupos de blocos.
[0163] A figura 15 é um fluxograma ilustrando um método ilustrativo para codificação de um bloco atual. O bloco atual pode compreender uma CU atual ou uma posição da CU atual. Apesar de descrito com relação ao codificador de vídeo 20 (figuras 1 e 2), deve-se compreender que outros dispositivos podem ser configurados para realizar um método similar ao da figura 15.
[0164] Nesse exemplo, o codificador de vídeo 20 prevê inicialmente o bloco atual (150). Por exemplo, o codificador de vídeo 20 pode calcular uma ou mais unidades de predição (PUs) para o bloco atual. O codificador de vídeo 20 pode então calcular um bloco residual para o bloco atual, por exemplo, para produzir uma unidade de transformada (TU) (152). Para calcular o bloco residual, o codificador de vídeo 20 pode calcular uma diferença (isso é, diferenças de pixel para pixel) entre o bloco não codificado original e o bloco previsto para o bloco atual. O codificador de vídeo 20 pode então transformar e quantizar os coeficientes do bloco residual (154). A seguir, o codificador de vídeo 20 pode digitalizar os coeficientes de transformada quantizados do bloco residual (156).
[0165] Durante a digitalização, o codificador de vídeo 20 pode determinar uma região na qual um coeficiente atual ocorre, e dessa forma, o codificador de vídeo 20 pode determinar as regiões nas quais os vários coeficientes ocorrem (158). De acordo com as técnicas dessa descrição, o codificador de vídeo 20 pode determinar as regiões nas quais os coeficientes ocorrem com base, por exemplo, nas posições dos coeficientes ou posições dos sub-blocos nos quais os coeficientes ocorrem. O codificador de vídeo 20 pode determinar as regiões utilizando qualquer uma das técnicas descritas com relação às figuras de 9 a 14, ou outras técnicas similares. Por exemplo, como ilustrado na figura 9A, o codificador de vídeo 20 pode ser configurado para determinar se um coeficiente ocorre em uma primeira região incluindo um ou mais sub-blocos, ou uma segunda região incluindo sub-blocos fora da primeira região.
[0166] O codificador de vídeo 20 pode determinar adicionalmente os contextos para os coeficientes de codificação por entropia com base nas regiões (160). Isso é, o codificador de vídeo 20 pode determinar, para cada coeficiente, um contexto para codificação do coeficiente com base na região na qual o coeficiente ocorre. Por exemplo, como discutido acima, o codificador de vídeo 20 pode determinar o contexto com base em uma posição do coeficiente no bloco, uma posição de um sub-bloco incluindo o coeficiente no bloco, um desvio a ser aplicado a um contexto calculado, ou similares, com base na região na qual o coeficiente ocorre.
[0167] Da mesma forma, o codificador de vídeo 20 pode codificar por entropia os coeficientes utilizando os contextos determinados (162). Em particular, o codificador de vídeo 20 pode codificar por entropia um ou mais elementos de sintaxe que representam os coeficientes utilizando o contexto. Por exemplo, o codificador de vídeo 20 pode codificar por entropia uma ou mais das informações de significância para os coeficientes, informação de nível para os coeficientes significantes, e/ou informação de sinal para os coeficientes significantes. A informação de significância pode compreender dados significant_coeff_flag. A informação de nível pode compreender coeff_abs_level_greater1_flag, coeff_abs_level_greater2_flag, e coeff_abs_level_remaining. A informação de sinal pode compreender coeff_sign_flag. O codificador de vídeo 20 pode então enviar os dados codificados por entropia para os coeficientes (164).
[0168] Dessa forma, o método da figura 15 representa um exemplo de um método incluindo a determinação de um contexto para codificação de um coeficiente de transformada de um bloco de vídeo com base em uma região do bloco de vídeo onde o coeficiente de transformada ocorre, e a codificação por entropia do coeficiente de transformada utilizando o contexto determinado. Ademais, a região pode compreender uma dentre uma primeira região compreendendo um ou mais sub-blocos 4 x 4 superiores esquerdos dos coeficientes de transformada do bloco de vídeo e uma segunda região compreendendo coeficientes de transformada do bloco de vídeo fora da primeira região.
[0169] A figura 16 é um fluxograma ilustrando um método ilustrativo para decodificação de um bloco atual de dados de vídeo. O bloco atual pode compreender uma CU atual ou uma parte da CU atual. Apesar de descrito com relação ao decodificador de vídeo 30 (figuras 1 e 3), deve-se compreender que outros dispositivos podem ser configurados para realizar um método similar ao da figura 16.
[0170] O decodificador de vídeo 30 pode prever o bloco atual (200), por exemplo, utilizando um modo de intra ou interpredição para calcular um bloco previsto par ao bloco atual. O decodificador de vídeo 30 também pode receber os dados codificados por entropia para o bloco atual, tal como os dados codificados por entropia para coeficientes de um bloco residual correspondendo a um bloco atual (202).
[0171] De acordo com as técnicas dessa descrição, o decodificador de vídeo 30 pode determinar as regiões nas quais os coeficientes ocorrerão (204), por exemplo, durante uma digitalização inversa e processo de decodificação por entropia. Isso é, o decodificador de vídeo 30 pode determinar a posição do próximo coeficiente de transformada com base na posição de um coeficiente de transformada decodificado anteriormente e um próximo coeficiente de transformada significante na ordem de digitalização. O decodificador de vídeo 30 pode determinar adicionalmente uma região do bloco na qual essa posição ocorre. O decodificador de vídeo 30 pode determinar de forma similar as regiões para cada um dos coeficientes de forma similar.
[0172] Ademais, o decodificador de vídeo 30 pode determinar as regiões nas quais os coeficientes ocorrerão com base, por exemplo, nas posições dos coeficientes ou posições dos sub-blocos nos quais os coeficientes ocorrerão. O decodificador de vídeo 30 pode determinar as regiões utilizando qualquer uma das técnicas descritas com relação às figuras 9 a 14, ou algumas técnicas similares. Por exemplo, como ilustrado na figura 9A, o decodificador de vídeo 30 pode ser configurado para determinar se um coeficiente ocorre em uma primeira região incluindo um ou mais sub-blocos, ou uma segunda região incluindo os sub- blocos fora da primeira região.
[0173] Adicionalmente, o decodificador de vídeo 30 pode determinar os contextos para decodificação dos coeficientes com base nas regiões determinadas (206). Isso é, o decodificador de vídeo 30 pode determinar, para cada coeficiente, um contexto para decodificação do coeficiente com base na região na qual o coeficiente ocorre. Por exemplo, como discutido acima, o decodificador de vídeo 30 pode determinar o contexto com base em uma posição do coeficiente no bloco, uma posição de um sub-bloco incluindo o coeficiente no bloco, um desvio a ser aplicado a um contexto calculado, ou similares, com base na região na qual o coeficiente ocorrerá.
[0174] O decodificador de vídeo 30 pode decodificar por entropia os dados codificados por entropia para reproduzir os coeficientes do bloco utilizando os contextos determinados (208). Em particular, o decodificador de vídeo 30 pode decodificar por entropia um ou mais elementos de sintaxe representativos dos coeficientes utilizando o contexto. Por exemplo, o decodificador de vídeo 30 pode decodificar por entropia uma ou mais informações de significância para os coeficientes, informação de nível para os coeficientes significantes, e/ou informação de sinal para os coeficientes significantes. A informação de significância pode compreender dados significant_coeff_flag. A informação de nível pode compreender coeff_abs_level_greater1_flag, coeff_abs_level_greater2_flag, e coeff_abs_level_remaining. A informação de sinal pode compreender coeff_sign_flag. O decodificador de vídeo 30 pode então regenerar o bloco (por exemplo, a TU) para incluir os coeficientes de transformada decodificados em suas posições respectivas (210). Isso é, como discutido acima, o decodificador de vídeo 30 pode digitalizar de forma inversa os coeficientes reproduzidos para criar um bloco de coeficientes de transformada quantizados.
[0175] O decodificador de vídeo 30 pode então quantizar de forma inversa ou transformar de forma inversa os coeficientes para produzir um bloco residual (212). O decodificador de vídeo 30 pode, por fim, decodificar o bloco atual pela combinação do bloco previsto e do bloco residual (214). Isso é, o decodificador de vídeo 30 pode combinar matematicamente os valores de pixel do bloco previsto com valores de pixel colocalizados do bloco residual para decodificar e reproduzir o bloco original.
[0176] Dessa forma, o método da figura 16 representa um exemplo de um método incluindo a determinação de um contexto para codificação de um coeficiente de transformada de um bloco de vídeo com base em uma região do bloco de vídeo onde o coeficiente de transformada ocorre, e codifica por entropia o coeficiente de transformada utilizando o contexto determinado. Ademais, a região pode compreender uma dentre uma primeira região compreendendo um ou mais sub-blocos 4 x 4 superiores esquerdos dos coeficientes de transformada do bloco de vídeo e uma segunda região compreendendo coeficientes de transformada do bloco de vídeo fora da primeira região.
[0177] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento com base em hardware. O meio legível por computador pode incluir um meio de armazenamento legível por computador, que corresponde a um meio tangível tal como o meio de armazenamento de dados, ou meio de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa forma, o meio legível por computador pode geralmente corresponder a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação tal como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que possa ser acessado por um ou mais computadores ou um ou mais processadores para recuperar as instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa descrição. Um produto de programa de computador pode incluir um meio legível por computador.
[0178] Por meio de exemplo, e não de limitação, tal meio de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente chamada de meio legível por computador. Por exemplo, se instruções forem transmitidas a partir de um sítio de rede, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra ótica, par torcido, linha assinante digital (DSL) ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas, então o cabo coaxial, o cabo de fibra ótica, o par torcido, DSL, ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas são incluídas na definição de meio. Deve-se compreender, no entanto, que o meio de armazenamento legível por computador e o meio de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outro meio transiente, mas são, ao invés disso, direcionados ao meio de armazenamento tangível não transiente. Disquete e disco, como utilizado aqui, incluem disco compacto (CD), disco a laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu-ray, onde disquetes normalmente reproduzem os dados magneticamente, enquanto discos reproduzem os dados oticamente com lasers. As combinações do acima também devem ser incluídas dentro do escopo de meio legível por computador.
[0179] Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), conjuntos lógicos programáveis em campo (FPGAs), ou outro conjunto de circuito lógico discreto ou integrado equivalente. De acordo, o termo "processador", como utilizado aqui pode fazer referência a qualquer estrutura acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui. Adicionalmente, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro de hardware dedicado e/ou módulos de software configurados para codificar e decodificar, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0180] As técnicas dessa descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chip). Vários componentes, módulos ou unidades são descritos nessa descrição para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas descritas, mas não exigem necessariamente a realização por unidades de hardware diferentes. Ao invés disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com o software e/ou firmware adequado.
[0181] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (12)

1. Método para decodificação de dados de vídeo, o método caracterizado pelo fato de que compreende: determinar valores para indicadores de sub-bloco codificados de um ou mais sub-blocos vizinhos de coeficientes de transformada para um sub-bloco atual, determinar que um indicador de sub-bloco codificado do sub-bloco atual indica que o sub-bloco atual inclui pelo menos um coeficiente de transformada diferente de zero; em resposta à determinação de que o indicador de sub-bloco codificado do sub-bloco atual indica que o sub- bloco atual inclui o pelo menos um coeficiente de transformada diferente de zero, usar os valores para os indicadores de sub-bloco codificados dos sub-blocos vizinhos para determinar um contexto para decodificar por entropia um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero do sub-bloco atual, em que usar os valores compreende: determinar um primeiro contexto para decodificar por entropia o um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero quando os valores para os indicadores de sub-bloco codificados dos sub-blocos vizinhos tiverem um primeiro conjunto de valores; e determinar um segundo contexto para decodificar por entropia o um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero quando os valores para os indicadores de sub-bloco codificados dos sub-blocos vizinhos tiverem um segundo conjunto de valores, o primeiro contexto sendo diferente do segundo contexto e o primeiro conjunto de valores sendo diferente do segundo conjunto de valores; e decodificar por entropia o um ou mais elementos de sintaxe do coeficiente de transformada utilizando o contexto determinado.
2. Método para codificar dados de vídeo, o método caracterizado pelo fato de que compreende: determinar valores para indicadores de sub-bloco codificados de um ou mais sub-blocos vizinhos para um sub- bloco atual, codificar um valor para um primeiro indicador de sub-bloco codificado do sub-bloco atual que indica que o sub-bloco atual inclui pelo menos um coeficiente de transformada diferente de zero; em resposta ao sub-bloco atual incluindo o pelo menos um coeficiente de transformada diferente de zero, usar os valores para os indicadores de sub-bloco codificados dos sub-blocos vizinhos para determinar um contexto para codificar por entropia um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero do sub-bloco atual, em que usar os valores compreende: determinar um primeiro contexto para decodificar por entropia o um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero quando os valores para os indicadores de sub-bloco codificados dos sub-blocos vizinhos tiverem um primeiro conjunto de valores; e determinar um segundo contexto para decodificar por entropia o um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero quando os valores para os indicadores de sub-bloco codificados dos sub-blocos vizinhos tiverem um segundo conjunto de valores, o primeiro contexto sendo diferente do segundo contexto e o primeiro conjunto de valores sendo diferente do segundo conjunto de valores; e codificar por entropia o um ou mais elementos de sintaxe do coeficiente de transformada utilizando o contexto determinado.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o um ou mais sub-blocos vizinhos compreendem o sub-bloco vizinho direito e o sub- bloco vizinho inferior.
4. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o sub-bloco atual possui um tamanho de 4x4, e em que o sub-bloco atual está dentro de uma unidade de transformada atual possuindo um tamanho maior que 4x4.
5. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que determinar o contexto compreende adicionalmente determinar o contexto para codificar o coeficiente de transformada com base em uma posição do coeficiente de transformada no sub-bloco atual.
6. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que codificar por entropia o coeficiente de transformada compreende codificar por entropia o coeficiente de transformada de acordo com a codificação aritmética binária adaptativa ao contexto (CABAC).
7. Dispositivo para decodificar dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: mecanismos para determinar valores para indicadores de sub-bloco codificados de um ou mais sub- blocos vizinhos de coeficientes de transformada para um sub-bloco atual, mecanismos para determinar que um indicador de sub-bloco codificado do sub-bloco atual indica que o sub- bloco atual inclui pelo menos um coeficiente de transformada diferente de zero; mecanismos para usar, em resposta à determinação de que o indicador de sub-bloco codificado do sub-bloco atual indica que o sub-bloco atual inclui o pelo menos um coeficiente de transformada diferente de zero, os valores para os indicadores de sub-bloco codificados dos sub-blocos vizinhos para determinar um contexto para decodificar por entropia um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero do sub-bloco atual, em que os mecanismos para usar os valores compreendem: mecanismos para determinar um primeiro contexto para decodificar por entropia o um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero quando os valores para os indicadores de sub-bloco codificados dos sub-blocos vizinhos tiverem um primeiro conjunto de valores; e mecanismos para determinar um segundo contexto para decodificar por entropia o um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero quando os valores para os indicadores de sub-bloco codificados dos sub-blocos vizinhos tiverem um segundo conjunto de valores, o primeiro contexto sendo diferente do segundo contexto e o primeiro conjunto de valores sendo diferente do segundo conjunto de valores; e mecanismos para decodificar por entropia o um ou mais elementos de sintaxe do coeficiente de transformada utilizando o contexto determinado.
8. Dispositivo para codificar dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: mecanismos para determinar valores para indicadores de sub-bloco codificados de um ou mais sub- blocos vizinhos de coeficientes de transformada para um sub-bloco atual, mecanismos para codificar um valor para um primeiro indicador de sub-bloco codificado do sub-bloco atual que indica que o sub-bloco atual inclui pelo menos um coeficiente de transformada diferente de zero; mecanismos para usar, em resposta ao sub-bloco atual incluindo o pelo menos um coeficiente de transformada diferente de zero, os valores para os indicadores de sub- bloco codificados dos sub-blocos vizinhos para determinar um contexto para codificar por entropia um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero do sub-bloco atual, em que os mecanismos para usar os valores compreendem: mecanismos para determinar um primeiro contexto para decodificar por entropia o um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero quando os valores para os indicadores de sub-bloco codificados dos sub-blocos vizinhos tiverem um primeiro conjunto de valores; e mecanismos para determinar um segundo contexto para decodificar por entropia o um ou mais elementos de sintaxe do pelo menos um coeficiente de transformada diferente de zero quando os valores para os indicadores de sub-bloco codificados dos sub-blocos vizinhos tiverem um segundo conjunto de valores, o primeiro contexto sendo diferente do segundo contexto e o primeiro conjunto de valores sendo diferente do segundo conjunto de valores; e mecanismos para codificar por entropia o um ou mais elementos de sintaxe do coeficiente de transformada utilizando o contexto determinado.
9. Dispositivo, de acordo com a reivindicação 7 ou 8, caracteri zado pelo fato de que o um ou mais sub- blocos vizinhos compreendem um sub-bloco vizinho direito e um sub-bloco vizinho inferior.
10. Dispositivo, de acordo com a reivindicação 7 ou 8, caracterizado pelo fato de que os mecanismos para determinar o contexto compreendem adicionalmente mecanismos para determinar o contexto para codificar o coeficiente de transformada com base em uma posição do coeficiente de transformada no sub-bloco atual.
11. Dispositivo, de acordo com a reivindicação 7 ou 8, caracterizado pelo fato de que os mecanismos para codificar por entropia o coeficiente de transformada compreendem mecanismos para codificar por entropia o coeficiente de transformada de acordo com a codificação aritmética binária adaptativa ao contexto (CABAC).
12. Memória caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executadas por um computador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 6.
BR112014017118-1A 2012-01-13 2013-01-11 Determinar contextos para codificar dados de coeficiente de transformada em codificação de vídeo BR112014017118B1 (pt)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201261586668P 2012-01-13 2012-01-13
US61/586,668 2012-01-13
US201261588595P 2012-01-19 2012-01-19
US61/588,595 2012-01-19
US201261597097P 2012-02-09 2012-02-09
US61/597,097 2012-02-09
US13/738,602 2013-01-10
US13/738,602 US9621894B2 (en) 2012-01-13 2013-01-10 Determining contexts for coding transform coefficient data in video coding
PCT/US2013/021278 WO2013106739A2 (en) 2012-01-13 2013-01-11 Determining contexts for coding transform coefficient data in video coding

Publications (3)

Publication Number Publication Date
BR112014017118A2 BR112014017118A2 (pt) 2017-06-13
BR112014017118A8 BR112014017118A8 (pt) 2017-07-04
BR112014017118B1 true BR112014017118B1 (pt) 2023-04-18

Family

ID=48779949

Family Applications (3)

Application Number Title Priority Date Filing Date
BR112014017118-1A BR112014017118B1 (pt) 2012-01-13 2013-01-11 Determinar contextos para codificar dados de coeficiente de transformada em codificação de vídeo
BR112014017121-1A BR112014017121B1 (pt) 2012-01-13 2013-01-11 Método e dispositivo para decodificar dados de vídeo, método e dispositivo para codificar dados de vídeo e memória legível por computador
BR112014017000A BR112014017000A8 (pt) 2012-01-13 2013-01-11 determinar contextos para codificar dados de coeficiente de transformada em codificação de vídeo

Family Applications After (2)

Application Number Title Priority Date Filing Date
BR112014017121-1A BR112014017121B1 (pt) 2012-01-13 2013-01-11 Método e dispositivo para decodificar dados de vídeo, método e dispositivo para codificar dados de vídeo e memória legível por computador
BR112014017000A BR112014017000A8 (pt) 2012-01-13 2013-01-11 determinar contextos para codificar dados de coeficiente de transformada em codificação de vídeo

Country Status (18)

Country Link
US (3) US9253481B2 (pt)
EP (3) EP2803194B1 (pt)
JP (3) JP6046164B2 (pt)
KR (3) KR101721302B1 (pt)
CN (3) CN104041029B (pt)
AU (3) AU2013207804A1 (pt)
BR (3) BR112014017118B1 (pt)
CA (3) CA2863019C (pt)
HK (2) HK1198404A1 (pt)
IL (3) IL233161A0 (pt)
MY (2) MY172757A (pt)
PH (3) PH12014501465A1 (pt)
RU (3) RU2603537C2 (pt)
SG (4) SG11201403342YA (pt)
TW (3) TWI532382B (pt)
UA (1) UA114418C2 (pt)
WO (3) WO2013106729A2 (pt)
ZA (1) ZA201405688B (pt)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9497472B2 (en) 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
CN105357540B (zh) * 2011-06-28 2019-09-06 三星电子株式会社 对视频进行解码的方法
WO2013070974A2 (en) 2011-11-08 2013-05-16 General Instrument Corporation Method of determining binary codewords for transform coefficients
CN105027560A (zh) 2012-01-21 2015-11-04 摩托罗拉移动有限责任公司 确定用于变换系数的二进制码字的方法
US9866829B2 (en) 2012-01-22 2018-01-09 Qualcomm Incorporated Coding of syntax elements that correspond to coefficients of a coefficient block in video coding
US9479780B2 (en) * 2012-02-01 2016-10-25 Google Technology Holdings LLC Simplification of significance map coding
CN104995919B (zh) 2012-02-04 2019-08-09 谷歌技术控股有限责任公司 用于最末重要系数位置编码中的上下文减少的设备和方法
CA2807908A1 (en) * 2012-06-30 2013-12-30 Research In Motion Limited Position-based context selection for greater-than-one flag decoding and encoding
US9854235B2 (en) * 2012-08-31 2017-12-26 Blackberry Limited Methods and devices for entropy coding in scalable video compression
US9813737B2 (en) * 2013-09-19 2017-11-07 Blackberry Limited Transposing a block of transform coefficients, based upon an intra-prediction mode
US9215464B2 (en) 2013-09-19 2015-12-15 Blackberry Limited Coding position data for the last non-zero transform coefficient in a coefficient group
KR102250088B1 (ko) * 2013-10-24 2021-05-10 삼성전자주식회사 비디오 스트림을 복호화하는 방법 및 장치
GB2524726B (en) * 2014-03-25 2018-05-23 Canon Kk Image data encapsulation with tile support
KR101901355B1 (ko) * 2014-10-21 2018-09-21 엘지전자 주식회사 최적화 함수를 이용하여 그래프 기반 예측을 수행하는 방법 및 장치
US9781424B2 (en) 2015-01-19 2017-10-03 Google Inc. Efficient context handling in arithmetic coding
US10306229B2 (en) * 2015-01-26 2019-05-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
EP3293975A4 (en) * 2015-09-08 2018-10-10 Samsung Electronics Co., Ltd. Device and method for entropy encoding and decoding
ES2844525B1 (es) * 2015-09-11 2022-07-05 Kt Corp Metodo para decodificar un video
US10440399B2 (en) * 2015-11-13 2019-10-08 Qualcomm Incorporated Coding sign information of video data
US10542267B2 (en) 2016-01-21 2020-01-21 Samsung Display Co., Ltd. Classification preserving image transform compression
US11503292B2 (en) 2016-02-01 2022-11-15 Lg Electronics Inc. Method and apparatus for encoding/decoding video signal by using graph-based separable transform
CN116916006A (zh) 2016-04-29 2023-10-20 世宗大学校产学协力团 视频信号编码/解码方法和设备
CN109479132B (zh) 2016-04-29 2021-10-01 世宗大学校产学协力团 用于对图像信号进行编码和解码的方法和装置
CN109328461B (zh) 2016-04-29 2023-09-05 世宗大学校产学协力团 视频信号编码/解码方法和设备
EP3270594A1 (en) * 2016-07-15 2018-01-17 Thomson Licensing Method and apparatus for advanced cabac context adaptation for last coefficient coding
CN117412035A (zh) * 2016-08-31 2024-01-16 株式会社Kt 用于处理视频信号的方法和设备
RU2653289C1 (ru) * 2016-12-07 2018-05-07 Владимир Леонидович Карякин Способ повышения качества канала передачи данных в системе iptv по коэффициенту ber в режиме тв вещания и устройство для его осуществления
TWI635742B (zh) * 2017-01-09 2018-09-11 晨星半導體股份有限公司 動態影像編碼裝置及動態影像編碼方法
US10194147B2 (en) 2017-01-19 2019-01-29 Google Llc DC coefficient sign coding scheme
KR102257829B1 (ko) * 2017-04-13 2021-05-28 엘지전자 주식회사 영상의 부호화/복호화 방법 및 이를 위한 장치
US10764582B2 (en) * 2017-06-29 2020-09-01 Qualcomm Incorporated Reducing seam artifacts in 360-degree video
US10484695B2 (en) 2017-10-23 2019-11-19 Google Llc Refined entropy coding for level maps
EP3499885A1 (en) * 2017-12-18 2019-06-19 Canon Kabushiki Kaisha Method and device for encoding video data
US10298895B1 (en) * 2018-02-15 2019-05-21 Wipro Limited Method and system for performing context-based transformation of a video
EP3562156A1 (en) * 2018-04-27 2019-10-30 InterDigital VC Holdings, Inc. Method and apparatus for adaptive context modeling in video encoding and decoding
US10645381B2 (en) 2018-04-30 2020-05-05 Google Llc Intra-prediction for smooth blocks in image/video
US11509890B2 (en) * 2018-07-24 2022-11-22 Hfi Innovation Inc. Methods and apparatus for entropy coding and decoding aspects of video data
EP3852374A4 (en) * 2018-09-23 2021-12-08 Lg Electronics Inc. PROCESS FOR ENCODING / DECODING VIDEO SIGNALS AND ASSOCIATED EQUIPMENT
KR102634645B1 (ko) 2018-10-05 2024-02-06 엘지전자 주식회사 변환 계수 코딩 방법 및 그 장치
KR102657902B1 (ko) 2018-10-05 2024-04-17 로즈데일 다이나믹스 엘엘씨 변환 계수 코딩 방법 및 그 장치
US11323748B2 (en) 2018-12-19 2022-05-03 Qualcomm Incorporated Tree-based transform unit (TU) partition for video coding
US11025937B2 (en) * 2019-03-16 2021-06-01 Tencent America LLC Method and apparatus for video coding
US11218735B2 (en) 2019-04-02 2022-01-04 Qualcomm Incorporated Context derivation for last position coding for video coding
MX2021012516A (es) * 2019-04-19 2021-11-12 Bytedance Inc Codificacion de contexto para modo de salto de transformada.
CA3137163C (en) 2019-04-24 2024-05-14 Bytedance Inc. Constraints on quantized residual differential pulse code modulation representation of coded video
EP4032290A4 (en) 2019-10-18 2022-11-30 Beijing Bytedance Network Technology Co., Ltd. SYNTAX CONSTRAINTS IN REPORTING SUBPICTURE PARAMETER SETS
US11375220B2 (en) * 2019-11-27 2022-06-28 Tencent America LLC Method and apparatus for video decoding using a nominal directional mode and an angular offset
US11206428B1 (en) 2020-07-14 2021-12-21 Tencent America LLC Method and apparatus for frequency-dependent joint component secondary transform

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6680974B1 (en) 1999-12-02 2004-01-20 Lucent Technologies Inc. Methods and apparatus for context selection of block transform coefficients
US6856701B2 (en) 2001-09-14 2005-02-15 Nokia Corporation Method and system for context-based adaptive binary arithmetic coding
US7379608B2 (en) * 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
KR100612015B1 (ko) * 2004-07-22 2006-08-11 삼성전자주식회사 컨텍스트 적응형 이진 산술 부호화 방법 및 그 장치
RU2371881C1 (ru) 2005-07-08 2009-10-27 ЭлДжи ЭЛЕКТРОНИКС ИНК. Способ моделирования информации кодирования видеосигнала для компрессии/декомпрессии информации
WO2007008018A1 (en) 2005-07-08 2007-01-18 Lg Electronics Inc. Method for modeling coding information of a video signal to compress/decompress the information
US8599925B2 (en) 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
WO2007035056A1 (en) 2005-09-26 2007-03-29 Samsung Electronics Co., Ltd. Method and apparatus for entropy encoding and entropy decoding fine-granularity scalability layer video data
KR100873636B1 (ko) 2005-11-14 2008-12-12 삼성전자주식회사 단일 부호화 모드를 이용하는 영상 부호화/복호화 방법 및장치
KR101356733B1 (ko) 2007-03-07 2014-02-05 삼성전자주식회사 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치
CN101321283B (zh) * 2007-06-10 2010-04-07 华为技术有限公司 兼容不同大小块变换的编解码方法及编解码器
US9008171B2 (en) 2008-01-08 2015-04-14 Qualcomm Incorporated Two pass quantization for CABAC coders
KR101375668B1 (ko) 2008-03-17 2014-03-18 삼성전자주식회사 변환 계수의 부호화, 복호화 방법 및 장치
US8831087B2 (en) * 2008-10-06 2014-09-09 Qualcomm Incorporated Efficient prediction mode selection
US8576916B2 (en) * 2008-10-08 2013-11-05 Qualcomm Incorporated Method and apparatus for reducing bus traffic of a texture decoding module in a video decoder
US20100174539A1 (en) 2009-01-06 2010-07-08 Qualcomm Incorporated Method and apparatus for vector quantization codebook search
EP2395755A4 (en) 2009-02-09 2015-01-07 Samsung Electronics Co Ltd VIDEO PROCESSING AND DEVICE WITH LOW-COMPLEX FREQUENCY CONVERSION AND VIDEO PROCESSING AND DEVICE
US8780999B2 (en) 2009-06-12 2014-07-15 Qualcomm Incorporated Assembling multiview video coding sub-BITSTREAMS in MPEG-2 systems
US8665964B2 (en) 2009-06-30 2014-03-04 Qualcomm Incorporated Video coding based on first order prediction and pre-defined second order prediction mode
US8914835B2 (en) 2009-10-28 2014-12-16 Qualcomm Incorporated Streaming encoded video data
CN113556556A (zh) 2010-04-13 2021-10-26 Ge视频压缩有限责任公司 显著性图和变换系数块的编码
KR102574591B1 (ko) 2010-05-12 2023-09-06 인터디지털 매디슨 페턴트 홀딩스 에스에이에스 통합된 유효성 맵 코딩을 위한 방법 및 장치
US8902988B2 (en) 2010-10-01 2014-12-02 Qualcomm Incorporated Zero-out of high frequency coefficients and entropy coding retained coefficients using a joint context model
US9313514B2 (en) 2010-10-01 2016-04-12 Sharp Kabushiki Kaisha Methods and systems for entropy coder initialization
US20120082235A1 (en) 2010-10-05 2012-04-05 General Instrument Corporation Coding and decoding utilizing context model selection with adaptive scan pattern
US8687904B2 (en) * 2011-01-14 2014-04-01 Panasonic Corporation Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus which include arithmetic coding or arithmetic decoding
US8953690B2 (en) 2011-02-16 2015-02-10 Google Technology Holdings LLC Method and system for processing video data
US8891630B2 (en) 2011-10-24 2014-11-18 Blackberry Limited Significance map encoding and decoding using partition set based context assignment
US8964849B2 (en) * 2011-11-01 2015-02-24 Blackberry Limited Multi-level significance maps for encoding and decoding
ES2728529T3 (es) 2011-11-01 2019-10-25 Velos Media Int Ltd Mapas de significancia multinivel para codificación y decodificación
CA2773990C (en) 2011-11-19 2015-06-30 Research In Motion Limited Multi-level significance map scanning
EP2800368B1 (en) 2011-12-28 2021-07-28 Sharp Kabushiki Kaisha Arithmetic decoding device, arithmetic decoding method, and arithmetic coding device

Also Published As

Publication number Publication date
RU2595897C2 (ru) 2016-08-27
PH12014501467B1 (en) 2014-10-08
CA2863019C (en) 2020-04-28
HK1198404A1 (en) 2015-04-17
IL233162A0 (en) 2014-07-31
BR112014017121B1 (pt) 2023-02-07
SG11201403341PA (en) 2014-08-28
TW201336317A (zh) 2013-09-01
CA2863011C (en) 2017-10-17
RU2014133162A (ru) 2016-03-10
US9253481B2 (en) 2016-02-02
AU2013207823A1 (en) 2014-07-24
SG11201403342YA (en) 2014-09-26
US9621894B2 (en) 2017-04-11
BR112014017118A2 (pt) 2017-06-13
RU2014133158A (ru) 2016-03-10
KR20140120908A (ko) 2014-10-14
IL233162A (en) 2017-05-29
WO2013106729A2 (en) 2013-07-18
AU2013207823B2 (en) 2016-12-08
HK1198405A1 (en) 2015-04-17
WO2013106739A3 (en) 2014-03-20
KR102187013B1 (ko) 2020-12-04
TW201347545A (zh) 2013-11-16
WO2013106729A3 (en) 2014-03-20
US20130182773A1 (en) 2013-07-18
AU2013207752B2 (en) 2017-05-04
IL233160A0 (en) 2014-07-31
MY172757A (en) 2019-12-11
CA2863043A1 (en) 2013-07-18
SG11201403343RA (en) 2014-09-26
WO2013106710A2 (en) 2013-07-18
PH12014501467A1 (en) 2014-10-08
JP6046164B2 (ja) 2016-12-14
PH12014501465A1 (en) 2014-10-08
KR101721302B1 (ko) 2017-03-29
RU2603537C2 (ru) 2016-11-27
JP2015507431A (ja) 2015-03-05
BR112014017121A2 (pt) 2017-06-13
ZA201405688B (en) 2017-08-30
JP6266535B2 (ja) 2018-01-24
IL233160A (en) 2016-07-31
AU2013207804A1 (en) 2014-07-31
BR112014017000A2 (pt) 2017-06-13
EP2803196A2 (en) 2014-11-19
CN104041033B (zh) 2018-10-26
EP2803195A2 (en) 2014-11-19
IL233161A0 (en) 2014-07-31
CN104041029A (zh) 2014-09-10
US20130182772A1 (en) 2013-07-18
CN104054340A (zh) 2014-09-17
CA2863011A1 (en) 2013-07-18
PH12014501530B1 (en) 2014-10-08
CA2863019A1 (en) 2013-07-18
RU2014133154A (ru) 2016-03-10
AU2013207752A1 (en) 2014-07-31
TW201336310A (zh) 2013-09-01
BR112014017118A8 (pt) 2017-07-04
BR112014017121A8 (pt) 2017-07-04
EP2803194C0 (en) 2024-01-03
TWI559736B (zh) 2016-11-21
MY166883A (en) 2018-07-24
KR20140120909A (ko) 2014-10-14
US20130182758A1 (en) 2013-07-18
JP2015507429A (ja) 2015-03-05
SG10201605387XA (en) 2016-08-30
TWI532382B (zh) 2016-05-01
JP2015507430A (ja) 2015-03-05
PH12014501530A1 (en) 2014-10-08
WO2013106710A3 (en) 2014-02-20
WO2013106739A2 (en) 2013-07-18
BR112014017000A8 (pt) 2017-07-04
CN104041033A (zh) 2014-09-10
CN104041029B (zh) 2018-03-06
UA114418C2 (uk) 2017-06-12
EP2803194B1 (en) 2024-01-03
KR20140116194A (ko) 2014-10-01
EP2803194A2 (en) 2014-11-19

Similar Documents

Publication Publication Date Title
BR112014017118B1 (pt) Determinar contextos para codificar dados de coeficiente de transformada em codificação de vídeo
ES2874848T3 (es) Restricción de unidades de predicción en segmentos b a interpredicción unidireccional
JP6231109B2 (ja) コンテキスト適応型、マルチレベル有意性コーディングに関するコンテキスト導出
BR112014008097B1 (pt) Remoção de corte de candidato a preditor de vetor de movimento para codificação de vídeo
BR112014011058B1 (pt) Métodos para codificar e decodificar dados de vídeo, dispositivos compreendendo um codificador e um decodificador de vídeo e meio de armazenamento
BR112014010326B1 (pt) Codificação de vídeo intramodo
WO2015031806A1 (en) Constrained intra prediction in video coding
BR112014011063B1 (pt) Redução de contexto para codificação aritmética binária adaptativa de contexto
BR112014017364B1 (pt) Aperfeiçoamento de rendimento para codificação de nível de coeficiente cabac
BR112013032040B1 (pt) Método e aparelho para codificação de vídeo, e memória legível por computador
BR122020003135B1 (pt) Método e dispositivo para decodificar dados de vídeo e meio de armazenamento não transitório legível por computador
BR112013013651B1 (pt) Métodos para codificar e decodificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo, aparelho para codificar coeficientes associados com um bloco de dados de vídeo durante um processo de codificação de vídeo e mídia legível por computador
BR112014012939B1 (pt) Método e codificador de vídeo para realizar processos de desvio adaptativo de amostra (sao) em um processo de codificação de vídeo, método e decodificador de video para realizar processos de desvio adaptativo de amostra em um processo de decodificação de vídeo e memória legível por computador
BR112014001056B1 (pt) Varredura de coeficiente em codificação de vídeo
BR112013013650B1 (pt) Método, dispositivo e meio legível por computador para codificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo
BR112014011054B1 (pt) Matrizes de quantização de sinalização para codificação de vídeo
BR112014010052B1 (pt) Método e dispositivo de inicialização de um contexto utilizado para codificar dados de vídeo em um processo de codificação aritmética binária adaptativa ao contexto, e memória legível por computador
BR112015016256B1 (pt) Sinalização de contagem de ordem de imagens para relações de informação de temporização para temporização de vídeo em codificação de vídeo
BR112013033645B1 (pt) Elementos de sintaxe de sinalização para coeficientes de transformada para subconjuntos de uma unidade de codificação de nível-folha
BR112014023466B1 (pt) Derivação de contexto para codificação de última posição para codificação de vídeo
BR112016021138B1 (pt) Codificação de nível de coeficiente em um processo de codificação de vídeo

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Ipc: H04N 7/00 (2011.01)

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]
B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: H04N 7/00

Ipc: H04N 19/13 (2014.01), H04N 19/18 (2014.01), H04N 1

B350 Update of information on the portal [chapter 15.35 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 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 11/01/2013, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.