BR112014017364B1 - Aperfeiçoamento de rendimento para codificação de nível de coeficiente cabac - Google Patents

Aperfeiçoamento de rendimento para codificação de nível de coeficiente cabac Download PDF

Info

Publication number
BR112014017364B1
BR112014017364B1 BR112014017364-8A BR112014017364A BR112014017364B1 BR 112014017364 B1 BR112014017364 B1 BR 112014017364B1 BR 112014017364 A BR112014017364 A BR 112014017364A BR 112014017364 B1 BR112014017364 B1 BR 112014017364B1
Authority
BR
Brazil
Prior art keywords
indicator
transform coefficients
absolute value
encoded
transform
Prior art date
Application number
BR112014017364-8A
Other languages
English (en)
Other versions
BR112014017364A2 (pt
BR112014017364A8 (pt
Inventor
Marta Karczewicz
Rajan Laxman Joshi
Wei-Jung Chien
Jianle Chen
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112014017364A2 publication Critical patent/BR112014017364A2/pt
Publication of BR112014017364A8 publication Critical patent/BR112014017364A8/pt
Publication of BR112014017364B1 publication Critical patent/BR112014017364B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Abstract

APERFEIÇOAMENTO DE RENDIMENTO PARA CODIFICAÇÃO DE NÍVEL DE COEFICIENTE CABAC. Essa descrição propõe várias técnicas para limitação do número de compartimentos que são codificados utilizando-se um modelo de contexto adaptativo com a codificação aritmética binária adaptativa de contexto (CABAC). Em particular, essa descrição propõe limitar o número de compartimentos que utilizam CABAC para codificação de informação de nível dos coeficientes de transformação em um processo de codificação de vídeo.legendas dos desenhos.

Description

[0001] Esse pedido reivindica os benefícios do pedido provisório U.S. No. 61/587.624, depositado em 17 de janeiro de 2012, pedido provisório U.S. No. 61/589.290, depositado em 20 de janeiro de 2012, pedido provisório U.S. No. 61/591.772, depositado em 27 de janeiro de 2012, pedido provisório U.S. No. 61/606.347, depositado em 2 de março de 2012, e pedido provisório U.S. No. 61/622.785, depositado em 11 de abril de 2012, todos os quais são incorporados aqui por referência em sua totalidade.
Campo Técnico
[0002] Essa descrição refere-se à codificação de vídeo, e mais particularmente às técnicas para codificação de coeficientes de transformada.
Antecedentes
[0003] Capacidades de vídeo digital podem ser incorporadas em uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, câmeras digitais, dispositivos de gravação digital, aparelhos de mídia digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones de rádio via satélite e celulares, dispositivos de teleconferência de vídeo, e similares. Os dispositivos de vídeo digitais implementam as técnicas de compressão de vídeo, tal como descrito nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançado (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e extensões de tais padrões, para transmitir, receber e armazenar a informação de vídeo digital de forma mais eficiente.
[0004] Técnicas de compressão de vídeo incluem a predição espacial e/ou predição temporal para reduzir ou remover a redundância inerente em sequências de vídeo. Para a codificação de vídeo com base em bloco, um quadro de vídeo ou fatia pode ser dividida em blocos. Um quadro de vídeo pode ser alternativamente referido como uma imagem. Cada bloco pode ser adicionalmente dividido. Os blocos em um quadro ou fatia intracodificado (I) são codificados utilizando a predição espacial com relação às amostras de referência em blocos vizinhos no mesmo quadro ou fatia. Os blocos em um quadro ou fatia intercodificado (P ou B) podem utilizar a predição espacial com relação às amostras de referência em blocos vizinhos no mesmo quadro ou fatia ou predição temporal com relação às amostras de referência em outros quadros de referência. A predição espacial ou temporal resulta em um bloco de predição para um bloco a ser codificado. Dados residuais representam as diferenças de pixel entre o bloco original a ser codificado, isso é, o bloco codificado, e o bloco de predição.
[0005] Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco de predição, e os dados residuais indicando a diferença entre o bloco codificado e o bloco de predição. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada, resultando nos coeficientes de transformada residuais, que então podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em um conjunto bidimensional, podem ser digitalizados em um a ordem em particular para produzir um vetor unidimensional de coeficientes de transformada para codificação por entropia.
Sumário
[0006] Em geral, essa descrição descreve as técnicas para codificação de dados de vídeo. Em particular, essa descrição descreve as técnicas para codificação de informação referente aos coeficientes de transformada em um processo de codificação de vídeo.
[0007] Essa descrição propõe várias técnicas para limitação do número de compartimentos que são codificados utilizando um modelo de contexto adaptativo com codificação aritmética binária adaptativa de contexto (CABAC) para sinalizar os coeficientes de transformada X o número de compartimentos que são codificados por ultrapassagem. Em particular, essa descrição descreve as técnicas para limitação do número de compartimentos que utilizam CABAC para informação de nível de codificação de coeficientes de transformada em um processo de codificação de vídeo.
[0008] Em um exemplo da descrição, um método de codificação de coeficientes de transformada em um processo de codificação de vídeo compreende a codificação de um indicador de mapa de significância para coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior do que zero, codificando um indicador de mais de um para coeficientes de transformada em uma parte dos coeficientes de transformada dedicados como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que um, e codificando um indicador maior que dois para um primeiro dentre os N coeficientes de transformada no pedaço indicado como possuindo um valor absoluto maior do que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que dois.
[0009] Em outro exemplo da descrição, um método de codificação de coeficientes de transformada em um processo de codificação de vídeo compreende a codificação de um indicador de mapa de significância para coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero, a codificação de um indicador maior que um para um primeiro coeficiente de transformada M1 na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada em particular possui um valor absoluto maior que um, e codificando um indicador maior que dois para transformar coeficientes na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não os coeficientes de transformada em particular possuem um valor absoluto maior que dois.
[0010] Em outro exemplo da descrição, um método de codificação de coeficientes de transformada em um processo de codificação de vídeo compreende a codificação de um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero, a codificação de um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um, e a codificação de um indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior do que um pelo indicador maior que um, onde o indicador maior que um indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois.
[0011] Essa descrição também descreve um codificador de vídeo, um decodificador de vídeo, aparelhos e meios legíveis por computador armazenando instruções que podem ser configuradas para realizar as técnicas de sinalização de coeficientes de transformada descritos aqui.
[0012] Os detalhes de um ou mais exemplos são apresentados nos desenhos em anexo e na descrição abaixo. Outras características, objetivos e vantagens serão aparentes a partir da descrição e dos desenhos, e a partir das reivindicações.
Breve Descrição dos Desenhos
[0013] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo ilustrativo;
[0014] A figura 2 é um desenho conceitual ilustrando as ordens de varredura inversa ilustrativas para codificação de coeficiente de transformada;
[0015] A figura 3 é um desenho conceitual ilustrando uma varredura diagonal com base em sub-bloco ilustrativo;
[0016] A figura 4 é um desenho conceitual ilustrando uma varredura diagonal inversa ilustrativa de uma parte de 4 x 4 de coeficientes de transformada;
[0017] A figura 5 é um diagrama conceitual ilustrando os limites de codificação com base em contexto com base na posição de sub-bloco;
[0018] A figura 6 é um diagrama conceitual ilustrando limites de codificação com base em contexto com base na posição de sub-bloco e a posição de um último coeficiente significativo;
[0019] A figura 7 é um diagrama conceitual ilustrando limites de codificação com base em contexto com base na posição de sub-bloco e na posição de um último coeficiente significativo;
[0020] A figura 8 é um diagrama conceitual ilustrando uma divisão ilustrativa de um bloco 8 x 8 em 4 sub-blocos 4 x 4 e uma vizinhança de contexto;
[0021] A figura 9 é um diagrama em bloco ilustrando um codificador de vídeo ilustrativo;
[0022] A figura 10 é um diagrama em bloco ilustrando um decodificador de vídeo ilustrativo;
[0023] A figura 11 é um fluxograma ilustrando um método ilustrativo de acordo com as técnicas dessa descrição;
[0024] A figura 12 é um fluxograma ilustrando outro método ilustrativo de acordo com as técnicas dessa descrição;
[0025] A figura 13 é um fluxograma ilustrando outro método ilustrativo de acordo com as técnicas dessa descrição.
Descrição Detalhada
[0026] Em geral, essa descrição descreve as técnicas para codificação de dados de vídeo. Em particular, essa descrição descreve técnicas para codificação de coeficientes de transformada em um processo de codificação e/ou decodificação de vídeo.
[0027] A informação de nível (por exemplo, valor absoluto e sinal) para coeficientes de transformada é tipicamente codificada por entropia em uma dentre duas formas. Alguns compartimentos da informação de nível são codificados com um modelo de contexto adaptativo (por exemplo, com codificação aritmética binária adaptativa de contexto (CABAC)). Outros compartimentos da informação de nível são codificados através de um modo de ultrapassagem com modelos de probabilidade iguais fixos (por exemplo, com um codificador Golomb exponencial ou um codificador Golomb- Rice). Foi observado que a codificação de compartimento com base em contexto adaptativo, enquanto promovendo a eficiência de largura de banda, é um dos gargalos principais da codificação por entropia.
[0028] Em vista dessa desvantagem, essa descrição apresenta técnica para aperfeiçoamento de rendimento CABAC. Em particular, em alguns exemplos, essa descrição propõe as técnicas para aperfeiçoamento do rendimento CABAC pela redução do número de compartimentos codificados por contexto adaptativos, e aumento do número de compartimentos codificados por ultrapassagem.
[0029] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo ilustrativo 10 que pode ser configurado para utilizar as técnicas para codificação de coeficientes de transformada de acordo com os exemplos dessa descrição. Como ilustrado na figura 1, o sistema 10 inclui um dispositivo fonte 12 que transmite vídeo codificado para o dispositivo de destino 14 através do canal de comunicação 16. Os dados de vídeo codificados também podem ser armazenados no meio de armazenamento 34 ou servidor de arquivo 36 e podem ser acessados pelo dispositivo de destino 14 como desejado. Quando armazenados em um meio de armazenamento ou servidor de arquivo, o codificador de vídeo 20 pode fornecer dados de vídeo codificados para outro dispositivo, tal como a interface de rede, um dispositivo de instalação de gravação ou queima de disco compacto (CD), Blu-ray ou disco de vídeo digital (DVD), ou outros dispositivos, para armazenamento dos dados de vídeo codificados no meio de armazenamento. Da mesma forma, um dispositivo separado do decodificador de vídeo 30, tal como uma interface de rede, leitora de CD ou DVD, ou similares, pode recuperar os dados de vídeo codificados a partir de um meio de armazenamento e fornecer os dados recuperados para o decodificador de vídeo 30.
[0030] O dispositivo fonte 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla variedade de dispositivos, incluindo computadores desktop, computadores notebook (isso é, laptop), computadores tablet, caixas de decodificação, aparelhos telefônicos, tal como smartphones, televisões, câmeras, dispositivos de exibição, aparelhos de mídia digital, consoles de jogos de vídeo, ou similares. Em muitos casos, tais dispositivos podem ser equipados para comunicação sem fio. Dessa forma, o canal de comunicação 16 pode compreender um canal sem fio, um canal com fio, ou uma combinação de canais sem e com fio adequados para transmissão de dados de vídeo codificados. De forma similar, o servidor de arquivo 36 pode ser acessado pelo dispositivo de destino 14 através de qualquer conexão de dados, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.) ou uma combinação dos dois que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivo.
[0031] Técnicas para codificação de coeficientes de transformada, de acordo com exemplos dessa descrição, podem ser aplicadas à codificação de vídeo para suportar qualquer uma dentre uma variedade de aplicações de multimídia, tal como difusões de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão via satélite, sequenciamento de transmissões de vídeo, por exemplo, através da Internet, codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outros aplicativos. Em alguns exemplos, o sistema 10 pode ser configurado para suportar a transmissão de vídeo de via única ou duas vias para suportar as aplicações tal como sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo e/ou videotelefonia.
[0032] No exemplo da figura 1, um dispositivo fonte 12 inclui a fonte de vídeo 18, o codificador de vídeo 20, modulador/demodulador 22 e transmissor 24. No dispositivo fonte 12, a fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo previamente capturado, uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo e/ou um sistema gráfico de computador para gerar os dados gráficos de computador como o vídeo fonte, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo fonte 12 e o dispositivo de destino 14 podem formar os chamados telefones de câmera ou videotelefones, que podem ser fornecidos, por exemplo, dentro de smartphones ou computadores tablet. No entanto, as técnicas descritas nessa descrição podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicativos com e/ou sem fio, ou aplicativo no qual os dados de vídeo codificados são armazenados em um disco local.
[0033] O vídeo capturado, pré-capturado, ou gerado por computador pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificada pode ser modulada pelo modem 22 de acordo com um padrão de comunicação, tal como um protocolo de comunicação com ou sem fio, e transmitida para o dispositivo de destino 14 através do transmissor 24. O modem 22 pode incluir vários misturadores, filtros, amplificadores ou outros componentes projetados para modulação de sinal. O transmissor 24 pode incluir circuitos projetados para transmitir dados, incluindo amplificadores, filtros e, no caso de comunicação sem fio, uma ou mais antenas.
[0034] O vídeo capturado, pré-capturado ou gerado por computador que é codificado pelo codificador de vídeo 20 também pode ser armazenado no meio de armazenamento 34 ou servidor de arquivo 36 para consumo posterior. O meio de armazenamento 34 pode incluir discos Blu-ray, DVDs, CD- ROMs, memória flash, ou qualquer outro meio de armazenamento digital para armazenamento de vídeo codificado. O vídeo codificado armazenado no meio de armazenamento 34 pode então ser acessado pelo dispositivo de destino 14 para decodificação e reprodução. Apesar de não ilustrado na figura 1, em alguns exemplos, o meio de armazenamento 34 e/ou o servidor de arquivo 36 podem armazenar a saída do transmissor 24.
[0035] O servidor de arquivo 36 pode ser qualquer tipo de servidor capaz de armazenar o vídeo codificado e transmitir esse vídeo codificado para o dispositivo de destino 14. Servidores de arquivo ilustrativos incluem um servidor de rede (por exemplo, para um sítio de rede), um servidor FTP, dispositivos de armazenamento anexados à rede (NAS), um acionador de disco local, ou qualquer outro tipo de dispositivo capaz de armazenar os 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 sequenciada, uma transmissão de download, ou uma combinação de ambas. 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 com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão WiFi), uma conexão com fio (por exemplo, DSL, modem a cabo, Ethernet, USB, etc.) ou uma combinação de ambas que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivo.
[0036] O dispositivo de destino 15, no exemplo da figura 1, inclui o receptor 26, o modem 28, o decodificador de vídeo 30 e o dispositivo de exibição 32. O receptor 26 do dispositivo de destino 14 recebe informação através do canal 16, e o modem 28 demodula a informação para produzir uma sequência de bits demodulada para o decodificador de vídeo 30. A informação comunicada através do canal 16 pode 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 também pode ser incluída com os dados de vídeo codificados armazenados no meio de armazenamento 34 ou servidor de arquivo 36. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode formar parte de um codificador-decodificador (CODEC) respectivo que é capaz de codificar ou decodificar os dados de vídeo.
[0037] O dispositivo de exibição 32 pode ser integrado com, ou pode estar fora do dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir dispositivo de exibição integrado e também pode ser configurado para interfacear com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de destino 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer um dentre uma variedade de dispositivos de exibição tal como um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo de emissão de luz orgânica (OLED), ou qualquer outro tipo de dispositivo de exibição.
[0038] No exemplo da figura 1, o canal de comunicação 16 pode compreender qualquer meio de comunicação sem fio ou com fio, tal como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas, ou qualquer combinação de mídia sem e com fio. O canal de comunicação 16 pode formar parte de uma rede com base em pacote, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal como a Internet. O canal de comunicação 16 geralmente representa qualquer meio de comunicação adequado, ou coleção de meios de comunicação diferentes, para transmissão de dados de vídeo a partir do dispositivo fonte 12 para o dispositivo de destino 14, incluindo qualquer combinação adequada de mídia com ou sem fio. O canal de comunicação 16 pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo fonte 12 para o dispositivo de destino 14.
[0039] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, tal como o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas de Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG). Um último Rascunho de Trabalho recente (WD) de HEVC é descrito no documento JCTVC-11003, Bross et al., "High efficiency Video Coding (HEVC) text specification draft 9", Equipe Colaborativa Conjunta de Codificação de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, e referido como HEVC WD7 doravante, está disponível a partir de http://phenix.int- evry.fr/jct/docenduser/documents/9Geneva/wg11/JCTVC11003 -v6.zip.
[0040] Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões proprietários e da indústria, tal como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), ou extensões de tais padrões. As técnicas dessa descrição, no entanto, não estão limitadas a qualquer padrão de codificação em particular. Outros exemplos incluem MPEG-2 e ITU-T H.264.
[0041] Apesar de não ilustrado na figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser integrados a um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX adequadas, ou outro hardware e software, para manusear a codificação de ambos os áudio e vídeo em uma sequência de dados comum ou sequências de dados separadas. Se aplicável, em alguns exemplos, as unidades MUX-DEMUX podem ser conformar ao protocolo multiplexador ITU H.223, ou outros protocolos tal como o protocolo de datagrama de usuário (UDP).
[0042] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um dentre uma variedade de conjuntos de circuitos de codificador adequados, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado e executar as instruções em hardware utilizando um ou mais processadores para realizar as técnicas dessa descrição. Cada um dos 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.
[0043] O codificador de vídeo 20 pode implementar da ou qualquer uma das técnicas dessa descrição para codificação de coeficientes de transformada em um processo de codificação de vídeo. Da mesma forma, o decodificador de vídeo 30 pode implementar toda e qualquer uma das técnicas para codificação de coeficientes de transformada em um processo de codificação de vídeo. Um codificador de vídeo, como descrito nessa descrição, pode se referir a um codificador de vídeo ou um decodificador de vídeo. De forma similar, uma unidade de codificação de vídeo pode fazer referência a um codificador de vídeo ou a um decodificador de vídeo. Da mesma forma, a codificação de vídeo pode se referir à codificação de vídeo ou à decodificação de vídeo.
[0044] Em um exemplo da descrição, o codificador de vídeo 20 pode ser configurado para codificar um indicador de mapa de significância para cada coeficiente de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero, codificar um indicador maior que um para os coeficientes de transformada em uma parte dos coeficientes de transformada indicados com possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que um, e codificar um indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior do que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que dois.
[0045] Da mesma forma, decodificador de vídeo 30 pode ser configurado para decodificar os indicadores de mapa de significância para transformar os coeficientes em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero, decodifica um indicador maior que um para transformar coeficientes em uma parte dos coeficientes de transformada, onde o indicador maior que um indica se ou não um coeficiente de transformada em particular possui um valor maior que um, e decodifica um indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicada com possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não o coeficiente de transformada em particular possui um valor absoluto maior que dois.
[0046] Em outro exemplo da descrição, o codificador de vídeo 20 pode ser configurado para codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero, codifica um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um, e codifica um indicador maior que dois para coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois.
[0047] Da mesma forma, o decodificador de vídeo 30 pode ser configurado para decodificar um indicador de mapa de significância para os coeficientes de transformada em uma parte de coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero, decodifica um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um, e decodifica um indicador maior que dois para coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não os coeficientes de transformada em particular possui um valor absoluto maior que dois.
[0048] Em outro exemplo da descrição, o codificador de vídeo 20 pode ser configurado para codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero, codifica um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um e codifica um indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois.
[0049] Da mesma forma, o decodificador de vídeo 30 pode ser configurado para decodificar os indicadores de mapa de significância para coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero, decodifica um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um, e decodifica um indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não os coeficientes de transformada particular possuem um valor absoluto maior que dois.
[0050] Dispositivos de vídeo digital implementam as técnicas de compressão de vídeo para codificar e decodificar a informação de vídeo digital de forma mais eficiente. A compressão de vídeo pode aplicar técnicas de predição espacial (intraquadro) e/ou predição temporal (interquadro) para reduzir ou remover a redundância inerente em sequências de vídeo.
[0051] JCT-VC está funcionando no desenvolvimento do padrão HEVC, por exemplo, como descrito em HEVC WD7 discutido acima. Os esforços de padronização HEVC são baseados em um modelo de evolução de um dispositivo de codificação de vídeo referido como Modelo de Teste HEVC (HM). HM presume várias capacidades adicionais de dispositivos de codificação de vídeo com relação aos dispositivos existentes de acordo com, por exemplo, ITU-T H.264/AVC. Por exemplo, ao passo que H.264 fornece nove modos de codificação de intrapredição, HM pode fornecer tanto quanto trinta e três modos de codificação de intrapredição. A seção a seguir discutirá determinados aspectos de HM em maiores detalhes.
[0052] Para codificação de vídeo de acordo com o padrão HEVC atualmente em desenvolvimento, um quadro de vídeo pode ser dividido em unidades de codificação. Uma unidade de codificação (CU) normalmente se refere 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 CU normalmente possui um componente de luminescência, denotado como Y, e dois componentes de crominância, denotados 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 a ou diferente do tamanho do componente Y.
[0053] Uma CU é tipicamente quadrada, e pode ser considerada similar a um chamado macro bloco, por exemplo, sob outros padrões de codificação de vídeo tal como ITU-T H.264. A codificação de acordo com alguns dos aspectos atualmente propostos do desenvolvimento d padrão HEVC serão descritos nesse pedido para fins de ilustração. No entanto, as técnicas descritas nessa descrição podem ser úteis para outros processos de codificação de vídeo, tal como os definidos de acordo com H.264 ou outro padrão ou processo de codificação de vídeo proprietário.
[0054] De acordo com HM, uma CU pode incluir uma ou mais unidades de predição (PUs) e/ou uma ou mais unidades de transformada (TUs). Os dados de sintaxe dentro de uma sequência de bits podem definir uma unidade de codificação maior (LCU), que é uma CU maior em termos de número de pixels. Em geral, uma CU possui uma finalidade similar para um macro bloco de H.264, exceto que uma CU não possui uma distinção de tamanho. Dessa forma, uma CU pode ser dividida em sub-CUs. Em geral, as referências nessa descrição a uma CU podem fazer referência a uma unidade de codificação maior de uma imagem ou uma sub-CU de uma LCU. Uma LCU pode ser dividida em sub-CUs, e cada sub-CU pode ser adicionalmente dividida em sub-CUs. Os dados de sintaxe para uma sequência de bits podem definir um número máximo de vezes que uma LCU pode ser dividida, referida como uma profundidade de CU. De acordo, uma sequência de bits pode definir também uma unidade de codificação menor (SCU). Essa descrição também utiliza o termo "bloco" ou "parte" para fazer referência a qualquer uma dentre CU, PU ou TU. Em geral, "parte" pode fazer referência a qualquer subconjunto de um quadro de vídeo.
[0055] Uma LCU pode ser associada com uma estrutura de dados quadtree. Em geral, uma estrutura de dados quadtree inclui um nó por CU, onde um nó raiz corresponde à LCU. Se uma CU for dividida em quatro sub- CUs, o nó correspondente à CU inclui quatro nós folha, cada um dos quais corresponde a uma das sub-CUs. Cada nó da estrutura de dados de quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó no quadtree pode incluir um indicador dividido, indicando se a CU correspondente ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender de se a CU é dividida em sub- CUs. Se uma CU não for dividida adicionalmente, é referida como uma CU folha. Nessa descrição, 4 sub-CUs de uma CU folha também serão referidas como CUs folha apesar de não haver qualquer divisão explícita da CU folha original. Por exemplo, se uma CU de tamanho 16 x 16 não for mais dividida, as quatro sub-CUs de 8 x 8 também serão referidas como CUs folha apesar de a CU de 16 x 16 nunca ter sido dividida.
[0056] Uma CU folha pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa toda ou uma parte da CU correspondente, e pode incluir dados para recuperar uma amostra de referência para a PU. Por exemplo, quando a PU é codificada por intermodo, a PU pode incluir dados definindo um vetor de movimento para a PU. Os dados definindo o vetor de movimento podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, precisão de um quarto de pixel ou precisão de um oitavo de pixel), um quadro de referência para o qual o vetor de movimento aponta, e/ou uma lista de referência (por exemplo, lista 0 ou lista 1) para o vetor de movimento. Os dados para a CU folha definindo as PUs também podem ser descritos, por exemplo, dividindo a CU em uma ou mais PUs. Os modos de divisão podem diferir dependendo de se a CU não é codificada, é codificada pelo modo de intrapredição, ou codificada pelo modo de interpredição. Para a intracodificação, uma PU pode ser tratada da mesma forma que uma unidade de transformada folha descrita abaixo.
[0057] O padrão HEVC emergente permite as transformações de acordo com as unidades de transformada (TUs), que podem ser diferentes para diferentes CUs. As TUs são tipicamente dimensionadas com base no tamanho das PUs dentro de uma determinada CU definida para uma LCU dividida, apesar de isso nem sempre ser o caso. As TUs são tipicamente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, as amostras residuais correspondendo a uma CU podem ser subdivididas em unidades menores utilizando uma estrutura de quadtree conhecida como "quadtree residual" (RQT). Os nós folha do RQT podem ser referidos como unidades de transformada (TUs). Os valores de diferença de pixel associados com as TUs podem ser transformados para produzir os coeficientes de transformada, que podem ser quantizados.
[0058] Em geral, uma PU se refere a dados relacionados com o processo de predição. Por exemplo, quando a PU é codificada por intramodo, a PU pode incluir dados descrevendo um modo de intrapredição para a PU. Como outro exemplo, quando a PU é codificada por intermodo, a PU pode incluir dados definindo um vetor de movimento para a PU.
[0059] Em geral, uma Tu é utilizada para processos de transformada e quantização. Uma determinada CU possuindo uma ou mais PUs também pode incluir uma ou mais unidades de transformada (TUs). Seguindo a predição, o codificador de vídeo 20 pode calcular os valores residuais do bloco de vídeo identificados pelo nó de codificação de acordo com a PU. O nó de codificação é então atualizado para fazer referência a valores residuais ao invés do bloco de vídeo original. Os valores residuais compreendem valores de diferença de pixel que podem ser transformados em coeficientes de transformada, quantizados e digitalizados utilizando as transformações e outras informações de transformada especificadas nas TUs para produzir coeficientes de transformada serializados para codificação por entropia. O nó de codificação pode mais uma vez ser atualizado para fazer referência a esses coeficientes de transformada serializados. Essa descrição utiliza tipicamente o termo "bloco de vídeo" para fazer referência a um nó de codificação de uma CU. Em alguns casos específicos, essa descrição também pode utilizar o termo "bloco de vídeo" para fazer referência a um bloco de árvore, isso é, LCU ou uma CU que inclui um nó de codificação e PUs e TUs.
[0060] Uma sequência de vídeo inclui tipicamente uma série de dois quadros ou imagens. Um grupo de imagens (GOP) compreende geralmente uma série de uma ou mais imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em outro local, que descreve um número de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a fatia respectiva. O codificador de vídeo 20 opera tipicamente em blocos de vídeo dentro de fatias de vídeo individuais a fim de codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem possuir tamanhos fixos ou variáveis e podem diferir em tamanho de acordo com um padrão de codificação especificado.
[0061] Para se codificar um bloco (por exemplo, uma unidade de predição de dados de vídeo), um previsor para o bloco é primeiramente derivado. O previsor, também referido como um bloco de predição, pode ser derivado através de intrapredição (I) (isso é, predição espacial), ou interpredição (P ou B) (isso é, predição temporal). Dessa forma, algumas unidades de predição podem ser intracodificadas (I) utilizando a predição espacial com relação às amostras de referência nos blocos de referência vizinhos no mesmo quadro (ou fatia) e outras unidades de predição podem ser intercodificadas unidirecionalmente (P) ou intercodificadas bidirecionalmente (B) com relação aos blocos das amostras de referência em outros quadros previamente codificados (ou fatias). Em cada caso, as amostras de referência podem ser utilizadas para formar um bloco de predição para um bloco a ser codificado.
[0062] Mediante identificação de um bloco de predição, a diferença entre os pixels no bloco de dados de vídeo original e pixels em seu bloco de predição é determinada. Essa diferença pode ser referida como dados residuais de predição, e indica as diferenças de pixel entre os valores de pixel no bloco a ser codificado e os valores de pixel no bloco de predição selecionado para representar o bloco codificado. Para se alcançar uma melhor compressão, os dados residuais de predição podem ser transformados, por exemplo, utilizando-se uma transformada de cosseno discreto (DCT), uma transformada de inteiro, uma transformada Karhunen-Loeve (K-L), ou outra transformada para produzir coeficientes de transformada.
[0063] Os dados residuais em um bloco de transformada, tal como uma TU, podem ser dispostos em um conjunto bidimensional (2D) de valores de diferença de pixel residentes 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, tal como um domínio de frequência.
[0064] Para uma compressão adicional, os coeficientes de transformada podem ser quantizados antes da codificação por entropia. Um codificador por entropia então aplica a codificação por entropia, tal como Codificação de Comprimento Variável Adaptativa de Contexto (CAVLC), Codificação Aritmética Binária Adaptativa de Contexto (CABAC), Codificação por Entropia de Partição de Intervalo de Probabilidade (PIPE), ou similar, aos coeficientes de transformada quantizados. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para digitalizar os coeficientes de transformada quantizados para produzir um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode realizar uma varredura adaptativa. Depois da varredura dos coeficientes de transformada quantizados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional. O codificador de vídeo 20 também pode codificar por entropia os elementos de sintaxe associados com os dados de vídeo codificados para uso pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0065] Essa descrição está relacionada com técnicas para a codificação aritmética binária adaptativa de contexto (CABAC) de codificadores por entropia ou outros codificadores por entropia, tal como a codificação por entropia de partição de intervalo de probabilidade (PIPE) ou codificadores relacionados. A codificação aritmética é uma forma de codificação por entropia utilizada em muitos algoritmos de compressão que possuem alta eficiência de codificação, visto que é capaz de mapear os símbolos para palavras código de comprimento não inteiro. Um exemplo de um algoritmo de codificação aritmética é a Codificação Aritmética Binária com Base em Contexto (CABAC) utilizada em H.264/AVC.
[0066] Em geral, os símbolos de dados de codificação por entropia utilizando CABAC envolvem uma ou mais das seguintes etapas: (1) Binarização: Se um símbolo a ser codificado for de valor não binário, o mesmo é mapeado para uma sequência de chamados "compartimentos" cada compartimento pode ter um valor de "0" ou "1". (2) Designação de contexto: Cada compartimento (em modo regular) é designado para um contexto. Um modelo de contexto determina como um contexto para um determinado compartimento é calculado com base na informação disponível para o compartimento, tal como valores de símbolos codificados previamente ou número de compartimento. (3) Codificação de compartimento: Os compartimentos são codificados com um codificador aritmético. Para se codificar um compartimento, o codificador aritmético exige como uma entrada uma probabilidade do valor do compartimento, isso é, uma probabilidade do valor do compartimento ser iguala "0", e uma probabilidade de o valor de compartimento ser igual a "1". A probabilidade (estimada) de cada contexto é representada por um valor inteiro chamado de "estado de contexto". Cada contexto possui um estado, e, dessa forma, o estado (isso é, probabilidade estimada) é igual para os compartimentos designados para um contexto, e diferente entre os contextos. (4) Atualização de estado: A probabilidade (estado) para um contexto selecionado é atualizada com base no valor codificado real do compartimento (por exemplo, se o valor de compartimento for "1", a probabilidade de "1" é aumentada).
[0067] Deve-se notar que a codificação por entropia de partição de intervalo de probabilidade (PIPE) utiliza princípios similares aos da codificação aritmética, e pode, dessa forma, utilizar também as técnicas dessa descrição.
[0068] CABAC em H.264/AVC e HEVC utiliza os estados, e cada estado é implicitamente relacionado com uma probabilidade. Existem variações de CABAC, onde uma probabilidade de um símbolo ("0" ou "1") é utilizada diretamente, isso é, a probabilidade (ou uma versão inteira da mesma) é o estado. Por exemplo, tais variações de CABAC são descritas em "Description of video technology proposal by France Telecom, NTT, NTT DOCOMO, Panasonic e Technicolor," JCTVC-A114, 1o. Encontro JCT-VC, Dresden, DE, abril de 2010, referido como "JCTVC-A114" doravante, e A. Alshin e E. Alshina, "Multi-parameter probability update for CABAC," JCTVC-F254, 6o. Encontro JCT-VC, Torino, IT, julho de 2011, referido doravante como "JCTVC-F254".
[0069] Para codificar por entropia um bloco de coeficientes de transformada quantizados, um processo de varredura é normalmente realizado de modo que o conjunto bidimensional (2D) de coeficientes de transformada quantizados em um bloco tenha nova disposição, de acordo com uma ordem de varredura particular, em um conjunto unidimensional (1D) ordenado, isso é, vetor, de coeficientes de transformada. A codificação por entropia é então aplicada ao vetor dos coeficientes de transformada. A varredura dos coeficientes de transformada quantizados em uma unidade de transformada serializa o conjunto 2D de coeficientes de transformada para o codificador por entropia. Um mapa de significância pode ser gerado para indicar as posições dos coeficientes significantes (isso é, diferente de zero). A varredura pode ser aplicada a níveis de varredura de coeficientes significantes (isso é, diferentes de zero) e/ou para codificar sinais dos coeficientes significantes.
[0070] No padrão HEVC emergente, a informação de posição da transformada significante (por exemplo, mapa de significância) é primeiramente codificada para uma TU para indicar a localização do último coeficiente diferente de zero na ordem de varredura. O mapa de significância e a informação de nível (os valores absolutos e sinais de coeficientes) são codificados para cada coeficiente em uma ordem de varredura inversa.
[0071] Atualmente, existem 4 varreduras diferentes em HEVC: uma varredura diagonal, uma varredura horizontal, uma varredura vertical e uma varredura diagonal com base em sub-bloco. A figura 2 ilustra exemplos de ordens de varredura inversa para um bloco de coeficientes de transformada. Note-se que cada padrão diagonal inverso 35, padrão em zigue-zague inverso 29, padrão vertical inverso 31, e o padrão horizontal inverso 33 prosseguem dos coeficientes de frequência mais alta no canto inferior direito do bloco de transformada para os coeficientes de frequência inferior no canto superior esquerdo do bloco de transformada.
[0072] A varredura diagonal, a varredura horizontal, e a varredura vertical são aplicadas para TUs 4 x 4 e 8 x 8. A varredura diagonal com base em sub-bloco é empregada em TUs de 16 x 16 e 32 x 32 no modelo de teste HEVC atual. Em alguns exemplos, a varredura diagonal com base em sub-bloco pode ser aplicada também a uma TU 8 x 8. Em uma varredura com base em sub-bloco, um sub-bloco 4 x 4 de uma TU maior e digitalizada antes de prosseguir para outro sub-bloco 4 x 4 dentro da TU maior. Em outros exemplos, um "sub-bloco" pode consistir de um número de coeficientes digitalizados consecutivamente de acordo com a ordem de varredura utilizada. Por exemplo, o "sub-bloco" pode consistir de 16 coeficientes digitalizados consecutivamente ao longo de uma ordem de varredura diagonal.
[0073] A figura 3 apresenta um exemplo de uma varredura com base em sub-bloco em uma TU 8 x 8. A TU 8 x 8 38 consiste de quatro sub-blocos 4 x 4 (36A, 36B, 36C, 36D). Como ilustrado na figura 3, os coeficientes de transformada no sub-bloco 36A são digitalizados antes da varredura dos coeficientes de transformada no sub-bloco 36B. A varredura então prossegue do sub-bloco 36B para o sub-bloco 36C, e finalmente para o sub-bloco 36D. A figura 3 apresenta uma ordem de varredura diagonal de avanço em cada sub-bloco; no entanto, qualquer ordem de varredura pode ser utilizada (por exemplo, horizontal, vertical, em zigue-zague, etc.). Em outros exemplos, as ordens de varredura inversa, tal como as ilustradas na figura 2, são utilizadas dentro de cada sub-bloco.
[0074] No padrão HEVC emergente, os coeficientes podem ser agrupados em uma parte. O mapa de significância e a informação de nível (valor absoluto e sinal) dos coeficientes de transformada são codificados para cada parte. Em um exemplo, uma parte consiste de 16 coeficientes consecutivos ao longo de uma ordem de varredura (por exemplo, uma ordem de varredura de avanço ou diagonal inversa, horizontal ou vertical) para uma TU 4 x 4 e uma TU 8 x 8. Para TUs 16 x 16 e 32 x 32, um sub-bloco de 4 x 4 de coeficientes de transformada dentro da TU maior são tratados como uma parte. Os símbolos a seguir são codificados e sinalizados para representar a informação de nível de coeficientes dentro de uma parte. Em um exemplo, todos os símbolos são codificados em uma ordem de varredura inversa.
[0075] significant_coeff_flag (abbr. sigMapFlag): Esse indicador indica a significância de cada coeficiente em uma parte. Um coeficiente com um valor absoluto de um ou mais é considerado significante. Como um exemplo, um valor sigMapFlag igual a 0 indica que o coeficiente não é significante, enquanto que um valor igual a 1 indica que o coeficiente é significante. Esse indicador pode geralmente ser referido como um indicador de significância. coeff_abs_level_greater1_flag (abbr. gr1Flag): Esse indicador indica se o valor absoluto do coeficiente é maior que um para qualquer um dos coeficientes diferentes de zero (isso é, os coeficientes com sigMapFlag igual a 1). Como um exemplo, um valor gr1Flag igual a 0 indica que o coeficiente não precisa ser um valor absoluto maior que um, enquanto um valor de 1 para gr1Flag indica que o coeficiente não precisa ter um valor absoluto maior que um. Esse indicador pode geralmente ser referido como um indicador maior que um. coeff_abs_level_greater2_flag (abbr. gr2Flag): Esse indicador indica se o valor absoluto do coeficiente é maior que dois para quaisquer coeficientes com um valor absoluto maior que um (isso é, coeficientes com gr1Flag como 1). Como um exemplo, um valor de gr2Flag igual a 0 indica que o coeficiente não possuir um valor absoluto maior que dois, enquanto um valor de 1 para gr2Flag indica que o coeficiente possui um valor absoluto maior que dois. Esse indicador pode geralmente ser referido como um indicador maior que dois. coeff_sign_flag (abbr. signFlag): Esse indicador indica a informação de sinal para quaisquer coeficientes diferentes de zero (isso é, coeficientes com sigMapFlag igual a 1). Por exemplo, um zero para esse indicador indica um sinal positivo, enquanto um 1 indica um sinal negativo. coeff_abs_level_remaining (abbr. levelRem): Esse elemento de sintaxe indica os valores de nível absolutos dos coeficientes restantes. Para esse indicador, o valor absoluto do coeficiente menos três é codificado (abs(level)-3) para cada coeficiente com um valor absoluto maior que dois (isso é, coeficientes com gr2Flag como 1).
[0076] A figura 4 ilustra um exemplo de coeficientes quantizados em um bloco 4 x 4 100. O bloco 100 pode ser uma TU 4 x 4 ou pode ser um sub-bloco 4 x 4 (parte) em uma TU 8 x 8, 16 x 16 ou 32 x 32. Os símbolos codificados para os coeficientes ilustrados na figura 4, digitalizados em uma ordem de varredura inversa, são resumidos na Tabela 1. Na Tabela 1, scan_pos se refere à posição do coeficiente ao longo da varredura diagonal inversa ilustrada na figura 4. Scan_pos 15 é o primeiro coeficiente digitalizado e é localizado no canto inferior esquerdo do bloco 100.O coeficiente quantizado em scan_pos 16 possui um valor absoluto igual a 0. Scan_pos 0 é o último coeficiente digitalizado e é localizado no canto superior direito do bloco 100. O coeficiente quantizado em scan_pos 0 possui um valor absoluto de 10. No caso de uma TU 4 x 4 ou o último sub-bloco 4 x 4 em uma TU maior, os primeiros quatro sigMapFlags não precisam ser codificados, visto que a posição do último coeficiente diferente de zero é conhecida. Isso é, a codificação de sigMapFlag pode começar no último coeficiente diferente de zero (nesse exemplo, o coeficiente em scan_pos 11).
Figure img0001
Tabela 1. Símbolos codificados para os coeficientes de uma TU 4 x 4 ou uma parte 4 x 4
[0077] Dentre esses símbolos, os compartimentos sigMapFlag, gr1Flag e gr2Flag são codificados com modelos de contexto adaptativos. SignFlag e compartimentos binarizados de levelRem são codificados através do modo de ultrapassagem com modelos de probabilidade iguais fixos (por exemplo, um código Golomb exponencial). No desenho HEVC atual, três compartimentos de indicador são codificados com modelos de contexto adaptativos para um coeficiente com uma amplitude maior que zero. Foi observado que a codificação de compartimento com base em contexto é um dos estreitamentos principais da codificação por entropia.
[0078] Em vista dessa desvantagem, essa descrição apresenta técnicas para aperfeiçoar o rendimento CABAC. Em particular, essa descrição propõe técnicas para o aperfeiçoamento do rendimento CABAC pela redução do número de compartimentos codificados por contexto, e o aumento do número de compartimentos codificados por ultrapassagem.
[0079] No padrão HEVC emergente, a informação de nível de coeficiente é codificada em uma ordem de varredura inversa. Isso significa tipicamente que coeficientes de transformada de frequência mais alta (coeficientes mais próximos do canto inferior direito do bloco) são digitalizados primeiro. Em tal desenho, os coeficientes iniciais na ordem de varredura inversa tendem a ter valores absolutos pequenos. Se tais coeficientes forem significantes, os mesmos tendem a apresentar uma maior possibilidade de possuir um valor absoluto igual a 1 ou 2. Para esses coeficientes, a utilização de símbolos explícitos gr1Flag e gr2Flag pode reduzir o comprimento dos compartimentos binarizados para representar o nível de coeficiente, e gr1Flag e gr2Flag podem ser eficientemente codificados por um motor de codificação aritmética com um contexto designado de acordo com os conteúdos previamente codificados.
[0080] No entanto, no caso de coeficientes restantes na ordem de varredura inversa, a utilização de símbolos gr1Flag e gr2Flag pode não aperfeiçoar o desempenho de compressão visto que os coeficientes tendem a ter valores de nível absoluto maiores. Atualização de gr1Flag e gr2Flag pode até mesmo degradar a eficiência da codificação.
[0081] Um objetivo dessa descrição é reduzir o número de compartimentos codificados por contexto pela comutação adaptativa de gr1Flag e gr2Flag explícitos em sintaxe levelRem, que é codificada utilizando-se o modo de ultrapassagem com um modelo de probabilidade fixa. O modo de ultrapassagem é manuseado por um motor de codificação de ultrapassagem que opera diferentemente de um motor CABAC. O motor de codificação de ultrapassagem pode utilizar, por exemplo, um código Golomb ou um código Golomb exponencial. A sintaxe levelRem é tipicamente codificada pela binarização de valor levelRem (por exemplo, nível restante acima de 2) com um código Golomb e codificação de valor binarizado no modo de ultrapassagem com um modelo de probabilidade igual. Em suma, essa descrição propõe várias técnicas ilustrativas para codificação de sigMapFlag explícito, gr1Flag e/ou gr2Flag para apenas um subconjunto de coeficientes de uma parte ou uma TU.
[0082] Em um exemplo, essa descrição propõe a limitação do número de coeficientes em uma parte que são explicitamente codificados com gr2Flag. Em algumas propostas para HEVC, o número de coeficientes codificados explicitamente com gr2Flag em uma parte pode ser de até 16 coeficientes (por exemplo, todos os coeficientes da parte em um caso no qual os valores absolutos de todos os coeficientes são maiores que um). Essa descrição propõe a codificação de gr2Flag explícito apenas para os primeiros N coeficientes na parte ao longo da ordem de varredura possuindo um valor absoluto maior que um (isso é, coeficientes com gr1Flag igual a 1). O valor N pode ser selecionado por um codificador de vídeo e pode ser determinado para qualquer valor de 0 a 16. Em outro exemplo, N é selecionado para ser qualquer valor inferior a 16, por exemplo, de modo que menos de todos os coeficientes em um conjunto de 16 coeficientes sejam codificados com o elemento de sintaxe gr2Flag. N igual a zero significa que o símbolo gr2Flag não é codificado de forma alguma.
[0083] Como um exemplo, a descrição propõe a aplicação de um valor N fixo para todas as partes. Em um exemplo em particular, N é configurado para 1. Como tal, gr2Flag só é codificado para o primeiro coeficiente onde a codificação gr2Flag é realizada (isso é, para o primeiro coeficiente possuindo um valor absoluto maior que 1 (gr1Flag igual a 1)). O gr2Flag não precisa ser codificado se gr1Flag já tiver sido codificado para indicar que o coeficiente de transformada não é maior que 1. Nesse caso, o coeficiente de transformada é agora conhecido como não sendo superior a 2, de modo que a codificação de gr2Flag não seja necessária. Utilizando-se 1 como o valor de N fornece uma troca entre a eficiência de codificação e o número de compartimentos com base em contexto. Os valores de 2 ou 4 podem ser adequados também para N, apesar de qualquer valor de N poder ser escolhido.
[0084] A Tabela 2 ilustra os símbolos a serem codificados para a parte ilustrativa na figura 4 quando N é igual 1. Em comparação com os símbolos codificados na Tabela 1, cinco gr2Flags nas posições marcadas com um X são pulados (scan_pos 6, 5, 2, 1 0). De forma correspondente, levelRem dos coeficientes nas posições de varredura 6, 5, 2, 1 e 0 são alterados em comparação com os ilustrados na Tabela 1. Para essas posições, o valor do compartimento levelRem é calculado com (abs(level)-2) ao invés de (abs(level)-3).
Figure img0002
Figure img0003
Tabela 2. Símbolos codificados para parte quando N é igual a 1
[0085] Quando da limitação do número de gr2Flag explícito para N como descrito acima, os símbolos codificados para os níveis de coeficiente em uma parte podem ser resumidos como segue: sigMapFlag: indica se o valor absoluto do coeficiente é maior que zero. gr1Flag: indica se o valor absoluto do coeficiente é maior do que um para coeficientes com sigMapFlag igual a 1. gr2Flag: indica se o valor absoluto do coeficiente é maior do que dois para os primeiros N coeficientes com gr1Flag de valor 1. signFlag: indica o sinal dos coeficientes com sigMapFlag igual a 1. levelRem: indica o valor de nível absoluto para os coeficientes restantes; o valor (abs(level)-3) é utilizado para os coeficientes com gr2Flag igual a 1; o valor (abs(level)-2) é sinalizado para coeficientes onde gr2Flag explícito não é codificado (indicado com um X na Tabela 2) e gr1Flag igual a 1.
[0086] De acordo com as técnicas descritas acima, o codificador de vídeo 20 e/ou decodificador de vídeo 30 podem ser configurados para codificar os indicadores de mapa de significância para coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero, codifica um indicador maior que um para coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador maior que um indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que um, codifica um indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que um indica se ou não o coeficiente de transformada em particular possui um valor absoluto maior que dois, e codifica um valor restante de nível para os coeficientes de transformada na parte. O valor dos coeficientes restantes representa o valor absoluto de um coeficiente correspondente menos três para os coeficientes de transformada na parte possuindo um indicador maior que dois codificado como 1, e o valor de coeficientes restantes representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador maior que um codificado como 1, mas um indicador maior que dois não é codificado.
[0087] Em outro exemplo, essa descrição propõe a limitação do número de coeficientes em uma parte que são explicitamente codificados com gr1Flag. Em algumas propostas para HEVC, o número de elementos de sintaxe gr1Flag codificados em uma parte pode alcançar 16 nos casos onde todos os coeficientes são significantes. Como um exemplo, essa descrição propõe a codificação de gr1Flag explícito apenas para os primeiros M1 coeficientes diferentes de zero ao longo de uma ordem de varredura inversa em uma parte. M1 pode ser selecionado para ser qualquer valor de 0 a 16. Em outro exemplo, M1 é selecionado para ser qualquer valor inferior a 16, por exemplo, de modo que menos de todos os coeficientes em um conjunto de 16 coeficientes sejam codificados com o elemento de sintaxe gr1Flag. M1 é igual a zero significa que o símbolo gr1Flag não é codificado de forma alguma.
[0088] Em um exemplo, essa descrição propõe a aplicação de um valor M1 fixo para todas as partes. Em um exemplo em particular, M1 é configurado para 8. Como tal, gr1Flag só é codificado para os primeiros oito coeficientes onde a codificação de gr1Flag é realizada (isso é, para os primeiros oito coeficientes possuindo um valor absoluto maior que 0 (sigMapFlag igual a 1)). Utilizando-se 8 como o valor de M1 fornece uma permuta entre a eficiência de codificação e o número de compartimentos com base em contexto. 2 ou 4 também podem ser valores adequados de M1 para os coeficientes em uma parte. A Tabela 3 ilustra os símbolos a serem codificados para a parte ilustrativa na figura 4, quando M1 é igual a 4. a Tabela 4 ilustra os símbolos a serem codificados para a parte ilustrativa na figura 4 quando M1 é igual a 8. Em comparação com os símbolos na Tabela 1, cinco gr1Flag e quatro gr2Flag nas posições marcadas com X são pulados quando M1 é igual a 4. Em comparação com os símbolos na Tabela 1, um gr1Flag e um gr2Flag nas posições marcadas com X são pulados quando M1 é igual a 8. Para as posições marcadas com um X nas Tabelas 3 e 4, o valor do compartimento levelRem é calculado com (abs(level)-1) ao invés de (abs(level)-3).
Figure img0004
Figure img0005
Tabela 3. Símbolos codificados para a parte quando M1 é igual a 4
Figure img0006
Tabela 4. Símbolos codificados para parte quando M1 é igual a 8
[0089] Quando da limitação do número máximo de gr1Flags para M1, os símbolos codificados dos níveis de coeficiente em uma parte podem ser resumidos como segue: sigMapFlag: indica se o valor absoluto do coeficiente é maior do que zero. gr1Flag: indica se o valor absoluto do coeficiente é maior do que um para os primeiros M1 coeficientes diferentes de zero (sigMapFlag igual a 1). gr2Flag: indica se o valor absoluto do coeficiente é maior que dois para coeficientes com gr1Flag igual a 1. signFlag: indica o sinal dos coeficientes com sigMapFlag igual a 1. levelRem: indica o valor de nível absoluto para os coeficientes restantes; o valor (abs(level)-3) é utilizado para coeficientes onde gr2Flag possui um valor igual a 1; o valor (abs(level)-1) é utilizado para coeficientes diferentes de zero onde gr1Flag explícito não é codificado.
[0090] De acordo com as técnicas descritas acima, o codificador de vídeo 20 e/ou decodificador de vídeo 30 podem ser configurados para codificar um indicador de mapa de significância para coeficientes de transformada em uma parte de coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero, codifica um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um, e codifica um indicador maior que dois para coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não os coeficientes de transformada particular possuem um valor absoluto maior que dois. O codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser adicionalmente configurados para codificar um valor restante de nível para coeficientes de transformada na parte. O valor de coeficientes restantes representa o valor absoluto de um coeficiente correspondente menos três para coeficientes de transformada na parte possuindo um indicador maior que dois codificado igual a 1, e o valor de coeficientes restantes representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada na parte possuindo um indicador de mapa de significância, mas um indicador maior que um não é codificado.
[0091] Os métodos descritos acima de limitação do número de gr1Flags e gr2Flags explicitamente codificados podem ser combinados. Nesse exemplo, os símbolos codificados para os níveis de coeficiente em uma parte podem ser resumidos como segue (a princípio, N deve ser igual a ou menor que M1); sigMapFlag: dica se o valor absoluto do coeficiente é maior que zero. gr1Flag: indica se o valor absoluto do coeficiente é maior do que um para os primeiros M1 coeficientes diferentes de zero (sigMapFlag igual a 1). gr2Flag: indica se o valor absoluto do coeficiente é maior do que dois para os primeiros N coeficientes com gr1Flag igual a 1. signFlag: indica o sinal dos coeficientes com sigMapFlag igual a 1. levelRem: indica o valor de nível absoluto para os coeficientes restantes; o valor (abs(level)-3) é utilizado para coeficientes onde gr2Flag possui um valor igual a 1; o valor (abs(level)-2) é utilizado para os coeficientes onde gr2Flag explícito não é codificado e gr1Flag possui um valor igual a 1; o valor (abs(level)-1) é utilizado para os coeficientes diferentes de zero onde gr1Flag explícito não é codificado.
[0092] A Tabela 5 abaixo ilustra os símbolos a serem codificados para a parte ilustrativa na figura 4 quando ambos gr2Flag explícito (N é igual a 1) e Gr1Flags explícitos (M1 é igual a 8) são limitados. Em comparação com os símbolos na Tabela 1, um gr1Flag e cinco gr2Flags nas posições marcadas com X são pulados onde M1 é igual a 8 e N é igual a 1.
Figure img0007
Tabela 5. Símbolos codificados para parte quando M1 é igual a 8 e N é igual a 1
[0093] De acordo com as técnicas descritas acima, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero, codifica um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada com possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que um e codifica um indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicada com possuindo um valor absoluto maior do que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que dois. Nesse exemplo, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 é configurado para codificar o indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte que são diferentes de zero.
[0094] O codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode ser adicionalmente configurado para codificar um valor restante de nível para coeficientes de transformada na parte. O valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para coeficiente de transformada na parte possuindo um indicador maior que dois codificado igual a 1, o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador maior que um codificado igual a 1, mas um indicador maior que dois não é codificado, e o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada em uma parte que são diferentes de zero, mas não possuem um indicador maior que um codificado.
[0095] Como outro exemplo, essa descrição propõe o desligamento da codificação de um gr1flag explícito para os coeficientes restantes uma parte quando um número de coeficientes anteriores na parte com um valor absoluto maior que um (por exemplo, gr1Flag codificado como 1) acumula uma quantidade determinada M2. M2 pode ser configurado para qualquer valor de 0 a 16.
[0096] Em um exemplo, essa descrição propõe a aplicação de um valor M2 fixo para todas as partes. Um valor M2 iguala 1 se mostrou responsável pelo fornecimento de uma boa permuta entre eficiência de codificação e o número de compartimentos com base em contexto. 2 ou 4 são também valores ilustrativos de M2 para os coeficientes em uma parte. A Tabela 6 ilustra os símbolos a serem codificados para a parte ilustrativa na figura 4, quando M2 é igual a 1. Em comparação com os símbolos codificados na Tabela 1, seis gr1Flag nas posições marcadas com um X não são codificados. Para essas posições, a codificação levelRem é utilizada. LevelRem é calculado com (abs(level)- 1) ao invés de (abs(level)-3) como na Tabela 1.
Figure img0008
Tabela 6. Símbolos codificados para uma parte quando M2 é igual a 1
[0097] Quando da utilização do método de desligamento da codificação gr1Flag explícita para os coeficientes restantes quando o número de gr1Flags previamente codificados com um valor de 1 na ordem de varredura inversa acumula para M2, os símbolos codificados para os níveis de coeficiente em uma parte podem ser resumidos como segue: sigMapFlag: indica se o valor absoluto do coeficiente é maior que zero. gr1Flag: indica se o valor absoluto do coeficiente é maior que um para os coeficientes diferentes de zero quando a quantidade acumulada de gr1Flags previamente codificados com um valor igual a 1 é menor que M2. gr2Flag: indica se o valor absoluto do coeficiente é maior que dois para os coeficientes com gr1Flag codificado como 1. signFlag: indica o sinal dos coeficientes com sigMapFlag igual a 1. levelRem: indica o valor de nível absoluto para os coeficientes restantes; o valor (abs(level)-3) é codificado para os coeficientes onde gr2Flag é codificado como 1; o valor (abs(level)-1) é codificado para os coeficientes diferentes de zero onde gr1Flag explícito não é codificado.
[0098] Como descrito acima, o número de compartimentos codificados para gr1Flag depende do valor de gr1Flags previamente codificados na parte. Isso pode prejudicar o rendimento de codificação de compartimento, visto que um codificador de vídeo deve acompanhar o gr1Flags codificados previamente na parte. Para se aliviar o impacto dessa dependência, um codificador de vídeo pode ser configurado para codificar um grupo de gr1Flags juntos, e então determinar se desliga a codificação de um gr1Flag explícito para os coeficientes restantes depois da codificação de todo o gr1Flag em um grupo. Um grupo de gr1Flags pode consistir de um número fixo de gr1Flags. Tamanho de grupo ilustrativo pode ser de 2, 3 ou 4 gr1Flags.
[0099] Outro exemplo que pode aliviar o impacto dessa dependência, envolve a codificação de um grupo adicional de gr1Flags depois de o número de coeficientes previamente codificados com amplitude maior que um (isso é, gr1Flag codificado como 1) acumular para uma determinada quantidade de M2. Depois de esse grupo adicional ser codificado, a codificação de gr1Flags explícitos é desligada (isso é, gr1Flag não é codificado, mas, ao invés disso, um valor de levelRem é codificado no modo de ultrapassagem). Tamanhos ilustrativos do grupo adicional podem ser 1, 2 ou 3 coeficientes.
[0100] Esse método proposto de limitação do número de gr1Flags explicitamente codificados quando o número de gr1Flags previamente codificados na parte acumular para um valor M2 também pode ser combinado com o método de limitação do número máximo de gr2Flags para N. Os símbolos codificados para os níveis de coeficiente em uma parte podem ser resumidos como segue (a princípio, N deve ser menor que M2): sigMapFlag: indica se o valor absoluto do coeficiente é maior que zero. gr1Flag: indica se o valor absoluto do coeficiente é maior do que um para coeficientes quando o número acumulado de gr1Flags previamente codificados com um valor igual a 1 ou menor que M2. gr2Flag: indica se o valor absoluto do coeficiente é maior do que dois para os primeiros N coeficientes com gr1Flag codificado como 1. signFlag: indica o sinal de coeficientes com sigMapFlag igual a 1. levelRem: indica o valor de nível absoluto para os coeficientes restantes; o valor (abs(level)-3) é codificado para os coeficientes onde gr2Flag é codificado como 1; o valor (abs(level)-2) é codificado para os coeficientes onde gr2Flag explícito não é codificado e gr1Flag é codificado como 1; e o valor (abs(level))-1 é codificado para os coeficientes diferentes de zero onde gr1Flag explícito não é codificado.
[0101] Em outro exemplo dessa descrição, todas as técnicas descritas acima podem ser combinadas para reduzir o número de gr1Flags e gr2Flags explicitamente codificados. Os símbolos codificados para os níveis de coeficiente em uma parte no método combinado podem ser resumidos como segue (a princípio, M1 deve ser maior que M2); sigMapFlag: indica se o valor absoluto do coeficiente é maior que zero. gr1Flag: indica se o valor absoluto do coeficiente é maior que um para os primeiros M1 coeficientes diferentes de zero (sigMapFlag de valor igual a 1) e quando o número acumulado de grlflags previamente codificados com o valor de 1 é inferior a M2. Se qualquer uma dessas condições não for correspondida, gr1Flag não é codificado. gr2Flag: indica se o valor absoluto do coeficiente é maior que dois para os primeiros N coeficientes com gr1Flag codificado como 1. signFlag: indica o sinal dos coeficientes com sigMapFlag como 1. levelRem: indica o valor absoluto dos coeficientes restantes; o valor (abs(level)-3) é codificado para os coeficientes onde gr2flag é codificado como 1; o valor (abs(level)-2) é codificado para os coeficientes onde gr2flag explícito não é codificado e gr1flag é codificado como 1; e o valor (abs(level)-1) é codificado para coeficientes diferentes de zero onde gr1flag explícito não é codificado.
[0102] Essa descrição também propõe a limitação do número de sigMapFlags explicitamente codificados para os coeficientes em uma parte. Em propostas anteriores para HEVC, o número de sigMapFlags codificados em uma parte pode ser tanto quanto 16 sigMapFlags no caso de uma parte que não é a última em uma TU grande.
[0103] Em outro exemplo, essa descrição propõe a codificação de sigMapFlag explícito para os primeiros K1 coeficientes em uma ordem de varredura inversa em uma parte. K1 pode ser selecionado por um codificador de vídeo para ser determinado para qualquer valor entre 0 e 16. Em outro exemplo, K1 é configurado para qualquer valor inferior a 16. K1 é igual a zero significa que o símbolo gr1Flag não é codificado explicitamente de forma alguma.
[0104] Essa descrição propõe a aplicação de um valor K1 fixo para todas as partes. Um valor de 8 para K1 mostrou fornecer uma permuta aceitável entre a eficiência de codificação e o número de compartimentos com base em contexto. 12 também é um valor adequado de K1. A Tabela 7 ilustra os símbolos a serem codificados para a parte ilustrativa na figura 4 quando K1 é igual a 8. Em comparação com os símbolos na Tabela 1, oito sigMapFlags, seis gr1Flags, e cinco gr2Flags nas posições marcadas com um X são pulados. Ao invés disso, o símbolo levelRem é codificado para essas posições. Nesse caso, a codificação levelRem utiliza um valor de amplitude direto (valor absoluto) ao invés de (abs(level)-3) como na Tabela 1.
Figure img0009
Tabela 7. Símbolos codificados para a parte quando K1 é igual a 8
[0105] Quando da limitação do número máximo de sigMapFlag para um número K1, os símbolos codificados de níveis de coeficiente em uma parte podem ser resumidos como segue: sigMapFlag: indica a significância de cada coeficiente para os primeiros coeficientes K1 em uma parte. gr1Flag: indica se o valor absoluto do coeficiente é maior do que um para os coeficientes com sigMapFlag com um valor igual a 1. gr2Flag: indica se o valor absoluto do coeficiente é maior do que dois para os coeficientes com gr1flag codificado como 1. signFlag: indica o sinal dos coeficientes com sigMapFlag igual a 1. levelRem: indica os valores de nível absoluto dos coeficientes restantes; o valor (abs(level)-3 ) é codificado para coeficientes onde gr2flag é codificado como 1; o valor (abs(level)) é codificado para os coeficientes onde sigMapFlag explícito não é codificado.
[0106] A técnica de limitação do número de sigMapFlags codificados explicitamente também pode ser combinada com os métodos propostos descritos acima para a redução do número de gr1Flags e gr2Flags codificados explicitamente. Nesse exemplo,a ordem de codificação de levelRem e signFlag pode ser trocada. Isso é, a codificação levelRem pode ser realizada antes da codificação signFlag.
[0107] Como outro exemplo, essa descrição propõe o desligamento da codificação (isso é, não codificar) sigMapFlags explícitos para os coeficientes restantes quando o número de coeficientes diferentes de zero previamente codificados (isso é, sigMapFlag codificado igual a 1) acumula para uma quantidade determinada de K2. K2 pode ser selecionado por um codificador de vídeo para ser determinado em qualquer valor de 0 a 16. Em outro exemplo, K2 pode ser configurado para qualquer valor inferior a 16.Em um exemplo, essa descrição propõe a aplicação de um valor K2 fixo para todas as partes. Um valor K2 igual a 8 é ilustrado para fornecer uma permuta aceitável entre a eficiência de codificação e o número de compartimentos com base em contexto. 4 ou 12 também são valores adequados de K2 para os coeficientes em uma parte.
[0108] Os símbolos codificados para os níveis de coeficiente em uma parte, onde a codificação explícita do sigMapFlag é desligada (isso é, não codificada) quando o número de coeficientes diferentes de zero previamente codificados acumula para uma quantidade determinada de K2, pode ser resumido como segue: sigMapFlag: indica a significância de cada coeficiente quando a quantidade acumulada de sigMapFlags previamente codificados com um valor igual a 1 é inferior a K2. gr1Flag: indica se o valor absoluto do coeficiente é maior do que um para os coeficientes onde sigMapFlag é codificado como 1. gr2Flag: indica se o valor absoluto da amplitude de coeficiente é maior do que dois para coeficientes com gr1flag codificado como 1. signFlag: indica o sinal de coeficientes com sigMapFlag como 1. levelRem: indica o valor de nível absoluto para os coeficientes restantes; o valor (abs(level)-3) é codificado para os coeficientes onde gr2flag é codificado como 1; o valor (abs(level)) é codificado para coeficientes onde sigMapFlag explícito não é codificado.
[0109] Essa técnica proposta pode ser combinada com outras técnicas descritas acima para redução do número de gr1Flags e gr2Flags explicitamente codificados. Em um exemplo, a ordem de codificação de levelRem e signFlag pode ser trocada. Isso é, a codificação levelRem pode ser realizada antes da codificação signFlag.
[0110] As técnicas propostas descritas acima aplicam limites fixos (N, M1, M2, K1 e K2) para limitar o número de sigMapFlags, gr1flags e gr2flags codificados explicitamente. Como outro exemplo, a descrição também propõe sinalizar os limites K1, K2, N, M1 e M2 na sintaxe de nível alto em uma sequência de bits de vídeo codificada, tal como em um conjunto de parâmetro de sequência (SPS), um conjunto de parâmetro de imagem (PPS), um conjunto de parâmetro de adaptação (APS) ou uma sintaxe de cabeçalho de fatia (SliceHeader). Um codificador pode selecionar o melhor valor desses limites de acordo com as estatísticas de coeficiente do conteúdo de vídeo codificado. O decodificador pode então aplicar o limite em um processo de decodificação por entropia.
[0111] Perfis e níveis especificam as restrições nas sequências de bit e, dessa forma, limitam as capacidades necessárias para se decodificar as sequências de bits. Os perfis e níveis também podem ser utilizados para indicar os pontos de interoperacionalidade entre as implementações de decodificador individuais. Cada perfil específica um subconjunto de características algorítmicas e limites que devem ser suportados por todos os decodificadores se conformando a esse perfil. Cada nível específica um conjunto de limites nos valores que podem ser assumidos pelos elementos de sintaxe do padrão de compressão de vídeo. O mesmo conjunto de definições de nível é utilizado com todos os perfis, mas implementações individuais podem suportar um nível diferente para cada perfil suportado. Para qualquer perfil determinado, níveis correspondem geralmente à carga de processamento de decodificador e capacidade de memória. Como outro exemplo, diferentes limites N, M1, M2, K1 e K2 descritos acima na sintaxe de alto nível podem ser aplicados para diferentes níveis e perfil. Por exemplo, um perfil de base pode utilizar um valor limite inferior, enquanto um perfil principal pode utilizar o valor limite mais alto.
[0112] Como outro exemplo, os limites K1, K2, N, M1 e M2 podem ser alterados de forma adaptativa de acordo com as características de codificação de vídeo relacionadas do bloco de vídeo sendo codificado. Tais características podem incluir o parâmetro de quantização, tamanho de TU, profundidade de TU, modo de predição, tipo de componente colorido, estatísticas de coeficiente das partes vizinhas ou blocos, etc.
[0113] Por exemplo, os limites N, M1, M2, K1 e K2 podem ser determinados de acordo com as estatísticas de coeficiente em partes previamente codificadas. No caso de um sub-bloco 4 x 4 em uma TU grande, os limites N, M1, M2, K1 e K2 podem ser determinados de acordo com as estatísticas de coeficientes dos sub-blocos circundantes que foram previamente codificados (por exemplo, o sub-bloco inferior direito com relação a um sub-bloco codificado atualmente). As técnicas ilustrativas a seguir podem ser aplicadas. * Um valor menor (até mesmo zero) é aplicado para N, M1, M2, K1 e K2 se os coeficientes nas partes previamente codificadas (ou cercanias) possuírem um valor absoluto médio maior que algum limite. Inversamente, um valor maior para N, M1, M2, K1 e K2 pode ser utilizado quando os coeficientes nas partes previamente codificadas possuem um valor absoluto médio inferior a algum limite. * Um valor menor (até mesmo zero) é aplicado para N, M1, M2, K1 e K2 se os coeficientes nas partes previamente codificadas (ou cercanias) possuírem um valor absoluto máximo maior que algum limite. Inversamente, um valor maior para N, M1, M2, K1 e K2 pode ser utilizado quando os coeficientes nas partes previamente codificadas possuírem um valor absoluto máximo inferior a algum limite. * Um valor menor (até mesmo zero) é suprido para N, M1, M2, K1 e K2 se o número de coeficientes com um valor absoluto maior que um determinado valor nas partes previamente codificadas (ou cercanias) for maior do que algum limite. Inversamente, um valor maior para N, M1, M2, K1 e K2 pode ser utilizado quando o número de coeficientes com um valor absoluto maior do que um determinado valor nas partes previamente codificadas é inferior a algum limite.
[0114] Como um exemplo, se a quantidade de coeficientes com um valor absoluto maior do que um coeficiente for maior do que algum X limite, a codificação explícita da codificação de gr1Flags e gr2Flags pode ser desligada (isso é, configurando N, M1 e M2 para zero). Valores ilustrativos de X limite são 0, 1 e 2.
[0115] Como outro exemplo, os limites N, M1, M2, K1 e K2 podem ser alterados de forma adaptativa de acordo com as estatísticas dos elementos de sintaxe já codificados em uma parte ou bloco atual. Por exemplo, os limites N, M1 e M2 podem depender das estatísticas da codificação sigMapFlag na parte ou bloco atual. Mais especificamente, se o número de sigMapFlags com um valor de 1 for maior que um limite determinado Y, então a codificação explícita de gr1Flags e gr2Flags é desligada (isso é, configurar N, M1 e M2 para zero). O limite Y pode ter valores diferentes em perfis e níveis diferentes.
[0116] Como outro exemplo, os limites N, M1, M2, K1 e K2 podem ser determinados de acordo com as estatísticas de coeficiente em partes codificadas previamente. No caso de um sub-bloco de 4 x 4 em uma TU grande, os limites N, M1, M2, K1 e K2 podem ser determinados de acordo com as estatísticas dos coeficientes com um modelo de decadência dos sub-blocos previamente codificados.
[0117] Como outro exemplo, o valor dos limites N, M1, M2, K1 e K2 pode depender do valor de um parâmetro de quantização (QP) utilizado para codificação de um bloco atual. Como um exemplo, para uma melhor permuta entre o desempenho de compressão e rendimento de codificação, os limites maiores N, M1, M2, K1 e K2 podem ser aplicados aos coeficientes que são quantizados com um QP alto, por exemplo, um QP superior a um limite,e limites menores N, M1, M2, K1 e K2 podem ser aplicados aos coeficientes que são quantizados com um QP baixo, por exemplo, um QP inferior a ou igual a um limite.
[0118] Como outro exemplo, o valor de limites N, M1, M2, K1 e K2 pode depender do tamanho da TU. Valores limite maiores para N, M1, M2, K1 e K2 podem ser aplicados aos coeficientes de uma TU com um tamanho grande, e valores limite menores para N, M1, M2, K1 e K2 podem ser aplicados aos coeficientes de uma TU com um tamanho pequeno.
[0119] Como outro exemplo, valor dos limites N, M1, M2, K1 e K2 podem depender do modo de predição. Por exemplo, valores limítrofes maiores para N, M1, M2, K1 e K2 podem ser aplicados aos coeficientes de um bloco que é previsto com o modo intrapredição e valores limite menores para N, M1, M2, K1 e K2 podem ser aplicados aos coeficientes de um bloco que é previsto com um modo de interpredição. Como um exemplo típico, M2 é configurado para 1 e N é configurado para 1 quando o modo de predição é o intramodo, e M2 é configurado para 4 e N é configurado para 1 quando o modo de predição é o intermodo.
[0120] Como outro exemplo, o valor de limites, N, M1, M2, K1 e K2 pode depender do tipo de componente colorido. Por exemplo, valores limite maiores para N, M1, M2, K1 e K2 podem ser aplicados aos coeficientes de um componente de luminescência, e valores limítrofes menores para N, M1, M2, K1 e K2 podem ser aplicados aos coeficientes de um componente de crominância, ou vice- versa.
[0121] Como outro exemplo, o valor dos limites N, M1, M2, K1 e K2 podem depender da posição do sub-bloco na TU. Por exemplo, considera-se X e Y como sendo as posições horizontal e vertical do sub-bloco dentro da TU, respectivamente. Para o exemplo de uma TU de 16 x 16, um limite de 7 pode ser utilizado para todos os sub-blocos com X+Y igual a 6, um limite de 6 pode ser utilizado para todos os sub-blocos com X+Y igual a 5 e assim por diante. De forma resumida, o limite é igual a X + Y + 1, nesse exemplo.Um exemplo de limites com base em posição para sub- blocos 4 x 4 em uma TU de 16 x 16 ilustrado na figura 5. As posições X, Y de cada sub-bloco são ilustradas em uma TU de 16 x 16 são ilustradas na figura 5. As posições X, Y de cada sub-bloco são ilustradas no fundo do sub-bloco, enquanto o limite utilizado é ilustrado no centro do sub- bloco.
[0122] Como outro exemplo, os valores limítrofes N, M1, M2, K1 e K2 podem depender apenas da posição de sub- bloco, mas não do tamanho da TU. Por exemplo, o limite pode ser min(TH_max, TH_min+X+Y). TH_max e TH_min são duas constantes que indicam o máximo e o mínimo de limites permitidos, nesse exemplo.
[0123] Como outro exemplo, o valor de limites N, M1 e M2, K1 e K2 podem depender da posição do último coeficiente significante. Por exemplo, para uma ordem de varredura inversa, tal como a ilustrada na figura 4, começando com os limites fixos para o sub-bloco do último coeficiente significante, um codificador de vídeo pode reduzir gradualmente o limite, sub-bloco por sub-bloco. Por exemplo, os limites podem ser reduzidos por um tamanho de etapa para cada sub-bloco sucessivo. Como outro exemplo, o limite pode ser gradualmente reduzido quando os sub-blocos estão em linhas de sub-bloco diagonais diferentes. Por exemplo, considera-se X e Y como sendo a posição horizontal e vertical dos sub-blocos. Um codificador de vídeo pode utilizar o limite 8 para todos os sub-blocos com X + Y igual a Z, utilizar o limite 7 para todos os sub-blocos com X + Y igual a Z - Δ, utilizar o limite 6 para todos os sub- blocos com X + Y igual a Z - 2Δ, e assim por diante.
[0124] As figuras 6 e 7 ilustram a técnica de designação de limites em uma linha diagonal começando na posição do sub-bloco com o último coeficiente significante. O sub-bloco com o último coeficiente significante é indicado com sombreamento digital. O limite para o subconjunto possuindo o último coeficiente significante também pode ser alterado para depender da posição do último coeficiente significante na TU ou no sub-bloco.
[0125] Como discutido acima, as técnicas propostas dessa descrição limitam o número de compartimentos com base em contexto que são aplicados à codificação de nível de coeficientes dentro de cada parte (ou sub-bloco). essa descrição também propõe a introdução da interdependência de partes vizinhas dentro de toda a TU (por exemplo, uma TU maior do que 4 x 4).
[0126] Por exemplo, se gr2Flag codificado explicitamente for desligado para pelo menos um coeficiente na parte atual (ou sub-bloco), gr2Flags explicitamente codificados são automaticamente desligados para as partes seguintes que são digitalizadas posteriormente na ordem de varredura. De forma similar, se gr1Flag explicitamente codificado tiver sido desligado para pelo menos um coeficiente na parte atual (ou sub-bloco) gr1Flags codificados explicitamente são automaticamente designados para todas as partes a seguir que são digitalizadas posteriormente na ordem de varredura.
[0127] Como outro exemplo, a quantidade acumulada de coeficientes maiores que um (isso é, coeficientes que são maiores que um) e coeficientes diferentes de zero de uma parte atual são propagados a uma parte seguinte com um modelo de decadência. Por exemplo, o número inicial de "gr1Flag == 1" acumulado e o número de gr2Flags codificados da parte atual pode ser calculado com base na quantidade de coeficientes "maior que um" em partes codificadas previamente. Além disso, o número inicial de gr1Flags codificados acumulados da parte atual pode ser calculado com base na quantidade de coeficientes diferentes de zero nas partes previamente codificadas.
[0128] Como outro exemplo, no caso quando a parte é um sub-bloco 4 x 4 em uma TU grande, a informação referente à codificação de nível de sub-blocos para a direita e para o fundo do sub-bloco atualmente codificado pode ser utilizada. Por exemplo, gr2Flag explicitamente codificado pode ser automaticamente desligado para um sub- bloco se o gr2Flag explicitamente codificado nunca tiver sido desligado em um sub-bloco para a direita e/ou fundo do sub-bloco atualmente codificado. De forma similar, o gr1Flag explicitamente codificado pode ser automaticamente desligado para um sub-bloco para a direita e/ou fundo do sub-bloco atualmente codificado.
[0129] As técnicas propostas descritas acima também podem ser aplicadas à codificação de nível de coeficiente de toda uma TU, ao invés de apenas as partes 4 x 4. Por exemplo, essa descrição também propõe a codificação de gr2Flag explícito para os primeiros coeficientes NTU com o valor superior a um (isso é, gr1Flag codificado como 1) de toda uma TU em uma ordem de varredura inversa. NTU é selecionável como sendo qualquer valor de 0 a MaxCoeffNum (isso é, o número máximo de coeficientes em uma TU; 16 em uma TU de 4 x 4, 64 em uma TU de 8 x 8, 256 em uma TU de 16 x 16, 1024 em uma TU de 32 x 32). Em outro exemplo, NTU é determinada como sendo qualquer valor inferior a MaxCoeffNum. Em um exemplo, um valor de NTU fixo pode ser aplicado à codificação de nível de coeficientes para todos os tamanhos de TU. Visto que uma permuta entre a eficiência de codificação e o número de compartimentos com base em contexto, NTU pode ser configurada para um valor igual a 4. Como outro exemplo, diferentes valores de NTU podem ser aplicados a tamanhos de TU variáveis visto que exibem estatísticas diferentes. Valores de NTU menores podem ser utilizados no caso de TUs com tamanhos menores, e valores de NTU maiores podem ser utilizados no caso de TUs com tamanhos maiores. Como um exemplo típico, NTU pode ser utilizada no caso de TUs com tamanhos maiores. Como um exemplo típico, NTU pode ser configurado para 1 para uma TU de 4 x 4, 2 para uma TU de 8 x 8, 4 para uma TU de 16 x 16 e 8 para uma TU de 32 x 32.
[0130] Essa descrição também propõe a codificação de gr1Flag explícito para os primeiros coeficientes diferentes de zero M1TU na ordem de varredura inversa de toda uma TU. M1TU pode ser configurado para qualquer valor entre 0 e MaxCoeffNum da TU. Diferentes valores M1TU podem ser configurados para tamanhos TU variáveis visto que exibem estatísticas diferentes. Valores M1TU menores podem ser utilizados no caso de TUs com tamanhos menores, e valores M1TU maiores podem ser utilizados no caso de TUs com tamanhos maiores. Como um exemplo típico, os valores M1TU podem ser configurados para 4 para uma TU de 4 x 4, para 8 para uma TU de 8 x 8, para 16 para uma TU de 16 x 16 e para 32 para uma TU de 32 x 32.
[0131] Essa descrição também propõe o desligamento da codificação de gr1Flag explícito para os coeficientes restantes quando o número de coeficientes codificados previamente com um valor absoluto maior que um (isso é, gr1Flag codificado como 1) na ordem de varredura inversa de toda uma TU acumula para uma determinada quantidade M2TU. M2TU pode ser configurado para qualquer valor entre 0 e MaxCoefNum. Como um exemplo, um M2TU fixo pode ser aplicado à codificação de nível de coeficientes para todos os tamanhos de TU. Como outro exemplo, diferentes valores de M2TU podem ser configurados para tamanhos de TU variáveis. Valores M2TU menores podem ser utilizados no caso de TUs com menores tamanhos, e valores de M2TU maiores podem ser utilizados no caso de TUs com tamanho maior. Como um exemplo típico, M2TU pode ser configurado para 1 para uma TU de 4 x 4, 2 para uma TU de 8 x 8, 4 para uma TU de 16 x 16 e 8 para uma TU de 32 x 32.
[0132] Em outro exemplo, essa descrição também propõe a codificação de sigMapFlag explícito para os primeiros coeficientes K1TU em uma ordem de varredura inversa de uma TU inteira. K1TU pode ser configurado para qualquer valor de 0 a MaxCoeffNum (número máximo de coeficientes) da TU. Diferentes valores K1TU podem ser determinados para tamanhos de TU variáveis visto que exibem números diferentes de coeficientes máximos. Valores K1TU menores podem ser utilizados no caso de TUs com menores tamanhos, e valores K1TU maiores podem ser utilizados no caso de TUs com tamanhos maiores. Como um exemplo típico, K1TU pode ser determinado para 8 para uma TU de 4 x 4, 32 para uma TU de 8 x 8, 128 para uma TU de 16 x 16, e 512 para uma TU de 32 x 32.
[0133] Em outro exemplo, essa descrição propõe o desligamento da codificação de sigMapFlags explícito para os coeficientes restantes quando o número de sigMapFlag codificados previamente é igual a 1 em uma ordem de varredura de toda a TU acumula para uma determinada quantidade K2TU. K2TU pode ser configurado para qualquer valor entre 0 e MaxCoeffNum. Uma K2TU fixa pode ser aplicada à codificação de nível de coeficientes para todos os tamanhos de TU. Alternativamente, diferentes valores de K2TU podem ser configurados para tamanhos de TU variáveis. Valor K2TU menor pode ser utilizado no caso de TUs com tamanhos menores, e o valor K2TU maior pode ser utilizado no caso de TUs com tamanhos maiores. Como um exemplo típico, K2TU pode ser configurado para 4 para uma TU de 4 x 4, 16 para uma TU de 8 x 8, 32 para uma TU de 16 x 16 e 64 para uma TU de 32 x 32.
[0134] Cada uma das técnicas descritas acima para limitação da codificação explícita de gr1Flags, gr2Flags, e sigMapFlags para toda uma TU pode ser combinada. Além disso, os esquemas limítrofes adaptativos descritos acima para limites N, M1, M2, K1 e K2 devem ser aplicados também à mudança adaptativa de K1TU, K2TU, NTU, M1TU e M2TU. Na situação do esquema com base em TU, o bloco circundante significa a TU superior esquerda.
[0135] De acordo com as técnicas descritas acima, gr1Flag, gr2Flag, e/ou sigMapFlag explícitos são codificados apenas para um número limitado de coeficientes em uma parte. Como tal, mais coeficientes (incluindo os coeficientes restantes com valor absoluto pequeno) são codificados por ultrapassagem, por exemplo, com codificação Golomb, codificação Golomb-Rice ou codificação Golomb exponencial no modo de ultrapassagem. De acordo com as técnicas acima, essa descrição também propõe a modificação de parâmetros de adaptação de código Golomb-Rice para acomodar diferentes valores levelRem em comparação com os valores levelRem codificados em modelos de teste HEVC anteriores.
[0136] De acordo com alguns exemplos dessa descrição, o método de atualização Golomb-Rice pode ser adaptado de acordo com as características de coeficientes sendo codificados. Como um exemplo, o processo de atualização GolombRiceParam é dependente das características relacionadas do bloco de vídeo da parte sendo codificada, tal como o parâmetro de quantização, o tamanho da TU, a profundidade da TU, o modo de predição, o tipo de componente colorido (por exemplo, Y, U ou V) do bloco atual, e as estatísticas de coeficientes de partes ou blocos vizinhos e assim por diante.
[0137] Em geral, as técnicas descritas nessa descrição desligam a codificação de um ou mais dos gr2Flag, gr1Flag e/ou sigMapFlag sob várias condições dentro de uma parte ou dentro de uma TU de modo que a codificação Golomb- Rice seja utilizada mais cedo. Em um exemplo alternativo, essas decisões podem ser baseadas em estatísticas ou características de codificação de vídeo, tal como o número de coeficientes significativos, o número de coeficientes maiores que 1 ou maiores que 2 as TUs vizinhas. Alternativamente, as decisões podem ser baseadas em estatísticas cumulativas desde o começo de uma fatia. Em outro exemplo, o indicador a sintaxe de nível superior (por exemplo, SPS, PPS, APS ou cabeçalho de fatia) pode indicar que a comutação deva ocorrer direto a partir do começo da fatia.
[0138] Em outro exemplo da descrição, a soma dos valores absolutos de coeficientes codificados a te agora em uma parte, TU, TUs vizinhas, ou desde o começo da fatia, é utilizada como um critério para desligar a codificação de um ou mais dentre gr2Flag, gr1Flag e sigMapFlag.
[0139] Em geral, o desligamento de um elemento de sintaxe em particular, tal como gr2Flag, gr1Flag, ou sigMapFlag pode depender da informação já codificada para esse elemento de sintaxe na parte. O desligamento de um elemento de sintaxe em particular também pode depender da informação relacionada com a informação de significância e nível que foi codificada para essa parte além de para as partes anteriores e TUs desde o começo de uma fatia. Por exemplo, a decisão de se desligar a codificação de gr2Flag pode depender do número de coeficientes maior do que dois previamente codificados na parte atual. A decisão de se desligar a codificação de gr2Flag também pode depender do número de coeficientes significantes e/ou do número de coeficientes com magnitude absoluta maior do que 1 em toda a parte.
[0140] Deve-se notar que, em uma versão do Modelo de Teste HEVC (HM5.0), todos os sigMapFlags para toda a parte são enviados antes do envio de gr1Flags, e assim por diante. Como tal, de acordo com as técnicas dessa descrição, a informação codificada de sigMapFlags em uma parte pode ser utilizada para determinar se ou não se desliga a codificação de gr1Flag ou gr2Flag. De uma forma similar, toda a significância (sigMapFlag) e informação de nível (gr1Flag, gr2Flag, levelRem) das partes anteriores também podem ser utilizadas para realizar a determinação de comutação da codificação de sigMapFlag, gr1Flag e/ou gr2Flag, visto que todos os elementos de sintaxe para uma parte soa enviados antes de se prosseguir para a próxima parte. Se essa ordem (por exemplo, intercalação) for alterada, a decisão de desligamento pode ser baseada em elementos de sintaxe correspondentes aos coeficientes codificados/decodificados previamente da parte.
[0141] Se, ao invés de se utilizar as partes, toda a TU for codificada, coeficiente por coeficiente ou utilizando-se planos de elemento de sintaxe (tal como sigMapFlag, gr1Flag, etc.), como é feito em HM5.0, uma região espacial do suporte pode ser definida para se tomar a decisão de desligamento para um elemento de contexto em particular. Uma região de suporte pode ser um grupo de coeficientes de transformada próximos a um coeficiente de transformada sendo codificado. A informação codificada/decodificada a partir da região de suporte par ao elemento de sintaxe a ser desligado, além dos elementos de sintaxe que são previamente codificados, pode ser utilizada na tomada de decisão. Por exemplo, uma decisão para se desligar um gr2Flag pode utilizar um gr2Flag, um gr1Flag e/ou um sigMapFlag da região de suporte espacial. A região espacial do suporte pode conter uma vizinhança causal (isso é, já codificada ao longo da ordem de varredura) dos coeficientes de transformada na TU atual. A região de suporte também pode conter coeficientes no mesmo local de frequência que outras TUs. Se partes estiverem sendo utilizadas, a região de suporte pode ser não causal para elementos de sintaxe que são codificados anteriormente, por exemplo, gr1Flag e sigMapFlag nos exemplos acima.
[0142] Em todos os exemplos descritos aqui, incluindo os exemplos onde a codificação de um sigMapFlag é desligada, a posição do último coeficiente diferente de zero é codificada utilizando-se CABAC (ou qualquer outro codificador por entropia). Para esclarecer, quando todos os sigMapFlags, gr1Flags e gr2Flags estão desligados, a posição do último coeficiente diferente de zero em uma TU ainda é codificada. Isso é seguido pela informação de nível (utilizando codificação Golomb-Rice) começando com o último coeficiente e prosseguindo para o coeficiente DC na ordem de varredura inversa.
[0143] Em algumas propostas para HEVC, os métodos adicionais são introduzidos para transformar a codificação de coeficiente. Nesses métodos, os mesmos cinco elementos de sintaxe discutidos acima são codificados. Para derivar um contexto para CABAC para sigMapFlag, gr1Flag e gr2Flag, as estatísticas referentes a uma vizinhança de coeficientes perto do coeficiente de codificação atual são utilizadas. As estatísticas referentes a uma vizinhança de coeficientes também podem ser utilizada para determinar parâmetro Golomb-Rice (parâmetro Golomb) para o elemento de sintaxe levelRem.
[0144] Um exemplo de uma vizinhança utilizada para a derivação de contexto para o coeficiente de transformada atualmente codificado X, no caso de varredura esquerda descendente diagonal é ilustrada na figura 8 com um quadrilátero pontilhado. A vizinhança é um exemplo para codificação de sigMapFlags, mas outras vizinhanças podem ser utilizadas também. Os coeficientes na vizinhança são rotulados como X0, X1, X2, X3 e X4. A derivação de contexto para diferentes elementos de sintaxe e baseada em uma função de níveis absolutos de coeficientes na vizinhança. Ao invés da codificação de cada subconjunto ou parte em cinco passagens (uma passagem para cada elemento de sintaxe discutido acima), os elementos de sintaxe para um coeficiente de transformada podem ser codificados antes de se prosseguir para o próximo coeficiente.
[0145] Como um exemplo, as quantidades a seguir podem ser definidas utilizando-se a vizinhança de contexto. Nesse exemplo, a soma é sobre todos os coeficientes na vizinhança de contexto.
Figure img0010
[0146] Então sum_absolute_level pode ser utilizado para derivar o índice de contexto para sigMapFlag sum_absolute_levelMinus1 pode ser utilizado para derivar os índices de contexto para gr1Flag e gr2Flag.
[0147] Como discutido acima, as técnicas dessa descrição podem aperfeiçoar o rendimento CABAC pela redução de compartimentos codificados por contexto pelo desligamento adaptativo da codificação sigMapFlag, gr1Flag e gr2Flag codificada por contexto e comutando para a codificação Golomb-Rice. Essa descrição também descreve as técnicas para extensão desses conceitos para técnicas de determinação de um contexto a partir dos coeficientes de vizinhança e suas variações em potencial.
[0148] Como um exemplo, uma região de vizinhança (um exemplo típico de uma região de vizinhança é ilustrado na figura 8) para um coeficiente atual pode ser definida e a informação de nível de coeficientes dentro da região vizinha pode ser utilizada para tomar a decisão de desligamento para um elemento de contexto em particular do coeficiente atual. Por exemplo, uma decisão para se desligar gr2Flag para um coeficiente pode utilizar gr2Flag, gr1Flag e/ou sigMapFlag dentro da região de vizinhança. Uma decisão de se desligar um gr1Flag para um coeficiente pode utilizar gr1Flag e/ou sigMapFlag dentro da região de vizinhança. Quando os coeficientes são codificados de uma forma de coeficiente por coeficiente, toda a informação de nível dentro da vizinhança pode estar disponível e pode ser utilizada para determinar se desliga um gr2Flag, gr1Flag e/ou sigMapFlag do coeficiente atual. Em alguns casos, quando os valores da informação listada a seguir 1 a 6 forem maiores do que determinados limites, gr2Flag, gr1Flag e/ou sigMapFlag do coeficiente atual podem ser desligados. 1. Número de coeficientes significantes dentro da região de vizinhança como definido na equação (1). 2. Soma de nível absoluto dentro da região de vizinhança como definido na equação (2). 3. Soma do nível absoluto menos 1 dentro da região de vizinhança como definido na equação (3). 4. Nível absoluto máximo dentro da região de vizinhança. 5. Qualquer outro cálculo linear ou não linear da informação de nível dentro da região de vizinhança. 6. Qualquer outro cálculo linear ou não linear com base nos valores nos itens 1, 2, 3 e/ou 4.
[0149] Quando os coeficientes são codificados, coeficiente por coeficiente, a região de vizinhança mencionada acima só inclui coeficientes causais. Quando os coeficientes são codificados com passagens separadas, a região de vizinhança mencionada acima também pode incluir coeficientes não causais. Em alguns exemplos, a região de vizinhança mencionada acima pode ser toda a parte atual ou até menos toda a TU atual.
[0150] Como mencionado acima, toda a informação de nível dos coeficientes dentro da região de vizinhança pode ser utilizada para se tomar uma decisão de desligar a codificação com base em contexto de um elemento de sintaxe. No entanto, a codificação de todo o nível pode, em algumas casos, ser um peso nos recursos de armazenamento. De acordo, em alguns casos, o nível de coeficientes pode ser capped a um limite determinado (que pode ser 2, 3, 7 e assim por diante) e então utilizado para determinar se ou não se desliga a codificação com base em contexto para um elemento de sintaxe em particular para um coeficiente de transformada.
[0151] Como mencionado acima, a decisão de se desliga um elemento de sintaxe codificado por contexto em particular para um coeficiente pode ser feita para cada coeficiente. Alternativamente, a decisão de desligamento para um elemento de sintaxe codificado por contexto em particular pode ser acionada e propagada. Por exemplo, uma vez que um elemento de sintaxe codificado por contexto em particular é desligado para o coeficiente atual, esse elemento de sintaxe codificado por contexto em particular pode ser desligado para todos os coeficientes restantes em uma parte atual, ou mesmo para todos os coeficientes restantes em uma TU atual.
[0152] A figura 9 é um diagrama em bloco ilustrando um exemplo de um codificador de vídeo 20 que pode utilizar técnicas para codificação de coeficientes de transformada como descrito nessa descrição. O codificador de vídeo 20 será descrito no contexto de codificação HEVC para fins de ilustração, mas sem limitação dessa descrição quanto a outros padrões de codificação ou métodos que podem exigir a varredura de coeficientes de transformada. O codificador de vídeo 20 pode realizar a intra e intercodificação de CUs dentro dos quadros de vídeo. A intracodificação se baseia em predição espacial para reduzir ou remover a redundância espacial em dados de vídeo dentro de um quadro de vídeo determinado. A intercodificação se baseia na predição temporal para reduzir ou remover a redundância temporal entre um quadro atual e quadros previamente codificados de uma sequência de vídeo. O intramodo (modo I) pode se referir a qualquer um dos vários modos de compressão de vídeo com base espacial. Os intermodos tal como a predição unidirecional (modo P) ou predição bidirecional (modo B) podem fazer referência a qualquer um dos vários modos de compressão de vídeo com base temporal.
[0153] Como ilustrado na figura 9, o codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da figura 9, o codificador de vídeo 20 inclui uma unidade de compensação de movimento 44, uma unidade de estimativa de movimento 42, uma unidade de processamento de intrapredição 46, um armazenador de quadro de referência 64, um somador 50, uma unidade de processamento de transformada 52, uma unidade de quantização 54, e uma unidade de codificação por entropia 56. A unidade de processamento de transformada lustrada na figura 9 é a unidade que aplica a transformada real ou combinações de transformada a um bloco de dados residuais, e não deve ser confundida com um bloco de coeficientes de transformada, que também pode ser referido como uma unidade de transformada (TU) de uma CU. Para a 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 processamento de transformada inversa 60, e um somador 62. Um filtro de desbloqueio (não ilustrado na figura 9) também pode ser incluído para filtrar os limites de bloco para remover os artefatos de bloqueio do vídeo reconstruído. Se desejado, o filtro de desbloqueio filtra tipicamente a saída do somador 62.
[0154] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro de vídeo ou fatia 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 estimativa de movimento 42 e a unidade de compensação de movimento 44 realizam a codificação interprevisível do bloco de vídeo recebido com relação a um ou mais blocos em um ou mais quadros de referência para fornecer a compressão temporal. A unidade de processamento intrapredição 46 pode realizar a codificação intraprevisível do bloco de vídeo recebido com relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer compressão espacial.
[0155] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, com base em resultados de erro (isso é, distorção) para cada modo, e fornece o bloco intra ou interprevisto resultante (por exemplo, uma unidade de predição (PU)) para o somador 50 para gerar dados de bloco residuais e para o somador 62 para reconstruir o bloco codificado par auso em um quadro de referência. O somador 62 combina o bloco de predição com os dados quantizados invertidos, transformados invertidos a partir da unidade de processamento de transformada inversa 60 para o bloco para reconstruir o bloco codificado, como descrito em maiores detalhes abaixo. Alguns quadros de vídeo podem ser designados como quadros I, onde todos os blocos em um quadro I são codificados em um modo de intrapredição. Em alguns casos, a unidade de processamento de intrapredição 46 pode realizar a codificação de intrapredição de um bloco em um quadro P ou B, por exemplo, quando a busca de movimento realizada pela unidade de estimativa de movimento 42 não resulta em uma predição suficiente do bloco.
[0156] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. A estimativa de movimento (ou busca de movimento) é o processo de geração de vetores de movimento, que estimam o movimento para os blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma unidade de predição em um quadro atual com relação a uma amostra de referência de um quadro de referência. A unidade de estimativa de movimento 42 calcula um vetor de movimento para uma unidade de predição de um quadro intercodificado pela comparação da unidade de predição com amostras de referência de um quadro de referência armazenado no armazenador de quadro de referência 64. Uma amostra de referência pode ser um bloco que é considerado próximo à parte da CU incluindo a PU sendo codificada em termos de diferença de pixel, que pode ser determinada pela soma da diferença absoluta (SAD), soma da diferença quadrada (SSD), ou outras métricas de diferença. A amostra de referência pode ocorrer em qualquer lugar dentro de um quadro de referência ou fatia de referência, e não necessariamente em um limite de bloco (por exemplo, unidade de codificação)do quadro ou fatia de referência. Em alguns exemplos, a amostra de referência pode ocorrer em uma posição de pixel fracionada.
[0157] A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e a unidade de compensação de movimento 44. A parte do quadro de referência identificado por um vetor de movimento pode ser referida 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, pela recuperação da amostra de referência identificada por um vetor de movimento para a PU.
[0158] A unidade de processamento de intrapredição 46 pode intraprever o bloco recebido, como uma alternativa para a interpredição realizada pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44. A unidade de processamento de intrapredição 46 pode prever o bloco recebido com relação aos blocos codificados previamente, vizinhos, por exemplo, blocos acima, acima e para a direita, acima e para a esquerda, ou para a esquerda do bloco atual, considerando-se uma ordem de codificação de esquerda para a direita, cima para baixo par aos blocos. A unidade de processamento de intrapredição 46 pode ser configurada com uma variedade de modos de intrapredição diferentes. Por exemplo, a unidade de processamento por intrapredição 46 pode ser configurada com um número determinado de modos de predição direcional, por exemplo, trinta e quatro modos de predição direcional, com base no tamanho da CU sendo codificada.
[0159] A unidade de processamento intrapredição 46 pode selecionar um modo de intrapredição, por exemplo, pelo cálculo de valores de erro para vários modos de intrapredição e selecionando um modo que resulte em um valor de erro menor. Os modos de predição direcional podem incluir funções para combinar valores de pixels espacialmente vizinhos e aplicar os valores combinados a uma ou mais posições de pixel em uma PU. Uma vez que os valores para todas as posições de pixel na PU foram calculados, a unidade de processamento de intrapredição 46 pode calcular um valor de erro para o modo de predição com base nas diferenças de pixel entre a PU e o bloco recebido a ser codificado. A unidade de processamento por intrapredição 46 pode continuar a testar os modos de intrapredição até que um modo de intrapredição que resulte em um valor de erro aceitável seja descoberto. A unidade de processamento por intrapredição 46 pode então enviar a PU para o somador 50.
[0160] O codificador de vídeo 20 forma um bloco residual pela subtração de dados de predição calculados pela unidade de compensação de movimento 44 ou unidade de processamento de intrapredição 46 a partir do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que realizam essa operação de subtração. O bloco residual pode corresponder a um 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, isso é erro, entre os valores de pixels colocalizados na PU e no bloco original a ser codificado. As diferenças podem ser diferenças de crominância ou luminescência dependendo do tipo de bloco que é codificado.
[0161] A unidade de processamento de transformada 52 pode formar uma ou mais unidades de transformada (TUs) a partir do bloco residual. A unidade de processamento de transformada 52 seleciona uma transformada a partir de uma pluralidade de transformações. A transformada pode ser selecionada com base em uma ou mais características de codificação, tal como o tamanho de bloco, modo de codificação ou similar. A unidade de processamento de transformada 52 então aplica a transformada selecionada à TU, produzindo um bloco de vídeo que compreende um conjunto bidimensional de coeficientes de transformada.
[0162] A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 pode então quantizar os coeficientes de transformada. A unidade de codificação por entropia 56 pode então realizar uma varredura dos coeficientes de transformada quantizados na matriz de acordo com um modo de varredura. Essa descrição descreve a unidade de codificação por entropia 56 como realizando a varredura. No entanto, deve-se compreender que, em outros exemplos, outras unidades de processamento, como a unidade de quantização 54, podem realizar a varredura.
[0163] Uma vez que os coeficientes de transformada são digitalizados no conjunto unidimensional, a unidade de codificação por entropia 56 pode aplicar a codificação por entropia tal como CABAC, codificação aritmética binária adaptativa de contexto com base em sintaxe (SBAC), Entropia de Partição de Intervalo de Probabilidade (PIPE), ou outra metodologia de codificação por entropia para os coeficientes.
[0164] Para realizar CABAC, a unidade de codificação por entropia 56 pode selecionar um modelo de contexto para aplicar a um contexto determinado para codificar símbolos a serem transmitidos. O contexto pode se referir a, por exemplo, se os valores vizinhos são diferentes de zero ou não. A unidade de codificação por entropia 56 também pode codificar por entropia elementos de sintaxe, tal como o sinal representativo da transformada selecionada. De acordo com as técnicas dessa descrição, a unidade de codificação por entropia 56 pode selecionar o modelo de contexto utilizado para codificar esses elementos de sintaxe com base, por exemplo, em uma direção de intrapredição para os modos de intrapredição, uma posição de varredura do coeficiente correspondendo aos elementos de sintaxe, tipo de bloco e/ou tipo de transformada, entre outros fatores utilizados para a seleção de modelo de contexto.
[0165] 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, tal como o codificador de vídeo 30, ou arquivado para transmissão ou recuperação posterior.
[0166] Em alguns casos, a unidade de codificação por entropia 56 ou outra unidade do codificador de vídeo 20 pode ser configurada para realizar outras funções de codificação, em adição à codificação por entropia. Por exemplo, a unidade de codificação por entropia 56 pode ser configurada para determinar os valores de padrão de bloco codificado (CBP) para as CUs e PUs. Além disso, em alguns casos, a unidade de codificação por entropia 56 pode realizar a codificação de comprimento de coeficientes.
[0167] A unidade de quantização inversa 58 e a unidade de processamento de transformada inversa 60 aplicam a quantização inversa e a 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 pela adição do bloco residual a um bloco de predição de um dos quadros do armazenador de quadro de referência 64. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular os valores de pixel subinteiros para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento no armazenador de quadro de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em um quadro de vídeo subsequente.
[0168] A figura 10 é um diagrama em bloco ilustrando um exemplo de um decodificador de vídeo 30, que decodifica uma sequência de vídeo codificada. No exemplo da figura 10, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, uma unidade de compensação de movimento 72, uma unidade de processamento de intrapredição 74, uma unidade de quantização inversa 76, uma unidade de transformada inversa 78, um armazenador de quadro de referência 82 e um somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente alternada com a passagem de codificação descrita com relação ao codificador de vídeo 29 (ver figura 9).
[0169] A unidade de decodificação por entropia 70 realiza um processo de decodificação por entropia na sequência de bits codificada para recuperar um conjunto unidimensional dos coeficientes de transformada. O processo de decodificação por entropia utilizado depende da codificação por entropia utilizada pelo codificador de vídeo 20 (por exemplo, CABAC). O processo de codificação por entropia utilizado pelo codificador pode ser sinalizado na sequência de bits codificada ou pode ser um processo predeterminado.
[0170] Em alguns exemplos, a unidade de decodificação por entropia 70 (ou a unidade de quantização inversa 76) pode digitalizar os valores recebidos utilizando uma varredura espelhando o modo de varredura utilizado pela unidade de codificação por entropia 56 (ou unidade de quantização 54) do codificador de vídeo 20. Apesar de a varredura dos coeficientes poder 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. Adicionalmente, apesar de ilustradas como unidades funcionais separadas para facilitar a 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 uma com a outra.
[0171] A unidade de quantização inversa 76 quantiza de forma inversa, isso é, desquantiza, os coeficientes de transformada quantizados fornecidos na sequência de bits e decodificados pela unidade de decodificação por entropia 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, da mesma forma, um grau de quantização inversa que deve ser aplicado. A unidade de quantização inversa 76 pode quantizar de forma inversa os coeficientes de transformada antes ou depois de os coeficientes serem convertidos de um conjunto unidimensional para um conjunto bidimensional.
[0172] A unidade de processamento de transformada inversa 78 aplica uma transformada inversa aos coeficientes de transformada quantizada inversa. Em alguns exemplos, a unidade de processamento de transformada inversa 78 pode determinar uma transformada inversa com base na sinalização do codificador de vídeo 20, ou pela inferência da transformada a partir de uma ou mais características de codificação tal como tamanho de bloco, modo de codificação ou similares. Em alguns exemplos, a unidade de processamento de transformada inversa 78 pode determinar uma transformada para aplicar ao bloco atual com base em uma transformada sinalizada no nó raiz de um quadtree para uma LCU incluindo o bloco atual. Alternativamente, a transformada pode ser sinalizada na raiz de um quadtree TU para uma CU de nó folha no quadtree LCU. Em alguns exemplos, a unidade de processamento de transformada inversa 78 pode aplicar uma transformada inversa em cascata, na qual a unidade de processamento de transformada inversa 78 aplica duas ou mais transformações inversas aos coeficientes de transformada do bloco atual sendo decodificado.
[0173] A unidade de processamento intrapredição 74 pode gerar dados de predição para um bloco atual de um quadro atual com base m um modo de intrapredição sinalizado e dados de blocos previamente decodificados do quadro atual.
[0174] A unidade de compensação de movimento 72 pode recuperar o vetor de movimento, a direção de predição de movimento e o índice de referência a partir da sequência de bits codificada. A direção de predição de referência indica se o modo de interpredição é unidirecional (por exemplo, um quadro P) ou bidirecional (um quadro B). O índice de referência indica em qual quadro de referência o vetor de movimento candidato está baseado.
[0175] Com base na direção de predição de movimento recuperada, o índice de quadro de referência, e o vetor de movimento, a unidade de compensação de movimento produz um bloco de movimento compensado para a parte atual. Esses blocos de movimento compensado recriam essencialmente o bloco de predição utilizado para produzir os dados residuais.
[0176] A unidade de compensação de movimento 72 pode produzir blocos de movimento compensado, possivelmente realizando a interpolação com base nos filtros de interpolação. Os identificadores para filtros de interpolação a serem utilizados para estimativa de movimento com precisão de subpixel podem ser incluídos nos elementos de sintaxe. A unidade de compensação de movimento 72 pode utilizar filtros de interpolação como utilizados pelo codificador de vídeo 20 durante a codificação do bloco de vídeo para calcular os valores interpolados para os pixels subinteiros de um bloco de referência. A unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 de acordo com a informação de sintaxe recebida e utilizar os filtros de interpolação para produzir blocos de predição.
[0177] Adicionalmente, a unidade de compensação de movimento 72 e a unidade de processamento de intrapredição 74, em um exemplo HEVC, podem utilizar alguma informação de sintaxe (por exemplo, fornecida por um quadtree), para determinar os tamanhos das LCUs utilizadas para codificar os quadros da sequência de vídeo codificada. A unidade de compensação de movimento 72 e a unidade de processamento intrapredição 74 podem utilizar também informação de sintaxe para determinar a informação dividida que descreve como cada CU de um quadro da sequência de vídeo codificada é dividida (e, da mesma forma, como sub- CUs são divididas). A informação de sintaxe também pode incluir modos indicando 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 outra informação para decodificar a sequência de vídeo codificada.
[0178] O somador 80 combina os blocos residuais com os blocos de predição correspondentes gerados pela unidade de compensação de movimento 72 ou a unidade de processamento intrapredição 74 para formar os blocos decodificados. Se desejado, um filtro de desbloqueio pode ser aplicado também para filtrar os blocos decodificados a fim de remover os artefatos de bloqueio. Os blocos de vídeo decodificados são então armazenados no armazenador de quadro de referência 82, que fornece os blocos de referência para compensação de movimento subsequente e também produz o vídeo decodificado para apresentação em um dispositivo de exibição (tal como o dispositivo de exibição 32 da figura 1).
[0179] A figura 11 é um fluxograma ilustrando um método ilustrativo de acordo com as técnicas dessa descrição. O método da figura 11 pode ser executado por um codificador de vídeo (por exemplo, pelo codificador de vídeo 20 da figura 9 ou pelo decodificador de vídeo 30 da figura 10).
[0180] O codificador de vídeo 20 e o decodificador de vídeo 30 (isso é, o codificador de vídeo) pode ser configurado para realizar um método de codificação de coeficientes de transformada em um processo de codificação de vídeo. O codificador de vídeo pode ser configurado para codificar um indicador de mapa de significância para coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero (1110). O codificador de vídeo pode ser adicionalmente configurado para codificar um indicador maior que um para os coeficientes de transformada na parte dos coeficientes de transformada indicados como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não um coeficiente de transformada em partícula possui um valor absoluto maior que um (1120). O codificador de vídeo pode ser adicionalmente configurado para codificar um indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não o coeficiente de transformada em particular possui um valor absoluto maior que dois, onde N é menor do que um número máximo de coeficientes de transformada na parte (1130). Em um exemplo, o valor de N é igual a 1. Em outro exemplo, o valor de N é baseado em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um tipo de componente de cor, uma posição da parte em uma unidade de transformada, uma presença de um último coeficiente significativo na parte, e estatísticas de coeficiente de uma parte vizinha.
[0181] O codificador de vídeo pode ser adicionalmente configurado para codificar um valor restante de nível para coeficientes de transformada na parte (1140). O valor restante de nível representa valor absoluto de um coeficiente correspondente menos três para os coeficientes de transformada na parte possuindo um indicador codificado maior que dois igual a 1. O valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador codificado maior que um como, mas o indicador maior que dois não é codificado. O codificador de vídeo pode ser adicionalmente configurado para codificar um indicador de sinal para os coeficientes de transformada na parte, onde o indicador de sinal indica o sinal do coeficiente de transformada particular (1150).
[0182] Em um exemplo da descrição, o indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois são codificados utilizando CABAC com um modelo de contexto adaptativo. O valor restante de nível é codificado utilizando a codificação Golomb-Rice em um modo de ultrapassagem CABAC. O indicador de sinal é codificado no modo de ultrapassagem CABAC. Em outro exemplo da descrição, o valor restante de nível é codificado utilizando a codificação Golomb-Rice, onde a codificação Golomb-Rice é adaptada de acordo com um parâmetro Golomb. O parâmetro Golomb é determinado com base em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um modo de predição, um tipo de componente de cor, e estatísticas de coeficiente de partes vizinhas.
[0183] Em outro exemplo da descrição, o indicador de mapa de significância é codificado primeiro, o indicador maior que um é codificado em segundo lugar, o indicador maior que dois é codificado em terceiro lugar e o valor restante de nível é codificado depois do indicador maior que dois. Cada indicador de mapa de significância, indicador maior que um, indicador maior que dois, e valor restante de nível são codificados para os coeficientes de transformada na parte de acordo com uma ordem de varredura. Em um exemplo, a ordem de varredura é uma ordem de varredura diagonal inversa.
[0184] De acordo com outros exemplos da descrição, a parte é um sub-bloco de uma unidade de transformada. A parte pode ser um sub-bloco de 16 coeficientes de transformada de uma unidade de transformada. Em outro exemplo, a parte é uma unidade de transformada inteira. Em outro exemplo, a parte é um número de coeficientes de transformada consecutivos ao longo de uma ordem de varredura.
[0185] No caos de um codificador de vídeo estar realizando o método da figura 11, o método pode compreender adicionalmente a codificação de dados de pixel para produção de dados de vídeo residuais, transformada dos dados de vídeo residuais para produzir a parte de coeficientes de transformada, e sinalização do indicador de mapa de significância codificado, o indicador codificado maior que um, e o indicador codificado maior que dois, em uma sequência de bits de vídeo codificada. Adicionalmente, em outro exemplo, o codificador de vídeo pode sinalizar o valor de N em uma sequência de bits de vídeo codificada. O valor de N pode ser sinalizado em pelo menos um dentre um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, um conjunto de parâmetros de adaptação, e um cabeçalho de fatia.
[0186] No caso de um decodificador de vídeo estar realizando o método da figura 11, o método pode compreender adicionalmente o recebimento do indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois em uma sequencia de bits de vídeo codificada, a transformada inversa da parte dos coeficientes de transformada para produzir os dados de vídeo residuais, e a decodificação de dados de vídeo residuais para produzir os dados de pixel.
[0187] A figura 12 é um fluxograma ilustrando outro método ilustrativo de acordo com as técnicas dessa descrição. O método da figura 12 pode ser executado por um codificador de vídeo (por exemplo, pelo codificador de vídeo 20 da figura 9 ou pelo decodificador de vídeo 30 da figura 10).
[0188] O codificador de vídeo 20 e o decodificador de vídeo 30 (isso é, um codificador de vídeo) podem ser configurados para realizar um método de codificação dos coeficientes de transformada em um processo de codificação de vídeo. O codificador de vídeo pode ser configurado para codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero (1210). O codificador de vídeo pode ser adicionalmente configurado para codificar um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um (1220). M1 é inferior a um número máximo de coeficientes de transformada na parte. O codificador de vídeo pode ser adicionalmente configurado para codificar um indicador maior que dois para os coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois (1230). Em um exemplo, o valor de M1 é igual a 8. Em outro exemplo, o valor de M1 é baseado em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um tipo de componente de cor, uma posição da parte em uma unidade de transformada, uma presença de um último coeficiente significante na parte, e estatísticas de coeficiente de uma parte vizinha.
[0189] O codificador de vídeo pode ser adicionalmente configurado para codificar um valor restante de nível para os coeficientes de transformada na parte (1240). O valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para os coeficientes de transformada na parte possuindo um indicador codificado maior que dois igual a 1. O valor restante de nível representa valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada na parte possuindo um indicador de mapa de significância codificado, mas o indicador maior que um não é codificado. O codificador de vídeo pode ser adicionalmente configurado para codificar um indicador de sinal para coeficientes de transformada na parte, onde o indicador de sinal indica o sinal do coeficiente de transformada particular (1250).
[0190] Em um exemplo da descrição, o indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois são codificados utilizando CABAC com um modelo de contexto adaptativo. O valor restante de nível é codificado utilizando a codificação Golomb-Rice no modo de ultrapassagem CABAC. O indicador de sinal é codificado no modo de ultrapassagem CABAC. Em outro exemplo da descrição, o valor restante de nível é codificado utilizando a codificação Golomb-Rice, onde a codificação Golomb-Rice é adaptado de acordo com um parâmetro Golomb. O parâmetro Golomb é determinado com base em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um modo de predição, um tipo de componente de cor e estatísticas de coeficientes de partes vizinhas.
[0191] Em outro exemplo da descrição, o indicador de mapa de significância é codificado primeiro, o indicador maior que um é codificado em segundo lugar, o indicador maior que dois é codificado em terceiro lugar, e o valor restante de nível é codificado depois do indicador maior que dois. Cada indicador de mapa de significância, indicador maior que um, indicador maior que dois, e valor restante de nível são codificados para os coeficientes de transformada na parte de acordo com uma ordem de varredura. Em um exemplo, a ordem de varredura é uma ordem de varredura diagonal inversa.
[0192] De acordo com outros exemplos da descrição, a parte é um sub-bloco de uma unidade de transformada. A parte pode ser um sub-bloco de 16 coeficientes de transformada de uma unidade de transformada. Em outro exemplo, a parte é toda uma unidade de transformada. Em outro exemplo, a parte é um número de coeficientes de transformada consecutivos ao longo de uma ordem de varredura.
[0193] No caso de um codificador de vídeo estar realizando o método da figura 12, o método pode compreender adicionalmente a codificação de dados de pixel para produzir os dados de vídeo residuais, transformando os dados de vídeo residuais para produzir a parte dos coeficientes de transformada e sinalizando o indicador de mapa de significância codificado, o indicador maior que um codificado e o indicador maior que dois codificado em uma sequência de bits de vídeo codificada. Adicionalmente, em outro exemplo, o codificador de vídeo pode sinalizar o valor de M1 em uma sequência de bits de vídeo codificada. O valor de M1 pode ser sinalizado em pelo menos um dentre um conjunto de parâmetro de sequência, um conjunto de parâmetro de imagem, e um conjunto de parâmetro de adaptação e um cabeçalho de fatia.
[0194] No caso de um decodificador de vídeo estar realizando o método da figura 12, o método pode compreender adicionalmente o recebimento do indicador de mapa de significância, o indicador maior que um e o indicador maior que dois em uma sequência de bits de vídeo codificada, transformando de forma inversa a parte dos coeficientes de transformada para produzir os dados de vídeo residuais, e decodificando os dados de vídeo residuais para produzir os dados de pixel.
[0195] A figura 13 é um fluxograma ilustrando outro método ilustrativo de acordo com as técnicas dessa descrição. O método da figura 13 pode ser executado por um codificador de vídeo (por exemplo, pelo codificador de vídeo 20 da figura 9 ou pelo decodificador de vídeo 30 da figura 10).
[0196] O codificador de vídeo 20 e o decodificador de vídeo 30 (isso é, um codificador de vídeo) podem ser configurados para realizar um método de codificação de coeficientes de transformada em um processo de codificação de vídeo. O codificador de vídeo pode ser configurado para codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior do que zero (1310). O codificador de vídeo pode ser adicionalmente configurado para codificar um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um (1320). M1 é inferior a um número máximo de coeficientes de transformada na parte. O codificador de vídeo pode ser adicionalmente configurado para codificar um indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que dois, onde N é inferior a um número máximo de coeficientes de transformada na parte (1330). Em um exemplo, o valor de N é igual a 1. Em outro exemplo, o valor de N é baseado em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um tipo de componente de cor, uma posição da parte em uma unidade de transformada, uma presença de um último coeficiente significativo na parte, e estatísticas de coeficiente de uma parte vizinha. Em um exemplo, o valor de M1 é igual a 8. Em outro exemplo, o valor de M1 é baseado em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um tipo de componente de cor, uma posição da parte em uma unidade de transformada, uma presença de um último coeficiente significativo na parte, e estatísticas de coeficiente de uma parte vizinha.
[0197] O codificador de vídeo pode ser adicionalmente configurado para codificar um valor restante de nível para coeficientes de transformada na parte (1340). O valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador codificado maior que dois como 1. O valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador codificado maior que um como 1, mas o indicador maior que dois não é codificado. O valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada em uma parte que são diferentes de zero, mas não possuem um indicador codificado maior que um. O codificador de vídeo pode ser adicionalmente configurado para codificar um indicador de sinal para coeficientes de transformada na parte, onde o indicador de sinal indica o sinal do coeficiente de transformada em particular (1350).
[0198] Em um exemplo da descrição, um método de codificação de coeficientes de transformada em um processo de codificação de vídeo compreende a codificação de um indicador de mapa de significância para coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero, codifica um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada com possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada em particular possui um valor absoluto maior que um, onde M1 é inferior a um número máximo de coeficientes de transformada na parte, e codifique um indicador maior que dois para os coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois.
[0199] Em outro exemplo da descrição, o método pode compreender adicionalmente a codificação de um valor restante de nível para coeficientes de transformada na parte, onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para os coeficientes de transformada na parte possuindo um indicador codificado maior que dois 1, e onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um par aos coeficientes de transformada na parte possuindo um indicador de mapa de significância codificado, mas o indicador maior que um não é codificado.
[0200] Em outro exemplo da descrição, o indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois são codificados utilizando a codificação aritmética binária adaptativa de contexto (CABAC) com um modelo de contexto adaptativo, e o valor restante de nível é codificado no modo de ultrapassagem CABAC, e onde o indicador de sinal é codificado no modo de ultrapassagem CABAC.
[0201] Em outro exemplo da descrição, o método pode compreender adicionalmente a codificação do valor restante de nível utilizando um parâmetro Golomb, onde o parâmetro Golomb é determinado com base em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um modo de predição, um tipo de componente de cor, e estatísticas de coeficientes de parte vizinhas.
[0203] Em outro exemplo da descrição, o indicador de mapa de significância é codificado primeiro, o indicador maior que um é codificado em segundo lugar, o indicador maior que dois é codificado em terceiro lugar, e onde o valor restante de nível é codificado depois do indicador maior que dois.
[0204] Em outro exemplo da descrição, cada um dentre o indicador de mapa de significância, o indicador maior que um, o indicador maior que dois, e o valor restante de nível são codificados para os coeficientes de transformada na parte de acordo com uma ordem de varredura.
[0205] Em outro exemplo da descrição, a ordem de varredura é uma ordem de varredura diagonal inversa. Em outro exemplo da descrição, a parte é um sub-bloco de uma unidade de transformada. Em outro exemplo da descrição, a parte é um sub-bloco de 16 coeficientes de transformada de uma unidade de transformada. Em outro exemplo da descrição, a parte é uma unidade de transformada. Em outro exemplo da descrição, a parte é um número de coeficientes de transformada consecutivos ao longo de uma ordem de varredura. Em outro exemplo da descrição, a ordem de varredura é uma ordem de varredura inversa.
[0206] Em outro exemplo da descrição, o valor de M1 é igual 8. Em outro exemplo da descrição, o valor de M1 é baseado em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um tipo de componente de cor, uma posição da parte em uma unidade de transformada, uma presença de um último coeficiente significante na parte, e estatísticas de coeficiente de uma parte vizinha.
[0207] Em outro exemplo da descrição, o processo de codificação de vídeo é um processo de codificação de vídeo, o método compreendendo adicionalmente a codificação de dados de pixel para produzir dados de vídeo residuais, transformando os dados de vídeo residuais para produzir a parte dos coeficientes de transformada e sinalizando o indicador de mapa de significância codificado, o indicador maior que um codificado, e um indicador maior que dois codificado em uma sequência de bits de vídeo codificada.
[0208] Em outro exemplo da descrição, o método compreende adicionalmente a sinalização do valor de M1 em uma sequência de bits de vídeo codificada. Em outro exemplo da descrição, o valor de M1 é sinalizado em pelo menos um dentre um conjunto de parâmetro de sequência, um conjunto de parâmetro de imagem, um conjunto de parâmetro de adaptação, e um cabeçalho de fatia.
[0209] Em outro exemplo da descrição, o processo de codificação de vídeo é um processo de decodificação de vídeo, o método compreendendo adicionalmente o recebimento do indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois em uma sequência de bits de vídeo codificada, a transformada inversa da parte de coeficientes de transformada para produzir dados de vídeo residuais, e decodificar os dados de vídeo residuais para produzir os dados de pixel.
[0210] Em outro exemplo da descrição, a codificação de indicador maior que dois compreende a codificação de um indicador maior que um para um primeiro de N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde N é menor que um número máximo de coeficientes de transformada na parte, e onde o método compreende adicionalmente a codificação de um valor restante de nível para os coeficientes de transformada na parte, onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador codificado maio que dois como 1, onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador codificado maior que um como 1, mas o indicador maior que dois não é codificado, e onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada em uma parte que são diferentes de zero, mas não possuem um indicador codificado maior que um.
[0211] Em outro exemplo da descrição, o valor de M1 é igual a 8.
[0212] Em outro exemplo da descrição, o aparelho configurado ara codificar os coeficientes de transformada em um processo de codificação de vídeo compreende um codificador de vídeo configurado para codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero, codifica um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um, onde M1 é inferior a um número máximo de coeficientes de transformada na parte, e codifica um indicador maior que dois para os coeficientes de transformada na parte indicados como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que um indica se ou não os coeficientes de transformada particular possuem um valor absoluto maior que dois.
[0213] Em outro exemplo da descrição, o codificador de vídeo é adicionalmente configurado para codificar um valor restante de nível para os coeficientes de transformada na parte, onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para os coeficientes de transformada na parte possuindo um indicador codificado maior que dois como 1, e onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada na parte possuindo um indicador de mapa de significância codificado, mas o indicador maior que um não é codificado.
[0214] Em outro exemplo da descrição, o codificador de vídeo é adicionalmente configurado para codificar um indicador de sinal para coeficientes de transformada na parte, onde o indicador de sinal indica o sinal do coeficiente de transformada em particular.
[0215] Em outro exemplo da descrição, o indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois são codificados utilizando a codificação aritmética binária adaptativa de contexto (CABAC) com um modelo de contexto adaptativo, e onde o valor restante de nível é codificado no modo de ultrapassagem CABAC.
[0216] Em outro exemplo da descrição, o codificador de vídeo é adicionalmente configurado para codificar o valor restante de nível utilizando um parâmetro Golomb, e onde o parâmetro Golomb é determinado com base em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um modo de predição, um tipo de componente de cor, e estatísticas de coeficientes de partes vizinhas.
[0217] Em outro exemplo da descrição, o indicador de mapa de significância é codificado primeiro, o indicador maior que um é codificado em segundo lugar, o indicador maior que dois é codificado em terceiro lugar, e onde o valor restante de nível é codificado depois do indicador maior que dois. Em outro exemplo da descrição, o indicador de mapa de significância, o indicador maior que um, o indicador maior que dois, e o valor restante de nível são codificados para os coeficientes de transformada na parte de acordo com uma ordem de varredura.
[0218] Em outro exemplo da descrição, a ordem de varredura é uma ordem de varredura diagonal inversa. Em outro exemplo da descrição, a parte é um sub-bloco de uma unidade de transformada. Em outro exemplo da descrição, a parte é um sub-bloco de 16 coeficientes de transformada de uma unidade de transformada. Em outro exemplo da descrição a parte é uma unidade de transformada. Em outro exemplo da descrição, a parte é um número de coeficientes de transformada consecutivos ao longo de uma ordem de varredura. Em outro exemplo da descrição a ordem de varredura é uma ordem de varredura inversa.
[0219] Em outro exemplo da descrição, o valor de M1 é igual a 8. Em outro exemplo da descrição, o valor de M1 é baseado em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um tipo de componente de cor, uma posição da parte em uma unidade de transformada, uma presença de um último coeficiente significante na parte, e estatísticas de coeficiente de uma parte vizinha.
[0220] Em outro exemplo da descrição, o codificador de vídeo é um codificador de vídeo, e o codificador de vídeo é adicionalmente configurado para codificar dados de pixel para produzir os dados de vídeo residuais, transformar os dados de vídeo residuais para produzir a parte dos coeficientes de transformada, e sinalizar o indicador de mapa de significância codificado, o indicador codificado maior que um, e o indicador codificado maior que dois em uma sequência de bits de vídeo codificada. Em outro exemplo da descrição, o codificador de vídeo é adicionalmente configurado para sinalizar o valor de M1 em uma sequência de bits de vídeo codificada. Em outro exemplo da descrição, o valor de M1 é sinalizado em pelo menos um dentre um conjunto de parâmetro de sequência, um conjunto de parâmetro de imagem, um conjunto de parâmetros de adaptação e um cabeçalho de fatia.
[0221] Em outro exemplo da descrição, o codificador de vídeo é um decodificador de vídeo, e o decodificador de vídeo é adicionalmente configurado para receber o indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois em uma sequência de bits de vídeo codificada, a transformada inversa da parte de coeficientes de transformada para produzir dados de vídeo residuais, e decodificar os dados de vídeo residuais para produzir dados de pixel.
[0222] Em outro exemplo da descrição, o codificador de vídeo é adicionalmente configurado para codificar o indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde N é inferior a um número máximo de coeficientes de transformada na parte, onde o método compreende adicionalmente a codificação de um valor restante de nível para os coeficientes de transformada na parte, onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador codificado maior que dois como 1, onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador codificado maior que um como 1, mas o indicador maior que dois não é codificado, e onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada em uma parte que são diferentes de zero, mas não possuem um indicador codificado maior que um. Em um exemplo da descrição, o valor de N é igual a 1.
[0223] Em outro exemplo da descrição, um aparelho configurado para codificar os coeficientes de transformada em um processo de codificação de vídeo compreende meios para codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada em particular possui um valor absoluto maior que zero, meios para codificar um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um, onde M1 é inferior a um número máximo de coeficientes de transformada na parte, e meios para codificar um indicador maior que dois para os coeficientes de transformada na parte indicados como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois.
[0224] Em outro exemplo da descrição, um meio de armazenamento legível por computador armazenando instruções que, quando executadas fazem com que um ou mais processadores de um dispositivo configurado para codificar os dados de vídeo codifique um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero, codifique um indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um, onde M1 é inferior a um número máximo de coeficientes de transformada na parte, e codifique um indicador maior que dois para os coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não os coeficientes de transformada particulares possui um valor absoluto maior que dois.
[0225] Em outro exemplo da descrição, um método de codificação de coeficientes de transformada em um processo de codificação de vídeo compreende a codificação de um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero, codifique um indicador maior que um para os coeficientes de transformada na parte dos coeficientes de transformada indicados com possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que um, e codifique um indicador maior que dois para um primeiro de N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que dois, onde N é inferior a um número máximo de coeficientes de transformada na parte.
[0226] Em outro exemplo da descrição, o método compreende adicionalmente a codificação de um valor restante de nível para os coeficientes de transformada na parte, onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para os coeficientes de transformada na parte possuindo um indicador codificado maior que dois como 1, e onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador codificado maior que um como 1, mas o indicador maior que dois não é codificado.
[0227] Em outro exemplo da descrição, o método compreende adicionalmente a codificação de um indicador de sinal para coeficientes de transformada na parte, onde o indicador de sinal indica o sinal do coeficiente de transformada particular.
[0228] Em outro exemplo da descrição, o indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois são codificados utilizando a codificação aritmética binária adaptativa de contexto (CABAC) com um modelo de contexto adaptativo, onde o valor restante de nível é codificado no modo de ultrapassagem CABAC, e onde o indicador de sinal é codificado no modo de ultrapassagem CABAC.
[0229] Em outro exemplo da descrição, o método compreende adicionalmente a codificação do valor restante de nível utilizando um parâmetro Golomb, e onde o parâmetro Golomb é determinado com base em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um modo de predição, um tipo de componente de cor, e estatísticas de coeficientes de partes vizinhas.
[0230] Em outro exemplo da descrição, o indicador de mapa de significância é codificado primeiro, o indicador maior que um é codificado em segundo lugar, o indicador maior que dois é codificado em terceiro lugar, e o valor restante de nível é codificado depois do indicador maior que dois.
[0231] Em outro exemplo da descrição, cada um dentre o indicador de mapa de significância, o indicador maior que um, o indicador maior que dois, e o valor restante de nível são codificados para os coeficientes de transformada na parte de acordo com uma ordem de varredura.
[0232] Em outro exemplo da descrição, a ordem de varredura é uma ordem de varredura diagonal inversa. Em outro exemplo da descrição, a parte é um sub-bloco de uma unidade de transformada. Em outro exemplo da descrição, a parte é um sub-bloco de 16 coeficientes de transformada de uma unidade de transformada. Em outro exemplo da descrição, a parte é uma unidade de transformada. Em outro exemplo da descrição, a parte é um número de coeficientes de transformada consecutivos ao longo de uma ordem de varredura. Em outro exemplo da descrição, a ordem de varredura é uma ordem de varredura inversa.
[0233] Em outro exemplo da descrição, o valor de N é igual a 1. Em outro exemplo da descrição, o valor de N é baseado em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um tipo de componente de cor, uma posição da parte em uma unidade de transformada, uma presença de um último coeficiente significativo na parte, e estatísticas de coeficiente de uma parte vizinha.
[0234] Em outro exemplo da descrição, o processo de codificação de vídeo é um processo de codificação de vídeo, o método compreendendo adicionalmente a codificação de dados de pixel para produzir dados de vídeo residuais, transformar os dados de vídeo residuais para produzir a parte dos coeficientes de transformada, e sinalizar o indicador de mapa de significância codificado, o indicador codificado maior que um, e o indicador codificado maior que dois, em uma sequência de bits de vídeo codificada. Em outro exemplo da descrição, o método compreende adicionalmente a sinalização do valor de N em uma sequência de bits de vídeo codificada. Em outro exemplo da descrição, o valor de N é sinalizado em pelo menos um dentre um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, um conjunto de parâmetros de adaptação e um cabeçalho de fatia.
[0235] Em outro exemplo da descrição, o processo de codificação de vídeo é um processo de decodificação de vídeo, o método compreendendo adicionalmente o recebimento do indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois em uma sequência de bits de vídeo codificada, a transformada inversa da parte de coeficientes de transformada para produzir os dados de vídeo residuais, e decodificando os dados de vídeo residuais para produzir dados de pixel.
[0236] Em outro exemplo da descrição, a codificação do indicador maior que um compreende a codificação do indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte que são diferentes de zero, onde M1 é inferior a um número máximo de coeficientes de transformada na parte, e onde o método compreende adicionalmente a codificação de um valor restante de nível para os coeficientes de transformada na parte, onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador codificado maior que dois como 1, onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador codificado maior que um como 1, mas o indicador maior que dois não é codificado, e onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada em uma parte que são diferentes de zero, mas não possuem um indicador codificado maior que um. Em outro exemplo da descrição, o valor de M1 é igual a 8.
[0237] Em outro exemplo da descrição, um aparelho configurado para codificar os coeficientes de transformada em um processo de codificação de vídeo compreende um codificador de vídeo configurado para codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero, codifica um indicador maior que um para os coeficientes de transformada na parte dos coeficientes de transformada indicados como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que um, e codifica um indicador maior que dois para um primeiro de N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que dois, onde N é menor que um número máximo de coeficientes de transformada na parte.
[0238] Em outro exemplo da descrição, o codificador de vídeo é adicionalmente configurado para codificar um valor restante de nível para os coeficientes de transformada na parte, onde o valor restante de nível representa um valor absoluto de um coeficiente correspondente menos três para os coeficientes de transformada na parte possuindo um indicador codificado maior que dois como 1, e onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador codificado maior que um como 1, mas o indicador maior que dois não é codificado.
[0239] Em outro exemplo da descrição, o codificador de vídeo é configurado adicionalmente para codificar um indicador de sinal para os coeficientes de transformada na parte, onde o indicador de sinal indica o sinal do coeficiente de transformada particular.
[0240] Em outro exemplo da descrição, o indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois são codificados utilizando codificação aritmética binária adaptativa de contexto (CABAC) com um modelo de contexto adaptativo, onde o valor restante de nível é codificado no modo de ultrapassagem CABAC, e onde o indicador de sinal é codificado no modo de ultrapassagem CABAC.
[0241] Em outro exemplo da descrição, o codificador de vídeo é adicionalmente configurado para codificar o valor restante de nível utilizando um parâmetro Golomb, e onde o parâmetro Golomb é determinado com base em pelo menos um dentre o parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um modo de predição, um tipo de componente de cor, e estatísticas de coeficientes de partes vizinhas.
[0242] Em outro exemplo da descrição, o indicador de mapa de significância é codificado primeiro, o indicador maior que um é codificado em segundo lugar, o indicador maior que dois é codificado em terceiro lugar, e onde o valor restante de nível é codificado depois do indicador maior que dois.
[0243] Em outro exemplo da descrição, cada um dentre o indicador de mapa de significância, o indicador maior que um, o indicador maior que dois, e o valor restante de nível são codificados para os coeficientes de transformada na parte de acordo com uma ordem de varredura. Em outro exemplo da descrição, a ordem de varredura é uma ordem de varredura diagonal inversa.
[0244] Em outro exemplo da descrição, a parte é um sub-bloco de uma unidade de transformada. Em outro exemplo da descrição, a parte é um sub-bloco de 16 coeficientes de transformada de uma unidade de transformada. Em outro exemplo da descrição, a parte é uma unidade de transformada. Em outro exemplo da descrição, a parte é um número de coeficientes de transformada consecutivos ao longo de uma ordem de varredura. Em outro exemplo da descrição, a ordem de varredura é uma ordem de varredura inversa.
[0245] Em outro exemplo da descrição, o valor de N é igual a 1. Em outro exemplo da descrição, o valor de N é baseado em pelo menos um dentre um parâmetro de quantização, um tamanho de unidade de transformada, uma profundidade de unidade de transformada, um tipo de componente de cor, uma posição da parte em uma unidade de transformada, uma presença de um último coeficiente significante na parte, e estatísticas de coeficiente de uma parte vizinha.
[0246] Em outro exemplo da descrição, o codificador de vídeo é um codificador de vídeo, e o codificador de vídeo é adicionalmente configurado para codificar dados de pixel para produzir os dados de vídeo residuais, transformar os dados de vídeo residuais para produzir a parte dos coeficientes de transformada, e sinalizar o indicador de mapa de significância codificado, o indicador maior que um codificado e o indicador maior que dois codificado, em uma sequência de bits de vídeo codificada. Em outro exemplo da descrição, o codificador de vídeo é adicionalmente configurado para sinalizar o valor de N em uma sequência de bits de vídeo codificada. Em outro exemplo da descrição, o valor de N é sinalizado em pelo menos um dentre um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, um conjunto de parâmetros de adaptação, e um cabeçalho de fatia.
[0247] Em outro exemplo da descrição, o codificador de vídeo é um decodificador de vídeo, e o decodificador de vídeo é adicionalmente configurado para receber o indicador de mapa de significância, o indicador maior que um e o indicador maior que dois em uma sequência de bits de vídeo codificada, a transformada inversa da parte dos coeficientes de transformada para produzir os dados de vídeo residuais, e decodificação dos dados de vídeo residuais para produzir dados de pixel.
[0248] Em outro exemplo da descrição, o codificador de vídeo é adicionalmente configurado para codificar o indicador maior que um para um primeiro dos M1 coeficientes de transformada na parte que são diferentes de zero, onde M1 é inferior a um número máximo de coeficientes de transformada na parte, e onde o codificador de vídeo é adicionalmente configurado para codificar um valor restante de nível para os coeficientes de transformada na parte, onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador codificado maior que dois como 1, onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador codificado maior que um como 1, mas o indicador maior que dois não é codificado, e onde o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada em uma parte que são diferentes de zero, mas não possuem um indicador codificado maior que um. Em outro exemplo da descrição, o valor de M1 é igual a 8.
[0249] Em outro exemplo da descrição, um aparelho configurado para codificar os coeficientes de transformada em um processo de codificação de vídeo compreende meios para codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero, meios para codificar um indicador maior que um para os coeficientes de transformada na parte dos coeficientes de transformada indicados como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que um, e meios para codificar um indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicados como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que dois, onde N é menor que um número máximo de coeficientes de transformada na parte.
[0259] Em outro exemplo da descrição, um meio de armazenamento legível por computador armazenando instruções que, quando executadas, fazem com que um ou mais processadores configurados para codificar os coeficientes de transformada em um processo de codificação de vídeo para codificar um indicador de mapa de significância para os coeficientes de transformada em um aparte dos coeficientes de transformada, onde o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero, codificar um indicador maior que um para os coeficientes de transformada na parte dos coeficientes de transformada indicados como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, onde o indicador maior que um indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que um, e codifica um indicador maior que dois para um primeiro dos N coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, onde o indicador maior que dois indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que dois, onde N é menor que um número máximo de coeficientes de transformada na parte.
[0251] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento com base em hardware. O meio legível por computador pode incluir meio de armazenamento legível por computador, que corresponde a um meio tangível tal como meio de armazenamento de dados, ou meio de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um local para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa forma, o meio legível por computador geralmente pode corresponder a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) meio de comunicação tal como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que possa ser acessado por um ou mais computadores ou um ou mais processadores para recuperar as instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa descrição. Um produto de programa de computador pode incluir um meio legível por computador.
[0252] Por meio de exemplo, e não de limitação, tal meio de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente chamada de meio legível por computador. Por exemplo, se instruções forem transmitidas a partir de um sítio da rede, servidor ou outra fonte remota utilizando um cabo coaxial, um cabo de fibra ótica, um par torcido, uma linha de assinante digital (DSL) ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas, então o cabo coaxial, o cabo de fibra ótica, o par torcido, DSL ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas são incluídos na definição de meio. Deve-se compreender, no entanto, que o meio de armazenamento legível por computador e o meio de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outro meio transiente, mas, ao invés disso, são direcionados a meio de armazenamento tangível não transiente. Disquete e disco, como utilizados aqui, incluem disco compacto (CD), disco a laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu- ray, onde disquetes normalmente reproduzem dados magneticamente, enquanto discos reproduzem os dados oticamente com lasers. Combinações do acima também devem ser incluídas no escopo do meio legível por computador.
[0253] Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), ou outro conjunto de circuito lógico discreto ou integrado equivalente. De acordo. o termo "processador", como utilizado aqui pode fazer referência a qualquer uma dentre a estrutura acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui. Adicionalmente, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro de hardware dedicado e/ou módulos de software configurados para codificar e decodificar, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0254] As técnicas dessa descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chip). Vários componentes, módulos ou unidades são descritos nessa descrição para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas descritas, mas não exigem necessariamente a realização por unidades de hardware diferentes. Ao invés disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com o software adequado e/ou firmware.
[0255] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (14)

