BR112014002770B1 - Método e aparelho para codificar coeficientes de transformada associados a dados de vídeo residuais e meio de armazenamento não transitório legível por computador - Google Patents

Método e aparelho para codificar coeficientes de transformada associados a dados de vídeo residuais e meio de armazenamento não transitório legível por computador Download PDF

Info

Publication number
BR112014002770B1
BR112014002770B1 BR112014002770-6A BR112014002770A BR112014002770B1 BR 112014002770 B1 BR112014002770 B1 BR 112014002770B1 BR 112014002770 A BR112014002770 A BR 112014002770A BR 112014002770 B1 BR112014002770 B1 BR 112014002770B1
Authority
BR
Brazil
Prior art keywords
transform coefficients
encoding
coefficients
transform
binary
Prior art date
Application number
BR112014002770-6A
Other languages
English (en)
Other versions
BR112014002770A2 (pt
Inventor
Joel Sole Rojals
Rajan Laxman Joshi
Marta Karczewicz
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/413,497 external-priority patent/US20120230418A1/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112014002770A2 publication Critical patent/BR112014002770A2/pt
Publication of BR112014002770B1 publication Critical patent/BR112014002770B1/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/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
    • 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/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/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/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/184Methods 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 bits, e.g. of the compressed video stream

Landscapes

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

Abstract

CODIFICAÇÃO DE COEFICIENTES DE TRANSFORMADA PARA CODIFICAÇÃO DE VÍDEO A presente revelação descreve codificar coeficientes de transformada associados a um bloco de dados de vídeo residuais em um processo de codificação de vídeo. Os aspectos dessa revelação incluem a seleção de uma ordem de varredura para codificação de mapa de significância e codificação de nível, bem como a seleção de contextos para codificação por entropia compatível com a ordem de varredura selecionada. Essa revelação propõe uma harmonização da ordem de varredura para codificar tanto o mapa de significância dos coeficientes de transformada bem como codificar os níveis do coeficiente de transformada. É proposto que a ordem de varredura para o mapa de significância deve estar na direção inversa (isto é, a partir das frequências mais elevadas para as frequências mais baixas). Essa revelação também propõe que coeficientes de transformada sejam varridas em subconjuntos ao contrário de sub-blocos fixos. Em particular, coeficientes de transformada são varridos em um subconjunto consistindo em diversos coeficientes consecutivos de acordo com a ordem de varredura.

Description

[001] O presente pedido reivindica o benefício do pedido provisional US no. 61/515.711, depositado em 05 de agosto de 2011 e é uma continuação em parte do pedido US no. 13/413.497, depositado em 06 de março de 2012, os quais são ambos incorporados a título de referência na íntegra.
Campo técnico
[002] A presente revelação refere-se à codificação de vídeo, e mais particularmente a técnicas para varrer e codificar coeficientes de transformada gerados por processos de codificação de vídeo.
Antecedentes
[003] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de difusão direto digitais, sistemas difusão sem fio, assistentes pessoais digitais (PDAs), computadores laptop ou de mesa, câmeras digitais, dispositivos de gravação digital, tocadores de mídia digital, dispositivos de videogame, consoles de videogame, telefones de rádio por satélite ou celular, dispositivos de teleconferência de vídeo, e similares. Dispositivos de vídeo digital implementam técnicas de compressão de vídeo, como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, Codificação avançada de vídeo (AVC), padrão de Codificação de vídeo com eficiência elevada (HEVC) atualmente em desenvolvimento, e extensões de tais padrões, para transmitir, receber e armazenar informações digitais mais eficientemente.
[004] Técnicas de compressão de vídeo incluem predição espacial e/ou predição temporal para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo baseada em bloco, um quadro ou fatia de vídeo pode ser dividido em blocos. Cada bloco pode ser adicionalmente dividido. Os blocos em um quadro ou fatia intracodificado (I) são codificados utilizando predição espacial com relação a amostras de referência em blocos vizinhos no mesmo quadro ou fatia. Blocos em um quadro ou fatia intercodificada (P ou B) podem utilizar predição espacial com relação a amostras de referência em blocos vizinhos no mesmo quadro ou fatia ou predição temporal com relação a amostras de referência em outros quadros de referência. 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.
[005] Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando 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 compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residual, que então podem ser quantizados. Os coeficientes de transformada quantizada, inicialmente dispostos em um conjunto bidimensional, podem ser varridos em uma ordem específica para produzir um vetor unidimensional de coeficientes de transformada para codificação por entropia.
Sumário
[006] Em geral, essa revelação descreve dispositivos e métodos para codificar coeficientes de transformada associados a um bloco de dados de vídeo residuais em um processo de codificação de vídeo. As técnicas, estruturas e métodos descritos nessa revelação são aplicáveis para processos de codificação de vídeo que utilizam codificação por entropia (por exemplo, codificação aritmética binária adaptável de contexto (CABAC)) para codificar elementos de sintaxe referentes aos coeficientes de transformada. Os aspectos dessa revelação incluem a seleção de uma ordem de varredura tanto para codificação de significância como codificação de sinal e nível, para os coeficientes de transformada, bem como a seleção de contextos para codificação por entropia compatível com a ordem de varredura selecionada. As técnicas, estruturas e métodos dessa revelação são aplicáveis para uso tanto em um codificador de vídeo como um decodificador de vídeo.
[007] Essa revelação propõe uma harmonização da ordem de varredura para codificar tanto o mapa de significância dos coeficientes de transformada bem como codificar os níveis do coeficiente de transformada. Isto quer dizer, em alguns exemplos, a ordem de varredura para o mapa de significância e a codificação de nível deve ter o mesmo padrão e direção. Em outro exemplo, é proposto que a ordem de varredura para o mapa de significância deva estar na direção inversa (isto é, dos coeficientes para frequências mais elevadas até os coeficientes para frequências mais baias). Ainda em outro exemplo, é proposto que a ordem de varredura para o mapa de significância e a codificação de nível deve ser harmonizada de tal modo que cada prossegue em uma direção inversa.
[008] Essa revelação também propõe que, em alguns exemplos, os coeficientes de transformada sejam varridos em subconjuntos. Em particular, coeficientes de transformada são varridos em um subconjunto consistindo em diversos coeficientes consecutivos de acordo com a ordem de varredura. Tais subconjuntos podem ser aplicáveis tanto para o mapa de significância bem como a varredura de nível de coeficiente.
[009] Adicionalmente, essa revelação propõe que, em alguns exemplos, o mapa de significância e a varredura de nível de coeficiente sejam realizadas em varreduras consecutivas e de acordo com a mesma ordem de varredura. Em um aspecto, a ordem de varredura é uma ordem de varredura inversa. As varreduras consecutivas podem incluir várias passagens de varredura. Cada passagem de varredura pode incluir uma passagem de varredura de elemento de sintaxe. Por exemplo, uma primeira varredura é a varredura de mapa de significância (também chamada binário (bin) 0 do nível de coeficientes de transformada), uma segunda varredura é de Binário (bin) um dos níveis de coeficientes de transformada em cada subconjunto (isto é, coeficientes de transformada tendo nível maior do que 1), uma terceira varredura pode ser de binário dois dos níveis de coeficientes de transformada em cada subconjunto (isto é, coeficientes de transformada tendo nível maior do que 2), uma quarta varredura é dos binários restantes dos níveis de coeficientes de transformada (isto é, nível restante maior do que 2), e uma quinta varredura é do sinal dos níveis de coeficientes de transformada (isto é, sinal mais ou menos). A passagem do sinal pode ser em qualquer ponto após a passagem de mapa de significância. Adicionalmente, o número de passagens de varredura pode ser reduzido por codificar mais de um elemento de sintaxe por passagem. Por exemplo, pode haver uma passagem de varredura para os elementos de sintaxe utilizando binários codificados e uma segunda passagem de varredura para os elementos de sintaxe utilizando binários de desvio (por exemplo, os níveis restantes e o sinal). Nesse contexto, um binário é parte da sequência de binário que é codificada por entropia. Um elemento de sintaxe de valor não binário dado é mapeado para uma sequência binária (a denominada sequência de binário).
[010] Essa revelação também propõe que, em alguns exemplos, os coeficientes de transformada sejam codificados por entropia utilizando CABAC em duas regiões de contexto diferentes. A derivação de contexto para uma primeira região de contexto depende da posição dos coeficientes de transformada enquanto a derivação de contexto para a segunda região depende de vizinhos causais dos coeficientes de transformada. Em outro exemplo, a segunda região de contexto pode utilizar dois modelos de contexto diferentes dependendo da localização dos coeficientes de transformada.
[011] Em um exemplo da revelação, é proposto um método de codificar coeficientes de transformada associados aos dados de vídeo residuais em um processo de codificação de vídeo. O método compreende dispor um bloco de coeficientes de transformada em um ou mais subconjuntos de coeficientes de transformada com base em uma ordem de varredura, codificar uma primeira porção de níveis de coeficientes de transformada em cada subconjunto, em que a primeira porção de níveis inclui pelo menos uma significância dos coeficientes de transformada em cada subconjunto, e codificar uma segunda porção de níveis de coeficientes de transformada em cada subconjunto.
[012] Em outro exemplo da revelação, um sistema para codificar coeficientes de transformada associados a dados de vídeo residuais em um processo de codificação de vídeo é proposto. O sistema compreende uma unidade de codificação de vídeo configurada para dispor um bloco de coeficientes de transformada em um ou mais subconjuntos de coeficientes de transformada com base em uma ordem de varredura, codificar uma primeira porção de níveis de coeficientes de transformada em cada subconjunto, em que a primeira porção de níveis inclui pelo menos uma significância dos coeficientes de transformada em cada subconjunto, e codificar uma segunda porção de níveis de coeficientes de transformada em cada subconjunto.
[013] Em outro exemplo da revelação, é proposto um sistema para codificar coeficientes de transformada associados a dados de vídeo residuais em um processo de codificação de vídeo. O sistema compreende meio para dispor um bloco de coeficientes de transformada em um ou mais subconjuntos de coeficientes de transformada com base em uma ordem de varredura, meio para codificar uma primeira porção de níveis de coeficientes de transformada em cada subconjunto, em que a primeira porção de níveis inclui pelo menos uma significância dos coeficientes de transformada em cada subconjunto, e meio para codificar uma segunda porção de níveis de coeficientes de transformada em cada subconjunto.
[014] Em outro exemplo da revelação, um produto de programa de computador compreende um meio de armazenamento legível por computador tendo armazenado no mesmo instruções que, quando executadas, faze com que um processador de um dispositivo para codificar coeficientes de transformada associados aos dados de residual em um processo de codificação de vídeo organize um bloco de coeficientes de transformada em um ou mais subconjuntos de coeficientes de transformada com base em uma ordem de varredura, codifique uma primeira porção de níveis de coeficientes de transformada em cada subconjunto, em que a primeira porção de níveis inclui pelo menos uma significância dos coeficientes de transformada em cada subconjunto, e codifique uma segunda porção de níveis de coeficientes de transformada em cada subconjunto.
[015] Em outro exemplo da revelação, um método de codificar coeficientes de transformada associados a dados de vídeo residuais em um processo de codificação de vídeo compreende codificar informações de significância para coeficientes de transformada em um conjunto de coeficientes de transformada associados aos dados de vídeo residuais de acordo com uma ordem de varredura em uma ou mais primeiras passagens, codificar um primeiro conjunto de um ou mais binários de informações para os coeficientes de transformada de acordo com a ordem de varredura em uma ou mais segundas passagens, em que uma ou mais segundas passagens são diferentes de uma ou mais primeiras passagens, e em que o primeiro conjunto de um ou mais binários são codificados em um primeiro modo de um processo de codificação, e codificar um segundo conjunto de um ou mais binários de informações para os coeficientes de transformada de acordo com a ordem de varredura em uma ou mais terceiras passagens, em que uma ou mais terceiras passagens são diferentes de uma ou mais primeira e segunda passagens, e em que o segundo conjunto de um ou mais binários são codificados em um segundo modo do processo de codificação.
[016] Em outro exemplo da revelação, um aparelho para codificar coeficientes de transformada associados a dados de vídeo residuais compreende um ou mais processadores configurados para codificar informações de significância para coeficientes de transformada em um conjunto de coeficientes de transformada associados aos dados de vídeo residuais de acordo com uma ordem de varredura em uma ou mais primeiras passagens, codificar um primeiro conjunto de um ou mais binários de informações para os coeficientes de transformada de acordo com a ordem de varredura em uma ou mais segundas passagens, em que uma ou mais segundas passagens são diferentes de uma ou mais primeiras passagens, e em que o primeiro conjunto de um ou mais binários são codificados em um primeiro modo de um processo de codificação, e codificar um segundo conjunto de um ou mais binários de informações para os coeficientes de transformada de acordo com a ordem de varredura em uma ou mais terceiras passagens, em que uma ou mais terceiras passagens são diferentes de uma ou mais primeiras e segundas passagens, e em que o segundo conjunto de um ou mais binários são codificados em um segundo modo do processo de codificação.
[017] Em outro exemplo da revelação, um aparelho para codificar coeficientes de transformada associados aos dados de vídeo residuais compreende meio para codificar informações de significância para coeficientes de transformada em um conjunto de coeficientes de transformada associados aos dados de vídeo residuais de acordo com uma ordem de varredura em uma ou mais primeiras passagens, meio para codificar um primeiro conjunto de um ou mais binários de informações para os coeficientes de transformada de acordo com a ordem de varredura em uma ou mais segundas passagens, em que uma ou mais segundas passagens são diferentes de uma ou mais primeiras passagens, e em que o primeiro conjunto de um ou mais binários são codificados em um primeiro modo de um processo de codificação, e meio para codificar um segundo conjunto de um ou mais binários de informações para os coeficientes de transformada de acordo com a ordem de varredura em uma ou mais terceiras passagens, em que uma ou mais terceiras passagens são diferentes de uma ou mais primeira e segunda passagens, e em que o segundo conjunto de um ou mais binários são codificados em um segundo modo do processo de codificação.
[018] Em outro exemplo da revelação, um meio de armazenamento legível por computador não transitório tem instruções armazenadas no mesmo que quando executadas, fazem com que um ou mais processadores codifiquem informações de significância para coeficientes de transformada em um conjunto de coeficientes de transformada associados aos dados de vídeo residuais de acordo com uma ordem de varredura em ou mais primeiras passagens, codifiquem um primeiro conjunto de um ou mais binários de informações para os coeficientes de transformada de acordo com a ordem de varredura em uma ou mais segundas passagens, em que uma ou mais segundas passagens são diferentes de uma ou mais primeiras passagens, e em que o primeiro conjunto de um ou mais binários são codificados em um primeiro modo de um processo de codificação, e codifiquem um segundo conjunto de um ou mais binários de informações para os coeficientes de transformada de acordo com a ordem de varredura em uma ou mais terceiras passagens, em que uma ou mais terceiras passagens são diferentes de uma ou mais primeira e segunda passagens, e em que o segundo conjunto de um ou mais binários são codificados em um segundo modo do processo de codificação.
[019] Os detalhes de um ou mais exemplos são expostos nos desenhos em anexo e descrição abaixo. Outras características, objetivos e vantagens serão evidentes a partir da descrição e desenhos, e das reivindicações.
Breve descrição dos desenhos
[020] A figura 1 é um diagrama conceitual que ilustra um processo de codificação de mapa de significância.
[021] A figura 2 é um diagrama conceitual que ilustra padrões de varredura e direções para codificação de mapa de significância.
[022] A figura 3 é um diagrama conceitual que ilustra uma técnica de varredura para codificação de nível de uma unidade de transformada.
[023] A figura 4 é um diagrama de blocos que ilustra um sistema de codificação de vídeo de exemplo.
[024] A figura 5 é um diagrama de blocos que ilustra um codificador de vídeo de exemplo.
[025] A figura 6 é um diagrama conceitual que ilustra ordens de varredura inversa para mapa de significância e codificação de nível de coeficiente.
[026] A figura 7 é um diagrama conceitual que ilustra um primeiro subconjunto de coeficientes de transformada varridos de acordo com uma ordem de varredura diagonal inversa.
[027] A figura 8 é um diagrama conceitual que ilustra um primeiro subconjunto de coeficientes de transformada varridos de acordo com uma ordem de varredura horizontal inversa.
[028] A figura 9 é um diagrama conceitual que ilustra um primeiro subconjunto de coeficientes de transformada varridos de acordo com uma ordem de varredura vertical inversa.
[029] A figura 10 é um diagrama conceitual que ilustra regiões de contexto para codificação de mapa de significância.
[030] A figura 11 é um diagrama conceitual que ilustra regiões de contexto de exemplo para codificação de mapa de significância utilizando uma ordem de varredura inversa.
[031] A figura 12 é um diagrama conceitual que ilustra vizinhos causais de exemplo para codificação por entropia utilizando uma ordem de varredura avançada.
[032] A figura 13 é um diagrama conceitual que ilustra vizinhos causais de exemplo para codificação por entropia utilizando uma ordem de varredura inversa.
[033] A figura 14 é um diagrama conceitual que ilustra regiões de contexto de exemplo para codificação por entropia utilizando uma ordem de varredura inversa.
[034] A figura 15 é um diagrama conceitual que ilustra vizinhos causais de exemplo para codificação por entropia utilizando uma ordem de varredura inversa.
[035] A figura 16 é um diagrama conceitual que ilustra outro exemplo de regiões de contexto para CABAC utilizando uma ordem de varredura inversa.
[036] A figura 17 é um diagrama conceitual que ilustra outro exemplo de regiões de contexto para CABAC utilizando uma ordem de varredura inversa.
[037] A figura 18 é um diagrama conceitual que ilustra outro exemplo de regiões de contexto para CABAC utilizando uma ordem de varredura inversa.
[038] A figura 19 é um diagrama de blocos que ilustra uma unidade de codificação por entropia de exemplo.
[039] A figura 20 é um diagrama de bloco que ilustra um decodificador de vídeo de exemplo.
[040] A figura 21 é um diagrama de blocos que ilustra uma unidade de decodificação por entropia de exemplo.
[041] A figura 22 é um fluxograma que ilustra um processo de exemplo para mapa de significância e varredura de nível de coeficientes com uma ordem de varredura harmonizada.
[042] A figura 23 é um fluxograma que ilustra um processo de exemplo para mapa de significância e varredura de nível de coeficientes e derivação de contexto de codificação por entropia.
[043] A figura 24 é um fluxograma que ilustra outro processo de exemplo para mapa de significância e varredura de nível de coeficientes e derivação de contexto de codificação por entropia.
[044] A figura 25 é um fluxograma que ilustra outro processo de exemplo para mapa de significância e varredura de nível de coeficientes e derivação de contexto de codificação por entropia.
[045] A figura 26 é um fluxograma que ilustra um processo de exemplo para codificação de mapa de significância utilizando uma direção de varredura inversa.
[046] A figura 27 é um fluxograma que ilustra um processo de exemplo para mapa de significância e varredura de nível de coeficiente de acordo com subconjuntos de coeficientes de transformada.
[047] A figura 28 é um fluxograma que ilustra outro processo de exemplo para mapa de significância e varredura de nível de coeficiente de acordo com subconjuntos de coeficientes de transformada.
[048] A figura 29 é um fluxograma que ilustra outro processo de exemplo para mapa de significância e varredura de nível de coeficiente de acordo com subconjuntos de coeficientes de transformada.
[049] A figura 30 é um fluxograma que ilustra um processo de exemplo para codificação por entropia utilizando múltiplas regiões.
[050] A figura 31 é um diagrama conceitual que ilustra uma ordenação de exemplo de binários para codificar coeficientes de transformada associados a dados de vídeo residuais.
[051] A figura 32 é um diagrama conceitual que ilustra uma ordenação de exemplo e agrupamento de binários para codificar coeficientes de transformada associados a dados de vídeo residuais.
[052] A figura 33 é um fluxograma que ilustra um processo de codificação de vídeo de exemplo para codificar coeficientes de transformada associados a dados de vídeo residuais.
Descrição detalhada
[053] Dispositivos de vídeo digitais implementam técnicas de compressão de vídeo para transmitir e receber informações de vídeo digitais mais eficientemente. Processos de compressão de vídeo podem aplicar técnicas de predição espacial (intraquadro) e/ou predição temporal (interquadro) para reduzir ou remover redundância inerente em sequências de vídeo.
[054] Para codificação de vídeo de acordo com o padrão de codificação de vídeo de eficiência elevada (HEVC) atualmente em desenvolvimento pelo Joint Cooperative Team for vídeo coding (JCT-VC), como um exemplo, um quadro de vídeo pode ser dividido em unidades de codificação. A versão de trabalho mais recente (WD) de HEVC, e mencionada como HEVC WD7 a seguir, é disponível da HTTP://phenix.int- evry.fr/jct/doc end user/documewnts/9 Geneva/wg11/JCTVC-1103-v5.zip, com uma versão mais recente disponível de htpp://phenix.int- evry.fr/jct/doc_end_user/documents/9-Geneva/wg11/JCTVC-11003-v6.zip, os quais são ambos incorporados a título de referência como se expostos na íntegra aqui.
[055] De acordo com HEVC, uma unidade de codificação se refere genericamente a uma região de imagem que serve como uma unidade básica à qual várias ferramentas de codificação são aplicadas para compressão de vídeo. Uma unidade de codificação é tipicamente quadrada (embora não necessariamente), e pode ser considerada como sendo similar a um denominado macrobloco, por exemplo, sob outros padrões de codificação de vídeo como ITU-T H.264. A codificação de acordo com alguns dos aspectos propostos do padrão HEVC em desenvolvimento será descrita nesse pedido para fins de ilustração. Entretanto, as técnicas descritas nessa revelação podem ser úteis para outros processos de codificação de vídeo como aqueles definidos de acordo com H.264 ou outros processos de codificação de vídeo de propriedade ou padrão.
[056] Para obter eficiência de codificação desejável, uma unidade de codificação (CU) pode ter tamanhos variáveis dependendo de conteúdo de vídeo. Além disso, uma unidade de codificação pode ser dividida em blocos menores para predição ou transformada. Em particular, cada unidade de codificação pode ser adicionalmente dividida em unidades de predição (PUs) e unidades de transformada (TUs). Unidades de predição podem ser consideradas como sendo similares às denominadas divisões de acordo com outros padrões de codificação de vídeo, como o padrão H.264. Uma unidade de transformada (TU) se refere genericamente a um bloco de dados residuais aos quais uma transformada é aplicada para produzir coeficientes de transformada.
[057] Uma unidade de codificação tem normalmente um componente de luminância, indicado como Y, e dois componentes de croma, indicados como U e V. dependendo do formato de amostragem de vídeo, o tamanho dos componentes U e V, em termos de número de amostras, pode ser igual ou diferente do tamanho do componente Y.
[058] Para codificar um bloco (por exemplo, uma unidade de predição de dados de vídeo), um preditor para o bloco é primeiramente derivado. O preditor, também mencionado como um bloco preditivo, pode ser pode ser derivado através de intra(I) predição (isto é, predição espacial) ou inter predição (P ou B) (isto é, predição temporal). Consequentemente, algumas unidades de predição podem ser intracodificados (I) utilizando predição espacial com relação a amostras de referência em blocos de referência vizinhos no mesmo quadro (ou fatia), e outras unidades de predição podem ser unidirecionalmente intercodificadas (P) ou bidirecionalmente intercodificadas (B) com relação a blocos de amostras de referência em outros quadros (ou fatias) anteriormente codificados. Em cada cão, as amostras de referência podem ser utilizadas para formar um bloco preditivo para um bloco a ser codificado.
[059] Após identificação de um bloco preditivo, a diferença entre o bloco de dados de vídeo original e seu bloco preditivo é determinada. Essa diferença pode ser mencionada como os dados residuais de predição, e indica as diferenças de pixel entre os valores de pixel no bloco a serem codificados e os valores de pixel no bloco preditivo selecionado para representar o bloco codificado. Para obter melhor compressão, os dados residuais de predição podem ser transformados, por exemplo, utilizando uma transformada de cosseno discreta (DCT), uma transformada de número inteiro, uma transformada Karhunen-Loeve (K-L), ou outra transformada.
[060] Os dados residuais em um bloco de transformada, como uma TU, podem ser dispostos em um conjunto bidimensional (2D) de valores de diferença de pixel residindo no domínio de pixel, espacial. Uma transformada converte os valores de pixel residuais em um conjunto bidimensional de coeficientes de transformada em um domínio de transformada, como um domínio de frequência. Para compressão adicional os coeficientes de transformada podem ser quantizados antes da codificação por entropia. Um codificador de entropia então aplica codificação por entropia, como codificação de comprimento variável adaptável ao contexto (CAVLC), codificação aritmética binária adaptável ao contexto (CABAC), codificação de Entropia de divisão de intervalo de probabilidade (PIPE) ou similar aos coeficientes de transformada quantizada.
[061] Para codificar por entropia um bloco de coeficientes de transformada quantizada, um processo de varredura é normalmente realizado de modo que o conjunto bidimensional (2D) de coeficientes de transformada quantizada em um bloco é processado, de acordo com uma ordem de varredura específica, em um conjunto unidimensional (1D) ordenado, isto é, vetor, de coeficientes de transformada. A codificação por entropia é aplicada na ordem 1-D de coeficientes de transformada. A varredura dos coeficientes de transformada quantizada em uma unidade de transformada serializa o conjunto 2D de coeficientes de transformada para o codificador de entropia. Um mapa de significância pode ser gerado para indicar as posições de coeficientes significativos (isto é, não zero). A varredura pode ser aplicada para varrer níveis de coeficientes significativos (isto é, não zero), e/ou codificar sinais dos coeficientes significativos.
[062] Para um DCT, como exemplo, há frequentemente uma probabilidade mais elevada de coeficientes não zero em direção a um canto esquerdo superior (isto é, uma região de baixa frequência) da unidade de transformada 2D. Pode ser desejável varrer os coeficientes em um modo que aumente a probabilidade de agrupar coeficientes não zero juntos em uma extremidade do curso serializado de coeficientes, permitindo que coeficientes de valor zero sejam agrupados juntos em direção à outra extremidade do vetor serializado e mais eficientemente codificados como cursos de zeros. Por esse motivo, a ordem de varredura pode ser importante para codificação por entropia eficiente.
[063] Como exemplo, a ordem de varredura denominada diagonal (ou frente de onda) foi adotada para uso em varrer coeficientes de transformada quantizada no padrão HEVC. Alternativamente, ziguezague, horizontal, vertical ou outras ordens de varredura podem ser utilizados. Através de transformada e quantização, como mencionado acima, coeficientes de transformada não zero são genericamente localizados na área de baixa frequência em direção à região esquerda superior do bloco para um exemplo no qual a transformada é um DCT. Como resultado, após o processo de varredura diagonal, que pode atravessar a região esquerda superior primeiramente, coeficientes de transformada não zero são normalmente mais prováveis de serem localizados na porção frontal da varredura. Para um processo de varredura diagonal que atravessa da região direita mais baixa primeiro, os coeficientes de transformada não zero são normalmente mais prováveis de serem localizados na porção traseira da varredura.
[064] Um número de coeficientes de valor zero será tipicamente agrupado em uma extremidade da varredura, dependendo da direção de varredura, devido à energia reduzida em frequências mais elevadas, e devido aos efeitos de quantização, que pode fazer com que alguns coeficientes não zero se tornem coeficientes de valor zero após redução de profundidade de bit. Essas características de distribuição de coeficiente no conjunto 1D serializado podem ser utilizadas no desenho de codificador de entropia para melhorar a eficiência de codificação. Em outras palavras, se coeficientes não zero podem ser eficazmente dispostos em uma porção do conjunto 1D através de alguma ordem de varredura apropriada, melhor eficiência de codificação pode ser esperada devido ao desenho de muitos codificadores de entropia.
[065] Para obter esse objetivo de colocar mais coeficientes não zero em uma extremidade do conjunto 1D, ordens de varredura diferentes podem ser utilizadas em um codificador-decodificador de vídeo (CODEC) para codificar coeficientes de transformada. Em alguns casos, varredura diagonal pode ser eficaz. Em outros casos, tipos diferentes de varredura, como ziguezague, varredura vertical ou horizontal podem ser mais eficazes.
[066] Ordens de varredura diferentes podem ser produzidas em uma variedade de modos. Um exemplo é que para cada bloco de coeficientes de transformada, uma ordem de varredura “melhor” pode ser escolhida de um número de ordens de varredura disponíveis. Um codificador de vídeo pode fornecer então uma indicação para o decodificador, para cada bloco, de um índice da melhor ordem de varredura entre um conjunto de ordens de varredura indicadas por índices respectivos. A seleção da melhor ordem de varredura pode ser determinada por aplicar várias ordens de varredura e selecionar uma que seja mais eficaz na colocação de coeficientes não zero próximo ao início ou fim do vetor 1D, desse modo promovendo codificação por entropia eficiente.
[067] Em outro exemplo, a ordem de varredura para um bloco atual pode ser determinada com base em vários fatores referentes à codificação da unidade de predição pertinente, como o modo de predição (I, B, P), tamanho de bloco, transformada ou outros fatores. Em alguns casos, como as mesmas informações, por exemplo, modo de predição, podem ser inferidas tanto no lado do codificador como do decodificador, pode não haver necessidade de fornecer uma indicação do índice de ordem de varredura para o decodificador. Em vez disso, o decodificador de vídeo pode armazenar dados de configuração que indicam a ordem de varredura apropriada dado o conhecimento do modo de predição para um bloco, e um ou mais critérios que mapeiam um modo de predição para uma ordem de varredura específica.
[068] Para aperfeiçoar adicionalmente eficiência de codificação, as ordens de varredura disponíveis podem não ser constantes durante todo tempo. Em vez disso, alguma adaptação pode ser habilitada de modo que a ordem de varredura seja adaptavelmente ajustada, por exemplo, com base em coeficientes que já são codificados. Em geral, a adaptação de ordem de varredura pode ser feita de tal modo que, de acordo com a ordem de varredura selecionada, coeficientes de zero e não zero são mais prováveis de serem agrupados juntos.
[069] Em alguns CODECs de vídeo, as ordens de varredura disponíveis iniciais podem estar em uma forma muito regular como puramente horizontal, vertical, diagonal, ou varredura ziguezague. Alternativamente, as ordens de varredura podem ser derivadas através de um processo de treinamento e, portanto podem parecer ser de certo modo aleatórias. O processo de treinamento pode envolver aplicação de ordens de varredura diferentes para um bloco ou série de blocos para identificar uma ordem de varredura que produz resultados desejáveis, por exemplo, em termos de colocação eficiente de coeficientes de valor zero e não zero, como mencionado acima.
[070] Se uma ordem de varredura for derivada de um processo de treinamento, ou se uma variedade de ordens de varredura diferentes puderem ser selecionadas, pode ser vantajoso salvar as ordens de varredura específicas tanto no lado de codificador como de decodificador. A quantidade de dados especificando tais ordens de varredura pode ser substancial. Por exemplo, para um bloco de transformada 32x32, uma ordem de varredura pode conter 1024 posições de coeficiente de transformada. Como pode haver blocos de tamanho diferente e para cada tamanho de bloco de transformada, pode haver um número de ordens de varredura diferentes, a quantidade total de dados que necessita ser salva não é desprezível. Ordens de varredura regulares como ordem diagonal, horizontal, vertical ou ziguezague podem não exigir armazenagem, ou podem exigir armazenagem mínima. Entretanto, ordens diagonal, horizontal, vertical ou ziguezague podem não fornecer variedade suficiente para fornecer desempenho de codificação que está em igualdade com ordens de varredura treinadas.
[071] Em um exemplo, para H.264 e o padrão HEVC atualmente em desenvolvimento, quando o codificador por entropia CABAC é utilizado, as posições dos coeficientes significativos (isto é, coeficientes de transformada não zero) no bloco de transformada (isto é, unidade de transformada em HEVC) são codificados antes dos níveis dos coeficientes. O processo de codificar os locais dos coeficientes significativos é chamado uma codificação de mapa de significância. A significância de um coeficiente é igual ao Binário zero do nível de coeficiente. Como mostrado na figura 1, a codificação de mapa de significância dos coeficientes de transformada quantizada 11 produz um mapa de significância 13. O mapa de significância 13 é um mapa de uns e zeros, onde os uns indicam locais de coeficientes significativos. O mapa de significância requer tipicamente uma elevada percentagem da taxa de bits de vídeo. As técnicas dessa revelação também podem ser aplicáveis para uso com outros codificadores por entropia (por exemplo, PIPE).
[072] Um processo de exemplo para codificar um mapa de significância é descrito em D. Marpe, H. Schwarz, e T. Wiegand “Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard,” IEEE Trans. Circuits and Systems for Video Technology, vol. 13, no. 7, Julho de 2003. Nesse processo, o mapa de significância é codificado se houver pelo menos um coeficiente significativo no bloco, como indicado pelo Indicador de Bloco Codificado (CBF), que é definido como: Coded Block Flag: coded_block_flag é um símbolo de um bit que indica se existem coeficientes significantes, i.e., não-zero dentro de um único bloco de coeficientes de transformada, para o qual o padrão de bloco codificado indica entradas não-zero. Caso coded_block_flag seja zero, nenhuma informação adicional é transmitida para o bloco relacionado.
[073] Se houver coeficientes significativos no bloco, o mapa de significância é codificado seguindo uma ordem de varredura de coeficientes de transformada no bloco como a seguir: Scanning of Transform Coefficients: arranjos bidimensionais de níveis de coeficiente de transformada de sub- blocos para os quais coded_block_flag indica entradas não-zero são primeiramente mapeados em uma lista unidimensional utilizando um dado padrão de varredura. Em outras palavras, sub- blocos com coeficientes significantes são varridos de acordo com um padrão de varredura.
[074] Dado o padrão de varredura, o mapa de significância é varrido como a seguir: Significance Map: caso coded_block_flag indique que um bloco possui coeficientes significantes, um mapa de significância de valor binário é codificado. Para cada coeficiente de transformada na oredem de varredura, um símbolo de um bit significant_coeff_flag é transmitido. Caso o símbolo significant_coeff_flag symbol seja um, i.e., caso um coeficiente não-zer exista nessa posição de varredura, um símbolo de um bit adicional last_significant_coeff_flag é enviado. Este símbolo indica se o coeficiente significativo atual é o ultimo um dentro do bloco ou se coeficientes significantes adicionais seguem. Caso a última posição de varredura seja alcançada e a codificação de mapa de significancia não tenha ainda terminado por um last_significant_coeff_flag com valor de um, fica aparente que o último coeficiente tenha que ser significante.
[075] Propostas recentes para HEVC removeram o indicador last_significant_coeff. Nessas propostas, antes de enviar o mapa de significância, uma indicação da posição X e Y da posição do último coeficiente significativo é enviada.
[076] Em uma proposta para HEVC, é proposto que três padrões de varredura sejam utilizados para o mapa de significância: diagonal, vertical e horizontal. A figura 2 mostra um exemplo de uma varredura de ziguezague 17, uma varredura vertical 19, uma varredura horizontal 21, e uma varredura diagonal 15. Como mostrado na figura 2, cada dessas varreduras prossegue em uma direção avançada, isto é, dos coeficientes de transformada de frequência mais baixa no canto esquerdo superior do bloco de transformada até os coeficientes de transformada de frequência mais elevada no canto direito inferior do bloco de transformada. Após codificação do mapa de significância, as informações de nível restante (binários 1 - N, onde N é o número total de binários) para cada coeficiente de transformada significativo (isto é, o valor de coeficiente) é codificado.
[077] No processo CABAC anteriormente especificado no padrão H.264, após o tratamento de 4x4 sub-blocos, cada dos níveis de coeficiente de transformada é binarizado, por exemplo, de acordo com um código unário, para produzir uma série de binários. Em H.264, o conjunto de modelo de contexto CABAC para cada sub-bloco consiste em duas vezes cinco modelos de contexto com cinco modelos tanto para o primeiro Binário como todos os binários restantes (até e incluindo o 14° Bin) do elemento de sintaxe coeff_abs_level_minus_one, que codifica o valor absoluto de um coeficiente de transformada. Notavelmente, em uma versão proposta de HEVC, os binários restantes incluem somente Binário 1 e Binário 2. O restante dos níveis de coeficiente são codificados por desvio com codificação Golomb-Rice e códigos Golomb exponencial. Codificação de desvio desvia o motor de codificação CABAC para os binários codificados por desvio.
[078] Em HEVC, a seleção de modelos de contexto pode ser realizada como no processo CABAC original proposto para o padrão H.264. Entretanto, conjuntos diferentes de modelos de contexto podem ser selecionados para diferentes sub-blocos. Em particular, a escolha do conjunto de modelo de contexto para um dado sub-bloco depende de certas estatísticas dos sub- blocos anteriormente codificados.
[079] A figura 3 mostra a ordem de varredura seguida por uma versão proposta do processo HEVC para codificar os níveis de coeficientes de transformada (valor absoluto do nível e sinal do nível) em uma unidade de transformada 25. Observe que há um padrão de ziguezague avançado 27 para varrer os 4x4 sub-blocos de um bloco maior, e um padrão de ziguezague inverso 23 para varrer os níveis de coeficientes de transformada em cada sub- bloco. Em outras palavras, uma série de 4x4 sub-blocos é varrida em um padrão de ziguezague avançado de tal modo que os sub-blocos sejam varridos em uma sequência. A seguir, em cada sub-bloco, uma varredura de ziguezague inversa é executada para varrer os níveis dos coeficientes de transformada no sub-bloco. Consequentemente, os coeficientes de transformada no conjunto bidimensional formado pela unidade de transformada são serializados em um conjunto unidimensional de tal modo que coeficientes que são varridos inverso em um dado sub-bloco são então seguidos por coeficientes que são varridos inversos em um sub-bloco sucessivo.
[080] Em um exemplo, a codificação CABAC de coeficientes varridos de acordo com a abordagem de varredura de sub-bloco mostrada na figura 3 pode utilizar 60 contextos, isto é, 6 conjuntos de 10 contextos cada, distribuídos como descrito abaixo. Para um 4x4 bloco, 10 modelos de contexto poderiam ser utilizados (5 modelos para Binário 1 e 5 modelos para binários 2 a 14), como mostrado na tabela 1:
Figure img0001
Tabela 1 - contextos para binário 1 e binários 2 a 14 dos níveis de coeficiente de um sub-bloco
[081] De acordo com a tabela 1, um de modelos de contexto 0 - 4 no conjunto de contexto é utilizado para Binário 1 se, respectivamente, o coeficiente atualmente codificado que está sendo varrido no sub-bloco for codificado após um coeficiente maior do que 1 ter sido codificado no sub-bloco, o coeficiente atualmente codificado é o coeficiente inicial varrido no sub-bloco ou não há traseiros (nenhum coeficiente anteriormente codificado) no sub- bloco, ou há três ou mais traseiros no sub-bloco. Para cada dos binários 2-14 (embora pelo menos uma proposta para HEVC codifique somente Binário 2 utilizando CABAC, com binários sucessivos do nível de coeficiente sendo codificado com um código Golomb exponencial), um dos modelos de contexto 0-4 pode ser utilizado, respectivamente, se o coeficiente for o coeficiente inicial varrido no sub-bloco ou houver coeficientes anteriormente codificados zero maiores do que um, há um coeficiente anteriormente codificado maior do que um, há dois coeficientes anteriormente codificados maiores do que um, há três coeficientes anteriormente codificados maiores do que um, ou há quatro coeficientes anteriormente codificados maiores do que um.
[082] Há 6 conjuntos diferentes desses 10 modelos, dependendo do número de coeficientes maior do que 1 no 4x4 sub-bloco codificado anterior na varredura avançada de sub-blocos:
Figure img0002
Figure img0003
Tabela 2- contextos para binário 1 e binários 2 a 14
[083] De acordo com a tabela 2, os conjuntos 0-5 de modelos de contexto são utilizados para um dado sub-bloco se, respectivamente, o tamanho do sub-bloco for 4x4, há 0 a 3 coeficientes maiores do que 1 no sub- bloco anteriormente codificado há 4 a 7 coeficientes maiores do que 1 no sub- bloco anteriormente codificado há 8-11 coeficientes maiores do que 1 no sub- bloco anteriormente codificado há 12 a 15 coeficientes maiores do que 1 no sub-bloco anteriormente codificado, ou o dado sub-bloco é o primeiro 4x4 sub- bloco (sub-bloco esquerdo superior) ou há 16 coeficientes maiores do que 1 no sub-bloco anteriormente codificado.
[084] O processo de codificação acima descrito para H.264 e o processo proposto por algum para HEVC tem várias desvantagens. Como mostrado na figura 3, uma desvantagem é que a varredura para níveis de coeficiente prossegue para frente para a varredura de sub-blocos (isto é, começando com o sub-bloco esquerdo superior), porém a seguir para trás para a varredura dos níveis de coeficiente em cada sub-bloco (isto é, começando com o coeficiente direito inferior em cada sub-bloco). Essa abordagem implica em ir para frente e para trás no bloco, o que pode tornar a busca de dados mais complexa.
[085] Outra desvantagem vem do fato de que a ordem de varredura do nível de coeficiente é diferente da ordem de varredura do mapa de significância. Em HEVC, há três ordens de varredura propostas diferentes para o mapa de significância: avançado diagonal, avançado horizontal e avançado vertical como mostrado na figura 2. Todas as varreduras de coeficiente significativas são diferentes da varredura de níveis de coeficiente em uma proposta para HEVC, uma vez que as varreduras de nível prosseguem em uma direção inversa. Como a direção e padrão da varredura de nível de coeficiente não são casadas com a direção e padrão da varredura de significância, mais níveis de coeficiente têm de ser verificados. Por exemplo, assuma que uma varredura horizontal é utilizada para o mapa de significância, e o último coeficiente significativo é encontrado na extremidade da primeira linha de coeficientes. A varredura de nível de coeficiente em HEVC exigiria uma varredura diagonal através de múltiplas linhas para a varredura de nível, quando somente a primeira linha na realidade contém níveis de coeficiente diferentes de 0. Tal processo de varredura pode introduzir ineficiências indesejáveis.
[086] Na proposta para HEVC, a varredura do mapa de significância prossegue para frente no bloco, a partir do coeficiente DC encontrado no canto esquerdo superior do bloco até o coeficiente de frequência mais elevada tipicamente encontrado no canto direito mais baixo do bloco, enquanto a varredura para os níveis de coeficiente é para trás em cada sub-bloco 4x4. Isso também pode resultar em busca de dados mais complexa e mais ineficiente.
[087] Outra desvantagem para algumas propostas de HEVC vem dos conjuntos de contexto. O conjunto de contexto (vide as tabelas 2 acima) para CABAC é diferente para o tamanho de bloco 4x4 do que para outros tamanhos de bloco. De acordo com essa revelação, seria desejável harmonizar contextos através de todos os tamanhos de bloco de modo que menos memória seja dedicada à armazenagem de conjuntos de contexto diferentes.
[088] Também, como será descrito em mais detalhe abaixo, alguns contextos CABAC propostos para o mapa de significância para HEVC são somente válidos se a ordem de varredura for para frente. Como tal, isso não permitiria varreduras de mapa de significância inversa.
[089] Além disso, os contextos descritos acima para codificar o nível de uma tentativa de coeficiente quantizado para explorar a correlação local de níveis de coeficiente. Esses contextos dependem da correlação entre 4x4 sub- blocos (vide os conjuntos de contextos na tabela 2), e a correlação em cada sub-bloco (vide os modelos de contexto na tabela 1). A desvantagem desses contextos é que a dependência poderia ser demasiadamente longe (isto é, há baixa dependência entre coeficientes que são separados entre si por vários outros coeficientes, de um sub-bloco para outro). Também, em cada sub-bloco, a dependência poderia ser fraca.
[090] Essa revelação propõe várias características diferentes que podem reduzir ou eliminar algumas das desvantagens descritas acima. Em alguns exemplos, essas características podem fornecer uma ordem de varredura harmonizada e mais eficiente dos coeficientes de transformada em codificação de vídeo. Em outros exemplos dessa revelação, essas características fornecem um conjunto de contextos mais eficiente a ser utilizado em codificação por entropia baseada em CABAC dos coeficientes de transformada compatíveis com a ordem de varredura proposta. Deve ser observado que todas as técnicas descritas nessa revelação podem ser utilizadas independentemente ou podem ser utilizadas juntas em qualquer combinação.
[091] A figura 4 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo de exemplo 10 que pode ser configurado para utilizar técnicas para codificar coeficientes de transformada de acordo com exemplos dessa revelação. Como mostrado na figura 4, o sistema 10 inclui um dispositivo de fonte 12 que transmite vídeo codificado para um dispositivo de destino 14 através de um canal de comunicação 16. Vídeo codificado pode ser também armazenado em um meio de armazenagem 34 ou um servidor de arquivo 36 e pode ser acessado pelo dispositivo de destino 14 como desejado. O dispositivo de fonte 12 e o dispositivo de destino 14 podem compreender qualquer de uma ampla variedade de dispositivos, incluindo computadores de mesa, computadores de notebook (isto é, laptop), computadores tablet, conversores de sinais de frequência, aparelho telefônicos como os chamados smartphones, televisões, câmeras, dispositivos de display, tocadores de mídia digital, consoles de videogame, ou similar. Em muitos casos, tais dispositivos podem ser equipados para comunicação sem fio. Consequentemente, o canal de comunicação 16 pode compreender um canal sem fio, um canal cabeado, ou uma combinação de canais sem fio e cabeado apropriados para transmissão de dados de vídeo codificados. Similarmente, o servidor de arquivo 36 pode ser acessado pelo dispositivo de destino 14 através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão cabeada (por exemplo, DSL, modem de cabo, etc.), ou uma combinação de ambos que é apropriada para acessar dados de vídeo codificados armazenados em um servidor de arquivo.
[092] As técnicas para codificar coeficientes de transformada, de acordo com exemplos dessa revelação, podem ser aplicadas à codificação de vídeo em suporte de qualquer de uma variedade de aplicações de multimídia, como difusões de televisão pelo ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo streaming, por exemplo, via Internet, codificação de vídeo digital para armazenagem em um meio de armazenagem de dados, ou outras aplicações. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo simples ou duplex para suportar aplicações como streaming de vídeo, repetição de vídeo, difusão de vídeo, e/ou telefonia de vídeo.
[093] No exemplo da figura 4, o dispositivo de fonte 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20, um modulador/demodulador (modem) 22 e um transmissor 24. No dispositivo de fonte 12, a fonte de vídeo 18 pode incluir uma fonte como um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo anteriormente capturado, uma interface de feed de vídeo para receber vídeo de um provedor de conteúdo de vídeo, e/ou um sistema gráfico de computador para gerar dados de gráfico de computador como o vídeo de fonte, ou uma combinação de tais fontes. Como exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de fonte 12 e o dispositivo de destino 14 podem formar os denominados fones de câmera ou vídeo fones. Entretanto, as técnicas descritas nessa revelação podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações sem fio e/ou cabeadas.
[094] O vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. As informações de vídeo codificado podem ser moduladas pelo modem 22 de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e transmitidas para o dispositivo de destino 14 através do transmissor 24. O modem 22 pode incluir vários misturadores, filtros, amplificadores ou outros componentes projetados para modulação de sinal. O transmissor 24 pode incluir circuitos projetados para transmitir dados, incluindo amplificadores, filtros e uma ou mais antenas.
[095] O vídeo capturado, pré-capturado ou gerado por computador que é codificado pelo codificador de vídeo 20 também pode ser armazenado sobre um meio de armazenagem 34 ou um servidor de arquivo 36 para consumo posterior. O meio de armazenagem 34 pode inclui discs Blu-ray, DVDs, CD-ROMs, memória flash, ou qualquer outra mídia de armazenagem digital apropriada para armazenar vídeo codificado. O vídeo codificado armazenado no meio de armazenagem 34 pode ser então acessado pelo dispositivo de destino 14 para decodificação e reprodução.
[096] O servidor de arquivo 36 pode ser qualquer tipo de servidor capaz de armazenar vídeo codificado e transmitir esse vídeo codificado para o dispositivo de destino 14. Servidores de arquivo de exemplo incluem um servidor de rede (por exemplo, para um website), um servidor FTP, dispositivos de armazenagem fixada em rede (NAS), uma unidade de disco local, ou qualquer outro tipo de dispositivo capaz de armazenar dados de vídeo codificados e transmitir os mesmos para um dispositivo de destino. A transmissão de dados de vídeo codificados a partir do servidor de arquivo 36 pode ser uma transmissão streaming, uma transmissão de baixar ou uma combinação de ambos. O servidor de arquivo 36 pode ser acessado pelo dispositivo de destino 14 através de qualquer conexão de dados padrão, incluindo uma conexão da Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão de Wi-Fi), uma conexão cabeada (por exemplo, DSL, modem com cabo, Ethernet, USB, etc.) ou uma combinação de ambos que é apropriado para acessar dados de vídeo codificados armazenados em um servidor de arquivo.
[097] O dispositivo de destino 14, no exemplo da figura 4, inclui um receptor 26, um modem 28, um decodificador de vídeo 30 e um dispositivo de display 32. O receptor 26 do dispositivo de destino 14 recebe informações através do canal 16, e o modem 28 demodula as informações para produzir um fluxo de bits demodulado para o decodificador de vídeo 30. As informações comunicadas através do canal 16 podem incluir uma variedade de informações de sintaxe geradas pelo codificador de vídeo 20 para uso pelo decodificador de vídeo 30 na decodificação de dados de vídeo. Tal sintaxe pode ser também incluída com os dados de vídeo codificados armazenados no meio de armazenagem 34 ou servidor de arquivo 36. Cada do codificador de vídeo 20 e decodificador de vídeo 30 pode fazer parte de um codificador-decodificador respectivo (CODEC) que é capaz de codificar ou decodificar dados de vídeo.
[098] O dispositivo de display 32 pode ser integrado com, ou externo ao dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de display integrado e também ser configurado para fazer interface com um dispositivo de display externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de display. Em geral, o dispositivo de display 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer de uma variedade de dispositivos de display como um display de cristal líquido (LCD), um display de plasma, um display de diodo de emissão de luz orgânica (OLED) ou outro tipo de dispositivo de display.
[099] No exemplo da figura 4, o canal de comunicação 16 pode compreender qualquer meio de comunicação sem fio ou cabeada, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão física, ou qualquer combinação de mídia cabeada e sem fio. O canal de comunicação 16 pode fazer parte de uma rede baseada em pacote, como uma rede de área local, uma rede de área remota, ou uma rede global como a Internet. O canal de comunicação 16 representa genericamente qualquer meio de comunicação apropriado, ou coleção de mídia de comunicação diferente, para transmitir dados de vídeo a partir do dispositivo de fonte 12 para o dispositivo de destino 14, incluindo qualquer combinação apropriada de mídia cabeada ou sem fio. O canal de comunicação 16 pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que pode ser útil para facilitar comunicação a partir do dispositivo de fonte 12 para o dispositivo de destino 14.
[0100] O codificador de vídeo 20 o e decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, como o padrão de Codificação de vídeo de eficiência elevada (HEVC) atualmente em desenvolvimento, e pode se conformar ao Modelo de Teste HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões da indústria ou de propriedade, como o padrão ITU-T H.264, alternativamente mencionado como MPEG-4, parte 10, Codificação avançada de vídeo (AVC) ou extensões de tais padrões. As técnicas dessa revelação, entretanto, não são limitadas a nenhum padrão de codificação específico. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.263.
[0101] Embora não mostrado na figura 4, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser individualmente integrados com um codificador de áudio e decodificador, e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para tratar de codificação tanto de áudio como de vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, unidades MUX- DEMUX podem se conformar ao protocolo de multiplexor ITU H.223, ou outros protocolos como o protocolo de datagrama de usuário (UDP).
[0102] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser implementados individualmente, como qualquer de uma variedade de conjunto de circuitos de codificador apropriado, como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), disposições de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível em computador não transitório, apropriado e executam as instruções em hardware utilizando um ou mais processadores para executar as técnicas dessa revelação. Cada do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo.
[0103] O codificador de vídeo 20 pode implementar todas ou quaisquer dessas técnicas para melhorar a decodificação de coeficientes de transformada em um processo de codificação de vídeo. Um codificador de vídeo, como descrito nessa revelação, pode se referir a um codificador de vídeo ou um decodificador de vídeo. Similarmente, uma unidade de codificação de vídeo pode se referir a um codificador de vídeo ou um decodificador de vídeo. De modo semelhante, a codificação de vídeo pode se referir à codificação de vídeo ou decodificação de vídeo.
[0104] Em um exemplo da revelação, um codificador de vídeo (como codificador de vídeo 20 ou decodificador de vídeo 30) pode ser configurado para codificar uma pluralidade de coeficientes de transformada associados a dados de vídeo residual em um processo de codificação de vídeo. O codificador de vídeo pode ser configurado para codificar informações indicando coeficientes significativos para a pluralidade de coeficientes de transformada de acordo com uma ordem de varredura, e codificar informações indicando níveis da pluralidade de coeficientes de transformada de acordo com a ordem de varredura.
[0105] Em outro exemplo da revelação, um codificador de vídeo (como codificador de vídeo 20 ou decodificador de vídeo 30) pode ser configurado para codificar uma pluralidade de coeficientes de transformada associados a dados de vídeo residuais em um processo de codificação. O codificador de vídeo pode ser configurado para codificar informações indicando os coeficientes de transformada significativas em um bloco de coeficientes de transformada com uma varredura prosseguindo em uma direção de varredura inversa a partir de coeficientes de frequência mais elevada no bloco de coeficientes de transformada para coeficientes de frequência mais baixa no bloco de coeficientes de transformada.
[0106] Em outro exemplo da revelação, um codificador de vídeo (como codificador de vídeo 20 ou decodificador de vídeo 30) pode ser configurado para codificar uma pluralidade de coeficientes de transformada associados aos dados de vídeo residuais em um processo de codificação de vídeo. O codificador de vídeo pode ser configurado para dispor um bloco de coeficientes de transformada em um ou mais subconjuntos de coeficientes de transformada com base em uma ordem de varredura, codificar uma primeira porção de níveis de coeficientes de transformada em cada subconjunto, em que a primeira porção de níveis inclui pelo menos uma significância dos coeficientes de transformada em cada subconjunto, e codificar uma segunda porção de níveis de coeficientes de transformada em cada subconjunto.
[0107] Em outro exemplo da revelação, um codificador de vídeo (como codificador de vídeo 20 ou decodificador de vídeo 30) pode ser configurado para codificar informações indicando coeficientes significativos para a pluralidade de coeficientes de transformada de acordo com uma ordem de varredura, dividir as informações codificadas em pelo menos uma primeira região e uma segunda região, codificar por entropia as informações codificadas na primeira região de acordo com um primeiro conjunto de contextos utilizando critérios de derivação de contexto, e codificar por entropia as informações codificadas na segunda região de acordo com um segundo conjunto de contextos utilizando os mesmos critérios de derivação de contexto que a primeira região.
[0108] A figura 5 é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo 20 que pode utilizar técnicas para codificar coeficientes de transformada como descrito nessa revelação. O codificador de vídeo 20 será descrito no contexto de codificação HEVC para fins de ilustração, porém sem limitação dessa revelação com relação a outros padrões ou métodos de codificação que podem exigir varredura de coeficientes de transformada. O codificador de vídeo 20 pode executar intra e intercodificação de CUs nos quadros de vídeo. Intracodificação se baseia em predição espacial para reduzir ou remover redundância espacial em vídeo em um dado quadro de vídeo. Intercodificação se baseia em predição temporal para reduzir ou remover redundância temporal entre um quadro atual e quadros anteriormente codificados de uma sequência de vídeo. Intramodo (I-modo) pode se referir a qualquer de vários modos de compressão de vídeo de base espacial. Intermodos como predição unidirecional (P-modo) ou predição bidirecional (B- modo) podem se referir a quaisquer de vários modos de compressão de vídeo de base temporal.
[0109] Como mostrado na figura 5, o codificador de vídeo 20 recebe um bloco de vídeo atual em um quadro de vídeo a ser codificado. No exemplo da figura 5, o codificador de vídeo 20 inclui unidade de compensação de movimento 44, uma unidade de estimação de movimento 42, um módulo de intrapredição 46, um buffer de quadro de referência 64, um somador 50, um módulo de transformada 52, uma unidade de quantização 54 e unidade de codificação de entropia 56. O módulo de transformada 52, ilustrado na figura 5 é o módulo que aplica a transformada efetiva a um bloco de dados residuais, e não deve ser confundido com bloco de coeficientes de transformada, que também pode ser mencionado como uma unidade de transformada (TU) de uma CU. Para reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui uma unidade de quantização inversa 58, uma unidade de transformada inversa 60, e um somador 62. Um filtro de desbloqueio (não mostrado na figura 5) também pode ser incluído para filtrar limites de bloco para remover artefatos de bloqueio de vídeo reconstruído. Se desejado, o filtro de desbloqueio filtraria tipicamente a saída do somador 62.
[0110] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou fatia de vídeo a ser codificado. O quadro ou fatia pode ser dividido em múltiplos blocos de vídeo, por exemplo, unidades de codificação maiores (LCUs). A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 executam codificação interpreditivo do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer compressão temporal. O módulo de intrapredição 46 pode executar codificação intrapreditiva do bloco de vídeo recebido em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer compressão espacial.
[0111] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, baseado em resultados de erro (isto é, distorção) para cada modo, e provê o bloco intra ou intercodificado resultante para o somador 50 para gear dados de bloco residuais e para o somador 62 reconstruir o bloco codificado para uso em um quadro de referência. Alguns quadros de vídeo podem ser designados como I-quadros, onde todos os blocos em um I-quadro são codificados em um modo intrapredição. Em alguns casos, o módulo intrapredição 46 pode executar codificação de intrapredição de um bloco em um P- ou B-quadro, por exemplo, quando busca de movimento realizada pela unidade de estimação de movimento 42 não resulta em uma predição suficiente do bloco.
[0112] A unidade de estimação de movimento 42 e unidade de compensação de movimento 44 podem ser altamente integradas, porém são ilustradas separadamente para fins conceptuais. A estimação de movimento é o processo de gerar vetores de movimento, que estimam movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma unidade de predição em um quadro atual em relação a uma amostra de referência de um quadro de referência. Uma amostra de referência pode ser um bloco que é verificado casar estreitamente com a porção da CU incluindo a PU sendo codificada em termos de diferença de pixel, que pode ser determinado pela soma de diferença absoluta (SAD), soma de diferença quadrada (SSD), ou outra métrica de diferença. Compensação de movimento, realizado pela unidade de compensação de movimento 44, pode envolver buscar ou gerar valores para a unidade de predição com base no vetor de movimento determinado pela estimação de movimento. Novamente, a unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos.
[0113] A unidade de estimação de movimento 42 calcula um vetor de movimento para uma unidade de predição de um quadro intercodificado por comparar a unidade de predição com amostras de referência de um quadro de referência armazenado no buffer de quadro de referência 64. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel de sub-inteiro de quadros de referência armazenados no buffer de quadro de referência 64. Por exemplo, o codificador de vídeo 20 pode calcular valores de posições de pixel de um quarto, posições de pixel de um oitavo, ou outras posições de pixel fracionais do quadro de referência. Portanto, a unidade de estimação de movimento 42 pode executar uma busca de movimento em relação às posições de pixel totais e posições de pixel fracionais e transmitir um vetor de movimento com precisão de pixel fracional. A unidade de estimação de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e unidade de compensação de movimento 44. A porção do quadro de referência identificada por um vetor de movimento pode ser mencionada como uma amostra de referência. A unidade de compensação de movimento 44 pode calcular um valor de predição para uma unidade de predição de uma CU atual, por exemplo, por recuperar a amostra de referência identificada por um vetor de movimento para a PU.
[0114] O módulo intrapredição 46 pode codificar por intrapredição o bloco recebido como uma alternativa para interpredição executada pela unidade de estimação de movimento 42 e unidade de compensação de movimento 44. O módulo de intrapredição 46 pode codificar o bloco recebido em relação a blocos anteriormente codificados vizinhos, por exemplo, blocos acima, acima e à direita, acima e à esquerda, ou à esquerda do bloco atual, assumindo uma ordem de codificação esquerda para direita, superior para inferior para os blocos. O módulo de intrapredição 46 pode ser configurado com uma variedade de modos de intrapredição diferentes. Por exemplo, o módulo de intrapredição 46 pode ser configurado com certo número de modos de predição direcional, por exemplo, 33 modos de predição direcional, com base no tamanho da CU sendo codificada.
[0115] O módulo de intrapredição 46 pode selecionar um modo de intrapredição, por exemplo, por calcular valores de erro para vários modos de intrapredição e selecionar um modo que fornece o valor de erro mais baixo. Modos de predição direcional podem incluir funções para combinar valores de pixels espacialmente vizinhos e aplicar os valores combinados para uma ou mais posições de pixel em uma PU. Após os valores para todas as posições de pixel na PU terem sido calculados, o módulo de intrapredição 46 pode calcular um valor de erro para o modo de predição com base em diferenças de pixel entre a PU e o bloco recebido a ser codificado. O módulo de intrapredição 46 pode continuar a testar modos de intrapredição até que um modo de intrapredição que fornece um valor de erro aceitável seja descoberto. O módulo de intrapredição 46 pode enviar então a PU para o somador 50.
[0116] O codificador de vídeo 20 forma um bloco residual por subtrair os dados de predição calculados pela unidade de compensação de movimento 44 ou módulo intrapredição 46 a partir do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que executam essa operação de subtração. O bloco residual pode corresponder a uma matriz bidimensional de valores de diferença de pixel, onde o número de valores no bloco residual é igual ao número de pixels na PU correspondendo ao bloco residual. os valores no bloco residual podem corresponder às diferenças, isto é, erro, entre valores de pixels co-localizados na PU e no bloco original a ser codificado. As diferenças podem ser diferenças de croma ou luma dependendo do tipo de bloco que é codificado.
[0117] O módulo de transformada 52 pode formar uma ou mais unidades de transformada (TUs) a partir do bloco residual. o módulo de transformada 52 aplica uma transformada, como transformada de cosseno discreto (DCT), uma transformada direcional, ou uma transformada similar de modo conceitual, a TU, produzindo um bloco de vídeo compreendendo coeficientes de transformada. Em certos modos de codificação de vídeo como modo de pular transformada, o módulo de processamento de transformada 52 pode enviar o bloco residual para a unidade de quantização 54 diretamente, sem executar transformação. Em tais instâncias, os valores residuais podem ainda ser mencionados aqui como “coeficientes de transformada”, apesar de nenhuma transformada ser efetivamente aplicada aos valores residuais.
[0118] O módulo de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 pode então quantizar os coeficientes de transformada. A unidade de codificação por entropia 56 pode então executar uma varredura dos coeficientes de transformada quantizada na matriz de acordo com uma ordem de varredura especificada. Essa revelação descreve a unidade de codificação por entropia 56 como executando a varredura. Entretanto, deve ser entendido que, em outros exemplos, outras unidades de processamento, como a unidade de quantização 54, poderiam executar a varredura.
[0119] Como mencionado acima, a varredura dos coeficientes de transformada pode envolver duas varreduras. Uma varredura identifica qual dos coeficientes é significativo (isto é, não zero) para formar o mapa de significância e outra varredura codifica os níveis dos coeficientes de transformada. Em um exemplo, essa revelação propõe que a ordem de varredura utilizada para codificar níveis de coeficiente em um bloco seja igual à ordem de varredura utilizada para codificar coeficientes significativos no mapa de significância para o bloco. Em HEVC, o bloco pode ser uma unidade de transformada. Como utilizado aqui, o termo ordem de varredura pode se referir à direção da varredura e/ou o padrão da varredura. Como tal, as varreduras para o mapa de significância e os níveis de coeficiente podem ser iguais em padrão de varredura e/ou direção de varredura. Isto é, como exemplo, se a ordem de varredura utilizada para formar o mapa de significância for um padrão de varredura horizontal na direção avançada, então a ordem de varredura para níveis de coeficiente deve ser também um padrão de varredura horizontal na direção avançada. De modo semelhante, como outro exemplo, se a ordem de varredura para o mapa de significância for um padrão de varredura vertical na direção inversa, então a ordem de varredura para níveis de coeficiente deve ser também um padrão de varredura vertical na direção inversa. O mesmo pode se aplicar a padrões diagonais, ziguezague ou outros padrões de varredura.
[0120] A figura 6 mostra exemplos de ordens de varredura inversa para um bloco de coeficientes de transformada, isto é, um bloco de transformada. O bloco de transformada pode ser formado utilizando uma transformada, como, por exemplo, uma transformada de cosseno discreto (DCT). Observe que cada do padrão diagonal inverso 9, padrão de ziguezague inverso 29, padrão vertical inverso 31, e padrão horizontal inverso 33 prosseguem dos coeficientes de frequência mais elevada no canto direito mais baixo do bloco de transformada até os coeficientes de frequência mais baixa no canto esquerdo superior do bloco de transformada. Consequentemente, um aspecto da revelação apresenta uma ordem de varredura unificada para codificação do mapa de significância e codificação de níveis de coeficiente. A varredura pode ser unificada no sentido de que as varreduras para codificação do mapa de significância e codificação dos níveis de coeficiente prosseguem na mesma direção, por exemplo, em uma direção inversa a partir dos coeficientes de frequência mais elevada para os coeficientes de frequência mais baixa, e/ou prosseguem no mesmo padrão de varredura. A técnica proposta aplica a ordem de varredura utilizada para o mapa de significância à ordem de varredura utilizada para codificação de nível de coeficiente. Em geral, padrões de varredura horizontal, vertical e diagonal foram mostrados como funcionando bem, desse modo reduzindo a necessidade de padrões de varredura adicionais. Entretanto, as técnicas gerais dessa revelação são aplicáveis para uso com qualquer padrão de varredura.
[0121] De acordo com outro aspecto, essa revelação propõe que a varredura de significância seja realizada como uma varredura inversa, a partir do último coeficiente significativo na unidade de transformada para o primeiro coeficiente (isto é, o coeficiente DC) na unidade de transformada. Os exemplos de ordens de varredura inversa são mostrados na figura 6. Em particular, a varredura de significância prossegue do último coeficiente significativo em uma posição de frequência mais elevada para coeficientes significativos em posições de frequência mais baixa, e finalmente para a posição de coeficiente DC.
[0122] Para facilitar a varredura inversa, técnicas para identificar o último coeficiente significativo podem ser utilizadas. Um processo para identificar o último coeficiente significativo é descrito em J. Sole, R. Joshi, I.-S. Chong, M. Coban, M. Karczewicz, “Parallel Context Processing for the significance map in high coding efficiency,” JCTVC-D262, 4th JCT-VC Meeting, Daegu, KR, Janeiro de 2011, e no pedido de patente provisional U.S. no. 61/419,740, depositado em 3 de dezembro de 2010, para Joel Sole Rojals et al., intitulado “Encoding of the position of the last significant transform coefficient in video coding.” Após o último coeficiente significativo no bloco ser identificado, então uma ordem de varredura inversa pode ser aplicada tanto para mapa de significância como para nível de coeficiente.
[0123] Essa revelação também propõe que a varredura de significância e a varredura de nível de coeficiente não sejam inversa e avançada, respectivamente, porém em vez disso tenham a mesma direção de varredura e, mais particularmente, somente uma direção em um bloco. Especificamente, é proposto que a varredura de significância e a varredura de nível de coeficiente ambas utilizem uma ordem de varredura inversa, por exemplo, do último coeficiente significativo em uma unidade de transformada até o primeiro coeficiente. Consequentemente, em um exemplo, a varredura de significância é realizada para trás (varredura inversa em relação a algumas varreduras propostas para HEVC) a partir do último coeficiente significativo até o primeiro coeficiente (o coeficiente DC). Esse aspecto da revelação apresenta uma ordem de varredura unidirecional, unificada para codificação do mapa de significância e codificação de níveis de coeficiente. Em particular, a ordem de varredura unidirecional, unificada pode ser uma ordem de varredura inversa unificada. As ordens de varredura para varreduras de nível de coeficiente e significância de acordo com um padrão de varredura inverso unificado podem ser inverso diagonal, inverso ziguezague, inverso horizontal ou inverso vertical como mostrado na figura 6. Entretanto, qualquer padrão de varredura poderia ser utilizado.
[0124] Em vez de definir conjuntos de coeficientes em sub-blocos bidimensionais como mostrado na figura 3 para o objetivo de derivação de contexto CABAC, essa revelação propõe definir conjuntos de coeficientes como vários coeficientes que são consecutivamente varridos de acordo com a ordem de varredura. Em particular, cada conjunto de coeficientes pode compreender coeficientes consecutivas na ordem de varredura sobre o bloco inteiro. Qualquer tamanho do conjunto pode ser considerado, embora um tamanho de 16 coeficientes em um conjunto de varredura seja verificado como funcionando bem. O tamanho de conjunto poderia ser fixo ou adaptável. Essa definição permite que conjuntos que sejam blocos 2-D (se um método de varredura de sub-bloco for utilizado), retângulos (se varreduras horizontais ou verticais forem utilizados), ou no formato diagonal (se varreduras ziguezague ou diagonais forem utilizadas). Os conjuntos de coeficientes no formato diagonal podem fazer parte de um formato diagonal, formatos diagonais consecutivos, ou partes de formatos diagonais consecutivos.
[0125] As figuras 7-9 mostram exemplos de coeficientes dispostos em 16 subconjuntos de coeficiente, de acordo com ordens de varredura específicas além de serem dispostas em blocos 4x4 fixos. A figura 7 representa um subconjunto de 16 coeficientes 51 que consiste nos 16 primeiros coeficientes em uma ordem de varredura diagonal inverso. O subconjunto seguinte, nesse exemplo, simplesmente consistiria nos 126 coeficientes consecutivos seguintes ao longo da ordem de varredura diagonal inversa. Similarmente, a figura 8 representa o subconjunto de 16 coeficientes 53 para os 16 primeiros consecutivos em uma ordem de varredura horizontal inversa. A figura 9 representa o subconjunto de 16 coeficientes 55 para os 16 primeiros coeficientes em uma ordem de varredura vertical inversa.
[0126] Essa técnica é compatível com uma ordem de varredura para os níveis de coeficiente que é igual à ordem de varredura para o mapa de significância. Nesse caso, não há necessidade de uma ordem de varredura diferente (e às vezes incômoda) para os níveis de coeficiente, como aquela mostrada na figura 3. A varredura de nível de coeficiente pode ser formada como uma varredura avançada que prossegue da posição do último coeficiente significativo em uma unidade de transformada para a posição de coeficiente DC.
[0127] Em alguns processos propostos para HEVC, para codificação por entropia utilizando CABAC, coeficientes de transformada são codificados do seguinte modo. Primeiramente, há uma passagem (na ordem de varredura de mapa de significância) na unidade de transformada total para codificar o mapa de significância. A seguir, há três passagens (na ordem de varredura de nível de coeficiente) para codificar Binário 1 do nível (1a passagem), o resto do nível de coeficiente (2a passagem) e o sinal do nível de coeficiente (3a passagem). Essas três passagens para codificação de nível de coeficiente não são feitas para a unidade de transformada total. Em vez disso, cada passagem é feita em sub-blocos 4x4, como mostrado na figura 3. Quando as três passagens foram concluídas em um sub-bloco, o sub-bloco seguinte é processado por executar sequencialmente as mesmas três passagens de codificação. Essa abordagem facilita a paralelização da codificação.
[0128] Como descrito acima, essa revelação propõe os coeficientes de transformada de varredura em um modo mais harmonizado, de tal modo que a ordem de varredura para os níveis de coeficiente seja igual à ordem de varredura de coeficientes significativos para formar o mapa de significância. Além disso, é proposto que as varreduras para nível de coeficiente e coeficientes significativos sejam executadas em uma direção inversa que prossegue do último coeficiente significativo no bloco até o primeiro coeficiente (o componente DC) no bloco. Essa varredura inversa é o oposto da varredura utilizada para coeficientes significativos de acordo com algumas propostas para HEVC.
[0129] Como anteriormente descrito com referência às figuras 7-9, essa revelação propõe ainda, em um exemplo, que os contextos para os níveis de coeficiente (incluindo o mapa de significância) sejam divididos em subconjuntos. Isto é, um contexto é determinado para cada subconjunto de coeficientes. Consequentemente, nesse exemplo, o mesmo contexto não é necessariamente utilizado para uma varredura inteira de coeficientes. Em vez disso, subconjuntos diferentes de coeficientes em um bloco de transformada podem ter contextos diferentes que são individualmente determinadas para cada subconjunto. Cada subconjunto pode compreender um conjunto unidimensional de coeficientes consecutivamente varridos na ordem de varredura. Portanto, a varredura de nível de coeficiente vai do último coeficiente significativo até o primeiro coeficiente (componente DC), onde a varredura é dividida de forma conceitual em subconjuntos diferentes de coeficientes consecutivamente varridos de acordo com a ordem de varredura. Por exemplo, cada subconjunto pode incluir n coeficientes consecutivamente varridos, para uma ordem de varredura específica. Coeficientes de agrupamento em subconjuntos de acordo com sua ordem de varredura podem fornecer uma melhor correlação entre coeficientes, e desse modo codificação por entropia mais eficiente.
[0130] Essa revelação propõe ainda aumentar a paralelização da codificação por entropia baseada em CABAC dos coeficientes de transformada por estender o conceito das várias passagens do nível de coeficiente para incluir uma passagem adicional para o mapa de significância. Desse modo, um exemplo com quatro passagens podem incluir: (1) codificação de valores de indicador de coeficiente significativo para os coeficientes de transformada, por exemplo, para formar o mapa de significância, (2) codificação de Binário 1 de valores de nível para coeficientes de transformada, (3) codificação de binários restantes dos valores de nível de coeficiente, e (4) codificação dos sinais dos níveis de coeficiente, todos na mesma ordem de varredura. Utilizando as técnicas descritas nessa revelação, a codificação de quatro passagens delineada acima pode ser facilitada. Isto é, varrer coeficientes significativos e níveis para coeficientes de transformada na mesma ordem de varredura, onde a ordem de varredura prossegue em uma direção inversa a partir de um coeficiente de frequência elevada para um coeficiente de frequência baixa, suporta o desempenho da técnica de codificação de várias passagens descrita acima.
[0131] Em outro exemplo, uma técnica de varredura de cinco passagens pode incluir: (1) codificação de valores de indicador de coeficiente significativo para os coeficientes de transformada, por exemplo, para formar o mapa de significância. (2) codificação de binário 1 de valores de nível para coeficientes de transformada, (3) codificação de binário 2 de valores de nível para coeficientes de transformada, (4) codificação dos sinais dos níveis de coeficiente (por exemplo, no modo de desvio), e (5) codificação de binários restantes dos valores de nível de coeficiente (por exemplo, no modo de desvio), todas as passagens utilizando a mesma ordem de varredura.
[0132] Um exemplo com um número menor de passagens também pode ser empregado. Por exemplo, uma varredura de duas passagens onde informações de sinal e nível são processados em paralelo pode incluir: (1) codificação de binários de passagem regular em passagem (por exemplo, significância, nível de binário 1, e nível de binário 2), e (2) codificação de binários de desvio em outro (por exemplo, níveis restantes e sinal), cada passagem utilizando a mesma ordem de varredura. Binários regulares são binários codificados com CABAC utilizando contexto atualizado determinado por critérios de derivação de contexto. Por exemplo, como será explicado em mais detalhe abaixo, os critérios de derivação de contexto podem incluir as informações de nível codificado de coeficiente de vizinho causal em relação a um coeficiente de transformada atual. Binários de desvio podem ser binários codificados com CABAC tendo um contexto fixo. Em alguns exemplos, binários de desvio podem ser codificados utilizando codificação Golomb-Rice e códigos Golomb exponencial.
[0133] Os exemplos das várias passagens de varredura descritas acima podem ser generalizados como incluindo uma primeira passagem de varredura da primeira porção dos níveis de coeficiente, em que a primeira porção inclui a passagem de significância, e uma segunda passagem de varredura de uma segunda porção dos níveis de coeficiente.
[0134] Em cada dos exemplos dados acima, as passagens podem ser realizadas sequencialmente em cada subconjunto. Embora o uso de subconjuntos unidimensionais compreendendo coeficientes varridos consecutivamente possa ser desejável, o método de várias passagens pode ser também aplicado a sub-blocos, como sub-blocos 4x4. Os processos de duas passagens e quatro passagens de exemplo para subconjuntos consecutivamente varridos são delineados em mais detalhe abaixo.
[0135] Em um processo de duas passagens simplificado, para cada subconjunto de uma unidade de transformada, a primeira passagem codifica a significância dos coeficientes no subconjunto seguindo a ordem de varredura, e a segunda passagem codifica o nível de coeficiente dos coeficientes no subconjunto seguindo a mesma ordem de varredura. A ordem de varredura pode ser caracterizada por uma direção de varredura (avançada ou inversa) e um padrão de varredura (por exemplo, horizontal, vertical ou diagonal). O algoritmo pode ser mais sensível a processamento paralelo se as duas passagens em cada subconjunto seguirem a mesma ordem de varredura, como descrito acima.
[0136] Em um processo de quatro passagens mais refinado, para cada subconjunto de uma unidade de transformada, a primeira passagem codifica a significância dos coeficientes no subconjunto, a segunda passagem codifica binário 1 do nível de coeficiente dos coeficientes no subconjunto, a terceira passagem codifica os binários restantes do nível de coeficiente dos coeficientes no subconjunto, e a quarta passagem codifica o sinal do nível de coeficiente dos coeficientes no subconjunto. Novamente, para ser mais sensível a processamento paralelo, todas as passagens em cada subconjunto devem ter a mesma ordem de varredura. Como descrito acima, uma ordem de varredura com uma direção inversa foi mostrada funcionar bem. Deve ser observado que a quarta passagem (isto é, a codificação do sinal dos níveis de coeficiente) pode ser feita imediatamente após a primeira passagem (isto é, a codificação do mapa de significância) ou logo antes dos valores restantes da passagem de nível de coeficiente.
[0137] Para alguns tamanhos de transformada, o subconjunto pode ser a unidade de transformada inteira. Nesse caso, há um único subconjunto correspondendo a todos os coeficientes significativos para uma unidade de transformada inteira, e a varredura de significância e varredura de nível prosseguem na mesma ordem de varredura. Nesse caso, em vez de número limitado de n (por exemplo, n = 16) coeficientes em um subconjunto, o subconjunto poder ser um único subconjunto para uma unidade de transformada, em que o subconjunto único inclui todos os coeficientes significativos.
[0138] Voltando para a figura 5, após os coeficientes de transformada serem varridos, a unidade de codificação por entropia 56 pode aplicar codificação por entropia como CAVL ou CABAC aos coeficientes. Além disso, a unidade de codificação por entropia 56 pode codificar informações de vetor de movimento (MV) e qualquer de uma variedade de elementos de sintaxe uteis na decodificação dos dados de vídeo no decodificador de vídeo 30. Os elementos de sintaxe podem incluir um mapa de significância com indicadores de coeficiente significativo que indicam se coeficientes específicos são significativos (por exemplo, não zero) e um último indicador de coeficiente significativo que indica que um coeficiente específico é o último coeficiente significativo. O decodificador de vídeo 30 pode utilizar esses elementos de sintaxe para reconstruir os dados de vídeo codificados. Seguindo a codificação por entropia pela unidade de codificação por entropia 56, o vídeo codificado resultante pode ser transmitido para outro dispositivo, como o decodificador de vídeo 30, ou arquivado para recuperação ou transmissão posterior.
[0139] Para codificar por entropia os elementos de sintaxe, a unidade de codificação por entropia 56 pode executar CABAC e selecionar modelos de contexto com base, por exemplo, número de coeficientes significativos nos N coeficientes anteriormente varridos, onde N é um valor de número inteiro que pode ser relacionado ao tamanho do bloco sendo varrido. A unidade de codificação por entropia 56 pode selecionar também o modelo de contexto com base em um modo de predição utilizado para calcular dados residuais que foram transformados no bloco de coeficientes de transformada, e um tipo de transformada utilizada para transformar os dados residuais no bloco de coeficientes de transformada. Quando os dados de predição correspondentes foram previstos utilizando um modo de intrapredição, a unidade de codificação por entropia 56 pode basear adicionalmente a seleção do modelo de contexto na direção do modo intrapredição.
[0140] Além disso, de acordo com outro aspecto da presente revelação, é proposto que os contextos para CABAC sejam divididos em subconjuntos de coeficientes (por exemplo, os subconjuntos mostrados nas figuras 7-9). É proposto que cada subconjunto seja composto de coeficientes consecutivos na ordem de varredura sobre o bloco inteiro. Qualquer tamanho do subconjunto pode ser considerado, embora se verifique que um tamanho de 16 coeficientes em um subconjunto de varredura funcione bem. Nesse exemplo, um subconjunto pode ser 16 coeficientes consecutivos na ordem de varredura, que pode ser em qualquer padrão de varredura, incluindo padrões de varredura de sub-bloco, diagonal, ziguezague, horizontal e vertical. De acordo com essa proposta, a varredura de nível de coeficiente prossegue do último coeficiente significativo em um bloco. Portanto, a varredura de nível de coeficiente vai do último coeficiente significativo para o primeiro coeficiente (componente DC) no bloco, onde a varredura é dividida de forma conceitual em subconjuntos diferentes de coeficientes para derivar os contextos a aplicar. Por exemplo, a varredura é organizada em subconjuntos de n coeficientes consecutivos na ordem de varredura. O último coeficiente significativo é o primeiro coeficiente significativo encontrado em uma varredura inversa a partir do coeficiente de frequência mais elevado do bloco (tipicamente encontrado perto do contato direito mais baixo do bloco) em direção ao coeficiente DC do bloco (canto esquerdo superior do bloco).
[0141] Em outro aspecto da revelação, é proposto que critérios de derivação de contexto CABAC sejam harmonizados para todos os tamanhos de bloco. Em outras palavras, em vez de ter derivações de contexto diferentes com base em tamanho de bloco como discutido acima, todo tamanho de bloco se baseará na mesma derivação dos contextos CABAC. Desse modo, não há necessidade de levar em conta o tamanho específico do bloco para derivar o contexto CABAC para o bloco. A derivação de contexto é também igual tanto para codificação de significância como codificação de nível de coeficiente.
[0142] Também é proposto que os conjuntos de contexto CABAC dependem de se o subconjunto é subconjunto 0 (definido como o subconjunto com os coeficientes para as frequências mais baixas, isto é, contendo o coeficiente DC e coeficientes de frequência baixa adjacentes) ou não (isto é, os critérios derivados de contexto). Vide as tabelas 3a e 3b abaixo.
Figure img0004
Figure img0005
Tabela 3a - tabela de conjuntos de contexto. A ser comparada com a Tabela 2. Há uma dependência no subconjunto, quer seja o subconjunto 0 (frequências mais baixas) ou não.
[0143] De acordo com a tabela 3a acima, os conjuntos 0-2 dos modelos de contexto são utilizados para o subconjunto de varredura de frequência mais baixa (isto é, conjunto de n coeficientes consecutivos) se, respectivamente, houver coeficientes zero maiores do que um no subconjunto anteriormente codificado, há um coeficiente maior do que um no subconjunto anteriormente codificado, ou há mais do que um coeficiente maior do que um no subconjunto anteriormente codificado. Os conjuntos 3-5 dos modelos de contexto são utilizados para todos os subconjuntos mais elevados do que o subconjunto de frequência mais baixa se, respectivamente, houver coeficientes zero maiores do que um no subconjunto anteriormente codificado, há um coeficiente maior do que um no subconjunto anteriormente codificado, ou há mais de um coeficiente maior do que um no subconjunto anteriormente codificado.
Figure img0006
Figure img0007
Tabela 3b - tabela de conjunto de contexto.
[0144] A tabela 3b mostra uma tabela de conjunto de contexto que mostrou bom desempenho visto que é responsável por uma contagem mais precisa do número de coeficientes maiores do que um no subconjunto anterior. A tabela 3b pode ser utilizada como alternativa à tabela 3a acima.
[0145] A tabela 3c mostra uma tabela de conjunto de contexto simplificado com critério de derivação de contexto que pode também ser alternativamente utilizado.
Figure img0008
Tabela 3c - tabela de conjunto de contexto.
[0146] Além disso, um subconjunto contendo o último coeficiente significativo na unidade de transformada pode utilizar um conjunto de contexto único.
[0147] Essa revelação também propõe que o contexto para um subconjunto ainda depende do número de coeficientes maiores do que 1 em subconjuntos anteriores. Por exemplo, se o número de coeficientes em subconjuntos anteriores for uma janela corrediça, deixe esse número ser uiNumOne. Após esse valor ser verificado para decidir o contexto para o conjunto de sub-varredura atual, então o valor não é definido em zero. Em vez disso, esse valor é normalizado (por exemplo, utilizar uiNumOne = uiNumOne/4 que é equivalente a uiNumOne >> = 2, ou uiNumOne = uiNumOne/2 que é equivalente a uiNumOne >> = 1). Por fazer isso, valores de subconjuntos antes do subconjunto imediatamente anterior podem ser ainda considerados, porém dado o peso menor na decisão de contexto CABAC para o subconjunto atualmente codificado. Em particular, a decisão de contexto CABAC para um subconjunto dado leva em conta não somente o número de coeficientes maiores do que um no subconjunto imediatamente precedente, com também um número ponderal de coeficientes maiores do que um em subconjuntos anteriormente codificados.
[0148] Adicionalmente, o conjunto de contexto pode depender do seguinte: (1) o número de coeficientes significativos no subconjunto atualmente varrido, e (2) se o subconjunto atual é o último subconjunto com um coeficiente significativo (isto é, utilizando a ordem de varredura inversa, isso se refere a se o subconjunto é o primeiro varrido para os níveis de coeficientes ou não). Adicionalmente, o modelo de contexto para um nível de coeficiente pode depender de se o coeficiente atual é o último coeficiente.
[0149] Uma abordagem de seleção de contexto altamente adaptável foi anteriormente proposta para codificação de mapa de significância de 16x16 e 32x32 blocos de coeficientes de transformada em HEVC. Deve ser observado que essa abordagem de seleção de contexto pode ser estendida a todos os tamanhos de bloco. Como mostrado na figura 10, essa abordagem divide um bloco 16x16 em quatro regiões, onde cada coeficiente na região de frequência mais baixa 41 (os quatro coeficientes nos cantos esquerdos superiores em posições de coordenada x, y [0,0], [0,1], [1,0], [1,1] no exemplo de um bloco 16x16, onde [0,0] indica o canto esquerdo superior, coeficiente DC) tem seu próprio contexto, os coeficientes na região superior 37 (coeficientes na linha superior das posições de coordenada x, y [2,0] para [15,0] no exemplo de um bloco de 16x16) compartilham 3 contextos, os coeficientes na região esquerda 35 |(coeficientes na coluna esquerda das posições de coordenada x, y [0,2] a [0,15] no exemplo de um bloco de 16x16) compartilham outros 3 contextos, e os coeficientes na região restante 39 (coeficientes que restam no bloco de 16x16) compartilham 5 contextos. A seleção de contexto para coeficiente de transformada X na região 39, como um exemplo, se baseia na soma da significância de um máximo dos 5 coeficientes de transformada B, E, F, H e I. uma vez que X é independente de outras posições na mesma linha diagonal de X ao longo da direção de varredura (nesse exemplo um padrão de varredura diagonal ou ziguezague), o contexto da significância dos coeficientes de transformada ao longo de uma linha diagonal em ordem de varredura pode ser computado em paralelo a partir das linhas diagonais anteriores em ordem de varredura.
[0150] Os contextos propostos para o mapa de significância, como mostrado na figura 10, são somente válidos se a ordem de varredura for avançada porque o contexto se torna não causal no decodificador se uma varredura inversa for utilizada. Isto é, o decodificador não decodificou ainda coeficientes B, E, F, H e I como mostrado na figura 10 se a varredura inversa for utilizada. Como resultado, o fluxo de bits não é decodificável.
[0151] Entretanto, essa revelação propõe o uso de uma direção de varredura inversa. Como tal, o mapa de significância tem correlação relevante entre coeficientes quando a ordem de varredura está em uma direção inversa, como mostrado na figura 6. Portanto, o uso de uma varredura inversa para o mapa de significância, como descrito acima, oferece eficiência de codificação desejável. Além disso, o uso de uma varredura inversa para o mapa de significância serve para harmonizar a varredura utilizada para codificação de nível de coeficiente e o mapa de significância. Para suportar varredura inversa dos coeficientes significativos, os contextos necessitam ser alterados de modo que sejam compatíveis com uma varredura inversa. É proposto que a codificação de coeficientes significativos faça uso de contextos que são causais com relação à varredura inversa.
[0152] A presente revelação propõe ainda, em um exemplo, uma técnica para codificação de mapa de significância que faz uso dos contextos representados na figura 11. Cada coeficiente na região de frequência mais baixa 43 (os três coeficientes no canto esquerdo superior em posições de coordenada x, y [0,0], [0,1] [1,0] no exemplo de um bloco de 16x16, onde [0,0] indica o canto esquerdo superior, coeficiente DC) tem sua própria derivação de contexto. Os coeficientes na região superior 45 (coeficientes na linha superior a partir das posições de coordenada x, y [2,0] a [15,0] no exemplo de um bloco de 16x16) têm um contexto dependente da significância dos dois coeficientes anteriores na região superior 45 (por exemplo, dois coeficientes imediatamente à direita do coeficiente a ser codificado, onde tais coeficientes são vizinhos causais para fins de decodificação dada a varredura inversa).
[0153] Os coeficientes na região esquerda 47 (coeficientes na coluna esquerda de posições de coordenada x, y [0,2] a [0,15] no exemplo de um bloco de 16x16) têm um contexto dependendo da significância dos dois coeficientes anteriores (por exemplo, dois coeficientes imediatamente abaixo do coeficiente a ser codificado, onde tais coeficientes são vizinhos causais para fins de decodificação dada a orientação de varredura inversa). Observe que esses contextos na região superior 45 e região esquerda 47 na figura 11 são o inverso dos contextos mostrados na figura 10 (por exemplo, onde os coeficientes na região superior 37 têm um contexto dependente dos coeficientes a esquerda e os coeficientes na região esquerda 35 têm um contexto dependente dos coeficientes acima). Voltando para a figura 11, os contextos para os coeficientes na região restante 49 (isto é, os coeficientes restantes fora da região de frequência inferior 43, região superior 45, e região esquerda 47) dependem da soma (ou qualquer outra função) da significância dos coeficientes nas posições marcadas com I, H, F, E e B.
[0154] Em outro exemplo os coeficientes na região superior 45 e regiões esquerda 47 podem utilizar exatamente a mesma derivação de contexto que os coeficientes na região 49. Na varredura inversa, isso é possível porque as posições vizinhas marcadas com I, H, F, E e B são disponíveis para os coeficientes na região superior 45 e região esquerda 47. No final das linhas/colunas, as posições para coeficientes causais I, H, F, E e B poderiam estar fora do bloco. Nesse caso, é assumido que o valor de tais coeficientes é zero (isto é, não significativo).
[0155] Há muitas opções para escolher os contextos. A ideia básica é utilizar a significância de coeficientes que já foram codificados de acordo com a ordem de varredura. No exemplo mostrado na figura 10, o contexto do coeficiente na posição X é derivada com base na soma da significância de coeficientes nas posições B, E, F, H e I. esses coeficientes de contexto vêm antes do coeficiente atual na ordem de varredura inversa proposta nessa revelação para o mapa de significância. Os contextos que eram causais na varredura avançada se tornam não causais (não disponíveis) na ordem de varredura inversa. Um modo para tratar desse problema é espelhar os contextos do caso convencional na figura 10 para aqueles mostrados na figura 11 para a varredura inversa. Para uma varredura de significância que prossegue em uma direção inversa de um último coeficiente significativo para uma posição de coeficiente DC, a vizinhança de contexto para o coeficiente X é composta de coeficientes B, E, F, H, I que são associados a posições de frequência mais elevada, em relação à posição do coeficiente X, e que já foram processados pelo codificador ou decodificador, na varredura inversa, antes da codificação do coeficiente X.
[0156] Como discutido acima, contextos e modelos de contexto ilustrados nas tabelas 1 e 2 tentam explorar a correlação local de níveis de coeficiente entre sub-blocos 4x4. Entretanto, a dependência poderia ser demasiadamente longe. Isto quer dizer, pode haver uma baixa dependência entre coeficientes que são separados entre si por vários coeficientes, por exemplo, de sub-bloco para outro. Além disso, em cada sub-bloco, a dependência entre coeficientes poderia ser fraca. Essa revelação descreve técnicas para tratar desses problemas pela criação de um conjunto de contextos para os níveis de coeficiente que exploram uma vizinhança de contexto mais local.
[0157] Essa revelação propõe utilizar uma vizinhança local para a derivação do contexto dos níveis de coeficiente de transformada, por exemplo, em codificação de vídeo de acordo com HEVC ou outros padrões. Essa vizinhança é composta de coeficientes já codificados (ou decodificados) que têm correlação elevada com o nível do coeficiente atual. Os coeficientes podem aproximar espacialmente do coeficiente a ser codificado, e podem incluir tanto coeficientes que limitam os coeficientes a serem codificados como outros coeficientes próximos, como mostrado na figura 11 ou figura 13. Notavelmente, os coeficientes utilizados para derivação de contexto não são limitados a um sub-bloco ou sub-bloco anterior. Em vez disso, a vizinhança local pode compreender coeficientes que são espacialmente localizados próximo ao coeficiente a ser codificado, porém não residiriam necessariamente no mesmo sub-bloco que o coeficiente a ser codificado, ou no mesmo sub-bloco entre si, se os coeficientes foram dispostos em sub-blocos. Em vez de se basear em coeficientes localizados em um sub-bloco fixo, essa revelação propõe utilizar coeficientes vizinhos que são disponíveis (isto é, já foram codificados) dada a ordem de varredura específica utilizada.
[0158] Conjuntos de contexto CABAC diferentes podem ser especificados para subconjuntos diferentes de coeficientes, por exemplo, baseados em subconjuntos de coeficientes anteriormente codificados. Em um dado subconjunto de coeficientes, os contextos são derivados com base em uma vizinhança local de coeficientes, às vezes chamada uma vizinhança de contexto. De acordo com essa revelação, um exemplo de uma vizinhança de contexto é mostrado na figura 12. Os coeficientes na vizinhança de contexto podem ser espacialmente localizados perto do coeficiente a ser codificado.
[0159] Como mostrado na figura 12, para uma varredura avançada, o contexto do nível para o coeficiente de transformada X depende dos valores dos coeficientes B, E, F, H e I. Em uma varredura avançada, coeficientes B, E, F, H e I são associados a posições de frequência mais baixa em relação à posição e coeficiente X, e que já foram processados pelo codificador ou decodificador antes da codificação do coeficiente X.
[0160] Para codificar binário 1 para CABAC, o contexto depende da soma do número de coeficientes significativos nessa vizinhança de contexto (isto é, nesse exemplo, coeficientes B, E, F, H e I). se um coeficiente na vizinhança de contexto sair do bloco, isto é, devido à perda de dados, pode ser considerado que o valor é 0 para fins de determinar o contexto do coeficiente X. Para codificar o resto de binários para CABAC, o contexto depende da soma do número de coeficientes na vizinhança que são iguais a 1 bem como na soma do número de coeficientes na vizinhança que são maiores do que 1. Em outro exemplo, o contexto para binário 1 pode depender da soma dos valores de binário 1 dos coeficientes na vizinhança de contexto local. Em outro exemplo, o contexto para binário 1 pode depender de uma combinação da soma dos coeficientes de significância e valores de binário 1 nessa vizinhança de contexto.
[0161] Há muitas possibilidades para a seleção de uma vizinhança de contexto. Entretanto, a vizinhança de contexto deve ser composta de coeficientes de tal modo que o codificador e o decodificador tenham, ambos, acesso às mesmas informações. Em particular, os coeficientes B, F, E, I e H na vizinhança devem ser vizinhos causais no sentido de que foram anteriormente codificados ou decodificados e são disponíveis para referência na determinação do contexto para o coeficiente X.
[0162] Os contextos descritos acima com referência à figura 12 são uma de muitas possibilidades. Tais contextos podem ser aplicados a quaisquer das três varreduras atualmente propostas para uso em HEVC: diagonal, horizontal e vertical. Essa revelação propõe que a vizinhança de contexto utilizada para derivar o contexto para o nível de coeficiente pode ser igual à vizinhança de contexto utilizada para derivar contextos para o mapa de significância. Por exemplo, a vizinhança de contexto utilizada para derivar o contexto para o nível de coeficiente pode ser uma vizinhança local, como é o caso para a codificação do mapa de significância.
[0163] Como descrito em mais detalhe acima, essa revelação propõe o uso de uma ordem de varredura inversa para a varredura de coeficientes significativos para formar o mapa de significância. A ordem de varredura inversa pode ser um padrão de ziguezague inverso, padrão vertical ou padrão horizontal como mostrado na figura 6. Se a ordem de varredura para a varredura de nível de coeficiente for também em um padrão inverso, então a vizinhança de contexto mostrada na figura 12 se tornaria não causal. Essa revelação propõe inverter a posição da vizinhança de contexto de modo que sejam causais com referência a uma ordem de varredura inversa. A figura 13 mostra um exemplo de uma vizinhança de contexto para uma ordem de varredura inversa.
[0164] Como mostrado na figura 13, para uma varredura de nível que prossegue em uma direção inversa a partir de um último coeficiente significativo para uma posição de coeficiente DC, a vizinhança de contexto para o coeficiente X é composta de coeficientes B, E, F, H e I, que são associados a posições de frequência mais elevadas em relação à posição do coeficiente X. Dada a varredura inversa, coeficientes B, E, F, H e I já foram processados pelo codificador ou decodificador, antes da codificação do coeficiente X, e são portanto causais no sentido de que são disponíveis. Similarmente, essa vizinhança de contexto pode ser aplicada aos níveis de coeficiente.
[0165] A presente revelação propõe ainda, em um exemplo, outra técnica para codificação de mapa de significância que faz uso dos contextos selecionados para suportar uma varredura inversa. Como discutido acima, uma abordagem de seleção de contexto altamente adaptável foi proposta para HEVC para codificação de mapa de significância de blocos de 16x16 e 32x32 de coeficientes de transformada. Por exemplo, como foi descrito em referência à figura 10 acima, essa abordagem divide um bloco de 16x16 em quatro regiões, onde cada posição na região 41 tem seu próprio conjunto de contextos, a região 37 tem contextos, a região 35 tem outros 3 contextos, e a região 49 tem 5 contextos. A seleção de contexto para coeficiente de transformada X, como um exemplo, se baseia na soma da significância de um máximo das 5 posições B, E, F, H, I. uma vez que X é independente de outras posições na mesma linha diagonal de X ao longo da direção de varredura, o contexto da significância dos coeficientes de transformada ao longo de uma linha diagonal em ordem de varredura pode ser computado em paralelo a partir das linhas diagonais anteriores em ordem de varredura.
[0166] Pelo menos em uma abordagem proposta para HEVC, derivações de contexto têm várias desvantagens. Um problema é o número de contextos por bloco. Ter mais contextos implica mais memória e mais processamento cada vez que os contextos são renovados. Portanto, seria vantajoso ter um algoritmo que tenha poucos contextos e também poucos modos para gerar os contextos (por exemplo, menos do que os quatro modos, isto é, quatro padrões, no exemplo anterior).
[0167] Um modo para tratar tais desvantagens é a codificação do mapa de significância em ordem inversa, isto é, a partir do último coeficiente significativo (frequência mais elevada) para o componente DC (frequência mais baixa). Uma consequência desse processo em ordem inversa é que os contextos para a varredura avançada não mais são válidos. As técnicas descritas acima incluem um método para determinar os contextos para codificação aritmética binária adaptável a contexto (CABAC) das informações indicando um coeficiente atual dos coeficientes significativos com base em coeficientes significativos anteriormente codificados na direção de varredura inversa. Em um exemplo de varredura de ziguezague inversa, os coeficientes significativos anteriormente codificados residem em posições à direita de uma linha de varredura na qual o coeficiente atual dos coeficientes significativos reside.
[0168] A geração de contexto poderia ser diferente para posições diferentes dos blocos de transformada com base, pelo menos, na distância a partir dos limites e a distância a partir do componente DC. Na técnica de exemplo descrita acima, foi proposto que a codificação de mapa de significância faz uso dos conjuntos de contextos representados na figura 11.
[0169] Essa revelação propõe um conjunto de contextos para varredura de mapa de significância inversa que pode levar a desempenho mais elevado através da redução do número de contextos por bloco. Com referência novamente à figura 11, uma redução no número de contexto por bloco pode ser realizado por permitir que a região esquerda 47 e a região superior 45 utilizem a mesma derivação de contexto que a região restante 49. Na varredura inversa, isto é possível porque as posições vizinhas marcadas com I, H, F, E e B são disponíveis para os coeficientes nas regiões 47 e 45.
[0170] A figura 14 mostra um exemplo de uma derivação de contexto de acordo com esse exemplo. Nesse exemplo há somente duas regiões de contexto: uma região de frequência baixa 57 para o coeficiente DC e a região restante 59 para todos os outros coeficientes. Como tal, esse exemplo propõe apenas dois modos para derivar o contexto. Na região de frequência baixa 57 (o coeficiente DC em x, y posição [0,0]), o contexto é derivado com base na posição, isto é, o coeficiente DC tem um contexto próprio. Na região restante 57, o contexto é derivado com base na significância dos coeficientes vizinhos na vizinhança local para cada coeficiente a ser codificado. Nesse exemplo, é derivado dependendo da soma da significância dos 5 vizinhos indicados por I, H, F, E e B na figura 14.
[0171] Portanto, o número de modos para derivar o contexto em um bloco é reduzido de 4 a 2. Também, o número de contextos é reduzido por 8 com relação ao exemplo anterior na figura 11 (2 regiões de frequência inferior 43 e 3 para cada da região superior 45 e região esquerda 47). Em outro exemplo, o coeficiente DC pode utilizar o mesmo método que o resto do bloco, assim o número de modos para derivar o contexto em um bloco é reduzido para 1.
[0172] A figura 15 mostra um exemplo onde a posição atual do coeficiente X faz com que alguns dos coeficientes vizinhos (nesse caso H e B) fiquem fora do bloco atual. Se quaisquer dos vizinhos do coeficiente atual estiverem fora do bloco pode ser assumido que tais coeficientes vizinhos têm significância 0 (isto é, são de valor zero e portanto não significativos). Alternativamente, um ou mais contextos especiais podem ser especificados para um ou mais coeficientes à direita inferior. Desse modo, coeficientes de frequência mais elevada podem ter contextos dependendo da posição, em um modo similar ao do coeficiente DC. Entretanto, assumindo que os vizinhos sejam zero podem fornecer resultados suficientes, particularmente porque os coeficientes da direita inferior terão comumente uma probabilidade baixa de ter coeficientes significativas, ou pelo menos coeficientes significativos com valores grandes.
[0173] A redução dos contextos de número no exemplo da figura 14 é boa para implementação. Entretanto, pode resultar em uma pequena queda em desempenho. Essa revelação propõe uma técnica adicional para melhorar o desempenho enquanto ainda reduz o número de contextos. Em particular, é proposto ter um segundo conjunto de contextos que também se baseia em coeficientes vizinhos. O algoritmo de derivação de contexto é exatamente igual, porém dois conjuntos de contextos com modelos de probabilidade diferentes são utilizados. O conjunto de contextos que são utilizados depende da posição do coeficiente a ser codificada na unidade de transformada.
[0174] Mais especificamente, o desempenho aumentado foi mostrado ao utilizar um modelo de contexto para coeficientes de frequência mais elevada (por exemplo, posições de coeficientes de coordenada x, y direita mais baixa) que é diferente do modelo de contexto para coeficientes em frequências mais baixas (por exemplo, posições de coeficientes de coordenada x, y esquerda superior). Um modo para separar os coeficientes de frequência mais baixa a partir dos coeficientes de frequência mais elevada, e desse modo o modelo de contexto utilizado para cada, é computar o valor x+y para um coeficiente, onde x é a posição horizontal e y é a posição vertical do coeficiente. Se esse valor for menor do que algum limite (por exemplo, 4 foi mostrado como funcionando bem) então o conjunto de contexto 1 é utilizado. Se o valor for igual a ou maior do que o limite, então o conjunto de contexto 2 é selecionado. Novamente, os conjuntos de contexto 1 e 2 têm modelos de probabilidade diferentes.
[0175] A figura 16 mostra um exemplo das regiões de contexto para esse exemplo. Novamente, o coeficiente DC na posição (0,0) tem sua própria região de contexto 61. A região de contexto de frequência mais baixa 63 consiste em coeficientes de transformada em uma posição x+y igual a ou menor do que um limite de 4 (não incluindo o coeficiente DC). A região de contexto de frequência mais elevada 65 consiste em coeficientes de transformada em uma posição x+y maior do que um limite de 4. O limite de 4 é utilizado como exemplo e pode ser ajustado para qualquer número que provê melhor desempenho. Em outro exemplo, o limite pode depender do tamanho de TU.
[0176] A derivação de contexto para a região de contexto de frequência mais baixa 63 e região de contexto de frequência mais elevada 65 é exatamente igual em termos do modo no qual os vizinhos são utilizados para selecionar contexto, porém as probabilidades empregadas (isto é, contextos) são diferentes. Em particular, o mesmo critério para seleção de contexto baseado em vizinhos pode ser utilizado, porém a aplicação de tal critério leva à seleção de um contexto diferente para posições de coeficiente diferentes, porque posições de coeficiente diferentes podem ser associadas com conjuntos diferentes de contextos. Desse modo, o conhecimento de que coeficientes de frequência mais baixa e eleva têm estatísticas diferentes é incorporado no algoritmo, de modo que conjuntos de contexto diferentes para coeficiente diferente podem ser utilizados.
[0177] Em outros exemplos, a função x+y pode ser alterada para outras funções dependendo da posição do coeficiente. Por exemplo, uma opção é dar o mesmo conjunto de contextos para todos os coeficientes com x<T e y<T, T sendo um limite. A figura 17 mostra um exemplo de um bloco de coeficientes de transformada com essas regiões de contexto. Novamente, o coeficiente DC na posição (0,0) pode ter sua própria região de contexto 61. A região de contexto de frequência inferior 73 consiste em todos os coeficientes de transformada cuja posição X ou Y seja menor ou igual a um limite de 4 (não incluindo o coeficiente DC). A região de contexto de frequência mais elevada consiste em todos os coeficientes de transformada cuja posição X ou Y é maior do que um limite de 4. Novamente, o limite de 4 é utilizado como um exemplo e pode ser ajustado para qualquer número que forneça melhor desempenho. Em um exemplo, o limite pode depender do tamanho de TU.
[0178] As técnicas acima descritas mostradas nas figuras 16 e 17 têm dois conjuntos de 5 contextos, que é ainda um número menor de contextos do que o número de contextos mostrados na figura 10, e apresenta desempenho mais elevado. Isso é obtido por separar o bloco em áreas diferentes, e especificar conjuntos de contexto diferentes para os coeficientes nas áreas diferentes, porém ainda aplicar o mesmo critério de derivação de contexto a cada área.
[0179] A figura 18 mostra outro exemplo de um bloco de coeficientes de transformada com regiões de contexto. Nesse exemplo, o coeficiente DC na região 81 e os coeficientes nas posições c, y (1, 0) e (0, 1), nas regiões 83 e 85, têm cada seu próprio contexto. A região restante 87 tem ainda outro contexto. Em uma variação do exemplo mostrado na figura 18, as regiões 83 e 85 compartilham um contexto.
[0180] Em geral, as técnicas acima descritas podem incluir varrer coeficientes significativas em um bloco de coeficientes de transformada em uma direção inversa de coeficientes de frequência mais elevada no bloco dos coeficientes de transformada para coeficientes de frequência mais baixa no bloco de coeficientes de transformada para formar um mapa de significância, e determinar contextos para codificação aritmética binária adaptável de contexto (CABAC) dos coeficientes significativos o mapa de significância com base em uma vizinhança local de coeficientes anteriormente varridos no bloco. Os contextos podem ser determinados para cada dos coeficientes significativos com base em coeficientes de transformada anteriormente varridos na vizinhança local tendo frequências mais elevadas do que o coeficiente de transformada respectiva. Em alguns exemplos, os contextos podem ser determinados com base em uma soma do número de coeficientes significativos em coeficientes anteriormente varridos de uma vizinhança de contexto. A vizinhança local para cada dos coeficientes significativos a ser codificado pode compreender uma pluralidade de coeficientes de transformada que aproxima espacialmente do respectivo coeficiente no bloco.
[0181] Um contexto para um coeficiente significativo em uma posição de DC (por exemplo, mais esquerda superior) do bloco de coeficientes de transformada pode ser determinado com base em um contexto individual especificado para o coeficiente significativo na posição DC. Além disso, um contexto pode ser determinado para coeficientes em uma borda esquerda e borda superior do bloco utilizando critérios substancialmente similar ou idêntico a critério utilizado para determinar contexto para coeficientes que não estão na borda esquerda e borda superior do bloco. Em alguns exemplos, o contexto para um coeficiente em posição mais direita inferior do bloco pode ser determinado utilizando critérios que assume que coeficientes vizinhos fora do bloco são coeficientes no valor zero. Além disso, em alguns exemplos, a determinação de um contexto pode compreender determinar um contexto para coeficientes utilizando critérios idênticos ou substancialmente similares para seleção de contextos em um conjunto de contexto, porém conjuntos de contexto diferentes, com base em posições dos coeficientes no bloco de coeficientes de transformada.
[0182] Referência a superior, inferior, direita, esquerda e similar nessa revelação é utilizada genericamente para conveniência para se referir a posições relativas de eficientes de frequência mais elevada e frequência mais baixa em um bloco de coeficientes de transformada que é organizado, em um modo convencional, para ter coeficientes de frequência mais baixa em direção aos coeficientes de frequência mais elevada e esquerda superior em direção à direita inferior do bloco, e não devem ser considerados limitadores para os casos nos quais os coeficientes de frequência mais elevada e mais baixa podem ser organizados em um modo não convencional, diferente.
[0183] Voltando à figura 5, em alguns exemplos, o módulo de transformada 52 pode ser configurado para zerar certos coeficientes de transformada (isto é, coeficientes de transformada em certos locais). Por exemplo, o módulo de transformada 52 pode ser configurado para zerar todos os coeficientes de transformada fora do quadrante esquerda superior da TU após a transformada. Como outro exemplo, a unidade de codificação por entropia 56 pode ser configurada para zerar coeficientes de transformada no conjunto após certa posição no conjunto. Em qualquer caso, o codificador de vídeo 20 pode ser configurado para zerar certa porção dos coeficientes de transformada, por exemplo, antes ou após a varredura. A frase “zerar” é utilizada para significar ajustar o valor do coeficiente igual à zero, porém não necessariamente pular ou descartar o coeficiente. Em alguns exemplos, esse ajuste de coeficientes para zerar pode ser além de zerar que pode resultar da quantização.
[0184] A unidade de quantização inversa 58 e o módulo de transformada inversa 60 aplicam quantização inversa e transformada inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência por adicionar o bloco residual a um bloco preditivo de um dos quadros do buffer de quadro de referência 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 pixel sub-inteiro para uso na estimação de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado de movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenar no buffer de quadro de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimação de movimento 42 e unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em um quadro de vídeo subsequente.
[0185] A figura 19 é um diagrama de blocos que ilustra um exemplo de uma unidade de codificação de entropia 56 para uso no codificador de vídeo da figura 5. A figura 19 ilustra vários aspectos funcionais da unidade de codificação de entropia 56 para selecionar uma ordem de varredura e conjunto de contexto correspondente utilizado na codificação por entropia CABAC. A unidade de codificação por entropia 56 pode incluir uma unidade de seleção de contexto e ordem de varredura 90, uma unidade de varredura 2D-para-1D 92, um motor de codificação por entropia 94 e uma memória de ordem de varredura 96.
[0186] A unidade de seleção de contexto e ordem de varredura 90 seleciona a ordem de varredura a ser utilizada pela unidade de varredura 2D para 1D 92 para a varredura de mapa de significância e a varredura de nível de coeficiente. Como discutido acima, a ordem de varredura consiste tanto em um padrão de varredura como uma direção de varredura. A memória de varredura 96 pode armazenar instruções e/ou dados que definem qual ordem de varredura utilizar para situações específicas. Como exemplos, o modo de predição de um quadro ou fatia, o tamanho de bloco, a transformada, ou outras características dos dados de vídeo utilizados podem ser utilizados para selecionar a ordem de varredura. Em uma proposta para HEVC, cada dos modos de intra predição é atribuído por uma ordem de varredura específica (diagonal de sub-bloco, horizontal ou vertical). O decodificador analisa o modo de intra predição, e determina a ordem de varredura a aplicar utilizando tabela de consulta. Métodos adaptáveis podem ser utilizados para rastrear as estatísticas dos coeficientes significativos mais frequentes. Em outro exemplo, uma varredura pode ser baseada nos coeficientes mais frequentemente utilizados primeiramente em ordem de varredura. Como outro exemplo, a unidade de seleção de contexto e ordem de varredura 90 pode utilizar uma ordem de varredura predeterminada para todas as situações. Como descrito acima, a unidade de seleção de contexto e ordem de varredura 90 pode selecionar uma ordem de varredura tanto para um mapa de significância como uma varredura de nível de coeficiente. De acordo com técnicas dessa revelação, as duas varreduras podem ter a mesma ordem de varredura e em particular, podem ambas estar em uma direção inversa.
[0187] Com base na ordem varredura selecionada, a unidade de seleção de contexto e ordem de varredura 90 também seleciona os contextos a serem utilizados para CABAC no motor de codificação por entropia 94, como os contextos descritos acima com referência à figura 11 e figuras 13-18.
[0188] A unidade de varredura 2D-para-1D 92 aplica as varreduras selecionadas ao conjunto bidimensional de coeficientes de transformada. Em particular, a unidade de varredura 2D-para-1D 92 pode varrer os coeficientes de transformada em subconjuntos, como é descrito acima com referência às figuras 7-9. Em particular, os coeficientes de transformada são varridos em um subconjunto consistindo em um número de coeficientes consecutivos de acordo com a ordem de varredura. Tais subconjuntos são aplicáveis tanto para varredura de mapa de significância como a varredura de nível de coeficiente. Adicionalmente, a unidade de varredura 2D-para-1D 92 pode executar varreduras de coeficiente e mapa de significância como varreduras consecutivas e de acordo com a mesma ordem de varredura. As varreduras consecutivas podem consistir em várias varreduras, como descrito acima. Em um exemplo, a primeira varredura é a varredura de mapa de significância, a segunda varredura é de binário um dos níveis de coeficientes de transformada em cada subconjunto, terceira varredura é dos binários restantes dos níveis de coeficientes de transformada, e a quarta varredura é do sinal dos níveis de coeficientes de transformada.
[0189] O motor de codificação por entropia 94 aplica um processo de codificação por entropia aos coeficientes varridos utilizando o contexto selecionado a partir da unidade de seleção de contexto e ordem de varredura 90. Em alguns exemplos o contexto utilizado para CABAC pode ser predeterminado para todos os casos, e como tal, pode não haver necessidade para um processo ou unidade selecionar os contextos. O processo de codificação por entropia pode ser aplicado aos coeficientes após serem totalmente varridos no vetor 1D, ou à medida que cada coeficiente é adicionado ao vetor 1D. Em outros exemplos, os coeficientes são processados diretamente no conjunto 2D utilizando a ordem de varredura. Em alguns casos, o motor de codificação por entropia 94 pode ser configurado para codificar seções diferentes do vetor 1D em paralelo para promover paralelização do processo de codificação por entropia para velocidade e eficiência aumentadas. O motor de codificação por entropia 94 produz um fluxo de bits carregando o vídeo codificado. O fluxo de bits pode ser transmitido para outro dispositivo ou armazenado em um arquivo de armazenagem de dados para recuperação posterior. Além dos dados de coeficiente de transformada residual, o fluxo de bits pode carregar dados de vetor de movimento e vários elementos de sintaxe úteis na decodificação do vídeo codificado no fluxo de bits.
[0190] Além disso, a unidade de codificação por entropia 56 pode fornecer sinalização no fluxo de bits de vídeo codificado para indicar a ordem de varredura e/ou contextos utilizados no processo CABAC. A ordem de varredura e/ou contextos pode ser sinalizada, por exemplo, como elementos de sintaxe em vários níveis, como o quadro, fatia, LCU, nível de CU ou nível de TU. Se uma ordem de varredura predeterminada e/ou contexto forem definidos, pode não haver necessidade de fornecer sinalização no fluxo de bits codificado. Além disso, em alguns exemplos, pode ser possível para o decodificador de vídeo 30 inferir alguns dos valores de parâmetro sem sinalização. Para permitir definição de ordens de varredura diferentes para TU’s diferentes, pode ser desejável sinalizar tais elementos de sintaxe no nível de TU, por exemplo, em um cabeçalho de quadtree TU. Embora a sinalização no fluxo de bits de vídeo codificado seja descrita para fins de ilustração, informações indicando os valores de parâmetro ou função poderiam ser sinalizadas fora de faixa em informações secundárias.
[0191] Nesse contexto, a sinalização da ordem de varredura e/ou contextos no fluxo de bits codificado não exige transmissão em tempo real de tais elementos a partir do codificado para um decodificador, porém em vez disso significa que tais elementos de sintaxe são codificados no fluxo de bits e são tornados acessíveis ao decodificador em qualquer modo. Isso pode incluir transmissão em tempo real (por exemplo, em conferência de vídeo) bem como armazenar o fluxo de bits codificado em um meio legível por computador para uso futuro por um decodificador (por exemplo, em streaming, downloading, acesso de disco, acesso por cartão, DVD, Blu-ray, etc.).
[0192] Deve ser observado que, embora mostrado como unidades funcionais separadas para facilidade de ilustração, a estrutura e funcionalidade da unidade de seleção de contexto e ordem de varredura 90, a unidade de varredura 2D-para-1D 92, o motor de codificação por entropia 94, e a memória de ordem de varredura 96 podem ser altamente integrados entre si.
[0193] A figura 20 é um bloco de diagramas que ilustra um exemplo de um decodificador de vídeo 30, que decodifica uma sequência de vídeo codificado. No exemplo da figura 20, 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 quantidade de quantização inversa 76, uma unidade de transformada inversa 78, um buffer de quadro de referência 82 e um somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação genericamente recíproca à passagem de codificação descrita com relação ao codificador de vídeo 20 (figura 5).
[0194] A decodificação por entropia 70 decodifica por entropia o vídeo codificado em um processo que é o inverso daquele utilizado por unidade de codificação por entropia 56 da figura 5. 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. O módulo de intrapredição 74 pode gerar dados de predição para um bloco atual de um quadro atual com base em um modo de intrapredição sinalizado e dados a partir dos blocos anteriormente decodificados do quadro atual.
[0195] Em alguns exemplos, a unidade de decodificação por entropia 70 (ou a unidade de quantização inversa 76) pode varrer os valores recebidos utilizando uma varredura espelhando a ordem de varredura utilizada pela unidade de codificação por entropia 56 (ou a unidade de quantização 54) do codificador de vídeo 20. Embora a varredura de coeficientes possa ser realizada na unidade de quantização inversa 76, a varredura será descrita para fins de ilustração como sendo realizada pela unidade de decodificação por entropia 70. Além disso, embora mostrado como unidades funcionais separadas para facilidade de ilustração, a estrutura e funcionalidade da unidade de decodificação por entropia 70, a unidade de quantização inversa 76, e outras unidades do decodificador de vídeo 30 podem ser altamente integradas entre si.
[0196] De acordo com as técnicas dessa revelação, o decodificador de vídeo 30 pode varrer tanto o mapa de significância dos coeficientes de transformada bem como os níveis dos coeficientes de transformada de acordo com a mesma ordem de varredura. Isto quer dizer, a ordem de varredura para o mapa de significância e codificação de nível deve ter o mesmo padrão e direção. Além disso, o codificador de vídeo 30 pode utilizar uma ordem de varredura para o mapa de significância que está na direção inversa. Como outro exemplo, o codificador de vídeo 30 pode utilizar uma ordem de varredura para o mapa de significância a codificação de nível que é harmonizada em uma direção inversa.
[0197] Em outro aspecto dessa revelação, o decodificador de vídeo 30 pode varrer coeficientes de transformada em subconjuntos. Em particular, os coeficientes de transformada são varridos em um subconjunto consistindo em um número de coeficientes consecutivos de acordo com a ordem de varredura. Tais subconjuntos são aplicáveis tanto à varredura de mapa de significância bem como a varredura de nível de coeficiente. Adicionalmente, o decodificador de vídeo 30 pode executar a varredura de mapa de significância e a varredura de nível de coeficiente como varreduras consecutivas de acordo com a mesma ordem de varredura. Em um aspecto, a ordem de varredura é uma ordem de varredura inversa. As varreduras consecutivas podem consistir em várias varreduras. Em um exemplo, a primeira varredura é a varredura de mapa de significância, a segunda varredura é de binário um dos níveis de coeficientes de transformada em cada subconjunto, a terceira varredura é dos binários restantes dos níveis de coeficientes de transformada, e a quarta varredura é do sinal dos níveis de coeficientes de transformada.
[0198] O decodificador de vídeo 30 pode receber, a partir do fluxo de bits codificado, sinalização que identifica a ordem de varredura e/ou contextos utilizados para CABAC pelo codificador de vídeo 20. Adicionalmente, ou alternativamente, a ordem de varredura e contextos pode ser inferida pelo decodificador de vídeo 30 com base em características o vídeo codificado como modo de predição, tamanho de bloco ou outras características. Como outro exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem utilizar ordens de varredura predeterminadas e contextos para todos os casos de uso, e como tal, nenhuma sinalização no fluxo de bits codificado seria necessária.
[0199] Não importa como a ordem de varredura é determinada, a unidade de decodificação por entropia 70 utiliza o inverso da ordem de varredura para varrer o vetor de 1D para dentro do conjunto 2D. o conjunto 2D de coeficientes de transformada produzidos pela unidade de decodificação por entropia 70 pode ser quantizado e pode casar genericamente com o conjunto 2D de coeficientes de transformada varridos pela unidade de codificação por entropia 56 do codificador de vídeo 20 para produzir o vetor de 1D de coeficientes de transformada.
[0200] A unidade de quantização inversa 76 quantiza de forma inversa, isto é, desquantiza, os coeficientes de transformada quantizados fornecidos no fluxo de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantização inversa pode incluir um processo convencional, por exemplo, similar aos processos propostos para HEVC ou definidos pelo padrão de decodificação H.264. o processo de quantização inversa pode incluir o uso de um parâmetro de quantização QP calculado pelo codificador de vídeo 20 para a CU para determinar um grau de quantização e de modo semelhante, um grau de quantização inversa que deve ser aplicado. A unidade de quantização inversa 76 pode quantizar de modo inverso os coeficientes de transformada antes ou após os coeficientes serem convertidos de um vetor 1D para um conjunto 2D.
[0201] O módulo de transformada inversa 78 aplica uma transformada inversa, por exemplo, um DCT inverso, uma transformada de inteiro inverso, um KLT inverso, uma transformada rotacional inversa, uma transformada direcional inversa, ou outra transformada inversa. Em alguns exemplos, o módulo de transformada inversa 78 pode determinar uma transformada inversa com base em sinalização a partir do codificador de vídeo 20 ou por inferir a transformada a partir de uma ou mais características de codificação como tamanho de bloco, modo de codificação, ou similar. Em alguns exemplos, o módulo de transformada inversa 78 pode determinar uma transformada a aplicar no bloco atual com base em uma transformada sinalizada no nó de raiz de um quadtree para uma LCU incluindo o bloco atual. Em alguns exemplos, o módulo de transformada inversa 78 pode aplicar uma transformada inversa em cascata.
[0202] A unidade de compensação de movimento 72 produz blocos de movimento compensado, possivelmente executando interpolação com base em filtros de interpolação. Identificadores para filtros de interpolação a serem utilizados para estimação de movimento com precisão de sub-pixel podem ser incluídos nos elementos de sintaxe. A unidade de compensação de movimento 72 pode utilizar filtros de interpolação como utilizado pelo codificador de vídeo 20 durante codificação do bloco de vídeo para calcular valores interpolados para pixels de sub-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 informações de sintaxe recebidas e utilizar os filtros de interpolação para produzir blocos preditivos.
[0203] A unidade de compensação de movimento 72 e o módulo de intrapredição 74, em um exemplo HEVC, pode utilizar algumas das informações de sintaxe (por exemplo, fornecidas por um quadtree) para determinar tamanhos de LCUs utilizadas para codificar quadro(s) da sequência de vídeo codificada. A unidade de compensação de movimento 72 e o módulo de intrapredição 74 também podem utilizar informações de sintaxe para determinar informações divididas que descrevem como cada CU de um quadro da sequência de vídeo codificada é dividido (e de modo semelhante, como sub- Cus são divididos). As informações de sintaxe também podem incluir modos que indicam como cada divisão é codificada (por exemplo, intra ou interpredição, e para intrapredição um modo de codificação de intrapredição), um ou mais quadros de referência (e/ou listas de referência contendo identificadores para os quadros de referência) para cada PU intercodificada, e outras informações para decodificar a sequência de vídeo codificada.
[0204] O somador 80 combina os blocos residuais com os blocos de predição correspondentes gerados pela unidade de compensação de movimento 72 ou o módulo de intrapredição 74 para formar blocos decodificados. Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados para remover artefatos de bloqueio. Os blocos de vídeo decodificados são então armazenados no buffer de quadro de referência 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 display (como o dispositivo de display 32 da figura 4).
[0205] Como mencionado acima, as técnicas para varrer coeficientes de transformada apresentadas nessa revelação são aplicáveis tanto a um codificador como a um decodificador. Um codificador de vídeo pode aplicar a ordem de varredura para varrer coeficientes de transformada a partir do conjunto bidimensional para o conjunto unidimensional, ao passo que um decodificador de vídeo pode aplicar a ordem de varredura, por exemplo, em um modo inverso ao codificador, para varrer coeficientes de transformada a partir do conjunto unidimensional para o conjunto bidimensional. Alternativamente, um decodificador de vídeo pode aplicar a ordem de varredura para varrer coeficientes de transformada a partir do conjunto unidimensional para o conjunto bidimensional, e um codificador de vídeo pode aplicar a ordem de varredura, em um modo inverso ao decodificador, para varrer coeficientes de transformada a partir do conjunto bidimensional para o conjunto unidimensional. Consequentemente, a varredura por um codificador pode se referir a varredura 2D para 1D por um codificador ou varredura 1D para 2D por um decodificador. Além disso, a varredura de acordo com uma ordem de varredura pode se referir à varredura na ordem de varredura para varredura 2D para 1D, varrendo na ordem de varredura para varredura 1D para 2D, varrendo no inverso da ordem de varredura para varredura 1D para 2D, ou varrendo no inverso da ordem de varredura para varredura 2D para 1D. consequentemente, a ordem de varredura pode ser estabelecida para varredura pelo codificador ou varredura pelo decodificador.
[0206] O decodificador de vídeo 30 pode operar em um modo essencialmente simétrico àquele do codificador de vídeo 20. Por exemplo, o decodificador de vídeo 30 pode receber dados codificados por entropia representativos de uma CU codificada, incluindo dados de TU e PU codificados. O decodificador de vídeo 30 pode codificar por entropia inversa os dados recebidos, formando coeficientes de quantização codificada. Quando o codificador de vídeo 20 codifica por entropia dados utilizando um algoritmo de codificação aritmética (por exemplo, CABAC), o decodificador de vídeo 30 pode utilizar um modelo de contexto para decodificar os dados, que corresponde ao mesmo modelo de contexto utilizado pelo codificador de vídeo 20 para codificar os dados.
[0207] O decodificador de vídeo 30 também pode varrer inverso os coeficientes decodificados, utilizando uma varredura inversa que espelha a varredura utilizada pelo codificador de vídeo 20. Para varrer inverso os coeficientes, o decodificador de vídeo 30 seleciona a mesma ordem de varredura pelo codificador de vídeo 20, que pode ser armazenada no decodificador ou sinalizada pelo codificador no fluxo de bits codificado. Utilizando essa ordem de varredura, o decodificador de vídeo 30 desse modo forma uma matriz bidimensional a partir do vetor unidimensional de coeficientes de transformada quantizada resultando do processo de decodificação por entropia. Em particular, o decodificador de vídeo 30 varre inverso os coeficientes a partir do conjunto unidimensional para um conjunto bidimensional de acordo com a ordem de varredura utilizada pelo codificador de vídeo 20.
[0208] A seguir, o decodificador de vídeo 30 pode quantizar de modo inverso os coeficientes na matriz bidimensional produzida pela varredura inversa realizada de acordo com a ordem de varredura. O decodificador de vídeo 30 pode então aplicar uma ou mais transformadas inversas à matriz bidimensional. As transformadas inversas podem corresponder às transformadas aplicadas pelo codificador de vídeo 20. O decodificador de vídeo 30 pode determinar as transformadas inversas a aplicar com base em, por exemplo, informações sinalizadas na raiz de um quadtree correspondendo a CU atualmente sendo decodificada, ou por referência a outras informações indicativas das transformadas inversas apropriadas. Após aplicação da(s) transformada(s) inversa(s), o decodificador de vídeo 30 recupera os dados de vídeo residuais no domínio de pixel e aplica decodificação intrapreditiva ou interpreditiva, como aplicável, para reconstruir os dados de vídeo originais.
[0209] A figura 21 é um diagrama de blocos que ilustra um exemplo de uma unidade de decodificação por entropia 70 para uso no decodificador de vídeo da figura 20. A figura 21 ilustra vários aspectos funcionais da unidade de decodificação por entropia 70 para selecionar uma ordem de varredura e contextos utilizados para decodificação CABAC em um processo de decodificação de vídeo. Como mostrado na figura 21, a unidade de codificação por entropia 70 pode incluir uma unidade de seleção de contexto e ordem de varredura 100, uma unidade de varredura 1D-para-2D 102, um motor de decodificação por entropia 104 e uma memória de ordem de varredura 106.
[0210] O motor de decodificação por entropia 104 decodifica por entropia vídeo codificado transmitido para o decodificador de vídeo 30 ou recuperado pelo decodificador de vídeo 30 a partir de um dispositivo de armazenagem. Por exemplo, o motor de decodificação por entropia 104 pode aplicar um processo de decodificação por entropia, por exemplo, CAVLC, CABAC ou outro processo, para o fluxo de bits que carrega o vídeo codificado para recuperar o vetor 1D de coeficientes de transformada. Além dos dados de coeficiente de transformada residuais, o motor de decodificação por entropia 104 pode aplicar decodificação por entropia para reproduzir dados de vetor de movimento e vários elementos de sintaxe úteis na decodificação do vídeo codificado no fluxo de bits. O motor de decodificação por entropia 104 pode determinar qual processo de decodificação por entropia, por exemplo, CAVL, CABAC ou outro processo, selecionar com base em sinalização no fluxo de bits codificado ou por inferir o processo apropriado a partir de outras informações no fluxo de bits.
[0211] De acordo com as técnicas dessa revelação, o motor de decodificação por entropia 104 pode decodificar por entropia o vídeo codificado utilizando CABAC de acordo com duas regiões de contexto diferentes. A unidade de seleção de contexto e ordem de varredura 100 pode fornecer a derivação de contexto ao motor de decodificação por entropia 104. De acordo com exemplos dessa revelação, a derivação de contexto para uma primeira região de contexto depende da posição dos coeficientes de transformada enquanto a derivação de contexto para a segunda região depende de vizinhos causais dos coeficientes de transformada. em outro exemplo, a segunda região de contexto pode utilizar dois modelos de contexto diferentes dependendo da localização dos coeficientes de transformada.
[0212] A unidade de seleção de contexto e ordem de varredura 100 pode determinar também a ordem de varredura e/ou uma indicação da ordem de varredura, com base em sinalização no fluxo de bits de vídeo codificado. Por exemplo, a unidade de decodificação por entropia 70 pode receber elementos de sintaxe que sinalizam explicitamente a ordem de varredura. Novamente, embora a sinalização no fluxo de bits de vídeo codificado seja descrito para fins de ilustração, a ordem de varredura pode ser recebida pela unidade de decodificação por entropia 70 como fora de faixa em informações secundárias. Além disso, em alguns exemplos, pode ser possível para a unidade de seleção de contexto e ordem de varredura 100 inferir a ordem de varredura sem sinalização. A ordem de varredura pode ser baseada em modo de predição, tamanho de bloco, transformada, ou outras características do vídeo codificado. Como a memória 96 da figura 19, a memória de ordem de varredura 106 da figura 21 pode armazenar instruções e/ou dados que definem a ordem de varredura.
[0213] A unidade de varredura 1D-para-2D 102 recebe a ordem de varredura a partir da unidade de seleção de contexto e ordem de varredura 100 e aplica a ordem de varredura, diretamente ou em um modo inverso, para controlar a varredura de coeficientes. De acordo com técnicas dessa revelação, a mesma ordem de varredura pode ser utilizada para o mapa de significância e o nível de coeficiente. Em outro aspecto da revelação, a varredura de mapa de significância pode estar em uma direção inversa. Em outro aspecto da revelação, tanto a varredura de mapa de significância como a varredura de nível de coeficiente pode estar na direção inversa.
[0214] De acordo com outro aspecto da revelação, a unidade de varredura 1D-para-2D 102 pode varrer o conjunto unidimensional de coeficientes de transformada em um ou mais subconjuntos de coeficientes de transformada, codificando significância de coeficientes de transformada em cada subconjunto, e codificando níveis de coeficientes de transformada em cada subconjunto. Em outro aspecto da revelação, o mapa de significância e a varredura de nível de coeficiente são realizados em varreduras consecutivas de acordo com a mesma ordem de varredura. Em um aspecto, a ordem de varredura é uma ordem de varredura inversa. As varreduras consecutivas podem consistir em várias varreduras onde a primeira varredura é a varredura de mapa de significância, a segunda varredura é de binário um dos níveis de coeficientes de transformada em cada subconjunto, a terceira varredura é dos binários restantes dos níveis de coeficientes de transformada e a quarta varredura é do sinal dos níveis de coeficientes de transformada.
[0215] No lado codificador, a codificação dos coeficientes de transformada pode compreender codificar os coeficientes de transformada de acordo com a ordem de varredura para formar o conjunto unidimensional dos coeficientes de transformada. No lado decodificador, a codificação do coeficiente de transformada pode compreender decodificar os coeficientes de transformada de acordo com a ordem de varredura para reconstruir um conjunto bidimensional dos coeficientes de transformada no bloco de transformada.
[0216] Deve ser observado que embora mostrado como unidades funcionais separadas para facilidade de ilustração, a estrutura e funcionalidade da unidade de seleção de contexto e ordem de varredura 100, a unidade de varredura 1D-para-2D 102, o motor de decodificação de entropia 104 e a memória de ordem de varredura 106 podem ser altamente integradas entre si.
[0217] A figura 22 é um fluxograma que ilustra um processo de exemplo para mapa de significância e varredura de nível de coeficientes com uma ordem de varredura harmonizada. Um método de codificar uma pluralidade de coeficientes de transformada associados a dados de vídeo residuais em um processo de codificação de vídeo é proposto. O método pode ser realizado por um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30 da figura 4. O codificador de vídeo pode ser configurado para selecionar uma ordem de varredura (120). A ordem de varredura pode ser selecionada com base em modo de predição, tamanho de bloco, transformada ou outras características de vídeo. Além disso, a ordem de varredura pode ser uma ordem de varredura default. A ordem de varredura define tanto um padrão de varredura como uma direção de varredura. Em um exemplo, a direção de varredura é uma direção de varredura inversa que prossegue dos coeficientes de frequência mais elevada na pluralidade de coeficientes de transformada para coeficientes de frequência mais baixa na pluralidade de coeficientes de transformada. O padrão de varredura pode incluir um de um padrão de ziguezague, um padrão diagonal, um padrão horizontal ou um padrão vertical.
[0218] O codificador de vídeo pode ser adicionalmente configurado para codificar informações indicando coeficientes significativos para a pluralidade de coeficientes de transformada de acordo com uma ordem de varredura (122) e determinar contextos para codificar os níveis dos coeficientes significativos para uma pluralidade de subconjuntos dos coeficientes significativos, em que cada da pluralidade de subconjuntos compreende um ou mais coeficientes significativos varridos de acordo com a ordem de varredura (124). O codificador de vídeo também codifica informações indicando níveis da pluralidade de coeficientes de transformada de acordo com a ordem de varredura (126). Os subconjuntos podem ser de tamanhos diferentes. Deve ser observado que as etapas 122, 124 e 126 podem ser intercaladas, visto que a determinação de contextos para informações de nível depende dos coeficientes vizinhos anteriormente codificados.
[0219] A figura 23 é um fluxograma que ilustra outro processos de exemplo para mapa de significância e varredura de nível de coeficientes e derivação de contexto CABAC. O método da figura 23 difere levemente daquele mostrado na figura 22, visto que o contexto de blocos de tamanhos diferentes pode utilizar o mesmo critério de derivação de contexto. Como exemplo, o codificador de vídeo pode derivar um primeiro contexto para um primeiro bloco dos coeficientes de transformada, o primeiro bloco tendo um primeiro tamanho, de acordo com critérios de derivação de contexto, e derivar um segundo contexto para um segundo bloco dos coeficientes de transformada, o segundo bloco tendo um segundo tamanho diferente, de acordo com o mesmo critério de derivação de contexto que o primeiro bloco (123). Como a figura 22, as etapas 122, 123 e 126 podem ser intercaladas, visto que a determinação de contexto para informações de nível depende dos coeficientes vizinhos anteriormente codificados.
[0220] A figura 24 é um fluxograma que ilustra outro processo de exemplo para mapa de significância e varredura de nível de coeficientes e derivação de contexto CABAC. O método da figura 24 difere levemente daquele mostrado na figura 22, visto que os contextos para os subconjuntos são determinados com base na presença do coeficiente DC nos subconjuntos. Como exemplo, o codificador de vídeo pode determinar conjuntos diferentes de contextos para subconjuntos diferentes dos coeficientes com base em se os subconjuntos respectivos contêm um coeficiente DC dos coeficientes de transformada (125). Como a figura 22, as etapas 122, 125 e 126 podem ser intercaladas, visto que a determinação de contextos para informações de nível depende dos coeficientes vizinhos anteriormente codificados.
[0221] A figura 25 é um fluxograma que ilustra outro processo de exemplo para mapa de significância e varredura de nível de coeficientes e derivação de contexto CABAC. O método da figura 25 difere levemente daquele mostrado na figura 22, visto que os contextos são determinados com base em um número ponderal de coeficientes significativos em outros subconjuntos precedentes. Como exemplo, o codificador de vídeo pode determinar conjuntos diferentes de contextos para subconjuntos diferentes dos coeficientes com base em um número de coeficientes significativos em um subconjunto imediatamente precedente dos coeficientes e um número ponderal de coeficientes significativos em outros subconjuntos precedentes dos coeficientes (127). Como a figura 22, as etapas 122, 127 e 126 podem ser intercaladas, visto que a determinação de contextos para informações de nível depende dos coeficientes vizinhos anteriormente codificados.
[0222] A figura 26 é um fluxograma que ilustra um processo de exemplo para codificação de mapa de significância utilizando uma direção de varredura inversa. Um método de codificar coeficientes de transformada associados a dados de vídeo residuais em um processo de codificação de vídeo é proposto. O método pode ser executado por um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30 da figura 4. O codificador de vídeo pode ser configurado para selecionar uma ordem de varredura com uma direção inversa (140) e determinar contextos para codificação aritmética binária adaptável ao contexto (CABAC) das informações indicando um coeficiente atual dos coeficientes significativos com base em coeficientes significativos anteriormente codificados na direção de varredura inversa (142). O codificador de vídeo pode ser adicionalmente configurado para codificar informações indicando os coeficientes de transformada significativa ao longo da direção de varredura inversa para formar um mapa de significância (146).
[0223] Em um exemplo, a varredura tem um padrão diagonal e os coeficientes significativos anteriormente codificados residem em posições à direita de uma linha de varredura na qual um coeficiente atual dos coeficientes significativos reside. Em outro exemplo, a varredura tem um padrão horizontal e os coeficientes significativos anteriormente codificados residem em posições abaixo de uma linha de varredura na qual um coeficiente atual dos coeficientes significativos reside. Em outro exemplo, a varredura tem um padrão vertical e os coeficientes significativos anteriormente codificados residem em posições à direita de uma linha de varredura na qual um coeficiente atual dos coeficientes significativos reside.
[0224] O codificador de vídeo pode ser adicionalmente configurado para codificar informações indicando níveis dos coeficientes de transformada significativos (148). A etapa de codificar informações indicando níveis dos coeficientes de transformada significativos pode prosseguir em uma direção de varredura inversa a partir de coeficientes de frequência mais elevada no bloco de coeficientes de transformada para coeficientes de frequência mais baixa no bloco de coeficientes de transformada. Como a figura 22, as etapas 142, 146 e 148 podem ser intercaladas, visto que a determinação de contextos para informações de nível depende dos coeficientes vizinhos anteriormente codificados.
[0225] A figura 27 é um fluxograma que ilustra um processo de exemplo para mapa de significância e varredura de nível de coeficiente de acordo com subconjuntos de coeficientes de transformada. Um método de codificar coeficientes de transformada associados a dados de vídeo residuais em um processo de codificação de vídeo é proposto. O método pode ser executado por um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30 da figura 4. O codificador de vídeo pode ser configurado para dispor um bloco de coeficientes de transformada em um ou mais subconjuntos de coeficientes de transformada (160), codificar significância de coeficientes de transformada em cada subconjunto (162), e codificar níveis de coeficientes de transformada em cada subconjunto (164). Em um exemplo, a organização do bloco de coeficientes de transformada pode incluir organizar o bloco de coeficientes de transformada em um único conjunto de coeficientes de transformada correspondendo a uma unidade de transformada inteira. Em outro exemplo, a organização do bloco de coeficientes de transformada pode incluir organizar o bloco de coeficientes de transformada em um ou mais subconjuntos de coeficientes de transformada com base em uma ordem de varredura.
[0226] O codificador de vídeo pode ser configurado para codificar a significância de coeficientes de transformada em cada subconjunto de acordo com uma ordem de varredura, e codificar os níveis de coeficientes de transformada de acordo com a ordem de varredura. A codificação do mapa de significância (162) e níveis (164) pode ser realizada junta em duas ou mais passagens de varredura consecutivas no subconjunto (165).
[0227] A figura 28 é um fluxograma que ilustra outro processo de exemplo para mapa de significância e varredura de nível de coeficiente de acordo com subconjuntos de coeficientes de transformada. O codificador de vídeo pode executar as varreduras consecutivas (165) primeiramente por codificar a significância de coeficientes de transformada em um subconjunto em uma primeira varredura de coeficientes de transformada no respectivo subconjunto (170).
[0228] A codificação dos níveis de coeficiente (164) em cada subconjunto inclui pelo menos uma segunda varredura de coeficientes de transformada no respectivo subconjunto. A segunda varredura pode incluir codificar binário dos níveis de coeficientes de transformada em um subconjunto em uma segunda varredura de coeficientes de transformada no respectivo subconjunto (172), codificar binários restantes dos níveis de coeficientes de transformada em um subconjunto em uma terceira varredura de coeficientes de transformada no respectivo subconjunto (174), e codificar um sinal dos níveis de coeficientes de transformada em um subconjunto em uma quarta varredura de coeficientes de transformada no respectivo subconjunto (176).
[0229] A figura 29 é um fluxograma que ilustra outro processo de exemplo para mapa de significância e varredura de nível de coeficiente de acordo com subconjuntos de coeficientes de transformada. Nesse exemplo, a codificação do sinal dos níveis dos coeficientes de transformada (176) é realizada antes da codificação dos níveis (172, 174).
[0230] A figura 30 é um fluxograma que ilustra um processo de exemplo para codificação por entropia utilizando múltiplas regiões. Um método de codificar uma pluralidade de coeficientes de transformada associada a dados de vídeo residual em um processo de codificação de vídeo é proposto. O método pode ser realizado por um codificador de vídeo, como codificador de vídeo 20 ou decodificador de vídeo 30 da figura 4. O codificador de vídeo pode ser configurado para codificar informações indicando coeficientes significativos para a pluralidade de coeficientes de transformada de acordo com uma ordem de varredura (180), dividir as informações codificadas em uma primeira região e uma segunda região (182), codificar por entropia as informações codificadas na primeira região de acordo com um primeiro conjunto de contextos utilizando codificação aritmética binária adaptável ao contexto (184), e codificar por entropia as informações codificadas na segunda região de acordo com um segundo conjunto de contextos utilizando codificação aritmética binária adaptável ao contexto (186). Em um exemplo, a ordem de varredura tem uma direção inversa e um padrão de varredura diagonal. Esse método também pode ser aplicado a mais de duas regiões, em que cada região tem um conjunto de contextos.
[0231] As primeira e segunda regiões podem ser divididas em vários modos. Em um exemplo, a primeira região contém pelo menos o componente DC da pluralidade de coeficientes de transformada, e a segunda região contém a pluralidade restante de coeficientes de transformada não na primeira região.
[0232] Em outro exemplo, a primeira região contém todos os coeficientes de transformada em uma região definida por x+y<T, onde x é a posição horizontal do coeficiente de transformada, y é a posição vertical do coeficiente de transformada, e T é um limite. A primeira região pode conter o coeficiente DC. A segunda região pode conter a pluralidade restante de coeficientes de transformada não na primeira região.
[0233] Em outro exemplo, a primeira região contém todos os coeficientes de transformada em uma região definida por x<T e y<T, onde x é a posição horizontal do coeficiente de transformada, y é a posição vertical do coeficiente de transformada, e T é um limite. A segunda região contém a pluralidade restante de coeficientes de transformada não na primeira região.
[0234] Em outro exemplo, a primeira região contém o coeficiente DC, a segunda região contém todos os coeficientes de transformada (excluindo o coeficiente DC) em uma região definida por x<T e y<T, onde x é a posição horizontal do coeficiente de transformada, y é a posição vertical do coeficiente de transformada, e T é um limite, e as terceiras regiões contêm a pluralidade restante de coeficientes de transformada não na primeira região ou na segunda região. Em outro exemplo, as segunda e terceira regiões descritas acima podem utilizar o mesmo método para derivar contextos, porém conjuntos de contexto diferentes para cada região são utilizados.
[0235] Em outro exemplo, a primeira região inclui o componente DC e os coeficientes de transformada nas posições (1,0) e (0,1). A segunda região contém a pluralidade restante de coeficientes de transformada não na primeira região.
[0236] Em outro exemplo, a primeira região contém somente o componente DC da pluralidade de coeficientes de transformada, e a segunda região contém a pluralidade restante de coeficientes de transformada.
[0237] Em geral, o primeiro contexto para cada coeficiente de transformada na primeira região é baseado na posição de cada coeficiente de transformada na primeira região, enquanto o segundo contexto para cada coeficiente de transformada na segunda região se baseia nas informações codificadas de vizinhos causais de cada coeficiente de transformada. Em alguns exemplos, o segundo contexto é adicionalmente baseado na posição de cada coeficiente de transformada na segunda região. Em outro exemplo, o segundo contexto para cada coeficiente de transformada na segunda região se baseia nas informações codificadas de cinco vizinhos causais de cada coeficiente de transformada.
[0238] A figura 31 ilustra uma ordenação de exemplo de binários 190 para codificar coeficientes de transformada associados a dados de vídeo residuais. Um codificador de vídeo (como codificador de vídeo 20 ou decodificador de vídeo 30) pode codificar binários 190 utilizando dois modos de codificação diferentes. Por exemplo, o codificador de vídeo pode determinar se deve codificar binários 190 utilizando um modo de codificação adaptável ao contexto, por exemplo, CABAC ou outro processo adaptável ao contexto (cada um dos quais é mencionado aqui como um modo “regular”), ou um modo de codificação de desvio (mencionado como modo de desvio). No exemplo mostrado na figura 31, o codificador de vídeo pode codificar binários 192 (blocos não sombreados) em um modo regular e pode codificar binários 194 (blocos sombreados) em um modo de desvio. Os binários 192 codificados no modo regular podem ser mencionados como “binários regulares 192”, cujos pinos 194 codificados no modo de desvio podem ser mencionados como “binários de desvio 194.”
[0239] Para codificar binários 192 em um modo de codificação regular, o codificador de vídeo pode utilizar um modelo de probabilidade adaptável ao contexto, como descrito acima, por exemplo, por utilizar um motor de codificação CABAC normal. Isto é, o modo regular do processo CABAC pode utilizar um modelo de contexto adaptativo, como discutido acima, por exemplo, com relação à unidade de codificação por entropia 56 ou unidade de decodificação por entropia 70. Em contraste, para codificar binários 194 em um modo de desvio, o codificador de vídeo pode utilizar um processo de codificação aritmética simplificado tendo uma probabilidade fixa. Por exemplo, o codificador de vídeo pode codificar binários de desvio 194 com CABAC tendo um contexto fixo como um modo de desvio. Em alguns exemplos, o codificador de vídeo pode codificar binários de desvio 194 utilizando codificação Golomb- Rice e/ou códigos Golomb exponencial como um modo de codificação de desvio. O codificador de vídeo pode determinar se deve utilizar o modo regular ou o modo de desvio com base, por exemplo, em como uniformemente os binários são distribuídos em um bloco de coeficientes de transformada. Em alguns exemplos, o codificador de vídeo pode ser pré-configurado para codificar certos binários em um modo regular e outros binários em um modo de desvio.
[0240] No exemplo mostrado na figura 31, binários 190 incluem B1 (binário 1), B2 (binário 2), binário codificado por desvio GR-EG (Golomb Rice - Golomb exponencial), S (sinal) e cu_header, todos os quais podem ser fornecidos em uma CU. Binários 190 podem corresponder aos seguintes elementos de sintaxe: B1 pode corresponder a coeff_abs_level_greater1_flag, B2 pode corresponder a coeff_abs_level_greater2_flag, GR-EG pode corresponder a coeff_abs_level_minus3, S pode corresponder a coeff_sign_flag e cu_header pode corresponder a todos os outros elementos de sintaxe na CU. Isto é, em geral, binário 1 para um coeficiente de transformada específico pode identificar se o coeficiente de transformada específico tem um valor que é maior do que 1. De modo semelhante, binário 2 para um coeficiente de transformada específico pode identificar se o coeficiente de transformada específico tem um valor que é maior do que 2. Em outros exemplos, um número maior ou menos de elementos de sintaxe pode ser representado com binários 190.
[0241] Como observado acima, em um exemplo e como proposto para uso com o padrão HEVC, um codificador de vídeo pode codificar coeficientes de transformada em múltiplas passagens de codificação, que podem ser mencionadas como varreduras. Por exemplo, o codificador de vídeo pode executar uma primeira passagem em uma ordem de varredura de mapa de significância em uma TU total para codificar a significância de coeficientes de transformada na TU. O codificador de vídeo pode então executar três passagens adicionais para subconjuntos de coeficientes de transformada em uma ordem de varredura de nível de coeficiente. Essas três passagens podem incluir: uma primeira passagem para um primeiro binário (binário 1) do valor absoluto do nível de coeficiente, uma segunda passagem para um segundo binário (binário 2) do valor absoluto do nível de coeficiente, e uma terceira passagem para o valor restante do nível de coeficiente e o sinal do nível de coeficiente. Novamente, em alguns exemplos, cada das três passagens de nível de coeficiente pode ser realizada em subconjuntos de n (por exemplo, n = 16) coeficientes consecutivos em ordem de varredura, como descrito acima. Quando as três passagens foram concluídas em um subconjunto, o codificador de vídeo pode sequencialmente processar o subconjunto seguinte por executar as mesmas três passagens de codificação. Essa abordagem de codificação de subconjunto pode facilitar a paralelização de codificação para os níveis dos coeficientes de transformada.
[0242] De acordo com alguns aspectos dessa revelação, como observado acima, o codificador de vídeo pode aumentar adicionalmente a paralelização e toda a codificação de dados residuais (por exemplo, utilizando um processo de codificação adaptável ao contexto, como CABAC) através de aperfeiçoamentos adicionais na reordenação de dados. Por exemplo, como descrito acima, o codificador de vídeo pode executar uma ou mais passagens para codificar a significância de coeficientes de transformada em um subconjunto (por exemplo, seguindo uma ordem de varredura). O codificador de vídeo pode então executar uma ou mais passagens adicionais para codificar o nível de coeficiente dos coeficientes no subconjunto (por exemplo, seguindo a mesma ordem de varredura). A ordem de varredura pode ser caracterizada por uma direção de varredura (avançada ou inversa) e padrão de varredura (por exemplo, horizontal, vertical, diagonal, ziguezague ou similar). Em geral. Uma passagem pode se referir a uma varredura dos coeficientes em um subconjunto ou uma unidade de transformada inteira de acordo com a ordem de varredura. Em exemplos nos quais subconjuntos são utilizados, o codificador de vídeo pode realizar as passagens em uma base de subconjunto por subconjunto, com um subconjunto contendo qualquer conjunto de n coeficientes de transformada (por exemplo, n = 16 coeficientes consecutivos em uma ordem de varredura contínua). Além disso, o codificador de vídeo pode executar as passagens sequencialmente em cada subconjunto. Embora o uso de subconjuntos unidimensionais compreendendo coeficientes consecutivamente varridos possa ser utilizado em algumas instâncias, o processo de codificação também pode ser aplicado a sub-blocos, como sub- blocos 4x4.
[0243] Em um exemplo, além das três passagens de codificação descritas acima, o codificador de vídeo pode executar uma quarta passagem de codificação para informações de significância. Isto é, além de executar três passagens de codificação descritas acima para níveis de coeficiente, o codificador de vídeo pode executar uma passagem de codificação adicional a codificar informações de significância. Por conseguinte, em um exemplo, o codificador de vídeo pode executar as seguintes quatro passagens: (1) codificar valores de indicador de coeficiente significativo para os coeficientes de transformada, por exemplo, associados a um mapa significativo, (2) codificar binário 1 e binário 2 de valores de nível para coeficientes de transformada, (3) codificar binários restantes dos valores de nível de coeficiente, e (4) codificar os sinais dos níveis de coeficiente, todos na mesma ordem de varredura. O codificador de vídeo pode varrer indicadores de coeficiente significativo e níveis para os coeficientes de transformada na mesma ordem de varredura, onde a ordem de varredura prossegue de um coeficiente de frequência elevada para um coeficiente de baixa frequência.
[0244] Quando o codificador de vídeo executa as três ou quatro passagens de codificação acima descritas, entretanto, o codificador de vídeo pode codificar alguns binários regulares 192 com binários de desvio 194 durante a passagem de codificação final. Isto é, no exemplo mostrado na figura 31, binários regulares B2 são intercalados com binários de desvio GR-EG e S na sequência de binários. Por conseguinte, o codificador de vídeo deve comutar entre modo regular e modo de desvio durante a passagem de codificação final. A comutação entre modos de codificação pode, em certos casos, impactar negativamente desempenho de codificação.
[0245] A figura 32 ilustra uma ordenação de exemplo de binários 200 para codificar coeficientes de transformada associados a dados de vídeo residuais. Como descrito com relação ao exemplo mostrado na figura 31, um codificador de vídeo (como codificador de vídeo 20 ou decodificador de vídeo 30) pode codificar binários 200 utilizando dois modos de codificação diferentes, incluindo um modo regular (por exemplo, CABAC ou outro modo adaptável ao contexto) e um modo de desvio. O modo de desvio pode ser um modo que não é adaptável ao contexto. Por exemplo, o modo de desvio pode ser um modo de codificação aritmética binária de contexto fixo, um modo de codificação Golomb Rice, um modo de codificação Golomb exponencial, ou qualquer combinação dos mesmos. No exemplo mostrado na figura 32, o codificador de vídeo pode codificar binários 202 (blocos não sombreados) em um modo regular e pode codificar binários 204 (blocos sombreados) em um modo de desvio. Binários 202 codificados no modo regular pode ser mencionados como “binários regulares” 202, enquanto binários 204 codificados no modo de desvio podem ser mencionados como “binários de desvio 204.”
[0246] No exemplo mostrado na figura 32, binários 200 incluem informações de significância, B1 (binário 1), B2 (binário 2), GR-ERG (Golomb Rice - Golomb exponencial), S (sinal) e cu_header, todos os quais podem ser fornecidos em uma unidade de codificação (CU). Binários 200 podem corresponder aos seguintes elementos de sintaxe: SIG pode corresponder a indicadores de significância, B1 pode corresponder a coeff_abs_level_greater1_flag, B2 pode corresponder a coeff_abs_level_greater2_flag, GR-EG pode corresponder a coeff_abs_level_minus3, S pode corresponder a coeff_sign_flag e cu_header pode corresponder a todos os outros elementos de sintaxe na CU. Em outros exemplos, um número maior ou menos de elementos de sintaxe pode ser representado com binários 200.
[0247] No exemplo mostrado na figura 32, o codificador de vídeo pode executar passagens de codificação em um modo que agrupa binários regulares 202 (isto é, binários codificados em modo regular) e binários de desvio 204 (isto é, binários codificados em modo de desvio). Isto é, o codificador de vídeo pode executar passagens para codificar significância (SIG), um primeiro binário (binário 1) e um segundo binário (binário 2) de níveis de coeficiente, que são ambos codificados em um modo regular, antes de executar passagens para codificar sinal (S) e o nível restante (GR-EG), que são ambos codificados em modo de desvio. Desse modo, os elementos codificados de desvio, como os binários para o sinal e nível restante podem ser agrupados juntos. Isto é, os binários de desvio podem estar em uma ordem de codificação consecutiva que não é separada por binários codificados em um modo regular. Em alguns exemplos, como descrito com relação ao exemplo da figura 31, o codificador de vídeo pode executar as passagens de codificação nos binários 200 em subconjuntos de n (por exemplo, n = 16) coeficientes consecutivos em ordem de varredura, como descrito acima. Quando o codificador de vídeo tiver concluído a codificação de um subconjunto de coeficientes de transformada, o codificador de vídeo pode sequencialmente processar o subconjunto seguinte por executar as mesmas passagens de codificação.
[0248] O agrupamento de binários de desvio 204 juntos durante codificação pode maximizar a capacidade de transmissão, porque binários de desvio 204 não exigem busca de contexto e adaptação. Além disso, o codificador de vídeo não tem de comutar entre modo regular e modo de desvio. Como resultado, muitos binários de desvio 204 podem ser codificados em um ciclo único.
[0249] De acordo com aspectos dessa revelação, o codificador de vídeo pode executar as informações de significância e passagens de codificação de nível de coeficiente, como descrito acima, bem como agrupar binários codificados regulares e desviar binários codificados. Isto é, por exemplo, o codificador de vídeo pode primeiramente codificar a significância de coeficientes de transformada em um subconjunto (Por exemplo, seguindo uma ordem de varredura), seguido pelo nível de coeficiente dos coeficientes no subconjunto (por exemplo, seguindo a mesma ordem de varredura) como descrito com relação à figura 31. Além disso, o codificador de vídeo pode agrupar binários codificadores regulares e binários codificados de desvio, como mostrado na figura 32.
[0250] Em um exemplo, para cada subconjunto em um bloco de coeficientes de transformada, o codificador de vídeo pode executar as seguintes passagens: (1) codificar a significância dos coeficientes no subconjunto de acordo com uma ordem de varredura, (2) codificar binário 1 do nível de coeficiente dos coeficientes no subconjunto de acordo com a ordem de varredura, (3) codificar binário 2 do nível de coeficiente dos coeficientes no subconjunto de acordo com a ordem de varredura, e (4) codificar binários que utilizam modo de desvio (isto é, o restante do valor absoluto do nível de coeficiente e o sinal do nível de coeficiente dos coeficientes) no subconjunto de acordo com a ordem de varredura.
[0251] No exemplo acima, informações de significância são codificadas para coeficientes de transformada em um conjunto de coeficientes de transformada de acordo com uma ordem de varredura em uma primeira passagem. Um primeiro conjunto de um ou mais binários (por exemplo, binário 1 e binário 2) de informações para os coeficientes de transformada é codificado de acordo com a ordem de varredura em uma ou mais segundas passagens diferentes da primeira passagem. Um ou mais binários (binário 1 e binário 2) no primeiro conjunto são codificados em um primeiro modo, por exemplo, um modo regular, de um processo de codificação (por exemplo, um processo CABAC). Um segundo conjunto de um ou mais binários de informações (por exemplo, valor absoluto restante e sinal do nível de coeficiente dos coeficientes) para os coeficientes de transformada são codificados de acordo com a ordem de varredura em uma ou mais terceiras passagens diferentes das primeira e segunda passagens. O segundo conjunto de um ou mais binários são codificados em um segundo modo, por exemplo, um modo de desvio, do processos de codificação.
[0252] Em outro exemplo, como descrito acima com relação às figuras 7-9 acima, a quarta passagem descrita acima pode ser dividida em duas passagens separadas (por exemplo, uma para a porção restante do nível e uma para o sinal do nível). Isto é, o codificador de vídeo pode executar as seguintes passagens: (1) codificação de valores de indicador de coeficiente significativo para os coeficientes de transformada (2) codificar binário 1 de valores de nível para coeficientes de transformada, (3) codificar binário 2 de valores de nível para coeficientes de transformada, (4) codificar os sinais dos níveis de coeficiente (por exemplo, no modo de desvio) e (5) codificar binários restantes dos valores de nível de coeficiente (por exemplo, no modo de desvio) todas as passagens utilizando a mesma ordem de varredura.
[0253] Ainda em outros exemplos, o codificador de vídeo pode utilizar um número menor de passagens para codificar os coeficientes de transformada. Por exemplo, o codificador de vídeo pode executar uma varredura de duas passagens onde nível e informações de sinais são processados em paralelo. Nesse exemplo, o codificador de vídeo pode executar as seguintes passagens: (1) codificar binários regulares (por exemplo, significância, nível de binário 1, e nível de binário 2), e (2) codificar binários de desvio (Por exemplo, níveis restantes e sinal), cada passagem utilizando a mesma ordem de varredura.
[0254] Nesses exemplos, os binários de desvio são agrupados juntos. Isto é, os binários de desvio são codificados sem serem separados por quaisquer binários regulares na sequência de bin. Em outros exemplos, binários diferentes podem ser codificados por contexto ou codificados por desvio. Em tais exemplos, o codificador de vídeo pode executar passagens de codificação similares nas quais binários regulares são codificados antes dos binários de desvio, ou vice versa, de tal modo que binários de desvio sejam agrupados. Em alguns exemplos, como observado acima, o codificado de vídeo pode iniciar a varredura a partir do último coeficiente significativo no bloco.
[0255] O processamento de todos os dados de coeficiente de transformada em subconjuntos (por exemplo, subconjuntos de 16 coeficientes de transformada em ordem de varredura) pode beneficiar paralelização de codificação. Isto é, enquanto um subconjunto está sendo codificado, o codificador de vídeo pode também pré-computar os contextos CABAC para o subconjunto seguinte. Por conseguinte, o codificador de vídeo pode estar pronto para iniciar a codificação do subconjunto seguinte quando o subconjunto anterior termina de ser codificado. Além disso, a busca de dados é limitada ao tamanho do subconjunto (por exemplo, 16 coeficientes de cada vez), que pode ter benefícios em algumas arquiteturas de hardware.
[0256] As varreduras descritas acima, entretanto, não são limitadas a serem realizadas em subconjuntos de coeficientes de transformada em uma TU. Por exemplo, cada passagem de codificação descrita acima pode ser realizada para um conjunto de coeficientes de transformada que inclui a TU inteira (isto é, todos os coeficientes de transformada da TU). Nesse exemplo, cada varredura pode estender através da TU inteira. Por conseguinte, em um exemplo, o codificador de vídeo pode executar as seguintes passagens: (1) codificar a significância dos coeficientes na TU de acordo com a ordem de varredura, (2) codificar binário 1 do nível de coeficiente dos coeficientes na TU de acordo com a ordem de varredura, (3) codificar binário 2 do nível de coeficiente dos coeficientes na TU de acordo com a ordem de varredura, e (4) codificar binários que utilizam modo de desvio (por exemplo, o resto do valor absoluto do nível de coeficiente e o sinal do nível de coeficiente dos coeficientes) na TU de acordo com a ordem de varredura. Em outro exemplo, como descrito acima, o codificador de vídeo pode dividir a quarta passagem em duas passagens separadas (por exemplo, uma para o resto do nível e uma para o sinal do nível). Nesse exemplo, os binários de desvio são ainda para serem agrupados juntos.
[0257] Em exemplos nos quais as passagens de codificação são realizadas na TU inteira, o codificador de vídeo faz essencialmente o tamanho de subconjunto igual ao tamanho de TU. Essa abordagem pode perder algumas das capacidades de paralelização descritas acima para subconjuntos relativamente pequenos (de n coeficientes, onde n pode ser, por exemplo, 16). Entretanto, a execução das passagens de codificação na TU inteira pode ter outros benefícios que poderiam superar a perda de paralelização. Por exemplo, o agrupamento de todos os binários de desvio em uma TU juntos no final da codificação de dados residuais pode aumentar a capacidade de transmissão, como descrito acima, porque muitos binários de desvio podem ser codificados em um ciclo único. Isto é, o codificador de vídeo pode codificar todos os binários que são codificados em um modo regular antes de codificar os binários que são codificados em um modo de desvio.
[0258] Além disso, quando o codificador de vídeo executa as passagens de codificação na TU inteira, cada elemento de sintaxe é codificado separadamente a partir do resto dos elementos de sintaxe na TU. Por exemplo, primeiramente, o codificador de vídeo codifica todas as informações de significância para os coeficientes. O codificador de vídeo então codifica todos os binários 1 do nível de coeficiente, seguido por todos do binário 2 do nível de coeficientes, seguido pelos binários de desvio (por exemplo, nível de coeficiente restante e sinal, que podem ser separados em duas passagens ou codificados na mesma passagem). Consequentemente, os elementos de sintaxe para uma TU podem ser incluídos juntos em uma sequência de binário, separadamente de outros elementos de sintaxe, em vez de em um modo intercalado com outros elementos de sintaxe. Evitar a intercalação de elementos de sintaxe pode beneficiar um processo de codificação especulativo. Isto é, em alguns casos, o codificador de vídeo pode executar codificação especulativa (para codificação paralela). Em tais instâncias, o codificador de vídeo pode estimar certos valores de binário para pré-computar valores. O codificador de vídeo pode beneficiar de conhecer um elemento de sintaxe a ser processado antecipadamente, porque um número menor de estimativas para os binários seguintes (não codificados) é exigido. A separação atinge seu máximo em uma TU quando cada elemento de sintaxe é separado para a TU inteira a partir do resto dos elementos de sintaxe. Em tais instâncias, o codificador de vídeo pode executar codificação especulativa e maximizar o número de binários que podem ser codificados em paralelo.
[0259] A figura 33 é um fluxograma que ilustra um processo de codificação de vídeo de exemplo para codificar coeficientes de transformada associados a dados de vídeo residuais. Embora o exemplo mostrado na figura 33 seja descrito genericamente com relação a um codificador de vídeo (como codificador de vídeo 20 e/ou decodificador de vídeo 30), deve ser entendido que as técnicas podem ser realizadas por uma variedade de outros processadores, unidades de processamento, unidades de codificação baseadas em hardware como codificador/decodificadores (CODECs) e similares. Além disso, embora o exemplo mostrado na figura 33, genericamente se refira a “coeficientes de transformada”, deve ser entendido que em algumas instâncias, um codificador de vídeo pode não executar transformação em dados residuais, e em vez disso executar quantização diretamente em valores residuais (por exemplo, ao executar um “modo de pular transformada”). Por conseguinte, “coeficientes de transformada” podem incluir genericamente dados de vídeo residuais transformados bem como não transformados.
[0260] No exemplo mostrado na figura 33, um codificador de vídeo codifica informações de significância (por exemplo, um mapa de significância) para coeficientes de transformada em um conjunto de coeficientes de transformada associado a dados de vídeo residuais de acordo com uma ordem de varredura em uma ou mais primeiras passagens (210). Em alguns exemplos, o conjunto de coeficientes de transformada pode corresponder a um subconjunto de coeficientes de transformada que inclui menos do que todos os coeficientes de transformada em uma TU. Por exemplo, o subconjunto pode incluir n coeficientes, onde n é menor do que o número de coeficientes de transformada na TU. Em um exemplo, n pode ser 16 coeficientes de transformada. Em outros exemplos, o conjunto de coeficientes de transformada pode corresponder a um conjunto inteiro de coeficientes de transformada em uma TU (isto é, todos os coeficientes de transformada na TU).
[0261] O codificador de vídeo pode também codificar um primeiro conjunto de um ou mais binários de informações para os coeficientes de transformada de acordo com a ordem de varredura em uma ou mais segundas passagens, onde uma ou mais segundas passagens são diferentes de uma ou mais primeiras passagens, e onde o primeiro conjunto de um ou mais binários são codificados em um primeiro modo de um processo de codificação (212). Por exemplo, o primeiro conjunto de um ou mais binários de informações pode incluir informações de nível associadas aos coeficientes de transformada. Além disso, o primeiro modo do processo de codificação pode ser um modo regular de um processo de codificação adaptável ao contexto, como CABAC. Por conseguinte, o codificador de vídeo pode codificar certas informações de nível associadas aos coeficientes de transformada na mesma ordem de varredura que as informações de significância, e no modo regular. Em alguns exemplos, o modo de codificação regular também pode ser utilizado para codificar as informações de significância.
[0262] Além disso, o codificador de vídeo pode codificar um segundo conjunto de um ou mais binários de informações para os coeficientes de transformada de acordo com a ordem de varredura em uma ou mais terceiras passagens, onde uma ou mais terceiras passagens são diferentes de uma ou mais primeira e segunda passagens, e onde o segundo conjunto de um ou mais binários são codificados em um segundo modo do processos de codificação (214). Por exemplo, o segundo conjunto de um ou mais binários de informações pode incluir informações de nível restante associadas aos coeficientes de transformada que não são incluídas no primeiro conjunto de um ou mais binários. Além disso, o segundo do processo de codificação pode ser um modo de desvio de um processo de codificação adaptável ao contexto, como CABAC. O modo de desvio pode utilizar um contexto fixo. Em alguns exemplos, binários de desvio podem ser codificados utilizando codificação Golomb-Rice e/ou códigos Golomb exponencial. Por conseguinte, o codificador de vídeo pode codificar certas informações de nível restantes associadas aos coeficientes de transformada na mesma ordem de varredura que as informações de significância e o primeiro conjunto de um ou mais binários, porém no modo de desvio. Isto é, os binários codificados utilizando modo de desvio podem ser agrupados em ordem de codificação, sem serem separados por binários codificados em um modo regular.
[0263] Por conseguinte, pelo menos em um exemplo, o codificador de vídeo pode executar um processo de codificação de quatro passagens para codificar coeficientes de transformada associados a um bloco de dados de vídeo residuais. Por exemplo, como descrito acima com relação às figuras 7-9, o codificador de vídeo pode executar as seguintes passagens: 1. Codificar a significância dos coeficientes no subconjunto; 2. Codificar binário 1 do nível de coeficiente dos coeficientes no subconjunto; 3. Codificar binário 2 do nível de coeficiente dos coeficientes no subconjunto; 4. Codificar binários que utilizam modo de desvio (por exemplo, o restante do valor absoluto do nível de coeficiente e sinal do nível de coeficiente dos coeficientes) no subconjunto.
[0264] Nesse exemplo, o primeiro conjunto de um ou mais binários pode incluir binário 1 e binário 2, que o codificador de vídeo pode codificar utilizando um modo regular (por exemplo, utilizando CABAC, CAVL, PIPE ou similar), enquanto codifica os binários restantes em modo de desvio. Além disso, o segundo conjunto de um ou mais binários pode incluir os binários que utilizam modo de desvio. Isto é, o codificador de vídeo pode agrupar binário 3 até binário n (com binário n representando o binário final) juntos e codificar os binários em uma única passagem. Em outros exemplos, o codificador de vídeo pode utilizar um número maior ou menor de passagens para codificar os coeficientes de transformada. Por exemplo, o codificador de vídeo pode codificar o primeiro conjunto de um ou mais binários em uma única primeira passagem e o segundo conjunto de um ou mais binários em uma segunda passagem. Em outro exemplo, a quarta passagem descrita acima pode ser dividida em duas passagens separadas (para sinal e nível restante).
[0265] O agrupamento de binários codificados utilizando o segundo modo de codificação (por exemplo, binários de desvio) pode aumentar a eficiência de codificação e capacidade de transmissão. Por exemplo, em vez de ter de esperar por um modelo de contexto ser atualizado após cada binário ser codificado (por exemplo, como é necessário para codificação adaptável ao contexto), binários de desvio podem ser imediatamente codificados em sucessão (por exemplo, devido à probabilidade fixa utilizada para codificação de desvio). Além disso, enquanto um conjunto de binários de desvio está sendo codificado, o codificador de vídeo pode pré-computar os contextos para o conjunto seguinte de binários de desvio. Por conseguinte, o codificador de vídeo está pronto para começar o processo de codificação quando os binários anteriores terminam.
[0266] Como observado acima, o conjunto de coeficientes de transformada pode corresponder a um subconjunto de coeficientes de transformada que inclui menos de todos os coeficientes de transformada em uma TU. Em tais exemplos, pode haver um benefício para algumas arquiteturas de hardware. Por exemplo, a codificação de coeficientes de transformada em subconjuntos pode ser mais eficiente em termos de utilização de memória, porque menos dados devem ser armazenados e acessados durante codificação. Além disso, o codificador de vídeo pode codificar um ou mais dos subconjuntos em paralelo.
[0267] Em outros exemplos, o conjunto de coeficientes de transformada pode corresponder a um conjunto inteiro de coeficientes de transformada em uma TU (isto é, todos os coeficientes de transformada na TU). A codificação dos coeficientes de transformada para uma TU inteira pode resultar na perda de alguma compatibilidade de paralelização. Pode haver alguns benefícios, entretanto, para codificar os coeficientes de transformada para uma TU. Por exemplo, agrupamento de todos os binários de desvio para uma TU inteira juntos no final da codificação de dados residuais pode aumentar a capacidade de transmissão, como descrito acima. Além disso, o codificador de vídeo pode executar codificação especulativa de certos elementos de sintaxe, como descrito acima.
[0268] Deve ser entendido que as etapas mostradas e descritas com relação à figura 33 são fornecidas meramente como um exemplo. Isto é, as etapas do método da figura 33 não precisam necessariamente ser realizadas na ordem mostrada na figura 33, e um número de etapas ou etapas adicionais ou alternativas podem ser realizadas.
[0269] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementado em software, as funções podem ser armazenadas ou transmitidas através como uma ou mais instruções ou código em um meio legível em computador e executadas por uma unidade de processamento baseado em hardware. Mídia legível em computador pode incluir mídia de armazenagem legível em computador, que corresponde a um meio tangível como mídia de armazenagem de dados, ou mídia de comunicação incluindo qualquer meio que facilita transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desse modo, mídia legível em computador genericamente pode corresponder a (1) mídia de armazenagem legível em computador tangível que é não transitória ou (2) um meio de comunicação como um sinal ou onda portadora. Mídia de armazenagem de dados pode ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa revelação. Um produto de programa de computador pode incluir um meio legível em computador.
[0270] Como exemplo, e não limitação, tal mídia de armazenagem legível em computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outra armazenagem de disco óptica, armazenagem de disco magnética, ou outros dispositivos de armazenagem magnética, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente denominada um meio legível em computador. Por exemplo, se instruções forem transmitidas de um website, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra ótica, par torcido, linha de assinante digital (DSL), ou tecnologias sem fio como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra óptica, par torcido, DSL ou tecnologias sem fio como infravermelho, rádio, e micro-ondas são incluídas na definição de meio. Deve ser entendido, entretanto, que mídia de armazenagem legível em computador e mídia de armazenagem de dados não incluem conexões, ondas portadoras, sinais ou outra mídia transitória, porém são em vez disso dirigidas para mídia de armazenagem tangível, não transitória. Disk e disc, como utilizado aqui, incluem compact disc (CD), disc laser, disco óptico, digital versatile disc (DVD), disco flexível e disco Blu-ray, onde disks normalmente reproduzem dados magneticamente enquanto discs reproduzem dados opticamente com lasers. As combinações dos acima devem ser também incluídas no escopo de mídia legível em computador.
[0271] Instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de siais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), disposições de lógica programável em campo (FPGAs) ou outro conjunto de circuitos de lógica discreta ou integrada equivalente. Por conseguinte, o termo “processador” como utilizado aqui pode se referir a qualquer da estrutura acima ou qualquer outra estrutura apropriada para implementação das técnicas descritas aqui. Além disso, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida em módulos de hardware e/ou software dedicados configurados para codificar e decodificar, ou incorporada em um codec combinado. Além disso, as técnicas poderiam ser totalmente implementadas em um ou mais circuitos ou elementos de lógica.
[0272] As técnicas dessa revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo computadores de mesa, computadores notebook (isto é, laptop), computadores tablete, conversores de sinais de frequência, aparelhos telefônicos como os denominados smartphones, televisões, câmeras, dispositivos de display, tocadores de mídia digital, consoles de videogame, ou similares. Em muitos casos, tais dispositivos podem ser equipados para comunicação sem fio. Além disso, tais técnicas podem ser implementadas por um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Um dispositivo configurado para executar as técnicas dessa revelação pode incluir quaisquer dos dispositivos mencionados acima e, em alguns casos, pode ser um codificador de vídeo ou decodificador de vídeo, ou codificador-decodificador de vídeo combinado, isto é, um CODEC de vídeo, que pode ser formado por uma combinação de hardware, software e firmware. Vários componentes, módulos ou unidades podem ser descritas nessa revelação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas reveladas, porém não necessariamente exigem realização por diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores como descrito acima, em combinação com software e/ou firmware apropriado.
[0273] Vários exemplos foram descritos. Esses e outros exemplos estão compreendidos no escopo das reivindicações a seguir.

