BR112013013650B1 - 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 - Google Patents

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 Download PDF

Info

Publication number
BR112013013650B1
BR112013013650B1 BR112013013650-2A BR112013013650A BR112013013650B1 BR 112013013650 B1 BR112013013650 B1 BR 112013013650B1 BR 112013013650 A BR112013013650 A BR 112013013650A BR 112013013650 B1 BR112013013650 B1 BR 112013013650B1
Authority
BR
Brazil
Prior art keywords
scan order
block
coordinates
coordinate
video
Prior art date
Application number
BR112013013650-2A
Other languages
English (en)
Other versions
BR112013013650A2 (pt
Inventor
Muhammed Zeyd Coban
Yunfei Zheng
Rajan Laxman Joshi
Marta Karczewicz
Joel Sole Rojals
Original Assignee
Velos Media International Limited
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 Velos Media International Limited filed Critical Velos Media International Limited
Publication of BR112013013650A2 publication Critical patent/BR112013013650A2/pt
Publication of BR112013013650B1 publication Critical patent/BR112013013650B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6035Handling of unkown probabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements

Abstract

CODIFICAÇÃO DE POSIÇÃO DE ÚLTIMO COEFICIENTE SIGNIFICATIVO DE UM BLOCO DE VÍDEO COM BASE EM UMA ORDEM DE VARREDURA PARA O BLOCO EM CODIFICAÇÃO DE VÍDEO Em um exemplo, é descrito um aparelho para codificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo, em que o aparelho inclui um codificador de vídeo configurado para codificar coordenadas x e y, que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura, e codificar coordenadas x e y permutadas, que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura, em que a segunda ondem de varredura é diferente da primeira ordem de varredura.

Description

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 RELAÇÃO CRUZADA A PEDIDOS RELACIONADOS
O pedido reivindica o benefício do pedido provisório U.S. No. 61/419.740, depositado a 3 de dezembro de 2010, do pedido provisório U.S. No. 61/426.426, depositado a 22 de dezembro de 2010, do pedido provisório U.S. No. 61/426.360, depositado a 22 de dezembro de 2010, e do pedido provisório U.S. No. 61/426.372, depositado a 22 de dezembro de 2010, o conteúdo inteiro de cada um dos quais sendo aqui incorporado à guisa de referência.
CAMPO DA INVENÇÃO
Esta descrição refere-se à codificação de vídeo e, mais especificamente, à codificação de informações de sintaxe relacionadas com os coeficientes de um bloco de vídeo.
DESCRIÇÃO DA TÉCNICA ANTERIOR
Capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, que incluem televisões digitais, sistemas de difusão direto digitais, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou de mesa, computadores tablet, leitores de e-books, câmeras digitais, dispositivos de gravação digitais, tocadores de meios digitais, dispositivos de jogar de vídeo, consoles para jogos de vídeo, telefones celulares ou de rádio-satélite, os chamados “smartphones”, dispositivos de teleconferência de vídeo, dispositivos de fluxo contínuo de vídeo e semelhantes. Os dispositivos de vídeo digitais implementam técnicas de compactação de vídeo, tais como as descritas nos padrões definidos pelo MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação Avançada de Vídeo (AVC), o padrão de Codificação de Vídeo de Alta Eficácia (HEVC) atualmente em desenvolvimento e extensões de tais padrões.
Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de maneira mais eficaz pela implementação de tais técnicas de compactação de vídeo.
As técnicas de compactação de vídeo efetuam predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzirem ou removerem a redundância inerente a sequências de vídeo. Para codificação de vídeo baseada em blocos, uma fatia de vídeo (isto é, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser particionada em blocos de vídeo, que podem ser também referidos como blocos de árvore, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados utilizando predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem utilizar predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e as imagens de referência podem ser referidas como quadros de referência.
A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais indicando a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para compactação adicional, os dados residuais podem ser transformados do domínio de pixel em um domínio de transformada, do que resultam coeficientes de transformada residuais, que podem ser então quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em um arranjo bidimensional, podem ser varridos para produzir um vetor unidimensional de coeficientes de transformada, e a codificação por entropia pode ser aplicada para obter ainda mais compactação.
SUMÁRIO DA INVENÇÃO
Esta descrição descreve técnicas para codificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo, que incluem técnicas para codificar informações que identificam a posição de um último coeficiente não zero, ou “significativo”, dentro do bloco de acordo com uma ordem de varredura associada ao bloco, isto é, informações de posição do último coeficiente significativo para o bloco. As técnicas desta descrição podem aperfeiçoar a eficácia de codificação de informações de posição do último coeficiente significativo para blocos de dados de vídeo utilizadas para codificar os blocos pela codificação de informações de posição do último coeficiente significativo para um bloco específico com base em informações que identificam a ordem de varredura associada ao bloco, isto é, informações sobre ordem de varredura para o bloco. Em outras palavras, as técnicas podem aperfeiçoar a compactação das informações de posição do último coeficiente significativo para o bloco quando as informações são codificadas. As técnicas desta descrição podem também permitir que os sistemas de codificação tenham menos complexidade com relação a outros sistemas, quando da codificação das informações de posição do último coeficiente significativo para os blocos, pela codificação de informações de posição do último coeficiente significativo para um bloco específico com a utilização de estatísticas comuns quando uma de uma série de ordens de varredura é utilizada para codificar o bloco.
Em um exemplo, a eficácia de codificação pode ser aperfeiçoada, e a complexidade do sistema de codificação pode ser reduzida, pela codificação de coordenadas x e y que indicam uma posição do último coeficiente significativo dentro de um bloco específico de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura, e pela codificação de coordenadas x e y "trocadas” ou permutadas que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura.
Neste exemplo, as primeira e segunda ordens de varredura podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas). Por causa da simetria entre as primeira e segunda ordens de varredura, a probabilidade da coordenada x compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada y compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Da mesma maneira, a probabilidade da coordenada y compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada x compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Em outras palavras, as coordenadas x e y, quando a ordem de varredura compreende a primeira ordem de varredura, podem ter, cada uma, a mesma probabilidade, ou probabilidade semelhante, de compreender o dado valor das coordenadas x e y permutadas, respectivamente, quando a ordem de varredura compreende a segunda ordem de varredura. Sendo assim, as coordenadas x e y e as coordenadas x e y permutadas podem ser codificadas utilizando estatísticas comuns para fins de codificação por entropia adaptativa ao contexto, o que pode resultar na utilização de sistemas de codificação que têm menos complexidade com relação a outros sistemas. Além disto, as estatísticas comuns podem ser atualizadas com base nas coordenadas x e y e nas coordenadas x e y permutadas, o que pode resultar na maior precisão das estatísticas em comparação com estatísticas semelhantes que utilizam outras técnicas e, portanto, na codificação mais eficaz das respectivas coordenadas.
Em outro exemplo, a eficácia de codificação pode ser aperfeiçoada pela codificação de informações de posição do último coeficiente significativo para um bloco de dados de vídeo de maneira incremental, na medida necessária, o que pode resultar na codificação mais eficaz das informações. Além disto, nos casos em que é necessário codificar as informações em sua totalidade, a eficácia de codificação pode ser aperfeiçoada pela codificação das informações com a utilização da codificação por entropia adaptativa ao contexto, tal que as estatísticas utilizadas para codificar as informações sejam selecionadas com base, pelo menos em parte, na ordem de varredura associada ao bloco. A codificação das informações desta maneira pode resultar na utilização de estatísticas mais precisas do que quando se utilizam outros métodos e, mais uma vez, na codificação mais eficaz das informações de posição do último coeficiente significativo para o bloco.
As técnicas desta descrição podem ser utilizadas com qualquer metodologia de codificação por entropia adaptativa ao contexto, inclusive a CABAC, a codificação por entropia de particionamento de intervalos de probabilidade (PIPE), ou outra metodologia de codificação por entropia adaptativa ao contexto. A CABAC é descrita nesta descrição para fins de exemplificação, mas sem limitação quanto às técnicas amplamente descritas nesta descrição. Além disto, as técnicas podem ser aplicadas à codificação de outros tipos de dados de maneira geral, como, por exemplo, além de dados de vídeo.
Por conseguinte, as técnicas desta descrição podem permitir a utilização de métodos de codificação mais eficazes com relação a outros métodos e a utilização de sistemas de codificação que têm menos complexidade com relação a outros sistemas, quando se codificam as informações de posição do último coeficiente significativo para um ou mais blocos de dados de vídeo. Desta maneira, pode haver uma economia de bits relativa para um fluxo de bits codificado que inclui as informações e uma redução relativa na complexidade para o sistema utilizado para codificar as informações, quando se utilizam as técnicas desta descrição.
Em um exemplo, um método para codificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo inclui codificar coordenadas x e y que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura e codificar coordenadas x e y permutadas, que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura, em que a segunda ordem de varredura é diferente da primeira ordem de varredura.
Em outro exemplo, um aparelho para codificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo inclui um codificador de vídeo configurado para codificar coordenadas x e y que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura e codificar coordenadas x e y permutadas, que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura, em que a segunda ordem de varredura é diferente da primeira ordem de varredura.
Em outro exemplo, um dispositivo para codificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo inclui mecanismos para codificar coordenadas x e y que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura e mecanismos para codificar coordenadas x e y permutadas, que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura, em que a segunda ordem de varredura é diferente da primeira ordem de varredura.
As técnicas descritas nesta descrição podem ser implementadas em hardware, software, firmware ou combinações deles. Se implementadas em hardware, um aparelho pode ser concretizado como um circuito integrado, um processador, uma lógica discreta ou qualquer combinação deles. Se implementadas em software, o software pode ser executado em um ou mais processadores, tais como um microprocessador, um circuito integrado de aplicação específica (ASIC), uma matriz de portas programável no campo (FPGA) ou um processador de sinais digitais (DSP). O software que executa as técnicas pode ser inicialmente armazenado em meio legível por computador tangível e carregado e executado no processador.
Por conseguinte, esta descrição contempla também um meio legível por computador que compreende instruções que, quando executadas, fazem com que um processador codifique coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo, em que as instruções fazem com que o processador codifique coordenadas x e y que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura e codifique coordenadas x e y permutadas, que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura, em que a segunda ordem de varredura é diferente da primeira ordem de varredura.
Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição que se segue. Outras feições, objetos e vantagens serão evidentes com a descrição e os desenhos, e com as reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
A Figura 1 é um diagrama de blocos que mostra um exemplo de sistema de codificação e decodificação que pode implementar técnicas para codificar de maneira eficaz informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo, compatíveis com as técnicas desta descrição.
A Figura 2 é um diagrama de blocos que mostra um exemplo de codificador de vídeo que pode implementar técnicas para codificar de maneira eficaz informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo, compatíveis com as técnicas desta descrição.
A Figura 3 é um diagrama de blocos que mostra um exemplo de decodificador de vídeo que pode implementar técnicas para decodificar de maneira eficaz informações de posição do último coeficiente significativo codificadas com base em informações sobre ordem de varredura para um bloco de dados de vídeo, compatíveis com as técnicas desta descrição.
As Figuras 4A-4C são diagramas conceptuais que mostram um exemplo de um bloco de dados de vídeo e informações de posição de coeficientes significativos e informações de posição do último coeficiente significativo correspondentes.
As Figuras 5A-5C são diagramas conceptuais que mostram exemplos de blocos de dados de vídeo varridos com a utilização de uma ordem de varredura em ziguezague, uma ordem de varredura horizontal e uma ordem de varredura vertical.
As Figuras 6A-6C são diagramas conceptuais que mostram exemplos de blocos de dados de vídeo para os quais informações de posição do último coeficiente significativo são armazenadas com base em informações sobre ordem de varredura, em conformidade com as técnicas desta descrição.
A Figura 7 é um fluxograma que mostra um exemplo de um método para codificar de maneira eficaz informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo, em conformidade com as técnicas desta descrição.
A Figura 8 é um fluxograma que mostra um exemplo de um método para codificar de maneira eficaz informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo, em conformidade com as técnicas desta descrição.
A Figura 9 é um fluxograma que mostra um exemplo de um método para decodificar de maneira eficaz informações de posição do último coeficiente significativo codificadas com base em informações sobre ordem de varredura para um bloco de dados de vídeo, em conformidade com as técnicas desta descrição.
A Figura 10 é um fluxograma que mostra outro exemplo de um método para codificar de maneira eficaz informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo, em conformidade com as técnicas desta descrição.
A Figura 11 é um fluxograma que mostra outro exemplo de um método para decodificar de maneira eficaz informações de posição do último coeficiente significativo codificadas com base em informações sobre ordem de varredura para um bloco de dados de vídeo, em conformidade com as técnicas desta descrição.
DESCRIÇÃO DETALHADA DA INVENÇÃO
Esta descrição descreve técnicas para codificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo, que incluem técnicas para codificar informações que identificam a posição de um último coeficiente não zero, ou “significativo”, dentro do bloco de acordo com uma ordem de varredura associada ao bloco, isto é, informações de posição do último coeficiente significativo para o bloco. As técnicas desta descrição podem aperfeiçoar a eficácia de codificação de informações de posição do último coeficiente significativo para blocos de dados de vídeo utilizadas para codificar os blocos pela codificação de informações de posição do último coeficiente significativo para um bloco específico com base em informações que identificam a ordem de varredura associada ao bloco, isto é, informações sobre ordem de varredura para o bloco. Em outras palavras, as técnicas podem aperfeiçoar a compactação das informações de posição do último coeficiente significativo para os blocos quando as informações são codificadas. As técnicas desta descrição podem também permitir a utilização de sistemas de codificação que têm menos complexidade com relação a outros sistemas, quando da codificação das informações de posição do último coeficiente significativo para os blocos, pela codificação de informações de posição do último coeficiente significativo para um bloco específico com a utilização de estatísticas comuns quando uma de uma série de ordens de varredura é utilizada para codificar o bloco.
Nesta descrição, o termo "codificação” refere-se à codificação que ocorre no codificador ou à decodificação que ocorre no decodificador. Da mesma maneira, o termo "codificador” refere-se a um codificador, um decodificador ou um codificador/decodificador combinados ("CODEC”). Os termos codificador, decodificador e CODEC referem-se todos a máquinas específicas projetadas para a codificação (codificação e/ou decodificação) de dados de vídeo compatíveis com esta descrição.
Em geral, testes empíricos realizados durante o desenvolvimento destas técnicas demonstraram uma correlação entre informações de posição do último coeficiente significativo e informações sobre ordem de varredura para um bloco de dados de vídeo. Por exemplo, uma posição do último coeficiente significativo dentro de um bloco de dados de vídeo de acordo com uma ordem de varredura associada ao bloco, isto é, a ordem de varredura utilizada para codificar o bloco, pode depender da ordem de varredura. Em outras palavras, as estatísticas que indicam a probabilidade de uma dada posição dentro do bloco corresponder à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura podem variar dependendo da ordem de varredura que é utilizada para codificar o bloco. Por conseguinte, a codificação das informações de posição do último coeficiente significativo para o bloco utilizando codificação por entropia adaptativa ao contexto, tal que as estatísticas utilizadas para codificar as informações sejam selecionadas com base, pelo menos em parte, nas informações sobre ordem de varredura para o bloco, pode levar à obtenção de estatísticas mais precisas e pode resultar, assim, na codificação mais eficaz das informações de posição do último coeficiente significativo.
Além disso, de acordo com as técnicas desta descrição, as informações de posição do último coeficiente significativo para um bloco de dados de vídeo podem ser codificadas utilizando coordenadas x e y que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura associada ao bloco. Nestes casos, as estatísticas acima descritas podem indicar a probabilidade de uma coordenada, como, por exemplo, uma coordenada x ou y, que corresponde à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, compreender um dado valor (como, por exemplo, "0”, "1”, "2”, etc.). Uma vez que algumas ordens de varredura, como, por exemplo, uma primeira ordem de varredura e uma segunda ordem de varredura, podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas), a probabilidade da coordenada x compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada y compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Da mesma maneira, a probabilidade da coordenada y compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada x compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Ou seja, as coordenadas x e y, quando a ordem de varredura compreende a primeira ordem de varredura, podem ter, cada uma, a mesma probabilidade, ou probabilidade semelhante, de compreender o dado valor das coordenadas x e y "trocadas” ou permutadas, respectivamente, quando a ordem de varredura compreende a segunda ordem de varredura. Sendo assim, as coordenadas x e y e as coordenadas x e y permutadas podem ser codificadas utilizando estatísticas comuns.
Por conseguinte, a codificação das coordenadas x e y, quando a ordem de varredura compreende a primeira ordem de varredura, e a codificação das coordenadas x e y permutadas, quando a segunda ordem de varredura compreende a segunda ordem de varredura, utilizando as estatísticas comuns, podem resultar na redução da complexidade do sistema de codificação. Além disto, a atualização das estatísticas comuns com base nas coordenada x e y e nas coordenadas x e y permutadas pode levar à obtenção de estatísticas mais precisas, o que pode resultar, mais uma vez, na codificação mais eficaz das informações de posição do último coeficiente significativo.
Como exemplo, as técnicas desta descrição podem aperfeiçoar a eficácia de codificação e reduzir a complexidade do sistema pela codificação de coordenadas x e y que indicam uma posição do último coeficiente significativo dentro de um bloco específico de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura e pela codificação de coordenadas x e y permutadas que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende a segunda ordem de varredura.
Neste exemplo, as coordenadas x e y e as coordenadas x e y permutadas podem ser codificadas utilizando estatísticas comuns para fins de codificação por entropia adaptativa ao contexto, o que pode resultar na utilização de sistemas de codificação que têm menos complexidade com relação a outros sistemas, como, por exemplo, sistemas que incluem estatísticas separadas para cada ordem de varredura que pode ser utilizada dentro dos sistemas para codificar blocos de dados de vídeo. Além disto, as estatísticas comuns podem ser atualizadas com base nas coordenadas x e y e nas coordenadas x e y permutadas, o que pode resultar na maior precisão das estatísticas comparada com a de estatísticas semelhantes atualizadas utilizando outras técnicas, como, por exemplo, estatísticas atualizadas para uma ordem de varredura específica que pode ser utilizada dentro de um sistema para codificar blocos de dados de vídeo. Consequentemente, as coordenadas x e y e as coordenadas x e y permutadas, isto é, as informações de posição do último coeficiente significativo para o bloco, podem ser codificadas de maneira mais eficaz do que informações semelhantes codificadas utilizando outros métodos.
Como outro exemplo, as técnicas desta descrição podem aperfeiçoar a eficácia de codificação pela codificação de informações de posição do último coeficiente significativo para um bloco de dados de vídeo de maneira incremental, na medida necessária. Consequentemente, as informações de posição do último coeficiente significativo podem ser codificadas utilizando menos informações do que quando se utilizam outras técnicas, como, por exemplo, sempre codificando as informações de posição do último coeficiente significativo para o bloco em sua totalidade. Além disto, nos casos em que é necessário codificar as informações de posição do último coeficiente significativo em sua totalidade, a eficácia de codificação pode ser aperfeiçoada pela codificação das informações utilizando codificação por entropia adaptativa ao contexto, tal que as estatísticas utilizadas para codificar as informações sejam selecionadas, pelo menos em parte, em informações sobre ordem de varredura para o bloco. A codificação das informações de posição do último coeficiente significativo desta maneira pode resultar na utilização de estatísticas mais precisas do que quando se utilizam outros métodos, como, por exemplo, a seleção das estatísticas sem consideração das informações sobre ordem de varredura para o bloco, e, mais uma vez, na codificação mais eficaz das informações de posição do último coeficiente significativo.
Nos exemplos descritos acima, para codificar informações de posição do último coeficiente significativo para um bloco de dados de vídeo com a utilização de estatísticas, as informações podem ser codificadas pela execução de um processo de codificação aritmética binária adaptativa ao contexto (CABAC), que inclui aplicar um modelo de contexto com base em um ou mais contextos. Em outros exemplos, outros processos de codificação por entropia adaptativa ao contexto, tais como codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação por entropia com particionamento de intervalos de probabilidade (PIPE) e outros processos de codificação por entropia adaptativa ao contexto, podem utilizar também as técnicas desta descrição. A CABAC é descrita nesta descrição para fins de exemplificação, mas sem limitação quanto às técnicas amplamente descritas nesta descrição. Além disto, as técnicas podem ser aplicadas à codificação de outros tipos de dados de maneira geral, como, por exemplo, além de dados de vídeo.
A codificação de informações de posição do último coeficiente significativo para um ou mais blocos de dados de vídeo da maneira descrita acima pode permitir a utilização de métodos de codificação mais eficazes com relação a outros métodos e a utilização de sistemas de codificação que têm menos complexidade que a de outros sistemas. Desta maneira, pode haver uma economia de bits relativa para um fluxo de bits codificado que inclui as informações e uma redução relativa na complexidade para o sistema utilizado para codificar as informações, quando se utilizam as técnicas desta descrição.
A Figura 1 é um diagrama de blocos que mostra um exemplo de sistema de codificação e decodificação de vídeo 10 que pode implementar técnicas para codificação informações de posição do último coeficiente significativo para um bloco de dados de vídeo antes da codificação de informações de posição de coeficientes significativos para o bloco, compatíveis com as técnicas desta descrição. Conforme mostrado na Figura 1, o sistema 10 inclui um dispositivo de origem 12, que transmite vídeos codificados para um dispositivo de destino 14 por meio de um canal de comunicação 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma faixa de dispositivos. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem compreender dispositivos de comunicação sem fio, tais como dispositivos telefônicos sem fio, os chamados telefones celulares ou de rádio-satélite ou quaisquer dispositivos sem fio que possam comunicar informações de vídeo através de um canal de comunicação 16, e neste caso o canal de comunicação 16 é sem fio.
As técnicas desta descrição, contudo, que dizem respeito à codificação de informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo, não estão necessariamente limitadas a aplicativos ou configurações sem fio. Estas técnicas podem aplicar-se de maneira geral a qualquer cenário em que a codificação ou a decodificação é efetuada, inclusive difusões de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo da Internet de fluxo contínuo, vídeo digital codificado que é codificado em um meio de armazenamento ou recuperado e decodificado de um meio de armazenamento, ou a outros cenários. Por conseguinte, o canal de comunicação 16 não é necessário e as técnicas desta descrição podem aplicar-se a configurações nas quais a codificação é aplicada ou nas quais a decodificação é aplicada, como, por exemplo, sem qualquer comunicação de dados entre os dispositivos de codificação e decodificação.
No exemplo da Figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, um 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 esta descoberta, o codificador de vídeo 20 do dispositivo de origem 12 e/ou o decodificador de vídeo 30 do dispositivo de destino 14 podem ser configurados para aplicar as técnicas para codificar informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, tal como uma câmera externa. Da mesma maneira, o dispositivo de destino 14 pode formar interface com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
O sistema 10 mostrado da Figura 1 é meramente um exemplo. Técnicas para codificar de maneira eficaz informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo podem ser executadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora geralmente as técnicas desta descrição sejam executadas por um dispositivo de codificação de vídeo, as técnicas podem ser também executadas por um codificador/decodificador de vídeo, tipicamente referido como "CODEC”. Além do mais, as técnicas desta descrição podem ser também executadas por um processador de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo de origem 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem funcionar de maneira substancialmente simétrica, tal que cada um dos dispositivos 12, 14 inclua componentes de codificação e decodificação de vídeo.
Consequentemente, o sistema 10 pode suportar transmissão de vídeo unidirecional ou bidirecional entre os dispositivos de vídeo 12, 14, como, por exemplo, para fluxo contínuo de vídeo, repetição de vídeo, execução de difusões de vídeo ou telefonia com vídeo.
A fonte de vídeo 18 do dispositivo de origem 12 pode incluir um dispositivo de captação de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo que contém vídeo captado anteriormente e/ou uma alimentação de vídeo de um provedor de conteúdo de vídeo. Como outra alternativa, a fonte de vídeo 18 pode gerar dados baseados em gráficos de computador como a fonte de vídeo, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeos gerados por computador. Em alguns casos, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 podem formar os chamados telefones com câmera ou telefones com vídeo. Conforme mencionado acima, contudo, as técnicas descritas nesta descrição são aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicativos sem fio e/ou cabeados. Em cada caso, o vídeo captado, pré-captado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. As informações de vídeo codificadas podem ser em seguida moduladas pelo modem 22 de acordo com um padrão de comunicação e transmitidas para o dispositivo de destino 14 por meio do transmissor 24. O modem 22 pode incluir diversos misturadores, filtros, amplificadores ou outros componentes projetados para modulação de sinais. O transmissor 24 pode incluir circuitos projetados para transmitir dados, inclusive amplificadores, filtros e uma ou mais antenas.
O receptor 26 do dispositivo de destino 14 recebe informações através do canal 16, e o modem 28 demodula as informações. Mais uma vez, o processo de codificação de vídeo descrito acima pode implementar uma ou mais das técnicas aqui descritas para codificar de maneira eficaz informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura. As informações comunicadas através do canal 16 podem incluir informações de sintaxe definidas pelo codificador de vídeo 20, que é também utilizado pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento de blocos de dados de vídeo (macroblocos ou unidades de codificação, por exemplo), como, por exemplo, informações de posição do último coeficiente significativo e/ou informações sobre ordem de varredura para os blocos, e/ou outras informações. O dispositivo de exibição 32 exibe os dados de vídeo decodificados para o usuário e pode compreender qualquer um de diversos dispositivos de exibição, tais como um tubo de raios catódicos (CRT), uma tela de cristal líquido (LCD), um monitor de plasma, um dispositivo de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
No exemplo da Figura 1, o canal de comunicação 16 pode compreender qualquer meio de comunicação sem fio ou cabeado, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas ou qualquer combinação de meios sem fio e cabeados. O canal de comunicação 16 pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área estendida ou uma rede global como a Internet. O canal de comunicação 16 representa geralmente qualquer meio de comunicação adequado, ou coleção de meios de comunicação diferentes, para transmitir dados de vídeo do dispositivo de origem 12 para o dispositivo de destino 14, inclusive qualquer combinação adequada de meios cabeadas 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 de origem 12 com o dispositivo de destino 14. Em outros exemplos, os dispositivos de codificação ou decodificação podem implementar as técnicas desta descrição sem qualquer comunicação entre tais dispositivos. Por exemplo, um dispositivo de codificação pode codificar e armazenar um fluxo de bits codificado em conformidade com as técnicas desta descrição. Alternativamente, um dispositivo de decodificação pode receber ou recuperar um fluxo de bits codificado e decodificar o fluxo de bits em conformidade com as técnicas desta descrição.
O codificador de vídeo 20 e o decodificador de vídeo 30 podem funcionar de acordo com um padrão de compactação de vídeo, tal como o padrão ITU-T-H.264, alternativamente referido como MPEG-4, Parte 10, Codificação Avançada de Vídeo (AVC). As técnicas desta descrição, contudo, não estão limitadas a qualquer padrão de codificação específico. Outros exemplos incluem o MPEG-2, ITU-T H.263 e o padrão de Codificação de Vídeo de Alta Eficácia (HEVC) atualmente em desenvolvimento. Em geral, as técnicas desta descrição são descritas com relação à HEVC, mas deve ficar entendido que estas técnicas podem ser utilizadas em conjunto com outros padrões de codificação de vídeo também. Embora não mostrado na Figura 1, sob alguns aspectos o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, integrados com um codificador e decodificador de áudio e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para processar a codificação tanto de áudio quanto de vídeo em um fluxo de dados comum ou em fluxos de dados separados. Se aplicável, as unidades MUX-DEMUX podem conformar-se ao protocolo de multiplexador ITU H.223 ou a outros protocolos tais como o protocolo de datagrama de usuário (UDP).
O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, implementado como qualquer um de diversos conjuntos de circuitos de codificador e decodificador adequados, tais como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), matriz de portas programáveis no campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação deles. Cada um do codificador de vídeo 20 e do decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, ambos podendo ser integrados como parte de um codificador/decodificador combinados (CODEC) em uma respectiva câmera, computador, dispositivo móvel, dispositivo de assinante, dispositivo de difusão, conversor set-top box, servidor ou semelhantes.
Uma sequência de vídeo inclui tipicamente uma série de quadros de vídeo. Um grupo de imagens (GOP) compreende geralmente 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 descreve vários quadros incluídos no GOP. Cada quadro pode incluir dados de sintaxe de quadro que descrevem um modo de codificação para o respectivo quadro. Um codificador de vídeo, como, por exemplo, o codificador de vídeo 20, funciona tipicamente em blocos de vídeo dentro de quadros de vídeo individuais para codificar os dados de vídeo. De acordo com o padrão ITU-T H.264, um bloco de vídeo pode corresponder a um macrobloco ou a uma partição de um macrobloco. De acordo com outros padrões, como, por exemplo, a HEVC, descrita mais detalhadamente a seguir, um bloco de vídeo pode corresponder a uma unidade de codificação (a maior unidade de codificação, por exemplo) ou a uma partição de uma unidade de codificação. Os blocos de vídeo podem ter tamanhos fixos ou variáveis e podem diferir em tamanho de acordo com um padrão de codificação especificado. Cada quadro de vídeo pode incluir uma série de fatias, isto é, partes do quadro de vídeo. Cada fatia pode incluir uma série de blocos de vídeo, que podem ser dispostos em partições, também referidas como sub-blocos.
Dependendo do padrão de codificação especificado, os blocos de vídeo podem ser particionados em diversos "NxN” tamanhos de sub-bloco, tais como 16x16, 8x8, 4x4, 2x2 e assim por diante. Nesta descrição, "NxN” e "N por N” podem ser utilizados de maneira intercambiável para referir as dimensões de pixel do bloco em termos das dimensões vertical e horizontal, como, por exemplo, pixels de 16x16 ou pixels de 16 por 16. Em geral, um bloco de 16x16 terá dezesseis pixels na direção vertical (y = 16) e dezesseis pixels na direção horizontal (x = 16). Da mesma maneira, um NxN bloco tem geralmente N pixels na direção vertical e N pixels na direção horizontal, onde N representa um valor de número inteiro não negativo. Os pixels em um bloco podem ser dispostos em linhas e colunas. Além do mais, não é necessário que os blocos tenham o mesmo número de pixels nas direções horizontal e vertical. Por exemplo, os blocos podem compreender NxM pixels, onde M não é necessariamente igual a N. Como exemplo, no padrão ITU-T H.264, os blocos que têm pixels de 16 por 16 pixels em tamanho podem ser referidos como macroblocos, e os blocos que têm pixels de menos que 16 por 16 podem ser referidos como partições de um macrobloco de 16 por 16. Em outros padrões, como, por exemplo, a HEVC, os blocos podem ser definidos de maneira mais geral com relação ao seu tamanho, por exemplo, como unidades de codificação e partições delas, cada uma tendo um tamanho variável, e não fixo.
Os blocos de vídeo podem compreender blocos de dados de pixel no domínio de pixels, ou blocos de coeficientes de transformada no domínio de transformadas, como, por exemplo, em seguida à aplicação de uma transformada, tal como uma transformada de cosseno discreta (DCT), uma transformada de número inteiro, uma transformada de wavelet ou uma transformada conceptualmente semelhante, a dados residuais para um dado bloco de vídeo, em que os dados residuais representam diferenças de pixel entre os dados de vídeo para o bloco e os dados preditivos gerados para o bloco. Em alguns casos, os blocos de vídeo podem compreender blocos de coeficientes de transformada quantizados no domínio de transformadas, em que, em seguida à aplicação de uma transformada aos dados residuais para um dado bloco de vídeo, os coeficientes de transformada resultantes são também quantizados.
O particionamento de blocos serve a uma finalidade importante em técnicas de codificação de vídeo baseadas em blocos. A utilização de blocos menores para codificar dados de vídeo pode resultar em melhor predição dos dados para localizações de um quadro de vídeo que incluem níveis de detalhe elevados e pode, portanto, reduzir o erro resultante (isto é, bypass dos dados de predição de dados de vídeo de origem), representado como dados residuais. Embora reduzindo potencialmente os dados residuais, tais técnicas podem, contudo, exigir informações de sintaxe adicionais para indicar como os blocos menores são particionados com relação a um quadro de vídeo e podem resultar no aumento da taxa de bits do vídeo codificado. Por conseguinte, em algumas técnicas o particionamento de blocos pode depender da equilibração da redução desejável em dados residuais com o aumento resultante na taxa de bits dados de vídeo codificados devido às informações de sintaxe adicionais.
Em geral, os blocos e as diversas partições deles (isto é, sub-blocos) podem ser considerados blocos de vídeo. Além disto, uma fatia pode ser considerada como sendo uma série de blocos de vídeo (macroblocos ou unidades de codificação, por exemplo) e/ou sub-blocos (partições de macroblocos ou sub-unidades de codificação, por exemplo). Cada fatia pode ser uma unidade decodificável de maneira independente 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. Além disto, um GOP, também referido como sequência, pode ser definido como uma unidade decodificável.
Esforços estão atualmente em progresso para desenvolver um novo padrão de codificação de vídeo, atualmente referido como Codificação de Vídeo de Alta Eficácia (HEVC). O padrão HEVC emergente pode ser também referido como H.265. Os esforços de padronização são baseados em um modelo de dispositivo de codificação de vídeo referido como Modelo de Teste HEVC (HM). O HM supõe várias capacidades de dispositivos de codificação de vídeo através de dispositivos de acordo com o ITU-T H.264/AVC, por exemplo. Por exemplo, ao passo que o H.264 provê nove modos de codificação de intrapredição, o HM provê tantos quanto trinta e cinco modos de codificação de intrapredição, com base no tamanho do bloco que está sendo codificado com intrapredição, por exemplo.
O HM refere-se a um bloco de dados de vídeo como uma unidade de codificação (CU). Uma CU pode referir-se a uma região de imagem retangular que funciona como uma unidade básica à qual diversas ferramentas de codificação são aplicadas para compactação. No H.264, ela pode ser também chamada de macrobloco. Dados de sintaxe dentro de um fluxo de bits podem definir a maior unidade de codificação (LCU), que é a maior CU em termos do número de pixels. Em geral, uma CU tem finalidade semelhante à de um macrobloco do H.264, exceto pelo fato de que uma CU não tem uma distinção de tamanho. Assim, uma CU pode ser particionada, ou “dividida”, em sub-CUs.
Uma LCU pode estar associada a uma estrutura de dados de transformação quad-tree que indica como a LCU é particionada. Em geral, uma estrutura de dados de transformação quad-tree inclui um nó por CU de uma LCU, onde um nó-raiz corresponde à LCU e outros nós correspondem a sub-CUs da LCU. Se uma dada CU estiver dividida em quatro sub-CUs, o nó na transformação quad-tree que corresponde à CU dividida inclui quatro nós-filho, cada um dos quais corresponde a uma das sub-CUs. Cada nó da estrutura de dados de transformação quad-tree pode fornecer informações de sintaxe para a CU correspondente. Por exemplo, um nó na transformação quad-tree pode incluir um indicador dividido para a CU, o qual indica se a CU que corresponde ao nó está dividida em quatro sub-CUs. As informações de sintaxe para uma dada CU podem ser definidas recursivamente e podem depender da CU estar ou não dividida em sub-CUs.
Uma CU que não está dividida (isto é, uma CU que corresponde a um terminal, ou nó-“folha” em uma dada transformação quad-tree) pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa toda ou uma parte da CU correspondente e inclui dados para recuperar uma amostra de referência para a PU para fins de execução de predição para a CU. Por exemplo, quando a CU é codificada de maneira intramodal, a PU pode incluir dados que descrevem um modo de intrapredição para a PU. Como outro exemplo, quando a CU é codificada de maneira intermodal, a PU pode incluir dados que definem 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 (precisão de um quarto de pixel ou precisão de um oitavo de pixel, por exemplo), um quadro de referência para o qual o vetor de movimento aponta e/ou uma lista de referência (lista 0 ou lista 1, por exemplo) para o vetor de movimento. Os dados para a CU que definem a PU ou PUs da CU podem também descrever, por exemplo, o particionamento da CU na PU ou PUs. Os modos de particionamento podem diferir entre se a CU está não codificada, codificada pelo modo de intrapredição ou codificada pelo modo de interpredição.
Uma CU que tem uma ou mais PUs pode incluir também uma ou mais unidades de transformada (TUs). Em seguida à predição para uma CU que utiliza uma ou mais PUs, conforme descrito acima, um codificador de vídeo pode calcular um ou mais blocos residuais para as respectivas partes da CU que correspondem à PU ou PUs. Os blocos residuais podem representar uma diferença de pixels entre os dados de vídeo para a CU e os dados preditos para a PU ou PUs. Um conjunto de valores residuais pode ser transformado, varrido e quantizado para definir um conjunto de coeficientes de transformada quantizados. Uma TU pode definir uma estrutura de dados de partição que indica informações de partição para os coeficientes de transformada que é substancialmente semelhante à estrutura de dados de transformação quad-tree descrita acima com referência a uma CU. Uma TU não está necessariamente limitada ao tamanho de uma PU. Assim, as TUs podem ser dados maiores ou menores 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. Em um exemplo, as amostras residuais que correspondem a uma CU podem ser subdivididas em unidades menores utilizando uma estrutura de transformação quad-tree conhecida como "transformação quadtree residual” (RQT). Neste caso, os nós-folha da RQT podem ser referidos como as TUs, para as quais as amostras residuais correspondentes podem ser transformadas e quantizadas.
Em seguida à codificação intrapreditiva ou interpreditiva para a produção de dados preditivos e dados residuais, e em seguida a quaisquer transformadas (tais como a transformada de número inteiro 4x4 ou 8x8 utilizada no H.264/AVC ou uma transformada de cosseno discreta DCT) para a produção de coeficientes de transformada, pode ser efetuada a quantização dos coeficientes de transformada. A quantização refere-se de maneira geral a um processo em que os coeficientes de transformada são quantizados para reduzir possivelmente a quantidade de dados utilizados para representar os coeficientes. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para um valor de m bits durante a quantização, onde n é maior que m.
Em seguida à quantização, pode ser efetuada a codificação por entropia dos dados quantizados (isto é, coeficientes de transformada quantizados). A codificação por entropia pode conformar-se às técnicas desta descrição com relação à codificação das informações de posição do último coeficiente significativo para um bloco de dados de vídeo antes da codificação das informações de posição de coeficientes significativos para o bloco, e pode também utilizar outras técnicas de codificação por entropia, tais como a codificação de comprimento variável adaptativa ao contexto (CAVLC), CABAC, PIPE ou outra metodologia de codificação por entropia. Por exemplo, valores de coeficiente, representados como magnitudes e sinais correspondentes (“+1” ou “-1”, por exemplo) para os coeficientes de transformada quantizados, podem ser codificados utilizando técnicas de codificação por entropia.
Deve-se observar que a predição, a transformada e a quantização descritas acima podem ser executadas para qualquer bloco de dados de vídeo, como, por exemplo, para uma PU e/ou TU de uma CU, ou para um macrobloco, dependendo do padrão de codificação especificado. Por conseguinte, as técnicas desta descrição, referentes à codificação eficaz de informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo podem aplicar-se a qualquer bloco de dados de vídeo, como, por exemplo, a qualquer bloco de coeficientes de transformada quantizados, inclusive um macrobloco, ou a uma TU de uma CU. Além disto, um bloco de dados de vídeo (um macrobloco ou uma TU de uma CU, por exemplo) pode incluir cada um de um componente de luminância (Y), um primeiro componente de crominância (U) e um segundo componente de crominância (V) dos dados de vídeo correspondentes. Sendo assim, as técnicas desta descrição podem ser executadas para cada um dos componentes Y, U e V de um dado bloco de dados de vídeo.
Para codificarem blocos de dados de vídeo conforme descrito acima, informações referentes à posição de coeficientes significativos dentro de um dado bloco podem ser também geradas e codificadas. Em seguida, os valores dos coeficientes significativos podem ser codificados, conforme descrito acima. No H.264/AVC e no padrão HEVC emergente, quando se utiliza um processo de codificação por entropia adaptativa ao contexto, como, por exemplo, um processo CABAC, a posição dos coeficientes significativos dentro de um bloco de dados de vídeo pode ser codificada antes da codificação dos valores dos coeficientes significativos. O processo de codificar a posição de todos os coeficientes significativos dentro do bloco pode ser referido como codificação de mapa de significação (SM). As Figuras 4A-4C, descritas mais detalhadamente a seguir, são diagramas conceptuais que mostram um exemplo de bloco 4x4 de coeficientes de transformada quantizados e dados SM correspondentes.
Um procedimento de codificação SM típico pode ser descrito da maneira seguinte. Para um dado bloco de dados de vídeo, um SM pode ser codificado apenas se houver pelo menos um coeficiente significativo dentro do bloco. A presença de coeficientes significativos dentro de um dado bloco de dados de vídeo pode ser indicada em um padrão de bloco codificado (utilizando o elemento de sintaxe “padrão_de_bloco_codificado” ou CBP, por exemplo), que é um valor binário codificado para um conjunto de blocos (tais como blocos de luminância ou crominância) associados a uma área de pixels nos dados de vídeo. Cada bit no CBP é referido como indicador de bloco codificado (que corresponde ao elemento de sintaxe “indicador_de_bloco_codificado”, por exemplo) e utilizado para indicar se há pelo menos um coeficiente significativo dentro do seu bloco correspondente. Em outras palavras, um indicador de bloco codificado é um símbolo de um bit que indica se há quaisquer coeficientes significativos no interior de um único bloco de coeficientes de transformada, e um CBP é um conjunto de indicadores de bloco codificado para um conjunto de blocos de dados de vídeo conexos.
Se um indicador de bloco codificado indicar que não há coeficientes significativos presentes dentro do bloco correspondente (o indicador é igual a “0”, por exemplo) nenhuma informação adicional pode ser codificada para o bloco. Entretanto, se um indicador de bloco codificado indicar que pelo menos um coeficiente significativo existe dentro do bloco correspondente (o indicador é igual a "1”, por exemplo), um SM pode ser codificado para o bloco seguindo-se uma ordem de varredura de coeficientes associada ao bloco. A ordem de varredura pode definir a ordem em que a significação de cada coeficiente dentro do bloco é codificada como parte da codificação SM. Em outras palavras, a varredura pode serializar o bloco bidimensional de coeficientes em uma representação unidimensional para determinar a significação dos coeficientes. Podem ser utilizadas ordens de varredura diferentes (em ziguezague, horizontal e vertical, por exemplo). As Figuras 5A-5C, também descritas mais detalhadamente a seguir, mostram exemplos de algumas das diversas ordens de varredura que podem ser utilizadas para blocos 8x8 de dados de vídeo. As técnicas desta descrição, contudo, podem aplicar-se também a uma ampla variedade de outras ordens de varredura, inclusive um ordem de varredura diagonal, ordens de varredura que são combinações de ordens de varredura em ziguezague, horizontal, vertical e/ou diagonal, assim como ordens de varredura que são parcialmente em ziguezague, parcialmente horizontais, parcialmente verticais e/ou parcialmente diagonais. Além disto, as técnicas desta descrição podem considerar também uma ordem de varredura que seja ela mesma adaptativa, baseada em estatísticas associadas ao bloco de dados de vídeo codificados anteriormente (blocos que têm o mesmo tamanho de bloco ou modo de codificação do bloco atual que está sendo codificado, por exemplo). Por exemplo, uma ordem de varredura adaptativa pode ser a ordem de varredura associada ao bloco, em alguns casos.
Dado um indicador de bloco codificado que indica que pelo menos um coeficiente significativo existe dentro de um dado bloco, e uma ordem de varredura para o bloco, um SM para o bloco pode ser codificado da maneira seguinte. O bloco bidimensional de coeficientes de transformada quantizados pode ser primeiro mapeado em um arranjo unidimensional com a utilização da ordem de varredura. Para cada coeficiente no arranjo, seguindo-se a ordem de varredura, pode ser codificado um indicador de coeficiente significativo de um bit (que corresponde ao elemento de sintaxe “indicador_de_coef_significativo”, por exemplo). Ou seja, a cada posição no arranjo pode ser atribuído um valor binário, que pode ser fixado em “1” se o coeficiente correspondente for significativo e fixado em “0” se for não significativo (isto é, zero). Se um dado indicador de coeficiente significativo for iguala a “1”, indicando que o coeficiente correspondente é significativo, pode ser também codificado um indicador de último coeficiente significativo de um bit adicional (que corresponde ao elemento de sintaxe “indicador_de_último_coef_significativo”, por exemplo), que pode indicar se o coeficiente correspondente é o último coeficiente significativo dentro do arranjo (isto é, dentro do bloco dada a ordem de varredura). Especificamente, cada indicador de último coeficiente significativo pode ser fixado em “1” se o coeficiente correspondente for o último coeficiente significativo dentro do arranjo e fixado em “0” caso contrário. Se a última posição no arranjo for atingida desta maneira, e o processo de codificação SM não tiver sido terminado por um indicador de último coeficiente significativo igual a “1”, então pode-se inferir que o último coeficiente no arranjo (e, portanto, no bloco dada a ordem de varredura) é significativo, e nenhum indicador de último coeficiente significativo pode ser codificado para a última posição no arranjo.
As Figuras 4B-4C são diagramas conceptuais que mostram exemplos de conjuntos de indicadores de coeficientes significativos e indicadores de últimos coeficientes significativos, respectivamente, que correspondem a dados SM para o bloco mostrado na Figura 4A, apresentada em forma de mapa, e não em forma de arranjo. Deve-se observar que os indicadores de coeficientes significativos e os indicadores de últimos coeficientes significativos, conforme descrito acima, podem ser fixados em valores diferentes (por exemplo, um indicador de último coeficiente significativo pode ser fixado em "0” se o coeficiente correspondente for significativo e em "1” se não for significativo, e um indicador de último coeficiente significativo pode ser fixado em "0” se o coeficiente correspondente for o último coeficiente significativo e em "1” se não for o último coeficiente significativo) em outros exemplos.
Depois que o SM é codificado, conforme descrito acima, o valor de cada coeficiente significativo (isto é, a magnitude e o sinal de cada coeficiente significativo, indicados, por exemplo, pelos elementos de sintaxe "nível_de_aus_de_coef_menos1” e "indicador_de_sinal_de_coef”, respectivamente) no bloco pode ser também codificado.
De acordo com algumas técnicas, uma ordem de varredura fixa pode ser utilizada para codificar blocos de dados de vídeo, conforme descrito acima, como, por exemplo, a ordem de varredura em ziguezague. De acordo com outras técnicas, várias ordens de varredura podem ser utilizadas para codificar os blocos. Em alguns exemplos, pode ser utilizada a "varredura adaptativa de coeficientes” (ACS), em que a ordem de varredura é adaptada ao longo do tempo, e a ordem de varredura atualmente adaptada é utilizada para codificar um bloco específico de coeficientes em qualquer dado momento. Em ainda outras técnicas, o codificador de vídeo 20 pode testar várias ordens de varredura com base em uma ou mais métricas de eficácia de compactação e selecionar a melhor ordem de varredura para codificar os blocos. Além disto, o codificador de vídeo 20 pode indicar a ordem de varredura para o decodificador de vídeo 30 codificando um índice de ACS, que pode representar qualquer uma das várias ordens de varredura (utilizando os índices 0 para a ordem de varredura em ziguezague, 1 para a ordem de varredura horizontal e 2 para a ordem de varredura vertical, por exemplo).
De acordo com algumas técnicas, o codificador de vídeo 20 pode codificar o índice de ACS apenas quando o último coeficiente significativo não estiver localizado na primeira posição na ordem de varredura (que corresponde à posição esquerda de topo dentro do bloco, comumente referida como posição "DC”). O codificador de vídeo 20 pode codificar o índice de ACS desta maneira porque o decodificador de vídeo 30 não precisa de uma indicação da ordem de varredura utilizada pelo codificador de vídeo 20 no caso do último (e único) coeficiente significativo dentro do bloco estar localizado na posição DC, uma vez que todas as ordens de varredura possíveis podem começar com a posição DC, conforme mostrado nas Figuras 5 e 6, também descritas mais detalhadamente a seguir.
No caso do último coeficiente significativo dentro do bloco não estar localizado na posição DC, o codificador de vídeo 20 pode codificar o índice de ACS da maneira seguinte. O codificador de vídeo 20 pode codificar um primeiro sinal (“bin1”, por exemplo), que indica se a ordem de varredura é a ordem de varredura em ziguezague (bin1 = “0”, por exemplo) ou não (bin1 = “1”, por exemplo). No caso da ordem de varredura não ser a ordem de varredura em ziguezague, o codificador de vídeo 20 pode codificar um segundo sinal (“bin2”, por exemplo), que indica se a ordem de varredura é a ordem de varredura horizontal (bin2 = “0”, por exemplo), ou a ordem de varredura vertical (bina2 = “1”, por exemplo). Da mesma maneira, o decodificador de vídeo 30 pode receber e decodificar o primeiro sinal e o segundo sinal para determinar o índice de ACS. Por conseguinte, em vez de codificarem sempre o índice de ACS, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar o índice de ACS apenas quando o último coeficiente significativo não estiver localizado na posição DC.
Conforme descrito anteriormente, de acordo com as técnicas desta descrição, as informações de posição do último coeficiente significativo para um bloco específico de dados de vídeo podem ser codificadas utilizando coordenadas x e y que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura associada ao bloco. Em alguns exemplos, a coordenada x pode corresponder a um número de coluna da posição dentro do bloco, e a coordenada y pode corresponder a um número de linha da posição dentro do bloco. Por exemplo, os números de linha e coluna podem ser relativos aos números de linha e coluna que correspondem a uma posição de referência, ou de "origem”, dentro do bloco, como, por exemplo, a posição DC. Sendo assim, de acordo com estas técnicas, as informações de posição do último coeficiente significativo para um bloco de dados de vídeo podem não ser codificadas utilizando codificação SM, conforme descrito anteriormente, mas em vez disso a codificação explícita das coordenadas x e y da posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura associada ao bloco. De acordo com tais técnicas, as coordenadas x e y podem ser codificadas independentemente dos dados SM restantes (isto é, indicadores de coeficientes significativos ou informações de posição de coeficientes significativos) para o bloco. Por exemplo, as coordenadas x e y podem ser codificadas antes da codificação das informações de posição de coeficientes significativos para o bloco.
Em alguns exemplos compatíveis com as técnicas desta descrição, para codificar as coordenadas x e y, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem também determinar estatísticas que indicam a probabilidade de uma dada posição dentro do bloco corresponder à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura. Em particular, as estatísticas podem indicar a probabilidade de uma coordenada, como, por exemplo, uma coordenada x ou y, que corresponde à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, compreender um dado valor (como, por exemplo, "0”, "1”, "2”, etc.). Em outras palavras, as estatísticas podem indicar a probabilidade de cada uma das coordenadas x e y descritas anteriormente compreender um dado valor. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem determinar as estatísticas e codificar as coordenadas x e y com base nas estatísticas, utilizando codificação por entropia adaptativa ao contexto, por exemplo. Em alguns exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem determinar as estatísticas utilizando informações de posição do último coeficiente significativo para blocos de dados de vídeo codificados anteriormente, como, por exemplo, valores de coordenadas x e y para os blocos codificados anteriormente. Em outros exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem atualizar as estatísticas com base nas coordenadas x e y para refletir a probabilidade de as respectivas coordenadas compreenderem valores específicos. Conforme descrito anteriormente, as estatísticas podem variar dependendo da ordem de varredura que é utilizada para codificar o bloco.
Como um exemplo compatível com as técnicas desta descrição, para codificar as coordenadas x e y com base nas estatísticas, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto que inclui as estatísticas com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir uma das coordenadas x e y e a ordem de varredura. Neste exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode utilizar a ordem de varredura para selecionar o modelo de contexto específico que inclui as estatísticas. Ou seja, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem selecionar estatísticas únicas para codificar as coordenadas x e y quando utilizam uma ordem de varredura específica para codificar o bloco.
Além disso, nos casos em que uma coordenada (a coordenada y, por exemplo) é codificada depois de outra coordenada (a coordenada x, por exemplo), o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar a coordenada utilizando o valor da outra coordenada, codificada anteriormente, como um contexto. Ou seja, o valor de uma coordenada codificada anteriormente das coordenadas x e y pode ser utilizado para selecionar também estatísticas dentro do modelo de contexto que indicam a probabilidade da outra coordenada, atualmente codificada, compreender um dado valor. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem utilizar então as estatísticas selecionadas para codificar as coordenadas x e y pela realização de codificação por entropia adaptativa ao contexto.
Como outro exemplo compatível com as técnicas desta descrição, as coordenadas x e y podem ser, cada uma, representadas utilizando uma palavra de código unária que compreende uma sequência de um ou mais bits, ou "binários”. Em outras palavras, as coordenadas x e y podem ser "binarizadas”. Sendo assim, para codificar as coordenadas x e y com base nas estatísticas, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar cada binário de uma palavra de código que corresponde a uma coordenada específica pela realização de codificação por entropia adaptativa ao contexto. Neste exemplo, as estatísticas incluídas no modelo de contexto, que indicam a probabilidade da coordenada compreender um dado valor, podem incluir estimativas de probabilidade que indicam a probabilidade de cada binário da palavra de código que corresponde à coordenada compreender um dado valor ("0” ou "1”, por exemplo). Além disto, as estatísticas podem incluir estimativas de probabilidade para cada binário da palavra de código, dependendo da posição do respectivo binário dentro da palavra de código. Em alguns exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem determinar as estimativas de probabilidade utilizando os valores de binários correspondentes para blocos de dados de vídeo codificados anteriormente, como, por exemplo, binários de palavras de código que correspondem a coordenadas x e y para os blocos codificados anteriormente, como, por exemplo, como parte da determinação das estatísticas com base nas informações de posição do último coeficiente significativo para os blocos codificados anteriormente, conforme descrito anteriormente. Em outros exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem também atualizar as estimativas de probabilidade utilizando o valor de cada binário, como, por exemplo, como parte da atualização das estatísticas com base nas coordenadas x e y, conforme também descrito anteriormente. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem utilizar as estimativas de probabilidade para codificar cada binário pela realização de codificação por entropia adaptativa ao contexto.
Uma desvantagem das técnicas descritas acima é que, quando codificam informações de posição do último coeficiente significativo para um bloco de dados de vídeo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem utilizar estatísticas diferentes dependendo da ordem de varredura utilizada pelo codificador de vídeo 20 e/ou pelo decodificador de vídeo 30 para codificar o bloco. Em outras palavras, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem, cada um, determinar e manter (atualizar, por exemplo) uma série de conjuntos de estatísticas para codificarem informações de posição do último coeficiente significativo para blocos de dados de vídeo quando uma série de ordens de varredura é utilizada para codificar os blocos. Em alguns casos, os conjuntos de estatísticas determinados e mantidos para ordens de varredura que são simétricas entre si podem incluir as mesmas informações, ou informações semelhantes, conforme descrito anteriormente. Nestes casos, a determinação e a manutenção dos conjuntos de estatísticas podem resultar na utilização ineficaz de recursos do sistema de codificação e na complexidade desnecessária do sistema de codificação.
Outra desvantagem das técnicas descritas acima é que, quando o codificador de vídeo 20 e/ou o decodificador de vídeo 30 codificam informações de posição do último coeficiente significativo para blocos de dados de vídeo utilizando estatísticas comuns, independentemente das ordens de varredura utilizadas para codificar os blocos, as estatísticas podem não ser tão precisas quanto as estatísticas que são individualmente determinadas e mantidas (atualizadas, por exemplo) para cada ordem de varredura. Ou seja, as estatísticas comuns podem indicar probabilidades de posições dentro de um dado bloco de dados de vídeo que corresponde à posição do último coeficiente significativo dentro do bloco de acordo com uma ordem de varredura associada ao bloco de maneira menos precisa do que estatísticas individualmente determinadas e mantidas para a ordem de varredura utilizada para codificar o bloco. Nestes casos, a codificação das informações de posição do último coeficiente significativo com a utilização das estatísticas comuns pode resultar na redução da eficácia de codificação.
Ainda outra desvantagem das técnicas descritas acima é que, em alguns casos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar um bloco de dados de vídeo utilizando uma de uma série de ordens de varredura que se originam em uma posição comum dentro do bloco, como, por exemplo, a posição DC. Nestes casos, quando uma posição do último coeficiente significativo dentro do bloco de acordo com uma ordem de varredura associada ao bloco corresponde à posição comum, não há outros coeficientes significativos dentro do bloco além do coeficiente localizado na posição comum. Por conseguinte, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 não precisam codificar uma posição do último coeficiente significativo dentro do bloco. Em outras palavras, a codificação das informações de posição do último coeficiente significativo para o bloco em sua totalidade, representadas, por exemplo, utilizando coordenadas x e y, conforme descrito anteriormente, pode não ser necessária neste caso, uma vez que isto pode, mais uma vez, resultar na redução da eficácia de codificação.
Além disso, no exemplo acima, quando uma posição do último coeficiente significativo dentro do bloco não corresponde à posição comum, e as informações de posição do último coeficiente significativo para o bloco devem ser codificadas em sua totalidade, as informações podem, em alguns casos, ser codificadas utilizando estatísticas que não são precisas, como, por exemplo, estatísticas que não tiram vantagem da correlação descrita anteriormente entre as informações de posição do último coeficiente significativo e as informações sobre ordem de varredura para o bloco, o que pode, mais uma vez, resultar na redução da eficácia de codificação.
Por conseguinte, esta descrição descreve técnicas que podem permitir a codificação de informações de posição do último coeficiente significativo para um bloco de dados de vídeo de maneira mais eficaz com relação a outras técnicas e a utilização de sistemas de codificação que têm menos complexidade com relação a outros sistemas. Como exemplo, as informações de posição do último coeficiente significativo podem ser codificadas utilizando sistemas de codificação que têm menos complexidade com relação a outros sistemas pela codificação das informações com a utilização de estatísticas comuns quando uma de uma série de ordens de varredura é utilizada para codificar o bloco, como, por exemplo, pela codificação de coordenadas x e y e de coordenadas x e y permutadas que indicam as informações, dependendo da ordem de varredura utilizada para codificar o bloco. De acordo com este exemplo, as informações de posição do último coeficiente significativo podem ser também codificadas de maneira mais eficaz pela atualização das estatísticas comuns com base nas coordenadas x e y e nas coordenadas x e y permutadas, o que pode resultar na maior precisão das estatísticas. Como outro exemplo, as informações de posição do último coeficiente significativo podem ser codificadas de maneira mais eficaz pela codificação das informações de maneira incremental, na medida necessária e, quando se codificam as informações em sua totalidade, fazendo-o com base na ordem de varredura, com a utilização da ordem de varredura como um contexto, por exemplo.
Em alguns exemplos, o codificador de vídeo 20 do dispositivo de origem 12 pode ser configurado para codificar determinados blocos de dados de vídeo (um ou mais macroblocos ou TUs de uma CU, por exemplo), e o decodificador de vídeo 30 do dispositivo de destino 14 pode ser configurado para receber os dados de vídeo codificados do codificador de vídeo 20, como, por exemplo, do modem 28 e do receptor 26. De acordo com as técnicas desta descrição, como exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para codificar coordenadas x e y que indicam uma posição do último coeficiente significativo dentro de um bloco específico de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser também configurados para codificar coordenadas x e y permutadas que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura. Por exemplo, a segunda ordem de varredura pode ser diferente da primeira ordem de varredura.
Neste exemplo, a primeira ordem de varredura e a segunda ordem de varredura podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas). Por exemplo, a primeira ordem de varredura pode ser uma ordem de varredura horizontal e a segunda ordem de varredura pode ser uma ordem de varredura vertical, em que a ordem de varredura horizontal e a ordem de varredura vertical se originam em uma posição comum dentro do bloco. Por exemplo, a posição comum pode ser a posição DC, conforme descrito anteriormente.
Neste exemplo, para codificar as coordenada x e y e as coordenadas x e y permutadas, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser também configurados para determinar estatísticas que indicam a probabilidade de cada uma das coordenadas x e y compreender um dado valor, em que a codificação das coordenadas x e y e das coordenadas x e y permutadas compreende uma codificação baseada nas estatísticas. Por exemplo, a probabilidade da coordenada x compreender um dado valor pode ser utilizada para codificar a coordenada x e coordenada y permutada e a probabilidade da coordenada y compreender um dado valor pode ser utilizada para codificar a coordenada y e a coordenada x permutada. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser também configurados para atualizar as estatísticas com base nas coordenadas x e y e nas coordenadas x e y permutadas. Por exemplo, a probabilidade da coordenada x compreender um dado valor pode ser atualizada utilizando a coordenada x e a coordenada y permutada, e a probabilidade da coordenada y compreender um dado valor pode ser atualizada utilizando a coordenada y e a coordenada x permutada.
Como exemplo, para codificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui a aplicação pelo codificador de vídeo 20 e/ou pelo decodificador de vídeo 30 de um modelo de contexto que inclui as estatísticas com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir uma das coordenadas x e y, as coordenadas x e y permutadas e a ordem de varredura.
Deve-se observar que, em alguns exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser também configurados para codificar as coordenadas x e y quando a ordem de varredura compreende uma terceira ordem de varredura. Por exemplo, a terceira ordem de varredura pode ser diferente da primeira ordem de varredura e da segunda ordem de varredura. Como exemplo, a terceira ordem de varredura pode ser uma ordem de varredura em ziguezague ou uma ordem de varredura diagonal, em que a ordem de varredura em ziguezague ou diagonal se origina também na posição comum dentro do bloco, como a posição DC, por exemplo.
Neste exemplo, em alguns casos o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser também configurados para codificar informações que identificam a ordem de varredura, isto é, as informações sobre ordem de varredura para o bloco. Além disto, em alguns casos o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser também configurados para codificar informações que identificam as posições de outros coeficientes significativos dentro do bloco, isto é, as informações de posição de coeficientes significativos para o bloco.
Como outro exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para codificar coordenadas x e y que indicam uma posição do último coeficiente significativo dentro de um bloco específico de dados de vídeo de acordo com uma ordem de varredura associada ao bloco. Por exemplo, a ordem de varredura pode ser uma de uma série de ordens de varredura, em que cada uma da série de ordens de varredura se origina em uma posição comum dentro do bloco, como a posição DC, por exemplo.
Neste exemplo, para codificar as coordenadas x e y, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para codificar informações que indicam se a coordenada x corresponde à posição comum, codificar informações que indicam se a coordenada y corresponde à posição comum e, no caso da coordenada x não corresponder à posição comum e a coordenada y não corresponder à posição comum, codificar informações que identifiquem a ordem de varredura. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser também configurados para, no caso da coordenada x não corresponder à posição comum, codificar a coordenada x com base na ordem de varredura e, no caso da coordenada y não corresponder à posição comum, codificar a coordenada y com base na ordem de varredura.
Neste exemplo, para codificar a coordenada x e a coordenada y com base na ordem de varredura, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui a aplicação, pelo codificador de vídeo 20 e/ou o decodificador de vídeo 30, de um modelo de contexto com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir a ordem de varredura.
Seja como for, depois da codificação da informações de posição do último coeficiente significativo e, em alguns casos, das informações sobre ordem de varredura e das informações de posição de coeficientes significativos, isto é, dos dados SM para o bloco da maneira descrita acima, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar também o valor de cada coeficiente significativo (como, por exemplo, a magnitude o sinal de cada coeficiente significativo, indicados pelos elementos de sintaxe “nível_de_aus_de_coef_menos1” e “indicador_de_sinal_de_coef”, respectivamente) dentro do bloco.
Por exemplo, as técnicas desta descrição podem permitir que o codificador de vídeo 20 e/ou o decodificador de vídeo 30 codifiquem as informações de posição do último coeficiente significativo para o bloco de maneira mais eficaz do que quando se utilizam outros métodos e podem permitir que o codificador de vídeo 20 e/ou o decodificador de vídeo 30 tenham menos complexidade com relação a outros sistemas. Desta maneira, pode haver uma economia de bits relativa para o fluxo de bits que inclui as informações de posição do último coeficiente significativo e uma redução relativa na complexidade para o codificador de vídeo 20 e/ou o decodificador de vídeo 30 utilizados para codificar as informações, quando se utilizam as técnicas desta descrição.
O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um de diversos circuitos de codificador ou decodificador, conforme aplicável, tais como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), matriz de portas programáveis no campo (FPGAs), circuitos lógicos discretos, software, hardware, firmware ou qualquer combinação deles. Cada um do codificador de vídeo 20 e do decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, ambos podendo ser integrados como parte de um codificador/decodificador combinados (CODEC). Um aparelho que inclua o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode compreender um circuito integrado, um microprocesssador e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
A Figura 2 é um diagrama de blocos que mostra um exemplo de codificador de vídeo 20 que pode implementar técnicas para codificar de maneira eficaz informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo compatíveis com as técnicas desta descrição. O codificador de vídeo 20 pode efetuar intra e intercodificação de blocos dentro de quadros de vídeo, inclusive macroblocos, ou CUs, ou de partições ou sub-partições deles. A intracodificação conta com predição espacial para reduzir ou remover a redundância espacial em vídeo dentro de um dado quadro de vídeo. A intercodificação conta com predição temporal para reduzir ou remover a redundância temporal em vídeo dentro de quadros adjacentes de uma sequência de vídeo. O intramodo (modo I) pode referir-se a qualquer um de vários modos de compactação espacial, e intermodos, tais como o modo de predição unidirecional (modo P) ou o modo de predição bidirecional (modo B), podem referir-se a qualquer um de vários modos de compactação temporal.
Conforme mostrado na Figura 2, o codificador de vídeo 20 recebe o bloco atual de dados de vídeo dentro de um quadro de vídeo a ser codificado. No exemplo da Figura 2, o codificador de vídeo 20 inclui uma unidade de compensação de movimento 44, uma unidade de estimação de movimento 42, uma memória 64, um somador 50, um módulo de transformada 52, uma unidade de quantização 54 e uma unidade de codificação por entropia 56. Para reconstrução de blocos de vídeo, o codificador de vídeo 20 inclui também uma unidade de quantização inversa 58, um módulo de transformada inversa 60 e um somador 62. Um filtro de desblocagem (não mostrado na Figura 2) pode ser também incluído para filtrar fronteiras entre blocos para remover artefatos de blocagem do vídeo reconstruído. Se desejado, o filtro de desblocagem filtraria tipicamente a saída do somador 62.
Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou fatia de vídeo a ser codificado(a). O quadro ou fatia pode ser dividido(a) em vários blocos de vídeo. A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem efetuar codificação interpreditiva de um dado bloco de vídeo recebido com relação a um ou mais blocos em um ou mais quadros de referência, para obter compactação temporal. O módulo de intrapredição 46 pode efetuar codificação intrapreditiva de um dado bloco de vídeo recebido com relação a um ou mais blocos vizinhos no mesmo quadro ou fatia do bloco a ser codificado, para obter compactação espacial.
A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, isto é, um modo ou vários modos de intra ou intercodificação, com base em resultados de codificação (taxa de codificação e nível de distorção resultantes, por exemplo), e com base no tipo de quadro ou fatia para o quadro ou fatia, inclusive o dado bloco recebido que está sendo codificado, e fornecer o bloco intra ou intercodificado ao somador 50 para gerar dados de bloco residuais e ao somador 62 para reconstruir o bloco codificado para utilização em um quadro de referência ou fatia de referência. Em geral, a intrapredição envolve predizer o bloco atual com relação aos blocos vizinhos, codificados anteriormente, enquanto a interpredição envolve estimação de movimento e compensação de movimento para a predição temporal do bloco atual.
A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 representam os elementos de interpredição do codificador de vídeo 20. A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são mostradas separadamente para fins conceptuais. A estimação de movimento é o processo de gerar vetores de movimento, que estimam o movimento para os blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de um bloco preditivo dentro de um quadro de referência preditivo (ou outra unidade de codificação). Um bloco preditivo é um bloco considerado como correspondendo de perto ao bloco a ser codificado, em termos de diferença de pixel, e que pode ser determinado pela soma da diferença absoluta (SAD), pela soma da diferença ao quadrado (SSD) ou por outras métricas diferentes. Um vetor de movimento pode indicar também o deslocamento de uma partição de um bloco. A compensação de movimento pode envolver a busca ou geração do bloco preditivo com base no vetor de movimento determinado pela estimação de movimento. Mais uma vez, a unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser integradas funcionalmente, em alguns exemplos.
A unidade de estimação de movimento 42 pode calcular um vetor de movimento para um bloco de vídeo de um quadro intercodificado comparando o bloco de vídeo com os blocos de vídeo de um quadro de referência na memória 64. A unidade de compensação de movimento 44 pode também interpolar sub-pixels de número inteiro do quadro de referência, como, por exemplo, um quadro I ou um quadro P, para os fins desta comparação. O padrão ITU H.264, como exemplo, descreve duas listas: a lista 0, que inclui quadros de referência que têm uma ordem de exibição anterior à do quadro atual que está sendo codificado, e a lista 1, que inclui quadros de referência que têm uma ordem de exibição posterior à do quadro atual que está sendo codificado. Portanto, os dados armazenados na memória 64 podem ser organizados de acordo com estas listas.
A unidade de estimação de movimento 42 pode comparar blocos de um ou mais quadros de referência da memória 64 com um bloco a ser codificado do quadro atual, como, por exemplo, um quadro P ou um quadro B. Quando os quadros de referência na memória 64 incluem valores para sub-pixels de número inteiro, o vetor de movimento calculado pela unidade de estimação de movimento 42 pode referir-se à localização de sub-pixel de número inteiro de um quadro de referência. A unidade de estimação de movimento 42 e/ou a unidade de compensação de movimento 44 podem ser também configuradas para calcular valores para posições de sub-pixel de número inteiro de quadros de referência armazenados na memória 64 se nenhum valor para as posições de sub-pixel de número inteiro estiver armazenado na memória 64. A unidade de estimação de movimento 42 pode enviar o vetor de movimento à unidade de codificador por entropia 56 e à unidade de compensação de movimento 44. O bloco de quadros de referência identificado por um vetor de movimento pode ser referido como bloco interpreditivo ou, de maneira mais geral, bloco preditivo. A unidade de compensação de movimento 44 pode calcular dados de predição com base no bloco preditivo.
O módulo de intrapredição 46 pode intrapredizer o bloco atual, como alternativa à interpredição efetuada pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44, conforme descrito acima. Em particular, o módulo de intrapredição 46 pode determinar o modo de intrapredição a ser utilizado para codificar o bloco atual. Em alguns exemplos, o módulo de intrapredição 46 pode codificar o bloco atual utilizando diversos modos de intrapredição, como, por exemplo, durante passagens de codificação separadas, e o módulo de intrapredição 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intrapredição apropriado a ser utilizado a partir dos modos testados. Por exemplo, o módulo de intrapredição 46 pode calcular valores de distorção de taxa utilizando uma análise de distorção de taxa para os diversos modos de intrapredição testados e selecionar o modo de intrapredição que tem as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa determina geralmente o grau de distorção (ou erro) entre um bloco codificado e um bloco original, não codificado, que foi codificado para produzir o bloco codificado, assim como a taxa de bits (isto é, o número de bits) utilizada para produzir o bloco codificado. O módulo de intrapredição 46 pode calcular as razoes das distorções e taxas para os diversos blocos codificados para determinar o modo de intrapredição que apresenta o melhor valor de taxa de distorção para o bloco.
Depois de predizer o bloco atual, utilizando, por exemplo, intrapredição ou interpredição, o codificador de vídeo 20 pode formar um bloco de vídeo residual subtraindo os dados de predição calculados pela unidade de compensação de movimento 44 ou pelo módulo de intrapredição 46 do bloco de vídeo original que está sendo codificado. O somador 50 representa o componente ou componentes que podem realizar esta operação de subtração. O módulo de transformada 52 pode aplicar uma transformada, tal como uma transformada de cosseno discreta (DCT) ou uma transformada conceptualmente semelhante, ao bloco residual, produzindo um bloco de vídeo que compreende valores de coeficiente de transformada residuais. O módulo de transformada 52 pode realizar outras transformadas, tais como as definidas pelo padrão H.264, que são conceptualmente semelhantes à DCT. Podem ser também utilizadas transformadas de wavelet, transformadas de número inteiro, transformadas de sub-banda ou outros tipos de transformada. Seja como for, o módulo de transformada 52 pode aplicar a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter as informações residuais do domínio de pixels no domínio de transformadas, como, por exemplo, o domínio da frequência. A unidade de quantização 54 pode quantizar os coeficientes de transformada residuais para reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. O grau de quantização pode ser modificado pelo ajuste de um parâmetro de quantização.
Em seguida à quantização, a unidade de codificação por entropia 56 pode codificar por entropia os coeficientes de transformada quantizados, que podem incluir CAVLC, CABAC, PIPE ou outra técnica de codificação por entropia. Em seguida à 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.
Em alguns casos, a unidade de codificação por entropia 56 ou outra unidade do codificador de vídeo 20 pode ser configurada para desempenhar outras funções de codificação, além de codificar por entropia os coeficientes de transformada quantizados conforme descrito acima. Por exemplo, a unidade de codificação por entropia 56 pode construir informações de cabeçalho para o bloco (macrobloco, CU ou LCU, por exemplo), ou quadro de vídeo que contém o bloco, com elementos de sintaxe apropriados para transmissão no fluxo de bits de vídeo codificado. De acordo com alguns padrões de codificação, tais elementos de sintaxe podem incluir informações de posição do último coeficiente significativo para o bloco (como, por exemplo, para um macrobloco ou uma TU de uma CU), conforme descrito anteriormente. Também conforme descrito anteriormente, as informações de posição do último coeficiente significativo podem consumir uma alta porcentagem da taxa de bits do vídeo compactado total se codificadas de maneira ineficaz. Sendo assim, esta descrição descreve técnicas que podem permitir a codificação das informações de posição do último coeficiente significativo para o bloco de maneira mais eficaz do que quando se utilizam outros métodos. Além disto, esta descrição descreve a utilização de sistemas de codificação que têm menos complexidade com relação a outros sistemas quando se codificam as informações de posição do último coeficiente significativo para o bloco.
Em alguns exemplos, a unidade de codificação por entropia 56 do codificador de vídeo 20 pode ser configurada para codificar determinados blocos de dados de vídeo (um ou mais macroblocos ou TUs de uma CU, por exemplo). De acordo com as técnicas desta descrição, como exemplo, a unidade de codificação por entropia 56 pode ser configurada para codificar coordenadas x e y que indicam uma posição do último coeficiente significativo dentro de um bloco específico de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura. A unidade de codificação por entropia 56 pode ser também configurada para codificar coordenadas x e y permutadas que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura. Por exemplo, a segunda ordem de varredura pode ser diferente da primeira ordem de varredura.
Neste exemplo, a primeira ordem de varredura e a segunda ordem de varredura podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas). Por exemplo, a primeira ordem de varredura pode ser uma ordem de varredura horizontal e a segunda ordem de varredura pode ser uma ordem de varredura vertical, em que a ordem de varredura horizontal e a ordem de varredura vertical se originam em uma posição comum dentro do bloco, como a posição DC, por exemplo.
Especificamente, a primeira ordem de varredura e a segunda ordem de varredura podem ser, cada uma, uma ordem de varredura que pode ser utilizada pela unidade de codificação por entropia 56 para codificar o bloco. Por exemplo, as primeira e segunda ordens de varredura podem ser ordens de varredura utilizadas pelo codificador de vídeo 20 para codificar blocos de dados de vídeo e pelo decodificador de vídeo 30 para decodificar os blocos, dentro do sistema de codificação 10 correspondente que compreende o codificador de vídeo 20 e o decodificador de vídeo 30. Em alguns exemplos, as primeira e segunda ordens de varredura podem ser apenas algumas das ordens de varredura utilizadas dentro do sistema 10 para codificar os blocos. Em outros exemplos, as primeira e segunda ordens de varredura podem ser as únicas ordens de varredura utilizadas dentro do sistema 10 para codificar os blocos.
Além disso, as coordenadas x e y permutadas correspondem também às informações de posição do último coeficiente significativo para o bloco, mas são também processadas, isto é, permutadas, pela unidade de codificação por entropia 56 para permitir a codificação das informações de maneira mais eficaz do que quando se utilizam outras técnicas, conforme descrito anteriormente. Especificamente, as coordenadas x e y permutadas podem permitir a utilização de estatísticas comuns para codificar as coordenadas x e y e as coordenadas x e y permutadas que indicam as informações de posição do último coeficiente significativo para o bloco, conforme também descrito anteriormente.
Neste exemplo, para codificar as coordenadas x e y e as coordenadas x e y permutadas, a unidade de codificação por entropia 56 pode ser também configurada para determinar estatísticas que indicam a probabilidade de cada uma das coordenadas x e y compreender um dado valor, em que a codificação das coordenadas x e y e das coordenadas x e y permutadas compreende uma codificação baseada nas estatísticas. Por exemplo, a probabilidade da coordenada x compreender um dado valor pode ser utilizada para codificar a coordenada x e a coordenada y permutada, e a probabilidade da coordenada y compreender um dado valor pode ser utilizada para codificar a coordenada y e a coordenada x permutada.
Geralmente, as estatísticas podem indicar a probabilidade de uma dada posição dentro do bloco corresponder à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, quando a ordem de varredura compreende a primeira ordem de varredura. Em particular, as estatísticas podem indicar a probabilidade de uma coordenada, como, por exemplo, a coordenada x ou a coordenada y, que corresponde à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, quando a ordem de varredura compreende a primeira ordem de varredura, compreender um dado valor (como, por exemplo, “0”, “1”, “2”, etc.).
Conforme descrito anteriormente, uma vez que as primeira e segunda ordens de varredura podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas), a probabilidade da coordenada x compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada y compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Da mesma maneira, a probabilidade da coordenada y compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada x compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Ou seja, as coordenadas x e y, quando a ordem de varredura compreende a primeira ordem de varredura, podem ter, cada uma, a mesma probabilidade, ou probabilidade semelhante, de compreender o dado valor das coordenadas x e y permutadas, respectivamente, quando a ordem de varredura compreende a segunda ordem de varredura. Sendo assim, as estatísticas podem indicar também a probabilidade de cada uma das coordenadas x e y compreender um dado valor. Em alguns exemplos, a unidade de codificação por entropia 56 pode determinar as estatísticas utilizando as informações de posição do último coeficiente significativo para blocos de dados de vídeo codificados anteriormente, como, por exemplo, valores das coordenadas x e y e das coordenadas x e y permutadas para os blocos codificados anteriormente.
A unidade de codificação por entropia 56 pode ser também configurada para atualizar as estatísticas com base nas coordenadas x e y e nas coordenadas x e y permutadas, tal que a probabilidade da coordenada x compreender um dado valor seja atualizada utilizando a coordenada x e a coordenada y permutadas, e a probabilidade da coordenada y compreender um dado valor seja atualizada utilizando a coordenada y e a coordenada x permutadas. Por exemplo, as estatísticas atualizadas podem ser utilizadas para codificar informações de posição do último coeficiente significativo para blocos de dados de vídeo subsequentemente codificados da maneira descrita acima.
Como exemplo, para codificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas, a unidade de codificação por entropia 56 pode ser configurada para realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui a aplicação, pela unidade de codificação por entropia 56, de um modelo de contexto que inclui as estatísticas com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir uma das coordenadas, as coordenadas x e y permutadas e a ordem de varredura. Conforme mencionado anteriormente, além da CABAC, as técnicas descritas para intercambiar as coordenadas x e y para fins de codificação podem ser também utilizadas em outras técnicas de codificação por entropia adaptativa ao contexto, tais como CAVLC, PIPE e outras técnicas de codificação adaptativa ao contexto.
Neste exemplo, a unidade de codificação por entropia 56 pode utilizar a ordem de varredura, como, por exemplo, a ordem de varredura horizontal ou vertical, para selecionar o modelo de contexto específico que inclui as estatísticas. Ou seja, a unidade de codificação por entropia 56 pode selecionar as mesmas estatísticas para codificar as coordenadas x e y quando utiliza a primeira ordem de varredura para codificar o bloco, e para codificar as coordenadas x e y permutadas quando utiliza a segunda ordem de varredura para codificar o bloco. Além disto, nos casos em que uma coordenada (a coordenada y, por exemplo) é codificada depois de outra coordenada (a coordenada x, por exemplo), a unidade de codificação por entropia 56 pode codificar a coordenada utilizando o valor da outra coordenada, codificada anteriormente, como contexto. Ou seja, o valor de uma coordenada codificada anteriormente das coordenadas x e y ou das coordenadas x e y permutadas, dependendo da ordem de varredura utilizada para codificar o bloco, pode ser utilizado para selecionar também estatísticas dentro do modelo de contexto que indiquem a probabilidade da outra coordenada, codificada atualmente, compreender um dado valor. A unidade de codificação por entropia 56 pode utilizar então as estatísticas selecionadas para codificar as coordenadas x e y e as coordenadas x e y permutadas pela realização de codificação por entropia adaptativa ao contexto.
Conforme também descrito anteriormente, neste exemplo as coordenadas x e y e as coordenadas x e y permutadas podem ser, cada uma, representadas utilizando uma palavra de código unária que compreende uma sequência de um ou mais binários, isto é, “binarizada”. Sendo assim, para codificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas, a unidade de codificação por entropia 56 pode codificar cada binário de uma palavra de código que corresponde a uma coordenada específica pela realização de codificação por entropia adaptativa ao contexto. Neste exemplo, as estatísticas incluídas no modelo de contexto, que indicam a probabilidade da coordenada compreender um dado valor, podem incluir estimativas de probabilidade que indicam a probabilidade de cada binário da palavra de código que corresponde à coordenada compreender um dado valor (“0” ou “1”, por exemplo). Além disto, as estatísticas podem incluir estimativas de probabilidade diferentes para cada binário da palavra de código, dependendo da posição do respectivo binário dentro da palavra de código. Em alguns exemplos, a unidade de codificação por entropia 56 pode determinar as estimativas de probabilidade utilizando os valores de binários correspondentes para blocos de dados de vídeo codificados anteriormente, como, por exemplo, binários de palavras de código que correspondem a coordenadas x e y e coordenadas x e y permutadas para os blocos codificados anteriormente, como, por exemplo, como parte da determinação das estatísticas com base nas informações de posição do último coeficiente significativo para os blocos codificados anteriormente, conforme descrito anteriormente. Em outros exemplos, a unidade de codificação por entropia 56 pode também atualizar as estimativas de probabilidade utilizando o valor de cada binário, como, por exemplo, como parte da atualização das estatísticas com base nas coordenadas x e y e nas coordenadas x e y permutadas, conforme também descrito anteriormente. A unidade de codificação por entropia 56 pode utilizar as estimativas de probabilidade para codificar cada binário pela realização de codificação por entropia adaptativa ao contexto.
Como outro exemplo, em alguns casos valores diferentes de um binário de uma palavra de código unária para uma coordenada (x, por exemplo) podem resultar em estimativas de probabilidade diferentes para um binário correspondente de uma palavra de código unária para a outra coordenada (y, por exemplo). Sendo assim, quando se codifica um binário de uma palavra de código unária para uma coordenada utilizando estimativas de probabilidade que correspondem ao binário, conforme descrito acima, a utilização de estimativas de probabilidade que incluem informações sobre o valor de um binário, como, por exemplo, um binário correspondente, de uma palavra de código unária para a outra coordenada pode resultar na precisão das estimativas de probabilidade e, portanto, pode permitir codificação eficaz. Por exemplo, o binário da palavra de código unária para a outra coordenada pode ser um binário que corresponde ao binário da palavra de código unária para uma coordenada, como, por exemplo, os binários podem ser localizados nas mesmas posições de binário, ou posições de binário semelhantes, dentro das suas respectivas palavras de código. A codificação das coordenadas x e y e das coordenadas x e y (ou de coordenadas x e y que indicam informações de posição do último coeficiente significativo para um bloco de dados de vídeo, de maneira geral) desta maneira "intercalada”, com a utilização de binários codificados anteriormente como contextos, pode permitir a utilização de informações mútuas das respectivas coordenadas x e y, o que pode permitir a codificação mais eficaz das coordenadas.
Em outros exemplos, a unidade de codificação por entropia 56 pode ser configurada para codificar as coordenadas x e y e as coordenadas x e y permutadas de maneira intercalada, geralmente. Em alguns exemplos, a unidade de codificação por entropia 56 pode ser configurada para codificar binários individuais da palavra de código para as respectivas coordenadas x e y de maneira intercalada. Em outros exemplos, a unidade de codificação por entropia 56 pode ser configurada para codificar grupos de binários das palavras de código de maneira intercalada. Por exemplo, alguns binários de uma palavra de código para cada uma das coordenadas x e y podem ser codificados utilizando um primeiro modo de codificação (um modo de codificação regular, por exemplo), enquanto os binários restantes da palavra de código podem ser codificados utilizando um segundo modo de codificação (um modo de codificador por bypass, por exemplo). Sendo assim, a unidade de codificação por entropia 56 pode ser configurada para codificar um ou mais binários da palavra de código que corresponde a uma das coordenadas codificada utilizando o primeiro modo de codificação (regular, por exemplo) antes da codificação de um ou mais binários da palavra de código que corresponde à outra coordenada codificada utilizando o primeiro modo de codificação, seguida da codificação de um ou mais binários que correspondem a uma coordenada codificada utilizando o segundo modo de codificação (por bypass, por exemplo) antes da codificação de um ou mais binários da palavra de código que corresponde à outra coordenada codificada utilizando o segundo modo de codificação. Em outros exemplos, a unidade de codificação por entropia 56 pode ser configurada para codificar os binários das palavras codificadas utilizando o segundo modo de codificação de maneira conjunta.
Por conseguinte, a separação da codificação dos binários da palavra de código para cada uma das coordenadas x e y da maneira descrita acima pode permitir o agrupamento de binários codificados utilizando um modo de codificação específica (o modo de bypass, por exemplo) de maneira conjunta, o que pode aperfeiçoar o rendimento da codificação.
Em outras palavras, nos casos em que cada uma das coordenadas x e y e das coordenadas x e y permutadas compreende uma sequência de um ou mais binários, a unidade de codificação por entropia 56 pode ser configurada para codificar as coordenadas x e y e as coordenadas x e y permutadas pela realização de codificação por entropia adaptativa ao contexto, que inclui aplicar o modelo de contexto que inclui as estatísticas com base em uma das coordenadas x e y e nas coordenadas x e y permutadas. A unidade de codificação por entropia 56 pode ser configurada para codificar as respectivas coordenadas x e y pela codificação de pelo menos um binário da sequência que corresponde a uma das coordenadas pela seleção das estatísticas a partir do modelo de contexto com base, pelo menos em parte, no valor de pelo menos um binário da sequência que corresponde à outra coordenada. Além disto, a unidade de codificação por entropia 56 pode ser configurada para codificar o um ou mais binários da sequência que corresponde a uma das coordenadas e o um ou mais binários da sequência que corresponde à outra coordenada de maneira intercalada.
Por conseguinte, para codificar as informações de posição do último coeficiente significativo, a unidade de codificação por entropia 56 pode ser configurada para codificar as coordenadas x e y e as coordenadas x e y permutadas, de maneira intercalada, utilizando binários codificados anteriormente. Ou seja, a unidade de codificação por entropia 56 pode ser configurada para codificar cada binário de uma palavra de código unária para uma dada coordenada pela execução de um processo de codificação por entropia adaptativa ao contexto que inclui aplicar um modelo de contexto com base em pelo menos um contexto, em que o pelo menos um contexto pode incluir a posição do binário dentro da palavra de código unária, conforme descrito anteriormente, e no valor de um ou mais binários codificados anteriormente de uma palavra de código unária para a outra coordenada. Além disto, a unidade de codificação por entropia 56 pode ser configurada para codificar as coordenadas x e y e as coordenadas x e y permutadas de maneira intercalada, de modo geral.
Deve-se observar que, em outros exemplos compatíveis com as técnicas desta descrição, podem ser utilizados outros tipos de palavra de código, como, por exemplo, palavras de código unárias truncadas, palavras de código Golomb exponenciais, palavras de código concatenadas, assim como combinações de diversas técnicas de codificação.
Deve-se observar também que, em alguns exemplos, a unidade de codificação por entropia 56 pode ser também configurada para codificar as coordenadas x e y quando a ordem de varredura compreende uma terceira ordem de varredura. Por exemplo, a terceira ordem de varredura pode ser diferente da primeira ordem de varredura e da segunda ordem de varredura. Como exemplo, a terceira ordem de varredura pode ser uma ordem de varredura em ziguezague ou uma ordem de varredura diagonal, em que a ordem de varredura em ziguezague ou diagonal se origina também na posição comum dentro do bloco, como a posição DC, por exemplo.
Neste exemplo, a unidade de codificação por entropia 56 pode ser também configurada para codificar informações que identificam a ordem de varredura, isto é, as informações sobre ordem de varredura para o bloco. Alternativamente, conforme descrito anteriormente, a unidade de codificação por entropia 56 pode omitir a codificação das informações sobre ordem de varredura para o bloco quando a unidade de codificação por entropia 56 utiliza uma ordem de varredura adaptativa para codificar o bloco. Além disto, em alguns casos a unidade de codificação por entropia 56 pode ser também configurada para codificar informações que identificam as posições de todos os outros coeficientes significativos dentro do bloco, isto é, as informações de posição de coeficientes significativos para o bloco.
Por exemplo, as informações de posição de coeficientes significativos para o bloco podem ser representadas utilizando uma sequência de indicadores de coeficientes significativos, conforme descrito anteriormente. Conforme também descrito anteriormente, as informações de posição de coeficientes significativos podem ser codificadas pela codificação de cada indicador de coeficiente significativo da sequência pela execução de um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto com base em pelo menos um contexto, em que o pelo menos um contexto pode incluir a posição do indicador dentro do bloco de acordo com a ordem de varredura.
O modelo de contexto pode incluir estimativas de probabilidade que indicam a probabilidade de cada indicador compreender um dado valor ("0” ou "1”, por exemplo). Em alguns exemplos, a unidade de codificação por entropia 56 pode determinar as estimativas de probabilidade utilizando os valores de indicadores de coeficientes significativos para blocos de dados de vídeo codificados anteriormente. Em outros exemplos, a unidade de codificação por entropia 56 pode também atualizar as estimativas de probabilidade utilizando o valor de cada indicador para refletir a probabilidade do indicador compreender um dado valor. Por exemplo, as estimativas de probabilidade atualizadas podem ser utilizadas para codificar informações de posição de coeficientes significativos para blocos de dados de vídeo subsequentemente codificados da maneira descrita acima.
Como outro exemplo, a unidade de codificação por entropia 56 pode ser configurada para codificar coordenadas x e y que indicam uma posição do último coeficiente significativo dentro de um bloco específico de dados de vídeo de acordo com uma ordem de varredura associada ao bloco. Por exemplo, a ordem de varredura pode ser uma de uma série de ordens de varredura, em que cada uma da série de ordens de varredura se origina em uma posição comum dentro do bloco, como a posição DC, por exemplo.
Neste exemplo, para codificar as coordenadas x e y, a unidade de codificação por entropia 56 pode ser configurada para codificar informações que indicam se a coordenada x corresponde à posição comum, codificar informações que indicam se a coordenada y corresponde à posição comum e, no caso da coordenada x não corresponder à posição comum e a coordenada y não corresponder à posição comum, codificar informações que identifiquem a ordem de varredura. A unidade de codificação por entropia 56 pode ser também configurada para, no caso da coordenada x não corresponder à posição comum, codificar a coordenada x com base na ordem de varredura e, no caso da coordenada y não corresponder à posição comum, codificar a coordenada y com base na ordem de varredura.
Neste exemplo, para codificar a coordenada x e a coordenada y com base na ordem de varredura, a unidade de codificação por entropia 56 pode ser configurada para realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui a aplicação pela unidade de codificação por entropia 56 de um modelo de contexto com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir a ordem de varredura.
Além disso, como exemplo, a unidade de codificação por entropia 56 pode ser configurada para codificar uma coordenada (a coordenada y, por exemplo) depois de outra coordenada (a coordenada x, por exemplo), em que a unidade de codificação por entropia 56 pode ser configurada para codificar uma coordenada utilizando o valor da outra coordenada codificada anteriormente como contexto. Como outro exemplo, em que cada uma das coordenadas x e y compreende uma sequência de um ou mais binários, a unidade de codificação por entropia 56 pode ser configurada para codificar pelo menos um binário da sequência que corresponde a uma das coordenadas pela seleção das estatísticas do modelo de contexto com base, pelo menos em parte, no valor de pelo menos um binário, como, por exemplo, um binário correspondente, da sequência que corresponde à outra coordenada. Além disto, a unidade de codificação por entropia 56 pode ser configurada para codificar o um ou mais binários da sequência que corresponde a uma das coordenadas e o um ou mais binários da sequência que corresponde à outra coordenada de maneira intercalada.
Seja como for, depois da codificação das informações de posição do último coeficiente significativo e, em alguns casos, das informações sobre ordem de varredura e das informações de posição de coeficientes significativos, isto é, dos dados SM, para o bloco da maneira descrita acima, a unidade de codificação por entropia 56 pode codificar também o valor de cada coeficiente significativo (como, por exemplo, a magnitude e o sinal de cada coeficiente significativo, indicados pelos elementos de sintaxe “nível_de_aus_de_coef_menos1” e “indicador_de_sinal_de_coef”, respectivamente) dentro do bloco.
Por conseguinte, as técnicas desta descrição podem permitir que a unidade de codificação por entropia 56 codifique as informações de posição do último coeficiente significativo para o bloco de maneira mais eficaz do que quando se utilizam outros métodos e podem permitir que a unidade de codificação por entropia 56 tenha menos complexidade com relação a outros sistemas. Desta maneira, pode haver uma economia de bits relativa para o fluxo de bits codificado que inclui as informações de posição do último coeficiente significativo e uma redução relativa na complexidade para a unidade de codificação por entropia 56 utilizada para codificar as informações, quando se utilizam as técnicas desta descrição.
A unidade de quantização inversa 58 e o módulo de transformada inversa 60 aplicam quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio dos pixels, como, por exemplo, para utilização posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando o bloco residual a um bloco preditivo de um dos quadros da memória 64. A unidade de compensação de movimento 44 pode aplicar também um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de sub-pixel de número inteiro para utilização na estimação de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado em movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento na memória 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em um quadro de vídeo subsequente.
Desta maneira, o codificador de vídeo 20 representa um exemplo de codificador de vídeo configurado para codificar coordenadas x e y que indicam uma posição do último coeficiente não zero dentro de um bloco de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura, e codificar coordenadas x e y permutadas que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura, em que a segunda ordem de varredura é diferente da primeira ordem de varredura.
A Figura 3 é um diagrama de blocos que mostra um exemplo de decodificador de vídeo 30 que pode implementar técnicas para decodificar de maneira eficaz informações de posição do último coeficiente significativo codificadas com base em informações sobre ordem de varredura para um bloco de dados de vídeo compatíveis com as técnicas desta descrição. No exemplo da Figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, uma unidade de compensação de movimento 72, um módulo de intrapredição 74, uma unidade de quantização inversa 76, uma unidade de transformada inversa 78, uma memória 82 e um somador 80. O decodificador de vídeo 30, pode, em alguns exemplos, realizar uma passagem de decodificação geralmente correspondente à 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 predição com base em vetores de movimento recebidos da unidade de decodificação por entropia 70.
Em alguns exemplos, o decodificador de vídeo 30 pode ser configurado para receber dados de vídeo codificados (um ou mais macroblocos ou TUs de uma CU, por exemplo) do codificador de vídeo 20. De acordo com as técnicas desta descrição, como exemplo, a unidade de decodificação por entropia 70 pode ser configurada para decodificar coordenadas x e y que indicam uma posição do último coeficiente significativo dentro de um bloco específico de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura. A unidade de decodificação por entropia 70 pode ser também configurada para decodificar coordenadas x e y permutadas que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura. Por exemplo, a segunda ordem de varredura pode ser diferente da primeira ordem de varredura.
Neste exemplo, a primeira ordem de varredura e a segunda ordem de varredura podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas). Por exemplo, a primeira ordem de varredura pode ser uma ordem de varredura horizontal e a segunda ordem de varredura pode ser uma ordem de varredura vertical, em que a ordem de varredura horizontal e a ordem de varredura vertical se originam em uma posição comum dentro do bloco, como, por exemplo, a posição DC.
Especificamente, a primeira ordem de varredura e a segunda ordem de varredura podem ser, cada uma, uma ordem de varredura que pode ser utilizada pela unidade de codificação por entropia 56 para codificar o bloco. Por exemplo, as primeira e segunda ordens de varredura podem ser ordens de varredura utilizadas pelo codificador de vídeo 20 para codificar blocos de dados de vídeo e pelo decodificador de vídeo 30 para decodificar os blocos, dentro do sistema de codificação 10 correspondente que compreende o codificador de vídeo 20 e o decodificador de vídeo 30. Em alguns exemplos, as primeira e segunda ordens de varredura podem ser apenas algumas das ordens de varredura utilizadas dentro do sistema 10 para codificar os blocos. Em outros exemplos, as primeira e segunda ordens de varredura podem ser as únicas ordens de varredura utilizadas dentro do sistema 10 para codificar os blocos.
Além disso, as coordenadas x e y permutadas correspondem também às informações de posição do último coeficiente significativo para o bloco, mas são também processadas, isto é, permutadas, pela unidade de decodificação por entropia 70 para permitir a decodificação das informações de maneira mais eficaz do que quando se utilizam outras técnicas, conforme descrito anteriormente. Especificamente, as coordenadas x e y permutadas podem permitir a utilização de estatísticas comuns para decodificar as coordenadas x e y e as coordenadas x e y permutadas que indicam as informações de posição do último coeficiente significativo para o bloco, conforme também descrito anteriormente.
Neste exemplo, para decodificar as coordenadas x e y e as coordenadas x e y permutadas, a unidade de decodificação por entropia 70 pode ser também configurada para determinar estatísticas que indicam a probabilidade de cada uma das coordenadas x e y compreender um dado valor, em que a decodificação das coordenadas x e y e das coordenadas x e y permutadas compreende uma decodificação baseada nas estatísticas. Por exemplo, a probabilidade da coordenada x compreender um dado valor pode ser utilizada para decodificar a coordenada x e a coordenada y permutada, e a probabilidade da coordenada y compreender um dado valor pode ser utilizada para decodificar a coordenada y e a coordenada x permutada.
Geralmente, as estatísticas podem indicar a probabilidade de uma dada posição dentro do bloco corresponder à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, quando a ordem de varredura compreende a primeira ordem de varredura. Em particular, as estatísticas podem indicar a probabilidade de uma coordenada, como, por exemplo, a coordenada x ou a coordenada y, que corresponde à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, quando a ordem de varredura compreende a primeira ordem de varredura, compreender um dado valor (como, por exemplo, “0”, “1”, “2”, etc.).
Conforme descrito anteriormente, uma vez que as primeira e segunda ordens podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas), a probabilidade da coordenada x compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada y compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Da mesma maneira, a probabilidade da coordenada y compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada x compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Ou seja, as coordenadas x e y, quando a ordem de varredura compreende a primeira ordem de varredura, podem ter, cada uma, a mesma probabilidade, ou probabilidade semelhante, de compreender o dado valor das coordenadas x e y permutadas, respectivamente, quando a ordem de varredura compreende a segunda ordem de varredura. Sendo assim, as estatísticas podem indicar também a probabilidade de cada uma das coordenadas x e y compreender um dado valor. Em alguns exemplos, a unidade de decodificação por entropia 70 pode determinar as estatísticas utilizando as informações de posição do último coeficiente significativo para blocos de dados de vídeo decodificados anteriormente, como, por exemplo, valores das coordenadas x e y e das coordenadas x e y permutadas para os blocos decodificados anteriormente.
A unidade de decodificação por entropia 70 pode ser também configurada para atualizar as estatísticas com base nas coordenadas x e y e nas coordenadas x e y permutadas, tal que a probabilidade da coordenada x compreender um dado valor seja atualizada utilizando a coordenada x e a coordenada y permutadas, e a probabilidade da coordenada y compreender um dado valor seja atualizada utilizando a coordenada y e a coordenada x permutadas. Por exemplo, as estatísticas atualizadas podem ser utilizadas para decodificar informações de posição do último coeficiente significativo para blocos de dados de vídeo subsequentemente decodificados da maneira descrita acima.
Como exemplo, para decodificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas, a unidade de decodificação por entropia 70 pode ser configurada para realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui a aplicação, pela unidade de decodificação por entropia 70, de um modelo de contexto que inclui as estatísticas com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir uma das coordenadas x e y, das coordenadas x e y permutadas e a ordem de varredura. Conforme mencionado anteriormente, além da CABAC, as técnicas descritas para intercambiar as coordenadas x e y para fins de codificação podem ser também utilizadas em outras técnicas de codificação por entropia adaptativa ao contexto, tais como CAVLC, PIPE e outras técnicas de codificação adaptativa ao contexto.
Neste exemplo, a unidade de decodificação por entropia 70 pode utilizar a ordem de varredura, como, por exemplo, a ordem de varredura horizontal ou vertical, para selecionar o modelo de contexto específico que inclui as estatísticas. Ou seja, a unidade de decodificação por entropia 70 pode selecionar as mesmas estatísticas para decodificar as coordenadas x e y quando utiliza a primeira ordem de varredura para decodificar o bloco, e para decodificar as coordenadas x e y permutadas quando utiliza a segunda ordem de varredura para decodificar o bloco. Além disto, nos casos em que uma coordenada (a coordenada y, por exemplo) é decodificada depois de outra coordenada (a coordenada x, por exemplo), a unidade de decodificação por entropia 70 pode codificar a coordenada utilizando o valor da outra coordenada, codificada anteriormente, como contexto. Ou seja, o valor de uma coordenada decodificada anteriormente das coordenadas x e y ou das coordenadas x e y permutadas, dependendo da ordem de varredura utilizada para decodificar o bloco, pode ser utilizado para selecionar também estatísticas dentro do modelo de contexto que indiquem a probabilidade da outra coordenada, codificada atualmente, compreender um dado valor. A unidade de decodificação por entropia 70 pode utilizar então as estatísticas selecionadas para decodificar as coordenadas x e y e as coordenadas x e y permutadas pela realização de codificação por entropia adaptativa ao contexto.
Conforme também descrito anteriormente, neste exemplo as coordenadas x e y e as coordenadas x e y permutadas podem ser, cada uma, representadas utilizando uma palavra de código unária que compreende uma sequência de um ou mais binários, isto é, “binarizada”. Sendo assim, para decodificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas, a unidade de decodificação por entropia 70 pode codificar cada binário de uma palavra de código que corresponde a uma coordenada específica pela realização de codificação por entropia adaptativa ao contexto. Neste exemplo, as estatísticas incluídas no modelo de contexto, que indicam a probabilidade da coordenada compreender um dado valor, podem incluir estimativas de probabilidade que indicam a probabilidade de cada binário da palavra de código que corresponde à coordenada compreender um dado valor (“0” ou “1”, por exemplo). Além disto, as estatísticas podem incluir estimativas de probabilidade diferentes para cada binário da palavra de código, dependendo da posição do respectivo binário dentro da palavra de código. Em alguns exemplos, a unidade de decodificação por entropia 70 pode determinar as estimativas de probabilidade utilizando os valores de binários correspondentes para blocos de dados de vídeo decodificados anteriormente, como, por exemplo, binários de palavras de código que correspondem a coordenadas x e y e coordenadas x e y permutadas para os blocos decodificados anteriormente, como, por exemplo, como parte da determinação das estatísticas com base nas informações de posição do último coeficiente significativo para os blocos decodificados anteriormente, conforme descrito anteriormente. Em outros exemplos, a unidade de decodificação por entropia 70 pode também atualizar as estimativas de probabilidade utilizando o valor de cada binário, como, por exemplo, como parte da atualização das estatísticas com base nas coordenadas x e y e nas coordenadas x e y permutadas, conforme também descrito anteriormente. A unidade de decodificação por entropia 70 pode utilizar as estimativas de probabilidade para decodificar cada binário pela realização de codificação por entropia adaptativa ao contexto.
Como outro exemplo, em alguns casos valores diferentes de um binário de uma palavra de código unária para uma coordenada (x, por exemplo) podem resultar estimativas de probabilidade diferentes para um binário correspondente de uma palavra de código unária para a outra coordenada (y, por exemplo). Sendo assim, quando se decodifica um binário de uma palavra de código unária para uma coordenada utilizando estimativas de probabilidade que correspondem ao binário, conforme descrito acima, a utilização de estimativas de probabilidade que incluem informações sobre o valor de um binário, como, por exemplo, um binário correspondente, de uma palavra de código unária para a outra coordenada pode resultar na precisão das estimativas de probabilidade e, portanto, pode permitir decodificação eficaz. Por exemplo, o binário da palavra de código unária para a outra coordenada pode ser um binário que corresponde ao binário da palavra de código unária para uma coordenada, como, por exemplo, os binários podem ser localizados nas mesmas posições de binário, ou posições de binário semelhantes, dentro das suas respectivas palavras de código.
A decodificação das coordenadas x e y e das coordenadas x e y permutadas (ou de coordenadas x e y que indicam informações de posição do último coeficiente significativo para um bloco de dados de vídeo, de maneira geral) desta maneira "intercalada”, com a utilização de binários decodificados anteriormente como contextos, pode permitir a utilização de informações mútuas das respectivas coordenadas x e y, o que pode permitir a decodificação mais eficaz das coordenadas.
Em outros exemplos, a unidade de decodificação por entropia 70 pode ser configurada para decodificar as coordenadas x e y e as coordenadas x e y permutadas de maneira intercalada. Em alguns exemplos, a unidade de decodificação por entropia 70 pode ser configurada para codificar binários individuais da palavra de código para as respectivas coordenadas x e y de maneira intercalada. Em outros exemplos, a unidade de decodificação por entropia 70 pode ser configurada para codificar grupos de binários das palavras de código de maneira intercalada. Por exemplo, alguns binários de uma palavra de código para cada uma das coordenadas x e y podem ser decodificados utilizando um primeiro modo de codificação (um modo de codificação regular, por exemplo), enquanto os binários restantes da palavra de código podem ser decodificados utilizando um segundo modo de codificação (um modo de codificação por bypass, por exemplo). Sendo assim, a unidade de decodificação por entropia 70 pode ser configurada para decodificar um ou mais binários da palavra de código que corresponde a uma das coordenadas codificada utilizando o primeiro modo de codificação (regular, por exemplo) antes da decodificação de um ou mais binários da palavra de código que corresponde à outra coordenada codificada utilizando o primeiro modo de codificação, seguida da decodificação de um ou mais binários que corresponde a uma coordenada codificada utilizando o segundo modo de codificação (por bypass, por exemplo) antes da decodificação de um ou mais binários da palavra de código que corresponde à outra coordenada codificada utilizando o segundo modo de codificação. Em outros exemplos, a unidade de decodificação por entropia 70 pode ser configurada para decodificar os binários das palavras codificadas utilizando o segundo modo de codificação de maneira conjunta.
Por conseguinte, a separação da decodificação dos binários da palavra de código para cada uma das coordenadas x e y da maneira descrita acima pode permitir o agrupamento de binários decodificados utilizando um modo de codificação específico (o modo de bypass, por exemplo) de maneira conjunta, o que pode aperfeiçoar o rendimento da codificação.
Em outras palavras, nos casos em que cada uma das coordenadas x e y e das coordenadas x e y permutadas compreende uma sequência de um ou mais binários, a unidade de decodificação por entropia 70 pode ser configurada para decodificar as coordenadas x e y e as coordenadas x e y permutadas pela realização de codificação por entropia adaptativa ao contexto, que inclui aplicar o modelo de contexto que inclui as estatísticas com base em uma das coordenadas x e y e das coordenadas x e y permutadas. A unidade de decodificação por entropia 70 pode ser configurada para decodificar as respectivas coordenadas x e y pela decodificação de pelo menos um binário da sequência que corresponde a uma das coordenadas pela seleção das estatísticas a partir do modelo de contexto com base, pelo menos em parte, no valor de pelo menos um binário da sequência que corresponde à outra coordenada. Além disto, a unidade de decodificação por entropia 70 pode ser configurada para decodificar o um ou mais binários da sequência que corresponde a uma das coordenadas e o um ou mais binários da sequência que corresponde à outra coordenada de maneira intercalada.
Por conseguinte, para decodificar as informações de posição do último coeficiente significativo, a unidade de decodificação por entropia 70 pode ser configurada para decodificar as coordenadas x e y e as coordenadas x e y permutadas, de maneira intercalada, utilizando binários decodificados anteriormente como contextos. Ou seja, a unidade de decodificação por entropia 70 pode ser configurada para decodificar cada binário de uma palavra de código unária para uma dada coordenada pela execução de um processo de codificação por entropia adaptativa ao contexto que inclui aplicar um modelo de contexto com base em pelo menos um contexto, em que o pelo menos um contexto pode incluir a posição do binário dentro da palavra de código unária, conforme descrito anteriormente, e no valor de um ou mais binários decodificados anteriormente de uma palavra de código unária para a outra coordenada. Além disto, a unidade de codificação por entropia 56 pode ser configurada para codificar as coordenadas x e y e as coordenadas x e y permutadas de maneira intercalada, de modo geral.
Deve-se observar que, em outros exemplos compatíveis com as técnicas desta descrição, podem ser utilizados outros tipos de palavra de código, como, por exemplo, palavras de código unárias truncadas, palavras de código Golomb exponenciais, palavras de código concatenadas, assim como combinações de diversas técnicas de codificação. Deve-se observar também que, em alguns exemplos, a unidade de decodificação por entropia 70 pode ser também configurada para decodificar as coordenadas x e y quando a ordem de varredura compreende uma terceira ordem de varredura. Por exemplo, a terceira ordem de varredura pode ser diferente da primeira ordem de varredura e da segunda ordem de varredura. Como exemplo, a terceira ordem de varredura pode ser uma ordem de varredura em ziguezague ou uma ordem de varredura diagonal, em que a ordem de varredura em ziguezague ou diagonal se origina também na posição comum dentro do bloco, como a posição DC, por exemplo.
Neste exemplo, em alguns casos a unidade de decodificação por entropia 70 pode ser também configurada para decodificar informações que identificam a ordem de varredura, isto é, as informações sobre ordem de varredura para o bloco. Alternativamente, conforme descrito anteriormente, a unidade de decodificação por entropia 70 pode omitir a decodificação das informações sobre ordem de varredura para o bloco quando a unidade de decodificação por entropia 70 utiliza uma ordem de varredura adaptativa para decodificar o bloco. Além disto, em alguns casos a unidade de decodificação por entropia 70 pode ser também configurada para decodificar informações que identificam as posições de outros coeficientes significativos dentro do bloco, isto é, as informações de posição de coeficientes significativos para o bloco.
Por exemplo, as informações de posição de coeficientes significativos para o bloco podem ser representadas utilizando uma sequência de indicadores de coeficientes significativos, conforme descrito anteriormente. Conforme também descrito anteriormente, as informações de posição de coeficientes significativos podem ser decodificadas pela decodificação de cada indicador de coeficiente significativo da sequência pela execução de um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto com base em pelo menos um contexto, em que o pelo menos um contexto pode incluir a posição do indicador dentro do bloco de acordo com a ordem de varredura.
Mais uma vez, o modelo de contexto pode incluir estimativas de probabilidade que indicam a probabilidade de cada indicador compreender um dado valor ("0” ou "1”, por exemplo). Em alguns exemplos, a unidade de decodificação por entropia 70 pode determinar as estimativas de probabilidade utilizando os valores de indicadores de coeficientes significativos para blocos de dados de vídeo decodificados anteriormente. Em outros exemplos, a unidade de decodificação por entropia 70 pode também atualizar as estimativas de probabilidade utilizando o valor de cada indicador para refletir a probabilidade do indicador compreender um dado valor. Por exemplo, as estimativas de probabilidade atualizadas podem ser atualizadas para decodificar informações de posição de coeficientes significativos para blocos de dados de vídeo subsequentemente decodificados da maneira descrita acima.
Como outro exemplo, a unidade de decodificação por entropia 70 pode ser configurada para decodificar coordenadas x e y que indicam uma posição do último coeficiente significativo dentro de um bloco específico de dados de vídeo de acordo com uma ordem de varredura associada ao bloco. Por exemplo, a ordem de varredura pode ser uma de uma série de ordens de varredura, em que cada uma da série de ordens de varredura se origina em uma posição comum dentro do bloco, como a posição DC, por exemplo.
Neste exemplo, para decodificar as coordenadas x e y, a unidade de decodificação por entropia 70 pode ser configurada para decodificar informações que indicam se a coordenada x corresponde à posição comum, decodificar informações que indicam se a coordenada y corresponde à posição comum e, no caso da coordenada x não corresponder à posição comum e a coordenada y não corresponder à posição comum, decodificar informações que identifiquem a ordem de varredura. A unidade de decodificação por entropia 70 pode ser também configurada para, no caso da coordenada x não corresponder à posição comum, decodificar a coordenada x com base na ordem de varredura e, no caso da coordenada y não corresponder à posição comum, decodificar a coordenada y com base na ordem de varredura.
Neste exemplo, para decodificar a coordenada x e a coordenada y com base na ordem de varredura, a unidade de decodificação por entropia 70 pode ser configurada para realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui a aplicação pela unidade de decodificação por entropia 70 de um modelo de contexto com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir a ordem de varredura.
Além disso, como exemplo, a unidade de decodificação por entropia 70 pode ser configurada para decodificar uma coordenada (a coordenada y, por exemplo) depois de outra coordenada (a coordenada x, por exemplo), em que a unidade de decodificação por entropia 70 pode ser configurada para decodificar uma coordenada utilizando o valor da outra coordenada decodificada anteriormente como contexto. Como outro exemplo, em que cada uma das coordenadas x e y compreende uma sequência de um ou mais binários, a unidade de decodificação por entropia 70 pode ser configurada para decodificar pelo menos um binário da sequência que corresponde a uma das coordenadas pela seleção das estatísticas do modelo de contexto com base, pelo menos em parte, no valor de pelo menos um binário, como, por exemplo, um binário correspondente, da sequência que corresponde à outra coordenada. Além disto, a unidade de decodificação por entropia 70 pode ser configurada para decodificar o um ou mais binários da sequência que corresponde a uma das coordenadas e o um ou mais binários da sequência que corresponde à outra coordenada de maneira intercalada.
Seja como for, depois da decodificação das informações de posição do último coeficiente significativo e, em alguns casos, das informações sobre ordem de varredura e das informações de posição de coeficientes significativos, isto é, dos dados SM, para o bloco da maneira descrita acima, a unidade de decodificação por entropia 70 pode decodificar também o valor de cada coeficiente significativo (como, por exemplo, a magnitude e o sinal de cada coeficiente significativo, indicados pelos elementos de sintaxe “nível_de_aus_de_coef_menos1” e “indicador_de_sinal_de_coef”, respectivamente) dentro do bloco.
Por conseguinte, as técnicas desta descrição podem permitir que a unidade de decodificação por entropia 70 decodifique as informações de posição do último coeficiente significativo para o bloco de maneira mais eficaz do que quando se utilizam outros métodos e podem permitir que a unidade de decodificação por entropia 70 tenha menos complexidade com relação a outros sistemas. Desta maneira, pode haver uma economia de bits relativa para o fluxo de bits codificado que inclui as informações de posição do último coeficiente significativo e uma redução relativa na complexidade para a unidade de decodificação por entropia 70 utilizada para decodificar as informações, quando se utilizam as técnicas desta descrição.
A unidade de compensação de movimento 72 pode utilizar vetores de movimento recebidos no fluxo de bits para identificar um bloco de predição em quadros de referência na memória 82. O módulo de intrapredição 74 pode utilizar os modos de intrapredição recebidos no fluxo de bits para formar um bloco de predição a partir de blocos espacialmente adjacentes.
O módulo de intrapredição 74 pode utilizar uma indicação de um modo de intrapredição para o bloco codificado para intrapredizer o bloco codificado, como, por exemplo, utilizando pixels de blocos vizinhos decodificados anteriormente. Para exemplos nos quais o bloco é codificado pelo modo de interpredição, a unidade de compensação de movimento 72 pode receber informações que definem um vetor de movimento, para recuperar dados de predição compensados em movimento para o bloco codificado. Seja como for, a unidade de compensação de movimento 72 ou o módulo de intrapredição 74 pode fornecer informações que definem um bloco de predição ao somador 80.
A unidade de quantização inversa 76 quantiza por inversão, isto é, desquantiza, os coeficientes de bloco quantizados apresentados 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, definido, por exemplo, pelo padrão de decodificação H.264 ou executado pelo Modelo de Teste HEVC. O processo de quantização inversa pode incluir também a utilização de um parâmetro de quantização QPy calculado pelo codificador de vídeo 20 para cada bloco para determinar o grau de quantização e, de maneira semelhante, o grau de quantização inversa que deve ser aplicado.
O módulo de transformada inversa 78 aplica uma transformada inversa, como, por exemplo, uma DCT inversa, uma transformada de número inteiro inversa ou um processo de transformada inversa conceptualmente semelhante, aos coeficientes de transformada para produzirem blocos residuais no domínio dos pixels. A unidade de compensação de movimento 72 produz blocos compensados em movimento, executando possivelmente interpolação com base em filtros de interpolação. Identificadores para os filtros de interpolação a serem utilizados para estimação de movimento com precisão de sub-pixels podem ser incluídos nos elementos de sintaxe. A unidade de compensação de movimento 72 pode utilizar filtros de interpolação utilizados pelo codificador de vídeo 20 durante a codificação do bloco de vídeo para calcular valores interpolados para sub-pixels de número inteiro 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 as informações de sintaxe recebidas e utilizar os filtros de interpolação para produzir blocos preditivos.
A unidade de compensação de movimento 72 utiliza algumas das informações de sintaxe para o bloco codificado para determinar os tamanhos dos blocos utilizados para codificar o(s) quadro(s) da sequência de vídeo codificada, informações de partição que descrevem como cada bloco de um quadro ou fatia da sequência de vídeo codificada é particionado, modos que indicam como cada partição é codificada, um ou mais quadros de referência (e listas de quadros de referência) para cada bloco ou partição intercodificado(a) e outras informações para decodificar a sequência de vídeo codificada. O módulo de intrapredição 74 pode utilizar também as informações de sintaxe para o bloco codificador para intrapredizer o bloco codificado, como, por exemplo, utilizando pixels de blocos vizinhos, decodificados anteriormente, conforme descrito acima.
O somador 80 soma os blocos residuais com os blocos de predição correspondentes gerados pela unidade de compensação de movimento 72 ou pelo módulo de intrapredição 74 para formarem blocos decodificados. Se desejado, um filtro de desblocagem pode ser também aplicado para filtrar os blocos decodificados para removerem os artefatos de blocagem. Os blocos de vídeo decodificados são então armazenados na memória 82, que provê 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 o dispositivo de exibição 32 da Figura 1).
Desta maneira, o decodificador de vídeo 30 representa um exemplo de decodificador de vídeo configurado para codificar coordenadas x e y que indicam uma posição do último coeficiente não zero dentro de um bloco de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura e codificar coordenadas x e y permutadas que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura, em que a segunda ordem de varredura é diferente da primeira ordem de varredura.
As Figuras 4A-4C são diagramas conceptuais que mostram um exemplo de bloco de dados de vídeo e informações de posição de coeficientes significativos e informações de posição do último coeficiente significativo correspondentes. Conforme mostrado na Figura 4A, um bloco de dados de vídeo, como, por exemplo, um macrobloco ou uma TU de uma CU, pode incluir coeficientes de transformada quantizados. Conforme mostrado na Figura 4A, por exemplo, o bloco 400 pode incluir coeficientes de transformada quantizados gerados utilizando técnicas de predição, transformada e quantização descritas anteriormente. Suponha-se, para este exemplo, que o bloco 400 tem um tamanho de 2Nx2N, onde N é igual a dois. Por conseguinte, o bloco 400 tem um tamanho de 4x4 e inclui dezesseis coeficientes de transformada quantizados, conforme também mostrado na Figura 4A. Suponha-se também que a ordem de varredura associada ao bloco 400 é a ordem de varredura em ziguezague, conforme mostrado na Figura 5A descrita mais detalhadamente a seguir.
Neste exemplo, o último coeficiente significativo dentro do bloco 400 de acordo com a ordem de varredura em ziguezague é um coeficiente de transformada quantizado como igual a "1”, localizado na posição 406 dentro do bloco 400. Em outros exemplos, conforme descrito acima, um bloco pode incluir mais ou menos coeficientes de transformada quantizados que o bloco 400. Em ainda outro exemplo, a ordem de varredura associada ao bloco 400 pode ser uma ordem de varredura diferente, como, por exemplo, uma ordem de varredura horizontal, uma ordem de varredura vertical, uma ordem de varredura diagonal ou outra ordem de varredura.
A Figura 4B mostra um exemplo de dados de indicador de coeficiente significativo, isto é, indicadores de coeficiente significativo em forma de mapa, ou de bloco, conforme descrito anteriormente. No exemplo da Figura 4B, o bloco 402 pode corresponder ao bloco 400 mostrado na Figura 4A. Em outras palavras, os indicadores de coeficientes significativos do bloco 402 podem corresponder aos coeficientes de transformada quantizados do bloco 400. Conforme mostrado na Figura 4B, os indicadores de coeficientes significativos do bloco 402 que são iguais a "1” correspondem aos coeficientes significativos do bloco 400. Da mesma maneira, os indicadores de coeficientes significativos do bloco 402 que são iguais a "0” correspondem aos coeficientes zero, ou não significativos, do bloco 400.
Neste exemplo, o indicador de coeficiente significativo do bloco 402 que corresponde ao último coeficiente significativo dentro do bloco 400 de acordo com a ordem de varredura em ziguezague é um indicador de coeficiente significativo igual a "1”, localizado na posição 408 dentro do bloco 402. Em outros exemplos, os valores dos indicadores de coeficientes significativos utilizados para indicar coeficientes significativos ou não significativos podem variar (os indicadores de coeficientes significativos iguais a "0” podem corresponder a coeficientes significativos, e os indicadores de coeficientes significativos iguais a "1” podem corresponder a coeficientes não significativos, por exemplo).
A Figura 4C mostra um exemplo de dados de indicador de último coeficiente significativo, isto é, indicadores de último coeficiente significativo representados em forma de mapa, ou de bloco, conforme também descrito anteriormente. No exemplo da Figura 4C, o bloco 404 pode corresponder ao bloco 400 e ao bloco 402 mostrados nas Figuras 4A e 4B, respectivamente. Em outras palavras, os indicadores de coeficientes significativos do bloco 404 podem corresponder aos coeficientes de transformada quantizados do bloco 400 e aos indicadores de coeficientes significativos do bloco 402.
Conforme mostrado na Figura 4C, o indicador de último coeficiente significativo do bloco 404 que é igual a "1”, localizado na posição 410 dentro do bloco 404, corresponde ao último coeficiente significativo do bloco 400, e ao último dos indicadores de coeficientes significativos do bloco 400 que são iguais a "1”, de acordo com a ordem de varredura em ziguezague. Da mesma maneira, os indicadores de último coeficiente significativo do bloco 404 que são iguais a "0” (isto é, todos os indicadores de último coeficiente significativo restantes) correspondem a coeficientes zero, ou não significativos, do bloco 404, e todos os indicadores de coeficientes significativos do bloco 402 que são iguais a "1” outros que não o último de tais indicadores de coeficientes significativos de acordo com a ordem de varredura em ziguezague.
Os valores dos indicadores de coeficientes significativos utilizados para indicar um último coeficiente significativo de acordo com a ordem de varredura podem variar (um indicador de último coeficiente significativo igual a "0” pode corresponder ao último coeficiente significativo de acordo com a ordem de varredura, e os indicadores de último coeficiente significativo iguais a "1” podem corresponder a todos os coeficientes restantes, por exemplo). Seja como for, os indicadores de coeficientes significativos do bloco 402, e os indicadores de último coeficiente significativo do bloco 404 podem ser coletivamente referidos como dados SM para o bloco 400.
Conforme descrito acima, as informações de posição de coeficientes significativos para um bloco de dados de vídeo podem ser indicadas pela serialização de indicadores de coeficientes significativo para o bloco de uma representação em blocos bidimensional, conforme apresentada no bloco 402 mostrado na Figura 4B, em um arranjo unidimensional, utilizando uma ordem de varredura associada ao bloco. No exemplo dos blocos 400-402 mostrados nas Figuras 4A-4B, supondo-se novamente a ordem de varredura em ziguezague, as informações de posição de coeficientes significativos para o bloco 400 podem ser indicadas pela serialização dos indicadores de coeficientes significativos do bloco 402 em um arranjo unidimensional. Ou seja, as informações de posição de coeficientes significativos para o bloco 400 podem ser indicadas pela geração de uma sequência de indicadores de coeficientes significativos do bloco 402 de acordo com a ordem de varredura em ziguezague.
Neste exemplo, a sequência gerada pode corresponder ao valor "111111”, que representa os 6 primeiros indicadores de coeficientes significativos do bloco 402 de acordo com a ordem de varredura em ziguezague. Deve-se observar que a sequência gerada pode conter indicadores de coeficientes significativos que correspondem a uma faixa de posições de bloco dentro do bloco 400, iniciando da primeira posição de bloco na ordem de varredura em ziguezague (isto é, a posição DC) e finalizando com uma posição de bloco que corresponde ao último coeficiente significativo do bloco 400 de acordo com a ordem de varredura em ziguezague (isto é, que corresponde ao indicador de último coeficiente significativo igual a "1” do bloco 404).
Também conforme descrito acima, as informações de posição do último coeficiente significativo para o bloco podem ser indicadas pela serialização de indicadores de último coeficiente significativo para o bloco a partir de uma representação em blocos bidimensional, conforme mostrado no bloco 404 mostrado na Figura 4C, em um arranjo unidimensional, utilizando a ordem de varredura associada ao bloco. No exemplo dos blocos 400-404 mostrados nas Figuras 4A-4C, mais uma vez supondo-se a ordem de varredura em ziguezague, as informações de posição do último coeficiente significativo para o bloco 400 podem ser indicadas pela serialização dos indicadores de último coeficiente significativo do bloco 404 em um arranjo unidimensional. Ou seja, as informações de posição do último coeficiente significativo para o bloco 400 podem ser indicadas gerando-se uma sequência de indicadores de último coeficiente significativo do bloco 404 de acordo com a ordem de varredura em ziguezague. Neste exemplo, a sequência gerada pode corresponder ao valor "000001”, que representa os primeiros 6 indicadores de último coeficiente significativo do bloco 404 de acordo com a ordem de varredura em ziguezague.
Mais uma vez, deve-se observar que a sequência gerada pode conter indicadores de último coeficiente significativo que correspondem a uma faixa de posições de bloco dentro do bloco 400, iniciando da primeira posição de bloco na ordem de varredura em ziguezague e finalizando com a posição de bloco que corresponde ao último coeficiente significativo do bloco 400 de acordo com a ordem de varredura em ziguezague (isto é, que corresponde ao indicador de último coeficiente significativo igual a "1” do bloco 404). Por conseguinte, neste exemplo, nenhum indicador de último coeficiente significativo que se segue ao indicador de último coeficiente significativo igual a "1” de acordo com a ordem de varredura em ziguezague é incluído na sequência. Falando de maneira geral, pode não ser necessário que os indicadores de último coeficiente significativo que se seguem ao indicador de último coeficiente significativo igual a "1” de acordo com a ordem de varredura associada a um bloco de dados de vídeo indiquem informações de posição do último coeficiente significativo para o bloco. Sendo assim, em alguns exemplos, estes indicadores são omitidos da sequência gerada de indicadores de último coeficiente significativo utilizados para indicar as informações.
Deve-se observar também que, conforme descrito acima, se o último coeficiente significativo estiver localizado dentro da última posição de bloco de acordo com a ordem de varredura (a posição de bloco direita de base, por exemplo), a sequência gerada pode não incluir um indicador de último coeficiente significativo que corresponde à última posição de bloco, uma vez que se pode inferir que a posição contém o último coeficiente significativo para o bloco. Por conseguinte, neste exemplo, a sequência gerada pode corresponder ao valor "000000000000000”, em que o indicador de último coeficiente significativo que corresponde à última posição de bloco não é incluído na sequência e é, por inferência, igual a "1”.
As Figuras 5A-5C são diagramas conceptuais que mostram exemplos de blocos de dados de vídeo varridos utilizando uma ordem de varredura em ziguezague, uma ordem de varredura horizontal e uma ordem de varredura vertical, respectivamente. Conforme mostrado nas Figuras 5A-5C, um bloco 8x8 de dados de vídeo, como, por exemplo, um macrobloco ou uma TU de uma CU, pode incluir sessenta e quatro coeficientes de transformada quantizados em posições de bloco correspondentes, denotadas com círculos. Por exemplo, os blocos 500-504 podem incluir, cada um, sessenta e quatro coeficientes de transformada quantizados gerados utilizando técnicas de predição, transformada e quantização descritas anteriormente, em que, mais uma vez, cada posição de bloco correspondente é denotada com um círculo. Suponha-se, para este exemplo, que os blocos 500-504 têm um tamanho de 2Nx2N, onde N é igual a quatro. Por conseguinte, os blocos 500-504 têm um tamanho de 8x8.
Conforme mostrado na Figura 5A, a ordem de varredura associada ao bloco 500 é a ordem de varredura em ziguezague. A ordem de varredura em ziguezague varre os coeficientes de transformada quantizados do bloco 500 de maneira diagonal, conforme indicado pelas setas da Figura 5A. De maneira semelhante, conforme mostrado nas Figuras 5B e 5C, as ordens de varredura associadas aos blocos 502 e 504 são a ordem de varredura horizontal e ordem de varredura vertical, respectivamente. A ordem de varredura horizontal varre os coeficientes se transformada quantizados do bloco 502 no sentido horizontal linha por linha ou à maneira de “rastreio”, enquanto a ordem de varredura vertical varre os coeficientes de transformada quantizados do bloco 504 no sentido vertical linha por linha, ou à maneira de “rastreio rotacionado”, também conforme indicado pelas setas das Figuras 5B e 5C.
Em outros exemplos, conforme descrito acima, um bloco pode ter um tamanho que é menor ou maior que o tamanho dos blocos 500-504 e pode incluir mais ou menos coeficientes de transformada quantizados e posições de bloco correspondentes. Nestes exemplos, a ordem de varredura associada ao bloco pode varrer os coeficientes de transformada quantizados do bloco de maneira substancialmente à mostrada nos exemplos dos blocos 8x8 500-504 das Figuras 5A-5C, como, por exemplo, um bloco 4x4 ou um bloco 16x16 pode ser varrido seguindo-se qualquer uma das ordens de varredura descritas anteriormente.
Conforme descrito anteriormente, as técnicas desta descrição podem aplicar-se também a uma ampla variedade de outras ordens de varredura, inclusive uma ordem de varredura diagonal, ordens de varredura que são combinações de ordens de varredura em ziguezague, horizontal, vertical e/ou diagonal, assim como ordens de varredura que são parcialmente em ziguezague, parcialmente horizontais, parcialmente verticais e/ou parcialmente diagonais. Além disto, as técnicas desta descrição podem também considerar uma ordem de varredura que seja ela mesma adaptativa com base em estatísticas associadas aos blocos codificados anteriormente de dados de vídeo (blocos que têm o mesmo tamanho de bloco ou o mesmo modo de codificação do bloco atual que está sendo codificado, por exemplo). Por exemplo, uma ordem de varredura adaptativa pode ser a ordem de varredura associada a um bloco de dados de vídeo, em alguns casos.
As Figuras 6A-6C são diagramas conceptuais que mostram exemplos de blocos de dados de vídeo para os quais informações de posição do último coeficiente significativo são codificadas com base em informações sobre ordem de varredura, em conformidade com as técnicas desta descrição. Conforme mostrado na Figura 6A, o bloco 600 pode incluir dezesseis posições de bloco ordenadas de 0 a 15 de acordo com a ordem de varredura horizontal, conforme indicado pelas setas e descrito acima com referência à Figura 5B. Cada uma das dezesseis posições de bloco pode conter um coeficiente de transformada quantizado, conforme descrito acima com referência à Figura 4 A. Também conforme mostrado na Figura 6 A, a terceira posição dentro do bloco 600 de acordo com a ordem de varredura horizontal que corresponde à posição "2”, pode ser referida como posição 606. Neste exemplo, a posição 606 pode ser representada utilizando coordenadas x e y (2,0), em que a coordenada x é igual a "2”, a coordenada y é igual a "0”, a posição de referência, ou de "origem”, que corresponde às coordenadas x e y (0,0), é localizada no canto esquerdo de topo do bloco 600, isto é, a posição DC, conforme descrito acima. Suponha-se, para este exemplo, que a posição 606 corresponde à posição do último coeficiente significativo dentro do bloco 600 de acordo com a ordem de varredura horizontal.
Suponha-se também que, para o bloco 600, que existem estatísticas que indicam a probabilidade de uma dada posição dentro do bloco 600 corresponder à posição do último coeficiente significativo dentro do bloco 600 de acordo com a ordem de varredura horizontal. Em particular, as estatísticas podem indicar a probabilidade de uma coordenada, como, por exemplo, a coordenada x ou y, que corresponde à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura horizontal, compreender um dado valor (como, por exemplo, "0”, "1”, "2”, etc.). Em outras palavras, as estatísticas podem indicar a probabilidade de cada uma das coordenada x e y (2,0) descritas anteriormente compreender um dado valor.
Além disso, em alguns exemplos as coordenadas x e y podem ser codificadas com base nas estatísticas, como, por exemplo, pela execução de um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto que inclui as estatísticas com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir uma das coordenadas x e y e a ordem de varredura. Neste exemplo, a ordem de varredura, como, por exemplo, a ordem de varredura horizontal, pode ser utilizada para selecionar o modelo de contexto específico que inclui as estatísticas. Além disto, nos casos em que uma coordenada (a coordenada y, por exemplo) é codificada depois de outra coordenada (a coordenada x, por exemplo), a coordenada pode ser codificada utilizando o valor da outra coordenada, codificada anteriormente, como contexto. Ou seja, o valor de uma coordenada codificada anteriormente das coordenadas x e y pode ser utilizada para selecionar também estatísticas dentro do modelo de contexto que indicam a probabilidade da outra coordenada atualmente codificada compreender um dado valor.
Além disso, em alguns exemplos as coordenadas x e y podem ser, cada uma, representadas utilizando uma palavra de código unária que compreende uma sequência de um ou mais binários, isto é, “binarizada”. Sendo assim, para codificar as coordenadas x e y com base nas estatísticas, cada binário de uma palavra de código que corresponde a uma coordenada específica pode ser codificado pela realização de codificação por entropia adaptativa ao contexto. Neste exemplo, as estatísticas incluídas no modelo de contexto, que indicam a probabilidade da coordenada compreender um dado valor, podem incluir estimativas de probabilidade que indicam a probabilidade de cada binário da palavra de código que corresponde à coordenada compreender um dado valor (“0” ou “1”, por exemplo). Além disto, as estatísticas podem incluir estimativas de probabilidade diferentes para cada binário da palavra de código, dependendo da posição do respectivo binário dentro da palavra de código.
Nos exemplos das Figuras 6 A-6B, a ordem de varredura horizontal do bloco 600 pode ser simétrica com relação à ordem de varredura vertical do bloco 602, tal que a probabilidade da coordenada x, "2”, da posição do último coeficiente significativo dentro do bloco 600 de acordo com a ordem de varredura horizontal compreender um dado valor pode ser idêntica ou semelhante à probabilidade da coordenada y, "2”, da posição do último coeficiente significativo dentro do bloco 602 de acordo com a ordem de varredura vertical compreender o mesmo valor, e vice-versa. Da mesma maneira, a probabilidade da coordenada y, "0”, da posição do último coeficiente significativo dentro do bloco 600 de acordo com a ordem de varredura horizontal compreender um dado valor pode ser idêntica ou semelhante à probabilidade da coordenada x, "0”, da posição do último coeficiente significativo dentro do bloco 602 de acordo com a ordem de varredura vertical compreender o mesmo valor, e vice-versa. Ou seja, as coordenadas x e y (2,0) da posição 606 dentro do bloco 600 podem ter, cada uma, a mesma probabilidade, ou probabilidade semelhante, de compreender o dado valor as coordenadas x e y permutadas (0,2) da posição 608 dentro do bloco 602, respectivamente. Conforme indicado pela linha tracejada na Figura 6B, as coordenadas x e y permutadas (0,2) da posição 608 dentro do bloco 602 podem corresponder à posição 610 dentro do bloco 602, que pode ser representada utilizando as coordenadas x e y (2,0).
Sendo assim, de acordo com as técnicas desta descrição, estatísticas comuns que indicam a probabilidade de uma dada posição dentro do bloco 600, que corresponde à posição do último coeficiente significativo dentro do bloco 600 de acordo com a ordem de varredura horizontal podem ser utilizadas para codificar as coordenadas x e y (2,0) da posição 606 dentro do bloco 600, assim como as coordenadas x e y permutadas (0,2) da posição 608 dentro do bloco 602, conforme descrito anteriormente.
Conforme também mostrado na Figura 6C, o bloco 604 pode incluir também dezesseis posições de bloco, mais uma vez ordenadas de 0 a 15, embora, neste caso, de acordo com uma ordem de varredura em ziguezague, conforme indicado pelas setas, e descrito acima com referência à Figura 5A. Cada uma das dezesseis posições de bloco pode conter um coeficiente de transformada quantizado, conforme descrito acima com referência à Figura 4A. Também conforme mostrado na Figura 6C, a terceira posição dentro do bloco 604 de acordo com a ordem de varredura em ziguezague, que corresponde à posição "2”, pode ser referida como posição 612. Neste exemplo, a posição 612 pode ser representada utilizando coordenadas x e y (0,1), em que a coordenada x é igual a "0”, a coordenada y é igual a "1”, e a posição de referência, ou de "origem”, que corresponde às coordenadas x e y (0,0), é mais uma vez localizada no canto esquerdo de topo do bloco 604, isto é, na posição DC, conforme descrito acima. Suponha-se, para este exemplo, que a posição 612 corresponde mais uma vez à posição do último coeficiente significativo dentro do bloco 604 de acordo com a ordem de varredura em ziguezague.
No exemplo da Figura 6C, a ordem de varredura em ziguezague do bloco 604 pode não ser simétrica com relação à ordem de varredura horizontal ou à ordem de varredura vertical dos blocos 600 e 602, respectivamente. Sendo assim, a identidade ou semelhança das probabilidades descritas acima pode não existir entre as coordenadas x e y que correspondem à posição do último coeficiente significativo dentro do bloco 600 ou do bloco 602, e entre as coordenadas x e y que correspondem à posição do último coeficiente significativo dentro do bloco 604. No entanto, as coordenadas x e y que correspondem à posição do último coeficiente significativo dentro do bloco 604 podem ser codificadas utilizando as estatísticas comuns descritas acima com referência aos exemplos das Figuras 6 A-6B. Por exemplo, embora a utilização das estatísticas comuns para codificar as coordenadas x e y possa não refletir com precisão a probabilidade de as respectivas coordenadas compreenderem valores específicos, a codificação das coordenadas desta maneira pode no entanto aperfeiçoar a eficácia de codificação por utilizar as estatísticas comuns, em vez de estatísticas separadas, reduzindo assim potencialmente a complexidade do sistema, conforme descrito anteriormente.
A Figura 7 é um fluxograma que mostra um exemplo de um método para codificar de maneira eficaz informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura, compatível com as técnicas desta descrição. As técnicas da Figura 7 podem ser geralmente executadas por uma unidade de processamento ou processador, seja ela(e) implementada(o) em hardware, software, firmware ou uma combinação deles e, quando implementada(o) em software ou firmware, o hardware correspondente pode ser apresentado para realizar instruções para o software ou firmware. Para fins de exemplificação, as técnicas da Figura 7 são descritas com relação ao codificador de vídeo 20 (Figuras 1 e 2) e/ou ao decodificador de vídeo 30 (Figuras 1 e 3), embora deva ficar entendido que outros dispositivos podem ser configurados para realizar técnicas semelhantes. Além do mais, as etapas mostradas na Figura 7 podem ser executadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser acrescentadas e determinadas etapas omitidas, sem que se abandonem as técnicas desta descrição.
Inicialmente, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem determinar se a ordem de varredura associada a um bloco de dados de vídeo é uma primeira ordem de varredura ou uma segunda ordem de varredura (700). Por exemplo, o bloco pode ser um macrobloco ou uma TU de uma CU, conforme descrito anteriormente. Além disto, a primeira ordem de varredura e a segunda ordem de varredura podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas). Por exemplo, a primeira ordem de varredura pode ser uma ordem de varredura horizontal e a segunda ordem de varredura pode ser uma ordem de varredura vertical, em que a ordem de varredura horizontal e a ordem de varredura vertical se originam em uma posição dentro do bloco, como a posição DC, por exemplo, conforme também descrito anteriormente.
Especificamente, a primeira ordem de varredura e a segunda ordem de varredura podem ser, cada uma, uma ordem de varredura que pode ser utilizada pelo codificador de vídeo 20 e/ou o decodificador de vídeo 30 codificar o bloco. Por exemplo, as primeira e segunda ordens de varredura podem ser ordens de varredura utilizadas pelo codificador de vídeo 20 para codificar blocos de dados de vídeo e pelo decodificador de vídeo 30 para decodificar os blocos, dentro do sistema de codificação 10 correspondente que compreende o codificador de vídeo 20 e o decodificador de vídeo 30. Em alguns exemplos, as primeira e segunda ordens de varredura podem ser apenas algumas das ordens de varredura utilizadas dentro do sistema 10 para codificar os blocos. Em outros exemplos, as primeira e segunda ordens de varredura podem ser as únicas ordens de varredura utilizadas dentro do sistema 10 para codificar os blocos. Desta maneira, o método exemplar da Figura 7 pode ser aplicado a qualquer sistema de codificação que utilize uma série de ordens de varredura para codificar blocos de dados de vídeo.
O codificador de vídeo 20 pode determinar se a ordem de varredura é a primeira ordem de varredura ou a segunda ordem de varredura diretamente, como parte da codificação do bloco, por exemplo. O decodificador de vídeo 30 pode fazer esta determinação decodificando informações sobre ordem de varredura para o bloco. Por exemplo, o codificador de vídeo 20 pode codificar as informações sobre ordem de varredura conforme descrito mais detalhadamente no método exemplar da Figura 8, e o decodificador de vídeo 30 pode decodificar as informações conforme também descrito mais detalhadamente no método exemplar da Figura 9.
No caso da ordem de varredura ser a primeira ordem de varredura (702), o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar também coordenadas x e y que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura (704), isto é, as informações de posição do último coeficiente significativo para o bloco. No caso da ordem de varredura ser a segunda ordem de varredura (702), contudo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem, em vez disso, codificar coordenadas x e y permutadas dentro do bloco de acordo com a ordem de varredura (706). Neste exemplo, as coordenadas x e y permutadas correspondem também às informações de posição do último coeficiente significativo para o bloco, mas são também processadas, isto é, permutadas, pelo codificador de vídeo 20 e/ou o decodificador de vídeo 30 para permitir a codificação das informações de maneira mais eficaz do que quando se utilizam outras técnicas, conforme descrito anteriormente. Especificamente, as coordenadas x e y permutadas podem permitir a utilização de estatísticas comuns para codificar as coordenadas x e y e as coordenadas x e y permutadas que indicam as informações de posição do último coeficiente significativo para o bloco, conforme também descrito anteriormente. Seja como for, as informações de posição do último coeficiente significativo para o bloco, quer representadas utilizando as coordenadas x e y, quer utilizando as coordenadas x e y permutadas, podem ser codificadas no caso do codificador de vídeo 20 e decodificadas no caso do decodificador de vídeo 30.
Para codificar as coordenadas x e y e as coordenadas x e y permutadas, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem também determinar estatísticas que indicam a probabilidade de uma dada posição dentro do bloco corresponder à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, quando a ordem de varredura compreende a primeira ordem de varredura. Em particular, as estatística podem indicar a probabilidade de uma coordenada, como, por exemplo, uma coordenada x ou y, que corresponde à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, quando a ordem de varredura compreende a primeira ordem de varredura, compreender um dado valor (como, por exemplo, "0”, "1”, "2”, etc.). Em outras palavras, as estatísticas podem indicar a probabilidade de cada uma das coordenadas x e y descritas anteriormente compreender um dado valor.
Uma vez que as primeira e segunda ordens de varredura podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas), a probabilidade da coordenada x compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada y compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Da mesma maneira, a probabilidade da coordenada y compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada x compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Ou seja, as coordenadas x e y, quando a ordem de varredura compreende a primeira ordem de varredura, podem ter, cada uma, a mesma probabilidade, ou probabilidade semelhante, de compreender o dado valor das coordenadas x e y permutadas, respectivamente, quando a ordem de varredura compreende a segunda ordem de varredura. Sendo assim, as estatísticas podem indicar também a probabilidade de cada uma das coordenadas x e y permutadas compreender um dado valor. Em alguns exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem determinar as estatísticas utilizando informações de posição do último coeficiente significativo para blocos de dados de vídeo codificados anteriormente, como, por exemplo, os valores das coordenadas x e y e das coordenadas x e y permutadas para os blocos codificados anteriormente.
Neste exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar as coordenadas x e y e coordenadas x e y permutadas com base nas estatísticas. Por exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas tal que a probabilidade da coordenada x compreender um dado valor seja utilizada para codificar a coordenada x e a coordenada y permutada e a probabilidade da coordenada y compreender um dado valor seja utilizada para codificar a coordenada y e a coordenada x permutada. Além disto, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem atualizar as estatísticas com base nas coordenadas x e y e nas coordenadas x e y permutadas para refletir a probabilidade de as respectivas coordenadas compreenderem valores específicos. Neste exemplo, a probabilidade da coordenada x compreender um dado valor pode ser atualizada utilizando a coordenada x e a coordenada y permutadas, e a probabilidade da coordenada y compreender um dado valor pode ser atualizada utilizando a coordenada y e a coordenada x permutada. Por exemplo, as estatísticas atualizadas podem ser utilizadas para codificar informações de posição do último coeficiente significativo para blocos de dados de vídeo subsequentemente codificados da maneira descrita acima.
Em alguns exemplos, para codificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto que inclui as estatísticas com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir uma das coordenadas x e y, as coordenadas x e y permutadas e a ordem de varredura. Neste exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem utilizar a ordem de varredura, como, por exemplo, a ordem de varredura horizontal ou vertical, para selecionar o modelo de contexto específico que inclui as estatísticas. Ou seja, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem selecionar as mesmas estatísticas para codificar as coordenadas x e y quando utilizam a primeira ordem de varredura para codificar o bloco, e para codificar as coordenadas x e y permutadas quando utilizam a segunda ordem de varredura para codificar o bloco.
Além disto, nos casos em que uma coordenada (a coordenada y, por exemplo) é codificada depois de outra coordenada (a coordenada x, por exemplo), o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar a coordenada utilizando o valor da outra coordenada, codificada anteriormente, como contexto. Ou seja, o valor de uma coordenada codificada anteriormente das coordenadas x e y ou das coordenadas x e y permutadas, dependendo da ordem de varredura utilizada para codificar o bloco, pode ser utilizado para selecionar também estatísticas dentro do modelo de contexto que indiquem a probabilidade da outra coordenada, codificada atualmente, compreender um dado valor. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem utilizar então as estatísticas selecionadas para codificar as coordenadas x e y e as coordenadas x e y permutadas pela realização de codificação por entropia adaptativa ao contexto.
Neste exemplo, as coordenadas x e y e as coordenadas x e y permutadas podem ser, cada uma, representadas utilizando uma palavra de código unária que compreende uma sequência de um ou mais bits, ou binários, isto é, binarizada. Sendo assim, para codificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar cada binário de uma palavra de código que corresponde a uma coordenada específica pela realização de codificação por entropia adaptativa ao contexto. Neste exemplo, as estatísticas incluídas no modelo de contexto, que indicam a probabilidade da coordenada compreender um dado valor, podem incluir estimativas de probabilidade que indicam a probabilidade de cada binário da palavra de código que corresponde à coordenada compreender um dado valor ("0” ou "1”, por exemplo). Além disto, as estatísticas podem incluir estimativas de probabilidade para cada binário da palavra de código, dependendo da posição do respectivo binário dentro da palavra de código. Em alguns exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem determinar as estimativas de probabilidade utilizando os valores de binários correspondentes para blocos de dados de vídeo codificados anteriormente, como, por exemplo, binários de palavras de código que correspondem a coordenadas x e y e coordenadas x e y permutadas para os blocos codificados anteriormente, como, por exemplo, como parte da determinação das estatísticas com base nas informações de posição do último coeficiente significativo para os blocos codificados anteriormente, conforme descrito anteriormente. Em outros exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem também atualizar as estimativas de probabilidade utilizando o valor de cada binário, como, por exemplo, como parte da atualização das estatísticas com base nas coordenadas x e y e nas coordenadas x e y permutadas, conforme também descrito anteriormente. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem utilizar as estimativas de probabilidade para codificar cada binário pela realização de codificação por entropia adaptativa ao contexto.
Como outro exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar as coordenadas x e y e as coordenadas x e y permutadas pela codificação de pelo menos um binário da sequência que corresponde a uma das coordenadas pela seleção das estatísticas a partir do modelo de contexto com base, pelo menos em parte, no valor de pelo menos um binário, como, por exemplo, um binário correspondente, da sequência que corresponde à outra coordenada. Além disto, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar o um ou mais binários da sequência que corresponde a uma das coordenadas e o um ou mais binários da sequência que corresponde à outra coordenada de maneira intercalada.
Finalmente, em alguns exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem codificar informações que indicam as posições de todos os outros coeficientes significativos dentro do bloco de acordo com a ordem de varredura (708), isto é, as informações de posição de coeficientes significativos para o bloco. Por exemplo, as informações de posição de coeficientes significativos para o bloco podem ser representadas utilizando uma sequência de indicadores de coeficientes significativos, conforme descrito anteriormente. Conforme também descrito anteriormente, as informações de posição de coeficientes significativos podem ser codificadas pela codificação de cada indicador de coeficiente significativo da sequência pela execução de um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto com base em pelo menos um contexto, em que o pelo menos um contexto pode incluir a posição do indicador dentro do bloco de acordo com a ordem de varredura.
Neste exemplo, o modelo de contexto pode incluir estimativas de probabilidade que indicam a probabilidade de cada indicador compreender um dado valor ("0” ou "1”, por exemplo). Em alguns exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem determinar as estimativas de probabilidade utilizando os valores de indicadores de coeficientes significativos correspondentes para blocos de dados de vídeo codificados anteriormente. Em outros exemplos, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem também atualizar as estimativas de probabilidade utilizando o valor de cada indicador para refletir a probabilidade do indicador compreender um dado valor. Por exemplo, as estimativas de probabilidade atualizadas podem ser utilizadas para codificar informações de posição de coeficientes significativos para blocos de dados de vídeo subsequentemente codificados da maneira descrita acima.
Desta maneira, o método da Figura 7 representa um exemplo de um método para codificar coordenadas x e y que indicam a posição de último coeficiente não zero dentro de um bloco de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura, e codificar coordenadas x e y permutadas que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura, em que a segunda ordem de varredura é diferente da primeira ordem de varredura.
A Figura 8 é um fluxograma que mostra um exemplo de um método para codificar de maneira eficaz informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo, compatível com as técnicas desta descrição. As técnicas da Figura 8 podem ser geralmente executadas por uma unidade de processamento ou processador, seja ela(e) implementada(o) em hardware, software, firmware ou uma combinação deles e, quando implementada(o) em software ou firmware, o hardware correspondente pode ser apresentado para realizar instruções para o software ou firmware. Para fins de exemplificação, as técnicas da Figura 8 são descritas com relação à unidade de codificação por entropia 56 (Figura 2), embora deva ficar entendido que outros dispositivos podem ser configurados para realizar técnicas semelhantes. Além do mais, as etapas mostradas na Figura 8 podem ser executadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser acrescentadas e determinadas etapas omitidas, sem que se abandonem as técnicas desta descrição.
Inicialmente, a unidade de codificação por entropia 56 pode ser geralmente executadas por uma unidade de processamento ou processador, seja ela(e) implementada(o) em hardware, software, firmware ou uma combinação deles e, quando implementada(o) em software ou firmware, o hardware correspondente pode ser apresentado para realizar instruções para o software ou firmware. Para fins de exemplificação, as técnicas da Figura 7 são descritas com relação ao codificador de vídeo 20 (Figuras 1 e 2) e/ou ao decodificador de vídeo 30 (Figuras 1 e 3), embora deva ficar entendido que outros dispositivos podem ser configurados para realizar técnicas semelhantes. Além do mais, as etapas mostradas na Figura 7 podem ser executadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser acrescentadas e determinadas etapas omitidas, sem que se abandonem as técnicas desta descrição.
Inicialmente, o codificado ser geralmente executadas por uma unidade de processamento ou processador, seja ela(e) implementada(o) em hardware, software, firmware ou uma combinação deles e, quando implementada(o) em software ou firmware, o hardware correspondente pode ser apresentado para realizar instruções para o software ou firmware. Para fins de exemplificação, as técnicas da Figura 7 são descritas com relação ao codificador de vídeo 20 (Figuras 1 e 2) e/ou ao decodificador de vídeo 30 (Figuras 1 e 3), embora deva ficar entendido que outros dispositivos podem ser configurados para realizar técnicas semelhantes. Além do mais, as etapas mostradas na Figura 7 podem ser executadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser acrescentadas e determinadas etapas omitidas, sem que se abandonem as técnicas desta descrição.
Inicialmente, o codificado da codificação do bloco, por exemplo.
No caso da ordem de varredura ser a primeira ordem de varredura (806), a unidade de codificação por entropia 56 pode codificar também as coordenadas x e y (808). No caso da ordem de varredura ser a segunda ordem de varredura (806), contudo, a unidade de codificação por entropia 56 pode, em vez disso, intercambiar as coordenadas x e y e codificar as coordenadas x e y permutadas (8010). Conforme descrito anteriormente, as coordenadas x e y permutadas correspondem também às informações de posição do último coeficiente significativo para o bloco, mas são também processadas, isto é, permutadas, pela unidade de codificação por entropia 56 para permitir a codificação das informações de maneira mais eficaz do que quando se utilizam outras técnicas. Especificamente, as coordenadas x e y permutadas podem permitir a utilização de estatísticas comuns para codificar as coordenadas x e y e as coordenadas x e y permutadas que indicam as informações de posição do último coeficiente significativo para o bloco, conforme também descrito anteriormente. Seja como for, a unidade de codificação por entropia 56 pode codificar as informações de posição do último coeficiente significativo para o bloco, representadas quer como as coordenadas x e y, quer como as coordenadas x e y permutadas.
Para codificar as coordenadas x e y e as coordenadas x e y permutadas, a unidade de codificação por entropia 56 pode também determinar estatísticas que indicam a probabilidade de uma dada posição dentro do bloco corresponder à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, quando a ordem de varredura compreende a primeira ordem de varredura. Em particular, as estatísticas podem indicar a probabilidade de uma coordenada, como, por exemplo, uma coordenada x ou y, que corresponde à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, quando a ordem de varredura compreende a primeira ordem de varredura, compreender um dado valor (como, por exemplo, "0”, "1”, "2”, etc.). Em outras palavras, as estatísticas podem indicar a probabilidade de cada uma das coordenadas x e y descritas anteriormente compreender um dado valor.
Uma vez que as primeira e segunda ordens podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas), a probabilidade da coordenada x compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada y compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Da mesma maneira, a probabilidade da coordenada y compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada x compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Ou seja, as coordenadas x e y, quando a ordem de varredura compreende a primeira ordem de varredura, podem ter, cada uma, a mesma probabilidade, ou probabilidade semelhante, de compreender o dado valor das coordenadas x e y permutadas, respectivamente, quando a ordem de varredura compreende a segunda ordem de varredura. Sendo assim, as estatísticas podem indicar também a probabilidade de cada uma das coordenadas x e y permutadas compreender um dado valor. Em alguns exemplos, a unidade de codificação por entropia 56 pode determinar as estatísticas utilizando as informações de posição do último coeficiente significativo para blocos de dados de vídeo codificados anteriormente, como, por exemplo, os valores das coordenadas x e y e das coordenadas x e y permutadas para os blocos codificados anteriormente.
Neste exemplo, a unidade de codificação por entropia 56 pode codificar as coordenadas x e y e coordenadas x e y permutadas com base nas estatísticas. Por exemplo, a unidade de codificação por entropia 56 pode codificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas tal que a probabilidade da coordenada x compreender um dado valor seja utilizada para codificar a coordenada x e a coordenada y permutada e a probabilidade da coordenada y compreender um dado valor seja utilizada para codificar a coordenada y e a coordenada x permutada. Além disto, a unidade de codificação por entropia 56 pode atualizar as estatísticas com base nas coordenadas x e y e nas coordenadas x e y permutadas para refletir a probabilidade de as respectivas coordenadas compreenderem valores específicos. Neste exemplo, a probabilidade da coordenada x compreender um dado valor pode ser atualizada utilizando a coordenada x e a coordenada y permutadas, e a probabilidade da coordenada y compreender um dado valor pode ser atualizada utilizando a coordenada y e a coordenada x permutada. Por exemplo, as estatísticas atualizadas podem ser utilizadas para codificar informações de posição do último coeficiente significativo para blocos de dados de vídeo subsequentemente codificados da maneira descrita acima.
Em alguns exemplos, para codificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas, a unidade de codificação por entropia 56 pode realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto que inclui as estatísticas com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir uma das coordenadas x e y, as coordenadas x e y permutadas e a ordem de varredura. Neste exemplo, a unidade de codificação por entropia 56 pode utilizar a ordem de varredura, como, por exemplo, a ordem de varredura horizontal ou vertical, para selecionar o modelo de contexto específico que inclui as estatísticas. Ou seja, a unidade de codificação por entropia 56 pode selecionar as mesmas estatísticas para codificar as coordenadas x e y quando utiliza a primeira ordem de varredura para codificar o bloco, e para codificar as coordenadas x e y permutadas quando utiliza a segunda ordem de varredura para codificar o bloco.
Além disso, nos casos em que uma coordenada (a coordenada y, por exemplo) é codificada depois de outra coordenada (a coordenada x, por exemplo), a unidade de codificação por entropia 56 pode codificar a coordenada utilizando o valor da outra coordenada, codificada anteriormente, como contexto. Ou seja, o valor de uma coordenada codificada anteriormente das coordenadas x e y ou das coordenadas x e y permutadas, dependendo da ordem de varredura utilizada para codificar o bloco, pode ser utilizado para selecionar também estatísticas dentro do modelo de contexto que indiquem a probabilidade da outra coordenada, codificada atualmente, compreender um dado valor. A unidade de codificação por entropia 56 pode utilizar então as estatísticas selecionadas para codificar as coordenadas x e y e as coordenadas x e y permutadas pela realização de codificação por entropia adaptativa ao contexto.
Neste exemplo, as coordenadas x e y e as coordenadas x e y permutadas podem ser, cada uma, representadas utilizando uma palavra de código unária que compreende uma sequência de um ou mais bits, ou binários, isto é, binarizada. Sendo assim, para codificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas, a unidade de codificação por entropia 56 pode codificar cada binário de uma palavra de código que corresponde a uma coordenada específica pela realização de codificação por entropia adaptativa ao contexto. Neste exemplo, as estatísticas incluídas no modelo de contexto, que indicam a probabilidade da coordenada compreender um dado valor, podem incluir estimativas de probabilidade que indicam a probabilidade de cada binário da palavra de código que corresponde à coordenada compreender um dado valor ("0” ou "1”, por exemplo). Além disto, as estatísticas podem incluir estimativas de probabilidade para cada binário da palavra de código, dependendo da posição do respectivo binário dentro da palavra de código. Em alguns exemplos, a unidade de codificação por entropia 56 pode determinar as estimativas de probabilidade utilizando os valores de binários correspondentes para blocos de dados de vídeo codificados anteriormente, como, por exemplo, binários de palavras de código que correspondem a coordenadas x e y e coordenadas x e y permutadas para os blocos codificados anteriormente, como, por exemplo, como parte da determinação das estatísticas com base nas informações de posição do último coeficiente significativo para os blocos codificados anteriormente, conforme descrito anteriormente. Em outros exemplos, a unidade de codificação por entropia 56 pode também atualizar as estimativas de probabilidade utilizando o valor de cada binário, como, por exemplo, como parte da atualização das estatísticas com base nas coordenadas x e y e nas coordenadas x e y permutadas, conforme também descrito anteriormente. A unidade de codificação por entropia 56 pode utilizar as estimativas de probabilidade para codificar cada binário pela realização de codificação por entropia adaptativa ao contexto.
Conforme descrito anteriormente, como outro exemplo, a unidade de codificação por entropia 56 pode codificar as coordenadas x e y e as coordenadas x e y permutadas pela codificação de pelo menos um binário da sequência que corresponde a uma das coordenadas pela seleção das estatísticas a partir do modelo de contexto com base, pelo menos em parte, no valor de pelo menos um binário, como, por exemplo, um binário correspondente, da sequência que corresponde à outra coordenada. Além disto, a unidade de codificação por entropia 56 pode codificar o um ou mais binários da sequência que corresponde a uma das coordenadas e o um ou mais binários da sequência que corresponde à outra coordenada de maneira intercalada.
Seja como for, a unidade de codificação por entropia 56 pode codificar também informações que identificam a ordem de varredura (812), isto é, as informações sobre ordem de varredura para o bloco. Em alguns exemplos, nos quais a ordem de varredura inclui uma de duas ordens de varredura utilizadas dentro do sistema 10 para codificar blocos de dados de vídeo, a unidade de codificação por entropia 56 pode codificar as informações sobre ordem de varredura utilizando um único binário. Por exemplo, a unidade de codificação por entropia 56 pode codificar o único binário para indicar se a ordem de varredura é uma primeira ordem de varredura (bin=“0”) ou uma segunda ordem de varredura (bin-T). Em outros exemplos, nos quais a ordem de varredura inclui uma de três ordens de varredura que podem ser utilizadas pelo sistema 10 para codificar blocos de dados de vídeo, a unidade de codificação por entropia 56 pode codificar as informações sobre ordem de varredura utilizando entre um e dois binários. Por exemplo, a unidade de codificação por entropia 56 pode codificar um primeiro binário para indicar se a ordem de varredura é uma primeira ordem de varredura (como, por exemplo, bin1=“0”, se a ordem de varredura for a primeira ordem de varredura, e bin1=“1” caso contrário). No caso do primeiro binário indicar que a ordem de varredura não é a primeira ordem de varredura, a unidade de codificação por entropia 56 pode codificar um segundo binário para indicar se a ordem de varredura é uma segunda ordem de varredura (bin2-“0”, por exemplo) ou uma terceira ordem de varredura (bin2=“1”, por exemplo). Em outros exemplos, podem ser utilizados outros métodos para codificar as informações sobre ordem de varredura para o bloco, que incluem a utilização de outros valores de binário. Em alguns exemplos, a unidade de codificação por entropia 56 pode sinalizar cada binário diretamente no fluxo de bits.
Em outros exemplos, a unidade de codificação por entropia 56 pode codificar também cada binário utilizando um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo) de maneira semelhante à descrita acima com referência à codificação de binários de uma palavra de código que corresponde a uma das coordenadas x e y e das coordenadas x e y permutadas. Alternativamente, conforme descrito anteriormente, a unidade de codificação por entropia 56 pode omitir a codificação das informações sobre ordem de varredura para o bloco quando a unidade de codificação por entropia 56 utilizar uma ordem de varredura adaptativa para codificar o bloco.
Em alguns exemplos, a unidade de codificação por entropia 56 pode codificar também informações que indicam as posições de todos os outros coeficientes significativos dentro do bloco de acordo com a ordem de varredura (814), isto é, as informações de posição de coeficientes significativos para o bloco. Conforme descrito anteriormente, por exemplo, as informações de posição de coeficientes significativos para o bloco podem ser representadas utilizando uma sequência de indicadores de coeficientes significativos. Também conforme descrito anteriormente, as informações de posição de coeficientes significativos podem ser codificadas pela codificação de cada indicador de coeficiente significativo da sequência executando-se um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto com base em pelo menos um contexto, em que o pelo menos um contexto pode incluir a posição do indicador dentro do bloco de acordo com a ordem de varredura.
O modelo de contexto pode incluir estimativas de probabilidade que indicam a probabilidade de cada indicador compreender um dado valor ("0” ou "1”, por exemplo). Em alguns exemplos, a unidade de codificação por entropia 56 pode determinas as estimativas de probabilidade utilizando os valores de indicadores de coeficientes significativos correspondentes para blocos de dados de vídeo codificados anteriormente. Em outros exemplos, a unidade de codificação por entropia 56 pode também atualizar as estimativas de probabilidade utilizando o valor de cada indicador para refletir a probabilidade do indicador compreender um dado valor. Por exemplo, as estimativas de probabilidade atualizadas podem ser utilizadas para codificar informações de posição de coeficientes significativos para blocos de dados de vídeo codificados em seguida da maneira descrita acima.
Finalmente, a unidade de codificação por entropia 56 pode parar de codificar as informações de posição do último coeficiente significativo com base nas informações sobre ordem de varredura para o bloco (818). Por exemplo, a unidade de codificação por entropia 56 pode prosseguir até outras tarefas de codificação, como, por exemplo, a codificação de outros elementos de sintaxe para o bloco ou um bloco subsequente, conforme descrito acima.
Desta maneira, o método da Figura 8 representa um método para codificar coordenadas x e y que indicam uma posição do último coeficiente não zero dentro de um bloco de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura e codificar coordenadas x e y permutadas que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura, em que a segunda ordem de varredura é diferente da primeira ordem de varredura.
A Figura 9 é um fluxograma que mostra um exemplo de um método para decodificar de maneira eficaz informações de posição do último coeficiente significativo codificadas com base em informações sobre ordem de varredura para um bloco de dados de vídeo, compatível com as técnicas desta descrição. As técnicas da Figura 9 podem ser geralmente executadas por uma unidade de processamento ou processador, seja ela(e) implementada(o) em hardware, software, firmware ou uma combinação deles e, quando implementada(o) em software ou firmware, o hardware correspondente pode ser apresentado para realizar instruções para o software ou firmware. Para fins de exemplificação, as técnicas da Figura 9 são descritas com relação à unidade de decodificação por entropia 70 (Figura 3), embora deva ficar entendido que outros dispositivos podem ser configurados para realizar técnicas semelhantes. Além do mais, as etapas mostradas na Figura 9 podem ser executadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser acrescentadas e determinadas etapas omitidas, sem que se abandonem as técnicas desta descrição.
Inicialmente, a unidade de decodificação por entropia 70 pode receber dados significativos codificados para um bloco de dados de vídeo (900). Por exemplo, o bloco pode ser um macrobloco ou uma TU de um CU, conforme descrito anteriormente. A unidade de decodificação por entropia 70 pode também decodificar os dados significativos para determinar coordenadas que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com uma ordem de varredura associada ao bloco (902), isto é, as informações de posição do último coeficiente significativo para o bloco. A ordem de varredura pode ser uma ordem de varredura utilizada por uma unidade de codificação por entropia, como, por exemplo, a unidade de codificação por entropia 56 da Figura 2, para codificar o bloco, e pode ser uma de uma série de ordens de varredura que se originam em uma posição comum dentro do bloco, conforme descrito anteriormente. Também conforme descrito anteriormente, a posição comum pode corresponder à posição DC. Além disto, as coordenadas determinadas podem ser, cada uma, representadas utilizando uma palavra de código unária que compreende uma sequência de um ou mais binários.
Conforme descrito acima com referência ao exemplo da Figura 8, as coordenadas determinadas podem corresponder a coordenadas x e y ou coordenadas x e y permutadas que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, dependendo da ordem de varredura. Por exemplo, as coordenadas podem corresponder às coordenadas x e y quando a ordem de varredura compreende uma primeira ordem de varredura, e às coordenadas x e y permutadas quando a ordem de varredura compreende uma segunda ordem de varredura. As coordenadas x e y e as coordenadas x e y permutadas correspondem às informações de posição do último coeficiente significativo para o bloco, mas as coordenadas x e y permutadas são também processadas, isto é, permutadas, para permitir a codificação das informações de maneira mais eficaz do que quando se utilizam outras técnicas. Especificamente, as coordenadas x e y permutadas podem permitir a utilização de estatísticas comuns para codificar as coordenadas x e y e as coordenadas x e y permutadas que indicam as informações de posição do último coeficiente significativo para o bloco, conforme também descrito anteriormente.
Seja como for, de maneira semelhante à descrita anteriormente com referência ao exemplo da unidade de codificação por entropia 56 da Figura 8, para decodificar os dados significativos para determinar as coordenadas, a unidade de decodificação por entropia 70 pode também determinar estatísticas que indicam a probabilidade de uma dada posição dentro do bloco corresponder à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, quando a ordem de varredura compreende a primeira ordem de varredura. Em particular, as estatísticas podem indicar a probabilidade de uma coordenada, como, por exemplo, a coordenada x ou a coordenada y, que corresponde à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, quando a ordem de varredura compreende a primeira ordem de varredura, compreender um dado valor (como, por exemplo, "0”, "1”, "2”, etc.). Em outras palavras, a estatísticas podem indicar a probabilidade de cada uma das coordenadas descritas anteriormente compreender um dado valor.
Uma vez que as primeira e segunda ordens de varredura podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas), a probabilidade da coordenada x compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada y compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Da mesma maneira, a probabilidade da coordenada y compreender um dado valor quando a ordem de varredura compreende a primeira ordem de varredura pode ser idêntica ou semelhante à probabilidade da coordenada x compreender o mesmo valor quando a ordem de varredura compreende a segunda ordem de varredura, e vice-versa. Ou seja, as coordenadas x e y, quando a ordem de varredura compreende a primeira ordem de varredura, podem ter, cada uma, a mesma probabilidade, ou probabilidade semelhante, de compreender o dado valor das coordenadas x e y permutadas, respectivamente, quando a ordem de varredura compreende a segunda ordem de varredura. Sendo assim, as estatísticas podem indicar também a probabilidade de cada uma das coordenadas x e y compreender um dado valor. Em alguns exemplos, a unidade de decodificação por entropia 70 pode determinar as estatísticas utilizando as informações de posição do último coeficiente significativo para blocos de dados de vídeo codificados anteriormente, como, por exemplo, os valores das coordenadas x e y e das coordenadas x e y permutadas para os blocos codificados anteriormente.
Neste exemplo, a unidade de decodificação por entropia 70 pode decodificar os dados significativos para determinar as coordenadas, isto é, as coordenadas x e y, ou as coordenadas x e y, com base nas estatísticas. Por exemplo, a unidade de decodificação por entropia 70 pode decodificar os dados significativos para determinar as coordenadas x e y ou as coordenadas x e y permutadas com base nas estatísticas tal que a probabilidade da coordenada x compreender um dado valor seja utilizada para decodificar os dados significativos para determinar a coordenada x e a coordenada y permutada e a probabilidade da coordenada y compreender um dado valor seja utilizada para decodificar os dados significativos para determinar a coordenada y e a coordenada x permutada. Além disto, a unidade de decodificação por entropia 70 pode atualizar as estatísticas com base nas coordenadas x e y e nas coordenadas x e y permutadas para refletir a probabilidade de as respectivas coordenadas compreenderem valores específicos. Neste exemplo, a probabilidade da coordenada x compreender um dado valor pode ser atualizada utilizando a coordenada x e a coordenada y permutadas, e a probabilidade da coordenada y compreender um dado valor pode ser atualizada utilizando a coordenada y e a coordenada x permutada. Por exemplo, as estatísticas atualizadas podem ser utilizadas para decodificar dados significativos para determinar informações de posição de coeficientes significativos para blocos de dados de vídeo subsequentemente codificados da maneira descrita acima.
Em alguns exemplos, para decodificar os dados significativos para determinar as coordenadas x e y ou as coordenadas x e y permutadas com base nas estatísticas, a unidade de decodificação por entropia 70 pode realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto que inclui as estatísticas com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir uma das coordenadas x e y, as coordenadas x e y permutadas e a ordem de varredura. Neste exemplo, a unidade de decodificação por entropia 70 pode utilizar a ordem de varredura, como, por exemplo, a ordem de varredura horizontal ou vertical, para selecionar o modelo de contexto específico que inclui as estatísticas. Ou seja, a unidade de decodificação por entropia 70 pode selecionar as mesmas estatísticas para decodificar os dados significativos para determinar as coordenadas x e y quando utiliza a primeira ordem de varredura para decodificar o bloco, e para determinar as coordenadas x e y permutadas quando utiliza a segunda ordem de varredura para decodificar o bloco.
As coordenadas x e y e as coordenadas x e y permutadas podem ser, cada uma, representadas utilizando uma palavra de código unária que compreende uma sequência de um ou mais binários isto é, binarizada. Sendo assim, para decodificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas, a unidade de decodificação por entropia 70 pode decodificar os dados significativos para determinar cada binário de uma palavra de código que corresponde a uma coordenada específica pela realização de codificação por entropia adaptativa ao contexto. Neste exemplo, as estatísticas incluídas no modelo de contexto, que indicam a probabilidade da coordenada compreender um dado valor, podem incluir estimativas de probabilidade que indicam a probabilidade de cada binário da palavra de código que corresponde à coordenada compreender um dado valor ("0” ou "1”, por exemplo). Além disto, as estatísticas podem incluir estimativas de probabilidade diferentes para cada binário da palavra de código, dependendo da posição do respectivo binário dentro da palavra de código. Em alguns exemplos, a unidade de decodificação por entropia 70 pode determinar as estimativas de probabilidade utilizando os valores de binários correspondentes para blocos de dados de vídeo codificados anteriormente, como, por exemplo, binários de palavras de código que correspondem a coordenadas x e y e coordenadas x e y permutadas para os blocos codificados anteriormente, como, por exemplo, como parte da determinação das estatísticas com base nas informações de posição do último coeficiente significativo para os blocos codificados anteriormente, conforme descrito anteriormente. Em outros exemplos, a unidade de decodificação por entropia 70 pode também atualizar as estimativas de probabilidade utilizando o valor de cada binário, como, por exemplo, como parte da atualização das estatísticas com base nas coordenadas x e y e nas coordenadas x e y permutadas, conforme também descrito anteriormente. A unidade de decodificação por entropia 70 pode utilizar as estimativas de probabilidade para decodificar os dados significativos para determinar cada binário pela realização de codificação por entropia adaptativa ao contexto.
Conforme descrito anteriormente, como outro exemplo, a unidade de decodificação por entropia 70 pode decodificar as coordenadas x e y e as coordenadas x e y pela decodificação de pelo menos um binário da sequência que corresponde a uma das coordenadas pela seleção das estatísticas a partir do modelo de contexto com base, pelo menos em parte, no valor de pelo menos um binário, como, por exemplo, um binário correspondente, da sequência que corresponde à outra coordenada. Além disto, a unidade de decodificação por entropia 70 pode decodificar o um ou mais binários da sequência que corresponde a uma das coordenadas e o um ou mais binários da sequência que corresponde à outra coordenada de maneira intercalada.
A unidade de decodificação por entropia 70 pode também receber dados sobre ordem de varredura codificados para o bloco (904). A unidade de decodificação por entropia 70 pode também decodificar os dados sobre ordem de varredura para determinar informações que identificam a ordem de varredura (906), isto é, informações sobre ordem de varredura para o bloco. Alternativamente, conforme descrito anteriormente, a unidade de decodificação por entropia 70 pode não receber e decodificar os dados sobre ordem de varredura codificados para o bloco quando a unidade de decodificação por entropia 70 utiliza uma ordem de varredura adaptativa para decodificar o bloco. Seja como for, a unidade de decodificação por entropia 70 pode também determinar se a ordem de varredura é uma primeira ordem de varredura ou uma segunda ordem de varredura (908). Por exemplo, as primeira e segunda ordens de varredura podem ser ordens de varredura que podem ser utilizadas pela unidade de decodificação por entropia 70 para decodificar blocos de dados de vídeo dentro do sistema de codificação 10 correspondente que compreende o codificador de vídeo 20 e o decodificador de vídeo 30, conforme descrito anteriormente. As primeira e segunda ordens de varredura podem ser apenas algumas das ordens de varredura que podem ser utilizadas dentro do sistema 10 para codificar os blocos. Em outros exemplos, as primeira e segunda ordens de varredura podem ser as únicas ordens de varredura utilizadas dentro do sistema 10 para codificar os blocos. Em alguns casos, as primeira e segunda ordens de varredura podem ser simétricas uma com relação à outra (ou pelo menos parcialmente simétricas). Por exemplo, a primeira ordem de varredura pode ser uma ordem de varredura horizontal, e a segunda ordem de varredura pode ser uma ordem de varredura vertical. A unidade de decodificação por entropia 70 pode determinar se a ordem de varredura é a primeira ordem de varredura ou a segunda ordem de varredura utilizando as informações sobre ordem de varredura determinadas para o bloco.
No caso da ordem de varredura ser a primeira ordem de varredura (910), a unidade de decodificação por entropia 70 pode continuar a decodificar o bloco utilizando as coordenadas x e y determinadas. Em alguns casos, a unidade de decodificação por entropia 70 pode receber também dados significativos codificados restantes para o bloco (914). A unidade de decodificação por entropia 70 pode decodificar também os dados significativos restantes para determinar informações que indicam as posições de todos os outros significativos dentro do bloco de acordo com a o (916), isto é, informações de posição de coeficientes significativos para o bloco. Conforme descrito anteriormente, por exemplo, as informações de posição de coeficientes significativos para o bloco podem ser representadas utilizando uma sequência de indicadores de coeficientes significativos. Conforme também descrito anteriormente, os dados significativos restantes podem ser decodificados para determinar as informações de posição de coeficientes significativos pela decodificação dos dados significativos restantes para determinar cada indicador de coeficiente significativo da sequência pela execução de um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto com base em pelo menos um contexto, em que o pelo menos um contexto pode incluir a posição do indicador dentro do bloco de acordo com a ordem de varredura.
O modelo de contexto pode incluir estimativas de probabilidade que indicam a probabilidade de cada indicador compreender um dado valor ("0” ou "1”, por exemplo). Em alguns exemplos, a unidade de decodificação por entropia 70 pode determinar as estimativas de probabilidade utilizando os valores de indicadores de coeficientes significativos correspondentes para blocos de dados de vídeo codificados anteriormente. Em outros exemplos, a unidade de decodificação por entropia 70 pode também atualizar as estimativas de probabilidade utilizando o valor de cada indicador para refletir a probabilidade do indicador compreender um dado valor. Por exemplo, as estimativas de probabilidade atualizadas podem ser utilizadas para decodificar os dados significativos restantes para determinar informações de posição de coeficientes significativos para blocos de dados de vídeo subsequentemente codificados da maneira descrita acima.
No caso da ordem de varredura ser a segunda ordem de varredura (910), contudo, a unidade de decodificação por entropia 70 pode intercambiar as coordenadas x e y determinadas (912) e continuar a decodificar o bloco utilizando as coordenadas x e y permutadas de maneira semelhante à descrita acima com referência às etapas (914) e (916). Conforme descrito anteriormente, as coordenadas x e y e as coordenadas x e y permutadas correspondem às informações de posição do último coeficiente significativo para o bloco, mas as coordenadas x e y permutadas são também processadas para permitir a codificação das informações de maneira mais eficaz do que quando se utilizam outras técnicas.
Finalmente, a unidade de decodificação por entropia 70 pode parar de decodificar as informações de posição do último coeficiente significativo baseadas nas informações sobre ordem de varredura para o bloco (918). Por exemplo, a unidade de decodificação por entropia 70 pode prosseguir com outras tarefas de decodificação, como, por exemplo, a decodificação de outros elementos de sintaxe para o bloco, ou um bloco subsequente, conforme descrito acima.
Desta maneira, o método da Figura 9 representa um exemplo de um método para codificar coordenadas x e y que indicam uma posição do último coeficiente não zero dentro de um bloco de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura e codificar coordenadas x e y permutadas que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura, em que a segunda ordem de varredura é diferente da primeira ordem de varredura.
A Figura 10 é um fluxograma que mostra outro exemplo de um método para codificar de maneira eficaz informações de posição do último coeficiente significativo com base em informações sobre ordem de varredura para um bloco de dados de vídeo, compatível com as técnicas desta descrição. As técnicas da Figura 10 podem ser geralmente executadas por qualquer unidade de processamento ou processador, seja ela(e) implementada(o) em hardware, software, firmware ou uma combinação deles e, quando implementada(o) em software ou firmware, o hardware correspondente pode ser apresentado para realizar instruções para o software ou firmware. Para fins de exemplificação, as técnicas da Figura 10 são descritas com relação à unidade de codificação por entropia 56 (Figura 2), embora deva ficar entendido que outros dispositivos podem ser configurados para realizar técnicas semelhantes. Além do mais, as etapas mostradas na Figura 10 podem ser executadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser acrescentadas e determinadas etapas omitidas, sem que se abandonem as técnicas desta descrição.
Inicialmente, a unidade de codificação por entropia 56 pode receber um bloco de dados de vídeo (1000). Por exemplo, o bloco pode ser um macrobloco ou uma TU de um CU, conforme descrito anteriormente. A unidade de codificação por entropia 56 pode também determinar coordenadas x e y que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com uma ordem de varredura associada ao bloco (1002), isto é, as informações de posição do último coeficiente significativo para o bloco. Por exemplo, a ordem de varredura pode ser uma ordem de varredura utilizada pela unidade de codificação por entropia 56 para codificar o bloco e pode ser uma de uma série de ordens de varredura utilizadas para codificar blocos de dados de vídeo dentro do sistema de codificação 10 correspondente que compreende o codificador de vídeo 20 e o decodificador de vídeo 30. Por exemplo, cada uma da série de ordens de varredura pode originar-se em uma posição comum dentro do bloco, como, por exemplo, a posição DC. Além disto, conforme também descrito anteriormente, as coordenadas x e y podem ser, cada uma, representadas utilizando uma palavra de código unária que compreende uma sequência de um ou mais binários.
A unidade de codificação por entropia 56 pode também determinar se as coordenadas x e y correspondem, cada uma, a uma posição comum dentro do bloco (1004). A posição comum pode corresponder à posição DC. A unidade de codificação por entropia 56 pode fazer a determinação acima diretamente, como, por exemplo, como parte da determinação das coordenada x e y, conforme descrito acima.
A unidade de codificação por entropia 56 pode também codificar uma indicação de se a coordenada x corresponde à posição comum (1006). Da mesma maneira, a unidade de codificação por entropia 56 pode também codificar uma indicação de se a coordenada y corresponde à posição comum (1008). A unidade de codificação por entropia 56 pode codificar cada indicação utilizando um único binário. Por exemplo, a unidade de codificação por entropia 56 pode codificar um primeiro binário que, indica se a coordenada x corresponde à posição comum (bin1 ="1”, por exemplo) ou não (bin1= "0”), e um segundo binário, que indica se a coordenada y corresponde à posição comum (bin2="1 ”, por exemplo) ou não (bin2=“0”). Em alguns exemplos, a unidade de codificação por entropia 56 pode sinalizar cada binário diretamente no fluxo de bits. Em outros exemplos, a unidade de codificação por entropia 56 pode codificar também utilizando um processo de codificação por entropia adaptativa ao contexto de maneira semelhante à descrita acima com referência às Figuras 7-9, como, por exemplo, pela execução de um processo CABAC, que inclui aplicar um modelo de contexto com base em um contexto.
No caso de as coordenadas x e y corresponderem, cada uma, à posição comum (1010), a unidade de codificação por entropia 56 pode parar de codificar as informações de posição do último coeficiente significativo com base nas informações sobre ordem de varredura para o bloco (1024). Em outras palavras, nos casos em que as coordenadas x e y correspondem, cada uma, à posição comum, nenhum coeficiente significativo adicional além do último (e único) coeficiente significativo dentro do bloco de acordo com a ordem de varredura existe dentro do bloco. Em tais casos, a unidade de codificação por entropia 56 não precisa codificar nenhuma informação de posição do último coeficiente significativo, ou nenhuma informação sobre ordem de varredura ou informação de posição de coeficientes significativos adicional para o bloco. Em tais casos, a unidade de codificação por entropia 56 pode prosseguir com outras tarefas de codificação, como, por exemplo, a codificação de outros elementos de sintaxe para o bloco, ou o bloco subsequente.
No caso de as coordenadas x e y não corresponderem, cada uma, à posição comum (1010), a unidade de codificação por entropia 56 pode codificar também informações que indicam a ordem de varredura (1012), isto é, as informações sobre ordem de varredura para o bloco. Em alguns exemplos, nos quais a ordem de varredura inclui uma de duas ordens de varredura utilizadas dentro do sistema 10 para codificar blocos de dados de vídeo, a unidade de codificação por entropia 56 pode codificar as informações sobre ordem de varredura utilizando um único binário. Por exemplo, a unidade de codificação por entropia 56 pode codificar o único binário para indicar se a ordem de varredura é uma primeira ordem de varredura (bin=''0”, por exemplo) ou uma segunda ordem de varredura (bin="1”). Em outros exemplos, nos quais a ordem de varredura inclui uma de três ordens de varredura que podem ser utilizadas pelo sistema 10 para codificar blocos de dados de vídeo, a unidade de codificação por entropia 56 pode codificar as informações sobre ordem de varredura utilizando entre um e dois binários. Por exemplo, a unidade de codificação por entropia 56 pode codificar um primeiro binário para indicar se a ordem de varredura é uma primeira ordem de varredura (como, por exemplo, bin1=''0”, se a ordem de varredura for a primeira ordem de varredura, e bin1="1” caso contrário). No caso do primeiro binário indicar que a ordem de varredura não é a primeira ordem de varredura, a unidade de codificação por entropia 56 pode codificar um segundo binário para indicar se a ordem de varredura é uma segunda ordem de varredura (bin2="0”, por exemplo) ou uma terceira ordem de varredura (bin2=" 1 ”, por exemplo). Em outros exemplos, podem ser utilizados outros métodos para codificar as informações sobre ordem de varredura para o bloco, que incluem a utilização de outros valores de binário. Em alguns exemplos, a unidade de codificação por entropia 56 pode sinalizar cada binário diretamente no fluxo de bits. Em outros exemplos, a unidade de codificação por entropia 56 pode codificar também cada binário utilizando um processo de codificação por entropia adaptativa ao contexto de maneira semelhante à descrita acima com referência às Figuras 7-9, como, por exemplo, pela execução de um processo CABAC, que inclui aplicar um modelo de contexto com base em um contexto. Alternativamente, conforme descrito anteriormente, a unidade de codificação por entropia 56 pode não codificar as informações sobre ordem de varredura para o bloco quando a unidade de codificação por entropia 56 utiliza uma ordem de varredura adaptativa para codificar o bloco.
Seja como for, no caso da coordenada x não corresponder à posição comum (1014), a unidade de codificação por entropia 56 pode codificar também a coordenada x com base na ordem de varredura (1016). Da mesma maneira, no caso da coordenada y não corresponder à posição comum (1018), unidade de codificação por entropia 56 pode codificar também a coordenada y com base na ordem de varredura (1020). Para codificar as coordenadas x e y, a unidade de codificação por entropia 56 pode também determinar estatísticas que indicam a probabilidade de uma dada posição dentro do bloco corresponder à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura. Em particular, as estatísticas podem indicar a probabilidade de uma coordenada, como, por exemplo, uma coordenada x ou y, que corresponde à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, compreender um dado valor (como, por exemplo, "0”, "1”, "2”, etc.). Em outras palavras, as estatísticas podem indicar a probabilidade de cada uma das coordenadas x e y descritas anteriormente compreenderem um dado valor. Em alguns exemplos, a unidade de codificação por entropia 56 pode determinar as estatísticas utilizando informações de posição do último coeficiente significativo para blocos de dados de vídeo codificados anteriormente, como, por exemplo, os valores das coordenadas x e y para os blocos codificados anteriormente.
Em alguns exemplos, as estatísticas podem variar dependendo da ordem de varredura. Em particular, a probabilidade de uma dada posição dentro do bloco corresponder à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura pode variar dependendo da ordem de varredura. Ou seja, ordens de varredura diferentes podem resultar em estatísticas diferentes para as informações de posição do último coeficiente significativo para o bloco. Sendo assim, quando se codificam as informações de posição do último coeficiente significativo para o bloco com base nas estatísticas, a escolha das estatísticas com base, pelo menos em parte, na ordem de varredura pode resultar na utilização de estatísticas precisas e, portanto, pode permitir codificação eficaz. Consequentemente, a unidade de codificação por entropia 56 pode codificar as coordenadas x e y com base nas estatísticas, em que a unidade de codificação por entropia 56 seleciona as estatísticas com base, pelo menos em parte, na ordem de varredura. Por conseguinte, a unidade de codificação por entropia 56 pode codificar as coordenadas x e y com base na ordem de varredura. Além disto, a unidade de codificação por entropia 56 pode atualizar as estatísticas com base nas coordenadas x e y para refletir a probabilidade de as respectivas coordenadas compreenderem valores específicos. Por exemplo, as estatísticas atualizadas podem ser utilizadas para codificar informações de posição do último coeficiente significativo para blocos de dados de vídeo codificados subsequentemente da maneira descrita acima.
Em alguns exemplos, para codificar as coordenadas x e y com base nas estatísticas, a unidade de codificação por entropia 56 pode realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto que inclui as estatísticas com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir uma das coordenadas x e y e a ordem de varredura. Neste exemplo, a unidade de codificação por entropia 56 pode utilizar a ordem de varredura para selecionar o modelo de contexto específico que inclui as estatísticas. Desta maneira, a unidade de codificação por entropia 56 pode codificar as coordenadas x e y com base na ordem de varredura. Além disto, nos casos em que uma coordenada (a coordenada y, por exemplo) é codificada depois de outra coordenada (a coordenada x, por exemplo), a unidade de codificação por entropia 56 pode codificar a coordenada utilizando o valor da outra coordenada, codificada anteriormente, como contexto. Ou seja, o valor de uma coordenada codificada anteriormente das coordenadas x e y pode ser utilizado para selecionar também estatísticas dentro do modelo de contexto que indicam a probabilidade da outra coordenada, atualmente codificada, compreender um dado valor. A unidade de codificação por entropia 56 pode utilizar então as estatísticas selecionadas para codificar as coordenadas x e y pela execução de um processo de codificação por entropia adaptativa ao contexto.
Neste exemplo, as coordenadas x e y podem ser, cada uma, representadas utilizando uma palavra de código unária que compreende uma sequência de um ou mais binários isto é, binarizada. Sendo assim, para codificar as coordenadas x e y e as coordenadas x e y permutadas com base nas estatísticas, a unidade de codificação por entropia 56 pode codificar cada binário de uma palavra de código que corresponde a uma coordenada específica pela realização de codificação por entropia adaptativa ao contexto. Neste exemplo, as estatísticas incluídas no modelo de contexto, que indicam a probabilidade da coordenada compreender um dado valor, podem incluir estimativas de probabilidade que indicam a probabilidade de cada binário da palavra de código que corresponde à coordenada compreender um dado valor ("0” ou "1”, por exemplo). Além disto, as estatísticas podem incluir estimativas de probabilidade diferentes para cada binário da palavra de código, dependendo da posição do respectivo binário dentro da palavra de código. Em alguns exemplos, a unidade de codificação por entropia 56 pode determinar as estimativas de probabilidade utilizando os valores de binários correspondentes para blocos de dados de vídeo codificados anteriormente, como, por exemplo, binários de palavras de código que correspondem a coordenadas x e y e coordenadas x e y permutadas para os blocos codificados anteriormente, como, por exemplo, como parte da determinação das estatísticas com base nas informações de posição do último coeficiente significativo para os blocos codificados anteriormente, conforme descrito anteriormente. Em outros exemplos, a unidade de codificação por entropia 56 pode também atualizar as estimativas de probabilidade utilizando o valor de cada binário, como, por exemplo, como parte da atualização das estatísticas com base nas coordenadas x e y, conforme também descrito anteriormente. A unidade de codificação por entropia 56 pode utilizar as estimativas de probabilidade para codificar cada binário pela realização de codificação por entropia adaptativa ao contexto.
Conforme descrito anteriormente, como outro exemplo, a unidade de codificação por entropia 56 pode codificar as coordenadas x e y pela codificação de pelo menos um binário da sequência que corresponde a uma das coordenadas pela seleção das estatísticas a partir do modelo de contexto com base, pelo menos em parte, no valor de pelo menos um binário, como, por exemplo, um binário correspondente, da sequência que corresponde à outra coordenada. Além disto, a unidade de codificação por entropia 56 pode codificar o um ou mais binários da sequência que corresponde a uma das coordenadas e o um ou mais binários da sequência que corresponde à outra coordenada de maneira intercalada.
Em alguns exemplos, antes de codificar cada coordenada, a unidade de codificação por entropia 56 pode subtrair o valor "1” de cada coordenada para permitir a codificação das coordenadas de maneira mais eficaz do que quando se utilizam outros métodos. Por exemplo, a unidade de codificação por entropia 56 pode subtrair o valor "1” de cada coordenada antes de codificar a coordenada para reduzir a quantidade de informações utilizadas para codificar as coordenadas. Da mesma maneira, uma unidade de decodificação por entropia, como, por exemplo, a unidade de decodificação por entropia 70 descrita mais detalhadamente no exemplo da Figura 11, pode adicionar o valor "1” a cada coordenada depois de decodificar a coordenada, para determinar a coordenada.
Em alguns exemplos, a unidade de codificação por entropia 56 pode codificar também informações que indicam as posições de todos os outros coeficientes significativos dentro do bloco de acordo com a ordem de varredura (1022), isto é, as informações de posição de coeficientes significativos para o bloco. Conforme descrito anteriormente, as informações de posição de coeficientes significativos para o bloco podem ser representadas utilizando uma sequência de indicadores de coeficientes significativos. Conforme também descrito anteriormente, as informações de posição de coeficientes significativos podem ser codificadas pela codificação de cada indicador de coeficiente significativo da sequência pela execução de um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto com base em pelo menos um contexto, em que o pelo menos um contexto pode incluir a posição do indicador dentro do bloco de acordo com a ordem de varredura.
Neste exemplo, o modelo de contexto pode incluir estimativas de probabilidade que indicam a probabilidade de cada indicador compreender um dado valor ("0” ou "1”, por exemplo). Em alguns exemplos, a unidade de codificação por entropia 56 pode determinar as estimativas de probabilidade utilizando os valores de indicadores de coeficientes significativos correspondentes para blocos de dados de vídeo codificados anteriormente. Em outros exemplos, a unidade de codificação por entropia 56 pode também atualizar as estimativas de probabilidade utilizando o valor de cada indicador para refletir a probabilidade do indicador compreender um dado valor. Por exemplo, as estimativas de probabilidade atualizadas podem ser utilizadas para codificar informações de posição de coeficientes significativos para blocos de dados de vídeo subsequentemente codificados da maneira descrita acima.
Finalmente, a unidade de codificação por entropia 56 pode parar de codificar as informações de posição do último coeficiente significativo com base nas informações sobre ordem de varredura para o bloco (1024). Por exemplo, a unidade de codificação por entropia 56 pode prosseguir com outras tarefas de codificação, como, por exemplo, a codificação de outros elementos de sintaxe para o bloco ou bloco subsequente, conforme descrito anteriormente.
Desta maneira, o método da Figura 10 representa um exemplo de um método para codificar coordenadas x e y que indicam uma posição do último coeficiente não zero dentro de um bloco de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura e codificar coordenadas x e y permutadas que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura, em que a segunda ordem de varredura é diferente da primeira ordem de varredura.
A Figura 11 é um fluxograma que mostra outro exemplo de um método para decodificar de maneira eficaz informações de posição do último coeficiente significativo codificadas com base em informações sobre ordem de varredura para um bloco de dados de vídeo, compatível com as técnicas desta descrição. As técnicas da Figura 11 podem ser geralmente executadas por qualquer unidade de processamento ou processador, seja ela(e) implementada(o) em hardware, software, firmware ou uma combinação deles e, quando implementada(o) em software ou firmware, o hardware correspondente pode ser apresentado para realizar instruções para o software ou firmware. Para fins de exemplificação, as técnicas da Figura 11 são descritas com relação à unidade de decodificação por entropia 70 (Figura 3), embora deva ficar entendido que outros dispositivos podem ser configurados para realizar técnicas semelhantes. Além do mais, as etapas mostradas na Figura 11 podem ser executadas em uma ordem diferente ou em paralelo, e etapas adicionais podem ser acrescentadas e determinadas etapas omitidas, sem que se abandonem as técnicas desta descrição.
Inicialmente, a unidade de decodificação por entropia 70 pode receber um primeiro sinal para um bloco de dados de vídeo (1100). O bloco pode ser um macrobloco ou uma TU de uma CU, conforme descrito anteriormente. A unidade de decodificação por entropia 70 pode também decodificar o primeiro sinal para determinar uma indicação de se a coordenada x, que indica uma posição do último coeficiente significativo dentro do bloco de acordo com uma ordem de varredura associada ao bloco, corresponde a uma posição comum (1102). Da mesma maneira, a unidade de decodificação por entropia 70 pode receber também um segundo sinal para o bloco (1104). A unidade de decodificação por entropia 70 pode decodificar também o segundo sinal para determinar uma indicação de se a coordenada y, que índica uma posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, corresponde à posição comum (1106).
Por exemplo, a ordem de varredura pode ser uma ordem de varredura utilizada por uma unidade de codificação por entropia, como, por exemplo, a unidade de codificação por entropia 56, para codificar o bloco, e pode ser uma de uma série de ordens de varredura utilizadas para codificar blocos de dados de vídeo no sistema de codificação 10 correspondente, que compreende o codificador 20 e o decodificador 30. Por exemplo, cada uma da série de ordens de varredura pode originar-se na posição comum, conforme descrito anteriormente. A posição comum pode corresponder à posição DC.
Além disso, cada indicação pode compreender um único binário. Por exemplo, a unidade de decodificação por entropia 70 pode decodificar o primeiro sinal para determinar um primeiro binário, que indica se a coordenada x corresponde à posição comum (bin1 =" 1 ”, por exemplo) ou não (bin1=''0”), e decodificar o segundo sinal para determinar um segundo binário, que indica se a coordenada y corresponde à posição comum (bin2=“1”, por exemplo) ou não (bin2=“0”). Em alguns exemplos, a unidade de codificação por entropia 70 pode receber cada binário diretamente no fluxo de bits. Ou seja, o primeiro sinal e o segundo sinal podem compreender o primeiro binário e o segundo binário, respectivamente. Em outros exemplos, a unidade de decodificação por entropia 70 pode decodificar os primeiro e segundo sinais para determinar os respectivos binários utilizando um processo de codificação por entropia adaptativa ao contexto de maneira semelhante à descrita acima com referência às Figuras 7-9, como, por exemplo, pela execução de um processo CABAC, que inclui aplicar um modelo de contexto com base no contexto.
No caso de as coordenadas x e y corresponderem, cada uma, à posição comum (1108), a unidade de decodificação por entropia 70 pode parar de decodificar as informações de posição do último coeficiente significativo com base nas informações sobre ordem de varredura para o bloco (1130). Em outras palavras, nos casos em que as coordenadas x e y correspondem, cada uma, à posição comum, nenhum coeficiente significativo adicional além do último (e único) coeficiente significativo dentro do bloco de acordo com a ordem de varredura existe dentro do bloco. Em tais casos, a unidade de decodificação por entropia 70 não precisa decodificar nenhuma informação de posição do último coeficiente significativo, ou nenhuma informação sobre ordem de varredura ou informação de posição de coeficientes significativos adicional para o bloco. Em tais casos, por exemplo, a unidade de decodificação por entropia 70 pode prosseguir com outras tarefas de codificação, como, por exemplo, a decodificação de outros elementos de sintaxe para o bloco, ou o bloco subsequente.
No caso de as coordenadas x e y não corresponderem, cada uma, à posição comum (1108), a unidade de decodificação por entropia 70 pode receber também dados sobre ordem de varredura codificados para o bloco (1110). A unidade de decodificação por entropia 70 pode decodificar também os dados sobre ordem de varredura para determinar informações que identificam a ordem de varredura (1112), isto é, as informações sobre ordem de varredura para o bloco. Em alguns exemplos, nos quais a ordem de varredura inclui uma de duas ordens de varredura utilizadas dentro do sistema 10 para codificar blocos de dados de vídeo, a unidade de decodificação por entropia 70 pode decodificar os dados sobre ordem de varredura utilizando um único binário. Por exemplo, o binário único pode indicar se a ordem de varredura é uma primeira ordem de varredura (bin=''0”, por exemplo) ou uma segunda ordem de varredura (bin=''1''). Em outros exemplos, nos quais a ordem de varredura inclui uma de três ordens de varredura que podem ser utilizadas dentro do sistema 10 para codificar blocos de dados de vídeo, a unidade de decodificação por entropia 70 pode decodificar os dados sobre ordem de varredura para determinar entre um e dois binários. Por exemplo, a unidade de decodificação por entropia 70 pode determinar um primeiro binário, que indica se a ordem de varredura é uma primeira ordem de varredura (como, por exemplo, bin1=''0”, se a ordem de varredura for a primeira ordem de varredura, e bin1="1” caso contrário). No caso do primeiro binário indicar que a ordem de varredura não é a primeira ordem de varredura, a unidade de decodificação por entropia 70 pode determinar um segundo binário, que indica se a ordem de varredura é uma segunda ordem de varredura (bin2=''0”, por exemplo) ou uma terceira ordem de varredura (bin2="1 ”, por exemplo). Em outros exemplos, podem ser utilizados outros métodos para determinar as informações sobre ordem de varredura para o bloco, que incluem a utilização de outros valores de binário. Em alguns exemplos, a unidade de decodificação por entropia 70 pode receber cada binário diretamente no fluxo de bits. Ou seja, os dados sobre ordem de varredura podem compreender o um ou mais binários. Em outros exemplos, a unidade de decodificação por entropia 70 pode decodificar os dados sobre ordem de varredura para determinar cada binário utilizando um processo de codificação por entropia adaptativa ao contexto de maneira semelhante à descrita acima com referência às Figuras 7-9, como, por exemplo, pela execução de um processo CABAC, que inclui aplicar um modelo de contexto com base em um contexto. Alternativamente, conforme descrito anteriormente, a unidade de decodificação por entropia 70 pode não receber e decodificar os dados sobre ordem de varredura para o bloco quando a unidade de decodificação por entropia 70 utiliza uma ordem de varredura adaptativa para decodificar o bloco.
Seja como for, no caso da coordenada x não corresponder à posição comum (1114), a unidade de decodificação por entropia 70 pode receber também a coordenada x codificada (1116) e decodificar a coordenada x com base na ordem de varredura (1118). Da mesma maneira, no caso da coordenada y não corresponder à posição comum (1120), a unidade de decodificação por entropia 70 pode receber também a coordenada y codificada (1122) e decodificar a coordenada y com base na ordem de varredura (1124). Conforme descrito anteriormente, para decodificar as coordenadas x e y codificadas, a unidade de decodificação 70 pode também determinar estatísticas que indicam a probabilidade de uma dada posição dentro do bloco corresponder à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, de maneira substancialmente semelhante à descrita acima com referência à unidade de codificação por entropia 56. As estatísticas podem indicar a probabilidade de uma coordenada, como, por exemplo, uma coordenada x ou y, que corresponde à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura, compreender um dado valor (como, por exemplo, "0”, "1”, "2”, etc.). Em outras palavras, as estatísticas podem indicar a probabilidade de cada uma das coordenadas x e y descritas anteriormente compreenderem um dado valor. Em alguns exemplos, a unidade de decodificação por entropia 70 pode determinar as estatísticas utilizando informações de posição do último coeficiente significativo para blocos de dados de vídeo codificados anteriormente, como, por exemplo, os valores das coordenadas x e y para os blocos codificados anteriormente.
Em alguns exemplos, as estatísticas podem variar dependendo da ordem de varredura. Em particular, a probabilidade de uma dada posição dentro do bloco corresponder à posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura pode variar dependendo da ordem de varredura. Ou seja, ordens de varredura diferentes podem resultar em estatísticas diferentes para as informações de posição do último coeficiente significativo para o bloco. Sendo assim, quando se decodificam as informações de posição do último coeficiente significativo codificadas para o bloco com base nas estatísticas, a escolha das estatísticas com base, pelo menos em parte, na ordem de varredura pode resultar na utilização de estatísticas precisas e, portanto, pode permitir codificação eficaz. Sendo assim, a unidade de decodificação por entropia 70 pode decodificar as coordenadas x e y codificadas com base nas estatísticas, em que a unidade de decodificação por entropia 70 seleciona as estatísticas com base, pelo menos em parte, na ordem de varredura. Por conseguinte, a unidade de decodificação por entropia 70 pode decodificar as coordenadas x e y codificadas com base na ordem de varredura. Além disto, a unidade de decodificação por entropia 70 pode atualizar as estatísticas com base nas coordenadas x e y para refletir a probabilidade de as respectivas coordenadas compreenderem valores específicos. Por exemplo, as estatísticas atualizadas podem ser utilizadas para decodificar informações de posição do último coeficiente significativo codificadas para blocos de dados de vídeo codificados subsequentemente da maneira descrita acima.
Em alguns exemplos, para decodificar as coordenadas x e y codificadas com base nas estatísticas, a unidade de decodificação por entropia 70 pode realizar um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto que inclui as estatísticas com base em pelo menos um contexto. Por exemplo, o pelo menos um contexto pode incluir uma das coordenadas x e y e a ordem de varredura. Neste exemplo, a unidade de decodificação por entropia 70 pode utilizar a ordem de varredura para selecionar o modelo de contexto específico que inclui as estatísticas. Desta maneira, a unidade de decodificação por entropia 70 pode decodificar as coordenadas x e y codificadas com base na ordem de varredura. Além disto, nos casos em que uma coordenada codificada (a coordenada y, por exemplo) é decodificada depois de outra coordenada codificada (a coordenada x, por exemplo), a unidade de decodificação por entropia 70 pode decodificar a coordenada utilizando o valor da outra coordenada, decodificada anteriormente, como contexto. Ou seja, o valor de uma coordenada decodificada anteriormente das coordenadas x e y pode ser utilizado para selecionar também estatísticas dentro do modelo de contexto que indicam a probabilidade da outra coordenada, atualmente decodificada, compreender um dado valor. A unidade de decodificação por entropia 70 pode utilizar então as estatísticas selecionadas para decodificar as coordenadas x e y codificadas pela realização de codificação por entropia adaptativa ao contexto.
As coordenadas x e y podem ser, cada uma, representadas utilizando uma palavra de código unária que compreende uma sequência de um ou mais binários isto é, binarizada. Sendo assim, para decodificar as coordenadas x e y codificadas com base nas estatísticas, a unidade de decodificação por entropia 70 pode decodificar cada binário de uma palavra de código que corresponde a uma coordenada específica pela realização de codificação por entropia adaptativa ao contexto. Neste exemplo, as estatísticas incluídas no modelo de contexto, que indicam a probabilidade da coordenada compreender um dado valor, podem incluir estimativas de probabilidade que indicam a probabilidade de cada binário da palavra de código que corresponde à coordenada compreender um dado valor ("0” ou "1”, por exemplo). Além disto, as estatísticas podem incluir estimativas de probabilidade diferentes para cada binário da palavra de código, dependendo da posição do respectivo binário dentro da palavra de código. Em alguns exemplos, a unidade de decodificação por entropia 70 pode determinar as estimativas de probabilidade utilizando os valores de binários correspondentes para blocos de dados de vídeo codificados anteriormente, como, por exemplo, binários de palavras de código que correspondem a coordenadas x e y para os blocos codificados anteriormente, como, por exemplo, como parte da determinação das estatísticas com base nas informações de posição do último coeficiente significativo para os blocos codificados anteriormente, conforme descrito anteriormente. Em outros exemplos, a unidade de decodificação por entropia 70 pode atualizar as estimativas de probabilidade utilizando o valor de cada binário, como, por exemplo, como parte da atualização das estatísticas com base nas coordenadas x e y, conforme também descrito anteriormente. A unidade de decodificação por entropia 70 pode utilizar as estimativas de probabilidade para decodificar cada binário pela realização de codificação por entropia adaptativa ao contexto.
Conforme descrito anteriormente, como outro exemplo, a unidade de decodificação por entropia 70 pode decodificar as coordenadas x e y pela decodificação de pelo menos um binário da sequência que corresponde a uma das coordenadas pela seleção das estatísticas a partir do modelo de contexto com base, pelo menos em parte, no valor de pelo menos um binário, como, por exemplo, um binário correspondente, da sequência que corresponde à outra coordenada. Além disto, a unidade de decodificação por entropia 70 pode decodificar o um ou mais binários da sequência que corresponde a uma das coordenadas e o um ou mais binários da sequência que corresponde à outra coordenada de maneira intercalada.
Ao decodificar cada coordenada, a unidade de decodificação por entropia 70 pode adicionar o valor "1” a cada coordenada para permitir a codificação das coordenadas de maneira mais eficaz do que quando se utilizam outros métodos. Por exemplo, conforme também descrito anteriormente, uma unidade de codificação por entropia, como, por exemplo, a unidade de codificação por entropia 56, pode codificar as coordenadas x e y primeiro subtraindo o valor "1” de cada coordenada para reduzir a quantidade de informações utilizadas para codificar as coordenadas. Sendo assim, a unidade de decodificação por entropia 70 pode adicionar o valor "1” a cada coordenada depois de decodificar a coordenada, para determinar a coordenada.
Em alguns exemplos, a unidade de decodificação por entropia 70 pode também receber dados significativos codificados para o bloco (1126). Nestes exemplos, a unidade de decodificação por entropia 70 pode decodificar os dados significativos para determinar informações que indicam as posições de todos os outros coeficientes significativos dentro do bloco de acordo com a ordem de varredura (1128), isto é, as informações de posição de coeficientes significativos para o bloco. Conforme descrito anteriormente, as informações de posição de coeficientes significativos para o bloco podem ser representadas utilizando uma sequência de indicadores de coeficientes significativos, conforme descrito anteriormente. Conforme também descrito anteriormente, as informações de posição de coeficientes significativos podem ser decodificadas pela decodificação de cada indicador de coeficiente significativo da sequência pela execução de um processo de codificação por entropia adaptativa ao contexto (um processo CABAC, por exemplo), que inclui aplicar um modelo de contexto com base em pelo menos um contexto, em que o pelo menos um contexto pode incluir a posição do indicador dentro do bloco de acordo com a ordem de varredura.
Neste exemplo, o modelo de contexto pode incluir estimativas de probabilidade que indicam a probabilidade de cada indicador compreender um dado valor ("0” ou "1”, por exemplo). Em alguns exemplos, a unidade de decodificação por entropia 70 pode determinar as estimativas de probabilidade utilizando os valores de indicadores de coeficientes significativos correspondentes para blocos de dados de vídeo codificados anteriormente. Em outros exemplos, a unidade de decodificação por entropia 70 pode também atualizar as estimativas de probabilidade utilizando o valor de cada indicador para refletir a probabilidade do indicador compreender um dado valor. Por exemplo, as estimativas de probabilidade atualizadas podem ser utilizadas para decodificar informações de posição de coeficientes significativos para blocos de dados de vídeo subsequentemente codificados da maneira descrita acima.
Finalmente, a unidade de decodificação por entropia 70 pode parar de decodificar as informações de posição do último coeficiente significativo codificadas com base nas informações sobre ordem de varredura para o bloco (1130). Por exemplo, a unidade de decodificação por entropia 70 pode prosseguir com outras tarefas de codificação, como, por exemplo, a decodificação de outros elementos de sintaxe para o bloco, ou bloco subsequente, conforme descrito anteriormente. Desta maneira, o método da Figura 11 representa um exemplo de um método para codificar coordenadas x e y que indicam a posição de último coeficiente não zero dentro de um bloco de dados de vídeo de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura, e codificar coordenadas x e y permutadas que indicam uma posição do último coeficiente não zero dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura, em que a segunda ordem de varredura é diferente da primeira ordem de varredura.
Portanto, de acordo com as técnicas desta descrição, um fluxo de bits codificado pode compreender informações de posição do último coeficiente significativo para um bloco de dados de vídeo, isto é, para coeficientes associados ao bloco. Em particular, o codificador de vídeo 20 pode codificar coordenadas x e y que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com uma ordem de varredura associada ao bloco quando a ordem de varredura compreende uma primeira ordem de varredura, e codificador coordenadas x e y permutadas que indicam uma posição do último coeficiente significativo dentro do bloco de acordo com a ordem de varredura quando a ordem de varredura compreende uma segunda ordem de varredura. Por exemplo, a segunda ordem de varredura pode ser diferente da primeira ordem de varredura. O decodificador de vídeo 30 pode, por sua vez, decodificar as informações de posição do último coeficiente significativo para o bloco. Em particular, o decodificador de vídeo 30 pode decodificar as coordenadas x e y quando a ordem de varredura compreende a primeira ordem de varredura e decodificar as coordenadas x e y permutadas quando a ordem de varredura compreende a segunda ordem de varredura.
Por conseguinte, esta descrição contempla também um meio legível por computador que compreende uma estrutura de dados armazenada nele que inclui um fluxo de bits codificado. O fluxo de bits codificado armazenado no meio legível por computador pode compreender dados de vídeo codificados utilizando um formato específico e informações codificadas que identificam uma posição do último coeficiente significativo dentro de um bloco de dados de vídeo de acordo com uma ordem de varredura associada ao bloco, representada utilizando coordenadas x e y. A ordem específica em que as coordenadas x e y são codificadas dentro do fluxo de bits depende da ordem de varredura associada ao bloco compreender uma primeira ordem de varredura ou uma segunda ordem de varredura. Mais especificamente, se a ordem de varredura compreender a primeira ordem de varredura, o fluxo de bits pode incluir as informações de posição do último coeficiente significativo para o bloco codificadas utilizando coordenadas x e y. Neste caso, as informações de posição do último coeficiente significativo para o bloco podem ser decodificadas, e as coordenadas x e y resultantes podem ser utilizadas diretamente para decodificar o bloco. Alternativamente, se a ordem de varredura compreender a segunda ordem de varredura, então o fluxo de bits pode incluir as informações de posição do último coeficiente significativo para o bloco codificadas utilizando coordenadas x e y permutadas. Neste caso, as informações de posição do último coeficiente significativo podem ser decodificadas e nesse caso as coordenadas x e y permutadas são também permutadas, e as coordenadas x e y resultantes podem ser utilizadas para decodificar o bloco.
Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação deles. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas através de, como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. O meio legível por computador pode incluir um meio de armazenamento legível por computador, que corresponde a um meio tangível, tal como um meio de armazenamento de dados ou um meio de comunicação que inclua qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, de acordo com um protocolo de comunicação, por exemplo. Desta maneira, o meio legível por computador pode corresponder geralmente a (1) um meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação, tal como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio que possa ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para a implementação das técnicas descritas nesta descrição. Um produto de programa de computador pode incluir um meio legível por computador.
A título de exemplo, e não de limitação, tal meio de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, 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 um código de programa desejado sob a forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disto, qualquer conexão é apropriadamente denominada de meio legível por computador. Por exemplo, se instruções forem transmitidas de um site da Web, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio tais como infravermelho, rádio e microonda, então o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou tecnologias sem fio tais como infravermelho, rádio e microonda são incluídos na definição de meio. Deve ficar entendido, contudo, que os meios de armazenamento legíveis por computador e meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas são em vez disso direcionados para meios de armazenamento tangíveis, não transitórios. Disco (disk e disc), conforme aqui utilizado, inclui disco compacto (CD), disco de laser, disco óptico, disco versátil digital (DVD), disco flexível e disco Blu-ray, em que discos (disks) usualmente reproduzem dados magneticamente, enquanto discos (discs) reproduzem dados opticamente com lasers. Combinações dos elementos acima devem ser também incluídas dentro do alcance dos meios legíveis por computador.
As instruções podem ser executadas por um ou mais processadores, tais como processadores de sinais digitais (DSPs), microprocessadores para propósito geral, circuitos integrados de aplicação específica (ASICs), matriz de portas programáveis no campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo "processador”, conforme aqui utilizado, pode referir-se a qualquer uma das estruturas precedentes ou qualquer outra estrutura adequada para a implementação das técnicas aqui descritas. Além disto, sob alguns aspectos, a funcionalidade aqui descrita pode ser provida dentro de módulos de hardware e/ou software dedicados configurados para codificação e decodificação ou incorporada a um codec combinado. Além disto, as técnicas podem ser completamente implementadas em um ou mais circuitos ou elementos lógicos.
As técnicas desta descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, que incluem um dispositivo telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (m conjunto de chips, por exemplo). Diversos componentes, módulos ou unidades são descritos nesta descrição para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas descritas, mas não exigem necessariamente a concretização por unidades de hardware diferentes. Em vez disso, conforme descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware de codec ou providas por uma coleção de unidades de hardware interoperacionais, inclusive um ou mais processadores, conforme descrito acima, em conjunto com software e/ou firmware adequados.
Foram descritos diversos exemplos. Estes e outros exemplos estão dentro do escopo das reivindicações seguintes.

Claims (9)

  1. Método para codificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo, o método CARACTERIZADO pelo fato de que compreende:
    realizar codificação por entropia adaptativa de contexto de coordenadas x e y indicando uma posição horizontal e uma posição vertical, respectivamente, de um último coeficiente não zero dentro do bloco de acordo com uma ordem de varredura associada ao bloco, em que realizar codificação por entropia adaptativa de contexto inclui utilizar estatísticas que são baseadas em pelo menos um contexto, e em que as estatísticas indicam uma probabilidade de cada uma das coordenadas x e y compreender um dado valor quando os coeficientes do bloco de dados de vídeo são varridos em uma primeira ordem de varredura, a probabilidade das coordenadas x e y compreender um dado valor sendo a mesma ou similar às probabilidades de coordenadas x e y permutadas compreender um dado valor quando os coeficientes são varridos em uma segunda ordem de varredura diferente da primeira ordem de varredura;
    onde os coeficientes do bloco de dados de vídeo são varridos na primeira ordem de varredura, como parte da realização de codificação por entropia adaptativa de contexto das coordenadas x e y, codificar a coordenada x e a coordenada y utilizando as estatísticas de modo que a coordenada x é codificada com base na probabilidade da coordenada x compreender um dado valor e a coordenada y é codificada com base na probabilidade da coordenada y compreender um dado valor; e
    onde os coeficientes do bloco de dados de vídeo são varridos na segunda ordem de varredura, permutando as coordenadas x e y, e, como parte da realização de codificação por entropia adaptativa de contexto das coordenadas x e y, codificar a coordenada x permutada e a coordenada y permutada utilizando as estatísticas de modo que a coordenada x permutada é codificada com base na probabilidade da coordenada y compreender um dado valor e a coordenada y permutada é codificada com base na probabilidade da coordenada x compreender um dado valor.
  2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a primeira ordem de varredura e a segunda ordem de varredura são simétricas uma com relação à outra.
  3. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a primeira ordem de varredura compreende uma ordem de varredura horizontal e a segunda ordem de varredura compreende uma ordem de varredura vertical, e em que a ordem de varredura horizontal e a ordem de varredura vertical se originam em uma posição comum dentro do bloco.
  4. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que compreende adicionalmente:
    codificar informações que identificam a ordem de varredura.
  5. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que compreende adicionalmente:
    codificar valores de coeficientes não zero associados ao bloco de dados de vídeo com base nas respectivas coordenadas das coordenadas x e y e nas coordenadas x e y permutadas; e
    emitir os valores codificados dos coeficientes não zero em um fluxo de bits.
  6. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que codificar cada uma das coordenadas x e y e das coordenadas x e y permutadas compreende codificar uma sequência de um ou mais binários, em que as estatísticas indicam probabilidades de cada um dos binários possuir um dado valor.
  7. Dispositivo para codificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo, o dispositivo CARACTERIZADO pelo fato de que compreende:
    mecanismos para realizar codificação por entropia adaptativa de contexto das coordenadas x e y indicando uma posição horizontal e uma posição vertical, respectivamente, de um último coeficiente não zero dentro do bloco de acordo com uma ordem de varredura associada ao bloco, em que realizar codificação por entropia adaptativa de contexto inclui utilizar estatísticas que são baseadas em pelo menos um contexto, e em que as estatísticas indicam uma probabilidade de cada uma das coordenadas x e y compreender um dado valor quando os coeficientes dos blocos de dados de vídeo são varridos em uma primeira ordem de varredura, a probabilidade das coordenadas x e y compreender um dado valor sendo a mesma ou similar às probabilidades de coordenadas x e y permutadas compreender um dado valor quando os coeficientes são varridos em uma segunda ordem de varredura diferente da primeira ordem de varredura;
    mecanismos para codificar os coeficientes em que:
    onde os coeficientes do bloco de dados de vídeo são varridos na primeira ordem de varredura, como parte da realização de codificação por entropia adaptativa de contexto das coordenadas x e y, codificar a coordenada x e a coordenada y utilizando estatísticas de modo que a coordenada x é codificada com base na probabilidade da coordenada x compreender um dado valor e a coordenada y é codificada com base na probabilidade da coordenada y compreender um dado valor; e
    onde os coeficientes do bloco de dados de vídeo são varridos na segunda ordem de varredura, permutando as coordenadas x e y, e como parte da realização de codificação por entropia adaptativa de contexto das coordenadas x e y, codificar a coordenada x permutada e a coordenada y permutada utilizando as estatísticas de modo que a coordenada x permutada é codificada com base na probabilidade da coordenada y compreender um dado valor e a coordenada y permutada é codificada com base na probabilidade da coordenada x compreender um dado valor.
  8. Dispositivo, de acordo com a reivindicação 7, CARACTERIZADO pelo fato de que compreende adicionalmente:
    mecanismos para codificar valores de coeficientes não zero associados ao bloco de dados de vídeo com base nas respectivas coordenadas das coordenadas x e y e nas coordenadas x e y permutadas; e
    mecanismos para emitir os valores codificados dos coeficientes não zero em um fluxo de bits.
  9. Meio legível por computador CARACTERIZADO pelo fato de que compreende instruções que, quando executadas, fazem um processador codificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo, em que as instruções fazem o processador realizar o método conforme definido em qualquer uma das reivindicações 1 a 6.
BR112013013650-2A 2010-12-03 2011-11-30 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 BR112013013650B1 (pt)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US41974010P 2010-12-03 2010-12-03
US61/419,740 2010-12-03
US201061426360P 2010-12-22 2010-12-22
US201061426426P 2010-12-22 2010-12-22
US201061426372P 2010-12-22 2010-12-22
US61/426,360 2010-12-22
US61/426,426 2010-12-22
US61/426,372 2010-12-22
US13/303,015 2011-11-22
US13/303,015 US9042440B2 (en) 2010-12-03 2011-11-22 Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding
PCT/US2011/062715 WO2012075193A1 (en) 2010-12-03 2011-11-30 Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding

Publications (2)

Publication Number Publication Date
BR112013013650A2 BR112013013650A2 (pt) 2016-09-13
BR112013013650B1 true BR112013013650B1 (pt) 2021-03-23

Family

ID=46162210

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112013013650-2A BR112013013650B1 (pt) 2010-12-03 2011-11-30 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

Country Status (16)

Country Link
US (2) US9042440B2 (pt)
EP (4) EP3361641B1 (pt)
JP (1) JP5746363B2 (pt)
KR (1) KR101523452B1 (pt)
CN (1) CN103238323B (pt)
AU (1) AU2011336601B2 (pt)
BR (1) BR112013013650B1 (pt)
CA (1) CA2818436C (pt)
ES (2) ES2963135T3 (pt)
HK (1) HK1185488A1 (pt)
IL (1) IL226209A (pt)
MY (1) MY161436A (pt)
RU (1) RU2541226C2 (pt)
SG (1) SG190691A1 (pt)
WO (1) WO2012075193A1 (pt)
ZA (1) ZA201304933B (pt)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RS56250B1 (sr) 2010-07-09 2017-11-30 Samsung Electronics Co Ltd Uređaj za entropijsko dekodiranje koeficijenta transformacije
US10091529B2 (en) 2010-07-09 2018-10-02 Samsung Electronics Co., Ltd. Method and apparatus for entropy encoding/decoding a transform coefficient
US9497472B2 (en) 2010-11-16 2016-11-15 Qualcomm Incorporated Parallel context calculation in video coding
US9042440B2 (en) * 2010-12-03 2015-05-26 Qualcomm Incorporated Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
US8755620B2 (en) 2011-01-12 2014-06-17 Panasonic Corporation Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus for performing arithmetic coding and/or arithmetic decoding
US8687904B2 (en) * 2011-01-14 2014-04-01 Panasonic Corporation Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus which include arithmetic coding or arithmetic decoding
US9106913B2 (en) 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
US9338449B2 (en) 2011-03-08 2016-05-10 Qualcomm Incorporated Harmonized scan order for coding transform coefficients in video coding
CN103597838B (zh) * 2011-04-15 2017-03-29 黑莓有限公司 对末位有效系数的位置进行编码和解码的方法和设备
MX2014000172A (es) * 2011-06-28 2014-02-19 Samsung Electronics Co Ltd Metodo y aparato para codificar video y metodo y aparato para decodificar video acompañados por una codificacion aritmetica.
US9491469B2 (en) 2011-06-28 2016-11-08 Qualcomm Incorporated Coding of last significant transform coefficient
WO2013017092A1 (en) 2011-08-04 2013-02-07 Mediatek Inc. Method and apparatus for reordered binarization of syntax elements in cabac
TWI613907B (zh) * 2011-11-08 2018-02-01 三星電子股份有限公司 用於解碼視訊的方法
CN107483944B (zh) 2011-11-08 2020-06-05 株式会社Kt 利用解码装置对视频信号进行解码的方法
US9860527B2 (en) 2012-01-19 2018-01-02 Huawei Technologies Co., Ltd. High throughput residual coding for a transform skipped block for CABAC in HEVC
US9654139B2 (en) * 2012-01-19 2017-05-16 Huawei Technologies Co., Ltd. High throughput binarization (HTB) method for CABAC in HEVC
US9743116B2 (en) 2012-01-19 2017-08-22 Huawei Technologies Co., Ltd. High throughput coding for CABAC in HEVC
US10616581B2 (en) 2012-01-19 2020-04-07 Huawei Technologies Co., Ltd. Modified coding for a transform skipped block for CABAC in HEVC
US20130188736A1 (en) 2012-01-19 2013-07-25 Sharp Laboratories Of America, Inc. High throughput significance map processing for cabac in hevc
US9237344B2 (en) * 2012-03-22 2016-01-12 Qualcomm Incorporated Deriving context for last position coding for video coding
US9756327B2 (en) 2012-04-03 2017-09-05 Qualcomm Incorporated Quantization matrix and deblocking filter adjustments for video coding
KR20130112374A (ko) * 2012-04-04 2013-10-14 한국전자통신연구원 고속 인트라 예측을 위한 영상 부호화 방법 및 장치
SG10201707023VA (en) 2012-04-15 2017-10-30 Samsung Electronics Co Ltd Parameter update method for entropy coding and decoding of conversion coefficient level, and entropy coding device and entropy decoding device of conversion coefficient level using same
US9621921B2 (en) 2012-04-16 2017-04-11 Qualcomm Incorporated Coefficient groups and coefficient coding for coefficient scans
MX2013015089A (es) 2012-05-25 2014-02-21 Panasonic Corp Metodo de codificacion de imagenes en movimiento, metodo de decodificacion de imagenes en movimiento, aparato de codificacion de imagenes en movimiento, aparato de decodificacion de imágenes en movimiento y aparato de codificacion y decodificacion de imagenes en movimiento.
SG10201803891XA (en) 2012-05-25 2018-07-30 Velos Media Int Ltd Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus
WO2013175736A1 (ja) * 2012-05-25 2013-11-28 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置
PL2858357T3 (pl) 2012-06-04 2022-11-21 Sun Patent Trust Sposób kodowania obrazów wideo, sposób dekodowania obrazów wideo
JP6788346B2 (ja) * 2012-10-01 2020-11-25 ジーイー ビデオ コンプレッション エルエルシー ベース層からの予測のための副ブロックの副分割の派生を使用するスケーラブルビデオ符号化
US10003804B2 (en) 2012-12-27 2018-06-19 Nec Corporation Video coding device using quantizing an orthogonal transform coefficient
EP3010230A4 (en) * 2013-06-11 2016-11-16 Nec Corp VIDEO CODING DEVICE, VIDEO PROCESSING AND VIDEO PROGRAM
US9445132B2 (en) * 2013-09-09 2016-09-13 Qualcomm Incorporated Two level last significant coefficient (LSC) position coding
US9215464B2 (en) * 2013-09-19 2015-12-15 Blackberry Limited Coding position data for the last non-zero transform coefficient in a coefficient group
CN104853196B (zh) * 2014-02-18 2018-10-19 华为技术有限公司 编解码方法和装置
EP3120561B1 (en) * 2014-03-16 2023-09-06 VID SCALE, Inc. Method and apparatus for the signaling of lossless video coding
JP6341756B2 (ja) * 2014-05-26 2018-06-13 キヤノン株式会社 画像処理装置、画像処理装置の制御方法
EP3306930A4 (en) * 2015-09-10 2018-05-02 Samsung Electronics Co., Ltd. Encoding device, decoding device, and encoding and decoding method thereof
CN106657961B (zh) * 2015-10-30 2020-01-10 微软技术许可有限责任公司 立体视频的混合数字-模拟编码
RU2606370C1 (ru) * 2015-12-03 2017-01-10 Общество с ограниченной ответственностью "РОБОСИВИ" (ООО "РОБОСИВИ") Способ сегментирования лазерных сканов и система для его осуществления
US10602192B2 (en) * 2016-02-04 2020-03-24 Mediatek Inc. Methods and apparatuses for performing entropy encoding and entropy decoding with size determination of at least one bitstream portion
EP3270594A1 (en) * 2016-07-15 2018-01-17 Thomson Licensing Method and apparatus for advanced cabac context adaptation for last coefficient coding
EP3509301B1 (en) 2016-08-31 2023-08-09 KT Corporation Method and device for processing video signal
US10817587B2 (en) 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
US10735023B2 (en) 2017-02-24 2020-08-04 Texas Instruments Incorporated Matrix compression accelerator system and method
US10810281B2 (en) 2017-02-24 2020-10-20 Texas Instruments Incorporated Outer product multipler system and method
US11086967B2 (en) 2017-03-01 2021-08-10 Texas Instruments Incorporated Implementing fundamental computational primitives using a matrix multiplication accelerator (MMA)
US10523968B2 (en) 2017-09-18 2019-12-31 Google Llc Coding of last significant coefficient flags
WO2019199838A1 (en) * 2018-04-12 2019-10-17 Futurewei Technologies, Inc. Reducing context switching for coding transform coefficients
US11128866B2 (en) 2018-10-18 2021-09-21 Qualcomm Incorporated Scans and last coefficient position coding for zero-out transforms
US11677955B2 (en) 2019-01-15 2023-06-13 Lg Electronics Inc. Image decoding method for coding residual information on basis of high frequency zeroing in image coding system, and device therefor
US20220277491A1 (en) * 2019-05-31 2022-09-01 Electronics And Telecommunications Research Institute Method and device for machine learning-based image compression using global context
KR20220024500A (ko) * 2019-07-12 2022-03-03 엘지전자 주식회사 변환에 기반한 영상 코딩 방법 및 그 장치
CN112449192B (zh) * 2019-08-27 2022-09-16 杭州海康威视数字技术股份有限公司 解码方法、编码方法及装置
US11785219B2 (en) 2020-04-13 2023-10-10 Qualcomm Incorporated Coefficient coding for support of different color formats in video coding

Family Cites Families (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1679903A (en) 1928-01-12 1928-08-07 Chase Appliance Corp Anticreeping device for railway rails
US5295203A (en) 1992-03-26 1994-03-15 General Instrument Corporation Method and apparatus for vector coding of video transform coefficients
JPH06205388A (ja) 1992-12-28 1994-07-22 Canon Inc 画像符号化装置
EP0607484B1 (en) 1993-01-20 1998-09-09 Samsung Electronics Co. Ltd. Method and device for encoding and decoding image data
EP1802134A3 (en) 1995-03-15 2008-12-31 Kabushiki Kaisha Toshiba Moving picture coding and/or decoding systems
US5838825A (en) 1996-01-17 1998-11-17 Matsushita Electric Industrial Co., Ltd. Apparatus for decompressing image data which has been compressed using a linear transform
US5818877A (en) 1996-03-14 1998-10-06 The Regents Of The University Of California Method for reducing storage requirements for grouped data values
US6301304B1 (en) 1998-06-17 2001-10-09 Lsi Logic Corporation Architecture and method for inverse quantization of discrete cosine transform coefficients in MPEG decoders
US6553147B2 (en) 1998-10-05 2003-04-22 Sarnoff Corporation Apparatus and method for data partitioning to improving error resilience
EP1041826A1 (en) 1999-04-01 2000-10-04 Lucent Technologies Inc. Apparatus for coding data and apparatus for decoding block transform coefficients
US6775414B1 (en) * 1999-11-19 2004-08-10 Ati International Srl Variable-length code decoder
US6680974B1 (en) 1999-12-02 2004-01-20 Lucent Technologies Inc. Methods and apparatus for context selection of block transform coefficients
US6650707B2 (en) * 2001-03-02 2003-11-18 Industrial Technology Research Institute Transcoding apparatus and method
US20020122483A1 (en) * 2001-03-02 2002-09-05 Matsushita Electric Industrial Co., Ltd. Encoding circuit and method
WO2002078355A1 (en) 2001-03-23 2002-10-03 Nokia Corporation Variable length coding
US6856701B2 (en) 2001-09-14 2005-02-15 Nokia Corporation Method and system for context-based adaptive binary arithmetic coding
EP1445955A4 (en) * 2001-11-16 2009-10-28 Ntt Docomo Inc IMAGE ENCODING METHOD, IMAGE DECODING METHOD, ENCODER AND IMAGE DECODER, PROGRAM, COMPUTER DATA SIGNAL, AND IMAGE TRANSMISSION SYSTEM
US7190840B2 (en) 2002-01-07 2007-03-13 Hewlett-Packard Development Company, L.P. Transform coefficient compression using multiple scans
JP3866580B2 (ja) 2002-01-30 2007-01-10 日本電信電話株式会社 画像符号化装置、画像復号装置、画像符号化プログラム、画像復号プログラム及びそれらのプログラムを記録したコンピュータ読み取り可能な記録媒体
US7099387B2 (en) 2002-03-22 2006-08-29 Realnetorks, Inc. Context-adaptive VLC video transform coefficients encoding/decoding methods and apparatuses
JP4090862B2 (ja) 2002-04-26 2008-05-28 松下電器産業株式会社 可変長符号化方法および可変長復号化方法
KR100729270B1 (ko) 2002-05-02 2007-06-15 프라운호퍼-게젤샤프트 츄어 푀르더룽 데어 안게반텐 포르슝에.파우. 이미지 및/또는 비디오 인코더 및 디코더에서의변환계수를 인코딩하는 방법 및 장치, 및 이에 대응하는컴퓨터 프로그램 및 컴퓨터로 읽을 수 있는 저장매체
US7376280B2 (en) 2002-07-14 2008-05-20 Apple Inc Video encoding and decoding
US7483575B2 (en) 2002-10-25 2009-01-27 Sony Corporation Picture encoding apparatus and method, program and recording medium
US6646578B1 (en) 2002-11-22 2003-11-11 Ub Video Inc. Context adaptive variable length decoding system and method
US20050036549A1 (en) 2003-08-12 2005-02-17 Yong He Method and apparatus for selection of scanning mode in dual pass encoding
US7688894B2 (en) 2003-09-07 2010-03-30 Microsoft Corporation Scan patterns for interlaced video content
US7379608B2 (en) 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
US7599435B2 (en) 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
US7522774B2 (en) 2004-03-10 2009-04-21 Sindhara Supermedia, Inc. Methods and apparatuses for compressing digital image data
US20060078049A1 (en) 2004-10-13 2006-04-13 Nokia Corporation Method and system for entropy coding/decoding of a video bit stream for fine granularity scalability
NO322043B1 (no) 2004-12-30 2006-08-07 Tandberg Telecom As Fremgangsmate for forenklet entropikoding
US8311119B2 (en) * 2004-12-31 2012-11-13 Microsoft Corporation Adaptive coefficient scan order
US7609904B2 (en) 2005-01-12 2009-10-27 Nec Laboratories America, Inc. Transform coding system and method
JP2006211304A (ja) 2005-01-28 2006-08-10 Matsushita Electric Ind Co Ltd 映像符号化装置、映像復号化装置、映像符号化方法、映像復号化方法、映像符号化プログラムおよび映像復号化プログラム
US20060227865A1 (en) 2005-03-29 2006-10-12 Bhaskar Sherigar Unified architecture for inverse scanning for plurality of scanning scheme
EP1768415A1 (en) 2005-09-27 2007-03-28 Matsushita Electric Industrial Co., Ltd. Adaptive scan order of DCT coefficients and its signaling
US8599925B2 (en) 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
US20070071331A1 (en) 2005-09-24 2007-03-29 Xiteng Liu Image compression by economical quaternary reaching method
WO2007043583A1 (ja) 2005-10-11 2007-04-19 Matsushita Electric Industrial Co., Ltd. 画像符号化装置、画像復号化装置及びこれらの方法
WO2007063472A2 (en) 2005-11-30 2007-06-07 Koninklijke Philips Electronics N.V. Encoding method and apparatus applying coefficient reordering
KR100867995B1 (ko) 2006-01-07 2008-11-10 한국전자통신연구원 동영상 데이터 인코딩/디코딩 방법 및 그 장치
US7884742B2 (en) 2006-06-08 2011-02-08 Nvidia Corporation System and method for efficient compression of digital data
US8275045B2 (en) 2006-07-12 2012-09-25 Qualcomm Incorporated Video compression using adaptive variable length codes
US8942292B2 (en) 2006-10-13 2015-01-27 Qualcomm Incorporated Efficient significant coefficients coding in scalable video codecs
US8098735B2 (en) 2006-12-21 2012-01-17 Lsi Corporation Efficient 8×8 CABAC residual block decode
US7369066B1 (en) 2006-12-21 2008-05-06 Lsi Logic Corporation Efficient 8×8 CABAC residual block transcode system
WO2008080516A1 (de) 2006-12-27 2008-07-10 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und verfahren zum kodieren eines transformationskoeffizientenblockes
DK2123052T3 (da) 2007-01-18 2011-02-28 Fraunhofer Ges Forschung Kvalitetsskalerbar videodatastrøm
KR101356733B1 (ko) 2007-03-07 2014-02-05 삼성전자주식회사 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치
EP2120461B1 (en) 2007-03-14 2011-07-06 Nippon Telegraph and Telephone Corporation Code quantity estimating method and device, their program, and recording medium
US7813567B2 (en) 2007-04-26 2010-10-12 Texas Instruments Incorporated Method of CABAC significance MAP decoding suitable for use on VLIW data processors
US7885473B2 (en) 2007-04-26 2011-02-08 Texas Instruments Incorporated Method of CABAC coefficient magnitude and sign decoding suitable for use on VLIW data processors
US8571104B2 (en) 2007-06-15 2013-10-29 Qualcomm, Incorporated Adaptive coefficient scanning in video coding
US8619853B2 (en) 2007-06-15 2013-12-31 Qualcomm Incorporated Separable directional transforms
US7535387B1 (en) 2007-09-10 2009-05-19 Xilinx, Inc. Methods and systems for implementing context adaptive binary arithmetic coding
US8204327B2 (en) 2007-10-01 2012-06-19 Cisco Technology, Inc. Context adaptive hybrid variable length coding
KR101394153B1 (ko) 2007-12-11 2014-05-16 삼성전자주식회사 양자화 방법 및 장치, 역양자화 방법 및 장치
US8891615B2 (en) 2008-01-08 2014-11-18 Qualcomm Incorporated Quantization based on rate-distortion modeling for CABAC coders
US8977064B2 (en) 2008-02-13 2015-03-10 Qualcomm Incorporated Rotational transcoding for JPEG or other coding standards
KR101375668B1 (ko) 2008-03-17 2014-03-18 삼성전자주식회사 변환 계수의 부호화, 복호화 방법 및 장치
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
EP2154894A1 (en) 2008-08-15 2010-02-17 Thomson Licensing Video coding with coding of the locations of significant coefficients in a block of coefficients
US7932843B2 (en) 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
EP2182732A1 (en) 2008-10-28 2010-05-05 Panasonic Corporation Switching between scans in image coding
EP2371066A4 (en) 2008-12-03 2014-06-04 Nokia Corp SWITCHING BETWEEN CODING MODES FOR DCT COEFFICIENTS
US8004431B2 (en) 2008-12-09 2011-08-23 Qualcomm Incorporated Fast parsing of variable-to-fixed-length codes
US20110249755A1 (en) 2008-12-16 2011-10-13 Youji Shibahara Moving image coding method, moving image decoding method, moving image coding apparatus, moving image decoding apparatus, program, and integrated circuit
KR20220123340A (ko) 2009-01-27 2022-09-06 인터디지털 브이씨 홀딩스 인코포레이티드 비디오 인코딩 및 디코딩에서 변환 선택을 위한 방법 및 장치
JP5004986B2 (ja) 2009-03-19 2012-08-22 キヤノン株式会社 スキャン変換装置及び画像符号化装置、並びにそれらの制御方法
JP5302769B2 (ja) 2009-05-14 2013-10-02 キヤノン株式会社 スキャン変換装置及び画像符号化装置及びそれらの制御方法
US9100648B2 (en) 2009-06-07 2015-08-04 Lg Electronics Inc. Method and apparatus for decoding a video signal
KR20100136890A (ko) 2009-06-19 2010-12-29 삼성전자주식회사 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
US8294603B2 (en) 2009-06-30 2012-10-23 Massachusetts Institute Of Technology System and method for providing high throughput entropy coding using syntax element partitioning
WO2011007478A1 (ja) 2009-07-17 2011-01-20 日本電気株式会社 ウェーブレット変換符号化/復号方法および装置
US8619866B2 (en) 2009-10-02 2013-12-31 Texas Instruments Incorporated Reducing memory bandwidth for processing digital image data
US8477845B2 (en) 2009-10-16 2013-07-02 Futurewei Technologies, Inc. Predictive adaptive scan ordering for video coding
KR101457894B1 (ko) 2009-10-28 2014-11-05 삼성전자주식회사 영상 부호화 방법 및 장치, 복호화 방법 및 장치
KR20110045949A (ko) 2009-10-28 2011-05-04 삼성전자주식회사 회전 변환을 이용한 영상 부호화, 복호화 방법 및 장치
TW201119407A (en) 2009-11-19 2011-06-01 Thomson Licensing Method for coding and method for reconstruction of a block of an image
WO2011087908A1 (en) 2010-01-15 2011-07-21 Thomson Licensing Video coding using compressive sensing
US8588536B2 (en) 2010-02-22 2013-11-19 Texas Instruments Incorporated Guaranteed-rate tiled image data compression
WO2011126288A2 (en) 2010-04-05 2011-10-13 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image and method and apparatus for decoding image using adaptive coefficient scan order
ES2912048T3 (es) 2010-04-13 2022-05-24 Ge Video Compression Llc Codificación de mapas de significado y bloques de coeficiente de transformada
US9172968B2 (en) 2010-07-09 2015-10-27 Qualcomm Incorporated Video coding using directional transforms
RS56250B1 (sr) 2010-07-09 2017-11-30 Samsung Electronics Co Ltd Uređaj za entropijsko dekodiranje koeficijenta transformacije
US20120027081A1 (en) 2010-07-30 2012-02-02 Cisco Technology Inc. Method, system, and computer readable medium for implementing run-level coding
US9154801B2 (en) 2010-09-30 2015-10-06 Texas Instruments Incorporated Method and apparatus for diagonal scan and simplified coding of transform coefficients
US9042440B2 (en) * 2010-12-03 2015-05-26 Qualcomm Incorporated Coding the position of a last significant coefficient within a video block based on a scanning order for the block in video coding
US8976861B2 (en) 2010-12-03 2015-03-10 Qualcomm Incorporated Separately coding the position of a last significant coefficient of a video block in video coding
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
US20120163472A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Efficiently coding scanning order information for a video block in video coding
WO2012093969A1 (en) 2011-01-07 2012-07-12 Agency For Science, Technology And Research Method and an apparatus for coding an image
US8687904B2 (en) * 2011-01-14 2014-04-01 Panasonic Corporation Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus which include arithmetic coding or arithmetic decoding
US8891617B2 (en) 2011-01-18 2014-11-18 Google Inc. Method and system for processing video data
US20120207400A1 (en) * 2011-02-10 2012-08-16 Hisao Sasai Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus
US9338449B2 (en) 2011-03-08 2016-05-10 Qualcomm Incorporated Harmonized scan order for coding transform coefficients in video coding
US8861599B2 (en) * 2011-03-08 2014-10-14 Sony Corporation Context reduction for last transform position coding
US9106913B2 (en) 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
US8861593B2 (en) 2011-03-15 2014-10-14 Sony Corporation Context adaptation within video coding modules
US8446301B2 (en) 2011-04-15 2013-05-21 Research In Motion Limited Methods and devices for coding and decoding the position of the last significant coefficient
US9491469B2 (en) 2011-06-28 2016-11-08 Qualcomm Incorporated Coding of last significant transform coefficient
MY170555A (en) 2012-01-20 2019-08-19 Ge Video Compression Llc Transform coefficient coding

Also Published As

Publication number Publication date
EP3709519A1 (en) 2020-09-16
ES2673939T3 (es) 2018-06-26
IL226209A0 (en) 2013-07-31
EP3361641A1 (en) 2018-08-15
US20120140814A1 (en) 2012-06-07
JP2013545415A (ja) 2013-12-19
JP5746363B2 (ja) 2015-07-08
IL226209A (en) 2017-05-29
EP3926833B1 (en) 2023-10-18
AU2011336601A1 (en) 2013-06-06
EP3926833A1 (en) 2021-12-22
US9042440B2 (en) 2015-05-26
EP2647204B1 (en) 2018-04-04
BR112013013650A2 (pt) 2016-09-13
ZA201304933B (en) 2014-03-26
US9055290B2 (en) 2015-06-09
RU2013130251A (ru) 2015-01-10
KR20130095310A (ko) 2013-08-27
KR101523452B1 (ko) 2015-05-27
EP3709519B8 (en) 2021-11-10
EP3361641B1 (en) 2020-05-20
ES2963135T3 (es) 2024-03-25
EP2647204A1 (en) 2013-10-09
SG190691A1 (en) 2013-07-31
AU2011336601B2 (en) 2015-09-24
EP3926833C0 (en) 2023-10-18
CA2818436C (en) 2016-09-13
EP3709519B1 (en) 2021-09-22
RU2541226C2 (ru) 2015-02-10
HK1185488A1 (zh) 2014-02-14
MY161436A (en) 2017-04-14
US20140341274A1 (en) 2014-11-20
CN103238323B (zh) 2016-05-11
CA2818436A1 (en) 2012-06-07
WO2012075193A1 (en) 2012-06-07
CN103238323A (zh) 2013-08-07

Similar Documents

Publication Publication Date Title
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
ES2705898T3 (es) Cifrado de manera independiente de la posición del último coeficiente significativo de un bloque de vídeo en cifrado de vídeo
JP6046164B2 (ja) ビデオコード化において変換係数データをコード化するためのコンテキストの決定
BR112018006408B1 (pt) Predição intra de vídeo melhorada usando combinação de predição dependente de posição para codificação de vídeo
BR112014010326B1 (pt) Codificação de vídeo intramodo
BR122020003135B1 (pt) Método e dispositivo para decodificar dados de vídeo e meio de armazenamento não transitório legível por computador
BR112013032601B1 (pt) Seleção de candidatos a modo de junção e modo de predição adaptativa de vetor de movimento unificados
BR112014001056B1 (pt) Varredura de coeficiente em codificação de vídeo
BR112013007302B1 (pt) Coeficientes de codificação por entropia utilizando um modelo de contexto conjunto
US20120163448A1 (en) Coding the position of a last significant coefficient of a video block in video coding
BR112014025406B1 (pt) Método de codificação e de decodificação de dados de vídeo, mídia de armazenamento legível por computador e aparelho para codificar e decodificar dados de vídeo
BR112014026750B1 (pt) Codificação de parâmetro de quantização (pq) em codificação de vídeo
BR112017016159B1 (pt) Contextos para unidades de árvore de codificação grandes
BR112013031006B1 (pt) Modelagem de contexto eficaz em memória
BR112013032040B1 (pt) Método e aparelho para codificação de vídeo, e memória legível por computador
BR112013033645B1 (pt) Elementos de sintaxe de sinalização para coeficientes de transformada para subconjuntos de uma unidade de codificação de nível-folha
WO2012088331A1 (en) Efficiently coding scanning order information for a video block in video coding
BR112014023466B1 (pt) Derivação de contexto para codificação de última posição para codificação de vídeo
BR112021004429A2 (pt) método de decodificação e aparelho de decodificação para predizer informações de movimento
BR112013013651B1 (pt) Métodos para codificar e decodificar coeficientes associados a um bloco de dados de vídeo durante um processo de codificação de vídeo, aparelho para codificar coeficientes associados com um bloco de dados de vídeo durante um processo de codificação de vídeo e mídia legível por computador

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: VELOS MEDIA INTERNATIONAL LIMITED (IE)

B15K Others concerning applications: alteration of classification

Ipc: H03M 7/40 (2006.01)

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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

B25A Requested transfer of rights approved

Owner name: QUALCOMM INCORPORATED (US)