1. Método de codificação de coeficientes de transformada gerados por uma transformada de dados residuais baseada em blocos a partir de predição espacial ou temporal em um processo de codificação de vídeo, o método compreendendo: codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, em que o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero; codificar um indicador de sinal para coeficientes de transformada na parte, em que o indicador de sinal indica o sinal do coeficiente de transformada particular; codificar um indicador maior que um para coeficientes de transformada em uma ordem de varredura inversa na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, em que o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um; codificar um indicador maior que dois para coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, em que o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois; codificar um valor restante de nível para os coeficientes de transformada na parte, e sinalizar o indicador de sinal, o indicador de mapa de significância, o indicador maior que um, o indicador maior que dois e o valor restante de nível em uma sequência de bits de vídeo codificada, em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador maior que dois codificado que indica que o coeficiente de transformada em particular possui um valor absoluto maior que dois, e em que o indicador de mapa de significância, o indicador maior que um e o indicador maior que dois são codificados utilizando codificação aritmética binária adaptativa de contexto, CABAC, com um modelo de contexto adaptativo, e em que o valor restante de nível é codificado no modo de desvio CABAC, e em que o indicador de sinal é codificado no modo de desvio CABAC, caracterizado pelo fato de que um indicador maior que um é codificado somente para os primeiros M1 coeficientes de transformada diferentes de zero na ordem de varredura inversa, em que M1 é inferior a um número máximo de coeficientes de transformada na parte; e em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada na parte que são diferentes de zero, mas não possuem um indicador maior que um codificado.
2. Método de decodificação de coeficientes de transformada gerados por uma transformada de dados residuais baseada em blocos a partir de predição espacial ou temporal em um processo de codificação de vídeo, o método compreendendo: receber um indicador de sinal, um indicador de mapa de significância, um indicador maior que um, um indicador maior que dois e um valor restante de nível em uma sequência de bits de vídeo codificada; decodificar o indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, em que o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero; decodificar o indicador de sinal para coeficientes de transformada na parte, em que o indicador de sinal indica o sinal do coeficiente de transformada particular; decodificar o indicador maior que um para coeficientes de transformada em uma ordem de varredura inversa na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, em que o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um; decodificar o indicador maior que dois para coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, em que o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois; decodificar o valor restante de nível para os coeficientes de transformada na parte, em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador maior que dois codificado que indica que o coeficiente de transformada em particular possui um valor absoluto maior que dois, e em que o indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois são codificados utilizando codificação aritmética binária adaptativa de contexto, CABAC, com um modelo de contexto adaptativo, e em que o valor restante de nível é codificado no modo de desvio CABAC, e em que o indicador de sinal é codificado no modo de desvio CABAC, caracterizado pelo fato de que um indicador maior que um é codificado somente para primeiros M1 coeficientes de transformada diferentes de zero na ordem de varredura inversa, em que M1 é inferior a um número máximo de coeficientes de transformada na parte; e em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada na parte que são diferentes de zero, mas não possuem um indicador codificado maior que um.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o indicador maior que dois é codificado para os primeiros N coeficientes de transformada na ordem de varredura inversa indicada como tendo um valor absoluto maior do que um pelo indicador maior que um, e em que o número de indicadores maiores que dois, N, é igual ou menor que o número de indicadores maiores que um, M1, e em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador maior que um codificado que indica que o coeficiente de transformada particular possui um valor absoluto maior que um, mas o indicador maior que dois não é codificado.
4. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que compreende adicionalmente codificar ou decodificar o primeiro indicador de mapa de significância, o segundo indicador maior que um, o terceiro indicador maior que dois, e o valor restante de nível depois do indicador maior que dois.
5. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que a parte é um dentre: um sub-bloco de um bloco de coeficientes de transformada; um sub-bloco de 16 coeficientes de transformada de um bloco de coeficientes de transformada; uma unidade de transformada; e um número de coeficientes de transformada consecutivos ao longo de uma ordem de varredura inversa dentro de um bloco de coeficientes de transformada.
6. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o valor de M1 é 8.
7. Método de codificação de coeficientes de transformada gerados por uma transformada de dados residuais baseada em blocos a partir de predição espacial ou temporal em um processo de codificação de vídeo, o método compreendendo: codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, em que o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero; codificar um indicador de sinal para coeficientes de transformada na parte, em que o indicador de sinal indica o sinal do coeficiente de transformada particular; codificar um indicador maior que um na parte de coeficientes de transformada indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, em que o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um; codificar um indicador maior que dois para coeficientes de transformada em uma ordem de varredura inversa na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, em que o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois; codificar um valor restante de nível para os coeficientes de transformada na parte, e sinalizar o indicador de sinal, o indicador de mapa de significância, o indicador maior que um, o indicador maior que dois e o valor restante de nível em uma sequência de bits de vídeo codificada, em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador maior que dois codificado que indica que o coeficiente de transformada em particular possui um valor absoluto maior que dois, e em que o indicador de mapa de significância, o indicador maior que um e o indicador maior que dois são codificados utilizando codificação aritmética binária adaptativa de contexto, CABAC, com um modelo de contexto adaptativo, e em que o valor restante de nível é codificado no modo de desvio CABAC, e em que o indicador de sinal é codificado no modo de desvio CABAC, caracterizado pelo fato de que um indicador maior que dois é codificado para os primeiros coeficientes de transformada N na ordem de varredura inversa, em que N é inferior a um número máximo de coeficientes de transformada na parte, e em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador maior que um codificado que indica que o coeficiente de transformada particular possui um valor absoluto maior que um, mas o indicador maior que dois não é codificado.
8. Método de decodificação de coeficientes de transformada gerados por uma transformada de dados residuais baseada em blocos a partir de predição espacial ou temporal em um processo de codificação de vídeo, o método compreendendo: receber um indicador de sinal, um indicador de mapa de significância, um indicador maior que um, um indicador maior que dois e um valor restante de nível em uma sequência de bits de vídeo codificada; decodificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, em que o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero; decodificar o indicador de sinal para coeficientes de transformada na parte, em que o indicador de sinal indica o sinal do coeficiente de transformada particular; decodificar o indicador maior que um para coeficientes de transformada em uma ordem de varredura inversa na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, em que o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um; decodificar o indicador maior que dois para coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, em que o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois; decodificar o valor restante de nível para os coeficientes de transformada na parte, em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador codificado maior que dois que indica que o coeficiente de transformada em particular possui um valor absoluto maior que dois, e em que o indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois são codificados utilizando codificação aritmética binária adaptativa de contexto, CABAC, com um modelo de contexto adaptativo, e em que o valor restante de nível é codificado no modo de desvio CABAC, e em que o indicador de sinal é codificado no modo de desvio CABAC, caracterizado pelo fato de que um indicador maior que dois é codificado para os primeiros N coeficientes de transformada na ordem de varredura inversa, em que N é inferior a um número máximo de coeficientes de transformada na parte, e em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador maior que um codificado que indica que o coeficiente de transformada particular possui um valor absoluto maior que um, mas o indicador maior que dois não é codificado.
9. Método, de acordo com a reivindicação 7 ou 8, caracterizado pelo fato de que no qual o valor de N é 1.
10. Memória legível por computador caracterizada pelo fato de que armazena instruções que, quando executadas, fazem com que um ou mais processadores de um dispositivo configurado para codificar dados de vídeo realizem o método conforme definido em qualquer uma das reivindicações 1 a 9.
11. Aparelho configurado para codificação de coeficientes de transformada gerados por uma transformada de dados residuais baseada em blocos a partir de predição espacial ou temporal em um processo de codificação de vídeo, o aparelho compreendendo: meios para codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, em que o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero; meios para codificar um indicador de sinal para coeficientes de transformada na parte, em que o indicador de sinal indica o sinal do coeficiente de transformada particular; meios para codificar um indicador maior que um para coeficientes de transformada em uma ordem de varredura inversa na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, em que o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um; meios para codificar um indicador maior que dois para coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, em que o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois; meios para codificar um valor restante de nível para os coeficientes de transformada na parte, e meios para sinalizar o indicador de sinal, o indicador de mapa de significância, o indicador maior que um, o indicador maior que dois e o valor restante de nível em uma sequência de bits de vídeo codificada, em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador codificado maior que dois que indica que o coeficiente de transformada em particular possui um valor absoluto maior que dois, e em que o indicador de mapa de significância, o indicador maior que um e o indicador maior que dois são codificados utilizando codificação aritmética binária adaptativa de contexto, CABAC, com um modelo de contexto adaptativo, e em que o valor restante de nível é codificado no modo de desvio CABAC, e em que o indicador de sinal é codificado no modo de desvio CABAC, caracterizado pelo fato de que um indicador maior que um é codificado somente para primeiros M1 coeficientes de transformada na ordem de varredura inversa, em que M1 é inferior a um número máximo de coeficientes de transformada na parte; e em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada na parte que são diferentes de zero, mas não possuem um indicador codificado maior que um.
12. Aparelho configurado para codificação de coeficientes de transformada gerados por uma transformada de dados residuais baseada em blocos a partir de predição espacial ou temporal em um processo de codificação de vídeo, o aparelho compreendendo: um codificador de vídeo configurado para: codificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, em que o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero; codificar um indicador de sinal para coeficientes de transformada na parte, em que o indicador de sinal indica o sinal do coeficiente de transformada particular; codificar um indicador maior que um para coeficientes de transformada em uma ordem de varredura inversa na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, em que o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um; codificar um indicador maior que dois para transformar coeficientes na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, em que o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois; codificar um valor restante de nível para os coeficientes de transformada na parte, e sinalizar o indicador de sinal, o indicador de mapa de significância, o indicador maior que um, o indicador maior que dois e o valor restante de nível em uma sequência de bits de vídeo codificada, em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador codificado maior que dois que indica que o coeficiente de transformada em particular possui um valor absoluto maior que dois, e em que o indicador de mapa de significância, o indicador maior que um e o indicador maior que dois são codificados utilizando codificação aritmética binária adaptativa de contexto, CABAC, com um modelo de contexto adaptativo, e em que o valor restante de nível é codificado no modo de desvio CABAC, e em que o indicador de sinal é codificado no modo de desvio CABAC, caracterizado pelo fato de que um indicador maior que dois é codificado para os primeiros N coeficientes de transformada na ordem de varredura inversa, em que N é inferior a um número máximo de coeficientes de transformada na parte, e em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos dois para os coeficientes de transformada na parte possuindo um indicador maior que um codificado que indica que o coeficiente de transformada particular possui um valor absoluto maior que um, mas o indicador maior que dois não é codificado.
13. Aparelho configurado para decodificação de coeficientes de transformada gerados por uma transformada de dados residuais baseada em blocos a partir de predição espacial ou temporal em um processo de codificação de vídeo, o aparelho compreendendo: meios para receber um indicador de sinal, um indicador de mapa de significância, um indicador maior que um, um indicador maior que dois e um valor restante de nível em uma sequência de bits de vídeo codificada; meios para decodificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, em que o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero; meios para decodificar o indicador de sinal para coeficientes de transformada na parte, em que o indicador de sinal indica o sinal do coeficiente de transformada particular; meios para codificar o indicador maior que um para coeficientes de transformada em uma ordem de varredura inversa na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, em que o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um; meios para decodificar o indicador maior que dois para transformar coeficientes na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, em que o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois; meios para decodificar o valor restante de nível para os coeficientes de transformada na parte, em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador codificado maior que dois que indica que o coeficiente de transformada em particular possui um valor absoluto maior que dois, e em que o indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois são codificados utilizando codificação aritmética binária adaptativa de contexto, CABAC, com um modelo de contexto adaptativo, e em que o valor restante de nível é codificado no modo de desvio CABAC, e em que o indicador de sinal é codificado no modo de desvio CABAC, caracterizado pelo fato de que um indicador maior que um é codificado somente para primeiros M1 coeficientes de transformada na ordem de varredura inversa, em que M1 é inferior a um número máximo de coeficientes de transformada na parte; e em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos um para os coeficientes de transformada na parte que são diferentes de zero, mas não possuem um indicador codificado maior que um.
14. Aparelho configurado para decodificação de coeficientes de transformada gerados por uma transformada de dados residuais baseada em blocos a partir de predição espacial ou temporal em um processo de codificação de vídeo, o aparelho compreendendo: um codificador de vídeo configurado para: receber um indicador de sinal, um indicador de mapa de significância, um indicador maior que um, um indicador maior que dois e um valor restante de nível em uma sequência de bits de vídeo codificada; decodificar um indicador de mapa de significância para os coeficientes de transformada em uma parte dos coeficientes de transformada, em que o indicador de mapa de significância indica se ou não um coeficiente de transformada particular possui um valor absoluto maior que zero; decodificar o indicador de sinal para coeficientes de transformada na parte, em que o indicador de sinal indica o sinal do coeficiente de transformada particular; codificar o indicador maior que um para coeficientes de transformada na parte indicada como possuindo um valor absoluto maior que zero pelo indicador de mapa de significância, em que o indicador maior que um indica se ou não o coeficiente de transformada particular possui um valor absoluto maior que um; decodificar o indicador maior que dois para coeficientes de transformada na ordem de varredura inversa na parte indicada como possuindo um valor absoluto maior que um pelo indicador maior que um, em que o indicador maior que dois indica se ou não os coeficientes de transformada particulares possuem um valor absoluto maior que dois; decodificar o valor restante de nível para os coeficientes de transformada na parte, em que o valor restante de nível representa o valor absoluto de um coeficiente correspondente menos três para o coeficiente de transformada na parte possuindo um indicador codificado maior que dois que indica que o coeficiente de transformada em particular possui um valor absoluto maior que dois, e em que o indicador de mapa de significância, o indicador maior que um, e o indicador maior que dois são codificados utilizando codificação aritmética binária adaptativa de contexto, CABAC, com um modelo de contexto adaptativo, e em que o valor restante de nível é codificado no modo de desvio CABAC, e em que o indicador de sinal é codificado no modo de desvio CABAC, caracterizado pelo fato de que um indicador maior que dois é codificado para os primeiros N coeficientes de transformada na ordem de varredura inversa, em que N é inferior a um número máximo de coeficientes de transformada na parte.
BR112014017364-8A 2012-01-17 2012-12-11 Aperfeiçoamento de rendimento para codificação de nível de coeficiente cabac BR112014017364B1 (pt)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US201261587624P 2012-01-17 2012-01-17
US61/587,624 2012-01-17
US201261589290P 2012-01-20 2012-01-20
US61/589,290 2012-01-20
US201261591772P 2012-01-27 2012-01-27
US201261606347P 2012-03-02 2012-03-02
US61/606,347 2012-03-02
US201261622785P 2012-04-11 2012-04-11
US61/622,785 2012-04-11
US13/710,212 2012-12-10
US13/710,212 US9191670B2 (en) 2012-01-17 2012-12-10 Throughput improvement for CABAC coefficient level coding
PCT/US2012/068997 WO2013109357A1 (en) 2012-01-17 2012-12-11 Throughput improvement for cabac coefficient level coding