Claims (30)

1. Método para codificar coeficientes de transformada associados a dados de vídeo residuais em um processo de codificação de vídeo, o método CARACTERIZADO pelo fato de que compreende: codificar um subconjunto de coeficientes de transformada associados aos dados de vídeo residuais que compreendem menos do que todos os coeficientes de transformada de um bloco usando uma pluralidade de passagens, em que cada passagem da pluralidade de passagens compreende uma varredura do subconjunto de coeficientes de transformada em uma ordem de varredura, em que a ordem de varredura compreende uma ordem na qual o subconjunto de coeficientes de transformada são processados durante codificação e em que codificar o subconjunto de coeficientes de transformada compreende: codificar informações de significância para o subconjunto de coeficientes de transformada usando um primeiro modo de um processo de codificação em uma ou mais primeiras passagens; codificar um primeiro binário e um segundo binário de níveis dos coeficientes de transformada para o subconjunto de coeficientes de transformada usando o primeiro modo do processo de codificação em uma ou mais segundas passagens, em que as uma ou mais segundas passagens são separadas das uma ou mais primeiras passagens; e codificar binários (bins) restantes dos níveis dos coeficientes de transformada e um sinal dos níveis dos coeficientes de transformada para o subconjunto de coeficientes de transformada usando um segundo modo do processo de codificação em uma ou mais terceiras passagens, em que as uma ou mais terceiras passagens são separadas das uma ou mais primeiras e segundas passagens.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o primeiro modo é um modo regular de um processo de Codificação Aritmética Binária Adaptável ao Contexto (CABAC) e o segundo modo é um modo de desvio do processo CABAC.
3. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que o modo regular do processo CABAC utiliza um modelo de contexto adaptativo para codificar binários e o modo de desvio do processo CABAC utiliza probabilidades fixas para codificar binários.
4. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que compreende ainda repetir a codificação para cada um dentre uma pluralidade de subconjuntos de coeficientes de transformada no bloco, em que cada subconjunto compreende menos do que todos do conjunto inteiro de coeficientes de transformada no bloco.
5. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que cada um dentre os subconjuntos compreende dezesseis coeficientes consecutivos na ordem de varredura.
6. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que cada um dentre os subconjuntos compreende um sub-bloco de coeficientes de transformada na ordem de varredura.
7. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que as informações de significância das uma ou mais primeiras passagens e o primeiro binário e o segundo binário dos níveis das uma ou mais segundas passagens são agrupados juntamente para codificação para o subconjunto.
8. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que codificar compreende codificar (encoding), e em que codificar (encoding) compreende incluir informações que representam as informações de significância, o primeiro binário e o segundo binário dos níveis dos coeficientes de transformada, os binários restantes dos níveis dos coeficientes de transformada e o sinal dos níveis dos coeficientes de transformada em um fluxo de bits codificado (encoded).
9. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que codificar compreende decodificar, e em que decodificar compreende receber informações que representam as informações de significância, o primeiro binário e o segundo binário dos níveis dos coeficientes de transformada, os binários restantes dos níveis dos coeficientes de transformada e o sinal dos níveis dos coeficientes de transformada em um fluxo de bits codificado (encoded).
10. Método, de acordo com a reivindicação 9, CARACTERIZADO pelo fato de que decodificar compreende ainda: determinar coeficientes de transformada para um bloco de dados de vídeo a partir das informações que representam as informações de significância, o primeiro binário e o segundo binário dos níveis dos coeficientes de transformada, os binários restantes dos níveis dos coeficientes de transformada e o sinal dos níveis dos coeficientes de transformada; aplicar uma transformada inversa aos coeficientes de transformada determinados para gerar um bloco de dados de vídeo residuais; e combinar o bloco de dados de vídeo residuais com um bloco preditivo de dados de vídeo para formar um bloco reconstruído de dados de vídeo.
11. Aparelho para codificar coeficientes de transformada associados a dados de vídeo residuais, o aparelho CARACTERIZADO pelo fato de que compreende: meios para codificar um subconjunto de coeficientes de transformada associados aos dados de vídeo residuais que compreendem menos do que todos os coeficientes de transformada de um bloco usando uma pluralidade de passagens, em que cada passagem da pluralidade de passagens compreende uma varredura do subconjunto de coeficientes de transformada em uma ordem de varredura, em que a ordem de varredura compreende uma ordem na qual o subconjunto de coeficientes de transformada são processados durante codificação e em que os meios para codificar o subconjunto de coeficientes de transformada compreendem: meios para codificar informações de significância para o subconjunto de coeficientes de transformada usando um primeiro modo de um processo de codificação em uma ou mais primeiras passagens; meios para codificar um primeiro binário e um segundo binário de níveis dos coeficientes de transformada para o subconjunto de coeficientes de transformada usando o primeiro modo do processo de codificação em uma ou mais segundas passagens, em que as uma ou mais segundas passagens são separadas das uma ou mais primeiras passagens; e meios para codificar binários restantes dos níveis dos coeficientes de transformada e um sinal dos níveis dos coeficientes de transformada para o subconjunto de coeficientes de transformada usando um segundo modo do processo de codificação em uma ou mais terceiras passagens, em que as uma ou mais terceiras passagens são separadas das uma ou mais primeiras e segundas passagens.
12. Aparelho, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que o primeiro modo é um modo regular de um processo de Codificação Aritmética Binária Adaptável ao Contexto (CABAC) e o segundo modo é um modo de desvio do processo CABAC.
13. Aparelho, de acordo com a reivindicação 12, CARACTERIZADO pelo fato de que o modo regular do processo CABAC utiliza um modelo de contexto adaptativo para codificar binários e o modo de desvio do processo CABAC utiliza probabilidades fixas para codificar binários.
14. Aparelho, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que compreende ainda meios para repetir a codificação para cada um dentre uma pluralidade de subconjuntos de coeficientes de transformada no bloco, em que cada subconjunto compreende menos do que todos do conjunto inteiro de coeficientes de transformada no bloco.
15. Aparelho, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que cada um dentre os subconjuntos compreende dezesseis coeficientes consecutivos na ordem de varredura.
16. Aparelho, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que cada um dentre os subconjuntos compreende um sub-bloco de coeficientes de transformada na ordem de varredura.
17. Aparelho, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que as informações de significância das uma ou mais primeiras passagens e o primeiro binário e o segundo binário dos níveis das uma ou mais segundas passagens são agrupados juntamente para codificação para o subconjunto.
18. Aparelho, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que meios para codificar compreende meios para codificar (encoding), e em que os meios para codificar (encoding) compreende meios para incluir informações que representam as informações de significância, o primeiro binário e o segundo binário dos níveis dos coeficientes de transformada, os binários restantes dos níveis dos coeficientes de transformada e o sinal dos níveis dos coeficientes de transformada em um fluxo de bits codificado (encoded).
19. Aparelho, de acordo com a reivindicação 11, CARACTERIZADO pelo fato de que meios para codificar compreende meios para decodificar, e em que os meios para decodificar compreende meios para receber informações que representam as informações de significância, o primeiro binário e o segundo binário dos níveis dos coeficientes de transformada, os binários restantes dos níveis dos coeficientes de transformada e o sinal dos níveis dos coeficientes de transformada em um fluxo de bits codificado (encoded).
20. Aparelho, de acordo com a reivindicação 19, CARACTERIZADO pelo fato de que os meios para decodificar compreende ainda: meios para determinar coeficientes de transformada para um bloco de dados de vídeo a partir das informações que representam as informações de significância, o primeiro binário e o segundo binário dos níveis dos coeficientes de transformada, os binários restantes dos níveis dos coeficientes de transformada e o sinal dos níveis dos coeficientes de transformada; meios para aplicar uma transformada inversa aos coeficientes de transformada determinados para gerar um bloco de dados de vídeo residuais; e meios para combinar o bloco de dados de vídeo residuais com um bloco preditivo de dados de vídeo para formar um bloco reconstruído de dados de vídeo.
21. Meio de armazenamento não transitório legível por computador, CARACTERIZADO pelo fato de que possui instruções armazenadas no mesmo que, quando executadas, fazem um ou mais processadores: codificar um subconjunto de coeficientes de transformada associados aos dados de vídeo residuais que compreendem menos do que todos os coeficientes de transformada de um bloco usando uma pluralidade de passagens, em que cada passagem da pluralidade de passagens compreende uma varredura do subconjunto de coeficientes de transformada em uma ordem de varredura, em que a ordem de varredura compreende uma ordem na qual o subconjunto de coeficientes de transformada são processados durante codificação e em que codificar o subconjunto de coeficientes de transformada, as instruções fazem os um ou mais processadores: codificar informações de significância para o subconjunto de coeficientes de transformada usando um primeiro modo de um processo de codificação em uma ou mais primeiras passagens; codificar um primeiro binário e um segundo binário de níveis dos coeficientes de transformada para o subconjunto de coeficientes de transformada usando o primeiro modo do processo de codificação em uma ou mais segundas passagens, em que as uma ou mais segundas passagens são separadas das uma ou mais primeiras passagens; e codificar binários restantes dos níveis dos coeficientes de transformada e um sinal dos níveis dos coeficientes de transformada para o subconjunto de coeficientes de transformada usando um segundo modo do processo de codificação em uma ou mais terceiras passagens, em que as uma ou mais terceiras passagens são separadas das uma ou mais primeiras e segundas passagens.
22. Meio de armazenamento não transitório legível por computador, de acordo com a reivindicação 21, CARACTERIZADO pelo fato de que o primeiro modo é um modo regular de um processo de Codificação Aritmética Binária Adaptável ao Contexto (CABAC) e o segundo modo é um modo de desvio do processo CABAC.
23. Meio de armazenamento não transitório legível por computador, de acordo com a reivindicação 22, CARACTERIZADO pelo fato de que o modo regular do processo CABAC utiliza um modelo de contexto adaptativo para codificar binários e o modo de desvio do processo CABAC utiliza probabilidades fixas para codificar binários.
24. Meio de armazenamento não transitório legível por computador, de acordo com a reivindicação 21, CARACTERIZADO pelo fato de que compreende ainda instruções que fazem os um ou mais processadores repetirem a codificação para cada um dentre uma pluralidade de subconjuntos de coeficientes de transformada no bloco, em que cada subconjunto compreende menos do que todos do conjunto inteiro de coeficientes de transformada no bloco.
25. Meio de armazenamento não transitório legível por computador, de acordo com a reivindicação 21, CARACTERIZADO pelo fato de que cada um dentre os subconjuntos compreende dezesseis coeficientes consecutivos na ordem de varredura.
26. Meio de armazenamento não transitório legível por computador, de acordo com a reivindicação 21, CARACTERIZADO pelo fato de que cada um dentre os subconjuntos compreende um sub-bloco de coeficientes de transformada na ordem de varredura.
27. Meio de armazenamento não transitório legível por computador, de acordo com a reivindicação 21, CARACTERIZADO pelo fato de que as informações de significância das uma ou mais primeiras passagens e o primeiro binário e o segundo binário dos níveis das uma ou mais segundas passagens são agrupados juntamente para codificar para o subconjunto.
28. Meio de armazenamento não transitório legível por computador, de acordo com a reivindicação 21, CARACTERIZADO pelo fato de que para codificar compreende codificar (encoding), e em que as instruções que fazem os um ou mais processadores incluírem informações representam as informações de significância, o primeiro binário e o segundo binário dos níveis dos coeficientes de transformada, os binários restantes dos níveis dos coeficientes de transformada e o sinal dos níveis dos coeficientes de transformada em um fluxo de bits codificado (encoded).
29. Meio de armazenamento não transitório legível por computador, de acordo com a reivindicação 21, CARACTERIZADO pelo fato de que para codificar compreende decodificar, e em que as instruções fazem os um ou mais processadores receberem informações que representam as informações de significância, o primeiro binário e o segundo binário dos níveis dos coeficientes de transformada, os binários restantes dos níveis dos coeficientes de transformada e o sinal dos níveis dos coeficientes de transformada em um fluxo de bits codificado (encoded).
30. Meio de armazenamento não transitório legível por computador, de acordo com a reivindicação 29, CARACTERIZADO pelo fato de que as instruções fazem ainda os um ou mais processadores: determinar coeficientes de transformada para um bloco de dados de vídeo a partir das informações que representam as informações de significância, o primeiro binário e o segundo binário dos níveis dos coeficientes de transformada, os binários restantes dos níveis dos coeficientes de transformada e o sinal dos níveis dos coeficientes de transformada; aplicar uma transformada inversa aos coeficientes de transformada determinados para gerar um bloco de dados de vídeo residuais; e combinar o bloco de dados de vídeo residuais com um bloco preditivo de dados de vídeo para formar um bloco reconstruído de dados de vídeo.
BR112014002770-6A 2011-08-05 2012-08-03 Método e aparelho para codificar coeficientes de transformada associados a dados de vídeo residuais e meio de armazenamento não transitório legível por computador BR112014002770B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161515711P 2011-08-05 2011-08-05
US61/515,711 2011-08-05
US13/413,497 2012-03-06
US13/413,497 US20120230418A1 (en) 2011-03-08 2012-03-06 Coding of transform coefficients for video coding
US13/565,621 2012-08-02
US13/565,621 US9106913B2 (en) 2011-03-08 2012-08-02 Coding of transform coefficients for video coding
PCT/US2012/049518 WO2013022748A1 (en) 2011-08-05 2012-08-03 Coding of transform coefficients for video coding

