BR112016030530B1 - Método e aparelho para decodificação de dados de vídeo e método e aparelho para codificação de dados de vídeo em um fluxo de bits - Google Patents

Método e aparelho para decodificação de dados de vídeo e método e aparelho para codificação de dados de vídeo em um fluxo de bits Download PDF

Info

Publication number
BR112016030530B1
BR112016030530B1 BR112016030530-2A BR112016030530A BR112016030530B1 BR 112016030530 B1 BR112016030530 B1 BR 112016030530B1 BR 112016030530 A BR112016030530 A BR 112016030530A BR 112016030530 B1 BR112016030530 B1 BR 112016030530B1
Authority
BR
Brazil
Prior art keywords
palette
video
bitstream
index
sequence
Prior art date
Application number
BR112016030530-2A
Other languages
English (en)
Other versions
BR112016030530A2 (pt
Inventor
Wei Pu
Rajan Laxman Joshi
Jianle Chen
Marta Karczewicz
Chengteh Hsieh
Feng Zou
Joel Sole Rojals
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 BR112016030530A2 publication Critical patent/BR112016030530A2/pt
Publication of BR112016030530B1 publication Critical patent/BR112016030530B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

método para codificação de modo de paleta. trata-se de um método para a decodificação de dados de vídeo fornecido em um fluxo de bits, em que o fluxo de bits inclui uma unidade de codificação (cu) codificada no modo de paleta, que inclui: realizar a análise sintática de uma paleta associada à cu fornecida no fluxo de bits; realizar a análise sintática de um ou mais comprimentos de sequência fornecidos no fluxo de bits que estão associados à cu; realizar a análise sintática de um ou mais valores de índice fornecidos no fluxo de bits que estão associados à cu; e realizar a análise sintática de um ou mais valores de pixel de escape fornecidos no fluxo de bits que estão associados à cu. os valores de pixel de escape podem ser submetidos à análise sintática a partir de posições consecutivas no fluxo de bits, em que as posições consecutivas estão no fluxo de bits após todos os comprimentos de sequência e os valores de índice associados à cu. o método pode incluir adicionalmente decodificar a cu com base na paleta analisada, nos comprimentos de sequência submetidos à análise sintática, nos valores de índice submetidos à análise sintática e nos valores de escape submetidos à análise sintática.

Description

CAMPO DA TÉCNICA
[0001] Esta revelação refere-se ao campo de codificação e compactação de vídeo, e particularmente à codificação de conteúdo de tela.
ANTECEDENTES
[0002] As capacidades de vídeo digital podem ser incorporadas em uma grande variedade de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistema de difusão sem fio, assistentes digitais pessoais (PDAs), computadores do tipo laptop ou desktop, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos eletrônicos, consoles de jogos eletrônicos, telefones de rádio via satélite ou celular, dispositivos de teleconferência por vídeo e similares. Os dispositivos de vídeo digital implantam conjuntos de procedimentos de compactação de vídeo, como aqueles descritos nos padrões definidos por Grupo 2 de Especialistas de Figuração de Movimento (MPEG-2), MPEG-4, União Internacional de Telegrafia - Setor de Normatização de Telecomunicações (ITU-T) H.263, H.264 de ITU-T/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, descodificar e/ou armazenar informações de vídeo digital de maneira mais eficiente implantando-se tais conjuntos de procedimentos de codificação de vídeo.
[0003] Com a prevalência do acesso de Internet de alta velocidade, os aplicativos de vídeo emergentes como compartilhamento de desktop remoto, infraestrutura de desktop virtual e exibição sem fio exigem eficácia de compactação alta do conteúdo de tela. Entretanto, as ferramentas de codificação intra e intervídeos adicionais foram projetadas principalmente para conteúdo natural. O conteúdo de tela tem características significativamente diferentes em comparação ao conteúdo natural (por exemplo, bordas agudas e menos ou nenhum ruído), o que torna aquelas ferramentas de codificação tradicionais menos suficientes.
SUMÁRIO
[0004] Cada um dentre os sistemas, métodos e dispositivos desta revelação tem diversos aspectos inovadores, nenhum dos quais é unicamente responsável pelos atributos desejáveis revelados no presente documento.
[0005] Em um aspecto, um método para a decodificação de dados de vídeo em um fluxo de bits, em que o fluxo de bits inclui uma unidade de codificação (CU) codificada em modo de paleta, inclui: realizar a análise sintática de uma paleta associada à CU fornecida no fluxo de bits, sendo que a paleta inclui uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel associado ao valor de índice; realizar a análise sintática de um ou mais comprimentos de sequência fornecidos no fluxo de bits que são associados à CU, sendo que cada comprimento de sequência indica um número de posições consecutivas, a partir de e incluindo uma posição atual na CU, que são associadas a um modo de cópia à esquerda ou um modo de cópia acima; realizar a análise sintática de um ou mais valores de índice fornecidos no fluxo de bits que é associado à CU, em que cada valor de índice indica um valor de pixel na paleta que é associado à posição atual na CU; realizar a análise sintática de um ou mais valores de pixel de escape fornecidos no fluxo de bits que são associados à CU, em que cada valor de pixel de escape indica um valor de pixel que não está na paleta, em que os valores de pixel de escape são submetidos à análise sintática a partir de posições consecutivas no fluxo de bits, em que as posições consecutivas estão no fluxo de bits após todos os comprimentos de sequência e os valores de índice associados à CU; e decodificar a CU com base na paleta analisada, comprimentos de sequência submetidos à análise sintática, valores de índice submetidos à análise sintática e valores de escape submetidos à análise sintática.
[0006] Em outro aspecto, um aparelho para decodificar dados de vídeo fornecidos em um fluxo de bits inclui uma memória e um processador em comunicação com a memória. A memória é configurada para armazenar dados de vídeo associados ao fluxo de bits, sendo que o fluxo de bits inclui uma unidade de codificação (CU) codificada em modo de paleta. O processador é configurado para: realizar a análise sintática de uma paleta associada à CU fornecida no fluxo de bits, sendo que a paleta inclui uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel associado ao valor de índice; realizar a análise sintática de um ou mais comprimentos de sequência fornecidos no fluxo de bits que são associados à CU, sendo que cada comprimento de sequência indica um número de posições consecutivas, a partir de e incluindo uma posição atual na CU, que são associadas a um modo de cópia à esquerda ou um modo de cópia acima; realizar a análise sintática de um ou mais valores de índice fornecidos no fluxo de bits que é associado à CU, em que cada valor de índice indica um valor de pixel na paleta que é associado à posição atual na CU; realizar a análise sintática de um ou mais valores de pixel de escape fornecidos no fluxo de bits que são associados à CU, em que cada valor de pixel de escape indica um valor de pixel que não está na paleta, em que os valores de pixel de escape são submetidos à análise sintática a partir de posições consecutivas no fluxo de bits, em que as posições consecutivas estão no fluxo de bits após todos os comprimentos de sequência e os valores de índice associados à CU; e decodificar a CU com base na paleta analisada, comprimentos de sequência submetidos à análise sintática, valores de índice submetidos à análise sintática e valores de escape submetidos à análise sintática.
[0007] Em um aspecto, um método para a codificação de dados de vídeo em um fluxo de bits inclui: analisar uma pluralidade de pixels em uma unidade de codificação (CU), sendo que cada pixel tem um valor de pixel associado ao mesmo; gerar uma paleta com base na pluralidade de pixels na CU, sendo que a paleta inclui uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel associado ao valor de índice; determinar um ou mais comprimentos de sequência associados à CU no fluxo de bits, sendo que cada comprimento de sequência indica um número de posições consecutivas, a partir de e incluindo uma posição atual na CU, que são associadas a um modo de cópia à esquerda ou um modo de cópia acima; determinar um ou mais valores de índice associados à CU no fluxo de bits, em que cada valor de índice indica um valor de pixel na paleta que é associado à posição atual na CU; determinar um ou mais valores de pixel de escape associados à CU no fluxo de bits, em que cada valor de pixel de escape indica um valor de pixel que não está na paleta; e codificar a CU com base na paleta gerada, comprimentos de sequência determinados, valores de índice determinados e valores de pixel de escape determinados, em que os valores de pixel de escape são codificados em posições consecutivas no fluxo de bits, sendo que as posições consecutivas estão no fluxo de bits após todos os comprimentos de sequência e os valores de índice associados à CU.
[0008] Em outro aspecto, um aparelho para codificar dados de vídeo em um fluxo de bits inclui uma memória e um processador em comunicação com a memória. A memória é configurada para armazenar dados de vídeo associados ao fluxo de bits, sendo que o fluxo de bits inclui uma unidade de codificação (CU) codificada em modo de paleta. O processador é configurado para: analisar uma pluralidade de pixels em uma unidade de codificação (CU), sendo que cada pixel tem um valor de pixel associado ao mesmo; gerar uma paleta com base na pluralidade de pixels na CU, sendo que a paleta inclui uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel associado ao valor de índice; determinar um ou mais comprimentos de sequência associados à CU no fluxo de bits, sendo que cada comprimento de sequência indica um número de posições consecutivas, a partir de e incluindo uma posição atual na CU, que são associadas a um modo de cópia à esquerda ou um modo de cópia acima; determinar um ou mais valores de índice associados à CU no fluxo de bits, em que cada valor de índice indica um valor de pixel na paleta que é associado à posição atual na CU; determinar um ou mais valores de pixel de escape associados à CU no fluxo de bits, em que cada valor de pixel de escape indica um valor de pixel que não está na paleta; e codificar a CU com base na paleta gerada, comprimentos de sequência determinados, valores de índice determinados e valores de pixel de escape determinados, em que os valores de pixel de escape são codificados em posições consecutivas no fluxo de bits, sendo que as posições consecutivas estão no fluxo de bits após todos os comprimentos de sequência e os valores de índice associados à CU.
BREVE DESCRIÇÃO DOS DESENHOS
[0009] A Figura 1A é um diagrama de blocos que ilustra um sistema de decodificação e codificação de vídeo exemplificativo que pode utilizar conjuntos de procedimentos de acordo com os aspectos descritos nesta revelação.
[0010] A Figura 1B é um diagrama de blocos que ilustra outro sistema de decodificação e codificação de vídeo exemplificativo que pode realizar os conjuntos de procedimentos de acordo com os aspectos descritos nesta revelação.
[0011] A Figura 2 é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implantar conjuntos de procedimentos de acordo com aspectos descritos nesta revelação.
[0012] A Figura 3 é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implantar conjuntos de procedimentos de acordo com os aspectos descritos nesta revelação.
[0013] A Figura 4 é um diagrama de blocos que ilustra uma CU de entrada, um bloco de índice, um pixel de escape e uma paleta associada à CU.
[0014] A Figura 5 é um fluxograma que ilustra um método para a codificação de dados de vídeo em um fluxo de bits de acordo com aspectos descritos nesta revelação.
[0015] A Figura 6 é um fluxograma que ilustra um método para a decodificação de dados de vídeo em um fluxo de bits de acordo com aspectos descritos nesta revelação.
[0016] A Figura 7 é um fluxograma que ilustra outro método para a decodificação de dados de vídeo em um fluxo de bits de acordo com aspectos descritos nesta revelação.
[0017] A Figura 8 é um fluxograma que ilustra outro método para a codificação de dados de vídeo em um fluxo de bits de acordo com aspectos descritos nesta revelação.
[0018] A Figura 9 é um fluxograma que ilustra um método para a codificação de dados de vídeo em um fluxo de bits de acordo com aspectos descritos nesta revelação.
DESCRIÇÃO DETALHADA
[0019] Em implantações existentes de codificação de conteúdo de tela, pode haver algumas redundâncias no fluxo de bits. Essas redundâncias podem ser removidas ignorando-se determinada sinalização de elemento de sintaxe quando determinadas condições são satisfeitas. Além disso, alguns elementos de sintaxe podem introduzir dependência de análise sintática. Por exemplo, um elemento de sintaxe para indicar o modo de sequência pode não precisar ser sinalizado se o pixel atual estiver na primeira linha do bloco, visto que o decodificador pode inferior o modo de sequência como o modo de cópia de índice (por exemplo, modo de cópia à esquerda). Além disso, em um caso em que o decodificador decodifica o valor de índice primeiro, e dependendo do valor de índice decodificado, o decodificador decide se o modo é modo de cópia de índice ou modo de escape (por exemplo, com base em se o valor de índice representa ou não um valor de índice de escape). Se o decodificador determinar o modo como o modo de cópia de índice, o analisador sintático de decodificador continuar a realizar a análise sintática do comprimento de sequência. Se o decodificador determinar o modo como o modo de escape, o analisador sintático de decodificador pode continuar a realizar a análise sintática de valores de escape e/ou comprimento de sequência. Visto que os analisadores sintáticos geralmente operam em uma velocidade muito maior do que os decodificadores, tal dependência entre o mecanismo de decodificação e o mecanismo de análise sintática pode afetar o desempenho do analisador sintático (por exemplo, visto que o mecanismo de análise sintática pode precisar aguardar pelo mecanismo de decodificação decodificar os bits submetidos à análise sintática). Portanto, um método aprimorado dos blocos de processamento codificados no modo de codificação de paleta é desejado. Neste pedido, vários métodos inovadores para organizar os elementos de paleta no fluxo de bits para evitar ou reduzir a dependência de análise sintática no modo de paleta são descritos.
[0020] Na descrição abaixo, os conjuntos de procedimentos de H.264/Codificação de Vídeo Avançada (AVC) relacionados a certas modalidades são descritos; o padrão de HEVC e os conjuntos de procedimentos relacionados também são discutidos. Embora determinadas modalidades sejam descritas no presente documento no contexto dos padrões HEVC e/ou H.264, uma pessoa da habilidade comum na técnica entenderia que os sistemas e os métodos revelados no presente documento podem ser aplicáveis a qualquer padrão de codificação de vídeo adequado. Por exemplo, as modalidades reveladas no presente documento podem ser aplicáveis a um ou mais dos padrões a seguir: União Internacional de Telecomunicação (ITU), Setor de Padronização de Telecomunicação (ITU-T) H.261, Organização Internacional para Padronização/Comissão Eletrotécnica Internacional (ISO/IEC) MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), que inclui a extensão de alcance.
[0021] HEVC, em geral, segue a estrutura de padrões de codificação de vídeo anteriores em muitos aspectos. A unidade de predição em HEVC é diferente das unidades de predição (por exemplo, macrobloco) em certos padrões de codificação de vídeo anteriores. De fato, o conceito de macrobloco não existe em HEVC, conforme compreendido em certos padrões de codificação de vídeo anteriores. O macrobloco é substituído por uma estrutura hierárquica com base em um esquema de árvore quadrática que pode fornecer alta flexibilidade, dentre outros benefícios possíveis. Por exemplo, dentro do esquema de HEVC, três tipos de blocos, Unidade de Codificação (CU), Unidade de Predição (PU) e Unidade de Transformada (TU), são definidos. A CU pode se referir à divisão de unidade básica de região. A CU pode ser considerada análoga ao conceito de macrobloco, mas HEVC não restringe o tamanho máximo de CUs e pode permitir a divisão recursiva em quatro CUs com tamanho igual para aprimorar a adaptabilidade de conteúdo. A PU pode ser considerada a unidade básica de inter/intrapredição e uma única PU pode conter múltiplas partições de formato arbitrário para codificar de modo eficaz os padrões de imagem irregular. A TU pode ser considerada a unidade básica de transformada. A TU pode ser definida de modo independente da PU; no entanto, o tamanho de uma TU pode ser limitado ao tamanho da CU a qual a TU pertence. Essa separação da estrutura de bloco em três diferentes conceitos pode permitir que cada unidade seja otimizada de acordo com a função respectiva da unidade, que pode resultar em eficiência de codificação aprimorada.
PADRÕES DE CODIFICAÇÃO DE VÍDEO
[0022] Uma imagem digital, tal como uma imagem de vídeo, uma imagem de TV, uma imagem estática ou uma imagem gerada por um gravador de vídeo ou um computador, pode incluir pixels ou amostras dispostos em linhas horizontais e verticais. O número de pixels em uma única imagem está tipicamente na casa das dezenas de milhares. Cada pixel contém tipicamente informações de luminância e crominância. Sem compactação, a quantidade pura de informações a serem transmitidas de um codificador de imagem para um decodificador de imagem tornaria a transmissão de imagem em tempo real impraticável. Para reduzir a quantidade de informações a serem transmitidas, diversos métodos de compactação diferentes, tais como padrões de JPEG, MPEG e H.263, foram desenvolvidos.
[0023] Os padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), e HEVC que inclui a extensão de alcance.
[0024] Adicionalmente, um padrão de codificação de vídeo, a saber, HEVC, foi desenvolvido pelo Time de Colaboração Conjunta em codificação de vídeo (JCT- VC) de Grupo de Especialistas em Codificação de Vídeo (VCEG) de ITU-T e ISO/IEC MPEG. A citação completa para o Rascunho de HEVC 10 é o documento JCTVC-L1003, Bross et al, “High Efficiency Video Coding (HEVC) Text Specification Draft 10”, Equipe Colaborativa Conjunta em Codificação de Vídeo (JCT-VC - Joint Collaborative Team on Video Coding) da ITU-T SGI 6 WP3 e ISO/IEC JTC1/SC29/WG11, 12a reunião: Geneva, Suíça, 14 de janeiro de 2013 a 23 de janeiro de 2013. O formato range extension para HEVC também é desenvolvido pelo JCT-VC.
SISTEMA DE CODIFICAÇÃO DE VÍDEO
[0025] Vários aspectos dos sistemas, aparelhos e métodos inovadores são descritos mais completamente a partir deste ponto no presente documento com referência aos desenhos anexos. Esta revelação pode, entretanto, ser incorporada de muitas formas diferentes e não deve ser interpretada como limitada a qualquer estrutura específica ou função apresentada ao longo de toda esta revelação. Em vez disso, esses aspectos são fornecidos de modo que essa revelação seja minuciosa e completa, e transmita plenamente o escopo da revelação para aqueles versados na técnica. Com base nos ensinamentos no presente documento, uma pessoa versada na técnica deve apreciar que o escopo da revelação está destinado a cobrir qualquer aspecto dos sistemas, aparelhos e métodos inovadores revelados no presente documento, sejam os mesmos implantados independentemente de, ou combinados com qualquer outro aspecto da revelação. Por exemplo, um aparelho pode ser implantado ou um método pode ser praticado através do uso de qualquer quantidade dos aspectos apresentados no presente documento. Além disso, o escopo da presente revelação se destina a abranger tal aparelho ou método que é praticado com o uso de outra estrutura, funcionalidade ou estrutura e funcionalidade em adição a ou além dos vários aspectos da presente revelação apresentados no presente documento. Deve ser entendido que qualquer aspecto revelado no presente documento pode ser incorporado por um ou mais elementos de uma reivindicação.
[0026] Embora aspectos particulares sejam descritos no presente documento, muitas variações e permutações desses aspectos se encaixam no escopo da revelação. Embora alguns benefícios e vantagens dos aspectos preferenciais sejam mencionados, o escopo da revelação não está destinado a ser limitado a benefícios, usos ou objetivos particulares. Ao invés disso, os aspectos da revelação estão destinados a serem amplamente aplicáveis a diferentes tecnologias sem fio, configurações de sistema, redes e protocolos de transmissão, alguns dos quais são ilustrados a título de exemplo nas Figuras e na descrição a seguir dos aspectos preferenciais. A descrição detalhada e desenhos são meramente ilustrativos da revelação ao invés de limitantes, sendo que o escopo da revelação é definido pelas reivindicações anexas e equivalentes das mesmas.
[0027] OS desenhos anexos ilustram exemplos. Os elementos indicados por números de referência nos desenhos anexos correspondem a elementos indicados por números de referência similares na descrição a seguir. Nesta revelação, os elementos que têm nomes que começam com palavras ordinais (por exemplo, “primeiro”, “segundo”, “terceiro” e assim por diante) não necessariamente implicam que os elementos têm uma ordem particular. Ao invés disso, tais palavras ordinais são meramente usadas para se referir a diferentes elementos de um tipo igual ou similar.
[0028] A Figura 1A é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplificativo 10 que pode utilizar os conjuntos de procedimentos de acordo com os aspectos descritos nesta revelação. Conforme usado descrito no presente documento, o termo "codificador de vídeo" ou "codificador" se refere genericamente tanto a codificadores de vídeo quanto a decodificadores de vídeo. Nesta revelação, os termos “codificação de vídeo” ou “codificação” podem se referir genericamente à codificação de vídeo e à decodificação de vídeo. Além de codificadores de vídeo e decodificadores de vídeo, os aspectos descritos no presente pedido podem ser estendidos a outros dispositivos relacionados, como transcodificadores (por exemplo, dispositivos que podem decodificar um fluxo de bits e recodificar outro fluxo de bits) e dispositivos intermediários (por exemplo, dispositivos que podem modificar, transformar e/ou, de outro modo, manipular um fluxo de bits).
[0029] Conforme mostrado na Figura 1A, o sistema de codificação de vídeo 10 inclui um dispositivo- fonte 12 que gera dados de vídeo codificados a serem decodificados posteriormente por um dispositivo de destino 14. No exemplo da Figura 1A, o dispositivo-fonte 12 e o dispositivo de destino 14 constituem dispositivos separados. Nota-se, entretanto, que o dispositivo-fonte e o dispositivo de destino 12 podem estar ou fazer parte do mesmo dispositivo, conforme mostrado no exemplo da Figura 1B.
[0030] Referindo-se novamente à Figura 1A, o dispositivo-fonte 12 e o dispositivo de destino 14 podem compreender, respectivamente, qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores do tipo desktop, computadores do tipo notebook (por exemplo, computadores do tipo laptop), computadores do tipo tablet, decodificadores de sinais, aparelhos de telefone, tais como, os chamados telefones "inteligentes", os chamados dispositivos do tipo pad "inteligentes", televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de transmissão contínua de vídeo, ou semelhantes. Em várias modalidades, o dispositivo-fonte 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0031] O dispositivo de destino 14 pode receber, através do enlace 16, os dados de vídeo codificados a serem decodificados. O enlace 16 pode compreender qualquer tipo de meio ou dispositivo com a capacidade de mover os dados de vídeo codificados a partir do dispositivo-fonte 12 para o dispositivo de destino 14. No exemplo da Figura 1A, o enlace 16 pode compreender um meio de comunicação para habilitar o dispositivo-fonte 12 para transmitir dados de vídeo codificados ao dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede com base em pacote, tal como, uma rede de área local, uma rede de área ampla ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações- base, ou qualquer outro equipamento que possa ser útil que para facilitar a comunicação do dispositivo-fonte 12 com o dispositivo de destino 14.
[0032] Alternativamente, os dados codificados podem ser emitidos a partir de uma interface de saída 22 para um dispositivo de armazenamento 31 (opcionalmente presente). De modo semelhante, os dados codificados podem ser acessados a partir do dispositivo de armazenamento 31 por uma interface de entrada 28, por exemplo, do dispositivo de destino 14. O dispositivo de armazenamento 31 pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente como um disco rígido, memória flash, memória volátil ou não volátil ou quaisquer outros meios de armazenamento digitais adequados para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento 31 pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode manter o vídeo codificado gerado pelo dispositivo-fonte 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenamento através de transmissão contínua ou transferência por download. O servidor de arquivos pode ser qualquer tipo de servidor com a capacidade de armazenar dados de vídeo codificados e transmitir aqueles dados de vídeo codificados para o dispositivo de destino 14. Os servidores de arquivos exemplificativos incluem um servidor da Web (por exemplo, para um site da Web), um servidor de Protocolo de Transferência de Arquivo (FTP), dispositivos de armazenamento fixados à rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão de rede de área local sem fio (WLAN)), uma conexão com fio (por exemplo, uma linha de assinante digital (DSL), um modem a cabo, etc.), ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados do dispositivo de armazenamento 31 pode ser uma transmissão contínua, uma transmissão de transferência por download ou uma combinação das mesmas.
[0033] OS conjuntos de procedimentos desta revelação não estão necessariamente limitados a aplicações ou definições sem fio. Os conjuntos de procedimentos podem ser aplicados à codificação de vídeo em suporte de qualquer dentre uma variedade de aplicativos de multimídia, tal como difusões sem fio para televisão, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões de vídeo em transmissão contínua, por exemplo, através da Internet (por exemplo, transmissão contínua adaptativa dinâmica por Protocolo de Transferência de Hipertexto (HTTP) etc.), 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 outras aplicações. Em alguns exemplos, o sistema de codificação de vídeo 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicações tais como transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo e/ou telefonia por vídeo.
[0034] No exemplo da Figura 1A, o dispositivo- fonte 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20 e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador/desmodulador (modem) e/ou um transmissor. No dispositivo-fonte 12, a fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contém 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 de gráficos de computador para gerar dados de 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 com câmera" ou "telefones para gravação de vídeo", conforme ilustrado no exemplo da Figura 1B. Entretanto, os conjuntos de procedimentos descritos nesta revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas a aplicações com fio e/ou sem fio.
[0035] O vídeo gerado por computador, pré- capturado ou capturado pode ser codificado pelo codificador de vídeo 20. Os dados de vídeo codificados podem ser transmitidos para o dispositivo de destino 14 através da interface de emissão 22 do dispositivo-fonte 12. Os dados de vídeo codificados também podem (ou, alternativamente) ser armazenados no dispositivo de armazenamento 31 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução. O codificador de vídeo 20 ilustrado nas Figuras 1A e 1B pode compreender o codificador de vídeo 20 ilustrado na Figura 2, ou qualquer outro codificador de vídeo descrito no presente documento.
[0036] No exemplo da Figura 1A, o dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. A interface de entrada 28 do dispositivo de destino 14 pode receber os dados de vídeo codificados através do enlace 16 e/ou a partir do dispositivo de armazenamento 31. Os dados de vídeo codificados comunicados através do enlace 16, ou fornecidos no dispositivo de armazenamento 31, podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 para uso através de um decodificador de vídeo, tal como o decodificador de vídeo 30, na decodificação dos dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento ou armazenado em um servidor de arquivos. O decodificador de vídeo 30 ilustrado nas Figuras 1A e 1B pode compreender o decodificador de vídeo 30 ilustrado na Figura 3 ou qualquer outro decodificador de vídeo descrito no presente documento.
[0037] O dispositivo de exibição 32 pode ser integrado ao dispositivo de destino 14 ou pode ser externo ao mesmo. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e pode ser configurado também para fazer interface com um dispositivo de exibição externo. Em alguns exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer um dentre uma variedade de dispositivos de exibição tal como um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED) ou um outro tipo de dispositivo de exibição.
[0038] Nos aspectos relacionados, a Figura 1B mostra um sistema de codificação de vídeo 10' exemplificativo em que o dispositivo-fonte 12 e o dispositivo de destino 14 estão em ou fazem parte de um dispositivo 11. O dispositivo 11 pode ser um fone de telefone, tal como um telefone “inteligente” ou similares. O dispositivo 11 pode incluir um dispositivo controlador/processador 13 (opcionalmente presente) em comunicação operacional com o dispositivo-fonte 12 e o dispositivo de destino 14. O sistema de codificação de vídeo 10' da Figura 1B e componentes do mesmo são, de outro modo, semelhantes ao sistema de codificação de vídeo 10 da Figura 1A e componentes do mesmo.
[0039] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compactação de vídeo, tal como HEVC, e pode estar em conformidade com um Modelo de Teste de HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões de proprietário ou de indústria, tais como o padrão ITU-T H.264, denominado, alternativamente, como MPEG-4, Parte 10, AVC ou extensões de tais padrões. Entretanto, os conjuntos de procedimentos desta revelação não são limitados a qualquer padrão de codificação particular. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.263.
[0040] Embora não mostrados nos exemplos da Figura 1A e 1B, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, integrados a um codificador e decodificador de áudio, e podem incluir unidades de MUX- DEMUX adequadas, ou outro hardware e software, para manipular a codificação tanto do áudio quanto do vídeo em um fluxo de dados comum ou fluxos de dados separados. Caso aplicável, as unidades MUX-DEMUX podem se conformar ao protocolo multiplexador ITU H.223, ou outros protocolos como protocolo de datagrama de usuário (UDP).
[0041] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implantados como qualquer um dentre uma variedade de conjuntos de circuitos de codificador adequados, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando os conjuntos de procedimentos são implantados 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 com o uso de um ou mais processadores para realizar os conjuntos de procedimentos desta revelação. Cada dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, em que qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um respectivo dispositivo.
PROCESSO DE CODIFICAÇÃO DE VÍDEO
[0042] Conforme mencionado brevemente acima, o codificador de vídeo 20 codifica os dados de vídeo. Os dados de vídeo podem compreender uma ou mais figurações. Cada uma das figurações é uma imagem estática que forma parte de um vídeo. Em alguns casos, uma figuração pode ser referida como um "quadro" de vídeo. Quando o codificador de vídeo 20 codifica os dados de vídeo, o codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequência de bits que forma uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir figurações codificadas e dados associados. Uma figuração codificada é uma representação codificada de uma figuração.
[0043] A fim de gerar o fluxo de bits, o codificador de vídeo 20 pode realizar operações de codificação em cada figuração nos dados de vídeo. Quando o codificador de vídeo 20 realiza operações de codificação nas figurações, o codificador de vídeo 20 pode gerar uma série de figurações codificadas e dados associados. Os dados associados podem incluir conjuntos de parâmetros de vídeo (VPS), conjuntos de parâmetros de sequência (SPSs), conjuntos de parâmetros de figuração (PPSs), conjuntos de parâmetros de adaptação (APSs) e outras estruturas de sintaxe. Um SPS pode conter parâmetros aplicáveis a zero ou mais sequências de figurações. Um PPS pode conter parâmetros aplicáveis a zero ou mais figurações. Um APS pode conter parâmetros aplicáveis a zero ou mais figurações. Os parâmetros em um APS podem ser parâmetros que têm maior probabilidade de mudar do que parâmetros em um PPS.
[0044] Para gerar uma figuração codificada, o codificador de vídeo 20 pode particionar uma figuração em blocos de vídeo igualmente dimensionados. Um bloco de vídeo pode ser um arranjo bidimensional de amostras. Cada um dos blocos de vídeo está associado a um bloco de árvore. Em algumas instâncias, um bloco de árvore pode ser referido como uma unidade de codificação maior (LCU). Os blocos de árvore de HEVC podem ser amplamente analógicos aos macroblocos de padrões anteriores, tais como, H.264/AVC. No entanto, um bloco de árvore não se limita necessariamente a um tamanho particular e pode incluir uma ou mais unidades de codificação (CUs). O codificador de vídeo 20 pode usar particionamento de árvore quadrática para particionar os blocos de vídeo de blocos de árvore em blocos de vídeo associados a CUs, por isso o nome "blocos de árvore".
[0045] Em alguns exemplos, o codificador de vídeo 20 pode particionar uma figuração em uma pluralidade de fatias. Cada uma das fatias pode incluir um número inteiro de CUs. Em alguns casos, uma fatia compreende um número inteiro de blocos de árvore. Em outros casos, uma fronteira de uma fatia pode estar dentro de um bloco de árvore.
[0046] Como parte da realização de uma operação de codificação em uma figuração, o codificador de vídeo 20 pode realizar operações de codificação em cada fatia da figuração. Quando o codificador de vídeo 20 realiza uma operação de codificação em uma fatia, o codificador de vídeo 20 pode gerar dados codificados associados à fatia. Os dados codificados associados à fatia podem ser denominados como “fatia codificada”.
[0047] A fim de gerar uma fatia codificada, o codificador de vídeo 20 pode realizar operações de codificação em cada bloco de árvore em uma fatia. Quando o codificador de vídeo 20 realiza uma operação de codificação em um bloco de árvore, o codificador de vídeo 20 pode gerar um bloco de árvore codificado. O bloco de árvore codificado pode compreender dados que representam uma versão codificada do bloco de árvore.
[0048] Quando o codificador de vídeo 20 gera uma fatia codificada, o codificador de vídeo 20 pode realizar operações de codificação (por exemplo, codificar) nos blocos de árvore na fatia de acordo com uma ordem de varredura raster. Por exemplo, o codificador de vídeo 20 pode codificar os blocos de árvore da fatia em uma ordem que prossegue a partir da esquerda para a direita através de uma fileira mais de topo de blocos de árvore na fatia, então da esquerda para a direita através de uma próxima fileira inferior de blocos de árvore e assim por diante até que o codificador de vídeo 20 tenha codificado cada um dos blocos de árvore na fatia.
[0049] Como resultado da codificação dos blocos de árvore de acordo com a ordem de varredura por rastreio, os blocos de árvore acima e à esquerda de um determinado bloco de árvore pode ter sido codificado, mas os blocos de árvore abaixo e à direita do determinado bloco de árvore ainda não foram codificados. Consequentemente, o codificador de vídeo 20 pode ter a capacidade de acessar informações geradas codificando-se os blocos de árvore acima e à esquerda do determinado bloco de árvore durante a codificação do determinado bloco de árvore. Entretanto, o codificador de vídeo 20 pode não ter a capacidade de acessar as informações geradas codificando-se blocos de árvores abaixo e à direita do determinado bloco de árvore durante a codificação do determinado bloco de árvore.
[0050] A fim de gerar um bloco de árvore codificado, o codificador de vídeo 20 pode realizar recursivamente a partição de árvore quadrática no bloco de vídeo do bloco de árvore para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, o codificador de vídeo 20 pode particionar o bloco de vídeo de um bloco de árvore em quatro sub-blocos de igual tamanho, particionar um ou mais dos sub-blocos em quatro sub-blocos de igual tamanho e assim por diante. Uma CU particionada pode ser uma CU cujo bloco de vídeo é particionado em blocos de vídeo associados com outras CUs. Uma CU não particionada pode ser uma CU cujo bloco de vídeo não é particionado em blocos de vídeo associados com outras CUs.
[0051] Um ou mais elementos de sintaxe no fluxo de bits podem indicar um número máximo de vezes que o codificador de vídeo 20 pode particionar o bloco de vídeo de um bloco de árvore. Um bloco de vídeo de uma CU pode ter formato quadrado. O tamanho do bloco de vídeo de uma CU (por exemplo, o tamanho da CU) pode variar de 8x8 pixels até o tamanho de um bloco de vídeo de um bloco de árvore (por exemplo, o tamanho do bloco de árvore) com um máximo de 64x64 pixels ou mais.
[0052] O codificador de vídeo 20 pode realizar as operações de codificação (por exemplo, codificar) em cada CU de um bloco de árvore, de acordo com uma ordem de varredura-z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU de topo à esquerda, uma CU de topo à direita, uma CU de fundo à esquerda, e então uma CU de fundo à direita, nessa ordem. Quando o codificador de vídeo 20 realiza uma operação de codificação em uma CU particionada, o codificador de vídeo 20 pode codificar CUs associadas a sub-blocos do bloco de vídeo da CU particionada de acordo com uma ordem de varredura-Z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU associada a um sub-bloco de topo à esquerda, uma CU associada a um sub-bloco de topo à direita, uma CU associada a um sub-bloco de fundo à esquerda e, então, uma CU associada a um sub-bloco de fundo à direita, nessa ordem.
[0053] Como resultado da codificação das CUs de um bloco de árvore de acordo com uma ordem de varredura- z, as CUs acima, acima e à esquerda, acima e à direita, esquerda e abaixo e à esquerda de uma dada CU podem ter sido codificadas. As CUs abaixo e à direita da dada CU ainda não foram codificadas. Consequentemente, o codificador de vídeo 20 pode ter capacidade de acessar informações geradas codificando-se algumas CUs que estão próximas à dada CU durante a codificação da dada CU. Entretanto, o codificador de vídeo 20 pode não ter a capacidade de acessar informações geradas codificando-se outras CUs que estão próximas à dada CU durante a codificação da dada CU.
[0054] Quando o codificador de vídeo 20 codifica uma CU não particionada, o codificador de vídeo 20 pode gerar uma ou mais unidades de predição (PUs) para a CU. Cada uma das PUs da CU pode estar associada a um bloco de vídeo diferente dentro do bloco de vídeo da CU. O codificador de vídeo 20 pode gerar um bloco de vídeo previsto para cada PU da CU. O bloco de vídeo preditivo de uma PU pode ser um bloco de amostras. O codificador de vídeo 20 pode usar intrapredição ou interpredição para gerar o bloco de vídeo previsto para uma PU.
[0055] Quando o codificador de vídeo 20 usa intrapredição para gerar o bloco de vídeo previsto de uma PU, o codificador de vídeo 20 pode gerar o bloco de vídeo previsto da PU com base em amostras decodificadas da figuração associada à PU. Se o codificador de vídeo 20 usar intrapredição para gerar blocos de vídeo previstos das PUs de uma CU, a CU é uma CU intraprevista. Quando o codificador de vídeo 20 usa interpredição para gerar o bloco de vídeo previsto da PU, o codificador de vídeo 20 pode gerar o bloco de vídeo previsto da PU com base em amostras decodificadas de uma ou mais figurações diferentes da figuração associada à PU. Se o codificador de vídeo 20 usar interpredição para gerar blocos de vídeo previstos das PUs de uma CU, a CU é uma CU interprevista.
[0056] Adicionalmente, quando o codificador de vídeo 20 usa interpredição para gerar um bloco de vídeo previsto para uma PU, o codificador de vídeo 20 pode gerar informações de movimento para a PU. As informações de movimento para uma PU podem indicar um ou mais blocos de referência da PU. Cada bloco de referência da PU pode ser um bloco de vídeo dentro de uma figuração de referência. A figuração de referência pode ser uma figuração diferente da figuração associada com a PU. Em alguns casos, um bloco de referência de uma PU também pode ser chamado de “amostra de referência” da PU. O codificador de vídeo 20 pode gerar o bloco de vídeo previsto para a PU com base nos blocos de referência da PU.
[0057] Após o codificador de vídeo 20 gerar os blocos de vídeo previstos para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar dados residuais para a CU com base nos blocos de vídeo previstos para as PUs da CU. Os dados residuais para a CU podem indicar diferenças entre as amostras nos blocos de vídeo previstos para as PUs da CU e o bloco de vídeo original da CU.
[0058] Além disso, como parte da realização de uma operação de codificação em uma CU não particionada, o codificador de vídeo 20 pode realizar o particionamento em árvore quadrática recursivo nos dados residuais da CU para particionar os dados residuais da CU em um ou mais blocos de dados residuais (por exemplo, blocos de vídeo residuais) associados às unidades de transformada (TUs) da CU. Cada TU de uma CU pode estar associada a um bloco de vídeo residual diferente.
[0059] O codificador de vídeo 20 pode aplicar uma ou mais transformadas aos blocos de vídeo residuais associados às TUs para gerar blocos de coeficiente de transformada (por exemplo, blocos de coeficientes de transformada) associados às TUs. Conceitualmente, um bloco de coeficiente de transformada pode ser uma matriz bidimensional (2D) de coeficientes de transformada.
[0060] Após gerar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode realizar um processo de quantização no bloco de coeficiente de transformada. Em geral, a quantização se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes de transformada, o que fornece uma compactação adicional. O processo de quantização pode reduzir a intensidade de bits associada a alguns ou a todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada n-bit pode ser arredondado para um coeficiente de transformada m-bit durante a quantização, em que n é maior do que m.
[0061] O codificador de vídeo 20 pode associar cada CU a um valor de parâmetro de quantização (QP). O valor de QP associado a uma CU pode determinar como o codificador de vídeo 20 quantiza blocos de coeficiente de transformada associados à CU. O codificador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficiente de transformada associados a uma CU ajustando- se o valor de QP associados à CU.
[0062] Após o codificador de vídeo 20 quantizar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode gerar conjuntos de elementos de sintaxe que representam os coeficientes de transformada no bloco de coeficiente de transformada quantizado. O codificador de vídeo 20 pode aplicar operações de codificação por entropia, tais como, operações de Codificação Aritmética Binária Adaptativa Ao Contexto (CABAC), a alguns desses elementos de sintaxe. Outros conjuntos de procedimentos de codificação por entropia tais como codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação por entropia com particionamento de probabilidade de intervalo (PIPE) ou outra codificação aritmética binária também poderia ser usada.
[0063] O fluxo de bits gerado pelo codificador de vídeo 20 pode incluir uma série de unidades de camada de abstração de rede (NAL). Cada uma das unidades de NAL pode ser uma estrutura de sintaxe que contém uma indicação de um tipo de dados na unidade de NAL e bits que contêm os dados. Por exemplo, uma unidade de NAL pode conter dados que representam um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de figuração, uma fatia codificada, SEI, um delimitador de unidade de acesso, dados de enchimento ou outro tipo de dados. Os dados em uma unidade de NAL podem incluir várias estruturas de sintaxe.
[0064] O decodificador de vídeo 30 pode receber o fluxo de bits gerado pelo codificador de vídeo 20. O fluxo de bits pode incluir uma representação codificada dos dados de vídeo codificados pelo codificador de vídeo 20. Quando o decodificador de vídeo 30 recebe o fluxo de bits, o decodificador de vídeo 30 pode realizar uma operação de análise sintática no fluxo de bits. Quando o decodificador de vídeo 30 realiza a operação de análise sintática, o decodificador de vídeo 30 pode extrair elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as figurações dos dados de vídeo com base nos elementos de sintaxe extraídos do fluxo de bits. O processo para reconstruir os dados de vídeo com base nos elementos de sintaxe pode ser geralmente recíproco ao processo realizado pelo codificador de vídeo 20 para gerar os elementos de sintaxe.
[0065] Após o decodificador de vídeo 30 extrair os elementos de sintaxe associados a uma CU, o decodificador de vídeo 30 pode gerar os blocos de vídeo previstos para as PUs da CU com base nos elementos de sintaxe. Além disso, o decodificador de vídeo 30 pode quantizar, inversamente, os blocos de coeficiente de transformada associados às TUs da CU. O decodificador de vídeo 30 pode realizar as transformadas inversas nos blocos de coeficiente de transformada a fim de reconstruir os blocos de vídeo residuais associados às TUs da CU. Após gerar os blocos de vídeo previstos e reconstruir os blocos de vídeo residuais, o decodificador de vídeo 30 pode reconstruir o bloco de vídeo da CU com base nos blocos de vídeo previstos e nos blocos de vídeo residuais. Desta forma, o decodificador de vídeo 30 pode reconstruir os blocos de vídeo das CUs com base nos elementos de sintaxe no fluxo de bits.
CODIFICADOR DE VÍDEO
[0066] A Figura 2B é um diagrama de blocos que ilustra um exemplo do codificador de vídeo 20 que pode implantar conjuntos de procedimentos de acordo com aspectos descritos nesta revelação. O codificador de vídeo 20 pode ser configurado para processar uma única camada de um quadro de vídeo, tal como, para HEVC. Além disso, o codificador de vídeo 20 pode ser configurado para realizar qualquer um ou todos os conjuntos de procedimentos desta revelação. Em alguns exemplos, os conjuntos de procedimentos descritos nesta revelação podem ser compartilhados dentre os vários componentes do codificador de vídeo 20. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar qualquer um ou todos os conjuntos de procedimentos descritos nesta revelação.
[0067] Para propósitos de explicação, esta revelação descreve o codificador de vídeo 20 no contexto de codificação de HEVC. Entretanto, os conjuntos de procedimentos desta revelação podem ser aplicáveis a outros padrões ou métodos de codificação. O exemplo representado na Figura 2A é para um codec de única camada. No entanto, em determinadas modalidades, uma parte ou todo o codificador de vídeo 20 pode ser duplicado para o processamento de um codec de multicamadas.
[0068] O codificador de vídeo 20 pode realizar intra e intercodificação de blocos de vídeo dentro de fatias de vídeo. A intracodificação depende da predição espacial para reduzir ou remover a redundância espacial no vídeo dentro de uma determinada figuração de quadro de vídeo. A intercodificação tem base na predição temporal para reduzir ou remover a redundância temporal no vídeo dentro de quadros ou figurações adjacentes de uma sequência de vídeo. O intramodo (modo I) pode se referir a qualquer um dentre vários modos de codificação com base em espaço. Os intermodos, tal como predição monodirecional (modo P) ou predição bidirecional (modo B), podem se referir a qualquer um dentre diversos modos de codificação à base temporal.
[0069] No exemplo da Figura 2, o codificador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais de codificador de vídeo 20 incluem uma unidade de processamento de predição 100, uma unidade de geração residual 102, uma unidade de processamento de transformada 104, uma unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de transformada inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 113, um armazenamento temporário de figuração decodificada 114 e uma unidade de codificação por entropia 116. A unidade de processamento de predição 100 inclui uma unidade de interpredição 121, uma unidade de estimativa de movimento 122, uma unidade de compensação de movimento 124, uma unidade de intrapredição 126 e uma unidade prevista intercamada 128. Em outros exemplos, o codificador de vídeo 20 pode incluir mais, menos ou diferentes componentes funcionais. Além disso, a unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem ser altamente integradas, mas são representadas no exemplo da Figura 2 separadamente para fins de explicação.
[0070] O codificador de vídeo 20 pode receber dados de vídeo. O codificador de vídeo 20 pode receber os dados de vídeo de várias fontes. Por exemplo, o codificador de vídeo 20 pode receber os dados de vídeo da fonte de vídeo 18 (por exemplo, mostrado na Figura 1A ou 1B) ou uma outra fonte. Os dados de vídeo podem representar uma série de figurações. Para codificar os dados de vídeo, o codificador de vídeo 20 pode realizar uma operação de codificação em cada uma das figurações. Como parte da realização da operação de codificação em uma figuração, o codificador de vídeo 20 pode realizar operações de codificação em cada fatia da figuração. Como parte da realização de uma operação de codificação em uma fatia, o codificador de vídeo 20 pode realizar operações de codificação em blocos de árvore na fatia.
[0071] Como parte da realização de uma operação de codificação em um bloco de árvore, a unidade de processamento de predição 100 pode realizar particionamento de árvore quadrática no bloco de vídeo do bloco de árvore para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, a unidade de processamento de predição 100 pode particionar um bloco de vídeo de um bloco de árvore em quatro sub- blocos igualmente dimensionados, separar um ou mais dos sub-blocos em quatro sub-blocos igualmente dimensionados e assim por diante.
[0072] Os tamanhos dos blocos de vídeo associados a CUs podem variar de amostras de 8x8 até o tamanho do bloco de árvore com um máximo de amostras de 64x64 ou maior. Na presente revelação, "NxN" e "N por N" podem ser usados de modo intercambiável para se referir às dimensões de amostras de um bloco de vídeo em termos de dimensões horizontal e vertical, por exemplo, amostras de 16x16 ou amostras de 16 por 16. Em geral, um bloco de vídeo de 16x16 tem dezesseis amostras em uma direção vertical (y = 16) e dezesseis amostras em uma direção horizontal (x = 16). De modo semelhante, um bloco NxN geralmente tem N amostras em uma direção vertical e N amostras em uma direção horizontal, em que N representa um valor de número inteiro não negativo.
[0073] Além disso, como parte da realização da operação de codificação em um bloco de árvore, a unidade de processamento de predição 100 pode gerar uma estrutura de dados em árvore quadrática hierárquica para o bloco de árvore. Por exemplo, um bloco de árvore pode corresponder a um nó raiz da estrutura de dados em árvore quadrática. Se a unidade de processamento de predição 100 particionar o bloco de vídeo do bloco de árvore em quatro sub-blocos, o nó raiz tem quatro nós filhos na estrutura de dados em árvore quadrática. Cada um dos nós filhos corresponde a uma CU associada a um dos sub-blocos. Se a unidade de processamento de predição 100 particionar um dos sub-blocos em quatro sub-sub-blocos, o nó correspondente à CU associada ao sub-bloco pode ter quatro nós filhos, sendo que cada um dos quais corresponde a uma CU associada a um dos sub-sub-blocos.
[0074] Cada nó da estrutura de dados em árvore quadrática pode conter dados de sintaxe (por exemplo, elementos de sintaxe) para o bloco de árvore ou CU correspondente. Por exemplo, um nó na árvore quadrática pode incluir um sinalizador de divisão que indica se o bloco de vídeo da CU correspondente ao nó é particionado (por exemplo, dividido) em quatro sub-blocos. Os elementos de sintaxe para uma CU podem ser definidos recursivamente e podem depender de se o bloco de vídeo da CU está dividido em sub-blocos. Uma CU cujo bloco de vídeo não é particionado pode corresponder a um nó folha na estrutura de dados em árvore quadrática. Um bloco de árvore codificado pode incluir dados com base na estrutura de dados em árvore quadrática para um bloco de árvore correspondente.
[0075] O codificador de vídeo 20 pode realizar as operações de codificação em cada CU não particionada de um bloco de árvore. Quando o codificador de vídeo 20 realiza uma operação de codificação em uma CU não particionada, o codificador de vídeo 20 gera dados que representam uma representação codificada da CU não particionada.
[0076] Como parte da realização de uma operação de codificação em uma CU, a unidade de processamento de predição 100 pode particionar o bloco de vídeo da CU dentre uma ou mais PUs da CU. O codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar vários tamanhos de PU. Presumindo-se que o tamanho de uma CU particular é 2Nx2N, o codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou NxN e interpredição em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN, 2NxnU, nLx2N, nRx2N ou similar. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Em alguns exemplos, a unidade de processamento de predição 100 pode realizar particionamento geométrico para particionar o bloco de vídeo de uma CU dentre PUs da CU ao longo de uma fronteira que não encontra os lados do bloco de vídeo da CU em ângulos retos.
[0077] A unidade de interpredição 121 pode realizar interpredição em cada PU da CU. A interpredição pode fornecer compactação temporal. Para realizar a interpredição em uma PU, a unidade de estimativa de movimento 122 pode gerar informações de movimento para a PU. A unidade de compensação de movimento 124 pode gerar um bloco de vídeo previsto para a PU com base nas informações de movimento e amostras decodificadas das figurações diferentes da figuração associada à CU (por exemplo, figurações de referência). Nesta revelação, um bloco de vídeo previsto gerado pela unidade de compensação de movimento 124 pode ser denominado como bloco de vídeo interprevisto.
[0078] As fatias podem ser fatias I, fatias P ou fatias B. A unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem realizar diferentes operações para uma PU de uma CU dependendo se a PU está em uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intraprevistas. Por conseguinte, se a PU estiver em uma fatia I, a unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 não realizam interpredição na PU.
[0079] Se a PU estiver em uma fatia P, a imagem que contém a PU está associada a uma lista de figurações de referência denominada como "lista 0". Cada uma das figurações de referência na lista 0 contém amostras que podem ser usadas para interpredição de outras figurações. Quando a unidade de estimativa de movimento 122 realiza a operação de estimativa de movimento em relação a uma PU em uma fatia P, a unidade de estimativa de movimento 122 pode procurar as figurações de referência na lista 0 para um bloco de referência para a PU. O bloco de referência da PU pode ser um conjunto de amostras, por exemplo, um bloco de amostras, que correspondem mais proximamente às amostras no bloco de vídeo da PU. A unidade de estimativa de movimento 122 pode usar uma variedade de métricas para determinar o quão próximo um conjunto de amostras em uma figuração de referência corresponde às amostras no bloco de vídeo de uma PU. Por exemplo, a unidade de estimativa de movimento 122 pode determinar o quão próximo um conjunto de amostras em uma figuração de referência corresponde às amostras no bloco de vídeo de uma PU pela soma da diferença absoluta (SAD), soma das diferenças de quadrados (SSD) ou outras métricas de diferença.
[0080] Após identificar um bloco de referência de uma PU em uma fatia P, a unidade de estimativa de movimento 122 pode gerar um índice de referência que indica a figuração de referência na lista 0 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. Em vários exemplos, a unidade de estimativa de movimento 122 pode gerar vetores de movimento para graus de precisão variáveis. Por exemplo, a unidade de estimativa de movimento 122 pode gerar vetores de movimento com precisão de amostra de um quarto, precisão de amostra de um oitavo ou outra precisão de amostra fracionária. No caso de precisão de amostra fracionária, os valores do bloco de referência podem ser interpolados a partir de valores de amostra com posição de número inteiro na figuração de referência. A unidade de estimativa de movimento 122 pode emitir o índice de referência e o vetor de movimento como as informações de movimento da PU. A unidade de compensação de movimento 124 pode gerar um bloco de vídeo previsto da PU com base no bloco de referência identificado pelas informações de movimento da PU.
[0081] Se a PU estiver em uma fatia B, a figuração que contém a PU pode estar associada a duas listas de figurações de referência, denominadas como “lista 0” e “lista 1”. Em alguns exemplos, uma figuração que contém uma fatia B pode estar associada a uma combinação de lista que é uma combinação de lista 0 e lista 1.
[0082] Além disso, se a PU estiver em uma fatia B, a unidade de estimativa de movimento 122 pode realizar predição unidirecional ou predição bidirecional para uma PU. Quando a unidade de estimativa de movimento 122 realiza predição unidirecional para a PU, a unidade de estimativa de movimento 122 pode procurar as figurações de referência da lista 0 ou da lista 1 para um bloco de referência para a PU. Desse modo, a unidade de estimativa de movimento 122 pode gerar um índice de referência que indica a figuração de referência na lista 0 ou lista 1 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. A unidade de estimativa de movimento 122 pode emitir o índice de referência, um indicador de direção de predição e o vetor de movimento como as informações de movimento da PU. O indicador de direção de predição pode indicar se o índice de referência indica uma figuração de referência na lista 0 ou lista 1. A unidade de compensação de movimento 124 pode gerar o bloco de vídeo previsto da PU com base no bloco de referência indicado pelas informações de movimento da PU.
[0083] Quando a unidade de estimativa de movimento 122 realiza a predição bidirecional para uma PU, a unidade de estimativa de movimento 122 pode buscar as figurações de referência na lista 0 para um bloco de referência para a PU e também pode procurar as figurações de referência na lista 1 para outro bloco de referência para a PU. Desse modo, a unidade de estimativa de movimento 122 pode gerar índices de referência que indicam as figurações de referência na lista 0 e lista 1 que contêm os blocos de referência e os vetores de movimento que indicam deslocamentos espaciais entre os blocos de referência e a PU. A unidade de estimativa de movimento 122 pode emitir os índices de referência e os vetores de movimento da PU como as informações de movimento da PU. A unidade de compensação de movimento 124 pode gerar o bloco de vídeo previsto da PU com base nos blocos de referência indicados pelas informações de movimento da PU.
[0084] Em alguns casos, a unidade de estimativa de movimento 122 não emite um conjunto completo de informações de movimento para uma PU à unidade de codificação por entropia 116. Em vez disso, a unidade de estimativa de movimento 122 pode sinalizar as informações de movimento de uma PU com referência às informações de movimento de outra PU. Por exemplo, a unidade de estimativa de movimento 122 pode determinar que as informações de movimento da PU são suficientemente similares às informações de movimento de uma PU vizinha. Nesse exemplo, a unidade de estimativa de movimento 122 pode indicar, em uma estrutura de sintaxe associada à PU, um valor que indica ao decodificador de vídeo 30 que a PU tem as mesmas informações de movimento da PU vizinha. Em um outro exemplo, a unidade de estimativa de movimento 122 pode identificar, em uma estrutura de sintaxe associada com a PU, uma PU vizinha e uma diferença de vetor de movimento (MVD). A diferença de vetor de movimento indica uma diferença entre o vetor de movimento da PU e o vetor de movimento da PU vizinha indicada. O decodificador de vídeo 30 pode usar o vetor de movimento da PU vizinha indicada e a diferença de vetor de movimento para determinar o vetor de movimento da PU. Referindo-se às informações de movimento de uma primeira PU durante a sinalização das informações de movimento de uma segunda PU, o codificador de vídeo 20 pode ter a capacidade de sinalizar as informações de movimento da segunda PU com o uso de menos bits.
[0085] Como parte da realização de uma operação de codificação em uma CU, a unidade de intrapredição 126 pode realizar intrapredição em PUs da CU. A intrapredição pode fornecer compactação espacial. Quando a unidade de intrapredição 126 realiza a intrapredição em uma PU, a unidade de intrapredição 126 pode gerar dados previstos para a PU com base em amostras decodificadas de outras PUs na mesma figuração. Os dados previstos para a PU podem incluir um bloco de vídeo previsto e vários elementos de sintaxe. A unidade de intrapredição 126 pode realizar intrapredição em PUs nas fatias I, fatias P e fatias B.
[0086] Para realizar a intrapredição em uma PU, a unidade de intrapredição 126 pode usar múltiplos modos de intrapredição para gerar múltiplos conjuntos de dados previstos para uma PU. Quando a unidade de intrapredição 126 usa um modo de intrapredição para gerar um conjunto de dados previstos para a PU, a unidade de intrapredição 126 pode estender as amostras a partir de blocos de vídeo de PUs vizinhas através de bloco de vídeo da PU em uma direção e/ou gradiente associado ao modo de intrapredição. As PUs vizinhas podem estar acima, acima e à direita, acima e à esquerda ou à esquerda da PU, presumindo uma ordem de codificação do fundo para o topo e da esquerda para direita para PUs, CUs e CTUs. A unidade de intrapredição 126 pode usar vários números de modos de intrapredição, por exemplo, 33 modos de intrapredição direcionais, dependendo do tamanho da PU.
[0087] A unidade de processamento de predição 100 pode selecionar os dados previstos para uma PU dentre os dados previstos gerados pela unidade de compensação de movimento 124 para a PU ou os dados previstos gerados pela unidade de intrapredição 126 para a PU. Em alguns exemplos, a unidade de processamento de predição 100 seleciona os dados previstos para a PU com base nas métricas de taxa/distorção dos conjuntos de dados previstos.
[0088] Se a unidade de processamento de predição 100 selecionar os dados previstos gerados pela unidade de intra predição 126, a unidade de processamento de predição 100 pode sinalizar o modo de intrapredição que foi usado para gerar os dados previstos para as PUs, por exemplo, o modo de intrapredição selecionado. A unidade de processamento de predição 100 pode sinalizar o modo de intrapredição selecionado de várias maneiras. Por exemplo, pode ser provável que o modo de intrapredição selecionado seja o mesmo que o modo de intrapredição de uma PU vizinha. Em outras palavras, o modo de intrapredição da PU vizinha pode ser o modo mais provável para a PU atual. Desse modo, a unidade de processamento de predição 100 pode gerar um elemento de sintaxe para indicar que o modo de intrapredição selecionado é o mesmo que o modo de intra predição da PU vizinha.
[0089] Conforme discutido acima, o codificador de vídeo 20 pode incluir a unidade prevista intercamadas 128. A unidade de predição intercamadas 128 é configurada para prever um bloco atual (por exemplo, um bloco atual na EL) com o uso de uma ou mais camadas diferentes que estão disponíveis em SVC (por exemplo, uma camada-base ou de referência). Tal predição pode ser chamada de predição intercamadas. A unidade prevista intercamada 128 utiliza os métodos de predição para reduzir a redundância de intercamada e aprimorando, desse modo, a eficiência de codificação e reduzindo os requisitos de recurso computacional. Alguns exemplos de predição intercamadas incluem intrapredição intercamadas, predição de movimento intercamadas e predição residual intercamadas. A intrapredição intercamadas usa a reconstrução de blocos colocalizados na camada-base para prever o bloco atual na camada de aperfeiçoamento. A predição de movimento intercamadas usa informações de movimento da camada-base para prever movimento na camada de aperfeiçoamento. A predição residual intercamadas usa o resíduo da camada-base para prever o resíduo da camada de aperfeiçoamento.
[0090] Após a unidade de processamento de predição 100 selecionar os dados previstos para PUs de uma CU, a unidade de geração residual 102 pode gerar dados residuais para a CU através da subtração (por exemplo, indicado pelo sinal de menos) dos blocos de vídeo previstos das PUs da CU do bloco de vídeo da CU. Os dados residuais de uma CU podem incluir blocos de vídeo residuais em 2D que correspondem a componentes de amostra diferentes das amostras no bloco de vídeo da CU. Por exemplo, os dados residuais podem incluir um bloco de vídeo residual que corresponde a diferenças entre componentes de luminância de amostras nos blocos de vídeo previstos das PUs da CU e componentes de luminância de amostras no bloco de vídeo original da CU. Além disso, os dados residuais da CU podem incluir blocos de vídeo residuais que correspondem às diferenças entre componentes de crominância de amostras nos blocos de vídeo previstos das PUs da CU e os componentes de crominância das amostras no bloco de vídeo original da CU.
[0091] A unidade de processamento de predição 100 pode realizar o particionamento de árvore quadrática para particionar os blocos de vídeo residuais de uma CU em sub-blocos. Cada bloco de vídeo residual não dividido pode estar associado a uma TU diferente da CU. Os tamanhos e posições dos blocos de vídeo residuais associados às TUs de uma CU podem ou não podem ser com base nos tamanhos e posições de blocos de vídeo associados com as PUs da CU. Uma estrutura de árvore quadrática conhecida como uma "árvore quadrática residual" (RQT) pode incluir nós associados a cada um dos blocos de vídeo residuais. As TUs de uma CU podem corresponder a nós folha da RQT.
[0092] A unidade de processamento de transformada 104 pode gerar um ou mais blocos de coeficiente de transformada para cada TU de uma CU através da aplicação de uma ou mais transformadas a um bloco de vídeo residual associado à TU. Cada um dos blocos de coeficiente de transformada pode ser uma matriz em 2D de coeficientes de transformada. A unidade de processamento de transformada 104 pode aplicar várias transformadas ao bloco de vídeo residual associado a uma TU. Por exemplo, a unidade de processamento de transformada 104 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada direcional ou uma transformada conceitualmente similar ao bloco de vídeo residual associado a uma TU.
[0093] Após a unidade de processamento de transformada 104 gerar um bloco de coeficiente de transformada associado a uma TU, a unidade de quantização 106 pode quantizar os coeficientes de transformada no bloco de coeficiente de transformada. A unidade de quantização 106 pode quantizar um bloco de coeficiente de transformada associado a uma TU de uma CU com base em um valor de QP associado à CU.
[0094] O codificador de vídeo 20 pode associar um valor de QP a uma CU de várias formas. Por exemplo, o codificador de vídeo 20 pode realizar uma análise de distorção de taxa em um bloco de árvore associado à CU. Na análise de distorção de taxa, o codificador de vídeo 20 pode gerar múltiplas representações codificadas do bloco de árvore através da realização de uma operação de codificação múltiplas vezes no bloco de árvore. O codificador de vídeo 20 pode associar diferentes valores de QP à CU quando o codificador de vídeo 20 gera diferentes representações codificadas do bloco de árvore. O codificador de vídeo 20 pode sinalizar que um dado valor de QP é associado à CU quando o dado valor de QP for associado à CU em uma representação codificada do bloco de árvore que tem uma taxa de bits mais baixa e métrica de distorção.
[0095] A unidade de quantização inversa 108 e a unidade de transformada inversa 110 podem aplicar quantização inversa e transformadas inversas ao bloco de coeficiente de transformada, respectivamente, para reconstruir um bloco de vídeo residual a partir do bloco de coeficiente de transformada. A unidade de reconstrução 112 pode adicionar o bloco de vídeo residual reconstruído às amostras correspondentes a partir de um ou mais blocos de vídeo previstos de amostra gerados pela unidade de processamento de predição 100 para produzir um bloco de transformada reconstruído associado a uma TU. Reconstruindo-se os blocos de vídeo para cada TU de uma CU, dessa maneira, o codificador de vídeo 20 pode reconstruir o bloco de vídeo da CU.
[0096] Após a unidade de reconstrução 112 reconstruir o bloco de vídeo de uma CU, a unidade de filtro 113 pode realizar uma operação de desbloqueio para reduzir os artefatos de bloqueio no bloco de vídeo associado à CU. Após realizar as uma ou mais operações de desbloqueio, a unidade de filtro 113 pode armazenar o bloco de vídeo reconstruído da CU em armazenamento temporário de figuração decodificada 114. A unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem usar uma figuração de referência que contém o bloco de vídeo reconstruído para realizar a interpredição nas PUs de figurações subsequentes. Além disso, a unidade de intrapredição 126 pode usar blocos de vídeo reconstruídos no armazenamento temporário de figuração decodificada 114 para realizar intrapredição em outras PUs na mesma figuração que a CU.
[0097] A unidade de codificação por entropia 116 pode receber dados a partir de outros componentes funcionais de codificador de vídeo 20. Por exemplo, a unidade de codificação por entropia 116 pode receber blocos de coeficiente de transformada a partir da unidade de quantização 106 e pode receber elementos de sintaxe a partir da unidade de processamento de predição 100. Quando a unidade de codificação por entropia 116 recebe os dados, a unidade de codificação por entropia 116 pode realizar uma ou mais operações de codificação por entropia para gerar dados codificados por entropia. Por exemplo, o codificador de vídeo 20 pode realizar uma operação de CAVLC, uma operação de CABAC, uma operação de codificação de comprimento de variável a variável (V2V), uma operação de codificação aritmética binária adaptativa ao contexto com base em sintaxe (SBAC), uma operação de codificação por Entropia de Particionamento de Intervalo de Probabilidade (PIPE) ou outro tipo de operação de codificação por entropia nos dados. A unidade de codificação por entropia 116 pode emitir um fluxo de bits que inclui os dados codificados por entropia.
[0098] Como parte da realização de uma operação de codificação por entropia de dados, a unidade de codificação por entropia 116 pode selecionar um modelo de contexto. Se a unidade de codificação por entropia 116 estiver realizando uma operação de CABAC, o modelo de contexto pode indicar estimativas de probabilidades de bins particulares que têm valores particulares. No contexto de CABAC, o termo “bin” é usado para se referir a um bit de uma versão binarizada de um elemento de sintaxe.
DECODIFICADOR DE VÍDEO
[0099] A Figura 3 é um diagrama de blocos que ilustra um exemplo do decodificador de vídeo 30 que pode implantar os conjuntos de procedimentos de acordo com os aspectos descritos nesta revelação. O decodificador de vídeo 30 pode ser configurado para processar uma única camada de um quadro de vídeo, tal como para HEVC. Além disso, o decodificador de vídeo 30 pode ser configurado para realizar qualquer um ou todos os conjuntos de procedimentos desta revelação. Em alguns exemplos, os conjuntos de procedimentos descritos nesta revelação podem ser compartilhados entre os vários componentes de decodificador de vídeo 30. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar qualquer um ou todos os conjuntos de procedimentos descritos nesta revelação.
[0100] Para propósitos de explicação, esta revelação descreve o decodificador de vídeo 30 no contexto de codificação de HEVC. Entretanto, os conjuntos de procedimentos desta revelação podem ser aplicáveis a outros padrões ou métodos de codificação. O exemplo representado na Figura 2A é para um codec de única camada. Entretanto, em determinadas implantações, uma parte ou todo o decodificador de vídeo 30 pode ser duplicado para o processamento de um codec de multicamadas.
[0101] No exemplo da Figura 3, o decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do decodificador de vídeo 30 incluem uma unidade de decodificação por entropia 150, uma unidade de processamento de predição 152, uma unidade de quantização inversa 154, uma unidade de transformada inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 159 e um armazenamento temporário de figuração decodificada 160. A unidade de processamento de predição 152 inclui uma unidade de compensação de movimento 162, uma unidade de intrapredição 164 e uma unidade de predição intercamadas 166. Em alguns exemplos, o decodificador de vídeo 30 pode realizar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita em relação ao codificador de vídeo 20 da Figura 2. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos ou diferentes componentes funcionais.
[0102] O decodificador de vídeo 30 pode receber um fluxo de bits que compreende dados de vídeo codificados. O fluxo de bits pode incluir uma pluralidade de elementos de sintaxe. Quando o decodificador de vídeo 30 recebe o fluxo de bits, a unidade de decodificação por entropia 150 pode realizar uma operação de análise sintática no fluxo de bits. Como um resultado de realização da operação de análise sintática no fluxo de bits, a unidade de decodificação por entropia 150 pode extrair elementos de sintaxe do fluxo de bits. Como parte da realização da operação de análise sintática, a unidade de decodificação por entropia 150 pode decodificar por entropia elementos de sintaxe decodificados por entropia no fluxo de bits. A unidade de processamento de predição 152, a unidade de quantização inversa 154, a unidade de transformada inversa 156, a unidade de reconstrução 158 e a unidade de filtro 159 podem realizar uma operação de reconstrução que gera dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[0103] Conforme discutido acima, o fluxo de bits pode compreender uma série de unidades de NAL. As unidades de NAL do fluxo de bits podem incluir unidades de NAL de conjunto de parâmetros de vídeo, unidades de NAL de conjunto de parâmetros de sequência, unidades de NAL de conjunto de parâmetros de figuração, unidades de NAL de SEI e assim por diante. Como parte da realização da operação de análise sintática no fluxo de bits, a unidade de decodificação por entropia 150 pode realizar operações de análise sintática que extraem e decodificam por entropia os conjuntos de parâmetros de sequência a partir das unidades de NAL de conjunto de parâmetros de sequência, conjuntos de parâmetros de figuração a partir das unidades de NAL de conjunto de parâmetros de figuração, dados de SEI a partir das unidades de NAL de SEI e assim por diante.
[0104] Além disso, as unidades de NAL do fluxo de bits podem incluir unidades de NAL de fatia codificada. Como parte da realização da operação de análise sintática no fluxo de bits, a unidade de decodificação por entropia 150 pode realizar operações de análise sintática que extraem e decodificam por entropia as fatias codificadas a partir das unidades de NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe pertencentes a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um conjunto de parâmetros de figuração associado a uma gravura que contém a fatia. A unidade de decodificação por entropia 150 pode realizar operações de decodificação por entropia, tais como operações de decodificação de CABAC, em elementos de sintaxe no cabeçalho de fatia codificada para recuperar o cabeçalho de fatia.
[0105] Como parte da extração dos dados de fatia das unidades de NAL de fatia codificada, a unidade de decodificação por entropia 150 pode realizar operações de análise sintática que extraem elementos de sintaxe das CUs codificadas nos dados de fatia. Os elementos de sintaxe extraídos podem incluir elementos de sintaxe associados aos blocos de coeficiente de transformada. A unidade de decodificação por entropia 150 pode, então, realizar as operações de decodificação de CABAC em alguns dos elementos de sintaxe.
[0106] Após a unidade de decodificação por entropia 150 realizar uma operação de análise sintática em uma CU não particionada, o decodificador de vídeo 30 pode realizar uma operação de reconstrução na CU não particionada. Para realizar a operação de reconstrução em uma CU não particionada, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Realizando-se a operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir um bloco de vídeo residual associado à CU.
[0107] Como parte da realização de uma operação de reconstrução em uma TU, a unidade de quantização inversa 154 pode quantizar de modo inverso, por exemplo, desquantizar, um bloco de coeficiente de transformada associado à TU. A unidade de quantização inversa 154 pode quantizar de modo inverso o bloco de coeficiente de transformada de uma maneira similar aos processos de quantização inversa propostos para HEVC ou definidos pelo padrão de decodificação H.264. A unidade de quantização inversa 154 pode usar um parâmetro de quantização QP calculado pelo codificador de vídeo 20 para uma CU do bloco de coeficiente de transformada para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa para aplicação pela unidade de quantização inversa 154.
[0108] Após a unidade de quantização inversa 154 quantizar de modo inverso um bloco de coeficiente de transformada, a unidade de transformada inversa 156 pode gerar um bloco de vídeo residual para a TU associada ao bloco de coeficiente de transformada. A unidade de transformada inversa 156 pode aplicar uma transformada inversa ao bloco de coeficiente de transformada a fim de gerar o bloco de vídeo residual para a TU. Por exemplo, a unidade de transformada inversa 156 pode aplicar uma DCT inversa, uma transformada de número inteiro inversa, uma transformada de Karhunen-Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa ou uma outra transformada inversa ao bloco de coeficiente de transformada. Em alguns exemplos, a unidade de transformada inversa 156 pode determinar uma transformada inversa para aplicar ao bloco de coeficiente de transformada com base na sinalização do codificador de vídeo 20. Em tais exemplos, a unidade de transformada inversa 156 pode determinar a transformada inversa com base em uma transformada sinalizada no nó raiz de uma árvore quadrática para um bloco de árvore associado ao bloco de coeficiente de transformada. Em outros exemplos, a unidade de transformada inversa 156 pode inferir a transformada inversa 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 transformada inversa 156 pode aplicar uma transformada inversa colocada em cascata.
[0109] Em alguns exemplos, a unidade de compensação de movimento 162 pode aprimorar o bloco de vídeo previsto de a PU através da realização da interpolação com base em filtros de interpolação. Os identificadores para filtros de interpolação a serem usados para compensação de movimento com precisão de subamostra podem estar incluídos nos elementos de sintaxe. A unidade de compensação de movimento 162 pode usar os mesmos filtros de interpolação usados pelo codificador de vídeo 20 durante a geração do bloco de vídeo previsto do PU a fim de calcular os valores interpolados para amostras de sub- número inteiro de um bloco de referência. A unidade de compensação de movimento 162 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 de acordo com as informações de sintaxe recebidas e pode usar os filtros de interpolação para produzir o bloco de vídeo previsto.
[0110] Se uma PU for codificada usando a intrapredição, a unidade de intrapredição 164 pode realizar a intrapredição para gerar um bloco de vídeo previsto para a PU. Por exemplo, a unidade de intrapredição 164 pode determinar um modo de intrapredição para a PU com base em elementos de sintaxe no fluxo de bits. O fluxo de bits pode incluir elementos de sintaxe que a unidade de intrapredição 164 pode usar para determinar o modo de intrapredição da PU.
[0111] Em algumas instâncias, os elementos de sintaxe podem indicar que a unidade de intrapredição 164 deve usar o modo de intrapredição de uma outra PU para determinar o modo de intrapredição da PU atual. Por exemplo, pode ser provável que o modo de intrapredição da PU atual seja o mesmo do modo de intrapredição de uma PU vizinha. Em outras palavras, o modo de intrapredição da PU vizinha pode ser o modo mais provável para a PU atual. Por conseguinte, nesse exemplo, o fluxo de bits pode incluir um elemento de sintaxe pequeno que indica que o modo de intrapredição da PU é o mesmo do modo de intrapredição da PU vizinha. A unidade de intrapredição 164 pode, então, usar o modo de intrapredição para gerar dados de predição (por exemplo, amostras previstas) para a PU com base nos blocos de vídeo de PU espacialmente vizinhas.
[0112] Conforme discutido acima, o decodificador de vídeo 30 também pode incluir a unidade de predição intercamadas 166. A unidade de predição intercamadas 166 é configurada para prever um bloco atual (por exemplo, um bloco atual na camada melhorada) com o uso de uma ou mais camadas diferentes que estão disponíveis na SHVC (por exemplo, uma camada-base ou de referência). Tal predição pode ser chamada de predição intercamadas. A unidade prevista intercamada 166 utiliza os métodos de predição para reduzir a redundância de intercamada e aprimorando, desse modo, a eficiência de codificação e reduzindo os requisitos de recurso computacional. Alguns exemplos de predição intercamadas incluem intrapredição intercamadas, predição de movimento intercamadas e predição residual intercamadas. A intrapredição intercamadas usa a reconstrução de blocos colocalizados na camada-base para prever o bloco atual na camada de aperfeiçoamento. A predição de movimento intercamadas usa informações de movimento da camada-base para prever movimento na camada de aperfeiçoamento. A predição residual intercamadas usa o resíduo da camada-base para prever o resíduo da camada de aperfeiçoamento. Cada um dos esquemas de predição intercamadas é discutido abaixo em maiores detalhes.
[0113] A unidade de reconstrução 158 pode usar os blocos de vídeo residuais associados às TUs de uma CU e os blocos de vídeo previstos das PUs da CU, por exemplo, os dados de intrapredição ou os dados de interpredição, conforme aplicável, para reconstruir o bloco de vídeo da CU. Portanto, o decodificador de vídeo 30 pode gerar um bloco de vídeo previsto e um bloco de vídeo residual com base em elementos de sintaxe no fluxo de bits e pode gerar um bloco de vídeo com base no bloco de vídeo previsto e no bloco de vídeo residual.
[0114] Após a unidade de reconstrução 158 reconstruir o bloco de vídeo da CU, a unidade de filtro 159 pode realizar uma operação de desbloqueio para reduzir artefatos de bloqueio associados à CU. Após a unidade de filtro 159 realizar uma operação de desblocagem para reduzir os artefatos de blocagem associados à CU, o decodificador de vídeo 30 pode armazenar o bloco de vídeo da CU no armazenamento temporário de figuração decodificada 160. O armazenamento temporário de figuração decodificada 160 pode fornecer figurações de referência para compensação, intrapredição e apresentação de movimento subsequente em um dispositivo de exibição, tal como o dispositivo de exibição 32 da Figura 1A ou 1B. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos de vídeo no armazenamento temporário de figuração decodificada 160, operações de intrapredição ou interpredição nas PUs ou outras CUs.
MODO DE CODIFICAÇÃO DE PALETA
[0115] Em contraste à intrapredição e à interpredição convencionais que removem principalmente redundância entre unidades de codificação diferentes, a codificação de paleta alveja a redundância de padrões/valores de pixel repetitivos dentro da unidade de codificação. No modo de codificação de paleta, uma tabela de consulta chamada de paleta que mapeia os valores de pixel em índices de tabela (também chamados de índices de paleta) é sinalizada primeiro. Em algumas implantações, a paleta tem um tamanho máximo específico (por exemplo, 32 valores de pixel). A paleta inclui entradas numeradas pelos índices de tabela que representam valores ou intensidades de componente de cor (por exemplo, RGB, YUV, etc.) que podem ser usados como previsores para amostras de bloco ou como amostras de bloco reconstruído finais. Em algumas implantações, as amostras em um bloco de paleta são codificadas com o uso de três modos de sequência, isto é "modo de cópia à esquerda" (ou modo de sequência), "modo de cópia acima" e "modo de escape" (ou modo de pixel).
[0116] Para uma posição no bloco de paleta que é codificado no modo de cópia à esquerda, um índice de paleta é primeiro sinalizado seguido por “run_length” (ou “palette_run”) (por exemplo, M). Nenhuma informação adicional precisa ser sinalizada para a posição atual e as seguintes posições M no bloco de paleta devido à posição atual e as seguintes posições M no bloco de paleta têm o mesmo índice de paleta que é sinalizado para a posição atual. O índice de paleta (por exemplo, i) é compartilhamento por todos os três componentes de cor, o que significa que os valores de pixel reconstruído (Y, U, V) = (paletteY[i], paletteU[i], paletteV[i]) (presumindo que o espaço de cor é YUV).
[0117] Para posição no bloco de paleta que é codificado no modo de cópia acima, um valor “run_length” (ou “copy_run”) (por exemplo, N) é sinalizado para indicar que para as seguintes N posições (N + 1 posições no total, incluindo a posição atual) no bloco de paleta, o índice de paleta é igual ao índice de paleta da posição que é diretamente acima no bloco de paleta.
[0118] Para uma posição no bloco de paleta que é codificada no modo de escape (ou modo de pixel), um valor de pixel correspondente à posição atual no bloco de paleta é sinalizada. O modo de escape pode ser sinalizado com o uso de um sinalizador de escape (por exemplo, um valor de sinalizador de 1 indica que a posição atual é codificada no modo de escape) ou um índice de paleta (por exemplo, um valor de índice que não corresponde a qualquer umas das entradas de paleta ou um valor de índice que é maior do que ou igual ao tamanho de paleta).
FLUXO DE BITS DE PALETA
[0119] Nas implantações existentes, um fluxo de bits de paleta (por exemplo, um fluxo de bits que inclui unidades de codificação codificadas em modo de codificação de paleta) é organizado como a seguir: TABELA 1. FLUXO DE BITS DE MODO DE ALETA
[0120] As entradas de paleta incluem um ou mais valores de pixel, cada um mapeado para um índice de tabela. Por exemplo, se uma dada unidade de codificação incluir três valores de pixel únicos (por exemplo, vermelho, verde e azul), as entradas de paleta podem incluir três entradas, (0, vermelho), (1, verde) e (2, azul). O palette_index_map inclui um ou mais blocos de paleta codificados com o uso das entradas de paleta, em que os índices de tabela de paleta (por exemplo, 0, 1, e 2 no exemplo acima) são usados para indicar os valores de pixel no bloco de paleta.
[0121] A Figura 4 ilustra uma configuração exemplificativa de CU de entrada 410, bloco de índice 420, pixel de escape 430 e paleta 440. Conforme mostrado na Figura 4, a CU de entrada 410 contém três valores de pixel únicos: branco, cinza e preto. Com base na frequência de branco e cinza, somente os valores de pixel branco e cinza são incluídos na paleta 440, em que um valor de índice de 0 está associado ao valor de pixel branco e um valor de índice de 1 está associado ao valor de pixel cinza. O valor de pixel preto que não está incluído na paleta é rotulado como um pixel de escape 430, que é codificado independentemente da paleta. Conforme mostrado na Figura 4, o bloco de índice 420 inclui um valor de índice para cada posição no bloco. Duas posições no bloco de índice 420 são codificados como no modo de escape (por exemplo, sem se referir a índices de paleta 0 ou 1). Embora somente um único pixel de escape e somente duas entradas de paleta sejam usados no exemplo da Figura 4, as modalidades do presente pedido não são tão limitadas, e qualquer número de pixels de escape e entradas de paleta podem ser usados. Em algumas modalidades, O tamanho de paleta é limitado a 32 entradas, e quaisquer valores de pixel não associados a uma dentre as 32 entradas se tornam pixels de escape. O tamanho de paleta máximo pode ser estabelecido como qualquer número. Adicionalmente, o tamanho de CU não está limitado a 8 pixels por 8 pixels, e pode ser 16x16 ou qualquer outro tamanho.
SINTAXE EXEMPLIFICATIVA DO FLUXO DE BITS DE PALETA
[0122] Em algumas implantações, no mapa de índice de paleta, um bloco codificado em modo de codificação de paleta pode tomar a seguinte forma no fluxo de bits: TABELA 2. FLUXO DE BITS DE PALETTE_INDEX_MAP (CONFIGURAÇÃO PADRÃO)
[0123] No exemplo ilustrado na Tabela 2, dependendo do valor de run_mode_flag, elementos de sintaxe diferentes são sinalizados no fluxo de bits. Se o sinalizador de modo de sequência indicar que a posição atual no bloco de paleta é codificada no modo de cópia acima, o corpo de sequência inclui um valor de comprimento de sequência (o primeiro caso de “run_length” acima). Se o sinalizador de modo de sequência indicar que a posição atual no bloco de paleta for codificada no modo de "cópia à esquerda", o corpo de sequência inclui um valor de índice (“índice”) seguido por um valor de comprimento de sequência (o segundo caso de “run_length” acima), a menos que o valor de índice corresponda a um índice de escape, caso no qual os valores de pixel de escape quantizados (“escape_pixel_value”) são sinalizados.
[0124] Em uma implantação alternativa, um sinalizador de escape explícito é usado. Mais especificamente, o mapa de índice de paleta pode tomar a seguinte forma no fluxo de bits: TABELA 3. FLUXO DE BITS DE PALETTE_INDEX_MAP (CONFIGURAÇÃO ALTERNATIVA)
[0125] No exemplo ilustrado na Tabela 3, dependendo do valor de escape_flag, elementos de sintaxe diferentes são sinalizados no fluxo de bits. Se o sinalizador de escape tiver um valor de 1, o corpo de sequência inclui valores de pixel de escape quantizados. Se o sinalizador de escape tiver um valor de 0, um sinalizador de modo de sequência é sinalizado para diferenciar os modos de "cópia acima" e "cópia à esquerda". Se o sinalizador de modo de sequência indicar que a posição atual no bloco de paleta é codificada em modo de "cópia à esquerda", o fluxo de bits inclui um valor de índice seguido por um valor de comprimento de sequência. De outra forma, somente um valor de comprimento de sequência é sinalizado no fluxo de bits.
[0126] A Figura 5 é um fluxograma que ilustra um método 500 para a codificação de dados de vídeo não natural em um fluxo de bits de acordo com aspectos da presente revelação. As etapas ilustradas na Figura 5 podem ser realizadas por um codificador de vídeo (por exemplo, o codificador de vídeo 20), um decodificador de vídeo (por exemplo, o decodificador de vídeo 30) ou qualquer outro componente. Por conveniência, o método 500 é descrito como realizado por um codificador de vídeo (também simplesmente denominado como codificador), que pode ser o codificador de vídeo 20, o decodificador de vídeo 30 ou outro componente.
[0127] O método 500 começa no bloco 501. No bloco 505, o codificador processa uma unidade de codificação (CU) que tem uma pluralidade de pixels com base em uma paleta associada à CU. Conforme descrito acima, um codificador pode derivar a paleta com base no conteúdo da CU e sinalizar a paleta no fluxo de bits de modo que um decodificador possa processar a CU com o uso da paleta associada à CU. A paleta pode incluir uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel. O valor de pixel pode ser associado a um dos pixels na CU. Em algumas modalidades, cada entrada de paleta é associada a um valor de pixel único que é encontrado na CU. O bloco 505 pode compreender uma ou mais etapas e/ou métodos descritos com referência às Figuras 6 a 8 O método termina no bloco 510.
BINS DE DESVIO DE AGRUPAMENTO
[0128] Em H.264, HEVC e muitos outros padrões de codificação de vídeo modernos, para um elemento de sintaxe, após a binarização, o fluxo de 0/1 bin é alimentado no codificador aritmético binário adaptativo ao contexto (CABAC), em que o modelo de probabilidade (chamado de “contexto”) é selecionado e atualizado de modo adaptativo para rastrear a distribuição de probabilidade não estacionária. Como um caso especial, o modelo de probabilidade pode não ser atualizado para aprimorar o desempenho do codificador por entropia. Os bins codificados com o uso de tal método simplificado sem atualização de contexto são chamados de bins de desvio.
[0129] Nos exemplos das Tabelas 2 e 3, pode haver algumas redundâncias no fluxo de bits. Essas redundâncias podem ser removidas ignorando-se para sinalizar determinados elementos de sintaxe quando determinadas condições são satisfeitas. Além disso, alguns elementos de sintaxe podem introduzir dependência de análise sintática. Por exemplo, na Tabela 2, o elemento de sintaxe run_mode_flag pode não precisar ser sinalizado se o pixel atual estiver na primeira linha do bloco, visto que o decodificador pode inferior o modo de sequência como o modo de cópia de índice (por exemplo, modo de cópia à esquerda). Além disso, no exemplo da Tabela 2, o decodificador decodifica o valor de índice primeiro, e dependendo do valor de índice decodificado, o decodificador decide se o modo é modo de cópia de índice ou modo de escape (por exemplo, com base em se o valor de índice representa ou não um valor de índice de escape). Se o decodificador determinar o modo como o modo de cópia de índice, o analisador sintático de decodificador continuar a realizar a análise sintática do comprimento de sequência. Se o decodificador determinar o modo como o modo de escape, o analisador sintático de decodificador pode continuar a realizar a análise sintática de valores de escape e/ou comprimento de sequência. Visto que os analisadores sintáticos geralmente operam em uma velocidade muito maior do que os decodificadores, tal dependência entre o mecanismo de decodificação e o mecanismo de análise sintática pode afetar o desempenho do analisador sintático (por exemplo, visto que o mecanismo de análise sintática pode precisar aguardar pelo mecanismo de decodificação decodificar os bits submetidos à análise sintática). Portanto, um método aprimorado dos blocos de processamento codificados no modo de codificação de paleta é desejado. Neste pedido, vários métodos inovadores para organizar os elementos de paleta no fluxo de bits para evitar ou reduzir a dependência de análise sintática no modo de paleta são descritos.
MODALIDADE N°1; COLOCAR VALORES DE PIXEL DE ESCAPE QUANTIZADOS NO FIM DE UM MODO DE BLOCO DE PALETA
[0130] Em algumas modalidades, todos os valores de pixel de escape quantizados são sinalizados no fim de um modo de bloco de paleta no fluxo de bits. Nessas modalidades, a reconfiguração de codificador por entropia pode ser aplicada após a codificação (índice, comprimento de sequência). Por exemplo, após codificar todos os pares possíveis (índice, comprimento de sequência) no bloco, a variável ivlCurrRangedo mecanismo de codificação aritmética (por exemplo, uma variável que especifica a faixa do intervalor de codificação aritmética atual) é estabelecida como 256. Com esse método, o decodificador pode ler os bits a partir do fluxo de bits e tratá-los conforme os mesmos estão sem a necessidade de invocar o codificador CABAC. Em esse procedimento de reconfiguração da variável para 256, ao mesmo tempo em que o contexto pode não precisar ser atualizado, o decodificador pode ainda precisar invocar o codificador CABAC para fazer as decisões binárias. Portanto, os valores de pixel de escape quantizados podem ser submetidos à análise sintática em paralelo após realizar a análise sintática e/ou decodificar todos os pares (índice, comprimento de sequência). Em uma modalidade, se os valores de pixel de escape forem codificados com o uso de código de comprimento fixo, então os valores de pixel de escape podem ser submetidos à análise sintática e decodificados em paralelo após realizar a análise sintática do bloco de índice-sequência.
[0131] Em outra modalidade, se os valores de pixel de escape forem codificados com o uso de código binário truncado, então, cada componente de cor do pixel de escape pode captar "k" ou "k + 1" bits dependendo de seu valor. Por exemplo, na codificação binária truncada, para um elemento de sintaxe com valor X, presumindo que seu valor possível máximo Max é conhecido e que n = Max + 1 e k = floor(log2 (n)) de modo que 2k < n < 2k + 1 e deixar u = 2k + 1 - n, se X< u, a palavra código binária truncada é especificada pela representação binária de X com comprimento k. De outra forma, a palavra código binária truncada é especificada pela representação binária de X + u com comprimento k + 1. Nessa modalidade, os primeiros bits de cada componente de cor para todos os pixels de escape no bloco atual podem ser agrupados juntos, seguidos pelo (k + 1)ésimo bit opcional. Com tal organização, os primeiros bits de componente de cor para todos os pixels de escape podem ser submetidos à análise sintática e decodificados em paralelo. Alguma dependência ainda pode existir na análise sintática do (k + 1)ésimo bit opcional.
[0132] A Figura 6 é um fluxograma que ilustra um método 600 para a decodificação de dados de vídeo não natural em um fluxo de bits de acordo com aspectos da presente revelação. As etapas ilustradas na Figura 6 podem ser realizadas por um decodificador de vídeo (por exemplo, o decodificador de vídeo 30) ou qualquer outro componente. Por conveniência, o método 600 é descrito como realizado por um codificador de vídeo (também simplesmente denominado como codificador), que pode ser o decodificador de vídeo 30 ou outro componente.
[0133] O método 600 começa no bloco 601. No bloco 605, o codificador realiza a análise sintática de uma paleta associada à CU fornecida no fluxo de bits. A paleta pode incluir uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel associado ao valor de índice. Um exemplo da paleta é ilustrado na Figura 4.
[0134] No bloco 610, o codificador realiza a análise sintática de um ou mais comprimentos de sequência associados a uma CU. Conforme descrito acima, cada comprimento de sequência indica o número de posições consecutivas, a partir de e incluindo uma posição atual na CU, que são associadas a um modo de cópia à esquerda ou um modo de cópia acima.
[0135] No bloco 615, o codificador realiza a análise sintática de um ou mais valores de índice associados à CU. Conforme descrito acima, cada valor de índice indica um valor de pixel na paleta que está associado à posição atual na CU. No exemplo da Figura 4, um valor de índice de 0 indica que a posição atual na CU tem um valor de pixel branco, e um valor de índice de 1 indica que a posição atual na CU tem um valor de pixel cinza.
[0136] No bloco 620, o codificador realiza a análise sintática de um ou mais valores de pixel de escape associados à CU. Conforme descrito acima, cada valor de pixel de escape indica um valor de pixel que não está na paleta associada à CU. No exemplo da Figura 4, as duas posições na CU que têm valores de pixel negro são codificadas no modo de escape e o codificador sinaliza os valores de pixel negro no fluxo de bits como valores de pixel de escape. Em algumas modalidades, os valores de pixel de escape são submetidos à análise sintática a partir de posições consecutivas no fluxo de bits (por exemplo, no fim da porção do fluxo de bits associado à CU). Por exemplo, as posições consecutivas dos valores de pixel de escape aparecem no fluxo de bits após todos os comprimentos de sequência e valores de índice associados à CU. Nessas modalidades, após todos os comprimentos de sequência e os valores de índice terem sido submetidos à análise sintática, os valores de pixel de escape podem ser processados (por exemplo, submetidos à análise sintática) em paralelo. No bloco 625, o codificador decodifica a CU com base na paleta analisada, comprimentos de sequência submetidos à análise sintática, valores de índice submetidos à análise sintática, e valores de escape submetidos à análise sintática. O método termina no bloco 630.
[0137] No método 600, um ou mais dos blocos mostrados na Figura 6 podem ser removidos (por exemplo, não realizados) e/ou a ordem em que o método é realizado pode ser comutada. Por exemplo, o bloco 610 e o bloco 615 podem ser realizados juntos para realizar a análise sintática de cada par de comprimento de sequência e valor de índice associado à CU. Em algumas modalidades, blocos adicionais podem ser adicionados ao método 600. As modalidades da presente revelação não se limitam ao exemplo mostrado na Figura 6 e outras variações podem ser implantadas sem se afastar do espírito desta revelação.
MODALIDADE N°2; COLOCAR VALORES DE ÍNDICE NO FIM DE UM MODO DE BLOCO DE PALETA
[0138] Em algumas modalidades, todos os valores de índice são sinalizados no fim de um modo de bloco de paleta no fluxo de bits. Em uma modalidade, todos os valores de escape quantizados são sinalizados no fim do modo de bloco de paleta no fluxo de bits, seguindo o grupo de todas as ocorrências dos valores de índice. Em outra modalidade, todos os valores de índice são sinalizados logo antes dos valores de escape quantizados no fluxo de bits.
[0139] A reconfiguração de codificador por entropia pode ser aplicada após a codificação de comprimento de sequência. Por exemplo, após codificar todos os comprimentos de sequência possíveis no bloco, a variável ivlCurrRangedo mecanismo de codificação aritmética (por exemplo, uma variável que especifica a faixa do intervalor de codificação aritmética atual) é estabelecida como 256. Portanto, os valores de índice e/ou os valores de escape podem ser submetidos à análise sintática em paralelo após realizar a análise sintática de e/ou decodificar todos os comprimentos de sequência no bloco de paleta. Em uma modalidade, se os valores de índice forem codificados com o uso de código de comprimento fixo, então os valores de índice podem ser submetidos à análise sintática e decodificados em paralelo após realizar a análise sintática do bloco de comprimento de sequência.
[0140] Em outra modalidade, se os valores de índice forem codificados com o uso de código binário truncado, então, os índices podem tomar "k" ou "k + 1" bits dependendo de seu valor. Nessa modalidade, os primeiros bits de cada componente de cor para todos os valores de índice e/ou os pixels de escape no bloco atual podem ser agrupados juntos, seguidos pelo (k + 1)ésimo bit opcional. Com essa organização, os primeiros bits de todos os valores de índice e/ou os valores de escape no bloco atual podem ser submetidos à análise sintática e decodificados em paralelo. Alguma dependência ainda pode existir na análise sintática do (k + 1)ésimo bit opcional.
[0141] A Figura 7 é um fluxograma que ilustra um método 700 para a decodificação de dados de vídeo não natural em um fluxo de bits de acordo com aspectos da presente revelação. As etapas ilustradas na Figura 7 podem ser realizadas por um decodificador de vídeo (por exemplo, o decodificador de vídeo 30) ou qualquer outro componente. Por conveniência, o método 700 é descrito como realizado por um codificador de vídeo (também simplesmente denominado como codificador), que pode ser o decodificador de vídeo 30 ou outro componente.
[0142] O método 700 começa no bloco 701. No bloco 705, o codificador realiza a análise sintática de uma paleta associada à CU fornecida no fluxo de bits. A paleta pode incluir uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel associado ao valor de índice. Um exemplo da paleta é ilustrado na Figura 4.
[0143] No bloco 710, o codificador realiza a análise sintática de um ou mais comprimentos de sequência associados a uma CU. Conforme descrito acima, cada comprimento de sequência indica o número de posições consecutivas, a partir de e incluindo uma posição atual na CU, que são associadas a um modo de cópia à esquerda ou um modo de cópia acima.
[0144] No bloco 715, o codificador realiza a análise sintática de um ou mais valores de índice associados à CU. Conforme descrito acima, cada valor de índice indica um valor de pixel na paleta que está associado à posição atual na CU. No exemplo da Figura 4, um valor de índice de 0 indica que a posição atual na CU tem um valor de pixel branco, e um valor de índice de 1 indica que a posição atual na CU tem um valor de pixel cinza. No exemplo da Figura 7, os valores de índice podem ser submetidos à análise sintática a partir de posições consecutivas no fluxo de bits (por exemplo, todos os comprimentos de sequência associados à CU). Nessas modalidades, após todos os comprimentos de sequência terem sido submetidos à análise sintática, os valores de índice podem ser processados (por exemplo, submetidos à análise sintática) em paralelo. Por exemplo, os valores de índice podem ser fornecidos imediatamente antes dos valores de pixel de escape no fluxo de bits.
[0145] No bloco 720, o codificador realiza a análise sintática de um ou mais valores de pixel de escape associados à CU. Conforme descrito acima, cada valor de pixel de escape indica um valor de pixel que não está na paleta associada à CU. No exemplo da Figura 4, as duas posições na CU que têm valores de pixel negro são codificadas no modo de escape e o codificador sinaliza os valores de pixel negro no fluxo de bits como valores de pixel de escape. Em algumas modalidades, os valores de pixel de escape podem ser submetidos à análise sintática a partir de posições consecutivas no fluxo de bits (por exemplo, no fim da porção do fluxo de bits associado à CU). Por exemplo, as posições consecutivas dos valores de pixel de escape podem aparecer no fluxo de bits após todos os comprimentos de sequência e valores de índice associados à CU. Nessas modalidades, após todos os comprimentos de sequência e os valores de índice terem sido submetidos à análise sintática, os valores de pixel de escape podem ser processados (por exemplo, submetidos à análise sintática) em paralelo. No bloco 725, o codificador decodifica a CU com base na paleta analisada, comprimentos de sequência submetidos à análise sintática, valores de índice submetidos à análise sintática e valores de escape submetidos à análise sintática. O método termina no bloco 730.
[0146] No método 700, um ou mais dos blocos mostrados na Figura 7 podem ser removidos (por exemplo, não realizados) e/ou a ordem em que o método é realizado pode ser comutada. Em algumas modalidades, blocos adicionais podem ser adicionados ao método 700. As modalidades da presente revelação não se limitam ao exemplo mostrado na Figura 7 e outras variações podem ser implantadas sem se afastar do espírito desta revelação.
MODALIDADE N°3; USO DE DESLOCAMENTOS PARA ESPECIFICAR A POSIÇÃO DO VALOR DE ÍNDICE E DO VALOR DE PIXEL DE ESCAPE
[0147] Em algumas modalidades, dois deslocamentos podem ser sinalizados no início de um modo de bloco de paleta no fluxo de bits, em que os dois deslocamentos especificam as posições iniciais do grupo de valor de índice e do grupo de valor de pixel de escape discutidos acima, denotados, por exemplo, por S0 e S1, respectivamente. No caso em que o grupo de valor de índice está À frente do grupo de valor de pixel de escape, somente o valor de delta entre as duas posições iniciais pode ser sinalizado para o segundo deslocamento (por exemplo, os deslocamentos S0 e S1 -S0 podem ser sinalizados). Os dois deslocamentos podem ser sinalizados com o uso de vários métodos de codificação por entropia, por exemplo, Truncada- Rice, Exponencial-Golomb, Truncado-Binário, Comprimento Fixo, Unária, Unária Truncada, etc. Em algumas modalidades, um valor de deslocamento S2 que indica o fim do modo de bloco de paleta também pode ser sinalizado. Alternativamente, o valor de delta entre o segundo deslocamento e S2 pode ser sinalizado (por exemplo, S2-S1).
IMPLANTAÇÃO DE BINS DE DESVIO DE AGRUPAMENTO
[0148] De acordo com as Modalidades n° 1 e n°3 descritas acima, o fluxo de bits de palette_index_map pode ser modificado conforme a seguir: TABELA 4. EXEMPLO DE FLUXO DE BITS DE PALETTE_INDEX_MAP MODIFICADO
[0149] De acordo com as Modalidades n°1, n°2 e n°3 descritas acima, o fluxo de bits de palette_index_map pode ser modificado conforme a seguir: TABELA 5. FLUXO DE BITS DE PALETTE_INDEX_MAP EXEMPLIFICATIVO
VERIFICAÇÃO DE REDUNDÂNCIA DE ÍNDICE
[0150] Em algumas modalidades, quando se codifica os valores de índice, uma verificação de redundância pode ser aplicada. Por exemplo, se a posição vizinha na ordem de varredura raster (denotada como posição "x - 1") for o fim de um modo de sequência de cópia à esquerda, então o valor de índice atual não pode ser o mesmo que seu valor de índice da posição vizinha anterior. Em outras palavras, se a posição "x - 1" for válida (por exemplo, estiver dentro do bloco atual ou estiver fora do bloco atual, mas ter um valor determinístico, por exemplo, através do preenchimento de margem) e for o fim de uma sequência de cópia à esquerda, então o valor de índice para a posição "x" não pode ser igual ao valor de índice na posição "x - 1" (Caso 1). O motivo é que se os dois valores de índice forem iguais, os mesmos teriam se mesclado em uma sequência de cópia à esquerda mais longo. Em outro exemplo, se a posição vizinha anterior na ordem de varredura raster for o fim de um modo de sequência de cópia acima, e/ou se uma restrição adicional de que vizinho acima da posição atual não é um pixel de escape for satisfeita, então o valor atual não pode ser o mesmo que o valor de índice do vizinho de topo. Em outras palavras, se a posição "x - 1" for válida e for o fim de uma sequência de cópia acima, e/ou se uma restrição adicional de que o valor de pixel acima posição "x" não é um pixel de escape for satisfeita, então o valor de índice para a posição "x" não pode ser igual ao valor de valor de índice do vizinho acima (Caso 2). O motivo é que se os dois valores de índice forem iguais, os mesmos teriam se mesclado em uma sequência de cópia acima mais longo. Portanto, esses exemplos presumem que o codificador segue o princípio de "sequência mais longa possível". Em qualquer um desses casos, a faixa (por exemplo, o valor Max descrito) pode ser reduzido em um e a economia de bits pode ser alcançada.
[0151] Entretanto, para o Caso 1, a decodificação do valor de índice na posição "x" depende da reconstrução do valor de índice na posição "x - 1" (por exemplo, visto que o decodificador precisa saber o valor de índice na posição "x - 1" para determinar que o valor de índice na posição "x" pode ser). Entretanto, o valor de índice para a posição "x - 1" pode não estar prontamente disponível até o momento em que o valor de índice na posição "x" está sendo decodificado. Portanto, essa dependência pode causar algum atraso no processo de decodificação. A fim de remover essa dependência, em algumas modalidades, a verificação condicional para o Caso 1 pode ser desabilitada. Em algumas dessas modalidades, a verificação condicional para o Caso 2 pode ainda ser realizada (por exemplo, visto que o valor de índice de uma posição acima do pixel atual tem uma probabilidade maior de estar disponível). Nessas modalidades, a verificação condicional para o Caso 1 é completamente desabilitada. Alternativamente, a verificação condicional para o Caso 1 pode ser desabilitada somente para um caso específico. Por exemplo, a verificação condicional para o Caso 1 pode ser desabilitada quando o recurso de "sequência limitada" for habilitado, em que o valor de índice de paleta máximo para o qual o comprimento de sequência é codificado (ou o valor de índice de paleta mínimo para o qual o comprimento de sequência não é codificado) é indicado.
[0152] No caso 2, a verificação de se o pixel acima da posição "x" é um pixel de escape ou não pode ser removida se o pixel de escape for admitido nos ciclos de cópia à esquerda ou cópia acima. Por exemplo, os pixels de escape podem ser atribuídos um ou mais valores de índice que não estão na paleta e têm seus próprios ciclos (por exemplo, assim como valores de pixel na paleta). De modo semelhante, a verificação de se o pixel à esquerda da posição "x" é um pixel de escape ou não (por exemplo, uma etapa que pode precisar ser realizada antes de realizar a análise sintática do valor de índice atual na posição x, se a dada implantação não permitir que pixels de escape sejam copiados a partir da esquerda ou a partir de cima) pode ser removida se o pixel de escape for admitido nos ciclos de cópia à esquerda ou de cópia acima.
[0153] A Figura 8 é um fluxograma que ilustra um método 800 para a codificação de dados de vídeo não natural em um fluxo de bits de acordo com aspectos da presente revelação. As etapas ilustradas na Figura 8 podem ser realizadas por um codificador de vídeo (por exemplo, o codificador de vídeo 20), um decodificador de vídeo (por exemplo, o decodificador de vídeo 30) ou qualquer outro componente. Por conveniência, o método 800 é descrito como sendo realizado por um codificador de vídeo (também simplesmente denominado como codificador), que pode ser o codificador de vídeo 20, o decodificador de vídeo 30 ou outro componente.
[0154] O método 800 começa no bloco 801. No bloco 805, o codificador determina que uma posição à esquerda de uma posição atual na CU está associada ao fim de uma sequência de cópia acima. Conforme descrito acima, quando uma ou mais posições na CU forem codificadas no modo de cópia acima, um comprimento de sequência que indica o número de posições consecutivas, a partir de e incluindo a posição inicial na CU, que são associadas ao modo de cópia acima é sinalizado. Com base no comprimento de sequência, o codificador pode determinar que uma dada posição (por exemplo, uma posição que precede imediatamente a posição atual na CU) é o fim de uma sequência de cópia acima.
[0155] No bloco 810, o codificador, em resposta à determinação de que a posição à esquerda da posição atual está associada ao fim de uma sequência de cópia acima, determina o valor de índice associado à posição atual sem determinar se a posição acima da posição atual está associada a um valor de pixel de escape. Conforme descrito acima, tipicamente, o codificador precisa determinar se a posição acima da posição atual está associada a um valor de pixel de escape antes de determinar o valor de índice do pixel atual (por exemplo, se a posição acima da posição atual for associada a um pixel de escape, a suposição de que o valor de índice da posição atual não é igual ao valor de índice da posição acima da posição atual pode se tornar imprecisa. Entretanto, em algumas modalidades da presente revelação, os pixels de escape podem fazer parte de ciclos de cópia à esquerda ou cópia acima. Portanto, uma verificação separada na posição acima da posição atual não é necessária. O método termina no bloco 815.
[0156] No método 800, um ou mais dos blocos mostrados na Figura 8 podem ser removidos (por exemplo, não realizados) e/ou a ordem em que o método é realizado pode ser comutada. Em algumas modalidades, blocos adicionais podem ser adicionados ao método 800. As modalidades da presente revelação não se limitam ao exemplo mostrado na Figura 8 e outras variações podem ser implantadas sem se afastar do espírito desta revelação.
MANUTENÇÃO DE NÚMERO MÁXIMO DE COMPARTIMENTOS DE ÍNDICE COMO CONSTANTE
[0157] Em algumas implantações de codificação de modo de paleta, os índices de paleta são codificados com o uso de código binário truncado. Presumindo que o maior índice na CU atual é N (por exemplo, valor de índice é escolhido a partir de {0, 1, 2, ... , N}, de modo inclusivo, então o número de bins para codificar cada índice pode ser ou se esses dois valres não forem iguais. Como o pixel de escape é atribuído o maior índice (por exemplo, após todos os valores de pixel na paleta serem atribuídos seus valores de índice), a codificação do pixel de escape obtém bins de
[0158] Em alguns casos, explorando-se dependências, como os métodos descritos acima, o maior valor de símbolo para o índice atual pode ser reduzido por um. Em outras palavras, o pixel de escape pode obter ou bins dependendo de se a condição de remoção de redundância está habilitada ou não. Como um resultado, o decodificador pode, em primeiro lugar, precisar calcular se o maior valor de símbolo de índice é N ou N-1 para determinar quantos bins são necessários para decodificar o índice. Isso introduziu atraso no chip adicional e tem efeito negativo à canalização de decodificador. Em algumas modalidades, a fim de remover esse atraso e quaisquer efeitos negativos sobre a canalização de decodificador, esse mecanismo de remoção de redundância pode ser restringido. Por exemplo, o número máximo de bins usados para a codificação de índice pode ser definido como uma constante. Em um exemplo, o valor de índice do pixel de escape pode sempre usar bins de ceil(log2(N + 1)). Em outro exemplo, se ceil(log2(N + 1)) for igual a ceil(log2(N)), o procedimento de remoção de redundância para pixels de escape é habilitado, e de outro modo, o procedimento de remoção de redundância para pixels de escape é desabilitado.
FLUXOGRAMA DE LADO DE CODIFICADOR
[0159] A Figura 9 é um fluxograma que ilustra um método 900 para a codificação de dados de vídeo em um fluxo de bits de acordo com aspectos da presente revelação. Por exemplo, os dados de vídeo podem ser dados de vídeo não naturais que incluem conteúdos de tela gerados por computador. As etapas ilustradas na Figura 9 podem ser realizadas por um codificador de vídeo (por exemplo, o codificador de vídeo 20) ou qualquer outro componente. Por conveniência, o método 900 é descrito como realizado por um codificador de vídeo (também simplesmente denominado como codificador), que pode ser o codificador de vídeo 20 ou outro componente.
[0160] O método 900 começa no bloco 901. No bloco 905, o codificador analisa uma pluralidade de pixels em uma unidade de codificação (CU). Cada pixel na CU pode estar associado a um valor de pixel. Por exemplo, múltiplos na CU podem ter o mesmo valor de pixel.
[0161] No bloco 910, o codificador gera uma paleta com base na pluralidade de pixels na CU. A paleta pode incluir uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel associado ao valor de índice. Um exemplo da paleta é ilustrado na Figura 4.
[0162] No bloco 915, o codificador determina um ou mais comprimentos de sequência associados à CU. Conforme descrito acima, cada comprimento de sequência indica o número de posições consecutivas, a partir de e incluindo uma posição atual na CU, que são associadas a um modo de cópia à esquerda ou um modo de cópia acima.
[0163] No bloco 920, o codificador determina um ou mais valores de índice associados à CU. Conforme descrito acima, cada valor de índice indica um valor de pixel na paleta que está associado à posição atual na CU. No exemplo da Figura 4, um valor de índice de 0 indica que a posição atual na CU tem um valor de pixel branco, e um valor de índice de 1 indica que a posição atual na CU tem um valor de pixel cinza.
[0164] No bloco 925, o codificador determina um ou mais valores de pixel de escape associados à CU. Conforme descrito acima, cada valor de pixel de escape indica um valor de pixel que não está na paleta associada à CU. No exemplo da Figura 4, as duas posições na CU que têm valores de pixel negro são codificadas no modo de escape e o codificador sinaliza os valores de pixel negro no fluxo de bits como valores de pixel de escape.
[0165] No bloco 930, o codificador codifica a CU com base na paleta gerada, comprimentos de sequência determinados, valores de índice determinados e valores de pixel de escape determinados. Em algumas modalidades, os valores de pixel de escape são codificados em posições consecutivas no fluxo de bits (por exemplo, no fim da porção do fluxo de bits associado à CU). Por exemplo, as posições consecutivas dos valores de pixel de escape aparecem no fluxo de bits após todos os comprimentos de sequência e valores de índice associados à CU. Nessas modalidades, após todos os comprimentos de sequência e os valores de índice terem sido submetidos à análise sintática por um decodificador, os valores de pixel de escape podem ser processados (por exemplo, submetidos à análise sintática) em paralelo. O método termina no bloco 935.
[0166] No método 900, um ou mais dos blocos mostrados na Figura 9 podem ser removidos (por exemplo, não realizados) e/ou a ordem em que o método é realizado pode ser comutada. Em algumas modalidades, blocos adicionais podem ser adicionados ao método 900. As modalidades da presente revelação não se limitam ao exemplo mostrado na Figura 9 e outras variações podem ser implantadas sem se afastar do espírito desta revelação.
OUTRAS CONSIDERAÇÕES
[0167] As informações e os sinais revelados podem ser representados com uso de qualquer uma dentre uma variedade de tecnologias e conjuntos de procedimentos diferentes. Por exemplo, dados, instruções, comandos, informações, sinais, bits, símbolos, e circuitos integrados que podem ser referenciados por toda a descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, partículas ou campos magnéticos, partículas ou campos ópticos ou qualquer combinação dos mesmos.
[0168] Os vários blocos lógicos ilustrativos e etapas de algoritmos descritos em conexão com as modalidades reveladas no presente documento podem ser implantados como hardware eletrônico, software de computador ou combinações de ambos. A fim de ilustrar claramente essa intercambialidade de hardware e software, vários componentes, blocos, e etapas ilustrativos foram descritos acima, de modo geral, no que diz respeito à sua funcionalidade. Se tal funcionalidade é implantada como hardware ou software depende da aplicação particular e das restrições de projeto impostas sobre o sistema geral. Os indivíduos versados na técnica podem implantar a funcionalidade descrita em modos variáveis para cada aplicação em particular, porém tais decisões de implantação não devem ser interpretadas como causadoras de um afastamento do escopo da presente revelação.
[0169] Os conjuntos de procedimentos descritos no presente documento podem ser implantados em hardware, software, firmware ou em qualquer combinação dos mesmos. Tais conjuntos de procedimentos podem ser implantadas em qualquer um dentre uma variedade de dispositivos tal como computadores de propósito geral, fones de dispositivo de comunicação sem fio ou dispositivos de circuito integrado que têm múltiplos usos que incluem a aplicação em fones de dispositivo de comunicação sem fio e outros dispositivos. Quaisquer recursos descritos como dispositivos ou componentes podem ser implantados juntos em um dispositivo de lógica integrada ou separadamente como dispositivos de lógica discreta, porém, interoperacionais. Se implantados em software, os conjuntos de procedimentos podem ser concretizados pelo menos em parte por um meio de armazenamento de dados legível por computador que compreende código de programa que inclui instruções que, quando executadas, realizam um ou mais dos métodos descritos acima. O meio de armazenamento de dados legível por computador pode formar parte de um produto de programa de computador, que pode incluir materiais para pacotes. O meio legível por computador pode compreender meios de armazenamento de dados ou de memória, tal como memória de acesso aleatório (RAM) tal como memória de acesso aleatório dinâmico sincrônico (SDRAM), memória de somente leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória de somente leitura programável eletricamente apagável (EEPROM), memória Flash, meios de armazenamento de dados ópticos ou magnéticos e similares. Os conjuntos de procedimentos, adicional ou alternativamente, podem ser realizados pelo menos em parte por um meio de comunicação legível por computador que transporta ou comunica o código de programa na forma de instruções ou estruturas de dados e que podem ser acessadas, lidas e/ou executadas por um computador, tal como ondas ou sinais propagados.
[0170] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados para aplicação específica (ASICs), matrizes lógicas programáveis em campo (FPGAs) ou outro conjunto de circuitos lógico distinto ou integrado equivalente. Tal processador pode ser configurado para realizar qualquer um dos conjuntos de procedimentos descritos nesta revelação. Um processador de propósito geral pode ser um microprocessador, mas, alternativamente, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado convencional. Um processador também pode ser implantado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em combinação com um núcleo de DSP ou qualquer outra tal configuração. Consequentemente, o termo "processador", conforme usado no presente documento, pode se referir a qualquer um dentre a estrutura anterior, qualquer combinação da estrutura anterior ou qualquer outra estrutura ou aparelho adequado para a implantação dos conjuntos de procedimentos descritos no presente documento. Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de software ou hardware dedicados configurados para codificar e decodificar ou incorporados em um codificador-decodificador de vídeo combinado (CODEC). Também, os conjuntos de procedimentos podem ser totalmente implantados em um ou mais circuitos ou elementos lógicos.
[0171] Os conjuntos de procedimentos desta revelação podem ser implantados em uma ampla variedade de dispositivos ou aparelhos, incluindo um telefone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes ou unidades são descritos nesta revelação para enfatizar os aspectos funcionais dos dispositivos configurados para realizar os conjuntos de procedimentos revelados, mas não exigem necessariamente a realização por diferentes unidades de hardware. Em vez disso, conforme 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, que incluem um ou mais processadores conforme descrito acima, em combinação com software e/ou firmware adequados.
[0172] Embora o supracitado tenha sido descrito em conexão com várias modalidades diferentes, recursos ou elementos de uma modalidade podem ser combinados com outras modalidades sem se afastar dos ensinamentos desta revelação. Entretanto, as combinações de recursos entre as respectivas modalidades não são necessariamente limitadas às mesmas. Várias modalidades da revelação foram descritas. Essas e outras modalidades estão abrangidas no escopo das reivindicações a seguir.

Claims (15)

1. Método para decodificação de dados de vídeo fornecidos em um fluxo de bits, sendo que o fluxo de bits inclui uma unidade de codificação, CU, codificada em modo de paleta, caracterizado pelo fato de que compreende: realizar a análise sintática de uma paleta associada à CU fornecida no fluxo de bits, sendo que a paleta inclui uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel associado ao valor de índice; realizar a análise sintática de um ou mais comprimentos de sequência fornecidos no fluxo de bits que são associados à CU, sendo que cada comprimento de sequência indica um número de posições consecutivas, começando a partir de e incluindo uma posição atual na CU, que são associadas a um modo de cópia à esquerda ou um modo de cópia acima; realizar a análise sintática de um ou mais valores de índice fornecidos no fluxo de bits que são associados à CU, em que cada valor de índice indica um valor de pixel na paleta que é associado à posição atual na CU em que os valores de índice são analisados sintaticamente a partir de primeira posições consecutivas no fluxo de bits após todos os comprimentos de sequência associados com o CU; realizar a análise sintática de um ou mais valores de pixel de escape fornecidos no fluxo de bits que são associados à CU, em que cada valor de pixel de escape indica um valor de pixel que não está na paleta, em que os valores de pixel de escape são submetidos à análise sintática a partir de segundas posições consecutivas no fluxo de bits, após todos os comprimentos de sequência e os valores de índice associados à CU; e decodificar a CU com base na paleta analisada, nos comprimentos de sequência submetidos à análise sintática, nos valores de índice submetidos à análise sintática e nos valores de escape submetidos à análise sintática.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente redefinir uma variável de codificação aritmética que especifica uma faixa de um intervalo atual associado à CU após realizar a análise sintática de todos os comprimentos de sequência e os valores de índice associados à CU.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os valores de pixel de escape associados à CU são submetidos à análise sintática em paralelo após realizar a análise sintática de todos os comprimentos de sequência e os valores de índice associados à CU.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente redefinir uma variável de codificação aritmética que especifica uma faixa de um intervalo atual associado à CU após realizar a análise sintática de todos os comprimentos de sequência associados à CU.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os valores de índice associados à CU são submetidos à análise sintática em paralelo após realizar a análise sintática de todos os comprimentos de sequência associados à CU.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: determinar que uma primeira posição na CU que precede imediatamente a posição atual está associada a um fim de uma sequência de cópia acima; e em resposta à determinação de que a primeira posição na CU está associada a um fim de uma sequência de cópia acima, determinar um valor de índice associado à posição atual sem determinar se uma segunda posição imediatamente acima da posição atual na CU está associada a um valor de pixel de escape.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a CU inclui um dentre uma sequência de cópia acima ou uma sequência de cópia à esquerda que inclui um valor de pixel de escape.
8. Aparelho para decodificação de dados de vídeo fornecidos em um fluxo de bits, caracterizado pelo fato de que compreende: uma memória configurada para armazenar dados de vídeo associados ao fluxo de bits, sendo que o fluxo de bits inclui uma unidade de codificação (CU) codificada em modo de paleta; e um processador em comunicação com a memória e configurado para: realizar análise sintática de uma paleta associada à CU fornecida no fluxo de bits, sendo que a paleta inclui uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel associado ao valor de índice; realizar a análise sintática de um ou mais comprimentos de sequência fornecidos no fluxo de bits que são associados à CU, sendo que cada comprimento de sequência indica um número de posições consecutivas, começando a partir de e incluindo uma posição atual na CU, que são associadas a um modo de cópia à esquerda ou um modo de cópia acima; realizar a análise sintática de um ou mais valores de índice fornecidos no fluxo de bits que são associados à CU, em que cada valor de índice indica um valor de pixel na paleta que é associado à posição atual na CU, em que os valores de índice são analisados sintaticamente a partir de primeiras posições consecutivas no fluxo de bits após todas os comprimentos de sequência associados com o CU; realizar a análise sintática de um ou mais valores de pixel de escape fornecidos no fluxo de bits que são associados à CU, em que cada valor de pixel de escape indica um valor de pixel que não está na paleta, em que os valores de pixel de escape são submetidos à análise sintática a partir de segundas posições consecutivas no fluxo de bits, após todos os comprimentos de sequência e os valores de índice associados à CU; e decodificar a CU com base na paleta submetida à análise sintática, nos comprimentos de sequência submetidos à análise sintática, nos valores de índice submetidos à análise sintática e nos valores de escape submetidos à análise sintática.
9. Aparelho, de acordo com a reivindicação 8, caracterizado pelo fato de que o processador é configurado adicionalmente para redefinir uma variável de codificação aritmética que especifica uma faixa de um intervalo atual associado à CU após realizar a análise sintática de todos os comprimentos de sequência e os valores de índice associados à CU.
10. Aparelho, de acordo com a reivindicação 8, caracterizado pelo fato de que o processador é configurado para realizar a análise sintática dos valores de pixel de escape associados à CU em paralelo após realizar a análise sintática de todos os comprimentos de sequência e os valores de índice associados à CU.
11. Aparelho, de acordo com a reivindicação 8, caracterizado pelo fato de que o processador é configurado adicionalmente para redefinir uma variável de codificação aritmética que especifica uma faixa de um intervalo atual associado à CU após realizar a análise sintática de todos os comprimentos de sequência associados à CU, e/ou em que o processador é adicionalmernte configurado para realizar a análise sintática dos valores de índice associados à CU em paralelo após realizar a análise sintática de todos os comprimentos de sequência associados à CU, e/ou em que o processador é configurado adicionalmente para: determinar que uma primeira posição na CU que precede imediatamente a posição atual está associada a um fim de uma sequência de cópia acima; e em resposta à determinação de que a primeira posição na CU está associada a um fim de uma sequência de cópia acima, determinar um valor de índice associado à posição atual sem determinar se uma segunda posição imediatamente acima da posição atual na CU está associada a um valor de pixel de escape e/ou em que a CU inclui um dentre uma sequência de cópia acima ou uma sequência de cópia à esquerda que inclui um valor de pixel de escape.
12. Método para codificação de dados de vídeo em um fluxo de bits caracterizado pelo fato de que compreende: analisar uma pluralidade de pixels em uma unidade de codificação, CU, sendo que cada pixel tem um valor de pixel associado a este; gerar uma paleta com base na pluralidade de pixels na CU, sendo que a paleta inclui uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel associado ao valor de índice; determinar um ou mais comprimentos de sequência associados à CU no fluxo de bits, sendo que cada comprimento de sequência indica um número de posições consecutivas, começando a partir de e incluindo uma posição atual na CU, que estão associadas a um modo de cópia à esquerda ou um modo de cópia acima; determinar um ou mais valores de índice associados à CU no fluxo de bits, em que cada valor de índice indica um valor de pixel na paleta que é associado à posição atual na CU; determinar um ou mais valores de pixel de escape associados à CU no fluxo de bits, em que cada valor de pixel de escape indica um valor de pixel que não está na paleta; e codificar a CU com base na paleta gerada, nos comprimentos de sequência determinados, nos valores de índice determinados e nos valores de pixel de escape determinados, em que os valores de índice são codificados em primeiras posições consecutivas no fluxo de bits após todos os comprimentos de sequência associados com a CU, e os valores de pixel de escape são codificados em segundas posições consecutivas no fluxo de bits, após todos os comprimentos de sequência e os valores de índice associados à CU.
13. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que compreende adicionalmente: determinar que uma primeira posição na CU que precede imediatamente a posição atual está associada a um fim de uma sequência de cópia acima; e em resposta à determinação de que a primeira posição na CU está associada a um fim de uma sequência de cópia acima, determinar um valor de índice associado à posição atual sem determinar se uma segunda posição imediatamente acima da posição atual na CU está associada a um valor de pixel de escape, e/ou em que a CU inclui um dentre uma sequência de cópia acima ou uma sequência de cópia à esquerda que inclui um valor de pixel de escape, e/ou que compreende adicionalmente determinar um primeiro deslocamento que indica uma posição no fluxo de bits que corresponde a um valor de índice que tem uma primeira posição dentre os valores de índice associados à CU, e/ou que compreende adicionalmente determinar um segundo deslocamento que indica uma posição no fluxo de bits que corresponde a um valor de pixel de escape que tem uma primeira posição dentre os valores de pixel de escape associados à CU.
14. Aparelho para codificação de dados de vídeo em um fluxo de bits caracterizado pelo fato de que compreende: uma memória configurada para armazenar dados de vídeo associados ao fluxo de bits, sendo que o fluxo de bits inclui uma unidade de codificação, CU, codificada em modo de paleta; e um processador em comunicação com a memória e configurado para: analisar uma pluralidade de pixels em uma unidade de codificação (CU), sendo que cada pixel tem um valor de pixel associado a este; gerar uma paleta com base na pluralidade de pixels na CU, sendo que a paleta inclui uma pluralidade de entradas de paleta que são, cada uma, associadas a um valor de índice e um valor de pixel associado ao valor de índice; determinar um ou mais comprimentos de sequência associados à CU no fluxo de bits, sendo que cada comprimento de sequência indica um número de posições consecutivas, começando a partir de e incluindo uma posição atual na CU, que estão associadas a um modo de cópia à esquerda ou um modo de cópia acima; determinar um ou mais valores de índice associados à CU no fluxo de bits, em que cada valor de índice indica um valor de pixel na paleta que é associado à posição atual na CU; determinar um ou mais valores de pixel de escape associados à CU no fluxo de bits, em que cada valor de pixel de escape indica um valor de pixel que não está na paleta; e codificar a CU com base na paleta gerada, nos comprimentos de sequência determinados, nos valores de índice determinados e nos valores de pixel de escape determinados, em que os valores de índice são codificados em primeiras posições consecutivas no fluxo de bits após todos os comprimentos de sequência associados com o CU, e os valores de pixel de escape são codificados em segundas posições consecutivas no fluxo de bits, após todos os comprimentos de sequência e os valores de índice associados à CU.
15. Aparelho, de acordo com a reivindicação 14, caracterizado pelo fato de que o processador é configurado adicionalmente para: determinar que uma primeira posição na CU que precede imediatamente a posição atual está associada a um fim de uma sequência de cópia acima; e em resposta à determinação de que a primeira posição na CU está associada a um fim de uma sequência de cópia acima, determinar um valor de índice associado à posição atual sem determinar se uma segunda posição imediatamente acima da posição atual na CU está associada a um valor de pixel de escape, e/ou em que a CU inclui um dentre uma sequência de cópia acima ou uma sequência de cópia à esquerda que inclui um valor de pixel de escape, e/ou em que o processador é configurado adicionalmente para determinar um primeiro deslocamento que indica uma posição no fluxo de bits que corresponde a um valor de índice que tem uma primeira posição dentre os valores de índice associados à CU, e/ou que compreende adicionalmente determinar um segundo deslocamento que indica uma posição no fluxo de bits que corresponde a um valor de pixel de escape que tem uma primeira posição dentre os valores de pixel de escape associados à CU.
BR112016030530-2A 2014-07-02 2015-06-30 Método e aparelho para decodificação de dados de vídeo e método e aparelho para codificação de dados de vídeo em um fluxo de bits BR112016030530B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201462020340P 2014-07-02 2014-07-02
US62/020,340 2014-07-02
US201462028039P 2014-07-23 2014-07-23
US62/028,039 2014-07-23
US14/754,577 US9860560B2 (en) 2014-07-02 2015-06-29 Method for palette mode coding
US14/754,577 2015-06-29
PCT/US2015/038629 WO2016004086A1 (en) 2014-07-02 2015-06-30 Method for palette mode coding

Publications (2)

Publication Number Publication Date
BR112016030530A2 BR112016030530A2 (pt) 2017-08-22
BR112016030530B1 true BR112016030530B1 (pt) 2024-02-15

Family

ID=55017948

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016030530-2A BR112016030530B1 (pt) 2014-07-02 2015-06-30 Método e aparelho para decodificação de dados de vídeo e método e aparelho para codificação de dados de vídeo em um fluxo de bits

Country Status (10)

Country Link
US (1) US9860560B2 (pt)
EP (1) EP3164993B1 (pt)
JP (1) JP6553181B2 (pt)
KR (1) KR102400410B1 (pt)
CN (1) CN106664428B (pt)
BR (1) BR112016030530B1 (pt)
CA (1) CA2952629C (pt)
ES (1) ES2705760T3 (pt)
HU (1) HUE040098T2 (pt)
WO (1) WO2016004086A1 (pt)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2531005A (en) * 2014-10-06 2016-04-13 Canon Kk Improved encoding process using a palette mode
US10097842B2 (en) * 2015-09-18 2018-10-09 Qualcomm Incorporated Restriction of escape pixel signaled values in palette mode video coding
JP6855722B2 (ja) * 2016-09-21 2021-04-07 富士ゼロックス株式会社 画像処理装置およびプログラム
US10869050B2 (en) * 2019-02-09 2020-12-15 Tencent America LLC Method and apparatus for video coding
WO2020169105A1 (en) 2019-02-24 2020-08-27 Beijing Bytedance Network Technology Co., Ltd. Condition dependent coding of palette mode usage indication
US10924750B2 (en) * 2019-03-01 2021-02-16 Alibaba Group Holding Limited Palette size constraint in palette mode for video compression system
US11503311B2 (en) 2019-03-08 2022-11-15 Sony Group Corporation Hybrid palette-DPCM coding for image compression
WO2021013120A1 (en) * 2019-07-20 2021-01-28 Beijing Bytedance Network Technology Co., Ltd. Quantization process for palette mode
EP3987806A4 (en) 2019-07-20 2022-08-31 Beijing Bytedance Network Technology Co., Ltd. CONDITIONAL CODING OF PALETTE MODE USE INDICATION
CN114145013B (zh) 2019-07-23 2023-11-14 北京字节跳动网络技术有限公司 调色板模式编解码的模式确定
EP3991411A4 (en) 2019-07-29 2022-08-24 Beijing Bytedance Network Technology Co., Ltd. CODING IN PALETTE MODE IN A PREDICTION PROCESS
JP2023504407A (ja) * 2019-12-03 2023-02-03 アリババ グループ ホウルディング リミテッド パレットモードを使用するための映像処理方法及び機器
US11967973B2 (en) * 2021-05-06 2024-04-23 Samsung Display Co., Ltd. Low overhead transition encoding codes

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2202916T3 (es) * 1997-11-25 2004-04-01 Thomson Licensing S.A. Interoperabilidad de dispositivos que utilizan menus de presentacion en pantalla en forma de mapas de bits.
CN102790880B (zh) * 2004-06-15 2015-04-08 思科技术公司 用于视频压缩的混合可变长度编码的方法和设备
EP1988703A1 (en) * 2007-05-02 2008-11-05 TTPCOM Limited Image transformation
CN110225345B (zh) * 2013-12-27 2022-07-19 寰发股份有限公司 用于主颜色索引图编码的方法及装置
WO2015103980A1 (en) * 2014-01-07 2015-07-16 Mediatek Inc. Method and apparatus for color index prediction
KR102324004B1 (ko) * 2014-03-14 2021-11-09 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 팔레트 코딩
WO2015140400A1 (en) * 2014-03-17 2015-09-24 Nokia Technologies Oy Method and technical equipment for video encoding and decoding
WO2015194187A1 (en) * 2014-06-20 2015-12-23 Sharp Kabushiki Kaisha Harmonized palette coding

Also Published As

Publication number Publication date
KR102400410B1 (ko) 2022-05-19
EP3164993B1 (en) 2018-10-17
CN106664428B (zh) 2019-07-26
WO2016004086A1 (en) 2016-01-07
JP6553181B2 (ja) 2019-07-31
CN106664428A (zh) 2017-05-10
KR20170028905A (ko) 2017-03-14
ES2705760T3 (es) 2019-03-26
BR112016030530A2 (pt) 2017-08-22
US9860560B2 (en) 2018-01-02
US20160007042A1 (en) 2016-01-07
EP3164993A1 (en) 2017-05-10
JP2017525316A (ja) 2017-08-31
HUE040098T2 (hu) 2019-02-28
CA2952629A1 (en) 2016-01-07
CA2952629C (en) 2022-09-27

Similar Documents

Publication Publication Date Title
BR112016030530B1 (pt) Método e aparelho para decodificação de dados de vídeo e método e aparelho para codificação de dados de vídeo em um fluxo de bits
US9699472B2 (en) Restriction of prediction units in B slices to uni-directional inter prediction
ES2874552T3 (es) Diseño de codificación y descodificación en modo de paleta
JP6151276B2 (ja) ビデオコード化における波面並列処理の使用の指示
JP5893747B2 (ja) コード化スライスnalユニット中のセグメントのパディング
BR112021004492A2 (pt) codificação por transformada múltipla adaptativa
BR112019011883A2 (pt) modo de predição por modelo linear com acesso de amostra para codificação de vídeo
JP2018524906A (ja) イントラブロックコピーモードでの参照ピクチャリスト構成
BR112016024233B1 (pt) Método e aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas
BR112016027426B1 (pt) Codificação de valores de curso com base em índice de paleta em codificação de vídeo baseada em paleta
BR112016022261B1 (pt) Métodos de codificação e decodificação de dados de vídeo, aparelhos configurados para codificar e decodificar dados de vídeo, e, memória legível por computador
BR112016022085B1 (pt) Determinação de tamanho de paleta, entradas de paleta e filtragem de blocos codificados por paleta em codificação de vídeo
BR112016000863B1 (pt) Previsão residual de componente intercor
BR112015007763B1 (pt) Método de decodificação e codificação de dados de vídeo, dispositivo de decodificação e codificação de vídeo e memória legível por computador
BR112016030377B1 (pt) Método e aparelho para converter informações de vídeo em código em um fluxo de bits, assim como memória legível por computador
BR112016008337B1 (pt) Aparelho configurado para codificar informações de vídeo, método para codificar informações de vídeo e memória legível por computador
BR112016015893B1 (pt) Método de decodificação de informações de vídeo, aparelho configurado para decodificar informações de vídeo e memória legível por computador
BR112016029611B1 (pt) Aparelho e método para codificar informações de vídeo em codificação de vídeo de alta eficiência, e, memória legível por computador
BR112017026591B1 (pt) Agrupamento de compartimentos de bypass de paleta para codificação de vídeo
BR112017016371B1 (pt) Agrupamento de índice de paleta para codificação cabac de banda larga
BR112016015931B1 (pt) Suporte de camada-base de não hevc em extensões de muticamadas de hevc
BR112016015568B1 (pt) Método e aparelho para codificar ou decodificar dados de vídeo e memória legível por computador
BR112017017139B1 (pt) Método e aparelho para codificar dados de vídeo e memória legível por computador
BR112016001121B1 (pt) Dispositivo e método para codificação escalável de informações de vídeo e memória legível por computador

Legal Events

Date Code Title Description
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 3A ANUIDADE.

B08G Application fees: restoration [chapter 8.7 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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