Publications (3)

Publication Number Publication Date
BR112014017364A2 BR112014017364A2 (pt) 2017-06-13
BR112014017364A8 BR112014017364A8 (pt) 2017-07-04
BR112014017364B1 true BR112014017364B1 (pt) 2022-07-19

Family

ID=48779948

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014017364-8A BR112014017364B1 (pt) 2012-01-17 2012-12-11 Aperfeiçoamento de rendimento para codificação de nível de coeficiente cabac

Country Status (25)

Country Link
US (1) US9191670B2 (pt)
EP (1) EP2805487B1 (pt)
JP (1) JP6113752B2 (pt)
KR (1) KR101772740B1 (pt)
CN (1) CN104054341B (pt)
AR (1) AR092787A1 (pt)
AU (1) AU2012366197B2 (pt)
BR (1) BR112014017364B1 (pt)
CA (1) CA2860804C (pt)
DK (1) DK2805487T3 (pt)
ES (1) ES2608595T3 (pt)
HK (1) HK1198233A1 (pt)
HU (1) HUE031071T2 (pt)
IL (1) IL233262B (pt)
MX (1) MX2014008625A (pt)
MY (1) MY168364A (pt)
PH (1) PH12014501478B1 (pt)
PL (1) PL2805487T3 (pt)
PT (1) PT2805487T (pt)
RU (1) RU2611992C2 (pt)
SG (1) SG11201403382VA (pt)
SI (1) SI2805487T1 (pt)
TW (1) TWI561061B (pt)
WO (1) WO2013109357A1 (pt)
ZA (1) ZA201406024B (pt)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0846131A (ja) * 1994-08-02 1996-02-16 Sony Corp リードフレーム及びワイヤボンディング装置
KR20120035096A (ko) * 2010-10-04 2012-04-13 한국전자통신연구원 쿼드 트리 변환 구조에서 부가 정보의 시그널링 방법 및 장치
KR101215152B1 (ko) 2011-04-21 2012-12-24 한양대학교 산학협력단 인루프 필터링을 적용한 예측 방법을 이용한 영상 부호화/복호화 방법 및 장치
MY167316A (en) 2011-11-04 2018-08-16 Sharp Kk Arithmetic decoding device, image decoding device, arithmetic coding device, image coding device, and arithmetic decoding method
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
US20130188736A1 (en) 2012-01-19 2013-07-25 Sharp Laboratories Of America, Inc. High throughput significance map processing for cabac in hevc
US10616581B2 (en) 2012-01-19 2020-04-07 Huawei Technologies Co., Ltd. Modified coding for a transform skipped block for CABAC in HEVC
US9036710B2 (en) * 2012-03-08 2015-05-19 Blackberry Limited Unified transform coefficient encoding and decoding
US8891888B2 (en) * 2012-09-05 2014-11-18 Google Inc. Entropy coding for recompression of images
US9955163B2 (en) * 2013-06-17 2018-04-24 Google Llc Two pass quantization of video data
US9648350B2 (en) 2013-07-22 2017-05-09 Texas Instruments Incorporated Method and apparatus for decoding a progressive JPEG image
KR102250088B1 (ko) * 2013-10-24 2021-05-10 삼성전자주식회사 비디오 스트림을 복호화하는 방법 및 장치
GB201321851D0 (en) * 2013-12-10 2014-01-22 Canon Kk Run length parameters coding for palette mode
US10142636B2 (en) * 2014-06-09 2018-11-27 Sony Corporation Communication system with coding mechanism and method of operation thereof
US10574993B2 (en) 2015-05-29 2020-02-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
WO2016206590A1 (en) 2015-06-23 2016-12-29 Mediatek Singapore Pte. Ltd. Method and apparatus for transform coefficient coding of non-square blocks
WO2017041271A1 (en) * 2015-09-10 2017-03-16 Mediatek Singapore Pte. Ltd. Efficient context modeling for coding a block of data
KR20180040515A (ko) * 2015-09-10 2018-04-20 삼성전자주식회사 부호화 장치, 복호화 장치, 그 부호화 및 복호화 방법
MX2019012294A (es) * 2017-04-13 2020-01-27 Lg Electronics Inc Metodo de codificacion/decodificacion de imagenes y dispositivo para el mismo.
US10861196B2 (en) 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US11818401B2 (en) 2017-09-14 2023-11-14 Apple Inc. Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
US10897269B2 (en) 2017-09-14 2021-01-19 Apple Inc. Hierarchical point cloud compression
US11113845B2 (en) 2017-09-18 2021-09-07 Apple Inc. Point cloud compression using non-cubic projections and masks
US10909725B2 (en) 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
US10484695B2 (en) 2017-10-23 2019-11-19 Google Llc Refined entropy coding for level maps
US10607373B2 (en) 2017-11-22 2020-03-31 Apple Inc. Point cloud compression with closed-loop color conversion
US11010928B2 (en) 2018-04-10 2021-05-18 Apple Inc. Adaptive distance based point cloud compression
US10909727B2 (en) 2018-04-10 2021-02-02 Apple Inc. Hierarchical point cloud compression with smoothing
US10939129B2 (en) 2018-04-10 2021-03-02 Apple Inc. Point cloud compression
US10909726B2 (en) 2018-04-10 2021-02-02 Apple Inc. Point cloud compression
US10645381B2 (en) 2018-04-30 2020-05-05 Google Llc Intra-prediction for smooth blocks in image/video
US11017566B1 (en) 2018-07-02 2021-05-25 Apple Inc. Point cloud compression with adaptive filtering
US11202098B2 (en) 2018-07-05 2021-12-14 Apple Inc. Point cloud compression with multi-resolution video encoding
US11012713B2 (en) 2018-07-12 2021-05-18 Apple Inc. Bit stream structure for compressed point cloud data
CN110827206A (zh) * 2018-08-14 2020-02-21 钰创科技股份有限公司 过滤信号的数位滤波器
US11483575B2 (en) * 2018-08-24 2022-10-25 Hfi Innovation Inc. Coding transform coefficients with throughput constraints
EP3975572A1 (en) * 2018-09-11 2022-03-30 LG Electronics Inc. Residual coding method and device for same
KR102616533B1 (ko) * 2018-09-20 2023-12-20 엘지전자 주식회사 변환 계수 레벨 코딩 방법 및 그 장치
MX2021003343A (es) 2018-09-24 2021-07-02 Fraunhofer Ges Forschung Codificación eficiente de coeficientes de transformacion usando o adecuada para una combinación con cuantización escalar dependiente.
US11006150B2 (en) * 2018-09-24 2021-05-11 Tencent America LLC Method and apparatus for video coding
US11367224B2 (en) 2018-10-02 2022-06-21 Apple Inc. Occupancy map block-to-patch information compression
CN112806017B (zh) * 2018-10-05 2024-03-15 Tcl王牌电器(惠州)有限公司 用于编码变换系数的方法和设备
WO2020073884A1 (en) * 2018-10-08 2020-04-16 Mediatek Singapore Pte. Ltd. Method and apparatus of last significant coefficient coding in image and video coding
US11470329B2 (en) * 2018-12-26 2022-10-11 Tencent America LLC Method and apparatus for video coding
US10798397B2 (en) 2019-01-02 2020-10-06 Tencent America LLC Method and apparatus for video coding
CN117915090A (zh) * 2019-01-12 2024-04-19 Oppo广东移动通信有限公司 在图像编译系统中使用残差信息的图像解码方法及其装置
US11595656B2 (en) * 2019-01-25 2023-02-28 Hfi Innovation Inc. Method and apparatus of transform coefficient coding with TB-level constraint
WO2020172668A1 (en) * 2019-02-24 2020-08-27 Tencent America LLC Improved residual coding for transform skip mode and block differential pulse-code modulation
CN113615183A (zh) * 2019-03-12 2021-11-05 交互数字Vc控股公司 用于视频编解码的残差编解码中常规二进制位的灵活分配
US11057564B2 (en) 2019-03-28 2021-07-06 Apple Inc. Multiple layer flexure for supporting a moving image sensor
US11418790B2 (en) * 2019-06-28 2022-08-16 Qualcomm Incorporated Arithmetic coding with selective adaptation for video coding
US11711544B2 (en) 2019-07-02 2023-07-25 Apple Inc. Point cloud compression with supplemental information messages
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
US11538196B2 (en) 2019-10-02 2022-12-27 Apple Inc. Predictive coding for point cloud compression
US11398833B2 (en) 2019-10-02 2022-07-26 Apple Inc. Low-latency encoding using a bypass sub-stream and an entropy encoded sub-stream
US11895307B2 (en) 2019-10-04 2024-02-06 Apple Inc. Block-based predictive coding for point cloud compression
WO2021118310A1 (ko) * 2019-12-13 2021-06-17 주식회사 케이티 비디오 신호 처리 방법 및 장치
US11798196B2 (en) 2020-01-08 2023-10-24 Apple Inc. Video-based point cloud compression with predicted patches
US11625866B2 (en) 2020-01-09 2023-04-11 Apple Inc. Geometry encoding using octrees and predictive trees
US11468601B2 (en) 2020-01-13 2022-10-11 Samsung Display Co., Ltd. Systems and methods for scalable throughput entropy coder
US11615557B2 (en) 2020-06-24 2023-03-28 Apple Inc. Point cloud compression using octrees with slicing
US11620768B2 (en) 2020-06-24 2023-04-04 Apple Inc. Point cloud geometry compression using octrees with multiple scan orders
US11948338B1 (en) 2021-03-29 2024-04-02 Apple Inc. 3D volumetric content encoding using 2D videos and simplified 3D meshes
WO2022232064A1 (en) * 2021-04-26 2022-11-03 Innopeak Technology, Inc. Bypass alignment in video coding

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6900748B2 (en) 2003-07-17 2005-05-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method and apparatus for binarization and arithmetic coding of a data value
JP2005184232A (ja) 2003-12-17 2005-07-07 Sony Corp 符号化装置、プログラム、およびデータ処理方法
KR100612015B1 (ko) 2004-07-22 2006-08-11 삼성전자주식회사 컨텍스트 적응형 이진 산술 부호화 방법 및 그 장치
US7525456B2 (en) 2005-04-15 2009-04-28 Qpixel Technology, Inc. Methods for adaptively selecting entropy encoding modes
US7061410B1 (en) 2005-07-18 2006-06-13 Lsi Logic Corporation Method and/or apparatus for transcoding between H.264 CABAC and CAVLC entropy coding modes
US8599925B2 (en) * 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
KR101148614B1 (ko) 2007-09-06 2012-05-25 닛본 덴끼 가부시끼가이샤 영상 부호화 장치 및 영상 부호화 방법
US8891615B2 (en) * 2008-01-08 2014-11-18 Qualcomm Incorporated Quantization based on rate-distortion modeling for CABAC coders
KR101375668B1 (ko) * 2008-03-17 2014-03-18 삼성전자주식회사 변환 계수의 부호화, 복호화 방법 및 장치
CN101677399B (zh) 2008-09-18 2014-07-09 香港科技大学 基于流密码的安全编码方案的多媒体内容编码方法和系统
EP2182732A1 (en) 2008-10-28 2010-05-05 Panasonic Corporation Switching between scans in image coding
CN108777790B (zh) 2010-04-13 2021-02-09 Ge视频压缩有限责任公司 解码显著性图的装置以及编码显著性图的装置和方法
CN103119849B (zh) * 2010-04-13 2017-06-16 弗劳恩霍夫应用研究促进协会 概率区间分割编码器和译码器
US9154801B2 (en) 2010-09-30 2015-10-06 Texas Instruments Incorporated Method and apparatus for diagonal scan and simplified coding of transform coefficients
CN102256125B (zh) * 2011-07-14 2013-06-05 北京工业大学 面向高效视频编码hevc基于上下文的自适应算数编码方法