Publications (2)

Publication Number Publication Date
BR112014002770A2 BR112014002770A2 (pt) 2017-02-21
BR112014002770B1 true BR112014002770B1 (pt) 2022-08-23

Family

ID=47668826

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014002770-6A BR112014002770B1 (pt) 2011-08-05 2012-08-03 Método e aparelho para codificar coeficientes de transformada associados a dados de vídeo residuais e meio de armazenamento não transitório legível por computador

Country Status (14)

Country Link
US (1) US9106913B2 (pt)
EP (1) EP2740269A1 (pt)
JP (1) JP5951772B2 (pt)
KR (1) KR101656964B1 (pt)
CN (1) CN103718554B (pt)
AU (1) AU2012294683B2 (pt)
BR (1) BR112014002770B1 (pt)
CA (1) CA2844138C (pt)
IL (1) IL230364A (pt)
MX (1) MX2014001422A (pt)
MY (2) MY193779A (pt)
RU (1) RU2562381C1 (pt)
WO (1) WO2013022748A1 (pt)
ZA (1) ZA201401626B (pt)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245883B (zh) * 2010-04-23 2017-11-10 M&K控股株式会社 用于对图像编码的设备和方法
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
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
US8634669B2 (en) * 2011-01-13 2014-01-21 Sony Corporation Fast implementation of context selection of significance map
US9338449B2 (en) 2011-03-08 2016-05-10 Qualcomm Incorporated Harmonized scan order for coding transform coefficients in video coding
KR102258753B1 (ko) 2011-06-24 2021-05-31 벨로스 미디어 인터내셔널 리미티드 화상 부호화 방법, 화상 복호방법, 화상 부호화 장치, 화상 복호장치 및 화상 부호화 복호장치
US9167253B2 (en) 2011-06-28 2015-10-20 Qualcomm Incorporated Derivation of the position in scan order of the last significant transform coefficient in video coding
US20130003858A1 (en) * 2011-06-30 2013-01-03 Vivienne Sze Simplified Context Selection For Entropy Coding of Transform Coefficient Syntax Elements
US20130114667A1 (en) * 2011-11-08 2013-05-09 Sony Corporation Binarisation of last position for higher throughput
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
US9654139B2 (en) 2012-01-19 2017-05-16 Huawei Technologies Co., Ltd. High throughput binarization (HTB) method for CABAC in HEVC
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
US9743116B2 (en) 2012-01-19 2017-08-22 Huawei Technologies Co., Ltd. High throughput coding for CABAC in HEVC
CN107302704B (zh) 2012-01-20 2020-07-14 Ge视频压缩有限责任公司 从数据流解码具有变换系数级别的多个变换系数的装置
CN104380733B (zh) * 2012-06-28 2017-09-05 日本电气株式会社 视频量化参数编码方法、视频量化参数解码方法、设备
US9264713B2 (en) 2012-07-11 2016-02-16 Qualcomm Incorporated Rotation of prediction residual blocks in video coding with transform skipping
US9549182B2 (en) 2012-07-11 2017-01-17 Qualcomm Incorporated Repositioning of prediction residual blocks in video coding
HUE050421T2 (hu) * 2013-04-23 2020-12-28 Qualcomm Inc Predikciós maradékblokkok átpozicionálása videokódolásban
US9955163B2 (en) * 2013-06-17 2018-04-24 Google Llc Two pass quantization of video data
US10021419B2 (en) * 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
RU2624464C1 (ru) * 2013-07-24 2017-07-04 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Порядки сканирования для кодирования без преобразования
US9264724B2 (en) * 2013-10-11 2016-02-16 Blackberry Limited Sign coding for blocks with transform skipped
US9456210B2 (en) * 2013-10-11 2016-09-27 Blackberry Limited Sign coding for blocks with transform skipped
US20160044314A1 (en) * 2014-08-08 2016-02-11 Qualcomm Incorporated System and method for reusing transform structure for multi-partition transform
US9848198B2 (en) * 2014-10-06 2017-12-19 Qualcomm Incorporated Diagonal copy for palette mode coding
US9781424B2 (en) * 2015-01-19 2017-10-03 Google Inc. Efficient context handling in arithmetic coding
CN104702962B (zh) * 2015-03-03 2019-04-16 华为技术有限公司 帧内编解码方法、编码器和解码器
US20160269747A1 (en) * 2015-03-12 2016-09-15 NGCodec Inc. Intra-Picture Prediction Processor with Dual Stage Computations
KR102159252B1 (ko) 2016-02-12 2020-10-14 후아웨이 테크놀러지 컴퍼니 리미티드 스캔 순서 선택을 위한 방법 및 장치
SG11201806810YA (en) 2016-02-12 2018-09-27 Huawei Tech Co Ltd Method and apparatus for scan order selection
JP7037554B2 (ja) 2016-05-23 2022-03-16 カカドゥ アール アンド ディー ピーティーワイ リミテッド 画像を圧縮する方法および装置
EP3264763A1 (en) * 2016-06-29 2018-01-03 Thomson Licensing Method and apparatus for improved significance flag coding using simple local predictor
CN110024399B (zh) * 2016-11-28 2024-05-17 韩国电子通信研究院 对图像编码/解码的方法和设备及存储比特流的记录介质
US10194147B2 (en) 2017-01-19 2019-01-29 Google Llc DC coefficient sign coding scheme
WO2018143670A1 (ko) * 2017-01-31 2018-08-09 세종대학교 산학협력단 영상의 부호화/복호화 방법 및 장치
KR20180089290A (ko) * 2017-01-31 2018-08-08 세종대학교산학협력단 영상의 부호화/복호화 방법 및 장치
US10554977B2 (en) * 2017-02-10 2020-02-04 Intel Corporation Method and system of high throughput arithmetic entropy coding for video coding
CN106991391A (zh) * 2017-03-30 2017-07-28 理光图像技术(上海)有限公司 文档处理装置以及文档处理和识别系统
CN108664835A (zh) * 2017-04-02 2018-10-16 田雪松 一种编码图案有效性的识别方法和识别装置
WO2019027241A1 (ko) * 2017-07-31 2019-02-07 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
WO2019050299A1 (ko) * 2017-09-06 2019-03-14 가온미디어 주식회사 변화계수 서브그룹 스캐닝 방법에 따른 부/복호화 방법 및 장치
US10484695B2 (en) 2017-10-23 2019-11-19 Google Llc Refined entropy coding for level maps
US10694205B2 (en) * 2017-12-18 2020-06-23 Google Llc Entropy coding of motion vectors using categories of transform blocks
US10869060B2 (en) * 2018-01-30 2020-12-15 Google Llc Efficient context model computation design in transform coefficient coding
US10645381B2 (en) 2018-04-30 2020-05-05 Google Llc Intra-prediction for smooth blocks in image/video
US10771783B2 (en) 2018-06-11 2020-09-08 Google Llc Transforms for large video and image blocks
US10992937B2 (en) * 2018-06-18 2021-04-27 Qualcomm Incorporated Coefficient coding with grouped bypass bins
WO2020038311A1 (en) * 2018-08-22 2020-02-27 Mediatek Inc. Method and apparatus of transform coefficient coding
US11128866B2 (en) * 2018-10-18 2021-09-21 Qualcomm Incorporated Scans and last coefficient position coding for zero-out transforms
WO2020130514A1 (ko) * 2018-12-17 2020-06-25 엘지전자 주식회사 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치
US11102490B2 (en) 2018-12-31 2021-08-24 Tencent America LLC Coefficient scanning methods on adaptive angle mode
US11595656B2 (en) * 2019-01-25 2023-02-28 Hfi Innovation Inc. Method and apparatus of transform coefficient coding with TB-level constraint
CN109831670B (zh) * 2019-02-26 2020-04-24 北京大学深圳研究生院 一种反量化方法、系统、设备及计算机可读介质
US11202100B2 (en) * 2019-03-11 2021-12-14 Qualcomm Incorporated Coefficient coding for transform skip mode
US11375236B2 (en) * 2019-05-22 2022-06-28 Tencent America LLC Method and apparatus for video coding
CN111988617A (zh) * 2019-05-22 2020-11-24 腾讯美国有限责任公司 视频解码方法和装置以及计算机设备和存储介质
CN117834876A (zh) * 2019-06-14 2024-04-05 松下电器(美国)知识产权公司 编码装置、解码装置和非暂时性的计算机可读取介质
CN114513663A (zh) * 2020-11-17 2022-05-17 腾讯科技(深圳)有限公司 视频解码方法、装置及电子设备
US11606568B1 (en) 2021-08-18 2023-03-14 Meta Platforms, Inc. End-of-block detection of quantized transform coefficient matrices in video encoding
US20230319260A1 (en) * 2022-04-04 2023-10-05 Tencent America LLC Systems and methods for frequency-dependent coefficient sign coding

