BR112016015546B1 - Codificação de índice de cor para codificação de vídeo com base em paleta - Google Patents

Codificação de índice de cor para codificação de vídeo com base em paleta Download PDF

Info

Publication number
BR112016015546B1
BR112016015546B1 BR112016015546-7A BR112016015546A BR112016015546B1 BR 112016015546 B1 BR112016015546 B1 BR 112016015546B1 BR 112016015546 A BR112016015546 A BR 112016015546A BR 112016015546 B1 BR112016015546 B1 BR 112016015546B1
Authority
BR
Brazil
Prior art keywords
palette
block
video
pixel
video data
Prior art date
Application number
BR112016015546-7A
Other languages
English (en)
Other versions
BR112016015546A2 (pt
Inventor
Wei Pu
Marta Karczewicz
Joel Sole Rojals
Liwei GUO
Rajan Laxman Joshi
Feng Zou
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 BR112016015546A2 publication Critical patent/BR112016015546A2/pt
Publication of BR112016015546B1 publication Critical patent/BR112016015546B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/18Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/583Motion compensation with overlapping blocks
    • 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/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/94Vector quantisation
    • 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/93Run-length coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Color Television Systems (AREA)

Abstract

CODIFICAÇÃO DE ÍNDICE DE COR PARA CODIFICAÇÃO DE VÍDEO COM BASE EM PALETA. Na codificação com base em paleta, um codificador de vídeo pode formar uma chamada "paleta" como uma tabela de cores representando dados de vídeo de um bloco determinado. O codificador de vídeo pode codificar os valores de índice para um ou mais valores de pixel de um bloco de dados de vídeo atual, onde os valores de índice indicam as entradas na paleta que representam os valores de pixel do bloco atual Um método inclui a determinação de uma paleta para um bloco de dados de vídeo, identificando os pixels de escape não associados com qualquer entrada de paleta, identificando um valor de parâmetro de quantização (QP) singular para todos os pixels de escape do bloco para um canal de cor determinado utilizando um valor QP para codificação com base em não paleta dos coeficientes de transformação, desquantizando cada pixel de escape utilizando o valor QP identificado, e determinando os valores de pixel do bloco utilizando os pixels de escape desquantizados e valores de índice para quaisquer pixels associados com qualquer entrada de paleta.

Description

[0001] Esse pedido reivindica os benefícios de: Pedido de patente provisório U.S. No. 61/923.163, depositado em 2 de janeiro de 2014; Pedido de patente provisório U.S. No. 61/924.141, depositado em 6 de janeiro de 2014; e Pedido de patente provisório U.S. No. 61/969.759, depositado em 24 de março de 2014, o conteúdo integral de cada um sendo incorporado aqui por referência.
Campo Técnico
[0002] Essa descrição refere-se à codificação e decodificação de vídeo.
Fundamentos
[0003] As capacidades de vídeo digital podem ser incorporadas a uma faixa ampla de dispositivos, incluindo televisões digitais, sistemas de difusão digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, computadores tablet, leitoras de e-book, câmeras digitais, dispositivos de gravação digital, aparelhos de mídia digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones celulares ou de rádio via satélite, os chamados "smart phones", dispositivos de teleconferência de vídeo, dispositivos de sequenciamento de vídeo, e similares. Dispositivos de vídeo digital implementam as técnicas de compressão de vídeo, tal como as descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e extensões de tais padrões, Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informação de vídeo digital de forma mais eficiente pela implementação de tais técnicas de compressão de vídeo.
[0004] As técnicas de compressão de vídeo realizam a previsão espacial (intraimagem) e/ou a previsão temporal (interimagem) para reduzir ou remover a redundância inerente às sequências de vídeo. Para codificação de vídeo com base em bloco, uma fatia de vídeo (isso é, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser dividida em blocos de vídeo. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados utilizando-se previsão espacial com relação às amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem utilizar a previsão espacial com relação às amostras de referência em blocos vizinhos na mesma previsão de imagem ou tempo com relação às amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e as imagens de referência podem ser referidas como quadros de referência.
[0005] A previsão espacial ou temporal resulta em um bloco de previsão para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco de previsão. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco de previsão, e os dados residuais indicam a diferença entre o bloco codificado e o bloco de previsão. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados de domínio de pixel em um domínio de transformação, resultando em coeficientes residuais, que então podem ser quantizados. Os coeficientes quantizados, inicialmente dispostos em um conjunto bidimensional, podem ser digitalizados a fim de produzir um vetor unidimensional de coeficientes, e a codificação por entropia pode ser aplicada para alcançar uma pressão ainda maior.
[0006] Uma sequência de bits de codificação de múltiplas visualizações pode ser gerada pelas vistas de codificação, por exemplo, a partir de múltiplas perspectivas. Alguns padrões de vídeo tridimensionais (3D) foram desenvolvidos para fazer uso dos aspectos de codificação de múltiplas visualizações. Por exemplo, diferentes visualizações podem transmitir visualizações do olho esquerdo e direito para suportar o vídeo 3D. Alternativamente, alguns processos de codificação de vídeo 3D podem aplicar uma codificação de múltiplas visualizações mais profundidade. Na codificação de múltiplas visualizações mais profundidade, uma sequência de bits de vídeo 3D pode conter não apenas os componentes de visualização de textura, mas também componentes de visualização de profundidade. Por exemplo, cada visualização pode compreender um componente de visualização de textura e um componente de visualização de profundidade.
Sumário
[0007] Em geral, as técnicas dessa descrição se referem a uma codificação de vídeo com base em paleta. Na codificação com base em paleta, um codificador de vídeo (por exemplo, um codificador de vídeo ou um decodificador de vídeo) pode formar uma chamada "paleta" como uma tabela de valores de cores ou pixel representando os dados de vídeo de uma área em particular (por exemplo, um bloco determinado). Dessa forma, em vez de codificar os valores de pixel reais ou seus residuais para um bloco de dados de vídeo atual, o codificador de vídeo pode codificar os valores de índice de cor ou paleta para um ou mais dos valores de pixel do bloco atual, onde os valores de índice indicam os registros na paleta que são utilizados para representar os valores de pixel do bloco atual. Um mapa de valores de índice de paleta para um bloco de dados de vídeo atual pode ser codificado, linha por linha, utilizando uma ordem de digitalização determinada e técnicas de codificação de comprimento de funcionamento. Cada um dos valores de índice em uma linha determinada do mapa pode ser explicitamente codificado, previsto a partir do índice de modo esquerdo da linha determinada, ou previsto a partir de um índice de mesma localização em uma linha acima da linha determinada.
[0008] Várias técnicas dessa descrição são direcionadas à melhoria das técnicas de codificação com base em paleta existentes. Em alguns aspectos, essa descrição é direcionada às técnicas para ultrapassar a codificação de um mapa dos valores de índice de paleta para um bloco, se o bloco corresponder a determinados critérios. Em alguns aspectos, essa descrição é direcionada à determinação de uma faixa máxima de valores (também referidos aqui como um "limite de erro") para uma paleta determinada utilizando uma tabela de mapeamento que armazena uma relação entre os valores de parâmetros de quantização e os limites de erro de paleta. Em alguns aspectos, essa descrição é direcionada para definição de um parâmetro de quantização para pixels de um bloco codificado por paleta que não mapeia uma entrada na paleta correspondente (referida aqui como "pixels de escape") com base nos parâmetros de quantização utilizados para a codificação de coeficiente tradicional em um canal de cores correspondente.
[0009] Em um exemplo, essa descrição é direcionada para um método de decodificação de dados de vídeo, o método incluindo a determinação de um número de entradas incluídas em uma paleta utilizada para representar os valores de pixel de um bloco de dados de vídeo a ser decodificado, e determinando se o bloco de dados de vídeo inclui pelo menos um pixel de escape que não está associado com qualquer uma das entradas na paleta. O método pode adicionalmente incluir em resposta à determinação de que o número de entradas incluídas na paleta é igual a um e que o bloco de dados de vídeo não inclui pelo menos um pixel de escape, a ultrapassagem da decodificação dos valores de índice associados com a paleta para os valores de pixel do bloco de dados de vídeo, e determinação dos valores de pixel do bloco de dados de vídeo como sendo igual a uma entrada incluída na paleta.
[0010] Em outro exemplo, essa descrição é direcionada a um método de codificação de dados de vídeo, o método incluindo a determinação de um número de entradas incluídas em uma paleta utilizada para representar os valores de pixel de um bloco de dados de vídeo a ser codificado, e determinando se o bloco de dados de vídeo inclui pelo menos um pixel de escape que não está associado com qualquer uma das entradas na paleta. O método pode incluir adicionalmente, em resposta à determinação de que o número de entradas incluídas na paleta é igual a um e de que o bloco de dados de vídeo não inclui pelo menos um pixel de escape, a ultrapassagem da codificação de valores de índice associados com a paleta para os valores de pixel do bloco de dados de vídeo, e a codificação do bloco de dados de vídeo pela determinação dos valores de pixel do bloco de dados de vídeo como sendo igual a uma entrada incluída na paleta.
[0011] Em outro exemplo, essa descrição é direcionada a um aparelho para decodificação de dados de vídeo, o aparelho compreendendo uma memória configurada para armazenar os dados de vídeo, e um ou mais processadores configurados para determinar um número de entradas incluídas em uma paleta utilizada para representar os valores de pixel de um bloco de dados de vídeo a ser codificado, e para determinar se o bloco de dados de vídeo inclui pelo menos um pixel de escape que não está associado com qualquer uma das entradas na paleta. Os um ou mais processadores podem adicionalmente ser configurados para, em resposta a uma determinação de que o número de entradas incluídas na paleta é igual a um e de que o bloco de dados de vídeo não inclui pelo menos um pixel de escape, ultrapassar a codificação dos valores de índice associados com a paleta para os valores de pixel do bloco de dados de vídeo, e para determinar os valores de pixel do bloco de dados de vídeo para serem iguais a uma entrada incluída na paleta.
[0012] Em outro exemplo, essa descrição é direcionada para um aparelho para codificação de dados de vídeo, o aparelho compreendendo meios para determinar um número de entradas incluídas em uma paleta utilizada para representar os valores de pixel de um bloco de dados de vídeo a ser codificado, e meios para determinar se o bloco de dados de vídeo inclui pelo menos um pixel de escape que não está associado com qualquer uma das entradas na paleta. O aparelho pode incluir adicionalmente meios para ultrapassar, em resposta à determinação de que o número de entradas incluídas na paleta é igual a um e que o bloco de dados de vídeo não inclui pelo menos um pixel de escape, a codificação dos valores de índice associados com a paleta para os valores de pixel do bloco de dados de vídeo e meios para determinar os valores de pixel do bloco de dados de vídeo como sendo igual à entrada incluída na paleta.
[0013] Em outro exemplo, essa descrição é direcionada para um meio legível por computador não transitório codificado com instruções que, quando executadas, fazem com que um ou mais processadores de um dispositivo de codificação de dados de vídeo determinem um número de entradas incluídas em uma paleta utilizada para representar os valores de pixel de um bloco de dados de vídeo a ser codificado, e para determinar se o bloco de dados de vídeo inclui pelo menos um pixel de escape que não é associado com qualquer uma das entradas na paleta. As instruções, quando executadas, podem fazer com que um ou mais processadores, em resposta a uma determinação de que o número de entradas incluídas na paleta é igual a um e de que o bloco de dados de vídeo não inclui pelo menos um pixel de escape, ultrapassem a codificação dos valores de índice associados com a paleta para os valores de pixel do bloco de dados de vídeo, e determinem os valores de pixel do bloco de dados de vídeo para que sejam iguais a uma entrada incluída na paleta.
[0014] Em um exemplo, essa descrição é direcionada a um método de decodificação de dados de vídeo, o método incluindo a determinação de uma paleta utilizada para representar os valores de pixel de um bloco de dados de vídeo a ser decodificado, e identificando, no bloco de dados de vídeo, um ou mais pixels de escape que não estão associados com qualquer uma das uma ou mais entradas na paleta. O método pode incluir adicionalmente a identificação de um valor de parâmetro de quantização singular (QP) para todos os um ou mais pixels de escape do bloco para um canal de cor determinado com base em um valor QP utilizado para transformar a codificação de coeficiente em codificação com base em não paleta, e desquantizar cada um dos um ou mais pixels de escape utilizando o valor QP singular identificado. O método pode incluir adicionalmente a determinação dos valores de pixel do bloco de dados de vídeo com base nos pixels de escape desquantizados e valores de índice recebidos para um ou mais pixels no bloco de dados de vídeo que estão associados com uma ou mais entradas na paleta.
[0015] Em outro exemplo, essa descrição é direcionada a um método de codificação de dados de vídeo, o método incluindo a determinação de uma paleta utilizada para representar valores de pixel de um bloco de dados de vídeo a ser codificado, e identificando, no bloco de dados de vídeo, um ou mais pixels de escape que não estão associados com qualquer uma das uma ou mais entradas na paleta. O método pode incluir adicionalmente a identificação de um valor de parâmetro de quantização singular (QP) para todos dentre os um ou mais pixels de escape do bloco para um canal de cores determinado com base em um valor QP utilizado para transformar a codificação de coeficiente em codificação com base em não paleta, e quantizando cada um dos um ou mais pixels de escape utilizando o valor QP singular identificado. O método pode incluir adicionalmente a codificação de valores de pixel do bloco de dados de vídeo incluindo os pixels de escape quantizados e valores de índice para um ou mais pixels no bloco de dados de vídeo que são associados com uma ou mais entradas na paleta.
[0016] Em outro exemplo, essa descrição é direcionada a um aparelho para codificação de dados de vídeo, o aparelho compreendendo uma memória configurada para armazenar dados de vídeo, e um ou mais processadores em comunicação com a memória e configurados para determinar uma paleta usada para representar os valores de pixel de um bloco de dados de vídeo a ser codificado, e para identificar, no bloco de dados de vídeo, um ou mais pixels de escape que não estão associados com qualquer uma das uma ou mais entradas na paleta. Os um ou mais processadores podem ser configurados adicionalmente para identificar um valor de parâmetro de quantização singular (QP) para todos os um ou mais pixels de escape do bloco para um canal de cor determinado com base em um valor QP utilizado para transformar a codificação de coeficiente em codificação com base em não paleta, e para aplicar o valor QP singular identificado a cada um dos um ou mais pixels de escape. Os um ou mais processadores podem ser adicionalmente configurados para determinar os valores de pixel do bloco de dados de vídeo com base nos pixels de escape e valores de índice recebidos para um ou mais pixels no bloco de dados de vídeo que são associados com uma ou mais entradas.
[0017] Em outro exemplo, essa descrição é direcionada para um aparelho para codificação de dados de vídeo, o aparelho compreendendo meios para determinar uma paleta usada para representar os valores de pixel de um bloco de dados de vídeo a ser codificado, meios para identificar, no bloco de dados de vídeo, um ou mais pixels de escape que não estão associados com qualquer uma das uma ou mais entradas na paleta, meios para identificar um valor de parâmetro de quantização singular (QP) para todos os um ou mais pixels de escape do bloco para um canal de cores determinado com base em um valor QP utilizado para transformar a codificação de coeficiente em codificação com base em não paleta, meios para aplicar o valor QP singular identificado a cada um dos um ou mais pixels de escape, e meios para determinar os valores de pixel do bloco de dados de vídeo com base nos pixels de escape e valores de índice recebidos para um ou mais pixels no bloco de dados de vídeo que são associados com uma ou mais entradas.
[0018] Em outro exemplo, essa descrição é direcionada para um meio legível por computador não transitório codificado com instruções que, quando executadas, fazem com que um ou mais processadores de um dispositivo para codificação de dados de vídeo determine uma paleta usada para representar os valores de pixel de um bloco de dados de vídeo a ser codificado, para identificar, no bloco de dados de vídeo, um ou mais pixels de escape que não estão associados com qualquer uma das uma ou mais entradas na paleta, e para identificar um valor de parâmetro de quantização singular (QP) para todos os um ou mais pixels de escape do bloco para um canal de cor determinado com base em um valor QP utilizado para transformar a codificação de coeficiente em codificação com base em não paleta. As instruções, quando executadas, podem fazer adicionalmente com que um ou mais processadores apliquem o valor QP singular identificado a cada um dos um ou mais pixels de escape e determinem os valores de pixel do bloco de dados de vídeo com base nos pixels de escape e valores de índice recebidos para um ou mais pixels no bloco de dados de vídeo que são associados com uma ou mais entradas.
[0019] As técnicas descritas aqui podem fornecer uma ou mais vantagens em potencial e aperfeiçoamentos sobre as técnicas de codificação com base em paleta existentes e/ou técnicas de compressão de dados. Por exemplo, várias técnicas dessa descrição podem ser implementadas pelos dispositivos de codificação de vídeo para conservar os recursos de computação e exigências de largura de banda, enquanto mantêm a precisão de dados. Adicionalmente, várias técnicas dessa descrição podem ser implementadas pelos dispositivos de codificação de vídeo para aperfeiçoar a eficiência e precisão das técnicas de codificação com base em paleta existentes e técnicas de compressão de dados.
[0020] Os detalhes de um ou mais exemplos da descrição são apresentados nos desenhos em anexo e na descrição abaixo. Outras características, objetos e vantagens serão aparentes a partir da descrição, desenhos e reivindicações.
Breve Descrição dos Desenhos
[0021] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação de vídeo ilustrativo que pode utilizar as técnicas descritas nessa descrição.
[0022] A figura 2 é um diagrama em bloco ilustrando um codificador de vídeo ilustrativo que pode implementar as técnicas descritas nessa descrição.
[0023] A figura 3 é um diagrama em bloco ilustrando um decodificador de vídeo ilustrativo que pode implementar as técnicas descritas nessa descrição.
[0024] A figura 4 é um fluxograma ilustrando um processo ilustrativo pelo qual um dispositivo de decodificação de vídeo pode implementar as técnicas dessa descrição para ultrapassar a decodificação dos valores de índice para os pixels de um bloco codificado por paleta, com base em um conjunto particular de condições.
[0025] A figura 5 é um fluxograma de um processo ilustrativo pelo qual um dispositivo de codificação de vídeo pode implementar as técnicas dessa descrição para ultrapassar a codificação de valores de índice para os pixels de um bloco codificado por paleta, com base em um conjunto particular de condições.
[0026] A figura 6 é um fluxograma ilustrando um processo ilustrativo pelo qual um dispositivo de decodificação de vídeo pode implementar as técnicas dessa descrição para desquantizar um ou mais pixels de escape de um bloco de dados de vídeo codificado por paleta.
[0027] A figura 7 é um fluxograma ilustrando um processo ilustrativo pelo qual um dispositivo de codificação de vídeo pode implementar as técnicas dessa descrição para quantizar um ou mais pixels de escape de um bloco de dados de vídeo codificado por paleta.
Descrição Detalhada
[0028] Essa descrição inclui as técnicas para codificação e compressão de vídeo. Em particular, essa descrição descreve as técnicas para codificação de dados de vídeo com base em paleta. Na codificação de vídeo tradicional, as imagens são consideradas como sendo contínuas em termos de tom e espacialmente suaves. Com base nessas considerações, várias ferramentas foram desenvolvidas, tal como uma transformação com base em bloco, filtragem, etc., e tais ferramentas têm mostrado um bom desempenho para vídeos de conteúdo natural.
[0029] Nas aplicações como desktop remoto, o trabalho colaborativo e a exibição sem fio, no entanto, o conteúdo de tela gerado por computador (por exemplo, tal como texto ou gráficos de computador) pode ser o conteúdo dominante a ser comprimido. Esse tipo de conteúdo tende a ter um tom discreto e apresentar linhas nítidas e limites de objeto de alto contraste. A consideração de tom contínuo e suavidade pode não se aplicar mais para o conteúdo de tela, e, dessa forma, as técnicas de codificação de vídeo tradicionais podem não ser formas eficientes de se comprimir dados de vídeo incluindo conteúdo de tela.
[0030] Essa descrição descreve a codificação com base em paleta, que pode ser particularmente adequada para codificação de conteúdo gerado em tela. Por exemplo, assumindo-se que uma área particular dos dados de vídeo possui um número relativamente pequeno de cores, um codificador de vídeo (por exemplo, um codificador de vídeo ou decodificador de vídeo) pode formar uma chamada "paleta" para representar os dados de vídeo da área em particular. A paleta pode ser expressa como uma tabela de cores ou valores de pixel representando dados de vídeo da área particular (por exemplo, um bloco determinado). Por exemplo, a paleta pode incluir os valores de pixel mais dominantes no bloco determinado. Em alguns casos, os valores de pixel mais dominante podem incluir um ou mais valores de pixel que ocorrem com maior frequência dentro do bloco. Adicionalmente, em alguns casos, um codificador de vídeo pode aplicar um valor limite para determinar se um valor de pixel deve ser incluído como um dos valores de pixel mais dominante no bloco. De acordo com vários aspectos da codificação com base em paleta, o codificador de vídeo pode codificar os valores de índice indicativos de um ou mais dentre os valores de pixels do bloco atual, em vez de codificar valores de pixel reais ou seus residuais para um bloco atual de dados de vídeo. No contexto de codificação com base em paleta, os valores de índice indicam entradas respectivas na paleta que são utilizadas para representar os valores de pixel individual do bloco atual.
[0031] Por exemplo, o codificador de vídeo pode codificar um bloco de dados de vídeo pela determinação da paleta para o bloco (por exemplo, codificação da paleta explicitamente, previsão da paleta ou uma combinação dos mesmos), localizando uma entrada na paleta para representar um ou mais dos valores de pixel, e codificando o bloco com valores de índice que indicam a entrada na paleta utilizada para representar os valores de pixel do bloco. Em alguns exemplos, o codificador de vídeo pode sinalizar os valores de paleta e/ou índice em uma sequência de bits codificada. Por sua vez, o decodificador de vídeo pode obter, a partir de uma sequência de bits codificada, uma paleta para um bloco, além de valores de índice para pixels individuais do bloco. O decodificador de vídeo pode se referir a valores de índice dos pixels para entradas da paleta para reconstrução de vários valores de pixel do bloco.
[0032] A codificação de dados de vídeo com base em paleta foi descrita em detalhes acima. A ideia básica da codificação com base em paleta é que, para cada CU, uma paleta é derivada compreendendo (e podendo consistir de) os valores de pixel mais dominantes na CU atual. O tamanho e os elementos da paleta são primeiramente transmitidos a partir de um codificador de vídeo para um decodificador de vídeo. Depois disso, os valores de pixel na CU são codificados de acordo com uma ordem de digitalização determinada. Para cada localização de pixel na CU, um indicador, por exemplo, palette_flag, é o primeiro transmitido para indicar se o valor de pixel está incluído na paleta (isso é, "modo de run") ou não ("isso é, "modo de pixel"). No "modo de run" o índice de paleta associado com a localização do pixel na CU é sinalizado seguido por um "run" do valor de pixel. Nem palette_flag nem o índice de paleta precisa ser transmitido para as localizações de pixel seguinte que são cobertas por "run" visto que todos possuem o mesmo valor de pixel. No "modo de pixel", o valor de pixel é transmitido para a localização de pixel determinada na CU.
[0033] Para cada CU, uma tabela de cores principal é derivada consistindo dos valores de pixel mais dominantes na CU atual. O tamanho e os elementos da tabela são primeiramente transmitidos. O tamanho e/ou elementos da tabela de cores principal podem ser codificados diretamente ou codificados de forma prevista utilizando o tamanho e/ou elementos da tabela de cores principal nas CUs vizinhas (por exemplo, CU codificada acima e/ou à esquerda).
[0034] Em alguns exemplos, cada um dos pixels na CU atual é mapeado para um índice da tabela de cores principal. Para esses pixels cujos índices de cores principal não existe, um índice especial (chamado de "outro índice") é designado e esses pixels são chamados de "pixel escapado". As técnicas dessa descrição focam no método de codificação de índices de cores principais.
[0035] Um "pixel de escape" pode ser codificado utilizando-se qualquer método de codificação por entropia existente tal como a codificação de comprimento fixo, a codificação unary, etc. Um método para codificar os valores de escape é a utilização da operação de mudança para a esquerda dependendo do valor de parâmetro de quantização (QP). Isso é, codificar os bits mais significativos apenas, o número de bits dependendo do valor de QP. Para essa finalidade, a estratégia usada no estado da técnica é utilizar uma tabela que mapeie cada QP para um número que é a mudança para a direita a ser aplicada ao valor de pixel.
[0036] O bloco de índice de cores principal é codificado, linha por linha. Para cada linha, um modo de linha é escolhido a partir de "horizontal", "vertical" e "normal". Se o modo de linha "horizontal" for escolhido, todos os índices na linha atual são iguais ao índice mais à esquerda do índice mais à esquerda na linha acima. Se o modo de linha "vertical" for escolhido, toda a linha é copiada a partir de uma linha acima. Se o modo "normal" for selecionado, os índices dentro da linha atual são codificados, um por um. Para cada índice nesse caso, um elemento de sintaxe é utilizado para indicar se o índice pode ser copiado do índice de mesma localização na linha acima ("copy_from_top"), ou do índice vizinho à esquerda do índice ("copy_from_left"), ou nenhuma cópia é possível ("no_copy"). Se nenhuma cópia for possível, o pixel é codificado diretamente.
[0037] Os exemplos acima são destinados a fornecer uma descrição geral da codificação com base em paleta. Em vários exemplos, as técnicas descritas nessa descrição podem incluir técnicas para várias combinações de um ou mais dentre: sinalização de dados de vídeo codificados formados pelos modos de codificação com base em paleta, transmissão de paletas, previsão de paletas, derivação de paletas, ou decodificação de dados de vídeo dos mapas de codificação com base em paleta e outros elementos de sintaxe. Tais técnicas podem aperfeiçoar a eficiência de codificação de vídeo, por exemplo, exigindo menos bits para representar o conteúdo gerado por tela.
[0038] Essa descrição descreve várias técnicas relacionadas com a codificação de vídeo com base em paleta. Em alguns aspectos, essa descrição está direcionada à ultrapassagem de codificação de um mapa de valores de índice para um bloco de vídeo quando uma paleta associada com o bloco de vídeo só inclui uma entrada ou cor, e o bloco de vídeo não inclui quaisquer pixels de escape. Em alguns aspectos, essa descrição é direcionada à derivação de um "limite de erro" de paleta, que indica um desvio máximo de um primeiro valor de pixel que pode ser incluído na paleta correspondente, utilizando uma tabela de mapeamento que armazena uma relação entre os valores de parâmetros de quantização e os limites de erro de paleta. Alguns aspectos dessa descrição são direcionados à derivação de um parâmetro de quantização (QP) para quantização e desquantização de um pixel de escape (ou erro de previsão associado), utilizando parâmetros de quantização utilizados para a codificação de coeficiente tradicional em um canal de cores correspondente. Adicionalmente, essa descrição descreve o uso de um indicador para indicar se um pixel que está incluído em uma área codificada com base em paleta é um pixel de escape. Aspectos dessa descrição também descrevem técnicas para quantizar um valor de pixel de escape, tal como técnicas que empregam uma operação de mudança para a direita.
[0039] Em alguns aspectos, essa descrição é direcionada à quantização de pixels de escape de um bloco codificado por paleta de acordo com uma função de mapeamento (por exemplo, uma função de mudança) com base em um valor de parâmetros de quantização para o pixel de escape. Em alguns aspectos, essa descrição é direcionada à utilização de um indicador para indicar e/ou determinar se um pixel de um bloco codificado por paleta é um pixel de escape.
[0040] Em alguns exemplos dessa descrição, as técnicas para codificação com base em paleta dos dados de vídeo podem ser utilizadas com uma ou mais outras técnicas de codificação, tal como técnicas para a codificação por interprevisão ou codificação por intraprevisão de dados de vídeo. Por exemplo, como descrito em maiores detalhes abaixo, um codificador ou decodificador, ou codificador- decodificador combinado (codec), pode ser configurado para realizar a codificação interprevisão e intraprevisão, além de codificação com base em paleta. Em alguns exemplos, as técnicas de codificação com base em paleta podem ser configuradas para uso em um ou mais modos de codificação da Codificação de Vídeo de Alta Eficiência (HEVC). Em outros exemplos, as técnicas de codificação com base em paleta podem ser utilizadas independentemente ou como parte de outros padrões ou sistemas existentes ou futuros.
[0041] Codificação de Vídeo de Alta Eficiência (HEVC) é um novo padrão de codificação de vídeo desenvolvido pela Equipe de Colaboração Conjunta de Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG). Um rascunho recente do padrão HEVC, referido como "HEVC Rascunho 10" ou "WD10" é descrito no documento JCTVC-L 1003v34, Bross et al., "High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Last Call)," Equipe Colaborativa Conjunto de Codificação de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12o. encontro: Genebra, CH, 14 a 23 de janeiro de 2013, disponível a partir de: http://phenix.int-evry.fr/jct/doc end user/documents/12 Geneva/wg11/JCTVC- L1003-v34.zip. O documento padrão HEVC finalizado é publicado como "ITU-T H.265, SÉRIES H: AUDIOVISUAL AND MULTIMEDIA SYSTEMS Infrastructure of audiovisual services - Coding of moving vídeo - High efficiency vídeo coding," Setor de Padronização de Telecomunicação da União Internacional de Telecomunicação (ITU), abril de 2013.
[0042] Com relação à estrutura de trabalho HEVC, como um exemplo, as técnicas de codificação com base em paleta podem ser configuradas para serem utilizadas como um modo de unidade de codificação (CU). Em outros exemplos, as técnicas de codificação com base em paleta podem ser configuradas para serem utilizadas como um modo de unidade de previsão (PU) na estrutura de trabalho de HEVC. De acordo, todos os processos descritos a seguir descritos no contexto de um modo CU podem, adicionalmente ou alternativamente, ser aplicados à PU. No entanto, os exemplos com base em HEVC não devem ser considerados uma restrição ou limitação das técnicas de codificação com base em paleta descritas aqui, visto que tais técnicas podem ser aplicadas ao trabalho independentemente ou como parte de outros sistemas/padrões existentes ou ainda a serem desenvolvidos. Nesses casos, a unidade para codificação de paleta pode ser blocos quadrados, blocos retangulares ou até mesmo regiões de formato não retangular.
[0043] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação de vídeo ilustrativo 10 que pode utilizar as técnicas dessa descrição. Como utilizado aqui, o termo "codificador de vídeo" se refere genericamente a ambos os codificadores de vídeo e decodificadores de vídeo. Nessa descrição, os termos "codificação de vídeo" ou "codificação" pode se referir genericamente à codificação de vídeo ou decodificação de vídeo. O codificador de vídeo 20 e o decodificador de vídeo 30 do sistema de codificação de vídeo 10 representam exemplos de dispositivos q2ue podem ser configurados para realizar as técnicas para codificação de vídeo com base em paleta de acordo com vários exemplos descritos nessa descrição. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar seletivamente vários blocos de dados de vídeo, tal como CUs ou PUs na codificação HEVC, utilizando codificação com base em paleta ou codificação com base em não paleta. Os modos de codificação com base em não paleta podem se referir a vários modos de codificação temporal intraprevisão ou modos de codificação espacial intraprevisão, tal como os vários modos de codificação especificados pelo Rascunho 10 HEVC.
[0044] Como ilustrado na figura 1, o sistema de codificação de vídeo 10 inclui um dispositivo fonte 12 e um dispositivo de destino 14. O dispositivo fonte 12 gera dados de vídeo codificados. De acordo, o dispositivo fonte 12 pode ser referido como um dispositivo de codificação de vídeo ou um aparelho de codificação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados gerados pelo dispositivo fonte 12. De acordo, o dispositivo de destino 14 pode ser referido como um dispositivo de decodificação de vídeo ou um aparelho de decodificação de vídeo. O dispositivo fonte 12 e o dispositivo de destino 14 podem ser exemplos de dispositivos de codificação de vídeo ou aparelhos de codificação de vídeo.
[0045] O dispositivo fonte 12 e o dispositivo de destino 14 podem compreender uma ampla faixa de dispositivos, incluindo computadores desktop, dispositivos de computação móvel, computadores notebook (por exemplo, laptop), computadores tablet, caixas de decodificação, aparelhos telefônicos, tal como os chamados "smartphones", televisões, câmeras, dispositivos de exibição, aparelhos de mídia digital, consoles de jogos de vídeo, computadores de carro ou similares.
[0046] O dispositivo de destino 14 pode receber dados de vídeo codificados do dispositivo fonte 12 através de um canal 16. O canal 16 pode compreender um ou mais meios ou dispositivos capazes de mover os dados de vídeo codificados do dispositivo fonte 12 para o dispositivo de destino 14. Em um exemplo, o canal 16 pode compreender um ou mais meios de comunicação que permitem que o dispositivo fonte 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Nesse exemplo, o dispositivo fonte 12 pode modular os dados de vídeo codificados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e pode transmitir os dados de vídeo modulados para o dispositivo de destino 14. Os um ou mais meios de comunicação podem incluir meio de comunicação com e/ou sem fio, tal como espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas. Os um ou mais meios de comunicação podem fazer parte de uma rede com base em pacote, tal como uma rede de área local, uma rede de área ampla, ou uma rede global (por exemplo, a Internet). Os um ou mais meios de comunicação podem incluir roteadores, comutadores, estações base, ou outro equipamento que facilite a comunicação do dispositivo fonte 12 para o dispositivo de destino 14.
[0047] Em outro exemplo, o canal 16 pode incluir um meio de armazenamento que armazena dados de vídeo codificados gerados pelo dispositivo fonte 12 Nesse exemplo, o dispositivo de destino 14 pode acessar o meio de armazenamento através do acesso a disco ou acesso a cartão. O meio de armazenamento pode incluir uma variedade de meios de armazenamento de dados acessados localmente tal como discos blu-ray, DVDs, CD-ROMs, memória flash, ou outro meio de armazenamento digital adequado para armazenamento dedados de vídeo codificados.
[0048] Em um exemplo adicional, o canal 16 pode incluir um servidor de arquivo ou outro dispositivo de armazenamento intermediário que armazene os dados de vídeo codificados gerados pelo dispositivo fonte 12. Nesse exemplo, o dispositivo de destino 14 pode acessar os dados de vídeo codificados armazenados no servidor de arquivo ou outro dispositivo de armazenamento intermediário através de sequenciamento ou download. O servidor de arquivo pode ser um tipo de servidor capaz de armazenar os dados de vídeo codificados e transmitir os dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo ilustrativos incluem servidores da rede (por exemplo, para um sítio da rede), servidores de protocolo de transferência de arquivo (FTP), dispositivos de armazenamento anexados à rede (NAS) e acionadores de disco local.
[0049] O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de uma conexão de dados padrão, tal como uma conexão Internet. Tipos ilustrativos de conexões de dados podem incluir canais sem fio (por exemplo, conexões Wi-Fi), conexões com fio (por exemplo, DSL, modem a cabo, etc.), ou combinações de ambos que são adequadas para acessar os dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados a partir do servidor de arquivo pode ser uma transmissão de sequenciamento, uma transmissão de download, ou uma combinação de ambos.
[0050] As técnicas dessa descrição não estão limitadas aos aplicativos sem fio ou configurações. As técnicas podem ser aplicadas à codificação de vídeo em suporte de uma variedade de aplicativos de multimídia, tal como difusões de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões de vídeo de sequenciamento, por exemplo, através da Internet, codificação de dados de vídeo para armazenamento em um meio de armazenamento de dados, a decodificação de dados de vídeo armazenados 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 a transmissão de vídeo de via única ou duas vias para suportar os aplicativos tal como sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo e/ou vídeo telefonia.
[0051] O sistema de codificação de vídeo 10 ilustrado na figura 1 é meramente um exemplo e as técnicas dessa descrição podem ser aplicadas às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados são recuperados a partir de uma memória local, sequenciados através de uma rede, ou similar. Um dispositivo de codificação de vídeo pode codificar e armazenar dados na memória e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar os dados da memória. Em muitos exemplos, a codificação e decodificação são realizadas por dispositivos que não se comunicam um com o outro, mas simplesmente codificam os dados para a memória e/ou recuperam e decodificam os dados da memória.
[0052] No exemplo da figura 1, 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 exemplos, a interface de saída 22 pode incluir um modulador/demodulador (modem) e/ou um transmissor. A fonte de vídeo 18 pode incluir um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo contendo dados de vídeo previamente capturados, uma interface de alimentação de vídeo para receber dados de vídeo de um provedor de conteúdo de vídeo e/ou um sistema gráfico de computador para geração de dados de vídeo, ou uma combinação de tais fontes de dados de vídeo.
[0053] O codificador de vídeo 20 pode codificar os dados de vídeo a partir da fonte de vídeo 18. Em alguns exemplos, o dispositivo fonte 12 transmite diretamente os dados de vídeo codificados para o dispositivo de destino 14 através da interface de saída 22. Em outros exemplos, os dados de vídeo codificados também podem ser armazenados em um meio de armazenamento ou um servidor de arquivo para acesso posterior pelo dispositivo de destino 14 para decodificação e/ou reprodução.
[0054] No exemplo da figura 1, 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 exemplos, a interface de entrada 28 inclui um receptor e/ou um modem. A interface de entrada 28 pode receber dados de vídeo codificados através do canal 16. O dispositivo de exibição 32 pode ser integrado a ou pode ser externo ao dispositivo de destino 14. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados. O dispositivo de exibição 32 pode compreender uma variedade de dispositivos de exibição, tal como o monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo de emissão de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0055] Essa descrição pode se referir geralmente ao codificador de vídeo 20 "sinalizando" ou "transmitindo" determinada informação para outro dispositivo, tal como o decodificador de vídeo 30. O termo "sinalizando" ou "transmitindo" pode se referir geralmente à comunicação de elementos de sintaxe e/ou outros dados utilizados para decodificar os dados de vídeo comprimidos. Tal comunicação pode ocorrer em tempo real ou quase. Alternativamente, tal comunicação pode ocorrer através de uma vida útil, tal como pode ocorrer quando do armazenamento de elementos de sintaxe em um meio de armazenamento legível por computador em uma sequência de bits codificada no momento da codificação, que então podem ser recuperados por um dispositivo de decodificação a qualquer tempo depois de serem armazenados nesse meio. Dessa forma, enquanto o decodificador de vídeo 30 pode ser referido como "recebendo" uma informação determinada, o recebimento da informação não ocorre necessariamente em tempo real ou quase e pode ser recuperado a partir de um meio em algum momento depois do armazenamento.
[0056] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um dentre uma variedade de conjuntos de circuitos adequados, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicativo (ASICs), conjuntos de porta programável em campo (FPGAs), lógica discreta, hardware, ou qualquer combinação dos mesmos. Se as técnicas forem implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento legível por computador não transitório adequado e pode executar as instruções em hardware utilizando um ou mais processadores para realizar as técnicas dessa descrição. Qualquer um do acima exposto (incluindo hardware, software, uma combinação de hardware e software, etc.) pode ser considerado um ou mais processadores. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais podendo ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo.
[0057] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 operam de acordo com um padrão de compressão de vídeo, tal como o padrão HEVC mencionado acima, e descrito no Rascunho 10 HEVC. Em adição ao padrão HEVC base, existe um esforço em andamento para produzir a codificação de vídeo escalonável, codificação de vídeo de múltiplas visualizações, e extensões de codificação 3D para HEVC. Adicionalmente, os modos de codificação com base em paleta, por exemplo, como descrito nessa descrição, podem ser fornecidos para extensões do padrão HEVC. Em alguns exemplos, as técnicas descritas nessa descrição para codificação com base em paleta podem ser aplicadas aos codificadores e decodificadores configurados para operação de acordo com outros padrões de codificação de vídeo, tal como o padrão ITU-T H.264/AVC ou padrões futuros. De acordo, a aplicação de um modo de codificação com base em paleta para codificação de unidades de codificação (CUs) ou unidades de previsão (PUs) em um codec HEVC é descrita para fins de exemplo.
[0058] Em HEVC e outros padrões de codificação de vídeo, uma sequência de vídeo inclui tipicamente uma série de imagens. As imagens também podem ser referidas como "quadros". Uma imagem pode incluir três conjuntos de amostras, denotados SL, SCb e SCr. SL é um conjunto bidimensional (isso é, um bloco) de amostras de luminescência. SCb é um conjunto bidimensional de amostras de crominância Cb. SCr é um conjunto bidimensional de amostras de crominância Cr. As amostras de crominância também podem ser referidas e só podem incluir um conjunto de amostras de luminescência.
[0059] Para gerar uma representação codificada de uma imagem, o codificador de vídeo 20 pode gerar um conjunto de unidades de árvore de codificação (CTUs). Cada uma das CTUs pode ser um bloco de árvore de codificação de amostras de luminescência, dois blocos de árvore de codificação correspondentes de amostras de crominância, e estruturas de sintaxe utilizadas para codificar as amostras dos blocos de árvore de codificação. Um bloco de árvore de codificação pode ser um bloco N x N de amostras. Uma CTU também pode ser referida como um "bloco de árvore" ou uma "unidade de codificação maior" (LCU). As CTUs de HEVC podem ser amplamente análogos aos macro blocos de outros padrões, tal como H.264/AVC. No entanto, uma CTU não é necessariamente limitada a um tamanho em particular e pode incluir uma ou mais unidades de codificação (CUs). Uma fatia pode incluir um número inteiro de CTUs ordenadas consecutivamente na digitalização raster. Uma fatia codificada pode compreender um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia de uma fatia pode ser uma estrutura de sintaxe que inclui elementos de sintaxe que fornecem informação sobre a fatia. Os dados de fatia podem incluir CTUs codificadas da fatia.
[0060] Essa descrição pode utilizar o termo "unidade de vídeo" ou "bloco de vídeo" ou "bloco" para fazer referência a um ou mais blocos de amostra e estruturas de sintaxe utilizados para codificar as amostras de um ou mais blocos de amostras. Tipos ilustrativos de unidades ou blocos de vídeo podem incluir CTUs, CUs, PUs, unidades de transformação (TUs), macro blocos, partições de macro blocos, e assim por diante. Em alguns contextos, a discussão de PUs pode ser intercambiada com a discussão de macro blocos ou partições de macro bloco.
[0061] Para gerar uma TU codificada, o codificador de vídeo 20 pode realizar de forma recursiva a partição de quad-tree nos blocos de árvore de codificação de uma CTU para dividir os blocos de árvore de codificação em blocos de codificação, dessa forma, o nome "unidades de árvore de codificação". Um bloco de codificação é um bloco N x N de amostras. Uma CU pode ser um bloco de codificação de amostras de luminescência e dois blocos de codificação correspondentes de amostras de crominância de uma imagem que possui um conjunto de amostras de luminescência, um conjunto de amostra Cb e um conjunto de amostra Cr, e estruturas de sintaxe utilizadas para codificar as amostras dos blocos de codificação. O codificador de vídeo 20 pode dividir um bloco de codificação de uma CU em um ou mais blocos de previsão. Um bloco de previsão pode ser um bloco retangular de amostras (isso é, quadrado ou não) no qual a mesma previsão é aplicada. Uma unidade de previsão (PU) de uma CU pode ser um bloco de previsão de amostras de luminescência, dois blocos de previsão correspondentes das amostras de crominância de uma imagem, e estruturas de sintaxe utilizadas para prever as amostras de bloco de previsão. O codificador de vídeo 20 pode gerar blocos Cb e Cr de luminescência previsível para luminescência, blocos de previsão Cb e Cr de cada PU da CU.
[0062] O codificador de vídeo 20 pode utilizar intraprevisão ou interprevisão para gerar os blocos de previsão para uma PU. Se o codificador de vídeo 20 utilizar a intraprevisão para gerar os blocos de previsão de uma PU, o codificador de vídeo 20 pode gerar os blocos de previsão da PU com base nas amostras decodificadas da imagem associada com a PU.
[0063] Se o codificador de vídeo 20 utiliza a interprevisão para gerar os blocos de previsão de uma PU, o codificador de vídeo 20 pode gerar os blocos de previsão da PU com base nas amostras decodificadas de uma ou mais imagens além da imagem associada com a PU. O codificador de vídeo 20 pode utilizar a previsão única ou previsão dupla para gerar os blocos de previsão de uma PU. Quando o codificador de vídeo 20 utiliza a previsão única para gerar os blocos de previsão para uma PU, a PU pode ter um vetor de movimento único (MV). Quando o codificador de vídeo 20 utiliza a previsão dupla para gerar os blocos de previsão para uma PU, a PU pode ter dois MVs.
[0064] Depois que o codificador de vídeo 20 gera os blocos de previsão (por exemplo, luminescência de previsão, blocos Cb e Cr) para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar blocos residuais para a CU. Cada amostra em um bloco residual da CU pode indicar uma diferença entre uma amostra em um bloco de previsão de uma PU da CU e uma amostra correspondente em um bloco de codificação da CU. Por exemplo, o codificador de vídeo 20 pode gerar um bloco residual de luminescência para a CU. Cada amostra no bloco residual de luminescência de CU indica uma diferença entre uma amostra de luminescência em um dos blocos de luminescência previsível de CU e uma amostra correspondente no bloco de codificação de luminescência original de CU. Adicionalmente, o codificador de vídeo 20 pode gerar um bloco residual Cb para a CU. Cada amostra no bloco residual Cb da CU pode indicar uma diferença entre uma amostra Cb em um dos blocos Cb de previsão da CU e uma amostra correspondente no bloco de codificação Cb original da CU. O codificador de vídeo 20 também pode gerar um bloco residual Cr para a CU. Cada amostra no bloco residual Cr da CU pode indicar uma diferença entre uma amostra Cr em um dos blocos Cr de previsão da CU e uma amostra correspondente no bloco de codificação Cr original da CU.
[00065] Adicionalmente, o codificador de vídeo 20 pode utilizar a partição quad-tree para decompor os blocos residuais (por exemplo, blocos residuais Cb e Cr de luminescência) de uma CU em um ou mais blocos de transformação (por exemplo, blocos de transformação Cb e Cr de luminescência). Um bloco de transformação pode ser um bloco retangular de amostras nas quais a mesma transformação é aplicada. Uma unidade de transformação (TU) de uma CU pode ser um bloco de transformação de amostras de luminescência, dois blocos de transformação de amostras de crominância correspondentes, e estruturas de sintaxe utilizadas para transformar as amostras de bloco de transformação. Dessa forma, cada TU de uma CU pode ser associada com um bloco de transformação de luminescência, um bloco de transformação Cb e um bloco de transformação Cr. O bloco de transformação de luminescência associado com a TU pode ser um sub-bloco do bloco residual de luminescência da CU. O bloco de transformação Cb pode ser um sub-bloco do bloco residual Cb da CU. O bloco de transformação Cr pode ser um sub-bloco do bloco residual Cr da CU.
[0066] O codificador de vídeo 20 pode aplicar uma ou mais transformações para um bloco de transformação para gerar um bloco de coeficiente para uma TU. Um bloco de coeficiente pode ser um conjunto bidimensional de coeficientes de transformação. Um coeficiente de transformação pode ser uma quantidade escalar. Por exemplo, o codificador de vídeo 20 pode aplicar uma ou mais transformações a um bloco de transformação de luminescência de uma TU para gerar um bloco de coeficiente de luminescência para a TU. O codificador de vídeo 20 pode aplicar uma ou mais transformações a um bloco de transformação Cb de uma TU para gerar um bloco de coeficiente Cb para a TU. O codificador de vídeo 20 pode aplicar uma ou mais transformações a um bloco de transformação Cr de uma TU para gerar um bloco de coeficiente Cr para a TU.
[0067] Depois da geração de um bloco de coeficiente (por exemplo, o bloco de coeficiente de luminescência, um bloco de coeficiente Cb ou um bloco de coeficiente Cr), o codificador de vídeo 20 pode quantizar o bloco de coeficiente. A quantização geralmente se refere a um processo no qual os coeficientes de transformação são quantizados para reduzir possivelmente a quantidade de dados utilizada para representar os coeficientes de transformação, fornecendo compressão adicional. Depois que o codificador de vídeo 20 quantiza um bloco de coeficiente, o codificador de vídeo 20 pode codificar por entropia os elementos de sintaxe indicando os coeficientes de transformação quantizados. Por exemplo, o codificador de vídeo 20 pode realizar a Codificação Aritmética Binária Adaptativa de Contexto (CABAC) nos elementos de sistema indicando os coeficientes de transformação quantizados. O codificador de vídeo 20 pode enviar os elementos de sintaxe codificados por entropia em uma sequência de bits. A sequência de bits também pode incluir elementos de sintaxe que não são codificados por entropia.
[0068] O codificador de vídeo 20 pode enviar uma sequência de bits que inclui os elementos de sintaxe codificados por entropia. A sequência de bits pode incluir uma sequência de bits que forma uma representação de imagens codificadas e dados associados. Cada uma das unidades NAL inclui um cabeçalho de unidade NAL e encapsula uma carga útil de sequência de bytes bruta (RBSP). O cabeçalho de unidade NAL pode incluir um elemento de sintaxe que indica um código de tipo de unidade NAL. O código de tipo de unidade NAL especificado pelo cabeçalho de unidade NAL de uma unidade NAL indica o tipo de unidade NAL. Um RBSP pode ser uma estrutura de sintaxe contendo um número inteiro de bytes que são encapsulados dentro de uma unidade NAL. Em alguns casos, um RBSP inclui zero bits.
[0069] Diferentes tipos de unidades NAL podem encapsular diferentes tipos de RBSPs. Por exemplo, um primeiro tipo de unidade NAL pode encapsular um RBSP para um conjunto de parâmetros de imagem (PPS), um segundo tipo de unidade NAL pode encapsular um RBSP para uma fatia codificada, um terceiro tipo de unidade NAL pode encapsular um RBSP para informação de melhoria suplementar (SEI), e assim por diante. Unidades NAL que encapsulam RBSPs para dados de codificação de vídeo (em oposição a RBSPs para conjuntos de parâmetros e mensagens SEI) podem ser referidas como unidades NAL de camada de codificação de vídeo (VCL).
[0070] O decodificador de vídeo 30 pode receber uma sequência de bits gerada pelo codificador de vídeo 20. Adicionalmente, o decodificador de vídeo 30 pode obter elementos de sintaxe da sequência de bits. Por exemplo, o decodificador de vídeo 30 pode analisar a sequência de bits para decodificar os elementos de sintaxe da sequência de bits. O decodificador de vídeo 30 pode reconstruir as imagens de dados de vídeo com base pelo menos em parte nos elementos de sintaxe obtidos (por exemplo, decodificados) a partir da sequência de bits. O processo de reconstrução de dados de vídeo pode ser geralmente alternado para o processo realizado pelo codificador de vídeo 20. Por exemplo, o decodificador de vídeo 30 pode utilizar MVs das PUs para determinar os blocos de amostra de previsão (isso é, blocos de previsão) para as PUs de uma CU atual. Adicionalmente, o decodificador de vídeo 30 pode quantizar de forma inversa os blocos de coeficiente de transformação associados com as TUs da CU atual. O decodificador de vídeo 30 pode realizar as transformações inversas nos blocos de coeficiente de transformação para reconstruir os blocos de transformação associados com as TUs da CU atual. O decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual pela adição de amostras dos blocos de amostra de previsão para as PUs da CU atual para amostras correspondentes dos blocos de transformação das TUs da CU atual. Pela reconstrução de blocos de codificação para cada CU de uma imagem, o decodificador de vídeo 30 pode reconstruir a imagem.
[0071] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para realizar a codificação com base em paleta. Por exemplo, na codificação com base em paleta, em vez da realização de técnicas de codificação de intraprevisão ou interprevisão descritas acima, o codificador de vídeo 20 e o decodificador de vídeo 30 pode codificar uma chamada paleta como uma tabela de cores ou valores de pixel representando os dados de vídeo de uma área particular (por exemplo, um bloco determinado). Dessa forma, em vez de codificar os valores de pixel reais ou seus residuais para um bloco atual de dados de vídeo, o codificador de vídeo pode codificar os valores de índice para um ou mais dos valores de pixel do bloco atual, onde os valores de pixel indicam as entradas na paleta que são utilizadas para representar os valores de pixel do bloco atual.
[0072] Por exemplo, o codificador de vídeo 20 pode codificar um bloco de dados de vídeo pela determinação de uma paleta para o bloco, localizando uma entrada na paleta possuindo um valor representativo do valor de um ou mais pixels individuais do bloco, e codificando o bloco com valões de índice que indicam a entrada na paleta utilizada para representar um ou mais valores de pixel individuais do bloco. Adicionalmente, o codificador de vídeo 20 pode sinalizar os valores de índice em uma sequência de bits codificada. Por sua vez, um dispositivo de decodificação de vídeo (por exemplo, decodificador de vídeo 30) pode obter, a partir da sequência de bits codificada, a paleta para um bloco, além de valores de índice utilizados para determinação de vários pixels individuais do bloco utilizando a paleta. O decodificador de vídeo 30 pode combinar os valores de índice de pixels individuais para entradas da paleta para reconstruir os valores de pixel do bloco. Em casos nos quais o valor de índice associado com um pixel individual não combina com qualquer valor de índice da paleta correspondente para o bloco, o decodificador de vídeo 30 pode identificar tal pixel como um pixel de escape, para fins de codificação com base em paleta.
[0073] Em outro exemplo, o codificador de vídeo 20 pode codificar um bloco de dados de vídeo de acordo com as operações a seguir. O codificador de vídeo 20 pode determinar valores residuais de previsão para pixels individuais do bloco, determinar uma paleta para o bloco, e localizar uma entrada (por exemplo, valor de índice) na paleta possuindo um valor representativo do valor de um ou mais dos valores residuais de previsão dos pixels individuais. Adicionalmente, o codificador de vídeo 20 pode codificar o bloco com valores de índice que indicam a entrada na paleta utilizada para representar o valor residual de previsão correspondente para cada bloco de pixel individual do bloco. O decodificador de vídeo 30 pode obter, a partir de uma sequência de bits codificada sinalizada pelo dispositivo fonte 12, uma paleta para um bloco, além de valores de índice para os valores residuais de previsão correspondendo aos pixels individuais do bloco. Como descrito, os valores índice podem corresponder às entradas na paleta associada com o bloco atual. Por sua vez, o decodificador de vídeo 30 pode relacionar os valores de índice dos valores residuais de previsão às entradas da paleta para reconstrução dos valores residuais de previsão do bloco. Os valores residuais de previsão podem ser adicionados aos valores de previsão (por exemplo, obtidos utilizando-se intraprevisão ou interprevisão) para reconstruir os valores de pixel do bloco.
[0074] Como descrito em maiores detalhes abaixo, a ideia básica da codificação com base em paleta é que, para um determinado bloco de dados de vídeo a ser codificado, o codificador de vídeo 20 pode derivar uma paleta que inclui os valores de pixel mais dominantes no bloco atual. Por exemplo, a paleta pode se referir a um número de valores de pixel que são determinados ou considerados dominantes e/ou representativos da CU atual. O codificador de vídeo 20 pode transmitir primeiro o tamanho e os elementos da paleta para o decodificador de vídeo 30. Adicionalmente, o codificador de vídeo 20 pode codificar os valores de pixel no bloco determinado de acordo com uma ordem de digitalização determinada. Para cada pixel incluído no bloco determinado, o codificador de vídeo 20 pode sinalizar o valor de índice que mapeia o valor de pixel para uma entrada correspondente na paleta. Se o valor de pixel não for incluído na paleta (isso é, nenhuma entrada de paleta existir que especifique um valor de pixel em particular do bloco codificado por paleta), então tal pixel é definido como um "pixel de escape". De acordo com a codificação com base em paleta, o codificador de vídeo 20 pode codificar e sinalizar um valor de índice que é reservado para um pixel de escape. Em alguns exemplos, o codificador de vídeo 20 também pode codificar e sinalizar o valor de pixel ou um valor residual (ou versões quantizadas dos mesmos) para um pixel de escape incluído no bloco determinado.
[0075] Depois de receber a sequência de bits de vídeo codificada sinalizada pelo codificador de vídeo 20, o decodificador de vídeo 30 pode primeiro determinar a paleta com base na informação recebida do codificador de vídeo 20.O decodificador de vídeo 30 pode então mapear os valores de índice recebidos associados com as localizações de pixel no bloco determinado para as entradas da paleta para reconstruir os valores de pixel do bloco determinado. Em alguns casos, o decodificador de vídeo 30 pode determinar que um pixel de um bloco codificado por paleta seja um pixel de escape, tal como pela determinação de que o pixel é codificado por paleta com um valor de índice reservado para os pixels de escape. Em casos nos quais o decodificador de vídeo 30 identifica um pixel de escape em um bloco codificado por paleta, o decodificador de vídeo 30 pode receber o valor de pixel ou um valor residual (ou versões quantizadas dos mesmos) para um pixel de escape incluído no bloco determinado. O decodificador de vídeo 30 pode reconstruir o bloco codificado por paleta pelo mapeamento dos valores de pixel individual para entradas de paleta correspondentes, e pela utilização do valor de pixel ou valor residual (ou versões quantizadas dos mesmos) para reconstruir qualquer pixel de escape incluído no bloco codificado por paleta.
[0076] A codificação com base em paleta pode introduzir uma quantidade de overhead de sinalização. Por exemplo, um número de bits pode ser necessário para sinalizar as características de uma paleta, tal como um tamanho da paleta, além da paleta propriamente dita. Adicionalmente, um número de bits pode ser necessário para sinalizar os valores de índice para os pixels do bloco. Por exemplo, de acordo com as técnicas de codificação com base em paleta existentes, mesmo nos casos onde a paleta 'e de um tamanho limitado (por exemplo, uma paleta que inclui apenas uma entrada), e um bloco que não inclui quaisquer pixels de escape, o codificador de vídeo 20 ainda pode sinalizar os índices de paleta para os valores de pixel do bloco, que serão todos o mesmo valor de índice identificando a uma entrada na paleta, linha por linha, para o bloco de vídeo. Adicionalmente, as técnicas de codificação com base em paleta existentes introduzem o overhead de sinalização em termos de sinalização de um valor de índice para indicar um pixel de escape, e então sinalizando o valor de pixel ou valor residual (ou versões quantizadas dos mesmos) para o pixel de escape.
[0077] As técnicas dessa descrição podem, em alguns exemplos, reduzir o número de bits necessários para sinalizar tal informação. Por exemplo, determinadas técnicas descritas aqui são direcionadas à ultrapassagem de codificação (por exemplo, codificação e/ou decodificação) de um mapa de valores de índice para um ou mais pixels de um bloco se o bloco satisfizer um conjunto particular de condições com relação à codificação com base em paleta. Em outros exemplos, determinadas técnicas descritas aqui são geralmente direcionadas à sinalização de menos bits de dados (por exemplo, um indicador de um bit em vez de um valor de índice de cinco bits) para indicar que um pixel determinado é um pixel de escape com relação à paleta para o bloco atual. Várias técnicas dessa descrição também são direcionadas à determinação de uma faixa de valores de pixel que pode ser incluída em uma paleta para um bloco determinado. A faixa de valores de pixel que uma paleta pode incluir é referida aqui como "limite de erro" de paleta, e várias técnicas dessa descrição são direcionadas à determinação de um limite de erro de paleta com base no parâmetro de quantização (QP) do bloco associado à paleta.
[0078] Outros aspectos dessa descrição são direcionados à derivação de valores de escape quantizados. Por exemplo, alguns desses aspectos são direcionados às técnicas para definir um ou mais parâmetros de quantização com os quais se quantiza um pixel de escape. Outros aspectos adicionais dessa descrição são direcionados à aplicação de funções particulares (por exemplo, uma função de mudança para a direita) na quantização de um valor de pixel de escape. Dessa forma, vários aspectos dessa descrição fornecem vantagens potenciais, tal como redução de overhead de bit e mitigação de utilização de recurso, enquanto mantêm a qualidade e precisão de imagem.
[0079] Como descrito acima, o codificador de vídeo 20 pode aplicar técnicas dessa descrição para ultrapassar a codificação e sinalização de um índice de paleta para vários pixels individuais de um bloco sob determinadas circunstâncias. De acordo com os aspectos dessa descrição, o codificador de vídeo 20 pode ultrapassar a codificação e sinalização do índice de paleta para um bloco codificado por paleta se o codificador de vídeo 20 determinar que todos os pixels do bloco são da mesma cor. Por exemplo, o codificador de vídeo 20 pode determinar que uma CU codificada por paleta de uma imagem é uma "CU de cor única" e pode ultrapassar a codificação e sinalização do índice de paleta para a CU de cor única.
[0080] Mais especificamente, o codificador de vídeo 20 pode determinar se uma CU codificada por paleta é uma CU de cor única se a CU atual satisfizer duas condições. A primeira condição que o codificador de vídeo 20 pode utilizar na determinação de se a CU codificada por paleta é uma CU de cor singular é se o tamanho da paleta correspondente é igual a um (1). Se o tamanho da paleta for igual a um, então o codificador de vídeo 20 pode determinar que a primeira condição foi correspondida com relação à CU codificada por paleta sendo uma CU de cor singular. Mais especificamente, se o tamanho de paleta for igual a um, então o decodificador de vídeo 20 pode determinar que a paleta inclui apenas uma cor que corresponde aos pixels (não escape) da CU codificada por paleta. Em alguns exemplos onde o tamanho da paleta é igual a um, o codificador de vídeo 20 pode determinar que o único valor de índice associado com a placa é igual a zero (0).
[0081] Se o codificador de vídeo 20 determinar que o tamanho da paleta para a CU codificada por paleta é igual a 1 (isso é, que a primeira condição foi correspondida), então o codificador de vídeo 20 pode determinar se a CU codificada por paleta corresponde a uma segunda condição para ser uma CU de cor singular. A segunda condição que o decodificador de vídeo 30 pode usar na determinação de se a CU codificada por paleta é uma CU de cor singular é que a CU codificada por paleta não inclui qualquer pixel de escape. Se a CU codificada por paleta incluir pelo menos um pixel de escape, então o codificador de vídeo 20 pode determinar que, apesar de a paleta correspondente indicar apenas uma cor com relação à CU codificada por paleta, a CU codificada por paleta inclui pixels de duas ou mais cores. Por exemplo, a CU codificada por paleta pode incluir pelo menos um pixel que possui a cor indicada na paleta, e pelo menos um pixel de escape que possui uma cor diferente.
[0082] Se o codificador de vídeo 20 determinar que a CU codificada por paleta satisfaz ambas as condições descritas acima, então o codificador de vídeo 20 pode determinar que a CU codificada por paleta é uma CU de cor singular. Mais especificamente, se a CU codificada por paleta for associada com uma paleta de entrada singular (ilustrada pelo tamanho de paleta igual a um), e a CU codificada por paleta não incluir quaisquer pixels de escape, então o codificador de vídeo 20 pode determinar que todos os pixels individuais da CU codificada por paleta são da mesma cor (isso é, a cor indicada pela entrada singular da paleta correspondente). Em várias implementações, o codificador de vídeo 20 pode aplicar as técnicas de identificação de CU de cor singular descritas acima com relação a um único componente de cor singular com relação à paleta, ou a um índice combinado que indica mais de um componente de cor.
[0083] Em resposta à determinação de que a CU codificada por paleta inclui pixels de apenas uma cor (isso é, que a CU é uma CU de cor singular), o codificador de vídeo 20 pode implementar as técnicas dessa descrição para ultrapassar a codificação e sinalizar o mapa de valores de índice de paleta para os pixels da CU de cor singular. Pela ultrapassagem da codificação e sinalização do mapa de valores de índice de paleta para pixels da CU, o codificador de vídeo 20 pode conservar recursos de computação e largura de banda que, do contrário, seriam gastos para codificação e sinalização de informação de cor para a CU. Em vez da codificação e sinalização de um índice para cada pixel individual da CU de cor singular, o codificador de vídeo 20 pode implementar as técnicas dessa descrição para indicar de forma mais eficiente (por exemplo, para o decodificador de vídeo 30), a informação de cor para todo o conjunto de pixels que cria a CU de cor singular
[0084] De acordo com alguns exemplos dessa descrição, o codificador de vídeo 20 pode codificar e sinalizar um indicador para indicar se o codificador de vídeo 20 ultrapassou a codificação (e sinalização) dos valores de índice de paleta, linha por linha, para a CU de cor singular. Pela codificação e sinalização de um indicador de um bit para toda a CU em vez de valores de índice individuais para cada pixel da CU, o codificador de vídeo 20 pode conservar recursos de computação e largura de banda de sinalização em comparação com as técnicas de codificação com base em paleta existentes. Ademais, o codificador de vídeo 20 pode manter a precisão e qualidade da CU de cor singular codificada, visto que a paleta de entrada única sinalizada pelo codificador de vídeo 20 para a CU inclui a informação de cor para todos os pixels individuais da CU. Em vários exemplos, o codificador de vídeo 20 pode codificar e sinalizar o indicador de várias formas, tal como em um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), ou um cabeçalho de fatia. Em vários exemplos, o codificador de vídeo 20 pode codificar e sinalizar o indicador com base em CTU, com base em CU ou para um bloco de qualquer tamanho de bloco, também.
[0085] Nos exemplos onde o codificador de vídeo 20 ultrapassa a codificação e sinalização do valor de índice de paleta para pixels individuais de um bloco de cor única que é codificado por paleta, o decodificador de vídeo 30 pode aplicar várias técnicas dessa descrição para reconstruir o bloco de cor única. Em alguns exemplos, o decodificador de vídeo 30 pode realizar as operações alternadas com relação às descritas acima com relação ao codificador de vídeo 20 para determinar que o bloco codificado por paleta é um bloco de cor singular. Por exemplo, o decodificador de vídeo 30 pode determinar que a paleta para o bloco atual possui um tamanho igual a um, determinando, assim, que o bloco satisfaz à primeira condição de qualificar como um bloco de cor única. Em vários exemplos, o decodificador de vídeo 30 pode receber a paleta em uma sequência de bits de vídeo codificada a partir do codificador de vídeo 20, ou pode reconstruir a paleta.
[0086] Adicionalmente, o decodificador de vídeo 30 pode determinar que o bloco não inclui quaisquer pixels de escape, determinando, assim, que o bloco satisfaça a segunda condição para qualificar como um bloco de cor única. Com base na determinação de que o tamanho da paleta para o bloco é igual a um (a primeira condição), e que o bloco não inclui quaisquer pixels de escape (a segunda condição), o decodificador de vídeo 30 pode implementar as técnicas dessa descrição para determinar que o bloco atual é um bloco de cor singular. Dessa forma, o decodificador de vídeo 30 pode implementar as técnicas dessa descrição para reconstruir um bloco codificado por paleta com precisão, enquanto conserva os recursos de computação e largura de banda que, do contrário, seriam necessários para se reconstruir o bloco por decodificação de um índice de paleta, pixel por pixel.
[0087] Em outros exemplos, o decodificador de vídeo 30 pode receber, na sequência de bits de vídeo codificada, um indicador que indica se o codificador de vídeo 20 ultrapassou a codificação e sinalização do índice de paleta para um bloco codificado por paleta, de acordo com as técnicas dessa descrição. Nos casos onde o decodificador de vídeo 30 recebe um indicador indicando que o codificador de vídeo 20 ultrapassou a codificação e sinalização do mapa dos valões de índice de paleta para o bloco codificado por p aleta, o decodificador de vídeo 30 pode implementar as técnicas dessa descrição para determinar que o bloco atual é codificado por paleta, e é um bloco de cor singular. Mais especificamente, se o indicador for ativo (por exemplo, configurado para um valor igual a um), o decodificador de vídeo 30 pode determinar que o bloco codificado por paleta é um bloco de cor única. Por sua vez, o decodificador de vídeo 30 pode implementar as técnicas dessa descrição para reconstruir cada pixel do bloco de acordo com a informação de cor da entrada singular na paleta para o bloco. Dessa forma, o decodificador de vídeo 30 pode implementar técnicas dessa descrição para reconstruir com precisão o bloco codificado por paleta utilizando um indicador de bit único para todo o bloco, em vez de utilizar os valores de índice (ou profundidade de bit variável) para cada pixel individual do bloco.
[0088] Em outro exemplo, o codificador de vídeo 20 pode implementar as técnicas dessa descrição para derivar um limite de erro para uma paleta para um bloco codificador por paleta. Como utilizado aqui, os termos "limite de erro" ou "limite de erro de paleta" pode se referir à faixa de valores (por exemplo, em termos de informação de cor) que as entradas da paleta podem incluir. Mais especificamente, o limite de erro de paleta define uma variação mínima em valor de cor que entradas diferentes de paleta suportam, ou devem exibir. Como descrito acima, a fim de codificar um bloco de acordo com a codificação com base em paleta, o codificador de vídeo 20 pode construir a paleta correspondente para incluir os valores de cor que ocorrem com maior frequência (pixel por pixel) dentro do bloco.
[0089] Na construção de uma paleta, o codificador de vídeo 20 pode determinar que as várias entradas da paleta devam exibir uma variação mínima uma da outra. Mais especificamente, o codificador de vídeo 20 pode construir a paleta de modo que duas entradas da paleta não sejam suficientemente similares de modo que as duas entradas possam ser agrupadas como uma entrada única. Se duas entradas de paleta possíveis estão dentro do limite de erro de paleta, o codificador de vídeo 20 pode utilizar uma das duas entradas para representar ambas as entradas na paleta.
[0090] No entanto, se o codificador de vídeo 20 determinar que duas entradas (que ocorrem comumente no bloco) diferem por pelo menos o limite de erro de paleta, então o codificador de vídeo 20 pode incluir ambas as entradas na paleta. Nos exemplos onde as entradas são representadas por três componentes de cor, o codificador de vídeo 20 pode incluir ambas as entradas na paleta se as entradas diferirem por pelo menos o limite de erro de paleta com relação a pelo menos um dos componentes de cor. Por exemplo, se o limite de erro de paleta for configurado para um valor de cinco (5), o codificador de vídeo 20 pode determinar se inclui ambas as entradas na paleta (assumindo que ambas as entradas ocorram comumente o suficiente no bloco), com base na expressão Booleana a seguir: abs(A1-B1) > 5 || abs(A2-B2) > 5 || abs(A3-B3) > 5, onde "abs" representa uma diferença entre os parâmetros de componente de cor.
[0091] Como descrito, o codificador de vídeo 20 pode construir uma paleta pelo agrupamento de valores de pixel de ocorrência comum (ou ocorrência relativamente comum) do bloco em entradas da paleta. O codificador de vídeo 20 pode selecionar os valores de pixel de ocorrência comum de modo que os valores de pixel exibam uma variação mínima, em termos de informação de cor. Por sua vez, a variação mínima entre os valores de pixel dentro do conjunto selecionado de valores de pixel de ocorrência comum pode formar o limite de erro da paleta correspondente. Será apreciado que, enquanto o limite de erro de paleta pode incluir vários valores de pixel, a paleta pode não incluir necessariamente cada par de valores de pixel que diferem por pelo menos o limite de erro de paleta. Dessa forma, o mesmo limite de erro de paleta se aplica às paletas de tamanhos variáveis. O codificador de vídeo 20 pode utilizar o limite de erro de paleta na realização de determinações quanto aos valores de cor que devem ser incluídos na paleta.
[0092] O codificador de vídeo 20 pode implementar as técnicas dessa descrição para definir o limite de erro para uma paleta. De acordo com vários aspectos dessa descrição, o codificador de vídeo 20 pode determinar o limite de erro de paleta com base no parâmetro de quantização (QP) para o bloco codificado por paleta. Em vários exemplos, o codificador de vídeo 20 pode determinar que o limite de erro de paleta é diretamente proporcional ao valor QP para o bloco correspondente. Mais especificamente, nesses exemplos, o codificador de vídeo 20 pode designar um limite de erro maior para uma paleta para um bloco que é quantizado com um valor QP maior, e um limite de erro menor para uma paleta para um bloco que é quantizado com um valor QP inferior.
[0093] Dessa forma, o codificador de vídeo 20 pode definir paletas que exigem uma variação maior entre os valores de pixel para os blocos que soa quantizados com valores QP maiores, e podem definir paletas que exigem uma variação menor entre os valores de pixel para os blocos que são quantizados com valores QP maiores. Adicionalmente, o codificador de vídeo 20 pode gerar e/ou armazenar uma tabela (por exemplo, uma tabela de mapeamento ou tabela de consulta) para refletir a relação entre cada valor QP e o limite de erro de paleta correspondente. Dessa forma, o codificador de vídeo 20 pode implementar várias técnicas dessa descrição para aperfeiçoar a eficiência de computação pela utilização de uma tabela para armazenar a relação entre cada valor QP e o limite de erro correspondente. Mais especificamente, pela utilização de uma tabela para armazenar a relação entre os valores QP e o limite de erro de paleta correspondente, o codificador de vídeo 20 pode implementar as técnicas descritas aqui para fornecer a eficiência aperfeiçoada através de técnicas relativamente computacionalmente caras para solucionar uma função para cada paleta para derivar o limite de erro de paleta correspondente. Dessa forma, o codificador de vídeo 20 pode personalizar a paleta (de acordo com o limite de erro de paleta) com base no valor QP com o qual o bloco correspondente é quantizado, determinando, assim, o conteúdo da paleta para um bloco com base no valor QP do bloco, de acordo com vários aspectos dessa descrição.
[0094] O codificador de vídeo 20 pode, em alguns exemplos, implementar várias técnicas dessa descrição para a derivação de pixel de escape quantizada. Mais especificamente, o codificador de vídeo 20 pode implementar as técnicas para definir o valor de quantização de QP para um pixel de escape. Por exemplo, de acordo com as técnicas de codificação com base em paleta, se o codificador de vídeo 20 detectar um pixel de escape em um bloco codificado por paleta, o codificador de vídeo 20 pode codificar e sinalizar o valor de pixel, ou um erro de previsão do mesmo, visto que a paleta correspondente não inclui quaisquer registros para o pixel de escape. Adicionalmente, para conservar a largura de banda de sinalização, o codificador de vídeo 20 pode quantizar o valor de pixel codificado do pixel de escape antes da sinalização.
[0095] De acordo com as técnicas de codificação com base em paleta existentes, nenhum valor de quantização (valor QP) foi definido para quantizar um pixel de escape. O codificador de vídeo 20 pode implementar as técnicas dessa descrição para definir o valor QP para quantizar um pixel de escape. Mais especificamente, o codificador de vídeo 20 pode definir o valor QP para um pixel de escape como igual ao valor QP para codificação de coeficiente tradicional dentro do mesmo canal de cores (por exemplo, luminescência (Y), crominância (U, Cr), ou crominância (V, Cb)). Em um exemplo, o codificador de vídeo 20 pode definir o valor QP para um pixel de escape como igual ao valor QP para a codificação de coeficiente tradicional dentro do mesmo canal de cor, e dentro do mesmo grupo de quantização. Dessa forma, o codificador de vídeo 20 pode quantizar todos os pixels de escape de acordo com um único valor QP dentro de um canal determinado. Adicionalmente, visto que o codificador de vídeo 20 pode definir o valor QP para todos os pixels de escape apenas dentro de um canal singular, o codificador de vídeo 20 pode utilizar diferentes valores QP para quantizar pixels de escape com relação a diferentes canais.
[0096] O decodificador de vídeo 30 pode realizar as operações alternadas para os descritos acima, para desquantizar os pixels de escape de acordo com várias técnicas dessa descrição. Por exemplo, o decodificador de vídeo 30 pode desquantizar todos os pixels de escape de um único canal utilizando o mesmo valor QP, com base na informação recebida na sequência de bits de vídeo codificada a partir do codificador de vídeo 20. Mais especificamente, de acordo com aspectos dessa descrição, o decodificador de vídeo 30 pode desquantizar qualquer um dos pixels de escape (ou valores de erros de previsão/residuais) comunicados através de um canal particular utilizando um valor QP que é determinado com base no valor QP para desquantização de coeficiente de transformação tradicional para os blocos comunicados através do canal atual. Em alguns exemplos, o decodificador de vídeo 30 pode implementar as técnicas dessa descrição para desquantizar os pixels de escape comunicados através de diferentes canais utilizando valores QP diferentes, com base no valor QP para a codificação de coeficiente de transformação tradicional sendo diferente entre os diferentes canais.
[0097] Dessa forma, o codificador de vídeo 20 e o decodificador de vídeo 30 podem implementar as técnicas descritas aqui para definir e aplicar um único valor QP (para quantizar e/ou desquantizar) a todos os pixels de escape comunicados através de um canal particular. Dessa forma, o codificador de vídeo 20 e o decodificador de vídeo 30 podem aplicar aspectos dessa descrição para definir um valor QP para pixels de escape detectados através da codificação com base em paleta, onde das técnicas de codificação com base em paleta não definiam explicitamente um valor de QP para pixels de escape.
[0098] Adicionalmente, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem implementar outras técnicas dessa descrição para utilizar um indicador para indicar e/ou detectar a inclusão de um pixel de escape em um bloco codificado por paleta. De acordo com as técnicas de codificação com base em paleta existentes, os pixels de escape podem ser sinalizados e detectados utilizando-se um valor de índice de paleta "reservado". Por exemplo, de acordo com as técnicas de codificação com base em paleta existentes, o valor de índice de paleta reservado que indica um pixel de escape pode ser igual a 32. Mais especificamente, o valor de índice de paleta de 32 pode ser utilizado para todos os pixels de escape, independentemente de se dois pixels de escape possuem valores de pixel diferentes. Dessa forma, de acordo com as técnicas de codificação com base em paleta existentes, os dispositivos de codificação de vídeo podem utilizar um valor de cinco bits (dentre 32) para cada pixel de escape de um bloco codificado por paleta.
[0099] O codificador de vídeo 20 pode implementar técnicas dessa descrição para conservar os recursos de computação (por exemplo, armazenador e memória) e reduzir o consumo de largura de banda, enquanto mantém a precisão de imagem com relação à sinalização de uma indicação de um pixel de escape em um bloco codificado por paleta. Por exemplo, o codificador de vídeo 20 pode codificar e sinalizar um indicador para indicar se um pixel em um bloco codificado por paleta está em um pixel de escape. Como descrito aqui, o indicador, quando ativado, pode indicar que o pixel associado seja designado um índice de paleta referido como "outro índice". O codificador de vídeo 20 pode utilizar a situação do "outro índice" do indicador para substituir o valor de índice de paleta de 32 que é tradicionalmente utilizado para indicar um pixel de escape com relação à paleta. Dessa forma, o codificador de vídeo 20 pode codificar e sinalizar um indicador de um bit em vez de um valor de índice de cinco bits para indicar que um pixel de um bloco codificado por paleta é um pixel de escape. Por sua vez, quando um pixel de escape é indicado pelo indicador de um bit, o codificador de vídeo 20 pode codificar e sinalizar o valor de pixel (ou dados residuais do mesmo) do pixel de escape na sequência de bits de vídeo codificada.
[0100] O decodificador de vídeo 30 também pode implementar as técnicas dessa descrição para utilizar um indicador de um bit para determinar que um pixel de um bloco codificado por paleta é um pixel de escape. Em vários exemplos, o decodificador de vídeo 30 pode realizar as operações alternadas com relação às operações de codificação e sinalização descritas acima com relação ao codificador de vídeo 20, para utilizar um indicador de um bit para identificar um pixel de escape em um bloco codificado por paleta. Por exemplo, o decodificador de vídeo 30 pode receber um indicador de um bit ativado associado com um pixel de um bloco codificado por paleta. Com base no indicador de um bit estando no estado ativado, o decodificador de vídeo 30 pode determinar que a informação de cor para o pixel associado não está incluída na paleta para o bloco atual. Em outras palavras, o decodificador de vídeo 30 pode determinar que, se o indicador de um bit recebido for ativado, o pixel associado é um pixel de escape. Dessa forma, o decodificador de vídeo 30 pode implementar as técnicas dessa descrição para reconstruir um bloco codificado por paleta utilizando um indicador de um bit para identificar um pixel de escape no bloco codificado por paleta. Dessa forma, o decodificador de vídeo 30 pode conservar recursos de computação (por exemplo, armazenador e/ou memória) e exigências de largura de banda com relação à identificação de pixels de escape nos blocos codificados por paleta. Adicionalmente, quando um pixel de escape é indicado pelo indicador de um bit, o decodificador de vídeo 30 pode receber, na sequência de bits de vídeo codificada, a informação de cor (ou dados residuais da mesma) correspondendo a qualquer pixel de escape identificado, e pode reconstruir o bloco codificado por paleta de acordo.
[0101] O codificador de vídeo 20 e o decodificador de vídeo 30 também podem implementar técnicas dessa descrição para quantizar e desquantizar os valores de pixel de pixels de escape de acordo com a codificação com base em paleta. Por exemplo, o codificador de vídeo 20 pode conservar os recursos de computação (por exemplo, utilização de memória, ciclos de relógio de processador, etc.) pela quantização de valores de pixel dos pixels de escape de acordo com os aspectos dessa descrição. Em alguns exemplos, o codificador de video20 pode implementar as técnicas descritas aqui para quantizar os valores de pixel de escape pela substituição de operações de divisão com as operações de mudança (por exemplo, operações de mudança para a direita). Mais especificamente, o codificador de vídeo 20 pode determinar a operação de mudança para a direita específica com base no valor QP do pixel de escape correspondente.
[0102] Por exemplo, o codificador de vídeo 20 pode formar uma tabela que mapeia o valor QP de cada pixel de escape para a quantidade de mudança para a direita para aplicar ao valor de pixel. O codificador de vídeo 20 pode formar a tabela para incluir 52 entradas. Por exemplo, a tabela de mapeamento de 52 entradas pode fornecer uma quantidade de mudança para a direita correspondente a cada valor QP possível para um pixel de escape determinado. Alternativamente, o codificador de vide 20 pode aplicar uma operação de mapeamento para determinar a quantidade de mudança para a direita para cada pixel, com base na entrada do valor QP correspondente na tabela. A função de mapeamento pode ser mais eficiente em termos de computação e pode conservar exigências de memória, em comparação com a tabela de mapeamento de 52 entradas utilizada de acordo com as técnicas de quantização existentes para pixels de escape de acordo com a codificação com base em paleta. Pela derivação do valor de mudança para a direita (operando) pela solução de uma função como descrito aqui, o codificador de vídeo 20 pode eliminar a necessidade de o decodificador de vídeo 30 armazenar uma tabela de 52 entradas, permitindo, assim, que o decodificador de vídeo 30 desquantize os pixels de escape enquanto reduz as exigências de armazenamento para o processo de desquantização.
[0103] Em vários exemplos, o codificador de vídeo 20 pode quantizar um pixel de escape pela determinação da quantidade de mudança para a direita para um pixel de escape com base na operação de mapeamento descrita acima, e aplicando uma função linear ao valor de pixel de escape, utilizando a quantidade de mudança para a direita determinada. Um exemplo de uma função linear que o codificador de vídeo 20 pode aplicar para quantizar um pixel de escape é como segue:Right_shift = a * ((QP + b) >> c) + d, onde a, b, c e d são todos parâmetros inteiros. Adicionalmente, o operador ">>" denota a operação de mudança para a direita. Em um resultado específico de aplicação da equação acima, o codificador de vídeo 20 pode determinar que a quantidade de mudança para a direita para um valor de pixel de escape é igual a três. A operação de mudança para a direita resultante pode ser expressa como Right_shift = (QP >> 3).
[0104] O decodificador de vídeo 30 pode implementar técnicas dessa descrição para realizar as operações alternadas com relação às descritas acima com relação ao codificador de vídeo 20, para desquantizar um valor de pixel de escape quantizado. Por exemplo, o decodificador de vídeo 30 pode implementar as técnicas dessa descrição para calcular uma quantidade de mudança (por exemplo, para uma operação de mudança para a esquerda correspondente) com base em um valor QP na desquantização do valor de pixel de escape quantizado correspondente. Dessa forma, o decodificador de vídeo 30 também pode aplicar aspectos dessa descrição para conservar os recursos de computação pela alavancagem de uma função de mapeamento em vez de armazenar uma tabela de mapeamento de 52 entradas.
[0105] Como descrito acima, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem implementar várias técnicas dessa descrição, individualmente ou em qualquer combinação e/ou sequência, para fornecer a eficiência de codificação aperfeiçoada com relação à codificação com base em paleta, enquanto mantém a qualidade de imagem e precisão de dados. Dessa forma, as técnicas descritas aqui podem fornecer várias vantagens em potencial através de técnicas existentes da codificação de vídeo com base em paleta. Em exemplos específicos, como descrito acima, as técnicas dessa descrição podem permitir que os dispositivos de codificação de vídeo codifiquem e/ou decodifiquem de forma eficiente os dados de vídeo e reduzam o consumo de largura de banda, enquanto mantém a precisão dos dados de vídeo.
[0106] Em alguns exemplos, as técnicas para codificação com base em paleta de dados de vídeo descritos aqui podem ser utilizadas com uma ou mais outras técnicas de codificação, tal como técnicas para codificação interprevisão ou intraprevisão. Por exemplo, como descrito em maiores detalhes abaixo, um codificador ou decodificador, ou codificador-decodificador combinado (codec), pode ser configurado para realizar a codificação interprevisão e intraprevisão, além de codificação com base em paleta.
[0107] Em vários exemplos, essa descrição descreve diferentes aspectos das técnicas de codificação de índice de cor. Pode ser possível se combinar parte ou todos os métodos descritos.
[0108] Um exemplo de codificação de direção de previsão de índice é descrito agora. Como mencionado acima, para cada índice, existem três possíveis direções de previsão: 'copy_from_top', 'copy_from_left' e 'no_copy'. Três palavras código devem ser designadas às três direções. Por exemplo, as palavras código podem ser '0', '01' e '10'. No caso onde o pixel de mesma localização na linha acima e o pixel vizinho esquerdo são iguais, apenas duas palavras código podem ser necessárias. Por exemplo, nesse caso, '0' pode representar 'nenhuma cópia' e '1' pode representar cópia de cima ou da esquerda.
[0109] Como descrito acima, em alguns casos, a codificação do mapa de índice de cor para um bloco de vídeo pode ser ultrapassado. Se o número de cores principais for igual a um e não houver qualquer "pixel de escape", então a codificação do bloco de índice pode ser ultrapassada. Esse princípio pode ser aplicado a cada componente de cor individual ou pode ser aplicado ao índice combinado que contém mais de um componente de cor.
[0110] Em outro exemplo, um indicador (ou outro tipo de elemento de sintaxe) pode ser sinalizado na sequência de bits codificada para indicar se essa característica de ultrapassagem de codificação de índice é utilizada ou não. Por exemplo, um codificador de vídeo pode sinalizar, em uma sequência de bits que compreende uma representação codificada de dados de vídeo, um elemento de sintaxe (por exemplo, o indicador) para indicar se ou não a ultrapassagem da codificação de índice é utilizada. De acordo, um decodificador de vídeo pode obter, a partir de uma sequência de bits, um elemento de sintaxe que indica se ou não a ultrapassagem de codificação de índice é utilizada. O indicador pode ser sinalizado em um SPS, PPS, cabeçalho de fatia, ou outra estrutura, ou por CTU ou CU ou em qualquer outro tamanho de bloco.
[0111] Dessa forma, em alguns exemplos, o codificador de vídeo pode sinalizar, na sequência de bits, um elemento de sintaxe indicando se o bloco de índice é sinalizado na sequência de bits. Em alguns exemplos, o codificador de vídeo pode sinalizar o elemento de sintaxe em um SPS, um PPS ou um cabeçalho de fatia na sequência de bits. Ademais, em alguns exemplos, o codificador de vídeo pode sinalizar o elemento de sintaxe com base em CTU ou com base em CU. Em tais exemplos, o decodificador de vídeo pode obter, a partir da sequência de bits, um elemento de sintaxe indicando se o bloco de índice é sinalizado na sequência de bits. O indicador pode ser sinalizado em um SPS, um PPS, um cabeçalho de fatia ou outra estrutura de sintaxe, ou por CTU ou por CU ou em qualquer outro tamanho de bloco. Dessa forma, em alguns exemplos, o decodificador de vídeo pode obter o elemento de sintaxe de um SPS, um PPS ou um cabeçalho de fatia na sequência de bits. Adicionalmente, em alguns exemplos, o decodificador de vídeo pode obter o elemento de sintaxe com base em CTU ou com base em CU.
[0112] Um exemplo de codificação de plano de bit de índices é descrito agora. No modo de linha normal, se um índice não puder ser previsto a partir de cima ou da esquerda; ou no modo horizontal, a linha é copiada a partir do índice mais para a esquerda a partir da linha atual, o valor de índice precisa ser codificado diretamente. Nesse caso, um valor de índice pode ser codificado, compartimento por compartimento, de acordo com uma representação binária do valor de índice. Por exemplo, assumindo-se que um índice localizado na linha i, coluna j seja denotado por:Ci,j = b0ij + 2b1ij + ... + 2 bNij = [b0ijb1ij...bNij]2 onde bkij = 0 ou 1. Então bkij pode ser codificado utilizando valores de índice vizinhos codificados de bkij como os contextos CABAC. Por exemplo, bkij pode utilizar bk(i-1)j + bkij(j-1) como contexto. bkij pode ser codificado também utilizando o contexto singular, ou sem qualquer contexto, isso é, ultrapassando a codificação.
[0113] Para permitir um maior rendimento, alguns dos compartimentos do índice são codificados na ultrapassagem e outros utilizando contextos CABAC. Por exemplo, apenas o Compartimento Mais Significativo da representação utiliza o contexto, enquanto os outros são codificados no modo de ultrapassagem.
[0114] Um exemplo de um indicador para indicar "outro índice" é descrito agora. Nesse exemplo, um indicador de um bit pode ser utilizado para indicar se um índice é "outro índice" ou não. Esse indicador pode ser codificado utilizando-se CABAC com índices vizinhos codificados circundantes do indicador como contexto.
[0115] Um exemplo de quantização de valor de escape utilizando uma função para a mudança para a direita é descrito agora. A tabela para mapear a partir de cada QP para a quantidade de mudança para a direita exige 52 entradas. Uma função de mapeamento pode economizar essas exigências de memória e fornecer uma forma eficiente para computar a mudança para a direita. Por exemplo, uma função linear pode ser aplicada:Right_shift = a*((QP + b) >> c) + d onde a, b, c e d são parâmetros de inteiros. Um exemplo específico dessa função é como segue: Right_shift = (QP >> 3)
[0116] Um exemplo de binarização e codificação de índices é descrito agora. Nesse exemplo, um primeiro indicador é codificado utilizando os índices codificados vizinhos como contexto para indicar se o índice é igual a zero ou não. Se o índice não for igual a zero, assume-se que o índice seja C > 0. Então C-1 é binarizado e codificado utilizando a ultrapassagem de codificação CABAC. Exemplos de métodos de binarização incluem, mas não estão restritos a: unary, unary truncado, Golomb exponencial, ou Golomb-Rice com parâmetros fixos ou adaptativos.
[0117] Uma técnica ilustrativa para ultrapassagem do indicador de pixels de escape é descrita agora. Em um exemplo, o indicador pode ser utilizado para indicar se um pixel é um "pixel de escape" (isso é, não apresentado em uma tabela de cor principal) ou não. Esse indicador pode ser ultrapassado se o número de cores principais for inferior a um número máximo de cores principais, que indica implicitamente que não existe qualquer "pixel de escape". Esse número máximo de cores principais pode ser predefinido ou ajustado de forma adaptativa. Quando o indicador é ultrapassado, os dados indicando o indicador não são incluídos em uma sequência de bits.
[0118] Por exemplo, em alguns exemplos, um codificador de vídeo pode omitir, a partir de uma sequência de bits, dados indicando os indicadores se o número de cores principais para um bloco for inferior a um número máximo permitido de cores principais. Dessa forma, se o número de valores de amostras distintas para os pixels no bloco for inferior ao número máximo permitido de cores principais, pode haver uma entrada na tabela de cores principais para cada um dos valores de amostra distintos dos pixels do bloco e nenhum dos pixels do bloco é um pixel de escape. Inversamente, se o número de valores de amostra distintos para pixel no bloco for maior do que o número máximo permitido para cores principais, um ou mais dos pixels do bloco são um pixel escapado. Dessa forma, se o número de valores de amostra distintos para o pixel no bloco for maior do que o número máximo permitido de cores principais, o codificador de vídeo pode sinalizar os indicadores para indicar quais dos pixels do bloco são pixels escapados.
[0119] Em um exemplo, um decodificador de vídeo pode obter, a partir de uma sequência de bits que compreende uma representação codificada de dados de vídeo, um elemento de sintaxe que indica se um pixel em um bloco é um pixel de escape quando o número de valores de amostra distintos de pixels no bloco é maior do que um número máximo permitido de cores em uma tabela de cores principal. Nesse exemplo, o decodificador de vídeo não obtém o elemento de sintaxe da sequência de bits quando o número de valores de amostras distintas de pixels no bloco é inferior ao número máximo permitido de cores na tabela de cores principal. Quando o pixel não é um pixel escapado, o decodificador de vídeo pode determinar, com base em um índice para o pixel, uma entrada na tabela de cores principal que específica um valor de amostra para o pixel.
[0120] Em um exemplo similar, se o número de valores de amostras distintos de pixels em um bloco for maior do que um número máximo permitido de cores em uma tabela de cores principal, um codificador de vídeo pode incluir, em uma sequência de bits que compreende uma representação codificada dos dados de vídeo, dados indicando um elemento de sintaxe indicando se um pixel do bloco é um pixel escapado. Se o número de valores de amostras distintos de pixels em um bloco for inferior a um número máximo permitido de cores em uma tabela de cores principal, o codificador de vídeo pode omitir o elemento de sintaxe da sequência de bits. Quando o pixel não é um pixel escapado, o codificador de vídeo pode incluir, na sequência de bits, dados indicando um índice que especifica uma entrada na tabela de cores principal que especifica um valor de amostra para o pixel.
[0121] Em outro exemplo, um indicador (ou outro tipo de elemento de sintaxe) pode ser sinalizado na sequência de bits codificada para indicar se essa característica de ultrapassar o indicador de pixels de escape é utilizada ou não. Por exemplo, um codificador de vídeo pode sinalizar, na sequência de bits codificada, um elemento de sintaxe para indicar se ou não a ultrapassagem de um elemento de sintaxe de indicação (por exemplo, o indicador) dos pixels de escape é utilizada. De acordo, um decodificador de vídeo pode obter, a partir de uma sequência de bits, o elemento de sintaxe que indica se ou não a ultrapassagem do elemento de sintaxe de indicação dos pixels de escape é utilizada. O indicador pode ser sinalizado em um SPS, PPS, um cabeçalho de fatia ou outra estrutura, por CTU ou por CU ou em qualquer outro tamanho de bloco.
[0122] Dessa forma, em alguns exemplos, um codificador de vídeo pode sinalizar, em uma sequência de bits, um segundo elemento de sintaxe indicando se a sequência de bits inclui um primeiro elemento de sintaxe (isso é, o elemento de sintaxe indicando se um pixel é um pixel de escape). Adicionalmente, em alguns exemplos, o decodificador de vídeo pode obter, a partir da sequência de bits, um segundo elemento de sintaxe indicando se a sequência de bits inclui um primeiro elemento de sintaxe (isso é, um elemento de sintaxe indicando se um pixel é um pixel de escape). Em alguns exemplos, esse segundo elemento de sintaxe pode ser sinalizado em um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, ou um cabeçalho de fatia. Em alguns exemplos, o segundo elemento de sintaxe é sinalizado com base em CTU ou com base em CU.
[0123] Os métodos de codificação por entropia ilustrativos de valores de pixel de escape quantizados ou erros de previsão de escape quantizados são descritos agora. Em alguns exemplos, os valores de pixel de escape quantizados (erros de previsão) são binarizados utilizando- se a palavra código de comprimento fixo. Para o primeiro compartimento da palavra código, a codificação CABAC é aplicada a uma modelagem de contexto. Para os compartimentos restantes da palavra código, a codificação de ultrapassagem CABAC é aplicada com as probabilidades iguais. Nesse exemplo, o comprimento da palavra código depende de valores QP para cada canal de luminescência- crominância (YUV ou RGB). Por exemplo, de acordo com dados de profundidade de 8 bits de entrada, depois da quantização do tamanho de etapa 4, o valor quantizado está na faixa de [0, 63], e, dessa forma, uma palavra código de comprimento fixo de 6 bits pode ser utilizada em vez de uma palavra código de 8 bits, a fim de reduzir os bits a serem transmitidos.
[0124] Por exemplo, um decodificador de vídeo pode determinar se um pixel de uma imagem de dados de vídeo é um pixel escapado. Em resposta à determinação de que o pixel não é um pixel escapado, o decodificador de vídeo pode determinar um índice para o pixel e determinar, com base no índice para o pixel, uma entrada de paleta que específica um valor de amostra para o pixel. A entrada de paleta pode estar em uma paleta que compreende entradas de paleta especificando os valores de amostra. Em resposta à determinação de que o pixel é um pixel escapado, o decodificador de vídeo pode utilizar CABAC com a modelagem de contexto para decodificar por entropia o primeiro compartimento de uma palavra código de comprimento fixo. Adicionalmente, em resposta à determinação de que o pixel é um pixel escapado, o decodificador de vídeo pode utilizar a codificação por ultrapassagem CABAC para decodificar por entropia cada compartimento da palavra código de comprimento fixo que segue o primeiro compartimento da palavra código de comprimento fixo. Adicionalmente, em resposta à determinação de que o pixel é um pixel escapado, o decodificador de vídeo pode desbinarizar a palavra código de comprimento fixo para determinar o valor de amostra para o pixel. Em alguns exemplos, o comprimento da palavra código de comprimento fixo é dependente dos valores de parâmetro de quantização (QP) para cada canal (por exemplo, canal de luminescência, crominância, etc.) da imagem.
[0125] Em um exemplo similar, um codificador de vídeo pode determinar se um pixel de uma imagem dos dados de vídeo é um pixel escapado. O pixel pode ser um pixel escapado quando um valor de amostra do pixel corresponde a um valor de amostra especificado por uma entrada de paleta em uma paleta que compreende entradas de paleta especificando valores de amostra. Em resposta à determinação de que o pixel não é um pixel escapado, o codificador de vídeo pode determinar um índice para o pixel e incluir, em uma sequência de bits que compreende uma representação codificada dos dados de vídeo, dados que indicam o índice para o pixel. Em resposta à determinação de que o pixel é um pixel escapado, o codificador de vídeo pode binarizar o valor de amostra do pixel para gerar um livro código de comprimento fixo. Adicionalmente, em resposta à determinação de que o pixel é um pixel escapado, o codificador de vídeo pode utilizar CABAC com modelagem de contexto para codificar por entropia o primeiro compartimento da palavra código de comprimento fixo. Adicionalmente, em resposta à determinação de que o pixel é um pixel escapado, o codificador de vídeo pode utilizar a codificação de ultrapassagem CABAC para codificar por entropia cada compartimento da palavra código de comprimento fixo que segue o primeiro compartimento da palavra código de comprimento fixo. Em alguns exemplos, o comprimento da palavra código de comprimento fixo depende dos valores QP para cada canal (por exemplo, canal de luminescência, crominância, etc.) da imagem.
[0126] Uma técnica ilustrativa da derivação de limite de erro de paleta é descrita agora. Em alguns exemplos, o tamanho de paleta é relacionado com QP. Por exemplo, um limite de erro de paleta maior pode ser designado para QP maior, dessa forma, grupos menores de índices de paleta; limite de erro de paleta menor pode ser designado para QP menor, dessa forma, mais grupos de índices de paleta. Uma tabela de mapeamento (tabela de consulta) de 52 entradas pode ser utilizada na memória para armazenar a relação entre cada valor QP e limite de erro de paleta.
[0127] Por exemplo, em alguns exemplos, um decodificador de vídeo pode determinar um índice para um pixel de uma imagem dos dados de vídeo. Adicionalmente, o decodificador de vídeo pode determinar, com base no índice para o pixel, uma entrada em uma paleta, onde a entrada determinada especifica um valor de amostra para o pixel, onde um tamanho de paleta é relacionado com um QP. De forma similar, em alguns exemplos, um codificador de vídeo pode incluir, em uma sequência de bits que compreende uma representação codificada de dados de vídeo, dados indicando um índice de uma entrada em uma paleta, onde um tamanho da paleta é relacionado com um parâmetro de quantização. Em tais exemplos, o codificador de vídeo pode determinar, com base no parâmetro de quantização, um limite de erro de paleta. Em tais exemplos, o codificador de vídeo pode incluir, na sequência de bits os dados indicando o índice de entrada na paleta apenas se uma diferença entre um valor de amostra especificado pela entrada e um valor de amostra do pixel for inferior ao limite de erro de paleta.
[0128] Uma técnica ilustrativa de derivação de pixel de escape quantizada é descrita agora. Em alguns exemplos, o parâmetro de quantização para um pixel de escape (ou erro de previsão) de cada canal é igual ao parâmetro de quantização para codificação de coeficientes tradicionais. Em outras palavras, a quantização ou desquantização de pixel de escape (erro de previsão) pode ser diferente em canais diferentes. Em um codificador de vídeo, cada canal do pixel de escape utiliza o parâmetro de quantização para codificação de coeficiente tradicional. Em um decodificador de vídeo, cada canal do pixel de escape utiliza o parâmetro de quantização recebido para codificação de coeficiente tradicional para reconstruir o valor de pixel de escape ou o erro de previsão de pixel de escape.
[0129] Em alguns exemplos, um decodificador de vídeo pode determinar se um pixel de uma imagem de dados de vídeo é um pixel escapado. Em resposta à determinação de que o pixel não é um pixel escapado, o decodificador de vídeo pode determinar, com base em um índice para o pixel, uma entrada em uma paleta que compreende entradas especificando os valores de amostra, a entrada determinada especificando um valor de amostra do pixel. Em resposta à determinação de que o pixel é um pixel escapado, o decodificador de vídeo pode determinar, com base em um ou mais elementos de sintaxe na sequência de bits e sem determinar uma entrada na paleta, o valor de amostra do pixel. Adicionalmente, em resposta à determinação de que o pixel é um pixel escapado, o decodificador de vídeo pode desquantizar o valor de amostra do pixel. O valor de amostra do pixel pode ser um valor de amostra residual do pixel, e o decodificador de vídeo pode adicionar um valor de amostra de previsão para o pixel para ao valor de amostra residual do pixel para determinar um valor de amostra decodificado para o pixel. Adicionalmente, em tais exemplos, o valor de amostra do pixel é um primeiro valor de amostra do pixel, o parâmetro de quantização é um primeiro parâmetro de quantização, o primeiro valor de amostra do pixel e o primeiro parâmetro de quantização correspondem a um primeiro canal. Em tais exemplos, em resposta à determinação de que o pixel é um pixel escapado, a decodificação de vídeo pode desquantizar, com base em um segundo parâmetro de quantização, um segundo valor de amostra de pixel, o segundo valor de amostra de pixel e o segundo parâmetro de quantização correspondendo ao segundo canal.
[0130] Em um exemplo similar, um codificador de vídeo pode determinar se um pixel de uma imagem de dados de vídeo é um pixel escapado. O pixel pode ser um pixel escapado quando um valor de amostra de pixel não corresponde a uma entrada em uma paleta que compreende entradas especificando valores de amostra. Em resposta à determinação de que o pixel é um pixel escapado, o codificador de vídeo pode quantizar, com base em um parâmetro de quantização, o valor de amostra do pixel e incluir, em uma sequência de bits que compreende uma representação codificada dos dados de vídeo, os dados indicando o valor de amostra quantizado do pixel. Em resposta à determinação de que o pixel não é um pixel escapado, o codificador de vídeo pode determinar uma entrada na paleta que corresponde ao valor de amostra do pixel e inclui, na sequência de bits, os dados indicando um índice para a entrada determinada na paleta. Em alguns exemplos, o valor de amostra para o pixel é um valor de amostra residual do pixel. Adicionalmente, em alguns exemplos, o valor de amostra do pixel é um primeiro valor de amostra do pixel, o parâmetro de quantização é um primeiro parâmetro de quantização, o primeiro valor de amostra do pixel e o primeiro parâmetro de quantização correspondendo a um primeiro canal, e em resposta à determinação de que o pixel é um pixel escapado, o codificador de vídeo pode quantizar, com base em um segundo parâmetro de quantização, um segundo valor de amostra de pixel, o segundo valor de amostra de pixel e o segundo parâmetro de quantização correspondendo ao segundo canal. O codificador de vídeo pode incluir, na sequência de bits, dados indicando o segundo valor de amostra quantizado do pixel.
[0131] A figura 2 é um diagrama em bloco ilustrando um codificador de vídeo ilustrativo 20 que pode implementar várias técnicas dessa descrição. A figura 2 é fornecida para fins de explicação e não deve ser considerada limitadora das técnicas como amplamente exemplificadas e descritas nessa descrição. Para fins de explicação, essa descrição descreve o codificador de vídeo 20 no contexto de codificação HEVC. No entanto, as técnicas dessa descrição podem ser aplicáveis a outros padrões ou métodos de codificação.
[0132] No exemplo da figura 2, o codificador de vídeo 20 inclui uma memória de dados de vídeo 98, uma unidade de processamento de previsão 100, uma unidade de geração residual 102, uma unidade de processamento de transformação 104, uma unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de processamento de transformação inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 114, um armazenador de imagem decodificada 116, e uma unidade de codificação por entropia 118. A unidade de processamento por previsão 110 inclui uma unidade de processamento interprevisão 120 e uma unidade de processamento intraprevisão 126. A unidade de processamento interprevisão 120 inclui uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não ilustrada). O codificador de vídeo 20 também inclui uma unidade de codificação com base em paleta 122 configurada para realizar vários aspectos das técnicas de codificação com base em paleta descritas nessa descrição. E outros exemplos, o codificador de vídeo 20 pode incluir mais, menos ou outros componentes funcionais.
[0133] A memória de dados de vídeo 98 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 98 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. O armazenador de imagem decodificada 116 pode ser uma memória de imagem de referência que armazena os dados de vídeo de referência para uso na codificação de dados de vídeo pelo codificador de vídeo 20, por exemplo, nos modos de intra ou intercodificação. A memória de dados de vídeo 98 e o armazenador de imagem decodificada 116 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso randômico dinâmico (DRAM), incluindo DRAM sincronizada (SDRAM), RAM magneto resistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 98 e o armazenador de imagem decodificada 116 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 98 pode estar em chip com outros componentes do codificador de vídeo 20, ou fora de chip com relação a esses componentes.
[0134] O codificador de vídeo 20 pode receber dados de vídeo. O codificador de vídeo 20 pode codificar cada CTU em uma fatia de uma imagem de dados de vídeo. Cada uma das CTUs pode ser associada com blocos de árvore de codificação de luminescência de mesmo tamanho (CTBs) e CTBs correspondentes da imagem. Como parte da codificação de uma CTU, a unidade de processamento de previsão 100 pode realizar a partição de quad-tree para dividir os CTBs da CTU em blocos progressivamente menores. O bloco menor pode ser blocos de codificação para CUs. Por exemplo, a unidade de processamento por previsão 100 pode dividir um CTB associado com uma CTU em quatro sub-blocos de mesmo tamanho, dividir um ou mais dos sub-blocos em quatro sub- sub-blocos de mesmo tamanho, e assim por diante.
[0135] O codificador de vídeo 20 pode codificar CUs de uma CTU para gerar as representações codificadas das CUs (isso é, CUs codificadas). Como parte de codificação de uma CU, a unidade de processamento por previsão 100 pode dividir os blocos de codificação associados com a CU entre uma ou mais PUs da CU. Dessa forma, cada PU pode ser associada com um bloco de previsão de luminescência e blocos de previsão de crominância correspondentes. O codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar PUs possuindo vários tamanhos. Como indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação de luminescência da CU e o tamanho de uma PU pode se referir ao tamanho de um bloco de previsão de luminescência da PU. Assumindo-se que o tamanho de uma CU em particular é 2N x 2N, o codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar os tamanhos de PU de 2N x 2N ou N x N para intraprevisão, e tamanhos de PU simétricos de 2N x 2N, 2N x N, N x 2N, N x N ou similares para interprevisão. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar a divisão assimétrica para tamanhos de PU de 2N x nU, 2N x nD, nL x 2N e nR x 2N para interprevisão.
[0136] A unidade de processamento de interprevisão 120 pode gerar dados de previsão para uma PU pela realização de interprevisão em cada PU de uma CU. Os dados de previsão para a PU podem incluir um ou mais blocos de amostra por previsão da PU e informação de movimento para a PU. A unidade de interprevisão 121 pode realizar diferentes operações para uma PU de uma CU dependendo de 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. Dessa forma, se a PU estiver em uma fatia I, a unidade de interprevisão 121 não realiza a interprevisão na PU. Dessa forma, para os blocos codificados no modo I, o bloco de previsão é formado utilizando a previsão espacial dos blocos vizinhos previamente codificados dentro do mesmo quadro.
[0137] Se uma PU estiver em uma fatia P, a unidade de estimativa de movimento da unidade de processamento de interprevisão 120 pode buscar as imagens de referência em uma lista de imagens de referência (por exemplo, "RefPicList0") para uma região de referência para a PU. A região de referência para a PU pode ser uma região, dentro de uma imagem de referência, que contém blocos de amostra que mais correspondem aos mesmos blocos da PU. A unidade de estimativa de movimento pode gerar um índice de referência que indica uma posição em RefPicList0 da imagem de referência contendo a região de referência para a PU. Adicionalmente, a unidade de estimativa de movimento pode gerar um MV que indica um deslocamento espacial entre um bloco de codificação da PU e uma localização de referência associada com a região de referência. Por exemplo, o MV pode ser um vetor bidimensional que fornece um desvio das coordenadas na imagem decodificada atual para coordenadas em uma imagem de referência. A unidade de estimativa de movimento pode enviar o índice de referência e o MV como a informação de movimento da PU. A unidade de compensação de movimento da unidade de processamento interprevisão 120 pode gerar os blocos de amostra de previsão da PU com base em uma amostra real ou interpolada no local de referência indicada pelo vetor de movimento da PU.
[0138] Se uma PU estiver em uma fatia B, a unidade de estimativa de movimento pode realizar a previsão única ou dupla para a PU. Para realizar a previsão única para a PU, a unidade de estimativa de movimento pode buscar as imagens de referência de RefPicList0 ou uma segunda lista de imagem de referência ("RefPicList1") para uma região de referência para a PU. A unidade de estimativa de movimento pode enviar, como a informação de movimento da PU um índice de referência que indica uma posição em RefPicList0 ou RefPicList1 da imagem de referência que contém a região de referência, um MV que indica um deslocamento espacial entre um bloco de amostras da PU e uma localização de referência associada com a região de referência, e um ou mais indicadores de direção de previsão que indicam se a imagem de referência está em RefPicList0 ou RefPicList 1. A unidade de compensação de movimento da unidade de processamento de interprevisão 120 pode gerar os blocos de amostra previsíveis da PU com base pelo menos em parte nas amostras reais ou interpoladas na região de referência indicada pelo vetor de movimento da PU.
[0139] Para realizar a interprevisão bidirecional para uma PU, a unidade de estimativa de movimento pode buscar as imagens de referência em RefPicList0 para uma região de referência para a PU e também pode buscar as imagens de referência em RefPicList1 para outra região de referência para a PU. A unidade de estimativa de movimento pode gerar índices de imagem de referência que indicam as posições em RefPicList0 e RefPicList1 das imagens de referência que contêm as regiões de referência. Adicionalmente, a unidade de estimativa de movimento pode gerar MVs que indicam os deslocamentos espaciais entre a localização de referência associada com as regiões de referência e um bloco de amostras da PU. A informação de movimento da PU pode incluir índices de referência e MVs da PU. A unidade de compensação de movimento pode gerar blocos de amostra de previsão da PU com base pelo menos em parte em amostras reais ou interpoladas na região de referência indicada pelo vetor de movimento da PU.
[0140] De acordo com vários exemplos dessa descrição, o codificador de vídeo 20 pode ser configurado para realizar a codificação com base em paleta. Com relação à estrutura de trabalho HEVC, como um exemplo, as técnicas de codificação com base em paleta podem ser configuradas para serem utilizadas como um modo CU. Em outros exemplos, as técnicas de codificação com base em paleta podem ser configuradas para serem utilizadas como um modo PU na estrutura de trabalho de HEVC. De acordo, todos os processos descritos aqui (por toda a descrição) no contexto de um modo CU podem, adicionalmente ou alternativamente, aplicar a um modo PU. No entanto, esses exemplos com base em HEVC não devem ser considerados uma restrição ou limitação das técnicas de codificação com base em paleta descritas aqui, visto que tais técnicas podem ser aplicadas para funcionar independentemente ou como parte de outros sistemas/padrões existentes ou ainda para serem desenvolvidos. Nesses casos, a unidade para codificação de paleta pode ser blocos quadrados, blocos retangulares ou até mesmo regiões de formato não retangular.
[0141] A unidade de codificação com base em paleta 122, por exemplo, pode realizar a decodificação com base em paleta quando um modo de codificação com base em paleta é selecionado, por exemplo, para uma CU ou PU. Por exemplo, a unidade de codificação com base em paleta 122 pode ser configurada para gerar uma paleta possuindo entradas indicando os valores de pixel, selecionar os valores de pixel em uma paleta para representar valores de pixel de pelo menos algumas posições de um bloco de dados de vídeo, e sinalizar informação associando pelo menos algumas das posições de um bloco de dados de vídeo, e sinalizar informação associando pelo menos algumas das posições do bloco de dados de vídeo com entradas na paleta correspondente, respectivamente, para os valores de pixel selecionados. Apesar de várias funções serem descritas como sendo realizadas pela unidade de codificação com base em paleta 122, algumas ou todas as ditas funções podendo ser realizadas por outras unidades de processamento, ou uma combinação de diferentes unidades de processamento.
[0142] A unidade de codificação com base em paleta 122 pode ser configurada para gerar qualquer um dos vários elementos de sintaxe descritos aqui. De acordo, o codificador de vídeo 20 pode ser configurado para codificar os blocos de dados de vídeo utilizando os modos de código com base em paleta como descrito nessa descrição. O codificador de vídeo 20 pode codificar seletivamente um bloco de dados de vídeo utilizando um modo de codificação de paleta, ou codificar um bloco de dados de vídeo utilizando um modo diferente, por exemplo, um modo de codificação de interprevisão ou intraprevisão HEVC. O bloco de dados de vídeo pode ser, por exemplo, uma CU ou PU gerada de acordo com um processo de codificação HEVC. Um codificador de vídeo 20 pode codificar alguns blocos com previsão temporal de interprevisão ou modos de codificação espacial por intraprevisão e decodificar outros blocos com o modo de codificação com base em paleta.
[0143] A unidade de processamento por intraprevisão 126 pode gerar dados de previsão para uma PU pela realização da intraprevisão na PU. Os dados de previsão para a PU podem incluir blocos de amostra de previsão para a PU e vários elementos de sintaxe. A unidade de processamento por intraprevisão 126 pode realizar a intraprevisão em PUs em fatias I, fatias P, e fatias B.
[0144] Para realizar a intraprevisão em uma PU, a unidade de processamento de intraprevisão 126 pode utilizar múltiplos modos de intraprevisão para gerar múltiplos conjuntos de dados de previsão para a PU. Quando da utilização de alguns modos de intraprevisão para gerar um conjunto de dados de previsão para a PU, a unidade de processamento de intraprevisão 126 pode estender os valores de amostras a partir de blocos de amostra de PUs vizinhas através dos blocos de previsão da PU em direções associadas com os modos de intraprevisão. As PUs vizinhas podem estar acima, acima e à direita, acima e à esquerda, ou à esquerda da PU, assumindo uma ordem de codificação da esquerda para a direita, de cima para baixo para as PUs, CUs e CTUs. A unidade de processamento por intraprevisão 126 pode utilizar vários números de modos de intraprevisão, por exemplo, 33 modos de intraprevisão direcionais. Em alguns exemplos, o número de modos de intraprevisão pode depender do tamanho da região associada com a PU.
[0145] A unidade de processamento de previsão 100 pode selecionar os dados de previsão para PUs de uma CU dentre os dados de previsão gerados pela unidade de processamento por intraprevisão 126 para as PUs. Em alguns exemplos, a unidade de processamento por previsão 100 seleciona os dados de previsão para as PUs da CU com base em métricas de taxa/distorção dos conjuntos de dados de previsão. Os blocos de amostras de previsão dos dados de previsão selecionados podem ser referidos aqui como blocos de amostra de previsão selecionados.
[0146] A unidade de geração residual 102 pode gerar, com base nos blocos de codificação (por exemplo, blocos de codificação de luminescência, Cb e Cr) de uma CU e blocos de amostra de previsão selecionados (por exemplo, blocos Cb e Cr, de luminescência de previsão) das PUs da CU, blocos residuais (por exemplo, blocos residuais de luminescência, Cb e Cr) da CU. Por exemplo, a unidade de geração residual 102 pode gerar blocos residuais da CU de modo que cada amostra nos blocos residuais tenha um valor igual a uma diferença entre uma amostra em um bloco de codificação da CU e uma amostra correspondente em um bloco de amostras de previsão selecionado de forma correspondente de uma PU da CU.
[0147] A unidade de processamento de transformação 104 pode realizar a partição quad-tree para dividir os blocos residuais associados com uma CU em blocos de transformação associados com as TUs da CU. Dessa forma, em alguns exemplos, uma TU pode ser associada com um bloco de transformação de luminescência e dois blocos de transformação de crominância. Os tamanhos e posições dos blocos de transformação de luminescência e crominância das TUs de uma CU podem ou não ser baseados nos tamanhos e posições dos blocos de previsão das PUs da CU. Uma estrutura quad-tree conhecida como "quad-tree residual" (RQT) pode incluir nós associados com cada uma das regiões. As TUs de uma CU podem corresponder a nós folha do RQT.
[0148] A unidade de processamento de transformação 104 pode gerar blocos de coeficiente de transformação para cada TU de uma CU pela aplicação de uma ou mais transformações aos blocos de transformação da TU. A unidade de processamento de transformação 104 pode aplicar várias transformações a um bloco de transformação associado com uma TU. Por exemplo, a unidade de processamento de transformação 104 pode aplicar uma transformação de cosseno discreto (DCT), uma transformação direcional, ou uma transformação conceitualmente similar a um bloco de transformação. Em alguns exemplos, a unidade de processamento de transformação 104 não aplica transformações a um bloco de transformação. Em tais exemplos, o bloco de transformação pode ser tratado como um bloco de coeficiente de transformação.
[0149] A unidade de quantização 106 pode quantizar os coeficientes de transformação em um bloco de coeficientes. O processo de quantização pode reduzir a profundidade de bit associada com parte ou todos os coeficientes de transformação. Por exemplo, um coeficiente de transformação de bit n pode ser arredondado para baixo para um coeficiente de transformação de bit m durante a quantização, onde n é maior quem. A unidade de quantização 106 pode quantizar um bloco de coeficientes associado com uma TU de uma CU com base em um valor de parâmetro de quantização (QP) associado com a CU. O codificador de vídeo 20 pode ajustar o grau de quantização aplicada aos blocos de coeficiente associados com uma CU pelo ajuste do valor QP associado com a CU. A quantização pode introduzir perda de informação, dessa forma, os coeficientes de transformação quantizados podem ter menor precisão do que os originais.
[0150] A unidade de quantização inversa 108 e a unidade de processamento de transformação inversa 110 podem aplicar quantização inversa e transformação inversa a um bloco de coeficientes, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficientes. A unidade de reconstrução 112 pode adicionar o bloco residual reconstruído a amostras correspondentes de um ou mais blocos de amostras de previsão gerados pela unidade de processamento de previsão 100 para produzir um bloco de transformação reconstruído associado com uma TU. Pela reconstrução dos blocos de transformação para cada TU de uma CU dessa forma, o codificador de vídeo 20 pode reconstruir os blocos de codificação da CU.
[0151] A unidade de filtro 114 pode realizar uma ou mais operações de desbloqueio para reduzir os artefatos de bloqueio nos blocos de codificação associados com uma CU. O armazenador de imagem decodificada 116 pode armazenar os blocos de codificação reconstruídos depois que a unidade de filtro 114 realiza uma ou mais operações de desbloqueio nos blocos de codificação reconstruídos. A unidade de processamento por interprevisão 120 pode utilizar uma imagem de referência que contém os blocos de codificação reconstruídos para realizar a interprevisão nas PUs de outras imagens. Adicionalmente, a unidade de processamento de intraprevisão 126 pode utilizar os blocos de codificação reconstruídos no armazenador de imagem decodificada 116 para realizar a intraprevisão em outras PUs na mesma imagem que a CU.
[0152] A unidade de codificação por entropia 118 pode receber dados de outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação por entropia 118 pode receber blocos de coeficiente da unidade de quantização 106 e pode receber elementos de sintaxe da unidade de processamento por previsão 100. A unidade de codificação por entropia 118 pode realizar uma ou mais operações de codificação por entropia nos dados para gerar dados codificados por entropia. Por exemplo, a unidade de codificação por entropia 118 pode realizar uma operação CABAC, uma operação de codificação de comprimento variável adaptativa de contexto (CAVLC), uma operação de codificação de comprimento variável para variável (V2V), uma operação de codificação aritmética binária adaptativa de contexto com base em sintaxe (SBAC), uma operação de codificação por Entropia de Divisão de Intervalo de Probabilidade (PIPE), uma operação de codificação Golomb Exponencial, ou outro tipo de operação de codificação por entropia nos dados. O codificador de vídeo 20 pode enviar uma sequência de bits que inclui dados codificados por entropia gerados pela unidade de codificação por entropia 118. Por exemplo, a sequência de bits pode incluir dados que representam um RQT para uma CU.
[0153] Em alguns exemplos, a codificação residual não é realizada com codificação de paleta. De acordo, o codificador de vídeo 20 pode não realizar a transformação ou quantização quando da codificação utilizando um modo de codificação de paleta. Adicionalmente, o codificador de vídeo 20 pode codificar por entropia os dados gerados utilizando-se um modo de codificação de paleta separadamente dos dados residuais.
[0154] De acordo com uma ou mais técnicas dessa descrição, o codificador de vídeo 20, e especificamente a unidade de codificação com base em paleta 122, pode realizar codificação de vídeo com base em paleta dos blocos de vídeo previstos. Como descrito acima, uma paleta gerada pelo codificador de vídeo 20 pode ser explicitamente codificada e enviada para o decodificador de vídeo 30, prevista a partir das entradas anteriores de paleta, previstos a partir dos valores de pixel anteriores, ou uma combinação dos mesmos.
[0155] A unidade de codificação com base em paleta 122 pode aplicar técnicas dessa descrição para ultrapassar a codificação de um mapa de valores de índice de paleta para pixels de um bloco codificado por paleta sob determinadas circunstâncias. De acordo com os aspectos dessa descrição, a unidade de codificação com base em paleta 122 pode ultrapassar a codificação do mapa de valores de índice de paleta para um bloco codificado por paleta se a unidade de codificação com base em paleta 122 determinar que todos os pixels do bloco são da mesma cor. Por exemplo, a unidade de codificação com base em paleta 122 pode determinar que uma CU codificada por paleta de uma imagem é uma "CU de cor única" e pode ultrapassar a codificação e sinalização do mapa de valores de índice de paleta para a CU de cor única.
[0156] Mais especificamente, a unidade de codificação com base em paleta 122 pode determinar se uma CU codificada com base em paleta é uma CU de cor única se a CU atual satisfizer duas condições. A primeira condição que a unidade de codificação com base em paleta 122 pode utilizar na determinação de se a CU codificada por paleta é uma CU de cor única é se o tamanho da paleta correspondente é igual a um (1). Se o tamanho da paleta for igual a um, então a unidade de codificação com base em paleta 122 pode determinar que a primeira condição é correspondida com relação à CU codificada por paleta ser uma CU de cor única. Mais especificamente, se o tamanho da paleta for igual a um, então a unidade de codificação com base em paleta 122 pode determinar que a paleta inclui apenas uma cor que corresponde a pixels (de não escape) da CU codificada por paleta. Em alguns exemplos onde o tamanho da paleta é igual a um, a unidade de codificação com base em paleta 122 pode determinar que apenas o valor de indica incluído na paleta seja igual a zero (0).
[0157] Se a unidade de codificação com base em paleta 122 determinar que o tamanho da paleta para a CU codificada por paleta é igual a 1 (isso é, que a primeira condição foi correspondida), então a unidade de codificação com base em paleta 122 pode determinar se a CU codificada por paleta corresponde a uma segunda condição para ser uma CU de cor única. A segunda condição que a unidade de codificação com base em paleta 122 pode utilizar na determinação de se a CU codificada por paleta é uma CU de cor única é que a CU codificada por paleta não inclui quaisquer pixels de escape. Se a CU codificada por paleta incluir pelo menos um pixel de escape, então o codificador de vídeo 20 pode determinar que, apesar de a paleta correspondente indicar apenas uma cor com relação à CU codificada por paleta, a CU codificada por paleta inclui pixels de duas ou mais cores. Por exemplo, a CU codificada por paleta pode incluir pelo menos um pixel que possui a cor indicada na paleta, e pelo menos um pixel de escape que possui uma cor diferente.
[0158] Se a unidade de codificação com base em paleta 122 determinar que a CU codificada por paleta satisfaz ambas as condições descritas acima, então a unidade de codificação com base em paleta 122 pode determinar que a CU codificada por paleta é uma CU de cor única. Mais especificamente, se a CU codificada por paleta for associada com uma paleta de entrada única (ilustrada pelo tamanho da paleta igual a um), e a CU codificada por paleta não incluir quaisquer pixels de escape, então a unidade de codificação com base em paleta 122 pode determinar que todos os pixels individuais da CU codificada por paleta são da mesma cor (isso é, a cor indicada pela entrada única da paleta correspondente). Em várias implementações, a unidade de codificação com base em paleta 122 pode aplicar as técnicas de identificação de CU de cor única descritas acima com relaçao a uma base de componente de cor única com relação à paleta, ou a um índice combinado que indica mais do que um componente de cor.
[0159] Em resposta à determinação de que a CU codificada por paleta inclui pixels de apenas uma cor (isso é, que a CU é uma CU de cor única), a unidade de codificação com base em paleta 122 pode implementar as técnicas dessa descrição para ultrapassar a codificação do mapa de valores de índice de paleta para os pixels de CU de cor única. Pela ultrapassagem da codificação do mapa de valores de índice de paleta para a CU, a unidade de codificação com base em paleta 122 pode conservar os recursos de computação e largura de banda que, do contrário, seriam gastos para codificar a sinalizar a informação de cor para a CU. Em vez de codificar um mapa de valores de índice de paleta para os pixels da CU de cor única, a unidade de codificação com base em paleta 122 pode implementar as técnicas dessa descrição para indicar de forma mais eficiente a informação de cor para todo o conjunto de pixels que criam a CU de cor única. Nos casos onde a unidade de codificação com base em paleta 122 ultrapassa a codificação do índice de paleta para todos os pixels individuais de uma CU de cor única detectada, o codificador de vídeo 20 (ou um ou mais componentes do mesmo) podem não precisar sinalizar um mapa de valores de índice de paleta para os pixels da CU, conservando, assim, os recursos de computação e reduzindo o consumo de largura de banda.
[0160] De acordo com alguns exemplos dessa descrição, a unidade de codificação com base em paleta 122 pode codificar um indicador para indicar que o codificador de vídeo 20 ultrapassou a codificação (e sinalização) do mapa de valores de índice de paleta, linha por linha, para a CU de cor única. Pela codificação de um indicador de bit único para toda a CU em vez do mapa (de qualquer tamanho) de valores de índice de paleta para os pixels da CU, a unidade de codificação com base em paleta 122 pode fazer com que o codificador de vídeo 20 conserve recursos de computação e largura de banda de sinalização em comparação com as técnicas de codificação com base em paleta existentes. Ademais, a unidade de codificação com base em paleta 122 pode manter a precisão e qualidade da CU de cor única codificada, visto que a paleta de entrada única codificada pela unidade de codificação com base em paleta 122 e sinalizada pelo codificador de vídeo 20 para a CU inclui a informação de cor para todos os pixels da CU. Em vários exemplos, a unidade de codificação com base em paleta 122 pode codificar o indicador de várias formas, tal como em um SPS, um PPS ou um cabeçalho de fatia. Em vários exemplos, a unidade de codificação com base em paleta 122 pode codificar o indicador com base em CTU, com base em CU ou para um bloco de qualquer tamanho de bloco, também.
[0161] Em outros exemplos, a unidade de codificação com base em paleta 122 pode implementar técnicas dessa descrição para derivar um limite de erro para uma paleta para um bloco codificado por paleta. Como utilizado aqui, os termos "limite de erro" ou "limite de erro de paleta" podem se referir à variação mínima de valores de pixel (por exemplo, em termos de informação de cor) que as entradas da paleta podem incluir, mais especificamente, o limite de erro de paleta define uma variação mínima em valor de cor que quaisquer duas entradas de paleta devem exibir. Como descrito, para se codificar um bloco de acordo com a codificação com base em paleta, a unidade de codificação com base em paleta 122 pode construir a paleta correspondente para incluir os valores de cor que ocorrem mais frequentemente (pixel por pixel) dentro do bloco.
[0162] Em outras palavras, a unidade de codificação com base em paleta 122 pode construir uma paleta pelo agrupamento de valores de pixel de alta ocorrência (ou relativamente alta ocorrência) do bloco na paleta. A unidade de codificação com base em paleta 122 pode selecionar os valores de pixel de alta ocorrência de modo que os valores de pixel exibam pelo menos uma variação mínima em particular, em termos de informação de cor. Por sua vez, a variação mínima do valor de pixel dentro do conjunto selecionado de valores de pixel de alta ocorrência pode formar o limite de erro da paleta correspondente. Será apreciado que, enquanto o limite de erro de paleta pode incluir vários valores de pixel, a paleta pode não incluir necessariamente cada par de valores de pixel que exibem pelo menos o limite de erro de paleta. Dessa forma, o mesmo limite de erro de paleta pode aplicar às paletas de tamanhos variáveis. A unidade de codificação com base em paleta 122 pode utilizar o limite de erro de paleta na realização de determinações quando aos valores de cor que devem ser incluídos na paleta.
[0163] A unidade de codificação com base em paleta 122 pode implementar as técnicas dessa descrição para definir o limite de erro para uma paleta. De acordo com vários aspectos dessa descrição, a unidade de codificação com base em paleta 122 pode determinar o limite de erro de paleta com base no parâmetro de quantização (QP) para o bloco codificado por paleta. Em vários exemplos, a unidade de codificação com base em paleta 122 pode determinar que o limite de erro de paleta é diretamente proporcional ao valor QP para o bloco correspondente. Mais especificamente, nesses exemplos, a unidade de codificação com base em paleta pode designar um limite de erro maior para uma paleta para um bloco que é quantizado com um valor QP maior, e um limite de erro menor para uma paleta para um bloco que é quantizado com um valor QP menor.
[0164] Adicionalmente, a unidade de codificação com base em paleta 122 pode implementar as técnicas descritas aqui para derivar o limite de erro de paleta pelo armazenamento de uma tabela que mapeia o valor QP de um bloco codificado por paleta para o limite de erro de paleta correspondente. Por sua vez, a unidade de codificação com base em paleta 122 pode acessar uma entrada de limite de erro de paleta particular a partir da tabela a fim de determinar a paleta correspondente. Pela utilização de uma tabela que mapeia o limite de erro de paleta para QP de um bloco codificado por paleta, a unidade de codificação com base em paleta 122 pode aperfeiçoar a eficiência de computação em comparação com as técnicas de codificação com base em paleta existentes. Mais especificamente, pela implementação das técnicas de derivação de limite de erro de paleta com base em tabela de mapeamento descritas aqui, a unidade de codificação com base em paleta 122 pode conservar recursos que, do contrário, seriam gastos de acordo com as técnicas existentes, que se baseiam na execução de uma função para derivar o limite de erro para cada paleta.
[0165] Dessa forma, a unidade de codificação com base em paleta 122 pode definir as paletas que podem acomodar um número maior de índices de paleta para exigir uma maior variação entre os valores de pixel para os blocos que são quantizados com valores QP maiores, e pode definir paletas que exigem menos variação entre os valores de pixel que são quantizados com valores QP maiores. Dessa forma, a unidade de codificação com base em paleta 122 pode implementar as várias técnicas dessa descrição para personalizar a paleta (com base no limite de erro de paleta) com base no valor QP com o qual o bloco correspondente é quantizado, determinando, assim, o conteúdo da paleta para um bloco com base no valor QP do bloco Adicionalmente, a unidade de codificação com base em paleta 122 pode gerar e/ou armazenar uma tabela (por exemplo, uma tabela de mapeamento ou tabela de consulta) para refletir a relação entre o valor QP e o limite de erro de paleta correspondente. Dessa forma, a unidade de codificação com base em paleta 122 pode implementar as técnicas dessa descrição para derivar um limite de erro de paleta para uma paleta correspondente em uma forma computacionalmente menos cara do que nas técnicas de codificação de paleta existentes, que se baseiam na solução de uma função para derivar o limite de erro para cada paleta.
[0166] A unidade de codificação com base em paleta 122 pode, em alguns exemplos, implementar várias técnicas dessa descrição para derivação de pixel de escape quantizado. Mais especificamente, a unidade de codificação com base em paleta 122 pode implementar as técnicas para definir o valor de quantização de QP para um pixel de escape. Por exemplo, de acordo com as técnicas de codificação com base em paleta, se a unidade de codificação com base em paleta 122 detectar um pixel de escape em um bloco codificado por paleta, a unidade de codificação com base em paleta 122 pode codificar o valor de pixel, ou um erro de previsão do mesmo, visto que a paleta correspondente não inclui quaisquer entradas para o pixel de escape. Adicionalmente, para conservar largura de banda de sinalização, a unidade de quantização 106 pode quantizar o valor de pixel codificado do pixel de escape antes da sinalização por outros componentes do codificador de vídeo 20.
[0167] De acordo com as técnicas de codificação com base em paleta existentes, nenhum valor de quantização (valor QP) foi definido para quantizar um pixel de escape. A unidade de codificação com base em paleta 122 pode implementar técnicas dessa descrição para definir o valor QP para quantizar um pixel de escape. Mais especificamente, a unidade de codificação com base em paleta 122 pode definir o valor QP para um pixel de escape como igual ao valor QP para codificação de coeficiente tradicional dentro do mesmo canal de cor. Dessa forma, a unidade de codificação com base em paleta 122 pode quantizar todos os pixels de escape de acordo com um único valor QP, dentro de um canal de cor determinado. Adicionalmente, visto que a unidade de codificação com base em paleta 122 pode definir o valor QP para todos os pixels de escape apenas dentro de um canal de cor única, a unidade de codificação com base em paleta 122 pode utilizar diferentes valores de QP para quantizar os pixels de escape com relação a canais de cores diferentes.
[0168] Adicionalmente, a unidade de codificação com base em paleta 122 pode implementar outras técnicas dessa descrição para utilizar um indicador para indicar e/ou detectar a inclusão de um pixel de escape em um bloco codificado por paleta. De acordo com as técnicas de codificação com base em paleta existentes, os pixels de escape podem ser sinalizados e detectados utilizando-se um valor de índice de paleta "reservado". Por exemplo, de acordo com as técnicas de codificação com base em paleta existentes, o valor de índice de paleta reservado que indica um pixel de escape pode ser igual a 32. Mais especificamente, o valor de índice de paleta igual a 32 pode ser utilizado para todos os pixels de escape, independentemente de se dois pixels de escape possuem valores de pixel diferentes. Dessa forma, de acordo com as técnicas de codificação com base em paleta existentes, os dispositivos de codificação de vídeo podem utilizar um valor de cinco bits (de 32) para cada pixel de escape de um bloco codificado por paleta.
[0169] A unidade de codificação com base em paleta 122 pode implementar as técnicas dessa descrição para conservar recursos de computação (por exemplo, armazenamento em memória) e reduzir o consumo de largura de banda, enquanto mantém a precisão da imagem com relação à sinalização de uma indicação de um pixel de escape em um bloco codificado por paleta. Por exemplo, a unidade de codificação com base em paleta 122 pode codificar um indicador (por exemplo, uma unidade de dados de um bit) para indicar que um pixel em um bloco codificado por paleta é um pixel de escape. Como descrito aqui, o indicador, quando ativado, pode indicar que o pixel associado recebe um índice de paleta referido como "outro índice". A unidade de codificação com base em paleta 122 pode utilizar a situação de "outro índice" do indicador para substituir o valor de índice de paleta de 32 que é tradicionalmente utilizado para indicar um pixel de escape com relação à paleta. Dessa forma, a unidade de codificação com base em paleta 122 pode codificar (e outros componentes do codificador de vídeo 20 podem sinalizar) um indicador e um bit em vez de um valor de índice de cinco bits para indicar que um pixel de um bloco codificado por paleta é um pixel de escape. Por sua vez, o codificador de vídeo 20 (ou um ou mais componentes do mesmo) pode codificar e sinalizar o valor de pixel ou dados residuais do mesmo, na sequência de bits de vídeo codificado.
[0170] Uma ou ambas a unidade de codificação com base em paleta 122 e a unidade de quantização 106 pode implementar também técnicas dessa descrição para quantizar os valores de pixel dos pixels de escape de acordo com a codificação com base em paleta. Por exemplo, a unidade de codificação de com base em paleta 122 e/ou unidade de quantização 106 pode conservar recursos de computação (por exemplo, utilização de memória, ciclos de relógio de processador, etc.) pela quantização de valores de pixel de pixels de escape de acordo com os aspectos dessa descrição. Em alguns exemplos, a unidade de quantização 106 pode implementar as técnicas descritas aqui para os valores de pixel de escape pela substituição de operações de divisão com operações de mudança (por exemplo, operações de mudança para a direita). Mais especificamente, a unidade de quantização 106 pode determinar a operação de mudança para a direita específica com base no valor QP do pixel de escape correspondente. Por exemplo, a unidade de quantização 106 pode derivar o valor de mudança para a direita pela solução de uma função que inclui o valor QP como um parâmetro ou operando.
[0171] Por exemplo, de acordo com as técnicas existentes, a unidade de codificação com base em paleta 122 pode formar uma tabela que mapeia o valor QP de cada pixel de escape a quantidade de mudança para a direita para aplicar ao valor de pixel. A unidade de codificação com base em paleta 122 pode formar a tabela para incluir 52 entradas. Por exemplo, a tabela de mapeamento de 52 entradas pode fornecer uma quantidade de mudança para a direita correspondendo a cada possível valor QP para um determinado pixel de escape. Por sua vez, a unidade de quantização 106 pode aplicar uma operação de mapeamento para determinar a quantidade de mudança para a direita para cada pixel, com base na entrada de valor QP correspondente na tabela.
[0172] Em vários exemplos, a unidade de quantização 106 pode implementar várias técnicas dessa descrição para quantizar um pixel de escape pela determinação da quantidade de mudança para a direita para um pixel de escape com base na aplicação de uma função linear para o valor de pixel de escape para determinar a quantidade de mudança para a direita. Um exemplo de uma função linear que a unidade de quantização 106 pode aplicar para derivar a quantidade de mudança para a direita para quantização de um pixel de escape é como segue:Right_shift = a * ((QP + b)>> c) + d, onde a, b, c e d são todos parâmetros inteiros.Adicionalmente, o operador ">>" denota uma operação de mudança para a direita. Em um resultado específico de aplicação da equação acima, a unidade de quantização 106 pode determinar que a quantidade de mudança para a direita para um valor de pixel de escape é igual a três. A operação de mudança para a direita resultante pode ser expressa como Right_shift = (QP >> 3). Pela solução de uma função (por exemplo, uma função linear descrita acima), a unidade de quantização 106 pode permitir que um dispositivo de decodificação (por exemplo, decodificador de vídeo 30 e/ou vários componentes do mesmo) desquantize um pixel de escape, enquanto conserva os recursos de armazenamento que, do contrário, seriam gastos para armazenar uma tabela de 52 entradas. Dessa forma, a unidade de quantização 106 pode implementar técnicas dessa descrição para quantizar um pixel de escape enquanto mitiga as exigências de armazenamento com relação ao decodificador de vídeo 30.
[0173] As técnicas descritas nessa descrição também podem incluir técnicas para várias combinações de um ou mais dos modos de sinalizar a codificação com base em paleta, transmitir paletas, prever paletas, derivar paletas, ou transmitir mapas de codificação com base em paleta e outros elementos de sintaxe.
[0174] A figura 3 é um diagrama em bloco ilustrando um decodificador de vídeo ilustrativo 30 que é configurado para implementar as técnicas dessa descrição. A figura 3 é fornecida para fins de explicação e não de limitação das técnicas como amplamente exemplificadas e descritas nessa descrição. Para fins de explicação, essa descrição descreve o decodificador de vídeo 30 no contexto de codificação HEVC. No entanto, as técnicas dessa descrição podem ser aplicáveis a outros padrões ou métodos de codificação.
[0175] No exemplo da figura 3, o decodificador de vídeo 30 inclui uma memória de dados de vídeo 148, uma unidade de decodificação por entropia 150, uma unidade de processamento por previsão 152, uma unidade de quantização inversa 154, uma unidade de processamento por transformação inversa 156, uma unidade de reconstrução 148, uma unidade de filtro 160, e um armazenador de imagem decodificada162. A unidade de processamento por previsão 152 inclui uma unidade de compensação de movimento 164 e uma unidade de processamento por intraprevisão 166. O decodificador de vídeo 30 também inclui uma unidade de decodificação com base em paleta 165 configurada para realizar os vários aspectos das técnicas decodificação com base em paleta descritas nessa descrição. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos ou outros componentes funcionais.
[0176] A memória de dados de vídeo 148 pode armazenar dados de vídeo, tal como uma sequência de bits de vídeo codificada, a ser decodificada pelos componentes do decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 148 podem ser obtidos, por exemplo, a partir do meio legível por computador 16, por exemplo, a partir de uma fonte de vídeo local, tal como uma câmera, através de comunicação de rede com ou sem fio de dados de vídeo, ou pelo acesso ao meio de armazenamento de dados físicos. A memória de dados de vídeo 148 pode formar um armazenador de imagem codificada (CPB) que armazena os dados de vídeo codificados a partir de uma sequência de bits de vídeo codificada. O armazenador de imagem decodificada 162 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso na decodificação de dados de vídeo pelo decodificador de vídeo 30, por exemplo, nos modos de intra ou intercodificação. A memória de dados de vídeo 148 e o armazenador de imagem decodificada 162 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso randômico dinâmica (DRAM), incluindo DRAM sincronizada (SDRAM), RAM magneto resistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 148 e o armazenador de imagem decodificada 162 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 148 pode estar em chip com outros componentes do decodificador de vídeo 30, ou fora de chip com relação a esses componentes.
[0177] A memória de dados de vídeo 148, isso é, um CPB, pode receber e armazenar dados de vídeo codificados (por exemplo, unidades NAL) de uma sequência de bits. A unidade de decodificação por entropia 150 pode receber dados de vídeo codificados (por exemplo, unidades NAL) da memória de dados de vídeo 148 e pode analisar as unidades NAL para decodificar os elementos de sintaxe. A unidde de decodificação por entropia 150 pode decodificar por entropia os elementos de sintaxe codificados por entropia nas unidades LAN. A unidade de processamento de previsão 152, a unidade de quantização inversa 154, a unidade de processamento de transformação inversa 156, a unidade de reconstrução 158, e a unidade de filtro 160 podem gerar dados de vídeo decodificados com base nos elementos de sintaxe obtidos (por exemplo, extraídos) da sequência de bits.
[0178] As unidades NAL da sequência de bits pode incluir unidades NAL de fatia codificada. Como parte da decodificação da sequência de bits, a unidade de decodificação por entropia 150 pode extrair e decodificar por entropia os elementos de sintaxe das unidades 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 PPS associado com uma imagem que contém a fatia.
[0179] Em adição à decodificação de elementos de sintaxe da sequência de bits, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em uma CU não dividida. Para realizar a operação de reconstrução em uma CU não dividida, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Pela realização da operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir blocos residuais da CU.
[0180] Como parte da realização de uma operação de reconstrução em uma TU de uma CU, a unidade de quantização inversa 154 pode quantizar de forma invertida, isso é, desquantizar, os blocos de coeficientes associados com a TU. A unidade de quantização inversa 154 pode utilizar um valor QP associado com a CU da TU para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa para a unidade de quantização inversa 154 para aplicação. Isso é, a razão de compressão, isso é, a razão de número de bits utilizados para representar a sequência original e o comprimido, pode ser controlada pelo ajuste do valor de QP utilizado quando da quantização de coeficientes de transformação. A razão de compressão também pode depender do método de codificação por entropia empregado.
[0181] Depois que a unidade de quantização inversa 154 quantiza de forma inversa um bloco de coeficientes, a unidade de processamento de transformação inversa l56 pode aplicar uma ou mais transformações inversas ao bloco de coeficientes a fim de gerar um bloco residual associado com a TU. Por exemplo, a unidade de processamento de transformação inversa 156 pode aplicar uma DCT inversa, uma transformação de inteiro inversa, uma transformação Karhunen-Loeve inversa (KLT), uma transformação rotativa inversa, uma transformação direcional inversa, ou outra transformação inversa ao bloco de coeficientes.
[0182] Se uma PU for codificada utilizando-se intraprevisão, a unidade de processamento por intraprevisão 166 pode realizar a intraprevisão para gerar os blocos de previsão para a PU. A unidade de processamento por intraprevisão 166 pode utilizar um modo de intraprevisão para gerar os blocos de luminescência, Cb e Cr de previsão para a PU com base nos blocos de previsão das PUs espacialmente vizinhas. A unidade de processamento de intraprevisão 166 pode determinar o modo de intraprevisão para a PU com base em um ou mais elementos de sintaxe decodificados a partir da sequência de bits.
[0183] A unidade de processamento por previsão 152 pode construir uma primeira lista de imagens de referência (RefPicList0) e uma segunda lista de imagens de referência (RefPicList1) com base nos elementos de sintaxe extraídos da sequência de bits. Adicionalmente, se uma PU for codificada utilizando interprevisão, a unidade de decodificação por entropia 150 pode extrair a informação de movimento para a PU. A unidade de compensação de movimento 164 pode determinar, com base na informação de movimento da PU, uma ou mais regiões de referência para a PU. A unidade de compensação de movimento 164 pode gerar, com base nos blocos ilustrativos em um ou mais blocos de referência para a PU, os blocos de previsão (por exemplo, blocos de luminescência, Cb e Cr de previsão) para a PU.
[0184] A unidade de reconstrução 158 pode utilizar os blocos de transformação (por exemplo, blocos de transformação de luminescência, Cb e Cr) associados com as TUs de uma CU e os blocos de previsão (por exemplo, blocos de luminescência, Cb e Cr) das PUs da CU, isso é, os dados de intraprevisão ou os dados de interprevisão, como aplicável, para reconstruir os blocos de codificação (por exemplo, blocos de luminescência, Cb e Cr) da CU. Por exemplo, a unidade de reconstrução 158 pode adicionar amostras dos blocos de transformação (por exemplo, blocos de transformação de luminescência, Cb e Cr) para amostras correspondentes de blocos de previsão (por exemplo, blocos de luminescência Cb e Cr de previsão) para reconstruir os blocos de codificação (por exemplo, blocos de codificação de luminescência, Cb e Cr) da CU.
[0185] A unidade de filtro 160 pode realizar uma operação de desbloqueio para reduzir os artefatos de bloqueio associados com os blocos de codificação (por exemplo, blocos de codificação de luminescência, Cb e Cr) da CU no armazenador de imagem decodificada 162. O armazenador de imagem decodificada 162 pode fornecer imagens de referência para a compensação de movimento subsequente, intraprevisão e apresentação em um dispositivo de exibição, tal como o dispositivo de exibição 32 da figura 1 Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos (por exemplo, blocos de luminescência, Cb e Cr) no armazenador de imagem decodificada 162, operações de intraprevisão ou interprevisão nas PUs de outras CUs. Dessa forma, o decodificador de vídeo 30 pode extrair, a partir da sequência de bits, os níveis de coeficiente de transformação de um bloco de coeficientes significativo, quantizar de forma inversa os níveis de coeficiente de transformação, aplicar uma transformação para transformar os níveis de coeficiente para gerar um bloco de transformação, gerar, com base pelo menos em parte no bloco de transformação, um bloco de codificação e enviar o bloco de codificação para exibição.
[0186] De acordo com vários exemplos dessa descrição, o decodificador de vídeo 30 pode ser configurado para realizar a codificação com base em paleta. A unidade de decodificação com base em paleta 165, por exemplo, pode realizar a decodificação com base em paleta quando um modo de decodificação com base em paleta é selecionado, por exemplo, para uma CU ou PU. Por exemplo, a unidade de decodificação com base em paleta 165 pode ser configurada para gerar uma paleta possuindo registros indicando valores de pixel. Adicionalmente, nesse exemplo, a unidade de decodificação com base em paleta 165 pode receber informação associando pelo menos algumas posições de um bloco de dados de vídeo com entradas na paleta. Nesse exemplo, a unidade de decodificação com base em paleta 165 pode selecionar valores de pixel na paleta com base na informação. Adicionalmente, nesse exemplo, a unidade de decodificação com base me paleta 165 pode reconstruir os valões de pixel do bloco com base nos valores de pixel selecionados. Apesar de várias funções serem descritas como sendo realizadas pela unidade de decodificação com base em paleta 165, algumas ou todas as ditas funções podem ser realizadas por outras unidades de processamento ou uma combinação de diferentes unidades de processamento.
[0187] A unidade de decodificação com base em paleta 165 pode receber informação de modo de codificação de paleta e realizar as operações acima quando a informação de modo de codificação de paleta indicar que o modo de codificação de paleta aplica ao bloco. Quando a informação de modo de codificação de paleta indicar que o modo de codificação de paleta não se aplica ao bloco, ou quando outra informação de modo indicar o uso de um modo diferente, a unidade de decodificação com base em paleta 165 decodifica o bloco de dados de vídeo utilizando um modo de codificação com base em não paleta, por exemplo, tal como um modo de codificação interprevisão ou intraprevisão HEVC, quando a informação de modo de codificação de paleta indicar que o modo de codificação de paleta não se aplica ao bloco. O bloco de dados de vídeo pode ser, por exemplo, uma CU ou PU gerada de acordo com um processo de codificação HEVC. Um decodificador de vídeo 30 pode decodificar alguns blocos com modos de previsão temporal interprevista ou modos de codificação espacial intraprevisão e decodificar outros blocos com o modo de codificação com base em paleta. O modo de codificação com base em paleta pode compreender um dentre uma pluralidade de diferentes modos de codificação com base em paleta, ou pode haver um único modo de codificação com base em paleta
[0188] De acordo com uma ou mais das técnicas dessa descrição, o decodificador de vídeo 30, e especificamente a unidade de decodificação com base em paleta 165, podem realizar a decodificação de vídeo com base em paleta dos blocos de vídeo codificados por paleta. Como descrito acima, uma paleta denotada pelo decodificador de vídeo 30 pode ser explicitamente codificada e sinalizada pelo codificador de vídeo 20, reconstruída pelo decodificador de vídeo 30 com relação a um bloco codificado por paleta recebido, prevista a partir de entradas de paleta anteriores, prevista a partir de valores de pixel anteriores, ou uma combinação dos mesmos.
[0189] Como descrito acima, se um bloco de vídeo codificado por paleta satisfizer um conjunto particular de condições, o codificador de vídeo 20 (e vários componentes do mesmo, tal como unidade de codificação com base em paleta 122) pode ultrapassar a codificação e sinalização de um mapa de valores de índice de paleta para os pixels do bloco. Nos exemplos onde o codificador de vídeo 20 ultrapassa a codificação e a sinalização do mapa dos valores de índice de paleta para um bloco de cor única que é codificado por paleta, o decodificador de vídeo 30 (e componentes específicos do mesmo, tal como a unidade de decodificação com base em paleta 165) pode aplicar várias técnicas dessa descrição para reconstruir o bloco de cor única. Em alguns exemplos, a unidade de decodificação com base em paleta 165 pode realizar as operações alternadas com relação às descritas acima com relação à unidade de codificação com base em paleta 122 do codificador de vídeo 20, para determinar que o bloco codificado por paleta é um bloco de cor única. Por exemplo, a unidade de decodificação com base em paleta 165 pode determinar que a paleta para o bloco atual possui um tamanho igual a um, determinando, assim, que o bloco satisfaz à primeira condição para qualificar como um bloco de cor única. Em vários exemplos, o decodificador de vídeo 30 pode receber a paleta em uma sequência de bits de vídeo codificado a partir do codificador de vídeo 20, ou pode derivar a paleta utilizando vários outros dados incluídos na sequência de bits de vídeo codificada.
[0190] Adicionalmente, o decodificador de vídeo 30 pode determinar que o bloco não inclui quaisquer pixels de escape, determinando, assim, que o bloco satisfaz a segunda condição para qualificar como um bloco de cor única. Com base na determinação de que o tamanho da paleta para o bloco é igual a um (dessa forma, satisfazendo a primeira condição) e que o bloco não inclui qualquer pixel de escape (dessa forma, satisfazendo a segunda condição), a unidade de decodificação com base em paleta 165 pode implementar as técnicas dessa descrição para determinar que o bloco atual é um bloco de cor única. Por sua vez, a unidade de decodificação com base em paleta 165 pode reconstruir o bloco de cor única pela reconstrução de todos os pixels do bloco de cor única de acordo com a informação de cor indicada na entrada única da paleta correspondente. Dessa forma, a unidade de decodificação com base em paleta 165 pode implementar as técnicas dessa descrição para reconstruir um bloco codificado por paleta com precisão, enquanto conserva os recursos de computação e largura de banda que, do contrário, seriam necessários para se construir o bloco baseando-se em um mapa de valores de índice de paleta para todos os pixels do bloco.
[0191] Em alguns exemplos, o decodificador de vídeo 30 pode receber, na sequência de bits de vídeo codificada, um indicador que indica se o codificador de vídeo 20 ultrapassou a codificação e sinalização do mapa dos valores de índice de paleta para um ou mais pixels de um bloco codificado por paleta, de acordo com as técnicas dessa descrição. Em casos nos quais o decodificador de vídeo 30 recebe um indicador indicando que o codificador de vídeo 20 não ultrapassou a codificação e sinalização do mapa dos valores de índice de paleta para o bloco codificado por paleta, a unidade de decodificação com base em paleta 165 pode implementar as técnicas dessa descrição para determinar que o bloco atual seja codificado por paleta, e seja um bloco de cor única. Mais especificamente, se o indicador for ativado (por exemplo, configurado para um valor igual a um), a unidade de decodificação com base em paleta 165 pode determinar que o bloco codificado por paleta é um bloco de cor única. Por sua vez, a unidade de decodificação com base em paleta 165 pode implementar as técnicas dessa descrição para reconstruir todos os pixels do bloco de acordo com a informação de cor da entrada única na paleta para o bloco. Dessa forma, a unidade de decodificação com base em paleta 165 pode implementar técnicas dessa descrição para reconstruir com precisão o bloco codificado por paleta utilizando um indicador de um bit para todo o bloco, em vez de utilizar valores de índice separados (de profundidade de bit variável) para diferentes pixels, ou grupos de pixels (por exemplo, uma linha), do bloco. Dessa forma, a unidade de decodificação com base em paleta 165 pode conservar gasto de recursos de computação no decodificador de vídeo 30 na reconstrução de blocos codificados por paleta de cor única, e pode reduzir a largura de banda necessária pelo decodificador de vídeo 30 para receber os dados necessários para reconstruir os blocos codificados por paleta de cor única, enquanto mantém a precisão e qualidade da imagem.
[0192] Como descrito, o codificador de vídeo 20 (e componentes do mesmo, tal como a unidade de codificação com base em paleta 122 e/ou a unidade de quantização 106) pode implementar determinadas técnicas dessa descrição para quantizar os valores de pixel de escape de um bloco codificado por paleta com eficiência de computação melhorada. O decodificador de vídeo 30 (e vários componentes do mesmo, tal como a unidade de decodificação com base em paleta 165 e/ou a unidade de quantização inversa 154) pode realizar operações alternadas às descritas acima com relação ao codificador de vídeo 20, para desquantizar os pixels de escape de acordo com várias técnicas dessa descrição. Por exemplo, a unidade de quantização inversa 154 pode desquantizar todos os pixels de escape de um canal de cor única utilizando o mesmo valor QP, com base na informação recebida na sequência de bits de vídeo codificada a partir do codificador de vídeo 20. Mais especificamente, de acordo com os aspectos dessa descrição, a unidade de quantização inversa 154 pode desquantizar quaisquer pixels de escape (ou erros de previsão/valores residuais dos mesmos) comunicados através de um canal de cor particular, utilizando um valor QP que é determinado com base no valo QP para a desquantização de coeficiente de transformação tradicional para blocos comunicados através do canal de cor atual. Em alguns exemplos, a unidade de quantização inversa 154 pode implementar as técnicas dessa descrição para desquantizar os pixels de escape comunicados através de diferentes canais de cor utilizando valores QP diferentes, com base no valor QP utilizado para a codificação de coeficiente de transformação tradicional sendo diferente entre diferentes canais.
[0193] Dessa forma, o decodificador de vídeo 30 pode implementar as técnicas descritas aqui para definir e aplicar um único valor QP (para desquantizar) a todos os pixels de escape comunicados através de um canal de cor particular. Dessa forma, o decodificador de vídeo 30 pode aplicar aspectos dessa descrição para definir um valor QP para pixels de escape detectados através da codificação com base em paleta, onde as técnicas de codificação com base em paleta existentes não definiam um valor QP para os pixels de escape.
[0194] Em alguns exemplos, os componentes do decodificador de vídeo 30, tal como a unidade de quantização inversa 154, podem implementar as técnicas dessa descrição para realizar as operações alternadas às descritas acima com relação ao codificador de vídeo 20 (e/ou componentes do mesmo, tal como unidade de quantização 106), para desquantizar um valor de pixel de escape quantizado. Por exemplo, a unidade de quantização inversa 154 pode implementar as técnicas dessa descrição para calcular uma quantidade de mudança (por exemplo, para uma operação de mudança para a esquerda correspondente) com base em um valor QP na desquantização do valor de pixel de escape quantizado correspondente. Dessa forma, a unidade de quantização inversa 154 pode aplicar também os aspectos dessa descrição para conservar os recursos de computação, tal como utilização de armazenador, pela alavancagem de uma função em vez de armazenamento em uma tabela de mapeamento de 52 entradas.
[0195] A figura 4 é um fluxograma ilustrando um processo ilustrativo 180 pelo qual um dispositivo de decodificação de vídeo pode implementar as técnicas dessa descrição para ultrapassar a decodificação dos valores de índice para pixels de um bloco codificado por paleta, com base em um conjunto particular de condições. Enquanto o processo 180 pode ser realizado por uma variedade de dispositivos de acordo com os aspectos dessa descrição, o processo 180 é descrito aqui com relação ao decodificador de vídeo 30 das figuras 1 e 3, para fins de facilitar a descrição. O processo 180 pode começar quando o decodificador de vídeo 30 determinar um número de entradas incluídas em uma paleta utilizada para representar os valores de pixel de um bloco de dados de vídeo a ser decodificado (182). Adicionalmente, o decodificador de vídeo 30 pode determinar se o bloco de dados de vídeo inclui pelo menos um pixel de escape que não está associado a qualquer uma das entradas da paleta (184). Por exemplo, se a informação de cor de um pixel de bloco não mapear para qualquer entrada da paleta, o decodificador de vídeo 30 pode identificar tal pixel como um pixel de escape. Em vários exemplos, o decodificador de vídeo 30 pode identificar o pixel de escape utilizando um indicador sinalizado pelo codificador de vídeo 20 ou por um valor de índice (por exemplo, "outro índice" descrito acima) sinalizado pelo codificador de vídeo 20.
[0196] Por sua vez, o decodificador de vídeo 30 pode, em resposta à determinação de que o número de entradas incluídas na paleta é igual a um e que o bloco de dados de vídeo não inclui pelo menos um pixel de escape, ultrapassar a decodificação de valores de índice associados com a paleta para os valores de pixel do bloco de dados de vídeo (186). Como um exemplo, o decodificador de vídeo 30 pode receber, como parte de uma sequência de bits de vídeo codificada, os dados de vídeo codificados, por exemplo, elementos de sintaxe e/ou indicadores, associados com o bloco de dados de vídeo, onde os dados de vídeo codificados associados com o bloco não incluem valões de índice associados com a paleta para os valores de pixel do bloco. Adicionalmente, o decodificador de vídeo 30 pode determinar os valões de pixel do bloco de dados de vídeo como sendo igual a uma entrada incluída na paleta (188). Por exemplo, o decodificador de vídeo 30 pode reconstruir o bloco pela designação para todos os pixels do bloco a informação de cor indicada pela entrada única da paleta.
[0197] Em um exemplo, o decodificador de vídeo 30 pode receber adicionalmente, como parte de uma sequência de vídeo codificada, um indicador que indica se os valores de índice são codificados para os dados de vídeo de bloco. Em um exemplo, para determinar o número de entradas incluídas na paleta, o decodificador de vídeo 30 pode receber, como parte de uma sequência de bits de vídeo codificada, um indicador que indica se o número de entradas na paleta é igual a um. Em um exemplo, para se determinar se o bloco de dados de vídeo inclui pelo menos um pixel de escape, o decodificador de vídeo 30 pode receber, como parte de uma sequência de bits de vídeo codificada, um indicador que indica se o bloco de dados de vídeo inclui pelo menos um pixel de escape. Em um exemplo, o decodificador de vídeo 30 pode receber, como parte de uma sequência de bits de vídeo codificada, um ou mais elementos de sintaxe associados com a paleta. Nesse exemplo, o decodificador de vídeo 30 pode decodificar um ou mais elementos de sintaxe associados com a paleta.
[0198] A figura 5 é um fluxograma ilustrando um processo ilustrativo 200 pelo qual um dispositivo de codificação de vídeo pode implementar as técnicas dessa descrição para ultrapassar a codificação de valores de índice para pixels de um bloco codificado por paleta, com base em um conjunto particular de condições. Enquanto o processo 200 pode ser realizado por uma variedade de dispositivos de acordo com os aspectos dessa descrição, o processo 200 é descrito aqui com relação ao codificador de vídeo 20 das figuras 1 e 2, para fins de facilidade da descrição. O processo 200 pode começar quando o codificador de vídeo 20 determinar um número de entradas incluídas em uma paleta utilizada para representar os valores de pixel de um bloco de dados de vídeo a ser codificado (202). Adicionalmente, o codificador de vídeo 20 pode determinar se o bloco de dados de vídeo inclui pelo menos um pixel de escape que não está associado com qualquer uma das entradas na paleta (204).
[0199] Por sua vez, o codificador de vídeo 20 pode, em resposta à determinação de que o número de entradas incluídas na paleta é igual a um e de que o bloco de dados de vídeo não inclui pelo menos um pixel de escape, determinar que os valores de pixel do bloco são iguais a uma entrada da paleta, e ultrapassar a codificação dos valores de índice associados com a paleta para os valores de pixel do bloco de dados de vídeo (206). Por exemplo, o dispositivo de codificação de vídeo 20 pode codificar dados, por exemplo, elementos de sintaxe e/ou indicadores, para o bloco sem codificação de valores de índice, mapeando os valores de pixel do bloco para entradas na paleta correspondente ao bloco. Adicionalmente, o dispositivo de codificação de vídeo 20 pode codificar um ou mais elementos de sintaxe associados com o bloco de dados de vídeo (208).
[0200] Em um exemplo, para codificar os um ou mais elementos de sintaxe, o codificador de vídeo 20 pode codificar, como parte de uma sequência de bits de vídeo codificada, um indicador que indica se os valores de índice são codificados para os valores de pixel do bloco de dados de vídeo. Em um exemplo, para se codificar um ou mais elementos de sintaxe, o codificador de vídeo 20 pode codificar, com parte de uma sequência de bits de vídeo codificada, um indicador que indica se o tamanho da paleta é igual a aum. Em um exemplo, para codificar um ou mais elementos de sintaxe, o codificador de vídeo 20 pode codificar, como parte de uma sequência de bits de vídeo codificada, um indicador que indica se o bloco de dados de vídeo inclui pelo menos um pixel de escape. Em um exemplo, o codificador de vídeo 20 pode codificar um ou mais elementos de sintaxe associados com a paleta. Nesse exemplo, o codificador de vídeo 20 pode sinalizar, como parte de uma sequência de bits de vídeo codificada, um ou mais elementos de sintaxe associados com a paleta.
[0201] A figura 6 é um fluxograma ilustrando um processo ilustrativo 220 pelo qual um dispositivo de decodificação de vídeo pode implementar as técnicas dessa descrição para desquantizar um ou mais pixels de escape de um bloco de dados de vídeo codificado por paleta. Enquanto o processo 220 pode ser realizado por uma variedade de dispositivos de acordo com os aspectos dessa descrição, o processo 220 é descrito aqui com relação ao decodificador de vídeo 30 das figuras 1 e 3, para fins de facilidade de descrição. O processo 220 pode começar quando o decodificador de vídeo 30 determinar uma paleta utilizada para representar os valores de pixel de um bloco de dados de vídeo a ser decodificado (222). Adicionalmente, o decodificador de vídeo 30 pode identificar, no bloco de dados de vídeo, um ou mais pixels de escape que não estão associados a qualquer uma ou mais entradas na paleta (224).
[0202] Por sua vez, o decodificador de vídeo 30 pode identificar um valor de parâmetro de quantização único (QP) para todos os um ou mais pixels de escape do bloco para um canal de cor determinado com base em um valor QP utilizado para transformar a codificação de coeficiente em codificação com base em não paleta (226). Por exemplo, o decodificador de vídeo 30 pode determinar que o valor QP singular é igual a um valor QP utilizado para a decodificação de coeficiente tradicional de um canal de cor associado com o bloco. Adicionalmente, um decodificador de vídeo 30 pode desquantizar cada um dos um ou mais pixels de escape utilizando o valor QP singular identificado (228). Por sua vez, o decodificador de vídeo 30 pode determinar os valores de pixel para o bloco de dados de vídeo com base nos pixels de escape desquantizados e valores de índice recebidos para um ou mais pixels no bloco de dados de vídeo que são associados com uma ou mais entradas na paleta (230).
[0203] Em um exemplo, quaisquer duas entradas da paleta variam por pelo menos um limite de erro de paleta. Em um exemplo, o limite de erro de paleta é diretamente proporcional a um valor QP de paleta associado com o bloco. Em um exemplo, para identificar um ou mais pixels de escape, o decodificador de vídeo 30 pode receber, em uma sequência de bits de vídeo codificada, um indicador de um bit associado com cada um dos um ou mais pixels de escape, e determinar, com base em um valor de cada indicador de um bit recebido, que cada um dos um ou mais pixels de escape não está associado com qualquer uma das entradas da paleta.Em um exemplo, para se determinar que cada um dos um ou mais pixels de escape não está associado com quaisquer entradas da paleta, o decodificador de vídeo 30 pode determinar que cada um dos um ou mais pixels de escape não está associado com qualquer uma das entradas da paleta com base no valor de cada indicador de um bit recebido e sem decodificação de um outro valor de índice predefinido associado com os pixels de escape.
[0204] A figura 7 é um fluxograma ilustrando um processo ilustrativo 240 pelo qual um dispositivo de codificação de vídeo pode implementar técnicas dessa descrição para quantizar um ou mais pixels de escape de um bloco codificado por paleta dos dados de vídeo. Enquanto o processo 240 pode ser realizado por uma variedade de dispositivos de acordo com os aspectos dessa descrição, o processo 240 é descrito aqui com relação ao codificador de vídeo 20 das figuras 1 e 2, para fins de facilitar a descrição. O processo 200 pode começar quando o codificador de vídeo 20 determinar uma paleta usada para representar os valores de pixel de um bloco de dados de vídeo a ser codificado (242). Adicionalmente, o codificador de vídeo 20 pode identificar, no bloco de dados de vídeo, um ou mais pixels de escape que não estão associados com qualquer uma dentre a uma ou mais entradas na paleta (244).
[0205] Por sua vez, o codificador de vídeo 20 pode identificar um valor de parâmetro de quantização singular (QP) para todos o um ou mais pixels de escape do bloco (246). Por exemplo, o codificador de vídeo 20 pode determinar que o valor QP singular seja igual a um valor QP utilizado para a codificação de coeficiente tradicional de um canal de cor associado com o bloco. Adicionalmente, o codificador de vídeo 20 pode quantizar cada um dos um ou mais pixels de escape utilizando o valor QP singular identificado (228).
[0206] Em um exemplo, para se identificar o valor QP singular, o codificador de vídeo 20 pode determinar que o valor QP singular seja igual a um valor QP utilizado para a codificação de coeficiente tradicional de um canal de cor associado com o bloco. Em um exemplo, o codificador de vídeo 20 pode determinar que um limite de erro de paleta da paleta seja diretamente proporcional a um valor QP associado com o bloco, onde quaisquer duas entradas da paleta variam por pelo menos um limite de erro de paleta. Em um exemplo, para determinar o limite de erro de paleta, o codificador de vídeo 20 pode identificar o limite de erro de paleta utilizando uma tabela que mapeia o limite de erro de paleta para o valor QP associado com o bloco. Em um exemplo, o codificador de vídeo 20 pode codificar um indicador de um bit associado com cada um dentre um ou mais pixels de escape sem codificar um outro valor de índice predefinido associado com os pixels de escape, onde um valor de cada indicador de um bit indica que um pixel respectivo dentre um ou mais pixels de escape não está associado com qualquer uma das entradas da paleta. Em um exemplo, para se quantizar cada um dos um ou mais pixels de escape utilizando o valor QP singular identificado, o codificador de vídeo 20 pode solucionar uma função que é baseada no valor QP singular identificado. Em um exemplo desses, para solucionar a função, o codificador de vídeo 20 pode realizar uma operação de mudança para a direita que é baseada no valor QP singular identificado.
[0207] Em alguns exemplos, as técnicas para codificação com base em paleta de dados de vídeo podem ser utilizadas com uma ou mais outras técnicas de codificação, tal como as técnicas para codificação de interprevisão ou intraprevisão. Por exemplo, como descrito em maiores detalhes abaixo, um codificador ou decodificador, ou codificador-decodificador combinado (codec), pode ser configurado para realizar a codificação interprevisão e a codificação intraprevisão, além de codificação com base em paleta.
[0208] Deve-se reconhecer que dependendo do exemplo, determinados atos ou eventos de qualquer uma das técnicas descritas aqui podem ser realizados em uma sequência diferente, podem ser adicionados, misturados ou deixados de fora completamente (por exemplo, nem todos os atos ou eventos descritos são necessários para se praticar as técnicas). Ademais, em determinados exemplos, os atos ou eventos podem ser realizados simultaneamente, por exemplo, através de processamento de múltiplas sequências, processamento interrompido, ou múltiplos processadores, em vez de sequencialmente. Adicionalmente, enquanto determinados aspectos dessa descrição são descritos como sendo realizados por um único módulo ou unidade para fins de clareza, deve-se compreender que as técnicas dessa descrição podem ser realizadas por uma combinação de unidades ou módulos associados com um codificador de vídeo.
[0209] Determinados aspectos dessa descrição foram descritos com relação ao padrão HEVC em desenvolvimento para fins de ilustração. No entanto, as técnicas descritas nessa descrição podem ser uteis para outros processos de codificação de vídeo, incluindo outros processos de codificação de vídeo padrão ou proprietário ainda não desenvolvidos.
[0210] As técnicas descritas acima podem ser realizadas pelo codificador de vídeo 20 (figuras 1 e 2) e/ou decodificador de vídeo 30 (figuras 1 e 3), ambos os quais podem ser geralmente referidos como um codificador de vídeo. Da mesma forma, a codificação de vídeo pode se referir à codificação de vídeo ou decodificação de vídeo, como aplicável.
[0211] Enquanto as combinações em particular de vários aspectos das técnicas são descritas acima, essas combinações são fornecidas meramente para ilustrar os exemplos das técnicas descritas nessa descrição. De acordo, as técnicas dessa descrição não devem ser limitadas a essas combinações ilustrativas e podem englobar qualquer combinação concebível de vários aspectos das técnicas descritas nessa descrição.
[0212] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento com base em hardware. O meio legível por computador pode incluir meio de armazenamento legível por computador, que corresponde a um meio tangível tal como um meio de armazenamento de dados, ou meio de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para o outro, por exemplo, de acordo com um protocolo de comunicação. Dessa forma, o meio legível por computador geralmente pode corresponder a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação tal como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que possa ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa descrição. Um produto de programa de computador pode incluir um meio legível por computador.
[0213] Por meio de exemplo, e não de limitação, tal meio de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente chamada de meio legível por computador. Por exemplo, se instruções forem transmitidas a partir de um sítio da rede, servidor ou outra fonte remota utilizando cabo coaxial, cabo de fibra ótica, par torcido, linha de assinante digital (DSL), ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas, então o cabo coaxial, o cabo de fibra ótica, o par torcido, DSL ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas são incluídos na definição de meio. Deve-se compreender, no entanto, que o meio de armazenamento legível por computador e o meio de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outra mídia transiente, mas são, em vez disso, direcionados a meio de armazenamento tangível não transiente. Disquete e disco, como utilizados aqui, incluem disco compacto (CD), disco a laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu- ray, onde disquetes normalmente reproduzem os dados magneticamente, enquanto discos reproduzem os dados oticamente com lasers. Combinações do acima exposto também devem ser incluídas no escopo de meio legível por computador.
[0214] Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, circuitos integrados específicos de aplicativo (ASICs), conjuntos de porta programáveis em campo (FPGAs), ou outro conjunto de circuitos lógicos integrados ou discretos equivalentes. De acordo, o termo "processador", como utilizado aqui pode se referir a qualquer estrutura acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui. Adicionalmente, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro de módulos de hardware e/ou software dedicados configurados para codificar e decodificar, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0215] As técnicas dessa descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluinod um aparelho sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nessa descrição para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas descritas, mas não necessariamente exigir a realização por diferentes unidades de hardware. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequado.
[0216] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (11)