Also Published As

Publication number Publication date
HUE031071T2 (en) 2017-06-28
BR112014017364A2 (pt) 2017-06-13
SI2805487T1 (sl) 2016-12-30
PH12014501478A1 (en) 2014-09-22
BR112014017364A8 (pt) 2017-07-04
PL2805487T3 (pl) 2017-03-31
AU2012366197A1 (en) 2014-08-07
ES2608595T3 (es) 2017-04-12
JP6113752B2 (ja) 2017-04-12
ZA201406024B (en) 2017-09-27
IL233262A0 (en) 2014-08-31
RU2611992C2 (ru) 2017-03-01
KR20140119736A (ko) 2014-10-10
DK2805487T3 (en) 2016-12-12
PT2805487T (pt) 2016-12-28
RU2014133791A (ru) 2016-03-20
JP2015507424A (ja) 2015-03-05
CN104054341A (zh) 2014-09-17
SG11201403382VA (en) 2014-09-26
US20130182757A1 (en) 2013-07-18
AU2012366197B2 (en) 2017-04-13
CA2860804A1 (en) 2013-07-25
TW201342925A (zh) 2013-10-16
CA2860804C (en) 2019-03-26
US9191670B2 (en) 2015-11-17
WO2013109357A1 (en) 2013-07-25
EP2805487A1 (en) 2014-11-26
IL233262B (en) 2018-02-28
PH12014501478B1 (en) 2014-09-22
KR101772740B1 (ko) 2017-08-29
MY168364A (en) 2018-10-31
EP2805487B1 (en) 2016-09-21
HK1198233A1 (en) 2015-03-13
TWI561061B (en) 2016-12-01
AR092787A1 (es) 2015-05-06
MX2014008625A (es) 2014-08-21
CN104054341B (zh) 2017-08-01