Family Cites Families (108)

* 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
EP1802135A3 (en) 1995-03-15 2008-11-12 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
US6696993B2 (en) 2001-03-23 2004-02-24 Nokia Corporation Variable length coding
JP2003022485A (ja) 2001-07-10 2003-01-24 Oki Electric Ind Co Ltd 病院向け自動取引装置
US6856701B2 (en) 2001-09-14 2005-02-15 Nokia Corporation Method and system for context-based adaptive binary arithmetic coding
WO2003043346A1 (en) 2001-11-16 2003-05-22 Ntt Docomo, Inc. Image encoding method, image decoding method, image encoder, image decode, 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
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 松下電器産業株式会社 可変長符号化方法および可変長復号化方法
PT1467491E (pt) * 2002-05-02 2007-03-30 Fraunhofer Ges Forschung Codificação aritmética de coeficientes de transformação
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
US7933337B2 (en) * 2005-08-12 2011-04-26 Microsoft Corporation Prediction of transform coefficients for image compression
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. 画像符号化装置、画像復号化装置及びこれらの方法
EP1958453B1 (en) 2005-11-30 2017-08-09 Koninklijke Philips 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
US8599926B2 (en) * 2006-10-12 2013-12-03 Qualcomm Incorporated Combined run-length coding of refinement and significant coefficients in scalable video coding enhancement layers
US8942292B2 (en) 2006-10-13 2015-01-27 Qualcomm Incorporated Efficient significant coefficients coding in scalable video codecs
US7369066B1 (en) 2006-12-21 2008-05-06 Lsi Logic Corporation Efficient 8×8 CABAC residual block transcode system
US8098735B2 (en) 2006-12-21 2012-01-17 Lsi Corporation Efficient 8×8 CABAC residual block decode
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 삼성전자주식회사 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치
BRPI0808774A2 (pt) 2007-03-14 2014-08-19 Nippon Telegraph & Telephone Método de estimativa de quantidade de código, e aparelho, programa e meio de armazenamento para o mesmo
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
US7813567B2 (en) 2007-04-26 2010-10-12 Texas Instruments Incorporated Method of CABAC significance MAP decoding suitable for use on VLIW data processors
US8488668B2 (en) 2007-06-15 2013-07-16 Qualcomm Incorporated Adaptive coefficient scanning for video coding
US8571104B2 (en) 2007-06-15 2013-10-29 Qualcomm, Incorporated Adaptive coefficient scanning in video coding
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
US20090273796A1 (en) 2008-04-30 2009-11-05 Kodak Graphic Communications Canada Company Peeling imaged media from a substrate
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
US9008171B2 (en) 2008-01-08 2015-04-14 Qualcomm Incorporated Two pass quantization 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
BRPI0922846A2 (pt) 2008-12-03 2018-01-30 Nokia Corp alternando entre modos de codificação do coeficiente dct
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
JP2012516626A (ja) 2009-01-27 2012-07-19 トムソン ライセンシング ビデオ符号化およびビデオ復号における変換の選択のための方法および装置
JP5004986B2 (ja) 2009-03-19 2012-08-22 キヤノン株式会社 スキャン変換装置及び画像符号化装置、並びにそれらの制御方法
JP5302769B2 (ja) 2009-05-14 2013-10-02 キヤノン株式会社 スキャン変換装置及び画像符号化装置及びそれらの制御方法
KR101805531B1 (ko) 2009-06-07 2018-01-10 엘지전자 주식회사 비디오 신호의 디코딩 방법 및 장치
KR20100136890A (ko) 2009-06-19 2010-12-29 삼성전자주식회사 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
WO2011002914A1 (en) 2009-06-30 2011-01-06 Massachusetts Institute Of Technology System and method for providing high throughput entropy coding using syntax element partitioning
US8218645B2 (en) 2009-07-17 2012-07-10 Nec Corporation Method and apparatus for encoding and decoding by wavelet transform
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
KR20110045949A (ko) 2009-10-28 2011-05-04 삼성전자주식회사 회전 변환을 이용한 영상 부호화, 복호화 방법 및 장치
KR101457894B1 (ko) 2009-10-28 2014-11-05 삼성전자주식회사 영상 부호화 방법 및 장치, 복호화 방법 및 장치
TW201119407A (en) 2009-11-19 2011-06-01 Thomson Licensing Method for coding and method for reconstruction of a block of an image
CN102714730B (zh) 2010-01-15 2016-05-04 汤姆森特许公司 使用压缩感测的视频编解码
US8588536B2 (en) 2010-02-22 2013-11-19 Texas Instruments Incorporated Guaranteed-rate tiled image data compression
US20110243220A1 (en) 2010-04-05 2011-10-06 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image and method and apparatus for decoding image using adaptive coefficient scan order
ES2784509T3 (es) 2010-04-13 2020-09-28 Ge Video Compression Llc Codificación de mapas de significado y bloques de coeficiente de transformada
US9215470B2 (en) 2010-07-09 2015-12-15 Qualcomm Incorporated Signaling selected directional transform for video coding
DK3101901T3 (en) 2010-07-09 2017-09-18 Samsung Electronics Co Ltd Method of entropy decoding transformation coefficients
US9591320B2 (en) * 2010-07-15 2017-03-07 Texas Instruments Incorporated Context and bypass encoding video
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
US20130343454A1 (en) 2011-01-07 2013-12-26 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
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
US9167253B2 (en) 2011-06-28 2015-10-20 Qualcomm Incorporated Derivation of the position in scan order of the last significant transform coefficient in video coding
US9392301B2 (en) 2011-07-01 2016-07-12 Qualcomm Incorporated Context adaptive entropy coding for non-square blocks in video coding
CN107302704B (zh) 2012-01-20 2020-07-14 Ge视频压缩有限责任公司 从数据流解码具有变换系数级别的多个变换系数的装置