1. Método (200) para decodificar dados de vídeo, caracterizado por compreender: determinar (222) uma paleta utilizada para representar valores de pixel de um bloco de dados de vídeo a ser decodificado, em que quaisquer duas entradas da paleta variam em pelo menos um limite de erro de paleta de modo que, se duas entradas possíveis estão dentro do limite de erro de paleta, uma das entradas é usada para representar as duas entradas, e em que o limite de erro de paleta é diretamente proporcional a um valor de parâmetro de quantização de paleta associado ao bloco; identificar (224), no bloco de dados de vídeo, um ou mais pixels de escape que não são associados a qualquer uma dentre a uma ou mais entradas na paleta; identificar (226) um valor de parâmetro de quantização singular para todos dentre o um ou mais pixels de escape do bloco para um determinado canal de cor com base em um valor de parâmetro de quantização utilizado para codificação de coeficiente de transformação em codificação não baseada em paleta; desquantizar (228) todos os pixels de escape do canal de cor determinado com o uso do valor de parâmetro de quantização singular identificado; e determinar (230) os valores de pixel do bloco de dados de vídeo com base nos pixels de escape desquantizados e valores de índice recebidos para um ou mais pixels no bloco de dados de vídeo que são associados à uma ou mais entradas na paleta.
2. Método (240) para codificar dados de vídeo, caracterizado por compreender: determinar (242) uma paleta utilizada para representar os valores de pixel de um bloco de dados de vídeo a ser codificado; determinar que um limite de erro de paleta da paleta é diretamente proporcional a um valor de parâmetro de quantização de paleta associada ao bloco, em que o limite de erro de paleta é de modo que, se duas entradas possíveis estão dentro do limite de erro de paleta, uma das entradas é usada para representar as duas entradas, e em que quaisquer duas entradas da paleta variam em pelo menos um limite de erro de paleta; identificar (224), no bloco de dados de vídeo, um ou mais pixels de escape que não estão associados a qualquer uma dentre a uma ou mais entradas na paleta; identificar (246) um valor de parâmetro de quantização singular para todos dentre o um ou mais pixels de escape do bloco para um determinado canal de cor com base em um valor de parâmetro de quantização utilizado para codificação de coeficiente de transformação em codificação não baseada em paleta; quantizar (248) todos os pixels de escape do canal de cor determinado com o uso do valor de parâmetro de quantização singular identificado; e codificar (250) os valores de pixel do bloco de dados de vídeo que incluem os pixels de escape quantizados e os valores de índice para um ou mais pixels no bloco de dados de vídeo que são associados a uma ou mais entradas na paleta.
3. Método, de acordo com a reivindicação 2, caracterizado por identificar o valor de parâmetro de quantização singular compreender: determinar que o valor de parâmetro de quantização singular é igual a um valor de parâmetro de quantização utilizado para a codificação de coeficiente tradicional de um canal de cor associado ao bloco.
4. Método, de acordo com a reivindicação 3, caracterizado por determinar o limite de erro de paleta compreender: identificar o limite de erro de paleta com o uso de uma tabela que mapeia o limite de erro de paleta para o valor de parâmetro de quantização associado ao bloco.
5. Método, de acordo com a reivindicação 2, caracterizado por quantizar cada um dentre o um ou mais pixels de escape com o uso do valor de parâmetro de quantização singular identificado compreender solucionar uma função que tem como base o valor de parâmetro de quantização singular identificado.
6. Método, de acordo com a reivindicação 5, caracterizado por solucionar a função compreender realizar uma operação de deslocamento para direita que tem como base o valor de parâmetro de quantização singular identificado.
7. Dispositivo para codificar dados de vídeo, caracterizado por compreender: uma memória configurada para armazenar dados de vídeo; e um ou mais processadores em comunicação com a memória e configurados para: determinar uma paleta usada para representar os valores de pixel de um bloco de dados de vídeo a ser codificado, em que quaisquer duas entradas da paleta variam em pelo menos um limite de erro de paleta de modo que, se duas entradas possíveis estão dentro do limite de erro de paleta, uma das entradas é usada para representar as duas entradas, e em que o limite de erro de paleta é diretamente proporcional a um valor de parâmetro de quantização de paleta associado ao bloco; identificar, no bloco de dados de vídeo, um ou mais pixels de escape que não são associados a qualquer uma dentre a uma ou mais entradas na paleta; identificar um valor de parâmetro de quantização singular para todos dentre o um ou mais pixels de escape do bloco para um determinado canal de cor com base em um valor de parâmetro de quantização utilizado para codificação de coeficiente de transformação em codificação não baseada em paleta; aplicar o valor de parâmetro de quantização singular identificado a todos os pixels de escape do canal de cor determinado; e determinar os valores de pixel do bloco de dados de vídeo com base nos pixels de escape e valores de índice recebidos para um ou mais dos pixels no bloco de dados de vídeo que são associados a uma ou mais entradas.
8. Dispositivo, de acordo com a reivindicação 7, caracterizado por o dispositivo compreender um dispositivo de decodificação de vídeo, e em que, para se aplicar o valor de parâmetro de quantização singular identificado a cada um dentre os um ou mais pixels de escape, o um ou mais processadores são configurados para desquantizar cada um dentre o um ou mais pixels de escape com o uso do valor de parâmetro de quantização singular identificado.
9. Dispositivo, de acordo com a reivindicação 7, caracterizado por, para aplicar o valor de parâmetro de quantização singular identificado a cada um dentre o um ou mais pixels de escape, o um ou mais processadores são configurados para solucionar uma função que compreende realizar uma operação de deslocamento para direita com base no valor de parâmetro de quantização singular identificado na função.
10. Dispositivo, de acordo com a reivindicação 7, caracterizado por o dispositivo compreender um dispositivo para codificar dados de vídeo, e em que o um ou mais processadores são configurados adicionalmente para:identificar o limite de erro de paleta com o uso de uma tabela que mapeia o limite de erro de paleta para o valor de parâmetro de quantização associado ao bloco.
11. Memória legível por computador, caracterizada por possuir instruções nela armazenadas que, quando executadas, fazem com que um computador realize o método conforme definido em qualquer uma das reivindicações 1 a 6.
BR112016015546-7A 2014-01-02 2014-12-31 Codificação de índice de cor para codificação de vídeo com base em paleta BR112016015546B1 (pt)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201461923163P 2014-01-02 2014-01-02
US61/923,163 2014-01-02
US201461924141P 2014-01-06 2014-01-06
US61/924,141 2014-01-06
US201461969759P 2014-03-24 2014-03-24
US61/969,759 2014-03-24
US14/586,820 US10362333B2 (en) 2014-01-02 2014-12-30 Color index coding for palette-based video coding
US14/586,820 2014-12-30
PCT/US2014/072999 WO2015103392A2 (en) 2014-01-02 2014-12-31 Color index coding for palette-based video coding

