BR112013017423B1 - Indicação de seleção de modo intra-previsão para codificação de vídeo utilizando cabac - Google Patents

Indicação de seleção de modo intra-previsão para codificação de vídeo utilizando cabac Download PDF

Info

Publication number
BR112013017423B1
BR112013017423B1 BR112013017423-4A BR112013017423A BR112013017423B1 BR 112013017423 B1 BR112013017423 B1 BR 112013017423B1 BR 112013017423 A BR112013017423 A BR 112013017423A BR 112013017423 B1 BR112013017423 B1 BR 112013017423B1
Authority
BR
Brazil
Prior art keywords
intra
mode
forecast
index
forecast mode
Prior art date
Application number
BR112013017423-4A
Other languages
English (en)
Other versions
BR112013017423A2 (pt
Inventor
Marta Karczewicz
Xianglin Wang
Wei-Jung Chien
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 BR112013017423A2 publication Critical patent/BR112013017423A2/pt
Publication of BR112013017423B1 publication Critical patent/BR112013017423B1/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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission

Landscapes

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

Abstract

INDICAÇÃO DE SELEÇÃO DE MODO INTRA-PREVISÃO PARA CODIFICAÇÃO DE VÍDEO UTILIZANDO CABAC Para um bloco de dados de vídeo, um codificador de vídeo pode sinalizar para um decodificador de vídeo, utilizando um processo de codificação aritmética binária adaptiva com base em contexto (CABAC), um modo de intra-previsão selecionado utilizando uma palavra-código que é mapeada em um índice de modo de intra-previsão modificado. O decodificador de vídeo pode realizar um processo de codificação aritmética binária adaptativa com base em contexto (CABAC) para determinar a palavra-código sinalizada pelo codificador de vídeo, determinar o índice de modo de intra-previsão modificado correspondente à palavra-código, determinar os modos mais prováveis com base em um contexto, mapear o índice de modo de intra-previsão modificado em um índice de modo de intra-previsão pela comparação do índice de modo de intra-previsão modificado com os índices de modo dos modos mais prováveis, e determinar o modo de intra-previsão selecionado utilizado para codificar o bloco de dados de vídeo com base no índice de modo de intra-previsão.

Description

Referência Cruzada a Pedidos Relacionados
[0001] Esse pedido reivindica o benefício do pedido de patente provisório U.S. No. 61/430.520, depositado em 6 de janeiro de 2011; do pedido provisório U.S. No. 61/446.402, depositado em 24 de fevereiro de 2011, e do pedido provisório U.S. No. 61/448.623, depositado em 2 de março de 2011, todo o conteúdo de cada um sendo incorporado aqui por referência.
Campo da Invenção
[0002] Essa descrição refere-se à codificação de vídeo, e mais particularmente à sinalização das características de codificação para dados de vídeo codificados.
Descrição da Técnica Anterior
[0003] As capacidades de vídeo digital podem ser incorporadas em uma ampla variedade de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop e desktop, câmeras digitais, dispositivos de gravação digital, aparelhos de mídia digital, dispositivos de modos de vídeo, consoles de jogos de vídeo, rádio telefones celulares ou via satélite, dispositivos de teleconferência de vídeo, e similares. Os dispositivos de vídeo digital implementam as técnicas de compressão de vídeo, tal como as descritas nos padrões definidos pelos padrões MPEG-2, MPEG-2, ITU-T H.263 e ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), e extensões de tais padrões, para transmitir e receber informação de vídeo digital mais eficientemente.
[0004] As técnicas de compressão de vídeo realizam a previsão espacial e/ou previsão temporal para reduzir ou remover a redundância inerente às sequências de vídeo. Para codificação de vídeo com base em bloco, um quadro ou fatia de vídeo pode ser dividido em blocos de vídeo. Cada bloco de vídeo pode ser adicionalmente dividido. Os blocos de vídeo em um quadro ou fatia intra-codificado (I) são codificados utilizando previsão espacial com relação aos blocos de vídeo vizinhos. Os blocos de vídeo em um quadro ou fatia inter-codificado (P ou B) podem utilizar previsão espacial com relação aos macroblocos vizinhos ou unidades de codificação no mesmo quadro ou fatia ou previsão temporal com relação a outros quadros de referência.
Sumário da Invenção
[0005] Em geral, essa descrição descreve técnicas para a sinalização de características de codificação para dados de vídeo codificados. As técnicas dessa descrição podem aperfeiçoar a eficiência de sinalização de um modo intra- previsão utilizado para codificar um bloco de dados de vídeo. As técnicas dessa descrição incluem a sinalização em modos intra-previsão de fluxo de bits codificados para blocos de dados de vídeo utilizando palavras-código. As técnicas incluem adicionalmente a codificação de palavras- código utilizando um processo de codificação aritmética binária adaptativa de contexto (CABAC). Dessa forma, existe muita economia de bit relativa para um fluxo de bits codificado quando são utilizadas técnicas dessa descrição.
[0006] Em um exemplo, um método de decodificação de dados de vídeo inclui a determinação de um primeiro modo intra-previsão mais provável e um segundo modo de intra- previsão mais provável para um bloco codificado de dados de vídeo com base em um contexto para o bloco atual; a seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo aos índices de modo de intra-previsão modificados que correspondem aos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; a realização de um processo CABAC para determinar uma palavra-código recebida; a determinação de um dos índices de modo de intra-previsão modificados que correspondem à palavra- código recebida utilizando a tabela de palavras-código; a seleção de um modo de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra- previsão mais provável a ser utilizado para decodificar o bloco codificado, em que o modo de intra-previsão selecionado corresponde ao índice determinado dentre os índices de modo de intra-previsão modificados; e a decodificação do bloco atual utilizando o modo de intra- previsão selecionado.
[0007] Em um exemplo, um aparelho para decodificação de dados de vídeo inclui um decodificador de vídeo configurado para determinar um primeiro modo de intra-previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco codificado de dados de vídeo com base em um contexto para o bloco atual; a seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo aos índices de modo de intra-previsão modificados que correspondem aos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; a realização de um processo CABAC para determinar uma palavra-código recebida; determinação de um dos índices de modo de intra-previsão modificados que corresponde à palavra-código recebida utilizando a tabela de palavras- código; a seleção de um modo de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável para uso para decodificar o bloco codificado, em que o modo de intra- previsão selecionado corresponde ao índice determinado dentre os índices de modo de intra-previsão modificados; e a decodificação do bloco atual utilizando o modo de intra- previsão selecionado.
[0008] Em um exemplo, um método de codificação de dados de vídeo inclui a determinação de um primeiro modo de intra-previsão mais provável e um segundo modo de intra- previsão mais provável para um bloco atual de dados de vídeo com base em um contexto de codificação para o bloco atual; a seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras- código correspondendo aos índices de modo de intra-previsão modificados que correspondem aos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; a codificação do bloco atual utilizando um dos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; a determinação de um dos índices de modo de intra-previsão modificados que corresponde a um dos modos de intra- previsão utilizando a tabela de palavras-código; e a codificação de uma palavra-código a partir da tabela selecionada de palavras-código pela realização de um processo CABAC, em que a palavra-código corresponde a um dos índices de modo de intra-previsão modificados.
[0009] Em um exemplo, um aparelho para codificação de dados de vídeo inclui um codificador de vídeo configurado para determinar um primeiro modo de intra-previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco atual de dados de vídeo com base em um contexto de codificação para o bloco atual; seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo aos índices de modo de intra-previsão modificados que correspondem aos modos de intra-previsão além do primeiro modo de intra- previsão mais provável e o segundo modo de intra-previsão mais provável; codificação do bloco atual utilizando um dos modos de intra-previsão além do primeiro modo de intra- previsão mais provável e o segundo modo de intra-previsão mais provável; a determinação de um dos índices de modo de intra-previsão modificados que corresponde a um dos modos de intra-previsão utilizando a tabela de palavras-código; e a codificação de uma palavra-código a partir da tabela selecionada de palavras-código pela realização de um processo CABAC, em que a palavra-código corresponde a um dos índices de modo de intra-previsão modificados.
[0010] Em um exemplo, um aparelho de decodificação de vídeo inclui meios de determinação de um primeiro modo de intra-previsão mais provável e um segundo modo de intra- previsão mais provável para um bloco codificado de dados de vídeo com base em um contexto para o bloco atual; meios de seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras- código compreende uma pluralidade de palavras-código correspondendo aos índices de modo de intra-previsão modificados que correspondem aos modos de intra-previsão além dos primeiro modo de intra-previsão mais provável e segundo modo de intra-previsão mais provável; meios de realização de um processo CABAC para determinar uma palavra-código recebida; meios para determinação de um dos índices de modo de intra-previsão modificados que corresponde à palavra-código recebida utilizando a tabela de palavras-código; meios para seleção de um modo de intra- previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável para uso na decodificação do bloco codificado, em que o modo de intra-previsão selecionado corresponde a um índice determinado dentre os índices de modo de intra-previsão modificados; e meios para a decodificação do bloco atual utilizando o modo de intra-previsão selecionado.
[0011] Em um exemplo, um aparelho para codificação de dados de vídeo inclui meios de determinação de um primeiro modo intra-previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco atual de dados de vídeo com base em um contexto de codificação para o bloco atual; meios para a seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo aos índices de modo de intra-previsão modificados que correspondem aos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; meios para a determinação de um dos índices de modo de intra-previsão modificados que corresponde a um dos modos de intra-previsão utilizando a tabela de palavras-código; e meios para a codificação de uma palavra-código a partir da tabela selecionada de palavras-código pela realização de um processo CABAC, em que a palavra-código corresponde a um dos índices de modo de intra-previsão modificados.
[0012] Em um exemplo, um meio de armazenamento legível por computador possuindo armazenado no mesmo instruções que quando executadas fazem com que um ou mais processadores determinem um primeiro modo de intra-previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco codificado de dados de vídeo com base em um contexto para o bloco atual; a seleção de uma tabela de palavras- código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo aos índices de modo de intra-previsão modificados que correspondem aos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; a realização de um processo CABAC para determinar uma palavra-código recebida; a determinação de um dos índices de modo de intra-previsão modificados que corresponde à palavra-código recebida utilizando a tabela de palavras- código; a seleção de um modo de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável para uso para decodificação do bloco codificado, em que o modo de intra- previsão selecionado corresponde a um índice determinado dentre os índices de modo de intra-previsão modificados; e a decodificação do bloco atual utilizando o modo de intra- previsão selecionado.
[0013] Em um exemplo, um meio de armazenamento legível por computador possuindo armazenado no mesmo instruções que quando executadas fazem com que um ou mais processadores determinem um primeiro modo de intra-previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco atual de dados de vídeo com base em um contexto de codificação para o bloco atual; seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo aos índices de modo de intra-previsão modificados que corresponde aos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; a codificação do bloco atual utilizando um dos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; a determinação de um dos índices de modo de intra-previsão mais provável que corresponde a um dos modos de intra- previsão utilizando a tabela de palavras-código; e a codificação de uma palavra-código a partir da tabela selecionada de palavras-código pela realização de um processo CABAC, em que a palavra-código corresponde a um dos índices de modo de intra-previsão modificados.
[0014] Em um exemplo, um método de decodificação de dados de vídeo inclui a determinação de um primeiro modo de intra-previsão mais provável e um segundo modo de intra- previsão mais provável para um bloco atual de dados de vídeo com base em um contexto para o bloco atual; a seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo aos índices de palavra-código, em que os índices de palavra-código são mapeados para modos de intra- previsão; a realização de um processo CABAC para determinar uma palavra-código recebida; a determinação de um índice de palavra-código modificado que corresponde à palavra-código recebida utilizando a tabela de palavras-código; a seleção de um modo de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra- previsão mais provável para uso na decodificação do bloco codificado, em que o modo de intra-previsão selecionado corresponde a um índice de palavra-código selecionado com base no índice de palavra-código modificado, o primeiro modo de intra-previsão mais provável, e o segundo modo de intra-previsão mais provável; e a decodificação do bloco atual utilizando o modo de intra-previsão selecionado.
[0015] Em um exemplo, um aparelho para a decodificação de dados de vídeo inclui um decodificador de vídeo configurado para determinar um primeiro modo de intra- previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco atual de dados de vídeo com base em um contexto para o bloco atual; a seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo a um índice de palavra-código, em que os índices de palavra-código são mapeados para os modos de intra-previsão; a realização de um processo CABAC para determinação de uma palavra-código recebida; a determinação de um índice de palavra-código modificado que corresponde à palavra-código recebida utilizando a tabela de palavras-código; a seleção de um modo de intra-previsão além do primeiro modo de intra- previsão mais provável e o segundo modo de intra-previsão mais provável para uso na decodificação do bloco codificado, em que o modo de intra-previsão selecionado corresponde a um índice de palavra-código selecionado com base no índice de palavra-código modificado, o primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; e a decodificação do bloco atual utilizando o modo de intra-previsão selecionado.
[0016] Em um exemplo, um aparelho para decodificação de vídeo inclui meios para a determinação de um primeiro modo de intra-previsão mais provável e um segundo modo de intra- previsão mais provável para um bloco atual de dados de vídeo com base em um contexto para o bloco atual; meios para a seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras- código compreende uma pluralidade de palavras-código correspondendo aos índices de palavra-código, em que os índices de palavra-código são mapeados para os modos de intra-previsão; meios para a realização de um processo CABAC para determinação de uma palavra-código recebida; meios para a determinação de um índice de palavra-código modificado, que corresponde à palavra-código recebida utilizando a tabela de palavras-código; meios para a seleção de um modo de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra- previsão mais provável para uso na decodificação do bloco codificado, em que o modo de intra-previsão selecionado corresponde a um índice de palavra-código selecionado com base no índice de palavra-código modificado, o primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; e meios para decodificação do bloco atual utilizando o modo de intra-previsão selecionado.
[0017] Em um exemplo, um meio de armazenamento legível por computador possuindo armazenadas, no mesmo, instruções que quando executadas fazem com que um ou mais processadores determinem um primeiro modo de intra-previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco atual de dados de vídeo com base em um contexto para o bloco atual; a seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo aos índices de palavra- código, em que os índices de palavra-código são mapeados para os modos de intra-previsão; a realização de um processo CABAC para determinar uma palavra-código recebida; a determinação de um índice de palavra-código modificado que corresponde à palavra-código recebida utilizando a tabela de palavras-código; a seleção de um modo de intra- previsão além do primeiro modo de intra-previsão mais provável e um segundo modo de intra-previsão mais provável para uso na decodificação do bloco codificado, em que o modo de intra-previsão selecionado corresponde a um índice de palavra-código selecionado com base no índice de palavra-código modificado, o primeiro modo de intra- previsão mais provável e o segundo modo de intra-previsão mais provável; e a decodificação do bloco atual utilizando o modo de intra-previsão selecionado.
[0018] Em um exemplo, um método de codificação de dados de vídeo inclui a determinação de um primeiro modo de intra-previsão mais provável e um segundo modo de intra- previsão mais provável para um bloco atual dos dados de vídeo com base em um contexto de codificação para o bloco atual; a seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras- código correspondendo aos índices de palavra-código, em que os índices de palavra-código são mapeados para modos de intra-previsão; a codificação do bloco atual utilizando um dos modos de intra-previsão além do primeiro modo de intra- previsão mais provável e o segundo modo de intra-previsão mais provável; a determinação de um índice de palavra- código modificado com base no índice de palavra-código de um dos modos de intra-previsão utilizados para codificar o bloco atual, um índice de palavra-código mapeado para o primeiro modo mais provável, e um índice de palavra-código mapeado para o segundo modo mais provável; e a codificação de uma palavra-código a partir da tabela selecionada de palavras-código pela realização de um processo CABAC, em que a palavra-código corresponde a um dos índices de modo de intra-previsão modificados.
[0019] Em um exemplo, um aparelho para codificação de dados de vídeo inclui um codificador de vídeo configurado para determinar um primeiro modo de intra-previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco atual de dados de vídeo com base em um contexto de codificação para o bloco atual; a seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras-código correspondentes aos índices de palavra-código, em que os índices de palavra- código são mapeados para modos de intra-previsão; a codificação do bloco atual utilizando um dos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável, a determinação de um índice de palavra-código modificado com base no índice de palavra-código de um dos modos de intra-previsão utilizados para codificar o bloco atual, um índice de palavra-código mapeado para o primeiro modo mais provável, e um índice de palavra-código mapeado para o segundo modo mais provável; e a codificação de uma palavra- código a partir da tabela selecionada de palavras-código pela realização de um processo CABAC, em que a palavra- código corresponde a um dos índices de modo de intra- previsão modificados.
[0020] Em um exemplo, um aparelho para codificação de vídeo inclui meios para a determinação de um primeiro modo de intra-previsão mais provável e um segundo modo de intra- previsão mais provável para um bloco atual de dados de vídeo com base em um contexto de codificação para o bloco atual; meios de seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras- código correspondendo aos índices de palavra-código, em que os índices de palavra-código são mapeados para modos de intra-previsão; meios para a codificação do bloco atual utilizando um dos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; meios para a determinação de um índice de palavra-código modificado com base no índice de palavra-código de um dos modos de intra-previsão utilizados para codificar o bloco atual, um índice de palavra-código mapeado para o primeiro modo mais provável, e um índice de palavra-código mapeado para o segundo modo mais provável; e meios para a codificação de uma palavra- código a partir da tabela selecionada de palavras-código pela realização de um processo CABAC, em que a palavra- código corresponde a um dos índices de modo de intra- previsão modificados.
[0021] Em um exemplo, um meio de armazenamento legível por computador possuindo armazenadas, no mesmo, instruções que quando executadas fazem com que um ou mais processadores determinem um primeiro modo de intra-previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco atual de dados de vídeo com base em um contexto de codificação para o bloco atual; a seleção de uma tabela de palavras-código com base no contexto para o bloco atual, em que a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo aos índices de palavra-código, em que os índices de palavra- código são mapeados para os modos de intra-previsão; a codificação do bloco atual utilizando um dos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; a determinação de um índice de palavra-código modificado com base no índice de palavra-código de um dos modos de intra-previsão utilizados para codificar o bloco atual, um índice de palavra-código mapeado para o primeiro modo mais provável, e um índice de palavra-código mapeado para o segundo modo mais provável; e a codificação de uma palavra- código a partir da tabela selecionada de palavras-código pela realização de um processo CABAC, em que a palavra- código corresponde a um dos índices de modo de intra- previsão modificados.
[0022] 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 desenhos e a partir das reivindicações.
Breve Descrição dos Desenhos
[0023] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo ilustrativo que pode utilizar técnicas para a codificação de dados de sintaxe representativos de modos de intra-previsão para blocos de dados de vídeo;
[0024] A figura 2 é um diagrama em bloco ilustrando um exemplo de um codificador de vídeo que pode implementar técnicas para codificação de informação indicativa de um modo de intra-previsão;
[0025] A figura 3 ilustra um exemplo de modos de intra- previsão e índices de modo correspondentes;
[0026] A figura 4 é um diagrama em bloco ilustrando um exemplo de um decodificador de vídeo, que decodifica uma sequência de vídeo codificada;
[0027] A figura 5A é um diagrama em bloco ilustrando um exemplo de uma unidade de codificação aritmética binária adaptativa com base em contexto que pode ser utilizada de acordo com as técnicas descritas nessa descrição;
[0028] A figura 5B é um diagrama em bloco ilustrando um exemplo de uma unidade de decodificação aritmética binária adaptativa com base em contexto que pode ser utilizada de acordo com as técnicas descritas nessa descrição;
[0029] A figura 6 é um fluxograma ilustrando um método ilustrativo para a codificação intra-previsão de um bloco de dados de vídeo;
[0030] As figuras 7A e 7B são fluxogramas ilustrando métodos ilustrativos para seleção de uma palavra-código indicativa de um modo de intra-previsão para um bloco codificado;
[0031] A figura 8 é um fluxograma ilustrando um método ilustrativo para a decodificação intra-previsão de um bloco de dados de vídeo;
[0032] As figuras 9A e 8B são fluxogramas ilustrando métodos ilustrativos para a determinação de um modo de intra-previsão para um bloco utilizando uma palavra-código recebida indicativa do modo de intra-previsão para um bloco codificado;
[0033] A figura 10 é um diagrama conceitual ilustrando um exemplo configurado de dados de configuração, que indica as relações entre uma tabela de índice de modo de intra- previsão, uma tabela de índice de modo de intra-previsão modificada, e dados de contexto.
Descrição Detalhada da Invenção
[0034] Em geral, essa descrição descreve técnicas para sinalização de características de codificação para dados de vídeo codificados, e mais particularmente, essa descrição descreve a utilização de um processo de codificação aritmética binária com base em contexto (CABAC) para sinalizar os modos de intra-previsão para um decodificador de vídeo. As técnicas dessa descrição podem aperfeiçoar a eficiência para sinalização de um modo de intra-previsão utilizado para intra-codificar um bloco de dados de vídeo. Um codificador de vídeo, por exemplo, pode incluir dados de configuração que indicam os índices para os modos de intra- previsão com base nos contextos de codificação para os blocos codificados utilizando os vários modos de intra- previsão. Os contextos de codificação podem incluir, por exemplo, modos de codificação para blocos codificados anteriormente vizinhos e/ou tamanhos de bloco.
[0035] Os dados de codificação podem ser utilizados para definir um modo de intra-previsão mais provável para cada contexto ou podem definir dois ou mais modos de intra- previsão mais prováveis para cada contexto. Esses modos de intra-previsão mais prováveis podem algumas vezes nessa descrição ser referidos simplesmente como modos mais prováveis. Os dados de configuração podem definir também uma tabela de mapeamento para uso na codificação de dados de sintaxe descrevendo o modo de intra-previsão para modos além dos modos mais prováveis em um determinado contexto. Em particular, a tabela de mapeamento pode incluir um mapeamento de índices para palavras-código. Como será descrito em maiores detalhes abaixo, a tabela de mapeamento pode mapear índices de modo de intra-previsão modificados para palavras-código, ou podem mapear os índices de modo de intra-previsão para índices de palavra-código que são então ajustados em índices de palavra-código modificados.
[0036] De acordo, o codificador de vídeo pode ser configurado para determinar um contexto de codificação para um bloco a ser codificado pelo modo de intra-previsão. O contexto de codificação pode ser relacionado com um modo de intra-previsão mais provável, além de probabilidades de outros modos de intra-previsão. Quando o modo de intra- previsão mais provável é selecionado para uso na codificação e um bloco atual, o codificador de vídeo pode selecionar uma palavra-código de um bit (por exemplo, ‘1’) para indicar que o bloco é codificado no modo mais provável para o contexto em que o bloco ocorre. Em casos nos quais mais de um modo de intra-previsão mais provável é utilizado, um primeiro bit pode indicar se um dos modos de intra-previsão mais prováveis é selecionado para uso n a codificação de um bloco atual, e se um dos modos de intra- previsão mais prováveis for utilizado, então um segundo bit (ou série de bits) pode indicar qual dos modos de intra- previsão mais provável é selecionado. Nos momentos por toda essa descrição, a combinação desse primeiro bit e se um segundo bit pode ser referida como uma palavra-código, com o primeiro bit da palavra-código sinalizando que um modo de intra-previsão selecionado é um dos modos de intra-previsão mais prováveis, e o segundo bit (ou série de bits) identificando qual dos modos de intra-previsão mais prováveis. De acordo com as técnicas dessa descrição, uma palavra-código indicando se um modo selecionado é um modo mais provável e qual dos modos mais prováveis o modo selecionado é pode ser codificada utilizando um processo CABAC como descrito nessa descrição. Adicionalmente, em alguns casos, os bits utilizados para sinalização dos modos mais prováveis em conjunto com uma palavra-código identificando um modo não mais provável podem ser tratados em conjunto como uma palavra-código e codificados utilizando um processo CABAC como descrito nessa descrição.
[0037] Cada um dos outros modos de intra-previsão (isso é, os modos de intra-previsão além dos modos de intra- previsão mais prováveis) também pode receber um valor de índice modificado, com base no contexto de codificação. Ademais, o contexto de codificação pode corresponder adicionalmente a uma tabela possuindo um conjunto de palavras-código indexadas pelos valores de índice relacionados com os índices para os modos de intra- previsão. Em particular, como discutido acima, o valor de índice para os modos de intra-previsão mais prováveis não precisa receber outra palavra-código, além de uma palavra de único bit (ou possivelmente maior) representando que o modo de intra-previsão mais provável foi selecionado. Para mapear uma palavra-código para cada modo de intra-previsão restante, o índice de cada modo de intra-previsão restante pode ser modificado primeiro para excluir esses modos mais preferíveis originalmente alocados. De acordo, os índices de modo de intra-previsão modificados podem ser iguais aos índices de modo de intra-previsão que são menores do que o índice de modo para o modo mais provável. Por outro lado, quando é utilizado um modo mais provável, os índices de modo de intra-previsão modificados podem ser uma vez menor que os índices de modo de intra-previsão para os índices de modo de intra-previsão que são maiores do que o índice par ao modo mais provável. Dessa forma, pode haver uma palavra- código menor que os modos de intra-previsão, e as palavras- código podem ser mapeadas para os modos de intra-previsão com base no contexto de codificação. Quando é utilizado mais de um modo de intra-previsão mais provável, pode haver duas ou mais palavras-código menor na tabela de palavra- código do que os modos de intra-previsão, e as palavras- código podem da mesma forma ser mapeadas para os modos de intra-previsão com base no contexto de codificação. A palavra-código pode ser codificada utilizando-se um processo CABAC.
[0038] Um decodificador de vídeo pode ser configurado de maneira similar, por exemplo, para realizar técnicas similares quando é determinado um modo de intra-previsão para um bloco codificado. De acordo com as técnicas dessa descrição, um decodificador de vídeo pode receber dados para um bloco codificado, além de uma palavra-código indicativa de um modo de intra-previsão para uso na decodificação do bloco codificado. O decodificador de vídeo pode receber e decodificar a palavra-código pela realização de um processo CABAC que é geralmente a alternância do processo CABAC realizado pelo codificador de vídeo. O decodificador de vídeo pode determinar um contexto para o bloco de forma similar ao um codificador de vídeo. Com base no contexto, o decodificador de vídeo pode determinar um modo de intra-previsão mais provável ou modos para o bloco. Quando é utilizado um modo de intra-previsão mais provável, um único bit pode ser decodificado para determinar se o modo mais provável é selecionado. SE o único bit indicar que o modo mais provável é selecionado, o decodificador de vídeo pode decodificar o bloco utilizando o modo de intra- previsão mais provável. Do contrário, o decodificador de vídeo pode se referir ao índice de modo de intra-previsão modificado mapeado para a palavra-código recebida. Se o índice de modo de intra-previsão modificado for maior que ou igual ao índice de modo para o modo de intra-previsão mais provável, o decodificador de vídeo pode decodificar o bloco utilizando o modo de intra-previsão mapeado em um índice de modo que é uma vez maior que o índice de modo de intra-previsão modificado. Se o índice de modo de intra- previsão modificado for menor que o índice de modo para o modo de intra-previsão mais provável, o decodificador de vídeo pode decodificar o bloco utilizando o modo de intra- previsão mapeado para um índice de modo que é igual ao índice de modo de intra-previsão modificado.
[0039] De forma similar, quando são utilizados dois modos de codificação de intra-previsão mais prováveis, se o primeiro bit ou série de bits indicarem que o modo de intra-previsão selecionado é um dentre os modos de intra- previsão mais prováveis, então o decodificador de vídeo pode decodificar o bloco utilizando o modo de intra- previsão mais provável identificado por um segundo bit. Do contrário, o decodificador de vide pode se referir ao índice de modo de intra-previsão modificado mapeado em palavra-código recebida. Se o índice de modo de intra- previsão modificado for menor que o índice de modo para o primeiro modo de intra-previsão mais provável, o decodificador de vídeo pode decodificar o bloco utilizando o modo de intra-previsão mapeado para um índice de modo que é igual ao índice de modo de intra-previsão modificado. Do contrário, se o índice de modo de intra-previsão modificado mais um for menor que o índice de modo para o segundo modo de intra-previsão mais provável, então o decodificador de vídeo pode decodificar o bloco utilizando o modo de intra- previsão mapeado para um índice de modo que é uma vez maior que o índice de modo de intra-previsão modificado. Do contrário, o decodificador de vídeo pode decodificar o bloco utilizando o modo de intra-previsão mapeado para um índice de modo que é duas vezes maior que o índice de modo de intra-previsão modificado, e assim por diante.
[0040] As frases “primeiro mais provável” e “segundo mais provável” são geralmente utilizadas nessa descrição para fazer referência a dois modos de intra-previsão mais prováveis separados, e não devem implicar em uma similaridade relativa de dois modos de intra-previsão. Como será explicado posteriormente através de exemplos, no entanto, pode ser geralmente considerado que, para fins de explicação nessa descrição, o primeiro modo de intra- previsão mais provável possui um valor de índice de modo correspondente menor que o segundo modo de intra-previsão mais provável. Dessa forma, se um valor de índice de modo de intra-previsão modificado for considerado menor que o índice de modo para um primeiro modo mais provável, pode-se assumir que o valor de índice de modo de intra-previsão modificado também é menor que o índice de modo para um segundo modo de intra-previsão mais provável, terceiro modo de intra-previsão mais provável, e assim por diante.
[0041] As técnicas dessa descrição podem ser estendidas às implementações que utilizam mais de dois modos de intra- previsão mais prováveis. Por exemplo, considerando-se que existam N modos de intra-previsão mais prováveis, um primeiro bit ou série de bits pode indicar se o modo de intra-previsão selecionado é um dos N modos de intra- previsão mais prováveis. Se o modo de intra-previsão selecionado for um dos N modos de intra-previsão mais prováveis, então uma segunda série de bits pode identificar quais dos N modos de intra-previsão mais prováveis é o modo de intra-previsão selecionado. Por exemplo, utilizando-se três modos mais prováveis, dois bits podem ser utilizados para sinalizar se o modo de intra-previsão selecionado é um dos modos mais prováveis como se segue: sinalizar um “00” para indicar que o primeiro modo mais provável é utilizado; sinalizar um “01” para indicar que o segundo modo mais provável é utilizado; sinalizar um “10” para indicar que o terceiro modo mais provável é utilizado. Se nenhum dos modos mais prováveis for utilizado, uma palavra-código adicional pode ser utilizada para sinalizar o modo de intra-previsão selecionado.
[0042] Em alguns casos, os modos de intra-previsão mais prováveis podem ser sinalizados em um ou mais grupos, em que um primeiro bit ou série de bits sinaliza se o modo de intra-previsão mais provável é de um primeiro grupo. Se o modo de intra-previsão selecionado não for de um primeiro grupo, então, bits subsequentes podem sinalizar se é de um segundo grupo, e assim por diante.
[0043] Se, por exemplo, cinco modos mais prováveis forem utilizados, então um primeiro bit ou série de bits deve sinalizar se o modo de intra-previsão selecionado é de um primeiro grupo de dois modos de intra-previsão mais prováveis. Se o modo selecionado for um dos dois, então um segundo bit pode identificar qual dos dois é o modo selecionado. Se o modo selecionado não for um dos dois, então um segundo grupo de bits pode identificar o modo selecionado. Se, por exemplo, o segundo grupo de bits incluir dois bits, então uma primeira combinação de bits (por exemplo, 00) pode indicar que o modo selecionado é um terceiro modo mais provável, uma segunda combinação de bits (por exemplo, 01) pode indicar que o modo selecionado é um quarto modo mais provável, e uma terceira combinação de bits (por exemplo, 10) pode indicar que o modo selecionado é um quinto modo mais provável. Se o modo selecionado for um dos cinco modos de intra-previsão mais prováveis, então o decodificador pode decodificar o bloco utilizando o modo mais provável. Uma quarta combinação de bit (por exemplo, 11) pode indicar que o modo selecionado não é um dos cinco modos mais prováveis, caso em que a quarta combinação de bits pode ser seguida por bits subsequentes identificando o modo selecionado de acordo com as técnicas descritas nessa descrição.
[0044] Em casos nos quais um modo selecionado não é um modo mais provável, o decodificador de vídeo pode se referir ao índice de modo de intra-previsão modificado mapeado para a palavra-código recebida. Para fins de exemplo, pode-se assumir que um primeiro modo de intra- previsão mais provável possui um valor de índice de modo correspondente menor que um segundo modo de intra-previsão mais provável, e o segundo possui um índice menor que o terceiro e assim por diante. De acordo com as técnicas dessa descrição, se o índice de modo de intra-previsão modificado for menor que o índice de modo para o primeiro modo de intra-previsão mais provável, o decodificador de vídeo pode decodificar o bloco utilizando o modo de intra- previsão mapeado para um índice de modo que é igual ao índice de modo de intra-previsão modificado. Do contrário, se o índice de modo de intra-previsão modificado mais um for menor que o índice de modo para o segundo modo de intra-previsão mais provável, então o decodificador de vídeo pode decodificar o bloco utilizando o modo de intra- previsão mapeado para um índice de modo que é uma vez maior que o índice de modo de intra-previsão modificado. Do contrário, se o índice de modo de intra-previsão modificado mais dois for menor que o índice de modo para o terceiro modo de intra-previsão mais provável, então o decodificador de vídeo pode decodificar o bloco utilizando o modo de intra-previsão mapeado para um índice de modo que é duas vezes maior que o índice de modo de intra-previsão modificado, e assim por diante. Como será explicado em maiores detalhes abaixo, o índice de modo de intra-previsão modificado pode não incluir os registros para os modos mais prováveis, que é porque o índice de modo de intra-previsão pode ser mapeado para o índice de modo de intra-previsão modificado mais um, o índice de modo de intra-previsão modificado mais dois, etc., dependendo do índice de modo dos modos mais prováveis.
[0045] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo ilustrativo 10 que pode utilizar técnicas para a codificação de dados de sintaxe representativos dos modos de intra-previsão para os blocos de dados de vídeo. Como ilustrado na figura 1, o sistema 10 inclui um dispositivo fonte 12 que transmite vídeo codificado para um dispositivo de destino 14 através de um canal de comunicação 16. O dispositivo fonte 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla faixa de dispositivos. Em alguns casos, o dispositivo fonte 12 e o dispositivo de destino 14 podem compreender dispositivos de comunicação sem fio, tal como aparelhos sem fio, chamados radio telefones celulares ou via satélite ou quaisquer dispositivos sem fio que possam comunicar informação de vídeo através de um canal de comunicação 16, caso em que o canal de comunicação 16 é sem fio.
[0046] As técnicas dessa descrição, no entanto, que se referem à codificação dos dados de sintaxe representativos dos modos de intra-previsão para os blocos de dados de vídeo, não são necessariamente limitadas a aplicativos ou configurações sem fio. Por exemplo, essas técnicas podem se aplicar a difusões de televisão aéreas, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões de vídeo pela Internet, vídeo digital codificado que é codificado em um meio de armazenamento, e outras situações. De acordo, o canal de comunicação 16 pode compreender qualquer combinação de mídia sem fio ou com fio adequada para transmissão de dados de vídeo codificados. Ademais, o canal de comunicação 16 deve representar apenas uma das muitas formas nas quais um dispositivo de codificação de vídeo pode transmitir dados para um dispositivo de decodificação de vídeo. Por exemplo, em outras configurações do sistema 10, o dispositivo fonte 12 deve gerar vídeo codificado para decodificação pelo dispositivo de destino 14 e armazenar o vídeo codificado em um meio de armazenamento ou um servidor de arquivo, de modo que o vídeo codificado possa ser acessado pelo dispositivo de destino 14 como desejado.
[0047] No exemplo da figura 1, o dispositivo fonte 12 inclui uma fonte de vídeo 18, codificador de vídeo 20, um modulador/demodulador (modem) 22 e um transmissor 24. O dispositivo de destino 14 inclui um receptor 26, um modem 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. De acordo com essa descrição, o codificador de vídeo 20 do dispositivo fonte 12 pode ser configurado para aplicar as técnicas para codificação de dados de sintaxe representativos dos modos de intra-previsão para os blocos de dados de vídeo. Em outros exemplos, um dispositivo fonte e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo fonte 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, tal como uma câmera externa. Da mesma forma, o dispositivo de destino 14 pode interfacear com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado.
[0048] O sistema ilustrado 10 da figura 1 é meramente um exemplo. As técnicas para codificação de dados de sintaxe representativos dos modos de intra-previsão para blocos de dados de vídeo podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Apesar de geralmente as técnicas dessa descrição serem realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador/decodificador de vídeo, tipicamente referido como um “CODEC”. Ademais, as técnicas dessa descrição também podem ser realizadas por um processador de vídeo. O dispositivo fonte 12 e o dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo fonte 12 gera dados de vídeo codificados para a transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 incluem componentes de codificação e decodificação de vídeo. Dessa forma, o sistema 10 pode suportar a transmissão de vídeo de uma via ou duas vias entre os dispositivos de vídeo 12, 14, por exemplo, para o sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo ou vídeo telefonia.
[0049] A fonte de vídeo 18 do dispositivo de fonte 12 pode incluir um dispositivo de captura de vídeo, tal com uma câmera de vídeo, um arquivo de vídeo contendo vídeo previamente capturado e/ou uma alimentação de vídeo de um provedor de conteúdo e vídeo. Como uma alternativa, a fonte de vídeo 18 pode gerar dados com base em gráficos de computador como o vídeo fonte, ou uma combinação de vídeo ao vivo, vídeo arquivado, e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo fonte 12 e o dispositivo de destino 14 podem formar os chamados telefones de câmera ou vídeo telefones. Como mencionado acima, no entanto, as técnicas descritas nessa descrição podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações sem fio e/ou com fio. Em cada caso, o vídeo capturado, pré-capturado, ou gerado por computador pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificada pode então ser modulada pelo modem 22 de acordo com um padrão de comunicação, e transmitida para o dispositivo de destino 14 através do transmissor 24. O modem 22 pode incluir vários misturadores, filtros, amplificadores ou outros componentes projetados para a modulação de sinal. O transmissor 24 pode incluir circuitos projetados para a transmissão de dados, incluindo amplificadores, filtros e uma ou mais antenas.
[0050] O receptor 26 do dispositivo de destino 14 receber informação através de canal 6, e o modem 28 demodula a informação. Novamente, o processo de codificação de vídeo pode implementar uma ou mais das técnicas descritas aqui para codificação de dados de sintaxe representativos de modos de intra-previsão para blocos de dados de vídeo. A informação comunicada através do canal 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, que também é utilizada pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem as características e/ou processamento de macro blocos e outras unidades codificadas, por exemplo, GOPs. 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 tubo de raio catodo (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0051] No exemplo da figura 1, o canal de comunicação 16 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, ou qualquer combinação de mídia sem ou com fio. O canal de comunicação 16 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 canal de comunicação 16 geralmente representa qualquer meio de comunicação adequado, ou coleção de meios de comunicação diferentes, para transmissão de dados de vídeo do dispositivo fonte 12 para o dispositivo de destino 14, incluindo qualquer combinação adequada de mídia com ou sem fio. O canal de comunicação 16 pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo fonte 12 para o dispositivo de destino 14.
[0052] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, tal como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC). As técnicas dessa descrição, no entanto, não estão limitadas a qualquer padrão de codificação em particular. Outros exemplos incluem MPEG-2 e ITU-T H.263. 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 com 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, 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).
[0053] O padrão ITU-T H.264/MPEG-4 (AVC) foi formulado pelo Grupo de Especialistas de Codificação de Vídeo ITU-T (VCEG) juntamente com o Grupo de Especialistas em Imagem em Movimento ISSO/IEC (MPEG) como o produto de uma parceira coletiva conhecida como Equipe de Vídeo Conjunta (JVT). Em alguns aspectos, as técnicas descritas nessa descrição podem ser aplicadas aos dispositivos que se conformam geralmente ao padrão H.264. O padrão H.264 é descrito na Recomendação ITU-T H.264, Codificação de Vídeo Avançada para serviços audiovisuais genéricos, pelo Grupo de Estudo ITU-T, e datado de março de 2005, que pode ser referido aqui como padrão H.264 ou especificação H.264, ou o padrão ou especificação H.264/AVC. A Equipe de Vídeo Conjunta (JVT) continua a trabalhar na extensão para H.264/MPEG-4 AVC.
[0054] 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 circuito de 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 qualquer combinações dos mesmos. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em uma câmera, computador, dispositivo móvel, dispositivo de assinante, dispositivo de difusão, caixa de decodificação respectivo, ou similares.
[0055] Uma sequência de vídeo inclui tipicamente uma série de quadros de vídeo. Um grupo de imagens (GOP) geralmente compreende uma série de um ou mais quadros de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de um ou mais quadros do GOP, ou em outro lugar, que descreva um número de quadros incluídos no GOP. Cada quadro pode incluir dados de sintaxe de quadro que descrevem um modo de codificação para o quadro respectivo. O codificador de vídeo 20 opera tipicamente em blocos de vídeo dentro dos quadros de vídeo individuais a fim de codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um macro bloco ou a uma partição de um macro bloco. Os blocos de vídeo podem possuir tamanhos fixos ou variáveis, e podem diferir em tamanho de acordo com um padrão de codificação especificado. Cada quadro de vídeo pode incluir uma pluralidade de fatias. Cada fatia pode incluir uma pluralidade de macro blocos, que podem ser dispostos dentro da partição, também referidos como sub- blocos.
[0056] Como um exemplo, o padrão ITU-T H.264 suporta a intra-previsão em vários tamanhos de bloco, tal como 16 x 16, 8 x 8, 4 x 4 para componentes de luminescência e 8 x 8 para componentes de croma, além de inter-previsão em vários tamanhos de bloco, tal como 16 x 16, 16 x 8, 8 x 16, 8 x 8, 8 x 4, 4 x 8 e 4 x 4 para componentes de luminescência e tamanhos escalonados correspondentes para componentes de croma. Nessa descrição, “NxN” e “N por N” podem ser utilizados de forma intercambiável para fazer referência às dimensões de pixel do bloco em termos de dimensões vertical e horizontal, por exemplo, pixels 16x16 ou pixels 16 por 16. Em geral, um bloco de 16x16 terá 16 pixels na direção vertical (y = 16) e 16 pixels na direção horizontal (x = 16). Da mesma forma, um bloco NxN geralmente terá N pixels em uma direção vertical e N pixels em 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 necessariamente possuir o mesmo número de pixels na direção horizontal que na direção vertical. Por exemplo, blocos podem compreender NxM pixels, onde M não é necessariamente igual a N. Os tamanhos de bloco que são menores que a 16x16 podem se referidos como partições de um macro bloco de 16x16 em ITU-T H.264.
[0057] Os blocos de vídeo podem compreender blocos de dados de pixel no domínio de pixel, ou blocos de coeficientes de transformação no domínio de transformação, por exemplo, seguindo a aplicação de uma transformação tal como a transformação de cosseno discreto (DCT), uma transformação de inteiro, uma transformação de wavelet, ou uma transformação conceitualmente similar aos dados de bloco de vídeo residuais que representam as diferenças de pixel entre os blocos de vídeo codificados e os blocos de vídeo de previsão. Em alguns casos, um bloco de vídeo pode compreender blocos de coeficientes de transformação quantizados no domínio de transformação.
[0058] Blocos de vídeo menores podem fornecer uma melhor resolução, e podem ser utilizados para locais de um quadro de vídeo que incluem níveis mais altos de detalhamento. Em geral, os macro blocos e as várias partições, algumas vezes referidas como sub-blocos, podem ser considerados blocos de vídeo. Adicionalmente, uma fatia pode ser considerada como sendo uma pluralidade de blocos de vídeo, tal como macro blocos e/ou sub-blocos. Cada fatia pode ser uma unidade descodificável independentemente de um quadro de vídeo. Alternativamente, os quadros propriamente ditos podem ser unidades decodificáveis, ou outras partes de um quadro podem ser definidas como unidades decodificáveis. O termo “unidade codificada” pode fazer referência a qualquer unidade descodificável independentemente de um quadro de vídeo tal como todo um quadro, uma fatia de um quadro, um grupo de imagens (GOP) também referido como uma sequência, ou outra unidade que possa ser decodificada independentemente definida de acordo com as técnicas de codificação aplicáveis.
[0059] Esforços estão atualmente em andamento no sentido de se desenvolver um novo padrão de codificação de vídeo, atualmente referido como Codificação de Vídeo de Alta Eficiência (HEVC). O padrão HEVC emergente também pode ser referido como H.265. Os esforços de padronização são baseados em um modelo de um dispositivo de codificação de vídeo referido como Modelo de Teste HEVC (HM). O HM presume várias capacidades de dispositivos de codificação de vídeo através dos dispositivos de acordo com, por exemplo, ITU-T H.264/AVC. Por exemplo, ao passo que H.264 fornece nove modos de intra-previsão, HM fornece tanto quando trinta e três modos de intra-previsão, por exemplo, com base no tamanho de um bloco sendo codificado por intra-previsão.
[0060] HM se refere a um bloco de dados de vídeo como uma unidade de codificação (CU). Os dados de sintaxe dentro de um fluxo de bits podem definir uma unidade de codificação maior (LCU) que é uma unidade de codificação maior em termos de número de pixels. Em geral, uma CU possui uma finalidade similar a um macro bloco de H.264, exceto que uma CU não possui uma distinção de tamanho. Dessa forma, uma CU pode ser dividida em sub-CUs. Em geral, referências nessa descrição a uma CU podem fazer referência a uma unidade de codificação maior de uma imagem ou uma sub-CU de uma LCU. Uma LCU pode ser dividida em sub-CUs, e cada sub-CU pode ser dividida em sub-CUs. Os dados de sintaxe para um fluxo de bits pode definir um número máximo de vezes em que uma LCU pode ser dividida, com referência à profundidade de CU. De acordo, um fluxo de bits também pode definir uma unidade de codificação menor (SCU). Essa descrição também utiliza o termo “bloco” para fazer referência a qualquer uma dentre uma CU, uma unidade de previsão (PU), ou uma unidade de transformação (TU).
[0061] Uma LCU pode ser associada com uma estrutura de dados quadtree. Em geral, uma estrutura de dados quadtree inclui um nó por CU, onde um nó raiz corresponde à LCU. Se uma CU for dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro nós folha, cada um dos quais corresponde a uma das sub-CUs. Cada nó da estrutura de dados de quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó na quadtree pode incluir um indicador de divisão, indicando se a CU correspondente ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender de se a CU é dividida em sub-CUs.
[0062] Uma CU que não é dividida pode incluir uma ou mais unidades de previsão (PUs). Em geral, uma PU representa toda ou uma parte da CU correspondente, e inclui dados para a recuperação de uma amostra de referência para a PU. Por exemplo, quando a PU é codificada pelo modo de intra-previsão, a PU pode incluir dados descrevendo um modo de intra-previsão para a PU. Como outro exemplo, quando a PU é codificada pelo intermodo, a PU pode incluir dados definindo um vetor de movimento para a PU. Os dados que definem o vetor de movimento 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, uma precisão de um quarto de pixel ou uma precisão de um oitavo de pixel), um quadro de referência para o qual o vetor de movimento aponta, e/ou uma lista de referência (por exemplo, lista 0 ou lista 1) para o vetor de movimento. Os dados para a CU definindo as PU(s) também podem descrever, por exemplo, a divisão da CU em uma ou mais PUs. Os modos de divisão podem diferir entre se a CU não está codificada, codificada pelo modo de intra-previsão, ou codificada pelo modo de inter- previsão.
[0063] Uma CU possuindo uma ou mais PUs também pode incluir uma ou mais unidades de transformação (TUs). Seguindo a previsão utilizando uma PU, um codificador de vídeo pode calcular um valor residual para a parte da CU correspondente à PU. Um conjunto de valores residuais pode ser transformado, digitalizado e quantizado para definir um conjunto de coeficientes de transformação. A TU define uma estrutura de dados que inclui os coeficientes de transformação. Uma TU não é necessariamente limitada ao tamanho de uma PU. Dessa forma, TUs podem ser maiores ou menores do que as PUs correspondentes para a mesma CU. Em alguns exemplos, o tamanho máximo de uma TU pode corresponder ao tamanho da CU correspondente.
[0064] De acordo com as técnicas dessa descrição, o codificador de vídeo 20 pode codificar determinados blocos de dados de vídeo utilizando a codificação de modo de intra-previsão, e fornecer informação indicando um modo de intra-previsão selecionado utilizado para codificar o bloco. O codificador de vídeo 20 pode codificar por intra- previsão os blocos de qualquer tipo de quadro ou fatia utilizando um modo de intra-previsão, por exemplo, quadros I ou fatias I, em adição a quadros P ou fatias P e quadros B ou fatias B. Quando o codificador de vídeo 20 determina que um bloco deve ser codificado por modo de intra- previsão, o codificador de vídeo 20 pode realizar uma análise de distorção de taxa para selecionar um modo de intra-previsão mais adequado. Por exemplo, o codificador de vídeo 20 pode calcular valores de distorção de taxa para um ou mais modos de intra-previsão, e selecionar um dos modos possuindo características de distorção de taxa aceitáveis.
[0065] O codificador de vídeo 20 também pode ser configurado para determinar um contexto de codificação para o bloco. O contexto pode incluir várias características do bloco tal como, por exemplo, um tamanho de bloco, que pode ser determinado em termos de dimensões de pixel, tipo de unidade de previsão (PU) tal como, no exemplo de HEVC, 2Nx2N, Nx2N, 2NxN, NsN, tipos de intra-previsão de curta distância (SDIP) tal como 2NxN/2, N/2x2N, 2Nx1, 1x2N, um tipo de macro bloco no exemplo de H.264, uma profundidade de unidade de codificação (CU) para o bloco, ou outras medições de tamanho para um bloco de dados de vídeo. Em alguns exemplos, o contexto pode corresponder a como qualquer um ou toros os modos de intra-previsão para um bloco vizinho acima, um bloco vizinho à esquerda, um bloco vizinho acima e à esquerda, um bloco vizinho acima à direita, ou outros blocos vizinhos. Em alguns exemplos, o contexto pode incluir ambos os modos de intra-previsão para um ou mais blocos além da informação de tamanho para o bloco atual sendo codificado.
[0066] Em qualquer caso, o decodificador de vídeo 20 pode incluir dados de configuração que mapeiam o contexto para o bloco para várias características de codificação para o bloco atual. Por exemplo, com base no contexto para o bloco, os dados de configuração podem indicar um ou mais modos de intra-previsão mais prováveis, uma tabela de índice de modo de intra-previsão, e uma tabela de mapeamento. Isso é, os dados de configuração podem incluir uma pluralidade de tabelas de índice de modo de intra- previsão e tabelas de mapeamento, além de uma indicação de uma dentre uma pluralidade de tabelas de índice de modo de intra-previsão e uma das tabelas de mapeamento para uso na codificação de uma indicação de um modo de intra-previsão para um bloco atual com base no contexto de codificação para o bloco atual. Os dados de configuração podem fornecer adicionalmente uma indicação de um ou mais dos modos mais prováveis para o bloco atual com base no contexto de codificação. O número de modos de intra-previsão mais prováveis utilizado pode ser fixo de modo que um modo de intra-previsão mais provável seja sempre utilizado, dois modos de intra-previsão mais prováveis sejam sempre utilizados, três modos de intra-previsão mais prováveis sejam sempre utilizados, e assim por diante, ou alternativamente, o número de modos de intra-previsão mais prováveis podem ser dependentes de contexto, de modo que alguns contextos utilizem um modo de intra-previsão mais provável enquanto outros contextos utilizam dois ou mais modos de intra-previsão mais provável.
[0067] A tabela de índice de modo pode incluir um conjunto de modos de intra-previsão além de índices mapeados para cada um dos modos de intra-previsão. Em alguns exemplos, o número de modos de intra-previsão disponíveis pode depender do tamanho do bloco sendo codificado, e, portanto, a pluralidade de tabelas de índice de modo de intra-previsão e as tabelas de mapeamento podem ter números diferentes de registros, dependendo, por exemplo, de um tamanho do bloco sendo codificado e/ou outros fatores. Pode haver uma relação de um para muitos entre as tabelas de mapeamento e as tabelas de índice de modo de intra-previsão nos dados de configuração. Isso é, a mesma tabela de mapeamento pode ser utilizada para codificar os modos de intra-previsão selecionados a partir de uma ou mais tabelas de índice de modo de intra-previsão. Dessa forma, as tabelas de mapeamento podem ser reutilizadas para múltiplas tabelas de índice de modo de intra-previsão. Da mesma forma, as mesmas tabelas de índice de modo de intra-previsão podem ser reutilizadas em uma variedade de contextos, por exemplo, quando dois ou mais contextos compartilham o mesmo conjunto de modos de intra- previsão e probabilidades relativas similares ou idênticas de modos de intra-previsão serem utilizados nesses contextos. Ademais, em alguns casos, a mesma tabela de índice de modo de intra-previsão e tabela de mapeamento pode ser utilizada para todos os blocos de um tamanho particular, e o modo de intra-previsão mais provável pode ser determinado com base em, por exemplo, modos de intra- previsão para blocos vizinhos para um bloco do tamanho particular.
[0068] Em qualquer caso, de acordo com as técnicas dessa descrição, o codificador de vídeo 20 pode determinar um ou mais modos mais prováveis para um bloco, com base em um contexto de codificação para o bloco, além de uma tabela de índice de modo de intra-previsão e uma tabela de mapeamento com base no contexto de codificação para o bloco. Depois da seleção do modo de intra-previsão para uso na codificação do bloco, o codificador de vídeo 20 pode determinar se o modo de intra-previsão selecionado é um dentre os modos de intra-previsão mais prováveis para o bloco. Se o modo selecionado for um dos modos mais prováveis, o codificador de vídeo 20 pode sinalizar o modo de intra-previsão utilizando uma palavra-código de bit único (por exemplo, ‘0’, ou ‘1’) ou uma palavra-código consistindo de uma série de bits.
[0069] Ademais, o modo de intra-previsão mais provável pode ter um valor de índice na tabela de índice de modo de intra-previsão selecionada para o bloco com base no contexto de codificação do bloco. Em particular, a tabela de índice de modo de intra-previsão pode incluir um valor de índice singular para cada modo de intra-previsão na tabela. Considere-se m como representando o valor do índice para o modo de intra-previsão mais provável. Visto que a palavra-código para o modo de intra-previsão mais provável pode ser sinalizada separadamente, a tabela de mapeamento não precisa incluir uma palavra-código adicional para o modo de intra-previsão mais provável. Dessa forma, se o conjunto de modos de intra-previsão disponíveis possuir K + 1 elementos mapeados para uma faixa de índices variando de 0 para K, a tabela de mapeamento pode designar K palavras- código para os índices 0 a K-1.
[0070] Para se determinar uma palavra-código de acordo com esse esquema ilustrativo, supõe-se que o modo de intra- previsão selecionado não seja o modo de intra-previsão mais provável, e tenha um valor de índice de modo de j. Deixemos o valor n representar o índice do modo de intra-previsão modificado correspondente a j. De acordo com a descrição anterior, a palavra-código que é mapeada para o índice n é sinalizada do codificador para o decodificador para indicar o modo intra-previsão selecionado j. Se o valor de índice de modo para o modo de intra-previsão selecionado for menor que o valor de índice de modo do modo de intra-previsão mais provável, então o codificador de vídeo 20 pode codificar a indicação do modo de intra-previsão utilizado para codificar o bloco atual utilizando a palavra-código correspondente a j. Em outras palavras, se j < m, então n = j. Por outro lado, se o valor de índice de modo para o modo de intra-previsão selecionado for maior que ou igual ao valor de índice de modo do modo de intra-previsão mais provável, então o codificador de vídeo 20 pode codificar a indicação do modo de intra-previsão utilizado para codificar o bloco atual utilizando a palavra-código correspondente a j-1. Em outras palavras, se j > m, então n= j-1.
[0071] Em casos nos quais mais de um modo de intra- previsão mais provável é selecionado, o codificador de vídeo 20 pode sinalizar no fluxo de bits codificado se o modo selecionado é um dos modos de intra-previsão mais prováveis determinados utilizando um primeiro bit (por exemplo, ‘0’ ou ‘1’) ou uma série de bits. Se o modo selecionado for um dos modos de intra-previsão mais prováveis determinados, então o codificador de vídeo 20 pode sinalizar qual dos modos de intra-previsão mais prováveis é o modo selecionado utilizando um segundo bit. Se o modo selecionado não for um dos modos de intra- previsão mais prováveis determinados, então o codificador de vídeo 20 pode sinalizar qual dos outros modos de intra- previsão é o modo selecionado utilizando uma palavra-código de uma tabela de mapeamento. Considerando-se novamente sem uma perda de generalidade de que o primeiro bit tem um valor de “0” para indicar que o modo selecionado é um dos modos de intra-previsão mais prováveis e o codificador de 20 determinar dois modos de intra-previsão mais prováveis, então o codificador de vídeo 20 pode sinalizar qual dos dois modos de intra-previsão mais prováveis é o modo selecionado com um valor de “00” ou “01” onde o primeiro 0 representa o primeiro bit. Se o modo selecionado não for um dos modos de intra-previsão mais prováveis, então o codificador de vídeo 20 pode sinalizar o modo selecionado pela sinalização de um primeiro bit de “1” seguido por uma palavra-código.
[0072] Ademais, os dois modos de intra-previsão mais prováveis podem possuir valores de índice na tabela de índice de modo de intra-previsão selecionado para o bloco com base no contexto de codificação do bloco. Em particular, a tabela de índice de modo de intra-previsão pode incluir um valor de índice singular para cada modo de intra-previsão na tabela. Deixemos m1 representar o valor do índice para o primeiro modo de intra-previsão mais provável e m2 representar o valor de índice para o segundo modo de intra-previsão mais provável. Visto que a palavra- código para o primeiro modo de intra-previsão mais provável e o segundo modo mais provável pode ser sinalizada utilizando um primeiro bit e um segundo bit como descrito acima, a tabela de mapeamento não precisa incluir palavras- código adicionais para o primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável. Dessa forma, se o conjunto de modos de intra- previsão mais prováveis possuir K + 1 elementos mapeados em uma faixa de índices variando de 0 a K, a tabela de mapeamento pode designar K -1 palavras-código para os índices de 0 a K-2.
[0073] Para se determinar uma palavra-código de acordo com esse esquema ilustrativo onde dois modos mais prováveis são identificados, supõe-se que o modo de intra-previsão selecionado não seja um dos modos de intra-previsão mais prováveis, e possua um valor de índice de modo de j. Deixemos o valor n representar o modo de intra-previsão modificado correspondente a j. De acordo com a descrição anterior, a palavra-código que é mapeada para o índice n é sinalizada a partir do codificador para o decodificador para indicar o modo de intra-previsão selecionado j. SE o valor de índice de modo para o modo de intra-previsão selecionado for menor que o valor de índice de modo do primeiro modo de intra-previsão mais provável,a então o codificador de vídeo 20 pode codificar a indicação do modo de intra-previsão utilizado par codificar o bloco atual utilizando a palavra-código correspondente a j. Em outras palavras. se j < m1, então n = j. Por outro lado, se o valor de índice de modo para o modo de intra-previsão selecionado for maior que ou igual ao valor de índice de modo do primeiro modo de intra-previsão mais provável, mas menor que o segundo modo de intra-previsão mais provável, então o codificador de vídeo 20 pode codificar a indicação do modo de intra-previsão utilizado para codificar o bloco atual utilizando a palavra-código correspondente a j-1. Em outras palavras, se j > mi e j < m2, então n = j - 1. Finalmente, se o valor de índice de modo para o modo de intra-previsão selecionado for maior que o valor de índice de modo do primeiro modo de intra-previsão mais provável, e o segundo modo de intra-previsão mais provável, então o codificador de vídeo 20 pode codificar a indicação do modo de intra-previsão utilizado para codificar o bloco atual utilizando a palavra-código correspondente a j - 2. Em outra palavras, se j > m1 e j > m2, então n = j - 2. As tabelas de mapeamento para os modos de intra-previsão restantes podem ser construídas mais eficientemente pela nova designação de índices de modo a compensar o fato de que os modos mais prováveis não estão incluídos nas tabelas de mapeamento, que pode somar à economia de bit quando um ou mais modos mais prováveis não selecionados teriam palavras-código designadas.
[0074] O codificador de vídeo 20 pode, em algumas exemplos, ser configurado para iniciar a análise para a seleção de um modo intra-previsão com o modo mais provável, com base no contexto. Quando o modo mais provável alcança as características de distorção de taxa adequadas, em alguns exemplos, o codificador de vídeo 20 pode selecionar o modo mais provável. Em outros exemplos, o codificador de vídeo 20 não precisa começar o processo de seleção com o modo mais provável.
[0075] Seguindo a codificação intra-previsível ou inter- previsível para produzir os dados de previsão e os dados residuais, e seguindo quaisquer transformações (tal como transformação de inteiro 4x4 ou 8x8 utilizada em H.264/AVC ou uma transformação de cosseno discreto DCT) para produzir coeficientes de transformação, a quantização dos coeficientes de transformação podem ser realizados. A quantização geralmente se refere a um processo em que os coeficientes de transformação são quantizados para possivelmente reduzir a quantidade de dados utilizados para representar os coeficientes. 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.
[0076] Seguindo a quantização, a codificação por entropia dos dados quantizados pode ser realizada, por exemplo, de acordo com a codificação de comprimento variável adaptativa de conteúdo (CAVLC), codificação aritmética binária adaptativa de contexto (CABAC) ou outra metodologia de codificação por entropia. Uma unidade de processamento configurada para codificação por entropia, ou outra unidade de processamento, pode realizar outras funções de processamento, tal como codificação de comprimento de funcionamento zero de coeficientes quantizados e/ou geração de informação de sintaxe tal como valores de padrão de bloco codificados (CBP), tipo macro bloco, modo de codificação, tamanho máximo de macro bloco para uma unidade codificada (tal como um quadro, fatia, macro bloco ou sequência) e similares.
[0077] O decodificador de vídeo 30 pode, por fim, receber dados de vídeo codificados, por exemplo, do modem 28 e receptor 26. De acordo com as técnicas dessa descrição, o decodificador de vídeo 30 pode receber uma palavra-código representativa de um modo de intra-previsão utilizado para codificar um bloco de dados de vídeo. A palavra-código pode ser codificada pelo codificador de vídeo 20 utilizando um processo CABAC e pode ser decodificada pelo decodificador de vídeo 30 utilizando um processo CABAC alternado. O decodificador de vídeo 30 pode ser configurado para determinar um contexto de codificação para o bloco de uma forma substancialmente similar ao codificador de vídeo 20. Ademais, o decodificador de vídeo 30 pode incluir dados de configuração similares ao codificador de vídeo 20, por exemplo, indicações de um modo mais provável, uma tabela de índice de modo de intra- previsão, e uma tabela de mapeamento para cada contexto de codificação.
[0078] Quando é utilizado um modo de intra-previsão mais provável, um único bit pode ser utilizado para indicar se o modo de intra-previsão utilizado para codificar o bloco é o modo mais provável. Se o modo selecionado for determinado como não sendo o modo mais provável, então o decodificador de vídeo 30 pode determinar o modo de intra-previsão utilizado para codificar o bloco de dados de vídeo de uma forma geralmente alternada desse codificador de vídeo 20.
[0079] Especificamente, novamente deixemos n representar o índice do modo de intra-previsão modificado à qual uma palavra-código recebida na tabela de mapeamento é mapeada, j representa o índice de modo do modo de intra-previsão a ser utilizado para decodificar o bloco codificado e m representa o índice de modo do modo mais provável. Se o índice de modo de intra-previsão modificado n for menor que o índice de modo do modo mais provável m, então o decodificador de vídeo 30 pode decodificar o bloco codificado utilizando o modo de intra-previsão possuindo índice n. Isso é, se n < m, então j - n. Por outro lado, se o índice de modo de intra-previsão modificado n for maior que ou igual ao índice de modo do modo mais provável m, então o codificador de vídeo 30 pode decodificar o bloco codificado utilizando o modo de intra-previsão possuindo índice n + 1. Em outras palavras, se n > m, então j = n + 1.
[0080] Quando da utilização de dois ou mais modos de intra-previsão prováveis, se a palavra-código compreende um primeiro bit indicando um modo selecionado é um dos dois modos de intra-previsão mais prováveis, então o decodificador de vídeo 30 pode determinar o modo de intra- previsão utilizado para codificar o bloco codificado com base em bits adicionais identificando qual dos dois modos de intra-previsão mais prováveis corresponde ao modo selecionado. Se o primeiro bit indicar que o modo selecionado não é um dos dois modos de intra-previsão mais prováveis, então o decodificador de vídeo 30 pode determinar o modo de intra-previsão utilizado para codificar o bloco de dados de vídeo de uma forma geralmente alternada à do codificador de vídeo 20.
[0081] Especificamente, novamente deixemos n representar o índice de modo de intra-previsão modificado à qual uma palavra-código recebida na tabela de mapeamento é mapeada, j representa o índice de modo do modo de intra-previsão a ser utilizado para decodificar o bloco codificado, m1 representa o índice de modo do primeiro modo mais provável, e m2 representa o índice de modo do segundo modo mais provável. Como mencionado anteriormente, pode-se assumir que o índice de modo n é menor que o índice de modo do primeiro modo mais provável m1, então o decodificador de vídeo 30 pode decodificar o bloco codificado utilizando o modo de intra-previsão possuindo o índice n. Isso é, se n < m1, então j = n. Do contrário, se o índice de modo de intra-previsão modificado mais um (n + 1) for menor que o índice de modo para o segundo modo mais provável m2, então o decodificador de vídeo 30 pode decodificar o bloco codificado utilizando o modo de intra-previsão possuindo o índice n + 1. Em outras palavras, se n + 1 < m2, então j = n + 1. Do contrário, o decodificador de vídeo 30 pode decodificar o bloco codificado utilizando o modo de intra- previsão possuindo o índice n + 2. Em outras palavras, se n + 1 ≥ m2, então j = n+2.
[0082] Para dois modos mais prováveis, o mapeamento dos índices de modo em índices de modo de intra-previsão modificados, como realizado pelo codificador de vídeo 20, pode, dessa forma ser representado pelo seguinte pseudocódigo: se (j ≥ m2) n = j - 2 ou se (j ≥ mi) n = j - 1 ou n = j.
[0083] Para os N modos mais prováveis, onde mi representa o primeiro modo mais provável e mN representa o modo mais provável N, o mapeamento dos índices de modo em índices de modo de intra-previsão modificados, como realizado pelo codificador de vídeo 20 pode, dessa forma, ser representado pelo seguinte pseudocódigo: se (j ≥ mN) N = j - N ou se (j ≥ mN-i) n = j - N + 1 .... ou se (j ≥ m2) n = j - 2 ou se (j ≥ mi) n = j - i ou n = j.
[0084] Para os dois modos mais prováveis, o mapeamento de um índice de modo de intra-previsão modificado para um índice de modo, como realizado pelo decodificador de vídeo 30, pode, dessa forma, ser representado pelo seguinte pseudocódigo: se (n < mi) j - n; ou se (n + i < m2) j = n + i; ou j = n + 2
[0085] para N modos mais prováveis, o mapeamento de um índice de modo de intra-previsão modificado para um índice de modo, com realizado pelo decodificador de vídeo 30, pode, dessa forma, ser representado pelo seguinte pseudocódigo: se (n<m1) j = n; ou se (n + 1 < m2) j = n + 1; ou se (n + 2 < m3) j = n + 2; ou se (n + 3 < m4) j = n + 3; .... ou se (n + (N-1) < mN j = n + (N -1) ou j = n + N.
[0086] De acordo com as técnicas dessa descrição, os modos também podem ser mapeados diretamente em índices de palavra-código que indicam as palavras-código correspondentes. De uma forma similar aos índices de modo de intra-previsão modificados descritos acima, ao invés de enviar a palavra-código com um índice correspondente ao índice de modo, uma economia de bit pode ser alcançada pelo envio de uma palavra-código com um índice de palavra-código modificado, onde a modificação é um resultado de utilização de índices de palavra-código originalmente associados com os modos mais prováveis para indicar os modos que não são os modos mais prováveis. Visto que os modos mais prováveis são sinalizados utilizando-se um bit inicial ou série de bits como descrito acima, os modos mais prováveis podem ser excluídos da consideração quando da sinalização de um índice de palavra-código de um modo que não é um dos modos mais prováveis. Como resultado disso, um índice de palavra- código que é originalmente mapeado para um dos modos mais prováveis pode ser utilizado para indicar um modo que não é um dos modos mais prováveis. Independentemente de se a palavra-código é mapeada para um índice de modo intra- previsão modificado ou um índice de palavra-código modificado, a palavra-código pode ser codificada utilizando-se um processo CABAC.
[0087] Assumindo-se, por exemplo, dois modos de intra- previsão mais prováveis utilizados, como com os modos de intra-previsão modificados acima, se o conjunto de modos de intra-previsão disponíveis possuir K+1 elementos mapeados para uma faixa de índices de palavra-código variando de 0 para K, a tabela de índices de palavra-código modificadas pode designar K - 1 palavras-código para os índices de palavra-código de 0 a K-2.
[0088] Assumindo-se que C represente um índice de palavra-código e Cmod represente um índice de palavra-código modificado. Assume-se adicionalmente que Cm1 represente o índice de palavra-código mais baixo de um modo mais provável, Cm2 represente o segundo índice de palavra-código mais baixo correspondente a um modo mais provável e assim por diante. Como será explicado em maiores detalhes abaixo, o mapeamento de modos em índices de palavra-código pode ser dinâmico. Dessa forma, um primeiro modo mais provável com um índice de modo mais baixo também pode não ter um índice de palavra-código mais baixo. De acordo, Cm1 pode não corresponder necessariamente a um primeiro modo mais provável, Cm2 pode não corresponder a um segundo modo mais provável, e assim por diante. Para os N modos mais prováveis, o mapeamento dos índices de palavra-código em índices de palavra-código modificados, como realizado pelo codificador de vídeo 20, pode dessa forma ser representado pelo seguinte pseudocódigo: se (C ≥ CmN) Cmod = C - N ou se (C ≥ CmN-1_ Cmod = C - N + 1 ... ou se (C ≥ Cm2) Cmod = C-2 ou se (C ≥ Cm1) Cmod = C-1 ou Cmod = C.
[0089] Para N modos mais prováveis, o mapeamento de índices de palavra-código em índices de palavra-código, como realizado pelo decodificador de vídeo 30, ainda pode ser representado pelo pseudocódigo a seguir: se (C ≥ Cm1) C = Cmod ou se (Cmod + 1 < Cm2) C = Cmod + 1 ou se (Cmod + 2 < Cm3) C = Cmod + 2; ou se (Cmod + 3 < Cm4) C = Cmod + 3; ... ou se (Cmod + (N-1) < CmN C = Cmod + (N-1) ou C = Cmod + N.
[0090] 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 circuito de codificador ou decodificador adequados, como aplicável, tal com um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicativo (ASICs), conjuntos de porta programáveis em campo (FPGAs), conjunto de circuito lógico discreto, software, hardware, firmware ou qualquer combinações dos mesmos. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais podendo ser integrado como parte de um codificador/decodificador de vídeo combinado (CODEC). Um aparelho incluindo um codificador de vídeo 20 e/ou decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador, e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0091] A figura 2 é um diagrama em bloco ilustrando um exemplo do codificador de vídeo 20 que pode implementar técnicas para codificação de informação indicativa de um modo de intra-codificação. O codificador de vídeo 20 pode realizar a intra e inter-codificação de blocos dentro dos quadros de vídeo, incluindo macroblocos, ou partições ou subpartições de macroblocos. A intra-codificação se baseia em previsão espacial para redução ou remoção de redundância espacial em vídeo dentro de um determinado quadro de vídeo. A inter-codificação se baseia em previsão temporal para redução ou remoção de redundância temporal em vídeo dentro de quadros adjacentes de uma sequência de vídeo. O modo de inter-previsão (modo I) pode se referir a qualquer um dos modos de compressão baseados em espaço e os intermodos tal como previsão unidirecional (modo P) ou previsão bidirecional (modo B) podem se referir a quaisquer modos de compressão com base em tempo. Apesar de os componentes para a codificação intermodo serem descritos na figura 2, deve- se compreender que o codificador de vídeo 20 pode incluir adicionalmente componentes para a codificação de modo de intra-previsão. No entanto, tais componentes não são ilustrados para fins de brevidade e clareza.
[0092] Como ilustrado na figura 2, o codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da figura 2, o codificador de vídeo 20 inclui a unidade de compensação de movimento 44, a unidade de estimativa de movimento 42, a memória 64, o somador 49, o módulo de transformação 52, a unidade de quantização 54, e a unidade de codificação por entropia 56. Para a reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui a unidade de quantização invertida 58, o módulo de transformação invertida 60, e o somador 62. Um filtro de desbloqueio (não ilustrado na figura 2) pode também ser incluído para filtrar os limites de bloco para remover artefatos de bloqueio do vídeo reconstruído. Se for desejável, o filtro de desbloqueio filtrará tipicamente a saída do somador 62.
[0093] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro de vídeo ou fatia para ser codificado. O quadro ou fatia pode ser dividido em múltiplos blocos de vídeo. A unidade de estimativa de movimento 42 e a unidade de compensação e movimento 44 realizam a codificação inter-previsão do bloco de vídeo recebido com relação a um ou mais blocos em um ou mais quadros de referência para fornecer compressão temporal. O módulo de intra-previsão 46 pode realizar a codificação de intra-previsão do bloco de vídeo recebido com relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer compressão espacial.
[0094] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, com base em resultados de erro e com base em um tipo de quadro ou fatia para o quadro ou fatia incluindo um bloco atual sendo codificado, e fornece o bloco intra ou inter- codificado resultante para o somador 49 para geração dos dados de bloco residuais e para o somador 62 para reconstrução do bloco codificado para uso em um quadro de referência ou fatia de referência. Em geral, a intra- previsão envolve a previsão de um bloco atual com relação a blocos vizinhos codificados anteriormente, enquanto a inter-previsão envolve a estimativa de movimento e compensação de movimento para prever temporariamente o bloco atual.
[0095] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 representam os elementos de inter-previsão do codificador de vídeo 20. 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 é o processo de geração de vetores de movimento, que estima o movimento para os blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de um bloco de previsão dentro de um quadro de referência de previsão (ou outra unidade codificada) com relação ao bloco atual sendo codificado dentro do quadro atual (ou outra unidade codificada). Um bloco de previsão é um bloco que é combina de perto com o bloco 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. Um vetor de movimento também pode indicar o deslocamento de uma partição de um macro bloco. A compensação de movimento pode envolver a coleta ou geração do bloco de previsão com base em um vetor de movimento determinado pela estimativa de movimento. Novamente, a unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser integradas de forma funcional, em alguns exemplos.
[0096] A unidade de estimativa de movimento 42 calcula um vetor de movimento para o bloco de vídeo de um quadro inter-codificado pela comparação do bloco de vídeo com os blocos de vídeo de um quadro de referência no armazenador de quadro de referência 64. A unidade de compensação de movimento 44 também pode interpolar os pixels subinteiros do quadro de referência, por exemplo, um quadro I ou um quadro P. O padrão ITU H.264, como um exemplo, descreve duas listas: lista 0, que inclui quadros de referência possuindo uma ordem de exibição anterior a um quadro atual sendo codificado, e a lista 1, que inclui os quadros de referência possuindo uma ordem de exibição posterior ao quadro atual sendo codificado. Portanto, os dados armazenados no armazenador de quadro de referência 64 podem ser organizados de acordo com essas listas.
[0097] A unidade de estimativa de movimento 42 compara os blocos de um ou mais quadros de referência a partir do armazenador de quadro de referência 64 com um bloco a ser codificado de um quadro atual, por exemplo, um quadro P ou um quadro B. Quando os quadros de referência no armazenador de quadro de referência 64 incluem valores para pixels subinteiros, um vetor de movimento calculado pela unidade de estimativa de movimento 42 pode fazer referência a uma localização de pixel subinteiro de um quadro de referência. A unidade de estimativa de movimento 42 e/ou a unidade de compensação de movimento 44 também podem ser configuradas para calcular valores para as posições de pixel subinteiro dos quadros de referência armazenados no armazenador de quadro de referência 64 se nenhum valor para as posições de pixel subinteiro for armazenada no armazenador de quadro 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. O bloco de quadro de referência identificado por um vetor de movimento pode ser referido com um bloco de previsão. A unidade de compensação de movimento 44 pode calcular os dados de previsão com base no bloco inter- previsão.
[0098] O módulo de intra-previsão 46 pode intra-prever um bloco atual, como uma alternativa para a inter-previsão realizada pela unidade de estimativa de movimento 42 e unidade de compensação de movimento 44, como descrito acima. em particular, o módulo de intra-previsão 46 pode determinar um modo de intra-previsão a ser utilizado para a codificação de um bloco atual. Em alguns exemplos, o módulo de intra-previsão 46 pode codificar um bloco atual utilizando vários modos de intra-previsão, por exemplo, durante passagens de codificação separadas, e o módulo de intra-previsão 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intra-previsão adequado para ser utilizado a partir dos modos testados. Por exemplo, o módulo de intra-previsão 46 pode calcular os valores de distorção de taxa utilizando uma análise de distorção de taxa para os vários modos de intra-previsão testados, e selecionar o modo de intra-previsã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 original não codificado que foi codificado para produzir o bloco codificado, além de uma taxa de bits (isso é, um número de bits) utilizada para produzir o bloco codificado. O módulo de intra-previsão 46 pode calcular as razões das distorções e taxas para os vários blocos codificados para determinar qual modo de intra-previsão exibe o melhor valor de distorção de taxa para o bloco.
[0099] Em qualquer caso, depois da seleção de um modo de intra-previsão para um bloco, o módulo de intra-previsão 46 pode fornecer informação indicativa do modo de intra- previsã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 intra-previsão selecionado utilizando CABAC de acordo com as técnicas dessa descrição. Como ilustrado na figura 2, o codificador de vídeo 20 pode incluir dados de configuração 66, que podem incluir uma pluralidade de tabelas de índice de modo de intra-previsão e uma pluralidade de tabelas de índice de modo de intra-previsão modificadas (também referidas como tabelas de mapeamento de palavra-código), definições dos contextos de codificação para vários blocos, e indicações de um modo de intra-previsão mais provável, uma tabela de índice de modo de intra-previsão, e uma tabela de índice de modo de intra-previsão modificada para uso para cada um dos contextos.
[00100] A Tabela 1 abaixo representa um exemplo de índices de modo de intra-previsão, modos de intra-previsão correspondentes, e uma indicação de quais dos modos é o modo mais provável para um contexto em particular. A tabela 1 também ilustra os índices de modo de intra-previsão modificados que mapeiam cada índice de modo, nesse exemplo em particular. A Tabela 2 fornece uma tabela de mapeamento ilustrativa que mapeia as palavras-código para os índices de modo de intra-previsão modificados que correspondem geralmente aos índices de modo da Tabela 1. Como discutido abaixo, mais de um modo mais provável pode ser utilizado, mas os exemplos das Tabelas 1 e 2 assumem apenas um modo mais provável sendo utilizado. Devido ao fato de apenas um modo mais provável ser utilizado, a Tabela 2 inclui uma entrada menor que a Tabela 1. Visto que o modo mais provável é sinalizado separadamente dos modos restantes, o índice de modo 5 não possui um índice de modo de intra- previsão modificado correspondente. De forma similar, a Tabela 2 não precisa incluir uma palavra-código para o modo mais provável. Tabela 1
Figure img0001
Tabela 2
Figure img0002
[00101] Para fins de exemplo, deixemos m representar o índice de modo do modo mais provável da Tabela 1, e deixemos n representar o índice do modo de intra-previsão modificado correspondente a j. Se o modo selecionado for o modo mais provável, então um primeiro bit (por exemplo, ‘0’) é utilizado para representa o modo, nesse exemplo, e o modo é determinado como o modo mais provável, como indicado pela Tabla 1 (vertical para direita, nesse exemplo). Se um primeiro bit além de 0 (isso é, um “1”) for enviado, então o modo não é o modo mais provável. Deixemos n corresponder ao índice de modo intra-previsão modificado indicado pela palavra-código que é enviada para representar o modo. A palavra-código que é mapeada para o índice n é sinalizada a partir do codificador para o decodificador para indicar o modo de intra-previsão selecionado j. Se o valor de índice de modo para o modo de intra-previsão selecionado for menor que o valor de índice de modo do modo de intra-previsão mais provável, então o codificador de vídeo 20 pode codificar a indicação do modo de intra-previsão utilizado para codificar o bloco atual utilizando a palavra-código correspondente a j. Em outras palavras, se j < m, então n = j. Por outro lado, se o valor de índice de modo para o modo de intra-previsão selecionado for maior que ou igual ao valor de índice de modo do modo de intra-previsão mais provável, então o codificador de vídeo 20 pode codificar a indicação do modo de intra-previsão utilizado para codificar o bloco atual utilizando a palavra-código correspondente a j - 1. Em outras palavras, se j > m, então n = j-1.
[00102] Um decodificador, tal como o decodificador 30 realizará geralmente o mapeamento oposto do codificador 20. Dessa forma, o decodificador 30 pode determinar que se n < m, então o índice de modo é igual a n. Por outro lado, se n > m, então o índice de modo é igual a n+1. Em outras palavras, se o índice de modo intra-previsão modificado (por exemplo, o índice de modo intra-previsão modificado a partir da Tabela 2 correspondendo à palavra-código que é enviada) for maior que ou igual ao índice do modo mais provável (a partir da Tabela 1, nesse exemplo), então o modo de intra-previsão é de fato indicado por n+1, ao invés de n. Dessa forma, quando o índice de modo para o modo de intra-previsão utilizado para codificar o bloco atual (por exemplo, n + 1) é maior que o índice para o modo de codificação mais provável (m), a palavra-código utilizada para representar o modo de intra-previsão selecionado corresponde a um índice de modo de intra-previsão modificado (n) que é uma vez menor que o índice de modo (n+1) para o modo intra-previsão utilizado para codificar o bloco atual.
[00103] Como um exemplo com relação aos exemplos das Tabela 1 e 2, supondo-se que para um bloco atual, que possui um contexto indicando um modo mais provável de vertical para a direita, o modo selecionado seja horizontal para baixo. O índice m para o modo mais provável é 5, nesse exemplo, enquanto que o índice de modo para o modo selecionado (de acordo com a Tabela 1) é 8. Nesse exemplo, visto que o índice de modo para o modo selecionado é maior que o índice de modo para o modo mais provável, então n = j-1, onde n é o índice de modo de intra-previsão modificado e é igual a 7. Dessa forma, com a Tabela 2 o codificador de vídeo 20 utilizará a palavra-código 111 para representar o modo selecionado, nesse exemplo. A palavra-código 111 pode seguir um bit inicial indicando que o modo selecionado não é um modo mais provável. De acordo, o codificador de vídeo 30 (figuras 1 e 4) receberão o bit inicial e palavra-código 111 e determinarão que o valor de n é 7. Visto que 7 é maior que 5 (isso é, n > m) nesse exemplo, o decodificador de vídeo 30 recuperará o modo da Tabela 1 possuindo o índice de modo n + 1, que é 9, correspondendo a horizontal para baixo, nesse exemplo.
[00104] Como outro exemplo, novamente com relação aos exemplos das Tabelas 1 e 2, supõe-se que para o bloco atual, o modo selecionado seja DC. Novamente, o índice m para o modo mais provável é 5 nesse exemplo enquanto o índice de modo para o modo selecionado (de acordo com a Tabela 1) é 0. Nesse exemplo, visto que o índice de modo para o modo selecionado é menor que o índice de modo para o modo mais provável, o índice de modo é igual a n, onde n é o índice de modo de intra-previsão modificado. Dessa forma, com a Tabela 2 o codificador de vídeo 20 utilizaria a palavra-código 000 para representar o modo selecionado, nesse exemplo. A palavra-código 000 seguiria um bit inicial indicando que o modo selecionado não é um modo mais provável. De acordo, o decodificador de vídeo 30 (figuras 1 e 4) receberá o bit inicial e a palavra-código 000 e determinará que o valor de n é 0. Visto que 0 é menor que 5 (isso é, n < m) nesse exemplo, o decodificador de vídeo 30 recuperará o modo a partir da Tabela 1 possuindo o índice de modo n, que é 0, correspondendo ao DC, nesse exemplo.
[00105] A tabela 3 abaixo representa um exemplo de índices de modo de intra-previsão, modos de intra-previsão correspondentes, e uma indicação de quais dos modos é o modo mais provável para um contexto em particular. A tabela 3 também ilustra os índices de modo de intra-previsão modificados que mapeiam em cada índice de modo, nesse exemplo em particular. A tabela 4 fornece uma tabela de mapeamento ilustrativa que mapeia as palavras-código em índices de modo de intra-previsão modificados que geralmente correspondem aos índices de modo da Tabela 3. Como discutido acima, mais de dois modos mais prováveis também são utilizados, mas os exemplos da Tabela 3 e 4 assumem que apenas dois modos mais prováveis sejam utilizados. Visto que dois modos mais prováveis são utilizados, a Tabela 4 contém duas entradas menores que a Tabela 3. Tabela 3
Figure img0003
Figure img0004
Tabela 4
Figure img0005
[00106] Em particular, deixemos m1 representar o índice de modo do primeiro modo mais provável na Tabela 3, e m2 representar o índice de modo do segundo modo mais provável. Se o modo selecionado for um dos modos mais prováveis, então um primeiro bit (por exemplo, “0”) é utilizado para sinalizar que o modo é um dos dois modos mais prováveis. Se o modo for um dos dois modos mais prováveis, então um segundo bit é utilizado para sinalizar qual dos dois modos mais prováveis corresponde ao modo selecionado. Dessa forma, os dois modos mais prováveis podem ser sinalizados com sequências de bit inicial de “00” e “01” respectivamente. Se um primeiro bit além de “0” (isso é, um “1”) for enviado, então o modo selecionado não é um dos dois modos mais prováveis. Deixemos n corresponder ao índice de modo de intra-previsão modificado indicado pela palavra-código que é enviada para representar o modo.
[00107] O codificador de vídeo 20 pode determinar o índice de modo do modo selecionado (j) e mapear o índice de modo para um índice de modo modificado (n) . Se j > m2, então n = j-2. Do contrário, se j > mi, então n = j-1a. Do contrário, n = j. O decodificador de vídeo 30 recebe o índice de modo de intra-previsão modificado (n) e pode comparar primeiro n com m1. Se n < m1, então o índice de modo (j) é igual a n. Se m não for menor que m1, então n+1 pode ser comparado com m2. Se n+1 < m2, então o índice de modo é igual a n1. Do contrário, o índice de modo é igual a n2.
[00108] Como um exemplo com relação aos exemplos das Tabelas 3 e 4, supõe-se que para um bloco atual, que possui um contexto indicando os modos mais prováveis de vertical para a esquerda e diagonal para baixo e para a esquerda, o modo selecionado seja o horizontal para baixo. Os índices m1 e m2 para os modos mais prováveis são 4 e 6, nesse exemplo, enquanto o índice de modo j para o modo selecionado (de acordo com a Tabela 3) é 8. Nesse exemplo, visto que o índice de modo para o modo selecionado é maior que o índice de modo para ambos os modos mais prováveis, o índice de modo j é igual a n + 2, onde n é igual ao índice do modo de intra-previsão modificado na Tabela 4. Dessa forma, se o índice de modo j for igual a 8, então n = 6. Dessa forma, o codificador de vídeo 20 utilizaria a palavra-código 110 para representar o modo selecionado, nesse exemplo. De acordo, o decodificador de vídeo 30 (figuras 1 e 4) receberá a palavra-código 110 e determinará que o valor de n é 6. Visto que 6 não é menor que 4 (isso é, n > m1) e 6 mais 1 não é menor que 6 (isso é, n+1 > m2) nesse exemplo, o decodificador de vídeo 30 recuperaria o modo da Tabela 3 possuindo um índice de modo j igual a n + 2, que é 8, correspondendo ao horizontal para baixo, nesse exemplo.
[00109] Como outro exemplo, novamente com relação aos exemplos das Tabelas 3 e 4, supõe-se que para o bloco atual, o modo selecionado é DC. Novamente, os índices m1 e m2 para os modos mais prováveis são 4 e 6, nesse exemplo, enquanto o índice de modo j para o modo selecionado (de acordo com a Tabela 3) é 0. Nesse exemplo, visto que o índice de modo para o modo selecionado é menor que os índices de modo para ambos os modos mais prováveis (isso é, n < m1), o índice de modo j é igual a n, onde n é igual ao índice do modo de intra-previsão modificado na Tabela 4. Dessa forma, n é igual a 0. Dessa forma, com base na Tabela 4 o codificador de vídeo 20 utilizaria a palavra-código 0 para representar o modo selecionado, nesse exemplo. A palavra-código 000 segue um bit inicial ou série de bits indicando o modo selecionado não é um modo mais provável. De acordo, o decodificador de vídeo 30 (figuras 1 e 4) receberá o bit inicial ou série de bits e a palavra-código 000 e determinará que o valor de n é 0. Visto que 0 é menor que 4 e 6 (isso é, n < m1) nesse exemplo, o decodificador de vídeo 30 recuperaria o modo da Tabela 3 possuindo o índice de modo j que é igual a n, que é 0, correspondendo a DC, nesse exemplo.
[00110] Como outro exemplo com relação aos exemplos das Tabelas 3 e 4, supões-se que para um bloco atual o modo selecionado é vertical-direito. Os índices m1 e m2 para os modos mais prováveis são 4 e 6, nesse exemplo, enquanto o índice de modo j para o modo selecionado (de acordo com a Tabela 3) é 5. Nesse exemplo, visto que o índice de modo para o modo selecionado é maior que ou igual ao índice de modo para o primeiro modo mais provável, mas menor que o índice de modo para o segundo modo mais provável, o índice de modo j é igual a n+1, onde n é igual ao índice do modo de intra-previsão modificado na Tabela 4. Dessa forma, se o índice de modo j for 5, então n = 4. Dessa forma, o codificador de vídeo 20 utilizaria a palavra-código 110 para representar o modo selecionado, nesse exemplo. A palavra-código 110 segue um bit inicial ou série de bits indicando que o modo selecionado não é um modo mais provável. De acordo, o decodificador de vídeo 30 (figuras 1 e 4) receberia o bit inicial e série de bits e a palavra- código 110 e determina que o valor de n é 4. Visto que 4 é maior que ou igual a 4, mas 4 mais 1 é menor que 6 (isso é, n > mi, mas n+1 < m2) nesse exemplo, o decodificador de vídeo 30 recuperaria o modo da Tabela 3 possuindo o índice de modo j igual a n+1, que é 5, correspondente a vertical- direito, nesse exemplo.
[00111] Deve-se compreender que as Tabelas 1, 2, 3 e 4 são meramente exemplos de tabelas de modos mais prováveis, índices para os modos, e palavras-código designadas para vários índices. Em outros exemplos, outros modos podem ser determinados como o mais provável, por exemplo, com base no contexto de codificação para um bloco determinado. Por exemplo, o modo mais provável pode ser determinado com base nos modos de codificação utilizados para codificar os blocos vizinhos da esquerda e de cima. Os dados de configuração 66 podem incluir uma pluralidade de tabelas diferentes associadas com os diferentes modos de codificação identificados como sendo o modo mais provável, geralmente similar aos exemplos das Tabelas 1 e 3. Da mesma forma, os dados de configuração 66 podem incluir uma pluralidade de tabelas de mapeamento de palavra-código, tal como as Tabelas 2 e 4, que mapeiam índices em palavras- código.
[00112] Em geral, as tabelas 1 e 3 podem ser referidas como tabelas de índice de modo, enquanto as tabelas 2 e 4 podem ser referidas como tabelas de mapeamento de índice de modo de intra-previsão modificadas, ou simplesmente tabelas de mapeamento. Como notado acima, as tabelas 1 e 2 são meramente um exemplo de uma tabela de índice de modo e uma tabela de mapeamento. Em alguns exemplos, os dados de configuração 66 podem incluir dados para uma pluralidade de tabelas de índice de modo e uma pluralidade de tabelas de mapeamento. Em alguns exemplos, múltiplos contextos de codificação podem corresponder a uma tabela de índice de modo comum. Da mesma forma, múltiplas tabelas de índice de modo podem ser mapeadas em uma tabela de mapeamento comum.
[00113] De acordo com as técnicas dessa descrição, os modos também podem ser mapeados em índices de palavra- código ao invés de índices de modo de intra-previsão modificados. Os índices de palavra-código podem então ser mapeados em índices de palavra-código modificados, que são utilizados para consultar as palavras-código. A Tabela 5 abaixo representa um exemplo de índices de modo de intra- previsão e modos que são mapeados em um índice de palavra- código. A Tabela 5 também ilustra uma indicação de quais modos são os modos mais prováveis para um contexto em particular, e ilustra os índices de palavra-código modificados correspondendo aos índices de palavra-código para esse exemplo em particular. Tabela 5
Figure img0006
Figure img0007
Tabela 6
Figure img0008
[00114] Para fins de exemplo, deixemos Cm1 represente um índice de palavra-código de um modo mais provável e Cm2 represente um índice de palavra-código de outro modo mais provável, onde Cm1 possui um menor valor de índice de palavra-código que Cm2. Como discutido acima, Cm1 e Cm2 são determinados com base nos valores de índice de palavra- código em oposição aos valores de índice de modo. Dessa forma, Cm1 pode não corresponder necessariamente ao primeiro modo mais provável, e Cm2 pode não necessariamente corresponder ao segundo modo mais provável. No exemplo da Tabela 5, por exemplo, o modo 3 (diagonal para baixo/direita) é o primeiro modo mais provável, visto que possui o menor índice de modo dos modos mais prováveis, e o modo 6 é o segundo modo mais provável. O segundo modo mais provável, no entanto, possui um índice de palavra-código correspondente mais baixo do que o primeiro modo mais provável. Dessa forma, no exemplo da Tabela 5, Cm1 corresponde ao índice de palavra-código do segundo modo mais provável, e Cm2 corresponde ao índice de palavra- código do primeiro modo mais provável. Na descrição a seguir é considerado que Cm1 seja menor que Cm2.
[00115] Se o modo selecionado for um dos modos mais prováveis, então um primeiro bit (por exemplo, “0”) é utilizado para sinalizar que o modo é um dos dois modos mais prováveis. Se o modo for um dos dois modos mais prováveis, então um segundo bit é utilizado para sinalizar, qual dos dois modos mais prováveis corresponde ao modo selecionado. Dessa forma, os dois modos mais prováveis podem ser sinalizados com as sequências de bit iniciais de “00” e “01”, respectivamente. Se um primeiro bit além de “0” (isso é, “1”) for enviado, então o modo selecionado não é um dos dois modos mais prováveis, e o modo selecionado é enviado como uma palavra-código correspondendo a um índice de palavra-código. Ao invés de enviar uma palavra-código que corresponde diretamente a um índice de palavra-código para o modo selecionado, no entanto, uma economia de bit pode ser alcançada pelo codificador de vídeo 20 enviando uma palavra-código correspondendo a um índice de palavra- código modificado. O decodificador de vídeo 30 pode receber a palavra-código correspondendo ao índice de palavra-código modificado e então determinar o índice de palavra-código correspondendo ao modo de intra-previsão selecionado.
[00116] O codificador de vídeo 20 pode determinar o índice de palavra-código do modo selecionado (C) e mapear o índice de modo para o índice de modo modificado (Cmod). Se C > Cm2, então Cmod = C - 2. Do contrário, se C > Cmi, então Cmod = C - 1. Do contrário, Cmod = C. O decodificador de vídeo 30 recebe o índice de modo de intra-previsão modificado (Cmod) e pode primeiro comparar o mesmo com Cmi. Se Cmod < Cmi, então o índice de modo (C) é igual a Cmod. Se Cmod não for menor que Cmi, então Cmod + i pode ser comparado com Cm2. Se Cmod + i < Cm2, então o índice de modo é igual a Cmod + i. Do contrário, o índice de modo é igual a Cmod + 2.
[00117] Como um exemplo com relação aos exemplos das Tabelas 5 e 6, supõe-se que para um bloco atual, que possui um contexto indicando os modos mais prováveis de vertical- esquerda (índice de modo 6) e diagonal para baixo/direita (índice de modo 3), o modo selecionado seja horizontal/para baixo (índice de modo 8). Os índices de palavra-código Cmi e Cm2 para os modos mais prováveis são 2 e 5, nesse exemplo, enquanto o índice de modo para o modo selecionado (de acordo com a tabela 5) é igual a 8. De acordo com a Tabela 5, os índices de modo 3, 6 e 8 mapeiam em índices de palavra-código 5, 2 e 8, respectivamente. Nesse exemplo, visto que o índice de palavra-código para o modo selecionado (isso é, o índice de palavra-código 8) é maior que os índices de palavra-código para ambos os modos mais prováveis (isso é, índices de palavra-código 5 e 2), o índice de palavra-código é igual a Cmod + 2, onde Cmod é igual ao índice de palavra-código modificado correspondendo a uma palavra-código na Tabela 6. Dessa forma, se o índice de palavra-código do modo selecionado for igual a 8, então Cmod a= 6. Dessa forma, o codificador de vídeo 20 pode utilizar a palavra-código ii0 para representar o modo selecionado, nesse exemplo. De acordo, o decodificador de vídeo 30 (figuras i e 4) receberá a palavra-código ii0 e determinará que o valor de Cmod = 6. Como 6 não é menor que 2 (isso é Cmod > Cmi) e 6 mais 1 não é menor que 5 (isso é, Cmod + 1 > Cm2) nesse exemplo, o decodificador de vídeo 30 recuperará o modo da Tabela 5 possuindo o índice de modo Cmod + 2, que é 8, correspondendo a horizontal-para baixo, nesse exemplo.
[00118] Como outro exemplo, novamente com relação aos exemplos das Tabelas 5 e 6, supões que para o bloco atual, o modo selecionado seja vertical (índice de modo 1 e índice de palavra-código 0). Novamente, os índices Cm1 e Cm2 para os modos mais prováveis são 5 e 2. Nesse exemplo, visto que o índice de palavra-código para o modo selecionado é menor que os índices de palavra-código para ambos os modos mais prováveis (isso é, C < Cm1), o índice de palavra-código modificado Cmod e igual ao índice de palavra-código. Dessa forma, o codificador 20 utilizaria a palavra-código 000 para representar o modo selecionado, nesse exemplo. A palavra-código 000 segue um bit inicial ou série de bits indicando que o modo selecionado não é um modo mais provável. De acordo, o decodificador de vídeo 30 (figuras 1 e 4) receberia o bit inicial ou série de bits e a palavra- código 000 e determinaria que o valor de Cmod é 0. Visto que 0 é menor que 5 e 2 (isso é, Cmod < Cm1) nesse exemplo, o decodificador de vídeo 30 recuperaria o modo da tabela 5 possuindo o índice de modo C igual a Cmod que é igual a 0 correspondendo a vertical, nesse exemplo.
[00119] Como outro exemplo com relação aos exemplos das tabelas 5 e 6, supõe-se que para um bloco atual o modo selecionado seja horizontal (índice de modo 2 e índice de palavra-código 4). Os índices Cm1 e Cm2 para os modos mais prováveis são 2 e 5, nesse exemplo. Nesse exemplo, visto que o índice de palavra-código para o modo selecionado é maior que ou igual a Cm1, mas menor que Cm2, o índice de palavra-código é igual a Cmod + 1, onde Cmod é o índice de palavra-código modificado. Dessa forma, se o índice de palavra-código e 4, então Cmod = 3. Dessa forma, o codificador de vídeo 20 utilizaria a palavra-código 011 para representar o modo selecionado, nesse exemplo. A palavra-código 011 segue um bit inicial ou série de bits indicando que o modo selecionado não é um modo mais provável. De acordo, o decodificador de vídeo 30 (figuras 1 e 4) receberia o bit inicial ou série de bits e a palavra- código 011 e determinaria que o valor de Cmod é 3. Como 3 não é menor que 2, mas 3 mais 1 é menor que 5 (isso é, Cmod > Cmi, mas Cmod + 1 < Cm2) nesse exemplo, o decodificador de vídeo 30 recuperaria o modo da tabela 5 possuindo um índice de modo igual a Cmod + 1, que é igual a 4, correspondendo ao modo horizontal.
[00120] Deve-se compreender que as tabelas de 1 a 6 são meramente exemplos das tabelas dos modos mais prováveis, índices para os modos, índices de palavra-código, e palavras-código designadas para os vários índices. Em outros exemplos, outros modos de intra-previsão podem ser determinados como o modo mais provável, por exemplo, com base no contexto de codificação para um bloco determinado. Por exemplo, o modo mais provável pode ser determinado com base nos modos de intra-previsão utilizados para codificar os blocos vizinhos da esquerda e de cima. Os dados de configuração 66 podem incluir uma pluralidade de tabelas diferentes associadas com diferentes modos de intra- previsão identificados como sendo o modo mais provável além de um número diferente de modos mais prováveis identificados, geralmente similares aos exemplos das tabelas 1, 3 e 5. Da mesma forma, os dados de configuração 66 podem incluir uma pluralidade de tabelas de mapeamento de palavra-código, tal como as tabelas 2, 4 e 6 que mapeiam os índices de modo de intra-previsão restantes em palavras- código. Como descrito acima, os modos mais prováveis são sinalizados utilizando um bit inicial ou uma série de bits. Tal bit inicial ou série de bits também podem depender de contexto. Por exemplo, uma série diferente de bits pode ser utilizada para sinalizar os modos mais prováveis dependendo dos quais os modos de intra-previsão são identificados como sendo o modo mais provável além de quantos modos mais prováveis são identificados. Os modos mais prováveis e as tabelas de codificação para qualquer caso determinado também podem ser definidos com base em outros tipos de contextos, ao invés de ou em adição ao modo de intra- previsão de bloco vizinho utilizado nesse caso.
[00121] Os exemplos das Tabelas 1, 2, 3, 4 e 5 são fornecidos com relação a nove modos de intra-previsão de H.264. No entanto, deve-se compreender que as técnicas dessa descrição podem ser aplicadas a outros padrões de codificação e técnicas, tal como Codificação de Vídeo de alta Eficiência (HEVC). Em alguns exemplos, tal como em HEVC, o número de modos de intra-previsão disponíveis pode depender do tamanho de um bloco (por exemplo, uma “unidade de codificação” ou “CU” em HEVC) sendo codificado. Para cada modo de intra-previsão, um índice de modo pode ser designado com base em uma probabilidade de ocorrência de cada modo de intra-previsão. A figura 3 ilustra um exemplo dos modos de intra-previsão e índices de modo correspondente que podem ser utilizados com HEVC. As setas da figura 3 representam uma direção de previsão, os números representam um índice de modo. A tabela 7 abaixo fornece uma correspondência entre um tamanho de CU e um número de modos de intra-previsão disponíveis para codificar CUs desse tamanho. Como pode ser observado na tabela 7, CUs 8x8, 16x16 e 32x32 podem utilizar os 35 modos de intra- previsão ilustrados na figura 3, enquanto as CUs de 4x4 e 64x64 utilizam um conjunto menor de modos de intra- previsão. Tabela 7
Figure img0009
[00122] Nos exemplos onde o número de modos de intra- previsão varia com base no tamanho de bloco, os dados de configuração 66 podem incluir diferentes tabelas para diferentes tamanhos de blocos. De acordo, um contexto para codificação de uma indicação de um modo de intra-previsão utilizado para codificar um bloco pode incluir um tamanho de bloco, além de modos de codificação utilizados para codificar os blocos vizinhos. A unidade de codificação por entropia 56 pode selecionar a tabela de índice de modo e tabela de mapeamento de palavra-código utilizada para selecionar uma palavra-código representativa do modo de intra-previsão selecionado utilizado para codificar o bloco com base no contexto para o bloco. Ademais, as tabelas de índice de modo para os blocos de um tamanho em particular podem ter números de registros iguais ao número de modos de intra-previsão para os blocos desse tamanho. Dessa forma, as tabelas de índice de modo para os blocos de tamanho 4x4 podem ter 18 registros, as tabelas de índice de modo para os blocos de tamanho de 8x8, 16x16 e 32x32 podem ter 35 registros, e as tabelas de índice de modo para os blocos de tamanho 64x64 podem ter 4 registros. Outros tamanhos de blocos, por exemplo, 128x128 podem ter também um número determinado de modos de intra-previsão disponíveis.
[00123] Os modos de intra-previsão disponíveis para os blocos de tamanho 8x8, 16x16 e 32x32 podem ser iguais, e, portanto, as mesmas tabelas de índice de modo podem ser utilizadas para os blocos dos tamanhos 8x8, 16x16 e 32x32. Apesar de os mesmos modos poderem ser possíveis para os blocos desses tamanhos, no entanto, a probabilidade de utilização de um modo particular para codificar um bloco pode variar com base no tamanho do bloco. De acordo, a unidade de codificação por entropia 56 pode determinar uma tabela de mapeamento de palavra-código para uma tabela de índice de modo particular com base no tamanho do bloco para o qual um modo de intra-previsão deve ser sinalizado, em alguns exemplos.
[00124] Para fins de exemplo, as Tabelas 2, 4 e 6 acima são simplesmente tabelas ilustrativas para representar vários modos de codificação. No entanto deve-se compreender que outros tipos de palavras-código podem ser utilizadas em outros exemplos. Qualquer conjunto de palavras-código pode ser utilizado para a tabela de mapeamento de palavra-código (isso é, a tabela de mapeamento ou tabela de índice de modo de intra-previsão modificado), desde que cada uma das palavras-código seja decodificada de forma singular.
[00125] Depois de prever um bloco atual, por exemplo, utilizando intra-previsão ou inter-previsão, o codificador de vídeo 20 pode formar um bloco de vídeo residual pela subtração dos dados de previsão calculados pela unidade de compensação de movimento 44 ou módulo de intra-previsão 46 do bloco de vídeo original sendo codificado. O somador 49 representa o componente ou componentes que realizam essa operação de subtração. O módulo de transformação 52 aplica uma transformação, tal como uma transformação de cosseno discreto (DCT) ou uma transformação conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo que compreende valores de coeficiente de transformação residual. O módulo de transformação 52 pode realizar outras transformações, tal como as definidas pelo padrão H.264, que são conceitualmente similares a DCT. As transformações de wavelet, transformações de inteiro, transformações de sub-banda, ou outros tipos de transformações podem ser utilizadas também. Em qualquer caso, o módulo de transformação 52 aplica a transformação ao bloco residual, produzindo um bloco de coeficientes de transformação residuais. A transformação pode converter a informação residual de um domínio de valor de pixel em um domínio de transformação, tal como um domínio de frequência. A unidade de quantização 54 quantiza os coeficientes de transformação residual para reduzir ainda mais a taxa 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.
[00126] Depois da quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformação quantizados. Por exemplo, a unidade de codificação por entropia 56 pode realizar a codificação de comprimento variável adaptativo de conteúdo (CAVLC), a codificação aritmética binária adaptativa de contexto (CABAC), ou outra técnica de codificação por entropia. Seguindo a codificação por entropia pela unidade de codificação por entropia 56, o vídeo codificado pode ser transmitido para outro dispositivo ou arquivado para transmissão ou recuperação posterior. No caso de codificação aritmética binária adaptativa de contexto, o contexto pode ser baseado em blocos vizinhos e/ou tamanhos de bloco.
[00127] Em alguns casos, a unidade de codificação por entropia 56 ou outra unidade de codificador de vídeo 20 pode ser configurada para realizar outras funções de codificação, em adição à codificação por entropia e codificação de modo de intra-previsão como descrito acima. Por exemplo, a unidade de codificação por entropia 56 pode ser configurada para determinar os valores de padrão de bloco codificados (CBP) para os blocos e partições. Além disso, em alguns casos, a unidade de codificação por entropia 56 pode realizar a codificação de comprimento de funcionamento dos coeficientes em um macro bloco ou partição do mesmo. Em particular, a unidade de codificação por entropia 56 pode aplicar uma digitalização em ziguezague ou outro padrão de digitalização para digitalizar os coeficientes de transformação em um macro bloco ou partição e codificar os comprimentos iguais a zero para compressão adicional. A unidade de codificação por entropia 56 também pode construir informação de cabeçalho com elementos de sintaxe adequados para transmissão no fluxo de bits de vídeo codificado.
[00128] A unidade de quantização invertida 58 e o módulo de transformação invertida 60 aplicam a quantização invertida e a transformação invertida, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso futuro como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência pela adição do bloco residual a um bloco de previsão de um dos quadros do armazenador de quadro de referência 64. 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 de subinteiro para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de previsão de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um boco de vídeo reconstruído para armazenamento no armazenador de quadro de referência 64. O bloco de vídeo reconstruído 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 inter-codificar um bloco em um quadro de vídeo subsequente.
[00129] Dessa forma, o codificador de vídeo 20 representa um exemplo de um codificador de vídeo configurado para determinar um primeiro modo de intra-previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco atual de dados de vídeo com base em um contexto de codificação para o bloco atual; selecionar uma tabela de palavras-código com base no contexto para o bloco atual, onde a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo aos índices de modo de intra-previsão modificados UE correspondem aos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável; codificar o bloco atual utilizando um dos modos de intra- previsão além do primeiro modo de intra-previsão mais provável e do segundo modo de intra-previsão mais provável; determinar um dos índices de modo de intra-previsão modificados que corresponde a um dos modos de intra- previsão utilizando a tabela de palavras-código; e codificar uma palavra-código a partir da tabela selecionada de palavras-código pela realização de um processo CABAC, onde a palavra-código corresponde a um dos índices de modo de intra-previsão modificados.
[00130] Dessa forma, o codificador de vídeo 20 também representa um exemplo de um codificador de vídeo configurado para determinar um primeiro modo de intra- previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco atual de dados de vídeo com base em um contexto de codificação para obloco atual;. selecionar uma tabela de palavras-código com base no contexto para o bloco atual, onde a tabela de palavras- código compreende uma pluralidade de palavras-código correspondendo aos índices de palavra-código, onde os índices de palavra-código são mapeados para os modos de intra-previsão; codificar o bloco atual utilizando um dos modos de intra-previsão além do primeiro modo de intra- previsão mais provável e o segundo modo de intra-previsão mais provável; determinar um índice de palavra-código modificado com base no índice de palavra-código de um dos modos de intra-previsão utilizados para codificar o bloco atual, um índice de palavra-código mapeado para o primeiro modo mais provável, e um índice de palavra-código mapeado para o segundo modo mais provável; e codificar uma palavra- código a partir da tabela selecionada de palavras-código pela realização de um processo CABAC, onde a palavra-código corresponde a um dos índices de modo de intra-previsão modificados.
[00131] A figura 4 é um diagrama em bloco ilustrando um exemplo do decodificador de vídeo 30, que decodifica uma sequência de vídeo codificada. No exemplo da figura 4, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 70, a unidade de compensação de movimento 72, o módulo de intra-previsão 74, a unidade de quantização invertida 76, a unidade de transformação invertida 78, a memória 82 e o somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente alternada com relação à passagem de codificação descrita com relação ao codificador de vídeo 20 (figura 2). A unidade de compensação de movimento 72 pode gerar dados de previsão com base nos vetores de movimento recebida da unidade de decodificação por entropia 70.
[00132] A unidade de compensação de movimento 72 pode utilizar vetores de movimento recebidos no fluxo de bits para identificar um bloco de previsão nos quadros de referência no armazenador de quadro de referência 82. O modo de intra-previsão 74 pode utilizar os modos de intra- previsão recebidos no fluxo de bits para formar um bloco de previsão a partir de blocos espacialmente adjacentes. Em particular, o decodificador de vídeo 30, no exemplo da figura 4, inclui dados de configuração 84. Os dados de configuração 84 são substancialmente similares aos dados de configuração 66 da figura 2, pelo fato de os dados de configuração 84 incluírem informação descrevendo contextos para os blocos intra-previstos, além de uma dentre uma pluralidade de tabelas de mapeamento de índice de intra- previsão para uso para cada contexto, uma dentre uma pluralidade de tabelas de índice de modo de intra-previsão modificados (ou mapeamento em palavra-código) para uso para cada contexto, e um modo de intra-previsão mais provável para cada contexto.
[00133] A unidade de decodificação por entropia 70 pode receber uma palavra-código representativa de um modo de intra-previsão para uso para decodificar um bloco codificado de dados de vídeo. A unidade de decodificação por entropia 70 pode determinar um contexto para o bloco codificado, por exemplo, com base nos modos de intra- previsão a um bloco vizinho esquerdo e vizinho acima do bloco codificado e/ou um tamanho para o bloco codificado. Com base no contexto, a unidade de decodificação por entropia 70 pode determinar um ou mais modos de intra- previsão mais prováveis para uso na decodificação do bloco, além de uma tabela de índice de intra-previsão e uma tabela de índice de modo de intra-previsão modificado para uso n a determinação do modo de intra-previsão real para uso na decodificação do bloco.
[00134] Quando da utilização de um modo de intra-previsão mais provável singular, se a palavra-código compreender um primeiro bit, por exemplo, ‘0’, então a unidade de decodificação pro entropia 70 pode determinar que o modo de intra-previsão real é o modo de intra-previsão mais provável para o bloco codificado. Do contrário, a unidade de decodificação por entropia 70 pode determinar um índice de modo de intra-previsão modificado com base na palavra- código recebida, com base na tabela de índice de modo de intra-previsão modificada para o contexto do bloco codificado. Deixemos n representar o índice de modo de intra-previsão modificado, e deixemos n representar o índice de modo para o modo de intra-previsão mais provável. quando n < m, a unidade de decodificação por entropia 70 pode determinar que o modo de intra-previsão real para o bloco codificado possui um índice de modo de n. Do contrário, (isso é, quando n > m), a unidade de decodificação por entropia 70 pode determinar que o modo de intra-previsão real para o bloco codificado possui um índice de modo de n + 1. Utilizando-se o índice de modo, que é igual a n ou n+1 como descrito acima, a unidade de decodificação por entropia 70 pode recuperar informação indicando o modo de intra-previsão real para uso na decodificação do bloco codificado e enviar uma indicação do modo para o modo de intra-previsão 74.
[00135] Quando da utilização de mais de um modo de intra- previsão mais provável, tal como dois modos de intra- previsão mais prováveis, se um primeiro bit possuir um determinado valor, por exemplo, ‘0’, então a unidade de decodificação por entropia 70 pode determinar que o modo de intra-previsão real é um dos modos de intra-previsão mais prováveis par ao bloco codificado. Em tais casos, com base em um segundo bit ou série de bits, a unidade de decodificação por entropia 70 pode determinar qual dos modos de intra-previsão mais prováveis é o modo de intra- previsão selecionado. Do contrário, seguindo o primeiro bit, a unidade de decodificação por entropia 70 pode determinar um índice de modo de intra-previsão modificado com base na palavra-código recebida e com base no índice de modo de intra-previsão modificado, determina o modo de intra-previsão selecionado para o bloco. Como um exemplo, deixemos n representar o índice de modo de intra-previsão modificado, e deixemos m1 e m2 representarem os índices de modo para os modos de intra-previsão mais prováveis. Se n < m1, então a unidade de decodificação por entropia 70 pode determinar que o modo de intra-previsão selecionado para o bloco codificado possui um índice de modo igual a n. Quando n + 1 < m2 (mas n não é menor que m1), então a unidade de decodificação por entropia 70 pode determinar que o modo de intra-previsão selecionado para o bloco codificado possui um índice de modo de n + 1. Do contrário, quando n + 1 não é menor que m2, então a unidade de decodificação por entropia 70 pode determinar que o modo de intra-previsão selecionado para o bloco codificado possui um índice de modo de n + 2. Utilizando-se o índice de modo, a unidade de decodificação por entropia 70 pode recuperar a informação indicando o modo de intra-previsão para uso para decodificação do bloco codificado e enviar uma indicação do modo para o módulo de intra-previsão 74.
[00136] Da mesma forma, se os índices de modo de intra- previsão forem mapeados em índices de palavra-código e mais de um modo mais provável estiver sendo utilizado, se um primeiro bit ou série de bits possuir um determinado valor, por exemplo, ‘0’, então a unidade de decodificação por entropia 70 pode determinar que o modo de intra-previsão real é um dos modos de intra-previsão mais provável para o bloco codificado. Em tais casos, com base em um segundo bit ou série de bits, a unidade de decodificação 70 pode determinar qual dos modos de intra-previsão mais prováveis é o modo de intra-previsão selecionado. Do contrário, seguindo o primeiro bit ou série de bits, a unidade de decodificação por entropia 70 pode determinar um índice de palavra-código modificado mapeado para a palavra-código recebida, e com base no índice de palavra-código modificado, determina o modo de intra-previsão selecionado para o bloco. Como um exemplo, deixemos Cmod representar o índice de palavra-código modificado, e deixemos Cm1 e Cm2 representar os índices de palavra-código para os modos de intra-previsão mais prováveis. Se Cmod < Cm1, então a unidade de decodificação por entropia 70 pode determinar que o modo de intra-previsão selecionador real para o bloco codificado possui um índice de palavra-código igual a Cmod. Quando Cmod + 1 < Cm2 (mas Cmod não é menor que Cm1), então a unidade de decodificação por entropia 70 pode determinar que o modo de intra-previsão selecionado real para o bloco codificado possui um índice de palavra-código de Cmod + 1. Do contrário, quando Cmod + 1 não é menor que Cm2, então a unidade de decodificação por entropia 70 pode determinar que o modo de intra-previsão selecionado real para o bloco codificado possui um índice de palavra-código de Cmod + 2. Utilizando o índice de palavra-código, a unidade de decodificação por entropia 70 pode recuperar a informação indicando o modo de intra-previsão selecionado real para uso para decodificação do bloco codificado e enviar uma indicação do modo para o módulo de intra-previsão 74.
[00137] O módulo de intra-previsão 74 pode utilizar a indicação do modo de intra-previsão para intra-prever o bloco codificado, por exemplo, utilizando pixels de blocos vizinhos, previamente decodificados. Para exemplos nos quais o bloco é o modo de inter-previsão codificado, a unidade de compensação de movimento 72 pode receber informação definindo um vetor de movimento, a fim de recuperar os dados de previsão de movimento compensado para o bloco codificado. Em qualquer caso, a unidade de compensação de movimento 72 ou módulo de intra-previsão 74 pode fornecer informação definindo um bloco de previsão para o somador 80.
[00138] A unidade de quantização inversa 76 quantiza de forma invertida, isso é, dequantiza, os coeficientes de bloco quantizados fornecidos no fluxo de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantização inversa pode incluir um processo convencional, por exemplo, como definido pelo padrão de decodificação H.264 ou como realizado pelo Modelo de Teste HEVC. O processo de quantização inversa também pode incluir o uso de um parâmetro de quantização QPY calculado pelo codificador 20 para cada macrobloco para determinar um grau de quantização e, da mesma forma, um grau de quantização invertida que deve ser aplicado.
[00139] O módulo de transformação inversa 58 aplica uma transformação inversa, por exemplo, uma DCT invertida, uma transformação de inteiro invertida, ou um processo de transformação invertida conceitualmente similar, aos coeficientes de transformação a fim de produzir blocos residuais no domínio de pixel. A unidade de compensação de movimento 72 produz blocos de movimento compensado, possivelmente realizando a interpolação com base nos filtros de interpolação. Os identificadores para os filtros de interpolação a serem utilizados para a estimativa de movimento com precisão de subpixel podem ser incluídos nos elementos de sintaxe. A unidade de compensação de movimento 72 pode utilizar filtros de interpolação como utilizados pelo codificador de vídeo 20 durante a codificação do bloco de vídeo para calcular os valores interpolados para os pixels de subinteiro de um bloco de referência. A unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 de acordo com a informação de sintaxe recebida e usam os filtros de interpolação para produzir blocos de previsão.
[00140] A unidade de compensação de movimento 72 utiliza alguma informação de sintaxe para determinar os tamanhos de blocos utilizados para codificar os quadros da sequência de vídeo codificada, informação de partição que descreve como cada bloco de um quadro ou fatia da sequência de vídeo codificada é dividida, modos indicando como cada partição é codificada, um ou mais quadros de referência (e listas de quadro de referência) para cada bloco inter-codificado ou partição, e outra informação para decodificação da sequência de vídeo codificada.
[00141] O somador 80 soma os blocos residuais com os blocos de previsão correspondentes gerados pela unidade de compensação de movimento 72 ou módulo de intra-previsão 74 para formar os blocos decodificados. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados a fim de remover os artefatos de bloqueio. Os blocos de vídeo decodificados são então armazenados no armazenador de quadro de referência 82, que fornece os blocos de referência para compensação de movimento subsequente e também produz vídeo decodificado para apresentação em um dispositivo de exibição (tal como um dispositivo de exibição 32 da figura 1).
[00142] Dessa forma, o decodificador de vídeo 30 da figura 4 representa um exemplo de um decodificador de vídeo configurado para determinar um primeiro modo de intra- previsão mais provável e um segundo modo de intra-previsão mais provável para um bloco codificado de dados de vídeo com base em um contexto para o bloco atual; selecionar uma tabela de palavras-código com base no contexto para o bloco atual, onde a tabela de palavras-código compreende uma pluralidade de palavras-código correspondendo aos índices de modo de intra-previsão modificados que correspondem aos modos de intra-previsão além do primeiro modo de intra- previsão mãos provável e o segundo modo de intra-previsão mais provável; realizar um processo CABAC para determinar uma palavra-código recebida; determinar um dos índices de modo de intra-previsão modificados que corresponde à palavra-código recebida utilizando a tabela de palavras- código; selecionar um modo de intra-previsão além do primeiro modo de intra-previsão provável e segundo modo de intra-previsão mais provável para uso na decodificação do bloco codificado, onde o modo de intra-previsão selecionado corresponde a um dos índices determinados dentre os índices de modo de intra-previsão modificados; e decodifica o bloco atual utilizando o modo de intra-previsão selecionado.
[00143] Dessa forma, o decodificador de vídeo 30 da figura 4 também representa um exemplo de um decodificador de vídeo configurado para determinar um primeiro modo de intra-previsão mais provável e um segundo modo de intra- previsão mais provável para um bloco atual de dados de vídeo com base em um contexto para o bloco atual; selecionar uma tabela de palavras-código com base no contexto para o bloco atual, onde a tabela de palavras- código compreende uma pluralidade de palavras-código correspondendo a um índice de palavra-código, onde os índices de palavra-código são mapeados para os modos de intra-previsão; realizar um processo CABAC para determinar uma palavra-código recebida; determinar um índice de palavra-código modificado que corresponde à palavra-código recebida utilizando a tabela de palavras-código; selecionar um modo de intra-previsão além do primeiro modo de intra- previsão mais provável e segundo modo de intra-previsão mais provável para uso na decodificação do bloco codificado, onde o modo de intra-previsão mais provável corresponde a um índice de palavra-código selecionado com base no índice de palavra-código modificado, o primeiro modo de intra-previsão mais provável, e o segundo modo de intra-previsão mais provável; e decodificar o bloco atual utilizando o modo de intra-previsão selecionado.
[00144] A figura 5A é um diagrama em bloco ilustrando um exemplo de uma unidade de codificação CABAC 50A que pode ser utilizada de acordo com as técnicas descritas nessa descrição. A unidade de codificação CABAC 50A inclui um módulo de mapeamento de valor para binário 51A, um módulo de designação de contexto 53A, e um módulo de codificação de aritmética adaptativa 55A. O módulo de codificação de aritmética adaptativa 55A inclui um módulo de estimativa de probabilidade 57A e um motor de codificação 59A. A unidade de codificação CABAC 50A pode, por exemplo, ser considerada uma parte da unidade de codificação por entropia 56 da figura 2.
[00145] Para um elemento de sintaxe de valo não binário, o módulo de mapeamento de valor para binário 51A pode designar um valor do elemento de sintaxe para uma sequência binária, também referida como uma “sequência de binário” que pode compreender um ou mais bits ou “binários”. Em outras palavras, o módulo de mapeamento de valor para binário 51A pode “binarizar” o valor do elemento de sintaxe, de modo que o valor seja representado utilizando a sequência de binário. Deve-se notar que uma sequência de binário de valor arbitrário pode receber qualquer elemento de sintaxe de valor não binário particular e que a sequência de binário não representa necessariamente o valor do elemento de sintaxe na forma binária. Nos exemplos das Tabelas 2, 4 e 6, descritas acima, as palavras-código fornecidas já estão na forma binária e, dessa forma, podem ser utilizadas para binarização. O mapeamento de um valor de sintaxe em uma palavra-código binária essencialmente “binariza” o valor de sintaxe antes de o elemento de sintaxe ser passado para o módulo de mapeamento de binário 51A. Para elementos de sintaxe não binários, no entanto, o módulo de mapeamento de binário 51A pode binarizar o elemento de sintaxe.
[00146] Como previamente mencionado, visto que cada uma das tabelas 2, 4 e 6 já são representadas como valores binários, isso é, já são binarizadas, as palavras-código podem ultrapassar esse processo de binarização e prosseguir para o estágio de modelagem de contexto de CABAC realizado pelo módulo de designação de contexto 53A descrito abaixo. De forma similar, os um ou mais binários descritos acima com referência às Tabelas 1, 3 e 5, indicando se um modo de intra-previsão utilizado é um modo de intra-previsão mais provável para um contexto em particular, também já pode ser representado como valores binários, e, dessa forma, pode não precisar ser binarizado pelas mesmas razões mencionadas acima. Em outros exemplos, os índices de modo de intra- previsão modificados, os índices de palavra-código modificados, outros elementos de sintaxe e indicações de se um modo de intra-previsão utilizado é um modo de intra- previsão mais provável para um contexto em particular, podem ter valores binários, e, dessa forma, podem utilizar a binarização.
[00147] O módulo de designação de contexto 53A designa um contexto para cada binário da sequência de binários utilizada para representar o elemento de sintaxe. Por exemplo, o módulo de designação de contexto 53A pode designar um contexto diferente para cada binário dentro da sequência de binários. Alternativamente, o módulo de designação de contexto 53A pode designar um contexto comum para um ou mais binários da sequência de binários. Em alguns outros casos, por exemplo, quando um binário é codificado utilizando um modo de ultrapassagem CABAC, nenhum contexto explícito é necessário e o módulo de designação de contexto 53A pode não precisar designar qualquer contexto ao binário. Em qualquer caso, em alguns exemplos, cada contexto pode ser representado utilizando-se um índice de contexto. Em outras palavras, cada binário da sequência de binários pode ser associado com um índice de contexto que indica o contexto particular designado para o binário respectivo.
[00148] O módulo de designação de contexto 53A pode realizar a designação de contexto para cada binário dentre a sequência de binários utilizando um processo algumas vezes referido como “modelagem de contexto”. Por exemplo, o módulo de designação de contexto 53A pode designar cada binário para um contexto determinado com base em um modelo de contexto. O modelo de contexto determina como um contexto em particular é calculado para um determinado binário. Por exemplo, o contexto pode ser calculado com base na informação disponível para o binário, tal como, por exemplo, valores de elementos de sintaxe codificados previamente correspondentes para os blocos vizinhos dos dados de vídeo, ou uma posição relativa do binário dentro da sequência de binários. Por exemplo, o modelo de contexto pode utilizar valores de índices de modo de intra-previsão modificados (ou palavras-código utilizadas para representar os índices) para os blocos vizinhos de dados de vídeo no topo e na esquerda do bloco atual, e/ou uma posição do binário dentro da sequência de binários, para calcular o contexto.
[00149] Em alguns exemplos, cada contexto pode incluir uma pluralidade de “estados de contexto”, onde cada um dos estados de contexto é associado com um conjunto particular de estimativas de probabilidade que indicam uma probabilidade de um binário ao qual o contexto é designado compreendendo um determinado valor, por exemplo, “0” ou “1”. Adicionalmente, cada contexto pode ser associado com um estado de contexto atual particular em qualquer momento determinado, onde o estado de contexto atual indica as estimativas de probabilidade mais atuais para esse contexto.
[00150] O binário da sequência de binários pode ser subsequentemente codificado pelo módulo de codificação aritmética adaptativa 55A. Para codificar o binário, o módulo de estimativa de probabilidade 57A do módulo de codificação aritmética adaptativa 55A pode determinar as estimativas de probabilidade para o binário sendo codificado com base no contexto (e seu estado atual) designado para o binário.
[00151] O motor de codificação 59A pode utilizar o valor do binário, e as estimativas de probabilidade correspondentes ao contexto (e seu estado atual) designados para o binário, como registros no módulo de codificação aritmética adaptativa 55A quando da codificação do binário. As estimativas de probabilidade são determinadas para o binário pelo módulo de estimativa de probabilidade 5A utilizando o contexto designado, como descrito acima. Como descrito previamente, essas estimativas de probabilidade geralmente correspondem à probabilidade do binário possuir um valor igual a “0” ou um valor igual a “1”. As estimativas de probabilidade podem ser iguais para os binários designados a um contexto e podem diferir entre contextos, como refletido pelo estado atual de contexto de cada um dos contextos.
[00152] Adicionalmente, as estimativas de probabilidade para o contexto designado podem ser atualizadas com base no valor real do binário sendo codificado pelo motor de codificação 59A. Por exemplo, se um binário em particular possuir um valor de “1”, então as estimativas de probabilidade de “1” para o contexto designado são aumentadas. De forma similar, se o binário tiver um valor de “0”, então as estimativas de probabilidade de “0” para o contexto designado são aumentadas. No exemplos descritos acima, as estimativas de probabilidade para o contexto designado podem ser atualizadas pela atualização do estado de contexto para refletir as estimativas de probabilidade mais atuais para o contexto, como previamente descrito. Por exemplo, as estimativas de probabilidade mais atuais indicadas pelo estado de contexto atualizado podem ser utilizadas para a codificação de um binário subsequente para o qual o mesmo contexto é selecionado.
[00153] A técnica descrita acima pode ser repetida para cada binário da sequência de binário. Em alguns casos, um modo de ultrapassagem pode ser utilizado para um ou mais binários da sequência de binário, caso em que um ou mais binários são codificados sem o uso de um modelo de contexto designado explicitamente, que pode simplificar e acelerar a codificação dos binários. Por exemplo, para um ou mais binários codificados utilizando o modo de ultrapassagem, estimativas de probabilidade quase uniformes (por exemplo, “0,5” possuindo um valor de “0” e “1”) podem ser consideradas. Em outras palavras, o modo de ultrapassagem pode ser utilizado para codificar os binários distribuídos uniformemente.
[00154] O processo CABAC descrito acima deve representar um exemplo de um processo CABAC. É contemplado que as modificações no processo descrito acima, além de processos CABAC alternativos com relação ao descrito acima, estão dentro do escopo das técnicas descritas nessa descrição. Adicionalmente, as técnicas dessa descrição contemplam adicionalmente a utilização de outros processos de codificação por entropia adaptativa de contexto tal como os processos de Codificação por Entropia de Partição de Intervalo de Probabilidade (PIPE), além de outros processos de codificação por entropia adaptativa de contexto.
[00155] A figura 5B é um diagrama em bloco ilustrando um exemplo de uma unidade de decodificação CABAC 50B que pode ser utilizada de acordo com as técnicas descritas nessa descrição. A unidade de decodificação CABAC 50B inclui um módulo de mapeamento de binário para valor 51B, um módulo de designação de contexto 53B, e um módulo de decodificação aritmética adaptativa 55B. O módulo de decodificação aritmética adaptativa 55B inclui um módulo de estimativa de probabilidade 57B e um motor de decodificação 59B. A unidade de decodificação CABAC 50B pode, por exemplo, ser encontrada como parte da unidade de decodificação por entropia 70 da figura 4.
[00156] De uma forma alternada similar à descrita acima com referência à unidade de codificação CABAC 50A, a unidade de decodificação CABAC 50B pode decodificar uma sequência de binário codificada compreendendo um ou mais binários. Como descrito anteriormente, a sequência de binários codificada pode representar um elemento de sintaxe de valor binário ou não binário codificado.
[00157] Por exemplo, o módulo de designação de contexto 53B pode utilizar a modelagem de contexto para determinar um contexto que deve ser designado a um binário em particular da sequência de binários. O módulo de estimativa de probabilidade 57B pode utilizar o contexto designado (e seu estado atual) para determinar as estimativas de probabilidade utilizadas para decodificar o binário. Adicionalmente, o motor de decodificação 59B pode decodificar o binário utilizando as estimativas de probabilidade. De uma forma similar à descrita acima, esse processo pode ser repetido para alguns ou todos os binários da sequência de binários, resultando na sequência de binário de codificada. Finalmente, o módulo de mapeamento de binário para valor 51B pode mapear os binários decodificados da sequência de binários para um elemento de sintaxe de valor não binário, ou “desbinarizar” os um ou mais binários decodificados.
[00158] Mais uma vez, o processo CABAC descrito acima deve representar um exemplo de um processo CABAC. É contemplado que as modificações no processo descrito acima, além de processos CABAC alternativos aos descritos acima, se encontram dentro do escopo das técnicas descritas nessa descrição. Adicionalmente, as técnicas dessa descrição contemplam adicionalmente a utilização de outros processos de codificação por entropia adaptativa de contexto, tal como processos PIPE, além de outros processos de codificação por entropia adaptativa de contexto.
[00159] A figura 6 é um fluxograma ilustrando um método ilustrativo para a codificação de intra-previsão de um bloco de dados de vídeo. As técnicas da figura 6 podem geralmente ser realizadas por qualquer unidade de processamento ou processador, implementados por hardware, software, firmware ou uma combinação dos mesmos, e quando implementado em software ou firmware, hardware correspondente pode ser fornecido para executar as instruções para software ou firmware. Para fins de ilustração, as técnicas da figura 6 são descritas com relação ao codificador de vídeo 20 (figuras 1 e 2), apesar de ser compreendido que outros dispositivos podem ser configurados para realizar as técnicas similares. Ademais, as etapas ilustradas na figura 6 podem ser realizadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser adicionadas e determinadas etapas omitidas, sem se distanciar das técnicas dessa descrição.
[00160] Inicialmente, o codificador de vídeo 20 pode selecionar um modo de intra-previsão para um bloco atual de dados de vídeo (100). Por exemplo, o módulo de intra- previsão 46 pode calcular os valores de distorção de taxa para os vários modos de intra-previsão utilizados para codificar ob loco, e então selecionar o modo de intra- previsão exibindo o mesmo valor de distorção de taxa dos modos de intra-previsão testados. O módulo de intra- previsão 46 podem então codificar o bloco utilizando o modo de intra-previsão selecionado (102). Isso é, o módulo de intra-previsão 46 pode calcular um bloco de previsão para o bloco com base no modo de intra-previsão selecionado. O codificador de vídeo 20 pode calcular adicionalmente uma diferença entre o bloco de previsão e o bloco original para produzir um bloco residual, codificador de vídeo esse 20 que pode então transformar e quantizar.
[00161] O codificador de vídeo 20 pode codificar adicionalmente a informação que representa o modo de intra- previsão selecionado. Isso é, o módulo de intra-previsão 46 pode enviar uma indicação do modo de intra-previsão selecionado para a unidade de codificação por entropia 56. A unidade de codificação por entropia 56, ou outra unidade do codificador de vídeo 20, pode determinar um contexto para o bloco (104). O contexto para o bloco pode incluir um tamanho de bloco e/ou modos de intra-previsão dos blocos vizinhos, tal como um bloco de vizinho acima e/ou um bloco de vizinho da esquerda. A unidade de codificação por entropia 56 pode selecionar também uma tabela de índice de modo de intra-previsão modificada para uso na codificação do indicador de modo de intra-previsão com base no contexto de codificação para o bloco (106). A unidade de codificação por entropia 56 pode selecionar adicionalmente uma tabela de índice de intra-previsão, em alguns exemplos, enquanto em outros exemplos, os índices de modo de intra-previsão podem ser fixos. A unidade de codificação por entropia 56 pode determinar adicionalmente um ou mais dos modos de intra-previsão mais prováveis para ob loco no contexto de bloco (108).
[00162] A unidade de codificação por entropia 56 pode então selecionar uma palavra-código para o modo de intra- previsão a partir da tabela de índice de modo de intra- previsão modificado com base nos modos de intra-previsão mais prováveis (110). Por exemplo, como discutido em maiores detalhes abaixo, a unidade de codificação por entropia 56 pode utilizar um único bit ou uma série de bits (por exemplo, um bit único ou dois bits) para sinalizar que o modo de intra-previsão selecionado compreende um dos modos de intra-previsão mais prováveis. Se o modo de intra- previsão selecionado não for um dos modos de intra-previsão mais prováveis, a unidade de codificação por entropia 56 pode selecionar uma palavra-código para sinalizar o modo de intra-previsão selecionado. A unidade de codificação por entropia 56 pode então enviar o bloco codificado (por exemplo, coeficientes de transformação quantizados codificados) para o fluxo de bits, e utilizando um processo CABAC, pode enviar a palavra-código selecionada para o fluxo de bits (112).
[00163] A figura 7A é um fluxograma ilustrando um método ilustrativo para selecionar uma palavra-código indicativa de um modo de intra-previsão para um bloco codificado. Novamente, as técnicas das figura 7A são discutidas com relação ao exemplo do codificador de vídeo 20 para fins de exemplo. A figura 7A geralmente fornece detalhes adicionais para a etapa 110 da figura 6. As etapas do método ilustrado na figura 7A podem ser realizadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser adicionadas e determinadas etapas omitidas, sem se distanciar das técnicas dessa descrição.
[00164] O codificador de vídeo 20 pode determinar um contexto de codificação para um bloco atual (120), como discutido acima. Da mesma forma, o codificador de vídeo 20 pode selecionar uma tabela de índice de modo de intra- previsão modificada com base em um contexto de codificação para o bloco (122A). Os dados de configuração do codificador de vídeo 20 podem fornecer uma indicação da tabela de índice de modo de intra-previsão modificada, e em alguns exemplos, uma tabela de índice de modo de intra- previsão, para o contexto do bloco. Adicionalmente, o codificador de vídeo 20 pode determinar um modo de intra- previsão mais provável para uso na codificação do bloco com base no contexto de codificação para o bloco (124A). Novamente, os dados de configuração do codificador de vídeo 20 podem fornecer uma indicação do modo de intra-previsão mais provável para o contexto de bloco.
[00165] Como discutido acima, o codificador de vídeo 20 pode selecionar um modo de intra-previsão para o bloco, para uso na codificação real do bloco (126A). O codificador de vídeo 20 pode determinar se o modo de intra-previsão selecionado é o mesmo que o modo de intra-previsão mais provável para o bloco, com base no contexto do bloco (128A). Se o modo selecionado for o modo mais provável (“SIM” na ramificação de 128A), o codificador de vídeo 20 pode, com base no modo mais provável, codificar uma indicação do modo de intra-previsão utilizado para codificar o bloco utilizando um único bit, por exemplo, ‘0’ ou ‘1’ (130A).
[00166] Quando o modo selecionado não é o modo mais provável (“NÃO” em 128A), o codificador de vídeo 20 pode determinar um índice de modo para o modo de intra-previsão (122A), por exemplo, a partir de uma tabela de índice de modo de intra-previsão. Em alguns exemplos, os índices de modo podem ser valores globais independentemente do contexto, enquanto em outros exemplos, os dados de configuração do codificador de vídeo 20 podem mapear cada contexto em uma dentre uma pluralidade de tabelas de índice de modo de intra-previsão. O codificador de vídeo 20 pode determinar adicionalmente um índice de modo para o modo intra-previsão mais provável. O codificador de vídeo 20 pode então determinar se o índice de modo para o modo de intra-previsão selecionado é menor que o índice de modo para o modo de intra-previsão mais provável no contexto para o bloco (134A).
[00167] Quando o índice de modo para o modo de intra- previsão selecionado é menor que o índice de modo para o modo de intra-previsão mais provável (ramificação “SIM” de 134A), o codificador de vídeo 20 pode determinar uma palavra-código a partir da tabela de índice de modo de intra-previsão modificada para o contexto do bloco correspondendo ao índice de modo para o modo de intra- previsão selecionado. Mais particularmente, o codificador de vídeo 20 pode enviar, utilizando um processo CABAC, a palavra-código mapeada em índice de modo de intra-previsão modificado igual ao índice de modo para o modo de intra- previsão selecionado (136A).
[00168] Por outro lado, quando o índice de modo para o modo de intra-previsão selecionado é maior que o índice de modo para o modo de intra-previsão mais provável (ramificação “NÃO” de 134A), o codificador de vídeo 20 pode determinar uma palavra-código a partir da tabela de índice de modo de intra-previsão modificada para o contexto do bloco correspondendo a uma vez menor que o índice de modo para o modo de intra-previsão selecionado. Mais particularmente, o codificador de vídeo 20 pode enviar, utilizando um processo CABAC, a palavra-código mapeada em índice de modo de intra-previsão modificado igual a uma vez menor que o índice de modo para o modo de intra-previsão selecionado (138A).
[00169] Visto que o modo de intra-previsão mais provável é sinalizado separadamente, a tabela de índice de modo de intra-previsão modificado não precisa mapear uma palavra- código adicional em índice para o modo de intra-previsão mais provável. Portanto, o índice de modo de intra-previsão modificado igual ao índice de modo para o modo de intra- previsão mais provável pode ser mapeado em índice de modo que é uma vez maior que o índice de modo para o modo de intra-previsão mais provável, dessa forma. Dessa forma, se houver K modos de intra-previsão disponíveis para o bloco, a tabela de índice de modo de intra-previsão modificado só precisa fornecer palavras-código para K-1 índices de modo de intra-previsão modificados, além da palavra-código de bit único indicativa de se o modo de intra-previsão mais provável é utilizado para codificar o bloco.
[00170] A figura 7B é um fluxograma ilustrando um método ilustrativo para a seleção de uma palavra-código indicativa de um modo de intra-previsão para um bloco codificado. Novamente, as técnicas da figura 7B podem ser implementadas em qualquer processador adequado, apesar de as técnicas da figura 7B serem discutidas com relação ao exemplo de codificador de vídeo 20 para fins de exemplo. A figura 7B geralmente fornece detalhes adicionais para a etapa 110 da figura 6, para casos onde dois modos mais prováveis são utilizados. As etapas do método ilustrado na figura 7B podem ser realizadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser somadas e determinadas etapas omitidas, sem se distanciar das técnicas dessa descrição.
[00171] O codificador de vídeo 20 pode determinar um contexto de codificação para um bloco atual (120B), como discutido acima. Da mesma forma, o codificador de vídeo 20 pode selecionar uma tabela de índice de modo de intra- previsão modificado com base em um contexto de codificação para o bloco (122B). Os dados de configuração do codificador de vídeo 20 podem fornecer uma indicação da tabela de índice de modo de intra-previsão modificado, e em alguns exemplos, uma tabela de índice de modo de intra- previsão, para o contexto do bloco. Adicionalmente, o codificador de vídeo 20 pode determinar um primeiro modo de intra-previsão mais provável e um segundo modo de intra- previsão mais provável para codificar o bloco com base no contexto de codificação par ao bloco (124B). Novamente, os dados de configuração do codificador de vídeo 20 pode fornecer uma indicação dos modos de intra-previsão mais prováveis para o contexto do bloco.
[00172] Como discutido acima, o codificador de vídeo 20 pode selecionar um modo de intra-previsão para o bloco, para uso na codificação real do bloco (126B). O codificador de vídeo 20 pode determinar se o modo de intra-previsão selecionado é o mesmo que um dos modos de intra-previsão mais prováveis para o bloco, com base no contexto do bloco (128B). Se o modo selecionado for um modo mais provável (“SIM” em 128B), então o codificador de vídeo 20 pode codificar, com base nos modos mais prováveis, uma indicação do modo de intra-previsão utilizado para codificar o bloco utilizando uma serie inicial de bits, tal como dois bits que incluem um primeiro bit para indicar que o modo real é um dos modos mais prováveis e um segundo bit para indicar qual dos modos mais prováveis é o modo real (130B).
[00173] Quando o modo selecionado não é um dos modos mais prováveis (ramificação “NÃO” do 128B), o codificador de vídeo 20 pode determinar um índice de modo para o modo de intra-previsão selecionado (122B), por exemplo, a partir de uma tabela de índice de modo de intra-previsão. Em alguns exemplos, os índices de modo podem ser valores globais independentemente do contexto, enquanto em outros exemplos, os dados de configuração do codificador de vídeo 20 podem mapear cada contexto em uma pluralidade de tabelas de índice de modo de intra-previsão. O codificador de vídeo 20 pode determinar adicionalmente os índices de modo para os modos de intra-previsão mais prováveis. O codificador de vídeo 20 pode então determinar se o índice de modo para o modo de intra-previsão selecionado é menor que os índices de modo para o primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável no contexto para o bloco (134B).
[00174] Quando o índice de modo para o modo de intra- previsão selecionado é menor que os índices de modo para ambos os modos de intra-previsão mais prováveis (ramificação “SIM” de 134B), codificador de vídeo 20 pode determinar uma palavra-código a partir da tabela de índice de modo de intra-previsão modificada para o contexto do bloco correspondendo ao índice de modo para o modo de intra-previsão selecionado. Mais particularmente, o codificador de vídeo 20 pode utilizar a palavra-código mapeada para o índice de modo de intra-previsão modificado igual ao índice de modo para o modo de intra-previsão selecionado (136B).
[00175] Por outro lado, quando o índice de modo para o modo de intra-previsão selecionado não é menor que os índices de modo para ambos os modos de intra-previsão mais prováveis (ramificação “NÃO” de 134B), o codificador de vídeo 20 pode então determinar se o índice de modo para o modo de intra-previsão selecionado é maior que ou igual aos índices de modo para o primeiro modo de intra-previsão mais provável e segundo modo de intra-previsão mais provável no contexto para o bloco (138B). Quando o índice de modo para o modo de intra-previsão selecionado é maior que ou igual aos índices de modo para ambos os modos de intra-previsão mais prováveis (ramificação “SIM” de 138B), o codificador de vídeo 20 pode determinar uma palavra-código a partir da tabela de índice de modo de intra-previsão modificada para o contexto do bloco correspondendo ao índice de modo para o modo de intra-previsão selecionado. Mais particularmente, o codificador de vídeo 20 pode determinar uma palavra-código a partir da tabela de índice de modo de intra-previsão modificada para o contexto do bloco correspondendo a menos dois do que o índice de modo para o modo de intra-previsão selecionado. Mais particularmente, o codificador de vídeo 20 pode enviar, utilizando um processo CABAC, a palavra- código mapeada para o índice de modo de intra-previsão modificado igual a duas vezes menor que o índice de modo para o modo de intra-previsão selecionado (140B).
[00176] Quando o índice de modo para o modo de intra- previsão não é menor que os índices de modo para ambos os modos de intra-previsão mais prováveis (ramificação “NÃO” de 134B) e quando o índice de modo para o modo de intra- previsão selecionado não é igual a ou maior que os índices de modo para ambos os modos de intra-previsão mais prováveis (ramificação “NÃO” em 138B), então o índice de modo para o modo de intra-previsão selecionado é maior que ou igual ao índice de modo para o primeiro modo de intra- previsão mais provável, mas menor que o índice de modo para o segundo modo de intra-previsão mais provável, o codificador de vídeo 20 pode determinar uma palavra-código a partir da tabela de índice de modo de intra-previsão modificado para o contexto do bloco correspondendo ao índice de modo para o modo de intra-previsão selecionado. Mais particularmente, o codificador de vídeo 20 pode enviar, utilizando um processo CABAC, a palavra-código mapeada para o índice de modo de intra-previsão modificado igual a uma vez menor que o índice de modo para o modo de intra-previsão selecionado (142B).
[00177] Visto que um primeiro bit ou segundo bit são utilizados para sinalizar os modos mais prováveis da forma descrita acima, a tabela de índice de modo de intra- previsão modificado não precisa mapear as palavras-código adicionais em índice para os modos de intra-previsão mais prováveis. Dessa forma, se houver K modos de intra-previsão disponíveis para o bloco, a tabela de índice de modo de intra-previsão modificado só precisa fornecer palavras- código para K-2 índices de modo de intra-previsão modificados.
[00178] A figura 8 é um fluxograma ilustrando um método ilustrativo para a decodificação intra-previsão de um bloco de dados de vídeo. As técnicas da figura 8 podem ser geralmente realizadas por qualquer unidade de processamento ou processador, seja implementado em hardware, software, firmware ou uma combinação dos mesmos, e quando implementada em software ou firmware, o hardware correspondente pode ser fornecido para executar as instruções para o software ou firmware. Para fins ilustrativos, as técnicas da figura 8 são descritas com relação ao decodificador de vídeo 30 (figuras 1 e 4) apesar de poder ser compreendido que outros dispositivos podem ser configurados para realizar técnicas similares. Ademais, as etapas ilustradas na figura 8 podem ser realizadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser adicionadas e determinadas etapas omitidas, sem se distanciar dos ensinamentos dessa descrição.
[00179] O decodificador de vídeo 30 pode determinar uma palavra-código para um bloco codificado de modo de intra- previsão utilizando um processo CABAC (150). A palavra- código pode representar geralmente o modo de intra-previsão utilizado para codificar o bloco e, da mesma forma, o modo de intra-previsão a ser utilizado para decodificar o bloco. O decodificador de vídeo 30 pode determinar um contexto de codificação para o bloco de uma forma similar ao do codificador de vídeo 20 (152), por exemplo, com base em um tamanho do bloco e/ou modos de intra-previsão de blocos vizinhos, tal como um bloco vizinho acima e/ou um bloco vizinho para a esquerda.
[00180] O decodificador de vídeo 30 pode selecionar adicionalmente uma tabela de índice de modo de intra- previsão modificado para o bloco com base no contexto de codificação determinado para o bloco (154). O decodificador de vídeo 30 também pode, em alguns exemplos, determinar uma tabela de índice de modo de intra-previsão no contexto, enquanto em outros exemplos, os índices de modo de intra- previsão podem ser fixos e aplicados a todos os contextos de forma global. O decodificador de vídeo 30 pode determinar adicionalmente um ou mais modos de intra- previsão mais prováveis para o contexto do bloco (156).
[00181] O decodificador de vídeo 30 pode então determinar um modo de intra-previsão real para uso na decodificação do bloco utilizando a tabela de palavra-código selecionada, os modos de intra-previsão mais prováveis e a palavra-código recebida (158). Por exemplo, se a palavra-código compreende um único bit ou série de bits indicando se o modo selecionado é o modo mais provável, então o decodificador de vídeo 30 pode utilizar o bit único ou série de bits para determinar se os modos de intra-previsão mais prováveis devem ser utilizados para decodificar o bloco. Se o modo selecionado for determinado como não sendo um modo mais provável, então o decodificador de vídeo 30 pode determinar um índice de modo de intra-previsão modificado com base na palavra-código, utilizando a tabela de índice de modo de intra-previsão modificado e com base no índice de modo de intra-previsão modificado, o decodificador de vídeo 30 podendo determinar o modo de intra-previsão utilizado para codificar o bloco.
[00182] O decodificador de vídeo 30 pode utilizar o modo de intra-previsão determinado para decodificar o bloco (160). Por exemplo, o decodificador de vídeo 30 pode calcular um bloco de previsão para o bloco utilizando o modo de intra-previsão determinado. O decodificador de vídeo 30 pode receber adicionalmente coeficientes de transformação quantizados codificados, decodificador de vídeo esse 30 que pode decodificar, quantizar de forma invertida, e transformar de forma invertida para reconstruir um bloco residual para o bloco. O decodificador de vídeo 30 pode então adicionar o bloco de previsão e o bloco residual para formar um bloco decodificado. O decodificador de vídeo 30 pode enviar o bloco decodificador (162), que pode incluir um ou ambos o envio de bloco de vídeo decodificado para um dispositivo de exibição para exibir (por exemplo, através de um armazenador de quando), e armazenar uma cópia do bloco decodificado em um armazenador de quadro de referência par auso como um bloco de referência quando da decodificação de blocos subsequentes de dados de vídeo, por exemplo, em quadros ou fatias temporalmente separados.
[00183] A figura 9A é um fluxograma ilustrando um método ilustrativo para a determinação de um modo intra-previsão para um bloco utilizando uma palavra-código recebida indicativa do modo de intra-previsão para um bloco codificado. Novamente, as técnicas da figura 9A podem ser implementadas em qualquer processador adequado, apesar de as técnicas da figura 9A serem discutidas com relação ao exemplo do decodificador de vídeo 30 para fins de exemplo e explicação. A figura 9A geralmente fornece detalhes adicionais para a etapa 160 da figura 8. As etapas do método ilustrado na figura 9A podem ser realizadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser somadas e determinadas etapas omitidas, sem se distanciar das técnicas dessa descrição.
[00184] O decodificador de vídeo 30 pode determinar uma palavra-código para um bloco intra-codificado utilizando um processo CABAC (170A). Como discutido acima, o decodificador de vídeo 30 pode determinar um contexto de codificação para o bloco (172A), por exemplo, com base em um tamanho de bloco e/ou modos de codificação de intra- previsão dos blocos vizinhos. Com base no contexto determinado, o decodificador de vídeo 30 pode selecionar uma tabela de índice de modo de intra-previsão modificado para o bloco (174A), e determinar um modo de intra-previsão mais provável para o bloco (176A). Em alguns exemplos, o decodificador de vídeo 30 pode selecionar adicionalmente uma tabela de índice de modo de intra-previsão para o bloco com base no contexto determinado.
[00185] O decodificador de vídeo 30 pode determinar se um primeiro bit na palavra-código indica que o modo de intra- previsão selecionado é o modo mais provável. Se o modo de intra-previsão selecionado é o modo mais provável (ramificação “SIM” de 178A), o decodificador de vídeo 30 pode decodificar o bloco utilizando o modo de intra- previsão mais provável (180A). Por outro lado, se o modo de intra-previsão selecionado for um modo de intra-previsão além do modo mais provável (ramificação “NÃO” de 178A), então o decodificador de vídeo 30 pode determinar um índice de modo de intra-previsão modificado (MIPM) com base na palavra-código a partir da tabela de índice de modo de intra-previsão modificado selecionado (182A).
[00186] O decodificador de vídeo 30 pode então determinar se o índice de modo de intra-previsão modificado é menor que o índice de modo para o modo de intra-previsão mais provável para o contexto do bloco (184A). Se o índice de modo de intra-previsão modificado for menor que o índice de modo para o modo de intra-previsão mais provável (ramificação “SIM” de 184A), o decodificador de vídeo 30 pode decodificar o bloco utilizando o modo de intra- previsão possuindo um índice de modo que é igual ao índice de modo de intra-previsão modificado (186A). Por outro lado, se o índice de modo de intra-previsão modificado for maior que ou igual ao índice de modo para o modo de intra- previsão mais provável (ramificação “NÃO” de 184A), o decodificador de vídeo 30 pode decodificar o bloco utilizando o modo de intra-previsão possuindo um índice de modo que e igual ao uma vez maior que o índice de modo de intra-previsão modificado (188A).
[00187] A figura 9B é um fluxograma ilustrando um método ilustrativo para a determinação de um modo de intra- previsão para um bloco utilizando uma palavra-código recebida indicativa do modo de intra-previsão para um bloco codificado. Novamente, as técnicas da figura 9B podem ser implementadas em qualquer processador adequado, apesar de as técnicas da figura 9B serem discutidas com relação ao exemplo do decodificador de vídeo 30 para fins de exemplo e explicação. A figura 9B fornece geralmente detalhes adicionais para a etapa 160 da figura 8, em casos nos quais mais de um modo mais provável é utilizado. As etapas do método ilustrado na figura 9B podem ser realizadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser adicionadas e determinadas etapas omitidas, sem se distanciar das técnicas dessa descrição.
[00188] O decodificador de vídeo 30 pode determinar uma palavra-código para um bloco intra-codificado utilizando um processo CABAC (170B). Como discutido acima, o decodificador de vídeo 30 pode determinar um contexto de codificação para o bloco (172B), por exemplo, com base em um tamanho do bloco e/ou modos de codificação intra- previsão dos blocos vizinhos. Com base no contexto determinado, o decodificador de vídeo 30 pode selecionar uma tabela de índice de modo de intra-previsão modificado para o bloco (174B), e determinar um modo de intra-previsão mais provável para o bloco (176B). Em alguns exemplos, o decodificador de vídeo 30 pode selecionar adicionalmente uma tabela de índice de modo de intra-previsão para o bloco com base no contexto determinado.
[00189] O decodificador de vídeo 30 pode determinar se um primeiro bit ou série de bits na palavra-código indica que o modo de intra-previsão selecionado é um dos modos mais prováveis. Se o modo selecionado for um dos modos mais prováveis (ramificação “SIM” em 178B), então o decodificador de vídeo 30 pode decodificar o bloco utilizando os modos de intra-previsão mais prováveis (180B). O decodificador de vídeo 30 pode, por exemplo, receber um segundo bit ou série de bits para indicar qual dos modos mais prováveis é o modo selecionado. Por outro lado, se o primeiro bit ou série de bits indicar que o modo selecionado não é um dos modos mais prováveis (ramificação “NÃO” em 178B), o decodificador de vídeo 30 pode determinar um índice de modo de intra-previsão modificado (MIPM) com base na palavra-código a partir da tabela de índice de modo de intra-previsão modificado selecionada (182B).
[00190] O decodificador de vídeo 30 pode então determinar se o índice de modo de intra-previsão modificado é menor que o índice de modo para o primeiro modo de intra-previsão mais provável para o contexto do bloco (184B). Como explicado anteriormente, é considerado que o índice de modo para o primeiro modo mais provável seja menor que o índice de modo para o segundo modo mais provável. Portanto, se o índice de modo de intra-previsão modificado for menor que o índice de modo para o primeiro modo de intra-previsão mais provável, o mesmo também é menor que o índice de modo para o segundo modo de intra-previsão mais provável. Se o índice de modo de intra-previsão modificado for menor que o índice de modo para o primeiro modo de intra-previsão mais provável (ramificação “SIM” em 184B), então o decodificador de vídeo 30 pode decodificar o bloco utilizando o modo de intra-previsão possuindo um índice de modo que é igual ao índice de modo de intra-previsão modificado (186B). Se o índice de modo de intra-previsão modificado não for menor que o índice de modo para o primeiro modo de intra-previsão mais provável (ramificação “NÃO” em 184B), então o decodificador de vídeo 39 pode determinar se o índice de modo de intra-previsão modificado mais um é menor que o índice de modo para o segundo modo de intra-previsão mais provável para o contexto do bloco (188B). Se o índice de modo de intra-previsão modificado mais um for menor que o índice de modo para o segundo modo de intra-previsão mais provável para o contexto do bloco (ramificação “SIM” de 188B), então o decodificador de vídeo 30 pode decodificar o bloco utilizando o modo de intra-previsão possuindo um índice de modo que é igual a uma vez maior que o índice de modo de intra-previsão modificado (190B).
[00191] Se o índice de modo de intra-previsão modificado não for menor que o índice de modo para o segundo modo de intra-previsão mais provável (ramificação “NÃO” em 188B), então o decodificador de vídeo 30 pode decodificar o bloco utilizando o modo de intra-previsão possuindo um índice de modo que é igual a mais dois do que o índice de modo de intra-previsão modificado (192B).
[00192] Apesar de o método das figuras 6, 7A, 7B, 8, 9A e 9B ter sido ilustrado com relação ao mapeamento de índices de modo de intra-previsão modificados em índices de modo, deve-se compreender que as técnicas subjacentes dos métodos também podem ser utilizadas para mapear índices de palavra- código modificados em índices de palavra-código, e vice- versa, da forma descrita acima com relação aos exemplos das Tabelas 5 e 6.
[00193] A figura 10 é um diagrama conceitual ilustrando um exemplo determinado de configuração de dados 250, que indica as relações entre uma tabela de índice de modo de intra-previsão 200, uma tabela de índice de modo de intra- previsão modificado 210, e dados de contexto 220. Os dados de configuração 250 podem corresponder geralmente aos dados de configuração 66 (figura 2) ou dados de configuração 84 (figura 4). Ademais, os dados de configuração descrevendo contextos, tabelas e modos de intra-previsão mais prováveis devem ser iguais em ambos o codificador e o decodificador para um fluxo de bits determinado.
[00194] No exemplo da figura 10, a tabela de índice de modo de intra-previsão 200 inclui um conjunto de modos de intra-previsão 2021-202K (modos de intra-previsão 202) e índices correspondentes 2041 - 204K. Apesar de apenas uma tabela de índice de modo de intra-previsão 200 ser ilustrada para fins de explicação e exemplo, deve-se compreender que os dados de configuração 250 podem incluir uma pluralidade de tabelas de índice de modo de intra- previsão similares à tabela de índice de modo de intra- previsão 200. As tabelas de índice de modo de intra- previsão não precisam ter todas o mesmo tamanho, visto que o número de modos de intra-previsão disponível para um bloco pode depender do tamanho do bloco, como discutido acima com relação a, por exemplo, a Tabela 5. Os índices 204 também podem ser referidos como índices de modo de intra-previsão ou simplesmente como índices de modo.
[00195] A tabela de índice de modo de intra-previsão modificado 210 inclui índices 2121-212K-1, além de palavras- código 2141-214K-1. Dessa forma, a tabela de índice de modo intra-previsão modificado 210 compreende um registro menor (K-1) que a tabela de índice intra modo 200 (K). Como discutido acima, o modo de intra-previsão mais provável pode ser indicado utilizando-se um único bit ou série de bits, ao invés de uma das palavras-código 214. Portanto, os modos de intra-previsão além do modo de intra-previsão mais provável podem ser representados por uma das palavras- código 214. Novamente, apesar de apenas uma tabela de índice de modo de intra-previsão modificado ser ilustrada no exemplo da figura 10, deve-se compreender que os dados de configuração 250 podem incluir uma pluralidade de tabelas de índice de modo de intra-previsão modificado. Adicionalmente, o número de tabelas de índice de modo de intra-previsão modificado não precisam necessariamente ser igual ao número de tabelas de indica de intra modo. Em alguns exemplos, pode haver uma relação de muitos para um entre as tabelas de índice de intra modo e tabelas de índice de modo de intra-previsão, de modo que a mesma tabela de índice de modo possa corresponder a uma ou mais tabelas de índice de intra modo.
[00196] Adicionalmente, os dados de configuração 250 incluem dados de contexto 220, que incluem uma pluralidade de registros de contexto similares ao registro de contexto 222A. Nesse exemplo, o registro de contexto 222A inclui um indicador de intra modo mais provável 224A, o identificador de tabela de índice de modo de intra-previsão 226A, o identificador de tabela de índice de modo de intra-previsão modificado 228A, e os dados de contexto de bloco 230A. Os dados de contexto de bloco 230A podem incluir informação indicando os blocos em que o registro de contexto 222A se aplica. Por exemplo, os dados de contexto de bloco 230A podem incluir informação descrevendo um ou mais tamanhos de blocos em que o registro de contexto 222A se aplica, além de modos de intra-previsão para blocos vizinhos de blocos em que o registro de contexto 222A se aplica. Como um exemplo, os dados de contexto de bloco para um dos registros de contexto 222 podem indicar que o registro de contexto corresponde aos blocos possuindo pixels de 16x16 onde o bloco vizinho acima é codificado utilizando-se um modo de intra-previsão horizontal e onde um bloco vizinho esquerdo também é codificado utilizando-se o modo de intra- previsão horizontal.
[00197] O indicador de intra modo mais provável 224A, nesse exemplo, indica o modo de intra-previsão 202M. Em alguns exemplos, os dados de configuração 250 podem especificar uma palavra-código de único bit para uso para representar que um bloco é codificado utilizando o modo de intra-previsão mais provável. Dessa forma, para os blocos possuindo contextos correspondendo aos dados de contexto de bloco 230A, o modo de intra-previsão mais provável é o modo de intra-previsão 202M, nesse exemplo. Visto que o modo de intra-previsão 202m é o modo de intra-previsão mais provável para o registro de contexto 222A, o modo de intra- previsão 202M não precisa ser mapeado em uma das palavras- código 214 na tabela de índice de modo de intra-previsão modificado 210, e, dessa forma, pode haver uma palavra- código menor na tabela de índice de modo de intra-previsão modificado 210 do que nos modos de intra-previsão 202 na tabela de índice de intra modo 200.
[00198] Ademais, os índices de modo 204 que são menores que ao índice de modo 204M, isso é, os índices de modo 2041-204M-1, nesse exemplo, são mapeados para índices de modo de intra-previsão modificados de mesmo valor 212 da tabela de índice de modo de intra-previsão modificado 210. Por exemplo, o índice de modo 2042 é mapeado em índice de modo de intra-previsão modificado 2122, nesse exemplo, devido ao índice de modo 2042 sendo menor que o índice de modo 204M. Dessa forma, quando o codificador de vídeo 20 codifica um bloco possuindo um contexto definido pelos dados de conteúdo de bloco 230A utilizando o modo de intra- previsão 2022, o codificador de vídeo 20 pode sinalizar o modo de intra-previsão para o bloco utilizando a palavra- código 2142. Da mesma forma, quando o decodificador de vídeo 30 recebe a palavra-código 2142 para um bloco possuindo um contexto definido pelos dados de contexto de bloco 230A, o decodificador de vídeo 30 pode determinar que o modo de intra-previsão utilizado para codificar o bloco (e, da mesma forma, o modo de intra-previsão a ser utilizado para decodificar o bloco) compreende o modo de intra-previsão 2022. De forma similar, o modo de intra- previsão 202M-1 é mapeado em palavra-código 214M-1, devido ao índice de modo 204M-1 sendo mapeado em índice de modo de intra-previsão modificado 212M-1.
[00199] Por outro lado, os índices de modo 204 que são maiores que o índice de modo 204M, isso é, os índices de modo 204M-1-204K, nesse exemplo, são mapeados em índices de modo de intra-previsão modificados 212 que são uma vez menor que o índice de modo. Por exemplo, o índice de modo 204K-1 é mapeado em índice de modo intra-previsão modificado 212K-2, nesse exemplo, devido ao índice de modo 204K-1 ser maior que o índice de modo 204M. Dessa forma, quando o codificador de vídeo 20 codifica um bloco possuindo um contexto definido pelos dados de contexto de bloco 230A utilizando o modo de intra-previsão 202K-1, o codificador de vídeo 20 pode sinalizar o modo de intra-previsão para o bloco utilizando a palavra-código 214K-2. Da mesma forma, quando o decodificador de vídeo 30 recebe a palavra-código 214K-2 para um bloco possuindo um contexto definido pelos dados de contexto de bloco 230A, o decodificador de vídeo 30 pode determinar que o modo de intra-previsão utilizado para codificar o bloco (e, de forma similar, o modo de intra-previsão a ser utilizado para decodificar o bloco) compreende o modo de intra-previsão 202K-1. De forma similar, o modo de intra-previsão 202M-1 é mapeado para a palavra-código 214M, devido ao índice de modo 204M+1 ser mapeado em índice de modo de intra-previsão modificado 212M.
[00200] Dessa forma, de acordo com um modo de intra- previsão mapeado em índice de modo j, o codificador de vídeo 20 pode determinar uma palavra-código, para modos de intra-previsão além dos modos mais prováveis, utilizando a função de etapa seguinte f(j), onde m representa o índice de modo para o modo intra-previsão mais provável, e palavra-código (n) representa a palavra-código designada para o índice de modo de intra-previsão modificado n:
Figure img0010
[00201] De forma similar, de acordo com uma palavra- código para um modo de intra-previsão selecionado que não é um modo mais provável, o decodificador de vídeo 30 pode determinar um modo intra-previsão mapeado em uma palavra- código utilizando a função de etapa g(n), onde m representa o índice de modo para o modo intra-previsão mais provável e mode(j) se refere ao modo de intra-codificação mapeado no índice de modo j:
Figure img0011
[00202] Quando esses conceitos são estendidos aos exemplos onde dois modos mais prováveis são utilizados, de acordo com um modo de intra-codificação mapeado para o índice de modo j, o codificador de vídeo 20 pode determinar uma palavra-código utilizando a seguinte etapa de função f(j), onde m1 representa o índice de modo para o primeiro modo de intra-previsão mais provável, m2 representa o índice de modo para o segundo modo de intra-previsão mais provável, e a palavra-código (n) representa a palavra- código designada para o índice de modo de intra-previsão modificado n:
Figure img0012
[00203] De forma similar, de acordo com uma palavra- código, o decodificador de vídeo 30 pode determinar um modo de intra-previsão mapeado em uma palavra-código utilizando a etapa de função a seguir g(n), onde m1 representa o índice de modo para um primeiro modo de intra-previsão mais provável, m2 representa o índice de modo para um segundo modo de intra-previsão mais provável, e mode(j) se refere ao modo de intra-previsão mapeado em índice de modo j:
Figure img0013
[00204] 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 em um meio legível por computador e executadas por uma unidade de processamento com base em hardware. A mídia legível por computador pode incluir mídia de armazenamento legível por computador, que corresponde a um meio tangível tal como mídia de armazenamento de dados, ou mídia 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, a mídia legível por computador pode geralmente corresponder a (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) um meio de comunicação tal como um sinal ou onda portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que possa ser acessada por um ou mais computadores ou um ou mais processadores para recuperação de 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.
[00205] Por meio de exemplo, e não de limitação, tal mídia 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 da rede, servidor, ou outra fonte remota utilizando um cabo coaxial, cabo de fibra ótica, par torcido, linha de 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ídos na definição de meio. Deve-se compreender, no entanto, que a mídia de armazenamento legível por computador e a mídia de armazenamento de dados não incluem conexões, ondas portadoras, sinais, ou outra mídia transitória, mas, ao invés disso, são direcionados para mídia de armazenamento tangível não transitória. Disquete e disco, como utilizados 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 exposto devem ser incluídas também dentro do escopo de mídia legível por computador.
[00206] Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, circuitos integrados específicos de aplicativo (ASICs), conjuntos lógicos programáveis em campo (FPGAs), ou outros conjuntos de circuito lógico discreto ou integrado equivalente. De acordo, o termo “processador”, como utilizado aqui pode se referir a qualquer uma das estruturas 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.
[00207] 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 e dispositivos funcionais configurados para a realização das 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 de codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequado.
[00208] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações em anexo.

Claims (8)

1. Método de decodificação de dados de vídeo, o método compreendendo: determinar um primeiro modo de intra-previsão mais provável, m1, e um segundo modo de intra-previsão mais provável, m2, para um bloco atual de dados de vídeo com base em um contexto para o bloco atual; realizar (150) um processo de codificação aritmética binária adaptativa com base em contexto, CABAC, para determinar uma palavra-código recebida, em que a palavra-código recebida corresponde a um índice de modo de intra-previsão modificado; determinar um índice de modo de intra-previsão, j, por comparar o índice de modo de intra-previsão modificado a um índice de modo de intra-previsão para o primeiro modo mais provável, m1, e um índice de modo de intra-previsão para o segundo modo mais provável, m2; selecionar, com base em um mapeamento de índices de modo de intra-previsão para modos de intra-previsão, um modo intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável para decodificar o bloco atual, em que o modo de intra-previsão selecionado corresponde ao índice de modo de intra-previsão determinado, em que cada um dos primeiro modo de intra-previsão mais provável e segundo modo de intra-previsão mais provável corresponde a um índice de modo de intra-previsão respectivo; o método CARACTERIZADO por: em que quando o índice de modo de intra-previsão modificado mais um for maior do que ou igual ao índice de modo de intra-previsão para o primeiro modo de intra- previsão mais provável e maior do que ou igual ao índice de modo de intra-previsão para o segundo modo de intra- previsão mais provável, selecionar o modo de intra-previsão tendo um índice de modo de intra-previsão que é dois maior do que o índice de modo de intra-previsão modificado; em que quando o índice de modo de intra-previsão modificado for menor do que um índice de modo para o primeiro modo de intra-previsão mais provável e menor do que um índice de modo para o segundo modo de intra-previsão mais provável, selecionar o modo de intra-previsão tendo um índice de modo igual ao índice de modo de intra-previsão modificado; em que quando o índice de modo de intra-previsão modificado mais um for maior do que ou igual a um índice de modo para o primeiro modo de intra-previsão mais provável e menor do que um índice de modo para o segundo modo de intra-previsão mais provável, selecionar o modo de intra- previsão correspondendo a um índice de modo que é um maior do que o índice de modo de intra-previsão modificado; decodificar (160) o bloco atual utilizando o modo de intra-previsão selecionado.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO por compreender adicionalmente determinar o contexto para o bloco atual com base pelo menos em parte em modos de intra-previsão para pelo menos um dentre um bloco vizinho esquerdo ao bloco atual e um bloco vizinho acima do bloco atual e preferivelmente compreendendo adicionalmente determinar o contexto para o bloco atual com base pelo menos em parte em um tamanho do bloco codificado e em particular em que cada um dos modos de intra-previsão corresponde a um índice de modo de intra-previsão respectivo.
3. Método, de acordo com a reivindicação 1, CARACTERIZADO por compreender adicionalmente: determinar mais de dois modos de intra-previsão mais prováveis.
4. Aparelho (30) para decodificação de vídeo, compreendendo: mecanismos para determinar (74) um primeiro modo de intra-previsão mais provável, m1, e um segundo modo de intra-previsão mais provável, m2, para um bloco atual de dados de vídeo com base em um contexto para o bloco atual; mecanismos para realizar (50B) um processo de codificação aritmética binária adaptativa com base em contexto, CABAC, para determinar uma palavra-código recebida, em que a palavra-código recebida corresponde a um índice de modo de intra-previsão modificado; mecanismos para determinar um índice de modo de intra-previsão, j, por comparar o índice de modo de intra- previsão modificado a um índice de modo de intra-previsão para o primeiro modo mais provável, m1, e um índice de modo de intra-previsão para o segundo modo mais provável, m2; mecanismos para selecionar, com base em um mapeamento de índices de modo de intra-previsão para modos de intra-previsão, um modo intra-previsão além do primeiro modo de intra-previsão mais provável e o segundo modo de intra-previsão mais provável para decodificar o bloco atual, em que o modo de intra-previsão selecionado corresponde ao índice de modo de intra-previsão determinado, em que cada um dos primeiro modo de intra- previsão mais provável e segundo modo de intra-previsão mais provável corresponde a um índice de modo de intra- previsão respectivo; o aparelho CARACTERIZADO por: em que quando o índice de modo de intra-previsão modificado mais um for maior do que ou igual ao índice de modo de intra-previsão para o primeiro modo de intra- previsão mais provável e maior do que ou igual ao índice de modo de intra-previsão para o segundo modo de intra- previsão mais provável, selecionar o modo de intra-previsão tendo um índice de modo de intra-previsão que é dois maior do que o índice de modo de intra-previsão modificado; em que quando o índice de modo de intra-previsão modificado for menor do que um índice de modo para o primeiro modo de intra-previsão mais provável e menor do que um índice de modo para o segundo modo de intra-previsão mais provável, selecionar o modo de intra-previsão tendo um índice de modo igual ao índice de modo de intra-previsão modificado; em que quando o índice de modo de intra-previsão modificado mais um for maior do que ou igual a um índice de modo para o primeiro modo de intra-previsão mais provável e menor do que um índice de modo para o segundo modo de intra-previsão mais provável, selecionar o modo de intra- previsão correspondendo a um índice de modo que é um maior do que o índice de modo de intra-previsão modificado; mecanismos para decodificar (55B) o bloco atual utilizando o modo de intra-previsão selecionado.
5. Aparelho, de acordo com a reivindicação 4, CARACTERIZADO pelo decodificador de vídeo ser adicionalmente configurado para determinar o contexto para o bloco atual com base pelo menos em parte em modos de intra-previsão para pelo menos um dentre um bloco vizinho esquerdo ao bloco atual e um bloco vizinho acima do bloco atual e preferivelmente em que o decodificador de vídeo é adicionalmente configurado para determinar o contexto para o bloco atual com base pelo menos em parte em um tamanho do bloco atual e em particular em que cada um dos modos de intra-previsão corresponde a um índice de modo respectivo.
6. Método de codificação de dados de vídeo, o método compreendendo: determinar (124B) um primeiro modo de intra- previsão mais provável, m1, e um segundo modo de intra- previsão mais provável, m2, para um bloco atual de dados de vídeo com base em um contexto de codificação para o bloco atual; codificar o bloco atual utilizando um dos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e do segundo modo de intra-previsão mais provável; determinar um índice de modo de intra-previsão para o um dos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e do segundo modo de intra- previsão mais provável; determinar um índice de modo de intra-previsão modificado ao comparar o índice de modo de intra-previsão para o um dos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e do segundo modo de intra- previsão mais provável a um índice de modo de intra- previsão para o primeiro modo de intra-previsão mais provável, m1, e um índice de modo de intra-previsão para o segundo modo de intra-previsão mais provável, m2; selecionar a partir de uma tabela de palavras- código compreendendo uma pluralidade de palavras-código correspondentes aos índices de modo de intra-previsão modificados, uma palavra-código correspondendo ao índice de intra-previsão modificado, em que cada um dos primeiro modo de intra-previsão mais provável e segundo modo de intra- previsão mais provável corresponde a um índice de modo de intra-previsão respectivo; o método CARACTERIZADO por: em que quando o índice de modo de intra-previsão modificado mais um for maior do que ou igual ao índice de modo de intra-previsão para o primeiro modo de intra- previsão mais provável e maior do que ou igual ao índice de modo de intra-previsão para o segundo modo de intra- previsão mais provável, selecionar o modo de intra-previsão tendo um índice de modo de intra-previsão que é dois maior do que o índice de modo de intra-previsão modificado; em que quando o índice de modo de intra-previsão modificado for menor do que um índice de modo para o primeiro modo de intra-previsão mais provável e menor do que um índice de modo para o segundo modo de intra-previsão mais provável, selecionar o modo de intra-previsão tendo um índice de modo igual ao índice de modo de intra-previsão modificado; em que quando o índice de modo de intra-previsão modificado mais um for maior do que ou igual a um índice de modo para o primeiro modo de intra-previsão mais provável e menor do que um índice de modo para o segundo modo de intra-previsão mais provável, selecionar o modo de intra- previsão correspondendo a um índice de modo que é um maior do que o índice de modo de intra-previsão modificado; codificar a palavra-código a partir da tabela de palavras-código ao realizar um processo de codificação aritmética binária adaptativa com base em contexto, CABAC.
7. Aparelho para codificação de dados de vídeo, o aparelho compreendendo: mecanismos para determinar um primeiro modo de intra-previsão mais provável, m1, e um segundo modo de intra-previsão mais provável, m2, para um bloco atual de dados de vídeo com base em um contexto de codificação para o bloco atual; mecanismos para codificar o bloco atual utilizando um dos modos de intra-previsão além do primeiro modo de intra-previsão mais provável, m1, e do segundo modo de intra-previsão mais provável, m2; mecanismos para determinar um índice de modo de intra-previsão para o um dos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e do segundo modo de intra-previsão mais provável; mecanismos para determinar um índice de modo de intra-previsão modificado ao comparar o índice de modo de intra-previsão para o um dos modos de intra-previsão além do primeiro modo de intra-previsão mais provável e do segundo modo de intra-previsão mais provável a um índice de modo de intra-previsão para o primeiro modo de intra- previsão mais provável, m1, e um índice de modo de intra- previsão para o segundo modo de intra-previsão mais provável, m2; mecanismos para selecionar, a partir de uma tabela de palavras-código compreendendo uma pluralidade de palavras-código correspondentes aos índices de modo de intra-previsão modificados, uma palavra-código correspondendo ao índice de intra-previsão modificado, em que cada um dos primeiro modo de intra-previsão mais provável e segundo modo de intra-previsão mais provável corresponde a um índice de modo de intra-previsão respectivo; o aparelho CARACTERIZADO por: em que quando o índice de modo de intra-previsão modificado mais um for maior do que ou igual ao índice de modo de intra-previsão para o primeiro modo de intra- previsão mais provável e maior do que ou igual ao índice de modo de intra-previsão para o segundo modo de intra- previsão mais provável, selecionar o modo de intra-previsão tendo um índice de modo de intra-previsão que é dois maior do que o índice de modo de intra-previsão modificado; em que quando o índice de modo de intra-previsão modificado for menor do que um índice de modo para o primeiro modo de intra-previsão mais provável e menor do que um índice de modo para o segundo modo de intra-previsão mais provável, selecionar o modo de intra-previsão tendo um índice de modo igual ao índice de modo de intra-previsão modificado; em que quando o índice de modo de intra-previsão modificado mais um for maior do que ou igual a um índice de modo para o primeiro modo de intra-previsão mais provável e menor do que um índice de modo para o segundo modo de intra-previsão mais provável, selecionar o modo de intra- previsão correspondendo a um índice de modo que é um maior do que o índice de modo de intra-previsão modificado; mecanismos para codificar a palavra-código a partir da tabela de palavras-código ao realizar um processo de codificação aritmética binária adaptativa com base em contexto, CABAC.
8. Memória CARACTERIZADA por compreender instruções armazenadas na mesma que, quando executadas, fazem com que um ou mais processadores realizem o método conforme definido em qualquer uma das reivindicações de 1 a 3 ou 6.
BR112013017423-4A 2011-01-06 2012-01-05 Indicação de seleção de modo intra-previsão para codificação de vídeo utilizando cabac BR112013017423B1 (pt)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201161430520P 2011-01-06 2011-01-06
US61/430,520 2011-01-06
US201161446402P 2011-02-24 2011-02-24
US61/446,402 2011-02-24
US201161448623P 2011-03-02 2011-03-02
US61/448,623 2011-03-02
US13/343,573 2012-01-04
US13/343,573 US8913662B2 (en) 2011-01-06 2012-01-04 Indicating intra-prediction mode selection for video coding using CABAC
PCT/US2012/020346 WO2012094506A1 (en) 2011-01-06 2012-01-05 Indicating intra-prediction mode selection for video coding using cabac

Publications (2)

Publication Number Publication Date
BR112013017423A2 BR112013017423A2 (pt) 2020-09-01
BR112013017423B1 true BR112013017423B1 (pt) 2022-06-07

Family

ID=46455223

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112013017423-4A BR112013017423B1 (pt) 2011-01-06 2012-01-05 Indicação de seleção de modo intra-previsão para codificação de vídeo utilizando cabac

Country Status (17)

Country Link
US (1) US8913662B2 (pt)
EP (1) EP2661890B1 (pt)
JP (1) JP5731013B2 (pt)
KR (1) KR101518157B1 (pt)
CN (1) CN103299628B (pt)
AU (1) AU2012204302B2 (pt)
BR (1) BR112013017423B1 (pt)
CA (1) CA2823948C (pt)
DK (1) DK2661890T3 (pt)
ES (1) ES2692387T3 (pt)
HU (1) HUE039795T2 (pt)
IL (1) IL226974A (pt)
MY (1) MY164378A (pt)
RU (1) RU2554545C2 (pt)
SG (1) SG191201A1 (pt)
SI (1) SI2661890T1 (pt)
WO (1) WO2012094506A1 (pt)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2452499A1 (en) * 2009-07-06 2012-05-16 Thomson Licensing Methods and apparatus for spatially varying residue coding
US11284072B2 (en) 2010-08-17 2022-03-22 M&K Holdings Inc. Apparatus for decoding an image
US10085019B2 (en) * 2010-08-17 2018-09-25 M&K Holdings Inc. Method for restoring an intra prediction mode
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
WO2012092763A1 (en) * 2011-01-07 2012-07-12 Mediatek Singapore Pte. Ltd. Method and apparatus of improved intra luma prediction mode coding
WO2012134246A2 (ko) * 2011-04-01 2012-10-04 엘지전자 주식회사 엔트로피 디코딩 방법 및 이를 이용하는 디코딩 장치
US9762900B2 (en) * 2011-06-17 2017-09-12 Lg Electronics Inc. Method and apparatus for encoding/decoding video in intra prediction mode
US8929455B2 (en) * 2011-07-01 2015-01-06 Mitsubishi Electric Research Laboratories, Inc. Method for selecting transform types from mapping table for prediction modes
BR112013014374B8 (pt) 2011-09-13 2022-08-30 Mediatek Singapore Pte Ltd Método e aparelho para codificação de modo intra em hevc
WO2013062194A1 (ko) * 2011-10-24 2013-05-02 (주)인터앱 복원 블록을 생성하는 방법 및 장치
US9154796B2 (en) * 2011-11-04 2015-10-06 Qualcomm Incorporated Intra-mode video coding
US9088796B2 (en) * 2011-11-07 2015-07-21 Sharp Kabushiki Kaisha Video decoder with enhanced CABAC decoding
US20130114686A1 (en) * 2011-11-08 2013-05-09 Sharp Laboratories Of America, Inc. Video decoder with enhanced cabac motion vector decoding
JP2013126093A (ja) * 2011-12-14 2013-06-24 Sony Corp 画像処理装置及び画像処理方法
WO2013106986A1 (en) * 2012-01-16 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of intra mode coding
AU2012200319B2 (en) 2012-01-19 2015-11-26 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the significance map for residual coefficients of a transform unit
AU2012200345B2 (en) * 2012-01-20 2014-05-01 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding the significance map residual coefficients of a transform unit
US20150172653A1 (en) * 2012-07-05 2015-06-18 Thomson Licensing Video coding and decoding method with adaptation of coding modes and corresponding encoder and decoder
US9503723B2 (en) 2013-01-11 2016-11-22 Futurewei Technologies, Inc. Method and apparatus of depth prediction mode selection
US9426473B2 (en) 2013-02-01 2016-08-23 Qualcomm Incorporated Mode decision simplification for intra prediction
US9148667B2 (en) 2013-02-06 2015-09-29 Qualcomm Incorporated Intra prediction mode decision with reduced storage
US9369708B2 (en) 2013-03-27 2016-06-14 Qualcomm Incorporated Depth coding modes signaling of depth data for 3D-HEVC
US9516306B2 (en) * 2013-03-27 2016-12-06 Qualcomm Incorporated Depth coding modes signaling of depth data for 3D-HEVC
US10904551B2 (en) 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
WO2014172387A1 (en) * 2013-04-15 2014-10-23 Huawei Technologies Co., Ltd. Method and apparatus of depth prediction mode selection
US9787989B2 (en) * 2013-06-11 2017-10-10 Blackberry Limited Intra-coding mode-dependent quantization tuning
JP6359101B2 (ja) 2013-10-14 2018-07-18 マイクロソフト テクノロジー ライセンシング,エルエルシー ビデオ及び画像の符号化及び復号のためのイントラブロックコピー予測モードの特徴
US11109036B2 (en) 2013-10-14 2021-08-31 Microsoft Technology Licensing, Llc Encoder-side options for intra block copy prediction mode for video and image coding
US10506254B2 (en) 2013-10-14 2019-12-10 Microsoft Technology Licensing, Llc Features of base color index map mode for video and image coding and decoding
US11032568B2 (en) 2013-11-27 2021-06-08 Hfi Innovation Inc. Method of video coding using prediction based on intra picture block copy
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
KR102258427B1 (ko) 2014-01-03 2021-06-01 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 비디오 및 이미지 코딩/디코딩에서의 블록 벡터 예측
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
WO2015131323A1 (en) 2014-03-04 2015-09-11 Microsoft Technology Licensing, Llc Block flipping and skip mode in intra block copy prediction
US9455743B2 (en) * 2014-05-27 2016-09-27 Qualcomm Incorporated Dedicated arithmetic encoding instruction
EP4354856A2 (en) 2014-06-19 2024-04-17 Microsoft Technology Licensing, LLC Unified intra block copy and inter prediction modes
US10085028B2 (en) * 2014-06-26 2018-09-25 Futurewei Technologies, Inc. Method and device for reducing a computational load in high efficiency video coding
CA3171803A1 (en) 2014-09-30 2016-04-07 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US9591325B2 (en) 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
US10659783B2 (en) 2015-06-09 2020-05-19 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
FR3051309A1 (fr) * 2016-05-10 2017-11-17 Bcom Procedes et dispositifs de codage et de decodage d'un flux de donnees representatif d'au moins une image
CN108737841B (zh) * 2017-04-21 2020-11-24 腾讯科技(深圳)有限公司 编码单元深度确定方法及装置
US10609414B2 (en) * 2017-05-08 2020-03-31 Qualcomm Incorporated Context modeling for transform coefficient coding
US10630978B2 (en) * 2017-05-12 2020-04-21 Blackberry Limited Methods and devices for intra-coding in video compression
US10484695B2 (en) 2017-10-23 2019-11-19 Google Llc Refined entropy coding for level maps
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
US10771781B2 (en) * 2018-03-12 2020-09-08 Electronics And Telecommunications Research Institute Method and apparatus for deriving intra prediction mode
US10645381B2 (en) 2018-04-30 2020-05-05 Google Llc Intra-prediction for smooth blocks in image/video
WO2019240493A1 (ko) * 2018-06-12 2019-12-19 한국전자통신연구원 문맥 적응적 이진 산술 부호화 방법 및 장치
KR20210046804A (ko) * 2018-09-07 2021-04-28 주식회사 비원영상기술연구소 영상 부호화/복호화 방법 및 장치
GB2580084B (en) 2018-12-20 2022-12-28 Canon Kk Video coding and decoding
CN111010577B (zh) * 2018-12-31 2022-03-01 北京达佳互联信息技术有限公司 一种视频编码中帧内帧间联合预测的方法和设备及介质
US11172197B2 (en) * 2019-01-13 2021-11-09 Tencent America LLC Most probable mode list generation scheme
EP3939313A4 (en) * 2019-03-12 2022-12-21 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR PERFORMING INTERCODING IN VIDEO CODING
US11405638B2 (en) * 2019-03-17 2022-08-02 Tencent America LLC Method and apparatus for video coding by determining intra prediction direction based on coded information of neighboring blocks

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0155784B1 (ko) 1993-12-16 1998-12-15 김광호 영상데이타의 적응형 가변장 부호화/복호화방법
KR970009408B1 (ko) 1994-01-18 1997-06-13 대우전자 주식회사 인터/인트라 테이블 선택 회로
US6765964B1 (en) 2000-12-06 2004-07-20 Realnetworks, Inc. System and method for intracoding video data
EP1649697B1 (en) * 2000-12-06 2008-09-17 RealNetworks, Inc. Intra coding video data apparatuses
US7978765B2 (en) 2002-03-22 2011-07-12 Realnetworks, Inc. Context-adaptive macroblock type encoding/decoding methods and apparatuses
JP4130780B2 (ja) * 2002-04-15 2008-08-06 松下電器産業株式会社 画像符号化方法および画像復号化方法
US7170937B2 (en) 2002-05-01 2007-01-30 Texas Instruments Incorporated Complexity-scalable intra-frame prediction technique
US7289674B2 (en) * 2002-06-11 2007-10-30 Nokia Corporation Spatial prediction based intra coding
MXPA04012133A (es) 2002-06-11 2005-04-19 Nokia Corp Prediccion espacial basada en intra-codificacion.
US7194137B2 (en) 2003-05-16 2007-03-20 Cisco Technology, Inc. Variable length coding method and apparatus for video compression
JP2007043651A (ja) * 2005-07-05 2007-02-15 Ntt Docomo Inc 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、動画像復号装置、動画像復号方法及び動画像復号プログラム
US7778472B2 (en) * 2006-03-27 2010-08-17 Qualcomm Incorporated Methods and systems for significance coefficient coding in video compression
US8565314B2 (en) 2006-10-12 2013-10-22 Qualcomm Incorporated Variable length coding table selection based on block type statistics for refinement coefficient coding
JP2008199100A (ja) 2007-02-08 2008-08-28 Toshiba Corp 可変長符号復号装置
US7535387B1 (en) * 2007-09-10 2009-05-19 Xilinx, Inc. Methods and systems for implementing context adaptive binary arithmetic coding
BRPI0818444A2 (pt) 2007-10-12 2016-10-11 Qualcomm Inc codificação adaptativa de informação de cabeçalho de bloco de vídeo
NO328295B1 (no) 2007-12-20 2010-01-25 Tandberg Telecom As VLC-fremgangsmate og -innretning
US8891615B2 (en) * 2008-01-08 2014-11-18 Qualcomm Incorporated Quantization based on rate-distortion modeling for CABAC coders
WO2009094349A1 (en) * 2008-01-22 2009-07-30 Dolby Laboratories Licensing Corporation Adaptive motion information cost estimation with dynamic look-up table updating
US8761253B2 (en) 2008-05-28 2014-06-24 Nvidia Corporation Intra prediction mode search scheme
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
KR101507344B1 (ko) * 2009-08-21 2015-03-31 에스케이 텔레콤주식회사 가변 길이 부호를 이용한 인트라 예측모드 부호화 방법과 장치, 및 이를 위한기록 매체
EP2514210A4 (en) * 2009-12-17 2014-03-19 Ericsson Telefon Ab L M METHOD AND DEVICE FOR VIDEO CODING
KR102268821B1 (ko) * 2010-04-09 2021-06-23 엘지전자 주식회사 비디오 데이터 처리 방법 및 장치
US20120106640A1 (en) * 2010-10-31 2012-05-03 Broadcom Corporation Decoding side intra-prediction derivation for video coding

Also Published As

Publication number Publication date
DK2661890T3 (en) 2018-11-19
US20120177118A1 (en) 2012-07-12
CA2823948C (en) 2015-09-29
IL226974A (en) 2017-05-29
RU2554545C2 (ru) 2015-06-27
WO2012094506A1 (en) 2012-07-12
HUE039795T2 (hu) 2019-02-28
EP2661890A1 (en) 2013-11-13
MY164378A (en) 2017-12-15
RU2013136381A (ru) 2015-02-20
CA2823948A1 (en) 2012-07-12
US8913662B2 (en) 2014-12-16
ES2692387T3 (es) 2018-12-03
KR101518157B1 (ko) 2015-05-06
SI2661890T1 (sl) 2018-10-30
AU2012204302A1 (en) 2013-07-18
BR112013017423A2 (pt) 2020-09-01
JP2014506067A (ja) 2014-03-06
KR20130121932A (ko) 2013-11-06
CN103299628B (zh) 2016-10-05
EP2661890B1 (en) 2018-07-25
SG191201A1 (en) 2013-07-31
AU2012204302B2 (en) 2015-05-28
CN103299628A (zh) 2013-09-11
JP5731013B2 (ja) 2015-06-10

Similar Documents

Publication Publication Date Title
BR112013017423B1 (pt) Indicação de seleção de modo intra-previsão para codificação de vídeo utilizando cabac
EP2622864B1 (en) Indicating intra-prediction mode selection for video coding
KR101632776B1 (ko) 비디오 코딩에 대한 구문 엘리먼트들의 공동 코딩
BR112021004492A2 (pt) codificação por transformada múltipla adaptativa
BR112013007563B1 (pt) Filtro de intra suavização para codificação de vídeo
BR112013031197B1 (pt) Método e dispositivo para codificação de vídeo, e memória legível por computador
BR112016021153B1 (pt) Modificação de profundidades de bits na codificação de transformada de espaço-cor
BR112013032601B1 (pt) Seleção de candidatos a modo de junção e modo de predição adaptativa de vetor de movimento unificados
BR112016015998B1 (pt) Sinalização de resolução de vetor de movimento adaptativa para codificação de vídeo
BR112014026750B1 (pt) Codificação de parâmetro de quantização (pq) em codificação de vídeo
BR112014011060B1 (pt) Número de redução de contextos para codificação aritmética binária adaptativa de contexto
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
AU2012267737A1 (en) Enhanced intra-prediction mode signaling for video coding using neighboring mode
BR112013032141B1 (pt) Método e aparelho para codificar dados de vídeo e memória legível por comutador
BR112017016159B1 (pt) Contextos para unidades de árvore de codificação grandes
BR112014023466B1 (pt) Derivação de contexto para codificação de última posição para codificação de vídeo
BR112021015212A2 (pt) Redução de bin codificado regular para codificação de coeficiente usando limiar
PT2591600E (pt) Adaptar o conjunto de possíveis transformações de frequência com base no tamanho do bloco e modo intra
BR112016021144B1 (pt) Método e dispositivo de codificação e decodificação de dados de vídeo, e memória legível por computador

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B15K Others concerning applications: alteration of classification

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

Ipc: H04N 19/11 (2006.01), H04N 19/13 (2006.01), H04N 1

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 05/01/2012, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.