Also Published As

Publication number Publication date
IL230364A (en) 2017-06-29
WO2013022748A1 (en) 2013-02-14
US20130058407A1 (en) 2013-03-07
BR112014002770A2 (pt) 2017-02-21
ZA201401626B (en) 2017-01-25
AU2012294683A1 (en) 2014-02-20
JP5951772B2 (ja) 2016-07-13
CA2844138C (en) 2017-09-12
JP2014527358A (ja) 2014-10-09
KR101656964B1 (ko) 2016-09-12
CN103718554A (zh) 2014-04-09
KR20140046046A (ko) 2014-04-17
RU2562381C1 (ru) 2015-09-10
MY193779A (en) 2022-10-27
MX2014001422A (es) 2014-03-21
MY194171A (en) 2022-11-16
EP2740269A1 (en) 2014-06-11
US9106913B2 (en) 2015-08-11
CN103718554B (zh) 2017-03-15
AU2012294683B2 (en) 2015-11-19
CA2844138A1 (en) 2013-02-14

Similar Documents

Publication Publication Date Title
US11405616B2 (en) Coding of transform coefficients for video coding
BR112014002770B1 (pt) Método e aparelho para codificar coeficientes de transformada associados a dados de vídeo residuais e meio de armazenamento não transitório legível por computador
AU2015249109B2 (en) Coding of transform coefficients for video coding

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: H04N 19/13 (2014.01), H04N 19/129 (2014.01), H04N

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]
B25A Requested transfer of rights approved

Owner name: QUALCOMM INCORPORATED (US)

B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B07B Technical examination (opinion): publication cancelled [chapter 7.2 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 03/08/2012, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.