Publications (2)

Publication Number Publication Date
BR112016015546A2 BR112016015546A2 (pt) 2017-08-08
BR112016015546B1 true BR112016015546B1 (pt) 2023-03-28

Family

ID=53483429

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112016015432A BR112016015432A2 (pt) 2014-01-02 2014-12-31 Codificação de índice de cores para codificação de vídeo baseada em paleta
BR112016015546-7A BR112016015546B1 (pt) 2014-01-02 2014-12-31 Codificação de índice de cor para codificação de vídeo com base em paleta

Family Applications Before (1)

Application Number Title Priority Date Filing Date
BR112016015432A BR112016015432A2 (pt) 2014-01-02 2014-12-31 Codificação de índice de cores para codificação de vídeo baseada em paleta

Country Status (10)

Country Link
US (2) US10362333B2 (pt)
EP (2) EP3090554A1 (pt)
JP (2) JP6896424B2 (pt)
KR (2) KR101977450B1 (pt)
CN (2) CN106068648B (pt)
BR (2) BR112016015432A2 (pt)
CA (1) CA2930174C (pt)
ES (1) ES2702909T3 (pt)
HU (1) HUE040502T2 (pt)
WO (2) WO2015103392A2 (pt)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015054812A1 (en) * 2013-10-14 2015-04-23 Microsoft Technology Licensing, Llc Features of base color index map mode for video and image coding and decoding
US10362333B2 (en) * 2014-01-02 2019-07-23 Qualcomm Incorporated Color index coding for palette-based video coding
US9699468B2 (en) * 2014-02-10 2017-07-04 Microsoft Technology Licensing, Llc Adaptive screen and video coding scheme
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
US9560364B2 (en) * 2014-02-25 2017-01-31 Fingram Co., Ltd. Encoding image data with quantizing and inverse-quantizing pixel values
EP4087247A1 (en) 2014-02-26 2022-11-09 Dolby Laboratories Licensing Corp. Luminance based coding tools for video compression
KR102494913B1 (ko) 2014-03-14 2023-02-06 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 팔레트 코딩
EP3140987A4 (en) * 2014-05-09 2017-12-06 Nokia Technologies Oy Method and technical equipment for video encoding and decoding using palette coding
US10750198B2 (en) 2014-05-22 2020-08-18 Qualcomm Incorporated Maximum palette parameters in palette-based video coding
US10038915B2 (en) * 2014-05-22 2018-07-31 Qualcomm Incorporated Escape sample coding in palette-based video coding
US10264285B2 (en) 2014-05-22 2019-04-16 Qualcomm Incorporated Coding runs in palette-based video coding
WO2015176685A1 (en) * 2014-05-23 2015-11-26 Mediatek Inc. Methods for palette size signaling and conditional palette escape flag signaling
WO2015180052A1 (zh) * 2014-05-28 2015-12-03 北京大学深圳研究生院 一种基于字典库的视频编解码方法及装置
CN105323583B (zh) * 2014-06-13 2019-11-15 财团法人工业技术研究院 编码方法、解码方法、编解码系统、编码器与解码器
KR102069474B1 (ko) * 2014-07-07 2020-01-22 에이치에프아이 이노베이션 인크. 인덱스 맵 부호화의 예측자로서 이스케이프 픽셀을 취급하는 방법
AU2014408228B2 (en) 2014-09-30 2019-09-19 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
EP3007423A1 (en) 2014-10-06 2016-04-13 Industrial Technology Research Institute Method of color palette coding applicable to electronic device and electronic device using the same
EP3251352A1 (en) * 2015-01-29 2017-12-06 VID SCALE, Inc. Escape color coding for palette coding mode
US9729885B2 (en) * 2015-02-11 2017-08-08 Futurewei Technologies, Inc. Apparatus and method for compressing color index map
US10659783B2 (en) 2015-06-09 2020-05-19 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
GB2539486B (en) * 2015-06-18 2019-07-31 Gurulogic Microsystems Oy Encoder, decoder and method employing palette compression
US10097842B2 (en) * 2015-09-18 2018-10-09 Qualcomm Incorporated Restriction of escape pixel signaled values in palette mode video coding
WO2018018486A1 (en) 2016-07-28 2018-02-01 Mediatek Inc. Methods of reference quantization parameter derivation for signaling of quantization parameter in quad-tree plus binary tree structure
US10375398B2 (en) 2017-03-24 2019-08-06 Google Llc Lightfield compression for per-pixel, on-demand access by a graphics processing unit
EP3673657A1 (en) 2017-08-22 2020-07-01 Panasonic Intellectual Property Corporation of America Image encoder, image decoder, image encoding method, and image decoding method
TWI709330B (zh) * 2018-03-06 2020-11-01 聯發科技股份有限公司 調色板解碼的裝置和方法
DE102018112215B3 (de) * 2018-04-30 2019-07-25 Basler Ag Quantisiererbestimmung, computerlesbares Medium und Vorrichtung, die mindestens zwei Quantisierer implementiert
WO2020006707A1 (en) * 2018-07-04 2020-01-09 Alibaba Group Holding Limited Palette-based residual coding for video compression system
BR112021000379A2 (pt) * 2019-04-26 2021-04-13 Huawei Technologies Co., Ltd. Método e aparelho para sinalização de função de mapeamento de parâmetro de quantização de croma
WO2021040488A1 (ko) * 2019-08-29 2021-03-04 엘지전자 주식회사 팔레트 모드에서의 이스케이프 이진화 기반 영상 또는 비디오 코딩
CN114342392A (zh) * 2019-08-30 2022-04-12 株式会社Kt 视频信号处理方法和装置
WO2021055114A1 (en) * 2019-09-20 2021-03-25 Alibaba Group Holding Limited Method and system for signaling chroma quantization parameter offset
US11076151B2 (en) 2019-09-30 2021-07-27 Ati Technologies Ulc Hierarchical histogram calculation with application to palette table derivation
WO2021072364A1 (en) * 2019-10-10 2021-04-15 Beijing Dajia Internet Information Technology Co., Ltd. Methods and apparatus of video coding using palette mode
CN115714866A (zh) * 2019-11-01 2023-02-24 北京达佳互联信息技术有限公司 残差和系数编解码的方法和装置
KR20220101729A (ko) 2019-12-03 2022-07-19 알리바바 그룹 홀딩 리미티드 팔레트 모드를 사용하기 위한 비디오 처리 방법 및 장치
WO2023182697A1 (ko) * 2022-03-22 2023-09-28 현대자동차주식회사 인접 정보 기반 팔레트 모드를 이용하는 비디오 코딩을 위한 방법 및 장치
CN117834892A (zh) * 2022-09-29 2024-04-05 腾讯科技(深圳)有限公司 视频编码方法和装置、计算设备、存储介质及程序产品

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0674448B1 (en) 1994-03-25 2002-01-09 Nec Corporation Video image reproduction with high speed
JPH1188700A (ja) * 1997-09-04 1999-03-30 Hitachi Ltd カラー画像信号の符号化方法、復号化方法およびカラー画像処理装置
DE19817720A1 (de) 1998-04-21 1999-10-28 Heidelberger Druckmasch Ag Verfahren zur Bilddatenkomprimierung für Zwei-Farben-Bilder
US6411730B1 (en) 1999-01-15 2002-06-25 Adobe Systems Incorporated Histogram for generating a palette of colors
US7050492B1 (en) 1999-07-12 2006-05-23 Pixelon.Com, Inc. Matching of a reduced spectrum lighting source with video encoding program variables for increased data compression ratios
US6466274B1 (en) 1999-11-08 2002-10-15 Corporate Media Partners System and method for color palette translation
US6801220B2 (en) 2001-01-26 2004-10-05 International Business Machines Corporation Method and apparatus for adjusting subpixel intensity values based upon luminance characteristics of the subpixels for improved viewing angle characteristics of liquid crystal displays
US7136533B2 (en) 2002-12-19 2006-11-14 Hewlett-Packard Development Company, L.P. Color image compression with adaptive prediction
WO2005091722A2 (en) 2004-03-26 2005-10-06 Lg Electronics Inc. Recording medium and method and apparatus for reproducing text subtitle stream recorded on the recording medium
JP2010045589A (ja) * 2008-08-12 2010-02-25 Ricoh Co Ltd 画像処理装置、画像処理方法およびプログラム
US8259816B2 (en) 2009-03-12 2012-09-04 MIST Innovations, Inc. System and method for streaming video to a mobile device
US20110119716A1 (en) 2009-03-12 2011-05-19 Mist Technology Holdings, Inc. System and Method for Video Distribution Management with Mobile Services
JP2011166213A (ja) * 2010-02-04 2011-08-25 Canon Inc 画像処理装置
JP5614122B2 (ja) 2010-06-21 2014-10-29 富士ゼロックス株式会社 画像データ復号装置
US8976861B2 (en) 2010-12-03 2015-03-10 Qualcomm Incorporated Separately coding the position of a last significant coefficient of a video block in video coding
US20120163456A1 (en) 2010-12-22 2012-06-28 Qualcomm Incorporated Using a most probable scanning order to efficiently code scanning order information for a video block in video coding
AU2012209231B2 (en) 2011-01-28 2016-09-22 Eye IO, LLC Color conversion based on an hvs model
US8582876B2 (en) 2011-11-15 2013-11-12 Microsoft Corporation Hybrid codec for compound image compression
US10972742B2 (en) 2013-12-19 2021-04-06 Canon Kabushiki Kaisha Encoding process using a palette mode
US10362333B2 (en) * 2014-01-02 2019-07-23 Qualcomm Incorporated Color index coding for palette-based video coding
US9699468B2 (en) * 2014-02-10 2017-07-04 Microsoft Technology Licensing, Llc Adaptive screen and video coding scheme
US10506243B2 (en) 2014-03-06 2019-12-10 Samsung Electronics Co., Ltd. Image decoding method and device therefor, and image encoding method and device therefor
US10091512B2 (en) * 2014-05-23 2018-10-02 Futurewei Technologies, Inc. Advanced screen content coding with improved palette table and index map coding methods
JP6532222B2 (ja) * 2014-11-28 2019-06-19 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム

Also Published As

Publication number Publication date
BR112016015546A2 (pt) 2017-08-08
ES2702909T3 (es) 2019-03-06
JP2017507537A (ja) 2017-03-16
HUE040502T2 (hu) 2019-03-28
KR20160102071A (ko) 2016-08-26
CN105874796B (zh) 2018-10-02
CA2930174A1 (en) 2015-07-09
US10362333B2 (en) 2019-07-23
US9872040B2 (en) 2018-01-16
US20150189302A1 (en) 2015-07-02
CA2930174C (en) 2020-02-25
US20150189319A1 (en) 2015-07-02
KR102305988B1 (ko) 2021-09-27
WO2015103392A2 (en) 2015-07-09
WO2015103392A3 (en) 2015-09-03
WO2015103390A1 (en) 2015-07-09
JP2017501641A (ja) 2017-01-12
BR112016015432A2 (pt) 2017-08-08
EP3090552A2 (en) 2016-11-09
KR101977450B1 (ko) 2019-05-10
EP3090552B1 (en) 2018-09-26
JP6556732B2 (ja) 2019-08-07
CN106068648B (zh) 2019-01-11
JP6896424B2 (ja) 2021-06-30
KR20160102072A (ko) 2016-08-26
CN105874796A (zh) 2016-08-17
CN106068648A (zh) 2016-11-02
EP3090554A1 (en) 2016-11-09