Similar Documents

Publication Publication Date Title
BR112014017364B1 (pt) Aperfeiçoamento de rendimento para codificação de nível de coeficiente cabac
KR101825793B1 (ko) 컨텍스트 적응 멀티-레벨 유의도 코딩을 위한 컨텍스트 도출
KR102315238B1 (ko) 비디오 코딩 프로세스에서 계수 레벨 코딩을 위한 라이스 파라미터 초기화
KR101774737B1 (ko) 비디오 코딩을 위한 잔여 쿼드 트리 (rqt) 코딩
ES2550803T3 (es) Reducción del número de contextos para codificación aritmética binaria adaptativa al contexto
ES2864623T3 (es) Codificación de parámetros de cuantificación (QP) en codificación de video
US9161046B2 (en) Determining quantization parameters for deblocking filtering for video coding
KR101536541B1 (ko) 리프 레벨 코딩 단위의 서브셋들에 대한 변환 계수들에 대한 구문 엘리먼트들의 시그널링
US20130272423A1 (en) Transform coefficient coding
BR112015025910B1 (pt) Atualização de parâmetro rice para codificação de nível de coeficiente em processo de codificação de vídeo
BR122020003135B1 (pt) Método e dispositivo para decodificar dados de vídeo e meio de armazenamento não transitório legível por computador
KR101699600B1 (ko) 비디오 코딩을 위해 최종 포지션 코딩을 위한 콘텍스트의 도출
BR112016021138B1 (pt) Codificação de nível de coeficiente em um processo de codificação de vídeo

Legal Events

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

Ipc: H04N 7/00 (2011.01)

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

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