Similar Documents

Publication Publication Date Title
BR112016015546B1 (pt) Codificação de índice de cor para codificação de vídeo com base em paleta
CN108028940B (zh) 调色板模式视频译码中转义像素信号值的限制
ES2767103T3 (es) Determinación de valores de parámetros de cuantificación (QP) y de valores QP delta para bloques codificados por paleta en la codificación de vídeo
ES2874552T3 (es) Diseño de codificación y descodificación en modo de paleta
ES2807184T3 (es) Determinación de aplicación de filtrado de reducción del efecto bloque a bloques codificados por paleta en la codificación de vídeo
ES2770664T3 (es) Restricción en el tamaño de bloque de paleta en la codificación de vídeo
BR112017020102B1 (pt) Processo de amostragem descendente para modo de previsão de modelo linear
BR112016022085B1 (pt) Determinação de tamanho de paleta, entradas de paleta e filtragem de blocos codificados por paleta em codificação de vídeo
CA2971880A1 (en) Enhanced multiple transforms for prediction residual
BR112016027426B1 (pt) Codificação de valores de curso com base em índice de paleta em codificação de vídeo baseada em paleta
BR112014024920B1 (pt) Codificação de indicador de bloco codificado
BR112016027428B1 (pt) Inicialização de paleta de preditor em codificação de vídeo com base em paleta
BR112016000465B1 (pt) Previsão de paleta em codificação de vídeo com base em paleta
BR112016027384B1 (pt) Codificação de amostra de escape em codificação de vídeo com base 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
BR112015015802B1 (pt) Mensagens sei não aninhadas em codificação de vídeo
JP2018507623A (ja) パレットコーディングのためのエスケープピクセルのコーディング
EP3198873A1 (en) Parsing dependency reduction for palette index coding
US9961351B2 (en) Palette mode coding
ES2749747T3 (es) Sistemas y procedimientos para definir por separado las dependencias para la predicción entre capas basada en subcapas
BR112017017139B1 (pt) Método e aparelho para codificar dados de vídeo e memória legível por computador
BR112017016012B1 (pt) Múltiplas transformadas melhoradas para residual de predição
BR112017016371B1 (pt) Agrupamento de índice de paleta para codificação cabac de banda larga

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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