BR112016027265B1 - Execuções de codificação em codificação de vídeo com base em paleta - Google Patents

Execuções de codificação em codificação de vídeo com base em paleta Download PDF

Info

Publication number
BR112016027265B1
BR112016027265B1 BR112016027265-0A BR112016027265A BR112016027265B1 BR 112016027265 B1 BR112016027265 B1 BR 112016027265B1 BR 112016027265 A BR112016027265 A BR 112016027265A BR 112016027265 B1 BR112016027265 B1 BR 112016027265B1
Authority
BR
Brazil
Prior art keywords
palette
video
block
pixel
value
Prior art date
Application number
BR112016027265-0A
Other languages
English (en)
Other versions
BR112016027265A2 (pt
Inventor
Rajan Laxman Joshi
Vadim SEREGIN
Wei Pu
Marta Karczewicz
Joel Sole Rojals
Krishnakanth RAPAKA
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 BR112016027265A2 publication Critical patent/BR112016027265A2/pt
Publication of BR112016027265B1 publication Critical patent/BR112016027265B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/182Methods 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 pixel
    • 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/186Methods 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 colour or a chrominance component
    • 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
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

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

Abstract

EXECUÇÕES DE CODIFICAÇÃO EM CODIFICAÇÃO DE VÍDEO COM BASE EM PALETA. Trata-se de um método para codificar dados de vídeo que inclui determinar, para um pixel associado a um índice de paleta que relaciona um valor do pixel a um valor de cor em uma paleta de cores usada para codificar o pixel, um comprimento de execução de uma execução de índices de paleta que são codificados com o índice de paleta do pixel, o método também inclui determinar um comprimento de execução máximo para uma execução máxima de índices de paleta que têm capacidade para serem codificados com o índice de paleta do pixel e codificar dados que indicam o comprimento de execução com base no comprimento de execução máximo determinado.

Description

[0001] Este pedido reivindica o benefício do Pedido Provisório U.S. no 62/002.054, depositado no dia 22 de maio de 2014, Pedido Provisório U.S. no 62/010.313, depositado no dia 10 de junho de 2014, Pedido Provisório U.S. no 62/015.240, depositado no dia 20 de junho de 2014, Pedido Provisório U.S. no 62/031.766 depositado no dia 31 de julho de 2014, Pedido Provisório U.S. no 62/040.978, depositado no dia 22 de agosto de 2014, Pedido Provisório U.S. no 62/114.533, depositado no dia 10 de fevereiro de 2015 e Pedido Provisório U.S. no 62/115.099, depositado no dia 11 de fevereiro de 2015, cujos conteúdos integrais são incorporados ao presente documento a título de referência.
CAMPO DA TÉCNICA
[0002] Esta revelação refere-se à criptação e decodificação de vídeo.
ANTECEDENTES
[0003] As capacidades de vídeo digital podem ser incorporadas em uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores do tipo laptop ou desktop, computadores do tipo tablet, leitores de e-book, câmeras digitais, dispositivos de gravação digitais, reprodutores de mídia digital, dispositivos de video game, consoles de video game, celular ou telefones de rádio-satélite, conhecidos como "telefones inteligentes", dispositivos de teleconferência por vídeo, dispositivos de transmissão contínua por vídeo e similares. Os dispositivos de vídeo digital implantam técnicas de compressão de vídeo, tais como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente sob desenvolvimento e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, criptar, decodificar e/ou armazenar informações de vídeo digital de maneira mais eficiente implantando-se tais técnicas de compressão de vídeo.
[0004] As técnicas de compressão de vídeo incluem previsão espacial (intrafiguração) e/ou previsão temporal (interfiguração) para reduzir ou remover a redundância inerente em sequências de vídeo. Para codificação de vídeo com base em bloco, uma fatia de vídeo (isto é, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser particionada em blocos de vídeo. Os blocos de vídeo em uma fatia intracodificada (I) de uma figuração são criptados com o uso de previsão espacial em relação às amostras de referência em blocos vizinhos na mesma figuração. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar previsão espacial em relação às amostras de referência em blocos vizinhos na mesma previsão de imagem ou temporal em relação às amostras de referência em outras imagens de referência. As figurações podem ser denominadas como quadros, e as figurações de referência podem ser denominadas como quadros de referência.
[0005] A previsão espacial ou temporal resulta em um bloco previsto para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é criptado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é criptado de acordo com um modo de intracodificação e os dados residuais. Para compactação adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes residuais, os quais os mesmos podem ser quantizados. Os coeficientes quantizados, inicialmente dispostos em uma matriz bidimensional, podem ser varridos a fim de produzir um vetor unidimensional de coeficientes e a codificação por entropia pode ser aplicada para alcançar ainda mais compressão.
SUMÁRIO DA INVENÇÃO
[0006] As técnicas desta revelação se referem à codificação de vídeo com base em paleta. Por exemplo, em codificação com base em paleta, um codificador de vídeo (um criptador de vídeo ou decodificador de vídeo) pode formar uma "paleta" como uma tabela de cores para representar os dados de vídeo da área particular (por exemplo, um determinado bloco). A codificação com base em paleta pode ser especialmente útil para áreas de codificação de dados de vídeo que têm um número relativamente pequeno de cores. Em vez de codificar os valores de pixel atuais (ou seus residuais), o codificador de vídeo pode codificar os índices de paleta para um ou mais dos pixels que relacionam os pixels com entradas na paleta que representa as cores dos pixels. As técnicas descritas nesta revelação podem incluir técnicas para várias combinações de um ou mais dentre os modos de codificação com base em paleta de sinalização, paletas de transmissão, paletas de derivação e mapas de codificação com base em paleta de transmissão e outros elementos de sintaxe.
[0007] Em um exemplo, um método de processamento de dados de vídeo inclui determinar um valor de um elemento de sintaxe no nível de bloco que indica, para todas as amostras de um bloco de dados de vídeo, se pelo menos uma respectiva amostra do bloco é codificada com base em um valor de cor da pelo menos uma respectiva amostra que não está incluída em uma paleta de cores para a codificação do bloco de dados de vídeo e codificação do bloco de dados de vídeo com base no valor.
[0008] Em um outro exemplo, um dispositivo para processar os dados de vídeo inclui uma memória configurada para armazenar um bloco de amostras de dados de vídeo e um ou mais processadores configurados para determinar um valor de um elemento de sintaxe no nível de bloco que indica, para todas as amostras do bloco de dados de vídeo, se pelo menos uma respectiva amostra do bloco é codificada com base em um valor de cor da pelo menos uma respectiva amostra que não está incluída em uma paleta de cores para a codificação do bloco de dados de vídeo e codificação do bloco de dados de vídeo com base no valor,
[0009] Em outro exemplo, um aparelho para processar os dados de vídeo inclui meios para determinar um valor de um elemento de sintaxe no nível de bloco que indica, para todas as amostras de um bloco de dados de vídeo, se pelo menos uma respectiva amostra do bloco é codificada com base em um valor de cor da pelo menos uma respectiva amostra que não está incluída em uma paleta de cores para a codificação do bloco de dados de vídeo e meios para codificar o bloco de dados de vídeo com base no valor.
[0010] Em outro exemplo, um meio legível por computador não transitório armazenou, no mesmo, instruções que, quando executadas, fazem com que um ou mais processadores determinem um valor de um elemento de sintaxe no nível de bloco que indica, para todas as amostras de um bloco de dados de vídeo, se pelo menos uma respectiva amostra do bloco é codificada com base em um valor de cor da pelo menos uma respectiva amostra que não está incluída em uma paleta de cores para a codificação do bloco de dados de vídeo e codificação do bloco de dados de vídeo com base no valor.
[0011] Em outro exemplo, um método de processamento dados de vídeo inclui codificar pelo menos um dos dados que indica um tamanho de paleta máximo de uma paleta de valores de cor para a codificação de um bloco de dados de vídeo ou dados que indicam um tamanho de indicador de paleta máximo de um indicador de paleta para determinar a paleta de valores de cor e codificar o bloco de dados de vídeo de acordo com os dados.
[0012] Em outro exemplo, um dispositivo para processar dados de vídeo inclui uma memória configurada para armazenar um bloco de dados de vídeo e um ou mais processadores configurados para codificar pelo menos um dos dados que indica um tamanho de paleta máximo de uma paleta de valores de cor para a codificação do bloco de dados de vídeo ou dados que indicam um tamanho de indicador de paleta máximo de um indicador de paleta para determinar a paleta de valores de cor e codificar o bloco de dados de vídeo de acordo com os dados codificados do fluxo de bits.
[0013] Em outro exemplo, um aparelho para processar os dados de vídeo inclui meios para codificar pelo menos um dos dados que indica um tamanho de paleta máximo de uma paleta de valores de cor para a codificação de um bloco de dados de vídeo ou dados que indicam um tamanho de indicador de paleta máximo de um indicador de paleta para determinar a paleta de valores de cor, e meios para codificar o bloco de dados de vídeo de acordo com os dados.
[0014] Em outro exemplo, um meio legível por computador não transitório tem instruções armazenadas no mesmo que, quando executadas, fazem com que um ou mais processadores codifiquem pelo menos um dos dados que indica um tamanho de paleta máximo de uma paleta de valores de cor para a codificação de um bloco de dados de vídeo ou dados que indicam um tamanho de indicador de paleta máximo de um indicador de paleta para determinar a paleta de valores de cor e codificar o bloco de dados de vídeo de acordo com os dados.
[0015] Em outro exemplo, um método de codificação de dados de vídeo inclui determinar, para um pixel associado a um índice de paleta que relaciona um valor do pixel a um valor de cor em uma paleta de cores usada para a codificação do pixel, um comprimento de execução de uma execução de índices de paleta que são codificados com o índice de paleta do pixel, determinar um comprimento de execução máximo para uma execução máxima de índices de paleta com capacidade para ser codificada com o índice de paleta do pixel e codificar os dados que indicam o comprimento de execução com base no comprimento de execução máximo determinado.
[0016] Em outro exemplo, um dispositivo para a codificação de dados de vídeo inclui uma memória configurada para armazenar um pixel de dados de vídeo associado a um índice de paleta que relaciona um valor do pixel a um valor de cor em uma paleta de cores usada para a codificação do pixel e um ou mais processadores configurados para determinar, para o pixel, um comprimento de execução de uma execução de índices de paleta que são codificados com o índice de paleta do pixel, determinar um comprimento de execução máximo para uma execução máxima de índices de paleta com capacidade para ser codificada com o índice de paleta do pixel e codificar os dados que indicam o comprimento de execução com base no comprimento de execução máximo determinado.
[0017] Em outro exemplo, um aparelho para processar os dados de vídeo inclui meios para determinar, para um pixel associado a um índice de paleta que relaciona um valor do pixel a um valor de cor em uma paleta de cores usada para a codificação do pixel, um comprimento de execução de índices de paleta que são codificados com o índice de paleta do pixel, meios para determinar um comprimento de execução máximo para uma execução máxima de índices de paleta com capacidade para ser codificada com o índice de paleta do pixel e meios para codificar os dados que indicam o comprimento de execução com base no comprimento de execução máximo determinado.
[0018] Em outro exemplo, um meio legível por computador não transitório tem instruções armazenadas no mesmo que, quando executadas, fazem com que um ou mais processadores determinem, para um pixel associado ao índice de paleta que relaciona um valor do pixel a um valor de cor em uma paleta de cores usada para a codificação do pixel, um comprimento de execução de uma execução de índices de paleta que são codificados com o índice de paleta do pixel, determine um comprimento de execução máximo para uma execução máxima de índices de paleta com capacidade para ser codificada com o índice de paleta do pixel, e codificar os dados que indicam o comprimento de execução com base no comprimento de execução máximo determinado.
[0019] Os detalhes de um ou mais exemplos da revelação são estabelecidos nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens ficarão evidentes a partir da descrição, dos desenhos e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0020] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplificativo que pode utilizar as técnicas descritas nesta revelação.
[0021] A Figura 2 é um diagrama de blocos que ilustra um criptador de vídeo exemplificativo que pode implantar as técnicas descritas nesta revelação.
[0022] A Figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplificativo que pode implantar as técnicas descritas nesta revelação.
[0023] A Figura 4 é um diagrama conceitual que ilustra um exemplo de determinação de entradas de paleta para codificação de vídeo com base em paleta, consistente com as técnicas desta revelação.
[0024] A Figura 5 é um diagrama conceitual que ilustra um exemplo de determinação de índices de paleta para uma paleta para um bloco de pixels, consistente com as técnicas desta revelação.
[0025] A Figura 6 é um diagrama conceitual que ilustra um exemplo de determinação de um comprimento de execução máximo para um bloco de pixels, consistente com as técnicas desta revelação.
[0026] A Figura 7 é um fluxograma que ilustra um processo exemplificativo para a criptação de um bloco de dados de vídeo com base em um ou mais elementos de sintaxe no nível de bloco que indicam se qualquer amostra do bloco é criptada como amostras de fuga, consistente com as técnicas desta revelação.
[0027] A Figura 8 é um fluxograma que ilustra um processo exemplificativo para a decodificação de um bloco de dados de vídeo com base em um ou mais elementos de sintaxe no nível de bloco que indicam se qualquer amostra do bloco é decodificada como uma amostra de fuga, consistente com as técnicas desta revelação.
[0028] A Figura 9 é um fluxograma que ilustra um processo exemplificativo para a criptação de um bloco de dados de vídeo com base em um ou mais elementos de sintaxe que indicam um tamanho de paleta máximo e um tamanho de indicador de paleta máximo, consistente com as técnicas desta revelação.
[0029] A Figura 10 é um fluxograma que ilustra um processo exemplificativo para a criptação de um bloco de dados de vídeo com base em um ou mais elementos de sintaxe que indicam um tamanho de paleta máximo e um tamanho de indicador de paleta máximo, consistente com as técnicas desta revelação.
[0030] A Figura 11 é um fluxograma que ilustra um processo exemplificativo para a codificação (criptação ou decodificação) de dados que indicam um comprimento de execução de uma execução de pixels com base em um comprimento de execução potencial máximo, consistente com as técnicas desta revelação.
DESCRIÇÃO DETALHADA
[0031] Os aspectos desta revelação são direcionados às técnicas para compressão e codificação de vídeo. Em particular, esta revelação descreve técnicas para codificação com base em paleta de dados de vídeo. Em codificação de vídeo tradicional, presume-se que as imagens tenham tom contínuo e sejam espacialmente suaves. Com base nessas suposições, várias ferramentas foram desenvolvidas tais como transformada com base em bloco, filtragem, etc., e tais ferramentas têm mostrado bom desempenho para vídeos de conteúdo natural.
[0032] Entretanto, em aplicações do tipo desktop remoto, trabalho colaborativo e visor sem fio, o conteúdo de tela gerada por computador pode ser o conteúdo dominante a ser comprimido. Esse tipo de conteúdo tende a ter tom distinto e linhas acentuadas de recurso e limites de objeto de alto contraste. A suposição de tom contínuo e lisura pode não mais ser aplicada e, então, as técnicas de codificação de vídeo tradicional podem ser maneiras ineficazes de comprimir o conteúdo.
[0033] Esta revelação descreve a codificação com base em paleta, que pode ser particularmente adequada para a codificação de conteúdo gerado por tela (por exemplo, codificação de conteúdo de tela (SCC)). As técnicas para codificação com base em paleta de dados de vídeo podem ser usadas com uma ou mais outras técnicas de codificação, tais como técnicas para codificação interpreditiva ou codificação intrapreditiva. Por exemplo, conforme descrito em maiores detalhes abaixo, um codificador ou decodificador, ou codificador-decodificador combinado (codec), pode ser configurado para realizar codificação inter e intrapreditiva, bem como codificação com base em paleta.
[0034] Em alguns exemplos, as técnicas de codificação com base em paleta podem ser configuradas para uso com um ou mais padrões de codificação de vídeo. Por exemplo, a Codificação de Vídeo de Alta Eficácia (HEVC) é um novo padrão de codificação de vídeo que é desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas de Codificação de Vídeo de ITU-T (VCEG) e do Grupo de Especialistas de Filme Cinematográfico de ISO/IEC (MPEG). Um esboço de relatório descritivo de texto de HEVC recente é descrito em Bross et al., "High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Consent)", JCVC- LI003_v13, 12o Encontro de JCT-VC de ITU-T SG16 WP 3 e ISO/IEC JCT 1/SC 29/WG 11 , 14 a 23 Janeiro de 2013 ("HEVC Draft 10").
[0035] Em relação à estrutura de HEVC, como um exemplo, as técnicas de codificação com base em paleta podem ser configuradas para serem usadas como um modo de unidade de controle (CU). Em outros exemplos, as técnicas de codificação com base em paleta podem ser configuradas para ser usadas como um modo de PU na estrutura de HEVC. Consequentemente, todos os processos revelados a seguir descritos no contexto de um modo de CU podem, adicional ou alternativamente, se aplicar à PU. No entanto, esses exemplos com base em HEVC não seriam considerados a uma restrição ou limitação da técnicas de codificação com base em paleta descritas no presente documento, tais como técnicas que podem ser aplicadas para funcionar de modo independente ou como parte de outros existentes ou ainda a serem sistemas/padrões desenvolvidos, nesses casos, a unidade de codificação de paleta pode ser blocos quadrados, blocos retangulares ou até mesmo regiões de formato não retangular
[0036] Em codificação com base em paleta, pode-se considerar que uma área particular de dados de vídeo tenha um número relativamente pequeno de cores. Um codificador de vídeo (um criptador de vídeo ou decodificador de vídeo) pode codificar chamado de "paleta" como uma tabela de cores para representar os dados de vídeo da área particular (por exemplo, um determinado bloco). Cada pixel pode estar associado a uma entrada na paleta que representa a cor do pixel. Por exemplo, o codificador de vídeo pode codificar um índice que relaciona o valor de pixel ao valor apropriado na paleta.
[0037] No exemplo acima, um criptador de vídeo pode criptar um bloco de dados de vídeo pela determinação de uma paleta para o bloco, pela localização de uma entrada na paleta para representar o valor de cada pixel e criptação da paleta com índices de paleta (também referido como valores de índice de paleta) para os pixels que relacionam o valor de pixel à paleta. Um decodificador de vídeo pode obter, a partir de um fluxo de bits criptado, uma paleta para um bloco, bem como índices de paleta para os pixels do bloco. O decodificador de vídeo pode relacionar os índices de paleta dos pixels às entradas da paleta para reconstruir os valores de pixel do bloco. Os pixels (e/ou índices de paleta relacionados que indicam um valor de pixel) podem, em geral, ser referidos como amostras.
[0038] Presume-se que as amostras no bloco sejam processadas (por exemplo, varridas) com o uso de ordem de varredura por rastreio horizontal. Por exemplo, o criptador de vídeo pode converter um bloco bidimensional de índices de paleta em uma matriz unidirecional pela varredura dos índices de paleta com o uso de uma ordem de varredura por rastreio horizontal. Do mesmo modo, o decodificador de vídeo pode reconstruir um bloco de índices de paleta com o uso da ordem de varredura por rastreio horizontal. Consequentemente, esta revelação pode se referir a uma amostra anterior como uma amostra que precede a amostra que é atualmente codificada no bloco na ordem de varredura. Deve ser apreciado que as varreduras diferentes de uma varredura por rastreio horizontal, tal como ordem de varredura por rastreio vertical, também podem ser aplicáveis. O exemplo acima se destina a fornecer uma descrição geral de codificação com base em paleta.
[0039] Uma paleta inclui tipicamente entradas numeradas por um índice e intensidades ou valores de componente de cor de representação (por exemplo, RGB, YUV ou similares). Tanto um criptador de vídeo quanto um decodificador de vídeo determinam o número de entradas de paleta, valores de componente de cor para cada entrada de paleta e a ordenação exata das entradas de paleta para o bloco atual. Nesta revelação, presume-se que cada entrada de paleta especifica os valores para todos os componentes de cor de uma amostra. Entretanto, os conceitos desta revelação são aplicáveis para o uso de uma paleta separada para cada componente de cor.
[0040] Em alguns exemplos, uma paleta pode ser composta com o uso de informações dos blocos anteriormente codificados. Ou seja, uma paleta pode conter entradas de paleta previstas a partir da(s) paleta(s) usadas para codificar o(s) bloco(s) anterior(es). Por exemplo, conforme descrito no documento de submissão padrão Wei Pu et al, "AHG10: Suggested Software for Palette Coding based on RExt6.0", JCTVC-Q0094, Valencia, ES, 27 de março a 4 de abril de 2014 (doravante no presente documento JCTVC- Q0094), uma paleta pode incluir entradas que são copiadas de uma paleta de indicador. Uma paleta de indicador pode incluir entradas de paleta a partir dos blocos anteriormente codificados com o uso de modo de paleta ou outras amostras reconstruídas. Para cada entrada na paleta de indicador, um sinalizador binário pode ser codificado para indicar se a entrada associada ao sinalizador é copiada para a paleta atual (por exemplo, indicada pelo sinalizador = 1). A coluna de sinalizadores binários pode ser referida como o vetor de previsão de paleta binário. A paleta para a codificação de um bloco atual também pode incluir inúmeras de novas entradas de paleta, que podem ser explicitamente codificadas (por exemplo, separadamente do vetor de previsão de paleta). Uma indicação do número de novas entradas também pode ser codificada. Uma soma das entradas previstas e das novas entradas pode indicar o tamanho de paleta total para o bloco.
[0041] Conforme proposto JCTVC-Q0094, cada amostra em um bloco codificado com um modo de codificação com base em paleta pode ser codificada com o uso de um dos três modos de paleta, conforme apresentado abaixo:
[0042] • Modo Fuga: nesse modo, o valor de amostra não está incluído em uma paleta como uma entrada de paleta e o valor de amostra quantizado é sinalizado explicitamente para todos os componentes de cor. É similar à sinalização das novas entradas de paleta, enquanto para novas entradas de paleta, os valores de componente de cor não são quantizados.
[0043] • Modo CopyFromTop (também referido como modo CopyAbove): nesse modo, o índice de entrada de paleta para a amostra atual é copiado da amostra localizada diretamente acima em um bloco.
[0044] • Modo Valor (também referido como modo de índice): nesse modo, o valor da índice de entrada de paleta é explicitamente sinalizado.
[0045] Conforme descrito no presente documento, um índice de entrada de paleta pode ser referido como um índice de paleta ou índice simples. Esses termos podem ser usados de modo intercambiável para descrever as técnicas desta revelação. Além disso, conforme descrito em maiores detalhes abaixo, um índice de paleta pode ter um ou mais valores de intensidade ou de cor associados. Por exemplo, um índice de paleta pode ter a valor de intensidade ou de cor associado único associado a um componente de intensidade ou de cor único de um pixel (por exemplo, um componente Vermelho de dados de RGB, um componente Y de dados YUV, ou similares). Em outro exemplo, um índice de paleta pode ter múltiplos valores de intensidade ou de cor associados. Em alguns casos, a codificação com base em paleta pode ser aplicada para codificar o vídeo monocromo. Consequentemente, o "valor de cor" pode, em geral, se referir a qualquer componente de cor ou sem cor usado para gerar um valor de pixel.
[0046] Para os modos CopyFromTop e Valor, um valor de execução (que também pode ser referido simplesmente como execução) também pode ser sinalizado. Um valor de execução pode indicar um número de amostras consecutivas (por exemplo, uma execução de amostras) em uma ordem de varredura em particular em um bloco codificado por paleta que são codificadas em conjunto. Em alguns casos, a execução de amostras também pode ser denominada como uma execução de índices de paleta, devido ao fato de que cada amostra da execução tem um índice associado a uma paleta.
[0047] Um valor de execução pode indicar uma execução de índices de paleta que são codificados com o uso do mesmo modo de codificação de paleta. Por exemplo, em relação ao modo Valor, um codificador de vídeo (um criptador de vídeo ou decodificador de vídeo) pode codificar um índice de paleta (também referido como um valor de índice de paleta ou valor de índice simples) e um valor de execução que indica inúmeras amostras consecutivas em uma ordem de varredura que têm o mesmo índice de paleta e que estão sendo codificadas com o índice de paleta. Em relação ao modo CopyFromTop, o codificador de vídeo pode codificar uma indicação de que um índice para o valor de amostra atual ser copiado com base em um índice de uma amostra vizinha acima (por exemplo, uma amostra que está posicionada acima da amostra que é atualmente codificada em um bloco) e um valor que indica inúmeras amostras consecutivas em uma ordem de varredura que também copiam um índice de paleta de uma amostra vizinha acima e que estão sendo codificadas com o índice de paleta. Consequentemente, nos exemplos acima, uma execução de índices de paleta se refere a uma execução de índices de paleta que tem o mesmo valor ou uma execução de índices de paleta que são copiados a partir dos índices de paleta vizinha acima.
[0048] Assim, a execução pode especificar, para um determinado modo, o número de amostras subsequentes que pertence ao mesmo modo. Em alguns casos, a sinalização de um índice e um valor de execução pode ser similar à codificação de comprimento de execução. Em um exemplo para propósitos de ilustração, uma coluna de índices de paleta consecutivos de um bloco pode ser 0, 2, 2, 2, 2, 5 (por exemplo, em que cada índice corresponde a uma amostra no bloco). Nesse exemplo, um codificador de vídeo pode codificar a segunda amostra (por exemplo, o primeiro índice de paleta de dois) com o uso de modo Valor. Após a codificação de um índice que é igual a 2, o codificador de vídeo pode codificar uma execução de três, que indica que as três amostras subsequentes também têm o mesmo índice de paleta de dois. De uma maneira similar, a codificação de uma execução de quatro índices de paleta após a codificação de um índice com o uso de modo CopyFromTop pode indicar que um total de cinco índices de paleta é copiado a partir dos índices de paleta correspondentes na fileira acima da posição de amostra que é atualmente codificada.
[0049] As técnicas descritas nesta revelação podem incluir técnicas para várias combinações de um ou mais dentre os modos de codificação com base em paleta de sinalização, paletas de transmissão, paletas de derivação e mapas de codificação com base em paleta de transmissão e outros elementos de sintaxe. Em alguns exemplos, as técnicas desta revelação podem ser usadas para solucionar redundâncias potenciais associadas à sinalização dos modos de paleta, índices de paleta, execuções e tamanhos de paleta que estão presentes em JCTVC-Q0094 (bem como o software de referência que implanta o modo de paleta que foi carregado com a contribuição JCTVC-Q0094). Consequentemente, conforme descrito em maiores detalhes abaixo, as técnicas desta revelação podem, em alguns casos, aprimorar a eficiência e aprimorar a taxa de bits ao codificar os dados de vídeo com o uso de um modo de paleta.
[0050] Certos aspectos desta revelação são direcionados aos modos de codificação com base em paleta de sinalização e, em particular, técnicas associadas às amostras de fuga de sinalização. Por exemplo, as amostras de fuga (também referidas como pixels de fuga) podem ser amostras (ou pixels) de um bloco que não tem uma cor correspondente representada em uma paleta para a codificação do bloco. Consequentemente, as amostras de fuga não podem ser reconstruídas com o uso de uma entrada de cor (ou valor de pixel) de uma paleta. Em vez disso, os valores de cor para amostras de fuga são sinalizados em um fluxo de bits de modo separado dos valores de cor da paleta.
[0051] Conforme descrito em maiores detalhes abaixo, um codificador de vídeo (por exemplo, um criptador de vídeo e um decodificador de vídeo podem codificar os dados por amostra que indicam se uma amostra de um bloco codificado por paleta é codificada com base em uma cor da amostra que não está incluída em uma paleta para o bloco, por exemplo, com o uso do processo referido como "modo Fuga" acima. Em um exemplo, o codificador de vídeo pode codificar um sinalizador para cada amostra que indica se a amostra é codificada como uma amostra de fuga, por exemplo, com o uso de modo Fuga (referido no presente documento como sinalização de fuga implícita). Em outro exemplo, o codificador de vídeo pode codificar outra sintaxe (tal como um índice de paleta adicional, conforme descrito abaixo) para uma amostra que indica que a amostra é codificada como uma amostra de fuga, por exemplo, com o uso de modo Fuga (referido no presente documento como sinalização de fuga explícita).
[0052] De acordo com os aspectos desta revelação, para um bloco codificado por paleta, um ou mais elementos de sintaxe podem indicar, no nível de bloco (por exemplo, um nível de CU ou nível de LCU), se qualquer amostra do bloco é codificada com base em um valor de cor da amostra que não está incluída na paleta, por exemplo, codificada como uma amostra de fuga. Os um ou mais elementos de sintaxe pode ser referida como sintaxe de fuga no nível de bloco. Por exemplo, a sintaxe no nível de bloco pode se referir à sintaxe que é codificada ou determinada enquanto codifica um bloco de dados de vídeo, tal como uma CU ou LCU. A sintaxe no nível de bloco pode estar incluída em um cabeçalho ou com outros dados que estão associados ao bloco (por exemplo, dados que são codificados antes de ou subsequente a um bloco que descreve uma característica do bloco). Em contraste, outra sintaxe que não é sintaxe no nível de bloco pode estar incluída em um cabeçalho de fatia ou com pixels individuais de dados de vídeo.
[0053] Em um exemplo, um codificador de vídeo pode ser configurado para codificar e/ou determinar um sinalizador (que pode ser referido como um sinalizador de fuga no nível de bloco) que indica se qualquer amostra do bloco é codificada com base em um valor de cor que não está incluído na paleta. Por exemplo, um valor de sinalizador de zero pode indicar que nenhuma das amostras do bloco é codificada com o uso de modo Fuga. Isto é, o valor de todas as amostras de um bloco pode ser determinado com base em um valor de cor que está incluído em uma paleta para a codificação do bloco. Um valor de sinalizador de um pode indicar que pelo menos uma amostra do bloco é codificada com o uso do modo Fuga. Isto é, o valor de pelo menos uma amostra não está incluída em uma paleta para a codificação do bloco e pode ser separadamente sinalizado. No presente documento, o sinalizador pode indicar, para todas as amostras de um bloco de dados de vídeo, se pelo menos uma amostra do bloco tem um valor de cor que não está incluído em uma paleta para a codificação do bloco.
[0054] Conforme descrito em maiores detalhes abaixo, a sintaxe de fuga no nível de bloco pode resultar, em alguns casos, em uma economia de bit. Por exemplo, pela determinação da possibilidade de quaisquer amostras de um bloco completo serem codificadas como uma amostra de fuga, o codificador de vídeo pode ter capacidade para omitir a codificação de certos elementos de sintaxe associados às amostras de fuga. Isto é, em exemplos em que a sintaxe indica que nenhuma amostra é codificada como amostras de fuga, o codificador de vídeo não pode codificar qualquer outra sintaxe associada às amostras de fuga para o bloco (por exemplo, tal como a sintaxe por amostra notada acima). Conforme descrito em maiores detalhes abaixo, o codificador de vídeo também pode omitir a codificação de certas sintaxes quando a sintaxe indicar que pelo menos uma amostra de um bloco é codificada como uma amostra de fuga com base em um tamanho de uma paleta para o bloco que é codificado. Consequentemente, as técnicas desta revelação podem aprimorar a taxa de bits e eficiência de codificação ao codificar os dados de vídeo com o uso de codificação com base em paleta.
[0055] Outros aspectos desta revelação são direcionados aos parâmetros de paleta máximos de codificação para o modo de paleta. Por exemplo, um tamanho de paleta máximo para uma paleta pode ser tipicamente um valor estático que é definido tanto em um criptador de vídeo quanto em um decodificador de vídeo. Do mesmo modo, um tamanho máximo de um indicador de paleta (usado para prever as paletas, conforme descrito em maiores detalhes abaixo) também pode ser um valor estático que é definido tanto em um criptador de vídeo quanto em um decodificador de vídeo. No presente documento, esses parâmetros de paleta máximos não podem ser alterados, independente das características particulares dos dados de vídeo que são codificados.
[0056] De acordo com os aspectos desta revelação, um codificador de vídeo pode ser configurado para codificar os dados que indicam um tamanho de paleta máximo e/ou um tamanho de indicador de paleta máximo. Por exemplo, de acordo com os aspectos desta revelação, os dados que indicam um tamanho de paleta máximo e/ou um tamanho de indicador de paleta máximo podem estar incluídos em um conjunto de parâmetros, tal como um conjunto de parâmetros de sequência (SPS). Consequentemente, o codificador de vídeo pode codificar pelo menos um dos dados que indica um tamanho de paleta máximo de uma paleta de valores de cor para a codificação de um bloco de dados de vídeo ou dados que indicam um tamanho de indicador de paleta máximo de um indicador de paleta para determinar a paleta de valores de cor.
[0057] Os dados de codificação que indica um tamanho de paleta máximo e/ou um tamanho de indicador de paleta máximo podem fornecer flexibilidade, que pode aprimorar a eficiência de codificação. Por exemplo, as técnicas podem permitir que um codificador de vídeo use paletas e indicadores de paleta de diferentes tamanhos com base nas características dos dados de vídeo que são codificados (por exemplo, com base em uma profundidade de bit dos dados, um tamanho de bloco, um perfil ou nível associado aos dados ou similares). Consequentemente, os parâmetros de paleta máximos podem ser personalizados para os dados de vídeo que são codificados, de modo que os parâmetros de paleta máximos relativamente maiores podem ser definidos para os blocos que podem se beneficiar de tais. Além disso, os parâmetros de paleta máximos relativamente menores podem ser definidos para reduzir a complexidade associada à construção de paletas para blocos menos suscetíveis de se beneficiar dos parâmetros relativamente maiores,
[0058] Outros aspectos desta revelação são direcionados às técnicas de codificação de vários elementos de sintaxe para a codificação de vídeo com base em paleta. Por exemplo, as técnicas desta revelação incluem codificar a sintaxe para a codificação de paleta, tal como um valor de execução (também referido como um valor de comprimento de execução) de índices de paleta, um vetor de previsão de paleta, ou outra sintaxe relacionada à paleta, com o uso de um código que considera um valor potencial máximo da sintaxe que é codificada. Em alguns casos, de acordo com os aspectos desta revelação, a sintaxe pode ser codificada com o uso de uma forma de Código de Golomb exponencial, conforme descrito em maiores detalhes abaixo. As técnicas podem, em alguns casos, reduzir o número de bits necessários para representar a sintaxe relacionada à paleta.
[0059] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplificativo 10 que pode utilizar os conjuntos de técnicas desta revelação. Conforme usado no presente documento, o termo “codificador de vídeo” se refere genericamente tanto a criptadores de vídeo quanto a decodificadores de vídeo. Nesta revelação, os termos “codificação de Vídeo” ou “codificação” podem se referir genericamente a criptação de vídeo e decodificação de vídeo. O criptador de vídeo 20 e o decodificador de vídeo 30 do sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar técnicas para codificação de vídeo com base em paleta de acordo com vários exemplos descritos nesta revelação. Por exemplo, o criptador 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, tais como CUs ou PUs na codificação de FIEVC, com uso de codificação com base em paleta ou codificação sem paleta. Os modos de codificação sem paleta podem se referir a vários modos de codificação temporais interpreditivos ou modos de codificação espaciais intrapreditivos, tais como vários modos de codificação especificados por HEVC Draft 10.
[0060] Conforme mostrado 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 criptados. Consequentemente, o dispositivo-fonte 12 pode ser referido como um dispositivo de criptação de vídeo ou um aparelho de criptação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo criptados gerados pelo dispositivo-fonte 12. Consequentemente, 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.
[0061] O dispositivo-fonte 12 e o dispositivo de destino 14 podem compreender uma ampla faixa de dispositivos, incluindo computadores do tipo desktop, dispositivos de computação móveis, computadores do tipo notebook (por exemplo, computadores do tipo laptop), computadores do tipo tablet, decodificadores de sinais, aparelhos de telefone como os conhecidos por telefones “inteligentes”, televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de vídeo game, computadores de bordo para carros, ou similares.
[0062] O dispositivo de destino 14 pode receber dados de vídeo criptados provenientes do dispositivo-fonte 12 por meio de um canal 16. O canal 16 pode compreender uma ou mais mídias ou dispositivos com capacidade para mover os dados de vídeo criptados 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 criptados diretamente para o dispositivo de destino 14 em tempo real. Nesse exemplo, o dispositivo-fonte 12 pode modular os dados de vídeo criptados de acordo com um padrão de comunicação, 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 meios de comunicação sem fio e/ou com fio, como um espectro de radiofrequência (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, 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 a partir do dispositivo-fonte 12 até o dispositivo de destino 14.
[0063] Em outro exemplo, o canal 16 pode incluir um meio de armazenamento que armazena os dados de vídeo criptados gerados pelo dispositivo-fonte 12. Nesse exemplo, o dispositivo de destino 14 pode acessar o meio de armazenamento, por exemplo, por meio de acesso de disco ou acesso de cartão. O meio de armazenamento pode incluir uma variedade de meios de armazenamento de dados acessados localmente como discos Blu-ray, DVDs, CD-ROMs, memória flash ou outros meios de armazenamento digital adequados para armazenar dados de vídeo criptados.
[0064] Em um exemplo adicional, um canal 16 pode incluir um servidor de arquivos ou outro dispositivo de armazenamento intermediário que armazene os dados de vídeo criptados gerados pelo dispositivo-fonte 12. Nesse exemplo, o dispositivo de destino 14 pode acessar os dados de vídeo criptados armazenados no servidor de arquivos ou outro dispositivo de armazenamento intermediário por meio de transmissão contínua ou transferência por download. O servidor de arquivos pode ser um tipo de servidor com capacidade para armazenar dados de vídeo criptados e transmitir os dados de vídeo criptados para o dispositivo de destino 14. Os servidores de arquivos exemplificativos incluem servidores da web (por exemplo, para um site da web), servidores de protocolo de transferência de arquivo (FTP), dispositivos de armazenamento fixado à rede (NAS) e unidades de disco local.
[0065] O dispositivo de destino 14 pode acessar os dados de vídeo criptados através de uma conexão de dados padrão, como uma conexão de Internet. Os tipos exemplificativos 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 sejam adequadas para acessar dados de vídeo criptados armazenados em um servidor de arquivos. A transmissão de dados de vídeo criptados a partir do servidor de arquivos pode ser uma transmissão de transferência, uma transmissão de transferência por download ou uma combinação das mesmas.
[0066] As técnicas desta revelação não estão necessariamente limitadas a aplicações ou definições sem fio. Os conjuntos de técnicas pode ser aplicado à codificação de vídeo em apoio a uma variedade de aplicações de multimídia, como difusões de televisão sem fio, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões contínuas de vídeo, por exemplo, por meio da Internet, criptação de dados de vídeo para armazenamento em um meio de armazenamento de dados, 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 transmissão de vídeo unidirecional ou bidirecional para suportar aplicações tais como transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo e/ou telefonia por vídeo.
[0067] O sistema de codificação de vídeo 10 ilustrado na Figura 1 é meramente um exemplo e os conjuntos de técnicas desta revelação podem se aplicar a definições de codificação de vídeo (por exemplo, criptação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de criptação e decodificação. Em outros exemplos, os dados são recuperados de uma memória local, transmitidos de modo contínuo por uma rede, ou similares. Um dispositivo de criptação de vídeo pode criptar e armazenar dados para a memória, e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar os dados provenientes da memória. Em muitos exemplos, a criptação e a decodificação são realizadas por dispositivos que não se comunicam um com o outro, mas simplesmente criptam dados para a memória e/ou recuperam e decodificam dados provenientes da memória.
[0068] No exemplo da Figura 1, o dispositivo- fonte 12 inclui uma fonte de vídeo 18, um criptador de vídeo 20 e uma interface de saída 22. Em alguns exemplos, a interface de saída 22 pode incluir um modulador/desmodulador (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 que contenha dados de vídeo capturados anteriormente, uma interface de alimentação de vídeo para receber dados de vídeo a partir de um fornecedor de conteúdo de vídeo e/ou um sistema de gráficos de computador para gerar dados de vídeo, ou uma combinação de tais fontes de dados de vídeo.
[0069] O criptador de vídeo 20 pode criptar os dados de vídeo provenientes da fonte de vídeo 18. Em alguns exemplos, o dispositivo-fonte 12 transmite diretamente os dados de vídeo criptados para o dispositivo de destino 14 por meio da interface de saída 22. Em outros exemplos, os dados de vídeo criptados também podem ser armazenados em um meio de armazenamento ou um servidor de arquivos para acesso posterior pelo dispositivo de destino 14 para decodificação e/ou reprodução.
[0070] 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 os dados de vídeo criptados pelo canal 16. O dispositivo de exibição 32 pode ser integrado ou externo ao dispositivo de destino 14. Em geral, o dispositivo de visor 32 exibe os dados de vídeo decodificados. O dispositivo de exibição 32 pode compreender uma variedade de dispositivos de exibição, como um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0071] O criptador de vídeo 20 e o decodificador de vídeo 30, cada um, podem ser implantados como qualquer um dentre uma variedade de conjuntos de circuitos adequados, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de portal programáveis por campo (FPGAs), lógica discreta, hardware ou quaisquer combinações dos mesmos. Se as técnicas forem implantadas 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 com o uso de um ou mais processadores para realizar as técnicas desta revelação. Qualquer um dos supracitados (que inclui hardware, software, uma combinação de hardware e software, etc.) pode ser considerado como sendo um ou mais processadores. Cada um dentre o criptador de vídeo 20 e o decodificador de vídeo 30 pode estar incluído em um ou mais criptadores ou decodificadores, um dos quais pode ser integrado como parte de um criptador/decodificador (CODEC) combinado em um dispositivo respectivo.
[0072] Esta revelação pode, em geral, se referir a um criptador de vídeo 20 "que sinaliza" ou "que transmite" certas informações para um outro dispositivo, tal como, decodificador de vídeo 30. O termo "que sinaliza" ou "que transmite" pode, em geral, se referir à comunicação de elementos de sintaxe e/ou outros dados usados para decodificar o comprimido dados de vídeo. Tal comunicação pode ocorrer em tempo real ou proximamente real. De modo alternativo, tal comunicação pode ocorrer por uma extensão de tempo, como pode ocorrer quando se armazena elementos de sintaxe em um meio de armazenamento legível por computador em um fluxo de bits criptado no momento de criptação, pode, então, ser recuperado por um dispositivo de decodificação em qualquer momento após ser armazenado nesse meio.
[0073] Em alguns exemplos, o criptador 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 padrão HEVC mencionado acima e descrito em HEVC Draft 10. Além do padrão HEVC de base, há esforços contínuos para produzir codificação de vídeo escalonável, codificação de vídeo multiview, e extensões de codificação em 3D para HEVC. Além disso, a codificação com base em modos de paleta, por exemplo, conforme descrito nesta revelação, pode ser fornecida para extensão do padrão HEVC. Em alguns exemplos, as técnicas descritas nesta revelação para codificação com base em paleta podem ser aplicadas aos criptadores e decodificadores configurados par a 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. Consequentemente, a aplicação de um modo de codificação com base em paleta para a codificação de unidades de codificação (CUs) ou unidades de previsão (PUs) em um codec HEVC é descrita para propósitos exemplificativos.
[0074] Em HEVC WD10 e outros padrões de codificação de vídeo, uma sequência de vídeo inclui tipicamente uma série de figurações. As figurações também podem ser referidas como "quadros". A figuração pode incluir três matrizes de amostra, SL, Srt e SCr indicados. SL é uma matriz bidimensional (isto é, um bloco) de amostras luma. St% é uma matriz bidimensional de amostras de crominância de Cb. SQ- é uma matriz bidimensional de amostras de crominância de Cr. As amostras de crominância também podem ser denominadas no presente documento de amostras de "croma". Em outros exemplos, uma figuração pode ser monocroma e pode incluir apenas uma matriz de amostras luma.
[0075] A fim de gerar uma representação criptada de uma figuração, o criptador 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 luma, dois blocos de árvore de codificação correspondentes de amostras croma e estruturas de sintaxe usadas para codificar as amostras dos blocos de árvore de codificação. Um bloco de árvore de codificação pode ser um bloco NxN de amostras. Uma CTU também pode ser denominada de "bloco de árvore" ou de uma "unidade de codificação maior" (LCU). As CTUs de HEVC podem ser amplamente analógicas aos macroblocos de outros padrões standards, tais como, H.264/AVC. No entanto, a CTU não se limita necessariamente a um tamanho 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 varredura de rastreamento.
[0076] Para gerar uma CTU codificada, o criptador de vídeo 20 pode realizar, recursivamente, a partição de árvore quadrática nos blocos de árvore de codificação de uma CTU para dividir os blocos de árvore de codificação em blocos de codificação, por conseguinte, o nome "unidades de árvore de codificação". Um bloco de codificação é um bloco NxN de amostras. Uma CU pode ser um bloco de codificação de amostras luma e dois blocos de codificação correspondentes de amostras croma de uma figuração que tem uma matriz de amostra luma, uma matriz de amostra Cb e uma matriz de amostra Cr e estruturas de sintaxe usadas para codificar as amostras dos blocos de codificação. O criptador de vídeo 20 pode particionar 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 (isto é, quadrado ou não quadrado) de amostras em que a mesma previsão é aplicada. Uma unidade de previsão (PU) de uma CU pode ser um bloco de previsão de amostras luma, dois blocos de previsão correspondentes de amostras croma de uma gravura e estruturas de sintaxe usadas para prever o bloco de previsão amostras. O criptador de vídeo 20 pode gerar blocos luma, de Cb e de Cr preditivos para blocos de previsão luma, de Cb e de Cr de cada PU da CU.
[0077] O criptador de vídeo 20 pode usar intraprevisão ou interprevisão para gerar os blocos preditivos para uma PU. Se o criptador de vídeo 20 usar intraprevisão para gerar os blocos preditivos de uma PU, o criptador de vídeo 20 pode gerar blocos preditivos da PU com base nas amostras decodificadas da figuração associada à PU.
[0078] Se o criptador de vídeo 20 usar interprevisão para gerar os blocos preditivos de uma PU, o criptador de vídeo 2.0 pode gerar os blocos preditivos da PU com base em amostras decodificadas de uma ou mais figurações diferentes da figuração associada à PU. O criptador de vídeo 20 pode usar uniprevisão ou biprevisão para gerar os blocos preditivos de uma PU. Quando o criptador de vídeo 20 utiliza uniprevisão para gerar os blocos preditivos para uma PU, a PU pode ter um único vetor de movimento (MV). Quando o criptador de vídeo 20 utiliza biprevisão para gerar os blocos preditivos para uma PU, a PU pode ter dois MVs.
[0079] Após o criptador de vídeo 20 gerar blocos luma, de Cb e de Cr preditivos para uma ou mais PUs de uma CU, o criptador de vídeo 20 pode gerar um bloco residual luma para a CU. Cada amostra no bloco residual luma da CU indica uma diferença entre uma amostra luma em um dentre os blocos preditivos luma da CU e uma amostra correspondente no bloco de codificação luma original da CU. Além disso, o criptador de vídeo 20 pode gerar um bloco residual de Cb para a CU. Cada amostra no bloco residual de Cb da CU pode indicar uma diferença entre uma amostra de Cb em um dos blocos de Cb preditivos da CU e uma amostra correspondente no bloco de codificação de Cb original da CU. O criptador de vídeo 2.0 também pode gerar um bloco residual de Cr para a CU. Cada amostra no bloco residual de Cr da CU pode indicar uma diferença entre uma amostra de Cr em um dos blocos de Cr preditivos da CU e uma amostra correspondente no bloco de codificação de Cr original da CU.
[0080] Além disso, o criptador de vídeo 20 pode usar a partição de árvore quadrática para decompor os blocos residuais luma, de Cb e de Cr de uma CU em um ou mais blocos de transformada luma, de Cb e de Cr. Um bloco de transformada pode ser um bloco retangular de amostras no qual a mesma transformada é aplicada. Uma unidade de transformada (TU) de um CU pode ser um bloco de transformada de amostras luma, dois blocos de transformada correspondentes de amostras croma e estruturas de sintaxe usadas para transformar as amostras de bloco de transformada. Assim, cada TU de uma CU pode estar associada a um bloco de transformada luma, um bloco de transformada de Cb e um bloco de transformada de Cr. O bloco de transformada luma associado à TU pode ser um sub-bloco do bloco residual luma da CU. O bloco de transformada de Cb pode ser um sub-bloco do bloco residual de Cb da CU. O bloco de transformada de Cr pode ser um sub-bloco do bloco residual de Cr da CU.
[0081] O criptador de vídeo 2.0 pode aplicar uma ou mais transformadas a um bloco de transformada luma de uma TU para gerar um bloco de coeficiente luma para a TU. Um bloco de coeficiente pode ser uma matriz bidimensional de coeficientes de transformada. Um coeficiente de transformada pode ser uma quantidade escalar. O criptador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de Cb de uma TU para gerar um bloco de coeficiente de Cb para a TU. O criptador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de Cr de uma TU para gerar um bloco de coeficiente de Cr para a TU.
[0082] Após gerar um bloco de coeficiente (por exemplo, um bloco de coeficiente luma, um bloco de coeficiente de Cb ou um bloco de coeficiente de Cr), o criptador de vídeo 20 pode quantizar o bloco de coeficiente. Em geral, a quantização se refere a um processo no qual os coeficientes de transformada são quantizados para reduzir possivelmente a quantidade de dados usada para representar os coeficientes de transformada, o que fornece uma compressão adicional. Após o criptador de vídeo 20 quantizar um bloco de coeficiente, o criptador de vídeo 20 pode codificar por entropia elementos de sintaxe que indicam os coeficientes de transformada quantizados. Por exemplo, o criptador de vídeo 20 pode realizar Codificação Aritmética Binária Adaptativa ao Contexto (CABAC) nos elementos de sintaxe que indicam os coeficientes de transformada quantizados. O criptador de vídeo 20 pode emitir os elementos de sintaxe criptados por entropia em um fluxo de bits.
[0083] O criptador de vídeo 20 pode emitir um fluxo de bits que inclui os elementos de sintaxe criptador por entropia. O fluxo de bits pode incluir uma sequência de bits que forma uma representação de imagens codificadas e dados associados. O fluxo de bits pode compreender uma sequência de unidades de camada de abstração de rede (NAL). Cada uma das unidades de NAL inclui um cabeçalho de unidade de NAL e encapsula uma carga útil de sequência de byte bruto (RBSP). O cabeçalho de unidade de NAL pode incluir um elemento de sintaxe que indica um código de tipo de unidade de NAL. O código do tipo unidade de NAL especificado pelo cabeçalho de unidade de NAL de uma unidade de NAL indica o tipo da unidade de NAL. Uma RBSP pode ser uma estrutura de sintaxe que contém uma quantidade em número inteiro de bytes que são encapsulados dentro de uma unidade de NAL. Em alguns exemplos, uma RBSP inclui zero bits.
[0084] Diferentes tipos de unidades de NAL podem encapsular diferentes tipos de RBSPs. Por exemplo, um primeiro tipo de unidade de NAL pode encapsular uma RBSP para um ajuste de parâmetro de figuração (PPS), um segundo tipo de unidade de NAL pode encapsular uma RBSP para uma fatia codificada, um terceiro tipo de unidade de NAL pode encapsular uma RBSP para SEI e assim por diante. As unidades de NAL que encapsulam RBSPs para dados de codificação de vídeo (conforme oposto às RBSPs para ajustes de parâmetros e mensagens de SEI) podem ser denominadas como unidades de NAL de camada de codificação de vídeo (VLC).
[0085] O decodificador de vídeo 30 pode receber um fluxo de bits gerado pelo criptador de vídeo 20. Além disso, o decodificador de vídeo 30 pode analisar o fluxo de bits para decodificar elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as figurações dos dados de vídeo com base, pelo menos em parte, nos elementos de sintaxe decodificados do fluxo de bits. O processo para reconstruir os dados de vídeo pode ser geralmente recíproco ao processo realizado pelo criptógrafo de vídeo 20. Por exemplo, o decodificador de vídeo 30 pode usar MVs de PUs para determinar os blocos de previsão para as PUs de uma CU atual. Além disso, o decodificador de vídeo 30 pode quantizar, inversamente, os blocos de coeficiente de transformada associados às TUs da CU atual. O decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficiente de transformada para reconstruir os blocos de transformada associados às TUs da CU atual. O decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual adicionando-se as amostras dos blocos preditivos para as PUs da CU atual às amostras correspondentes dos blocos de transformada das TUs da CU atual. Através da reconstrução dos blocos de codificação para cada CU de uma figuração, o decodificador de vídeo 30 pode reconstruir a imagem.
[0086] Em alguns exemplos, o criptador 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, ao invés de realizar as técnicas de codificação de intrapreditivo ou interpreditivo descritas acima, o criptador de vídeo 20 e o decodificador de vídeo 30 podem codificar a então denominada paleta como uma tabela de cores ou valores de pixels que representa os dados de vídeo de uma área particular (por exemplo, um bloco determinado). Cada pixel pode estar associado a uma entrada na paleta que representa a cor do pixel. Por exemplo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem codificar um índice que relaciona o valor de pixel ao valor apropriado na paleta.
[0087] No exemplo acima, o criptador de vídeo 20 pode criptar um bloco de dados de vídeo pela determinação de uma paleta for o bloco, localização de uma entrada na paleta para representar o valor de cada pixel, e criptação da paleta com índices de paleta para os pixels que relacionam o valor de pixel à paleta. O decodificador de vídeo 30 pode obter, a partir de um fluxo de bits criptado, uma paleta para um bloco, bem como índices de paleta para os pixels do bloco. O decodificador de vídeo 30 pode relacionar os índices de paleta dos pixels às entradas da paleta para reconstruir os valores de pixel do bloco.
[0088] Conforme notado acima, o criptador de vídeo 20 e o decodificador de vídeo 30 podem usar inúmeros modos de codificação de paleta diferentes para codificar índices de paleta de uma paleta. Por exemplo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem usar um modo Fuga, um modo CopyFromTop (também referido como modo Cópia Acima), ou um modo Valor (também referido como modo índice) para codificar de índices de paleta de um bloco. Em geral, a codificação de uma amostra com o uso de "modo Fuga" podem, em geral, se referir a codificação de uma amostra de um bloco que não tem uma cor correspondente representada em uma paleta para a codificação do bloco. Conforme notado acima, tais amostras podem ser referidas como amostras de fuga ou pixels de fuga.
[0089] Um outro exemplo, o modo de codificação de palete é descrito em um terceiro experimento principal de codificação de conteúdo de tela, subteste B.6, conforme descrito em Yu-Wen Huang et al, "Description of Screen Content Core Experiment 3 (SCCE3): Palette Mode", JCTVC-Ql 12.3, Valencia, ES, 27 de março a 4 de abril de 2014 (doravante no presente documento Q 1123), um outro modo foi introduzido no software liberado por Canon no dia 26 de maio de 2014. O macro para esse modo foi "CANON_NEW_RUN_LAST_TRANSlTION" e pode ser referido no presente documento como modo de execução de transição. A Execução de Transição pode ser similar ao modo Valor de modo que o criptador de vídeo 20 ou decodificador de vídeo 30 possa codificar um valor de índice seguido por uma execução que especifica o número de amostras subsequentes que têm o mesmo índice de paleta.
[0090] A diferença entre modo Valor e o modo de Execução de Transição é que o índice de paleta do modo de Execução de Transição não é sinalizado no fluxo de bits. De preferência, o criptador de vídeo 20 e o decodificador de vídeo 30 pode inferir o índice de paleta. Conforme descrito no presente documento, inferir um valor pode se referir à determinação de um valor sem a referência à sintaxe dedicada que representa o valor que é codificada em um fluxo de bits. Isto é, o criptador de vídeo 20 e o decodificador de vídeo 30 podem inferir um valor sem a codificação de um elemento de sintaxe dedicado para o valor em um fluxo de bits. O índice inferido pode ser referido como um índice de transição.
[0091] Em alguns exemplos, pode haver duas maneiras de sinalização dos modos de paleta. Uma primeira técnica para sinalizar os modos de paleta pode ser referida como sinalização de fuga explícita. Por exemplo, em JCTVC- Q0094, se o macro "PLT REJVIOVE ESCAPE FLAG" for zero, o criptador de vídeo 20 pode explicitamente criptar um sinalizador de fuga para cada amostra de um bloco para indicar se uma amostra que é codificada em um bloco é codificada no modo Fuga. Se a amostra não for codificada com o modo Fuga, o criptador de vídeo 20 pode criptar os dados adicionais para indicar se o modo é CopyFromTop ou Valor. Em alguns casos, os dados adicionais podem ser um sinalizador, referido no presente documento como um sinalizador SPoint (por exemplo, um valor de sinalizador SPoint de zero pode indicar o modo CopyFromTop e um valor de sinalizador SPoint de um pode indicar o modo Valor ou vice versa).
[0092] No presente documento, com a sinalização de fuga explícita, o sinalizador SPoint pode ser usado para indicar um tipo de execução particular para uma execução de valores de pixel associada ao modo indicado. Por exemplo, o criptador de vídeo 20 pode criptar um sinalizador SPoint para indicar se o índice que é atualmente codificado e uma execução de índices de paleta subsequentes que é codificada em uma execução são codificados com o uso de modo CopyFromTop ou modo Valor. O criptador de vídeo 20 não cripta o sinalizador de fuga (por exemplo, "PLT_REMOVE_ESCAPE_FLAG") e o sinalizador SPoint (quando for necessário) para as amostras de execução subsequentes. Isto é, o criptador de vídeo 20 e o decodificador de vídeo 30 podem inferir os valores do sinalizador de fuga e sinalizador SPoint para amostras incluídas em uma paleta. Por exemplo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem determinar o valor do sinalizador de fuga e sinalizador SPoint para amostras incluídas em uma execução sem a referência à sintaxe dedicada que represente tais valores no fluxo de bits.
[0093] Uma segunda técnica para sinalizar os modos de paleta pode ser referida como sinalização de fuga implícita. Por exemplo, se o macro "PLT_REMOVE_ESCAPE_FLAO" de JCTVC-Q0094 for um, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para aumentar o número de entradas de paleta de uma paleta por um para acomodar um índice especial para a paleta que não corresponde a qualquer entrada de paleta. Em alguns exemplos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem incluir o índice adicional como o último índice de paleta na paleta aumentada para um determinado bloco. O índice adicional pode ser usado como uma indicação de modo Fuga.
[0094] Ao realizar a sinalização de fuga implícita, o criptador de vídeo 20 pode criptar, para um valor de amostra particular de um bloco, os dados que representa o índice adicional para indicar que a amostra adicional é codificada como uma amostra de fuga (por exemplo, uma amostra que não tem um valor de cor representado em uma paleta para a codificação do bloco). O criptador de vídeo 20 também pode criptar o valor(es) de cor da amostra de fuga. Consequentemente, no caso de sinalização de fuga implícita, há apenas dois modos possíveis (por exemplo, modo CopyFromTop ou modo Valor (também referido como modo Índice)) para ser sinalizado com o uso de sintaxe explícita. Por exemplo, apenas o sinalizador SPoint pode ser sinalizado para se distinguir entre os modos. Se uma amostra for codificada no modo Valor e o índice para o modo Valor for igual ao índice de fuga (por exemplo, o índice adicional notado acima para a paleta), o criptador de vídeo 20 e o decodificador de vídeo 30 podem inferir a amostra para ser codificada como uma amostra de fuga. Nesse caso, nenhuma execução é sinalizada. Ao usar a sinalização de fuga implícita com o modo de Execução de Transição, o sinalizador SPoint pode assumir os valores 0 (por exemplo, modo Valor), 1 (por exemplo, modo CopyFromTop) ou 2 (por exemplo, modo de Execução de Transição).
[0095] As técnicas descritas nesta revelação podem incluir técnicas para várias combinações de um ou mais dentre os modos de codificação com base em paleta de sinalização, paletas de transmissão, paletas de derivação e mapas de codificação com base em paleta de transmissão e outros elementos de sintaxe. Em alguns exemplos, as técnicas desta revelação podem ser usadas para solucionar redundâncias potenciais associadas à sinalização dos modos de paleta, índices de paleta, execuções e tamanhos de paleta que estão presentes em JCTVC-Q0094 (bem como o software de referência que implanta o modo de paleta que foi carregado com a contribuição JCTVC-Q0094).
[0096] No software associado às técnicas descritas em JCTVC-Q0094, certas redundâncias de sinalização já foram consideradas e removidas. Por exemplo, em JCTVC-Q0094, o sinalizador SPoint não é sinalizado para as amostras na primeira fileira do bloco, devido ao fato de que um bloco codificado com o modo de paleta não pode usar tipicamente as amostras reconstruídas de um bloco vizinho acima para prever o bloco atual. Um bloco vizinho acima pode, em geral, se refere a um bloco que é vizinho e está posicionado acima de um bloco. De modo semelhante, se o modo para uma amostra que precede uma amostra que é atualmente codificada for CopyFromTop, o modo para o pixel atual não pode ser CopyFromTop.
[0097] Esta revelação, no entanto, reconhece outras redundâncias de sinalização e/ou ineficiências, que podem ser removidas junta ou seletivamente. Conforme descrito em maiores detalhes abaixo, as técnicas aprimoram a eficiência de taxa de bits de codificação de vídeo sem afetar materialmente a distorção. Como um exemplo, se a amostra diretamente acima de uma amostra atual for uma amostra de fuga, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para não codificar a amostra atual com o uso de modo CopyFromTop. Nesse caso, o criptador de vídeo 20 não pode sinalizar o SPoint para a amostra e o criptador de vídeo 20 e o decodificador de vídeo 30 podem inferir o sinalizador SPoint para ser igual ao modo Valor se for necessário.
[0098] Em outro exemplo, de acordo com as técnicas desta revelação, se nem a amostra anterior nem a amostra diretamente acima da amostra atual em um bloco forem amostras de fuga e a amostra anterior e a amostra acima têm o mesmo índice de paleta, o criptador de vídeo 20 e o decodificador de vídeo 30 são configurados para não codificar a amostra atual com o uso de modo CopyFromTop. Isso se deve ao fato de que, para o modo CopyFromTop, o índice da amostra atual seria igual à amostra anterior. Se o modo para a amostra anterior for modo Valor, a execução associada a um modo Valor seria estendida por um para incorporar a amostra atual. Por outro lado, se o modo para a amostra anterior tiver sido CopyFromTop, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para não codificar a amostra atual com o uso de modo CopyFromTop, conforme observado acima. Desse modo, nesse caso, o criptador de vídeo 20 não pode sinalizar o sinalizador SPoint para a amostra atual, e o criptador de vídeo 20 e o decodificador de vídeo 30 podem inferir o sinalizador SPoint para ser igual ao modo Valor se for necessário.
[0099] Em outro exemplo, de acordo com as técnicas desta revelação, se a execução anterior for maior do que ou igual a uma largura do bloco que é codificado menos um, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para não codificar a amostra atual com o uso de modo CopyFromTop. Visto que o modo CopyFromTop pode não seguir o modo CopyFromTop, conforme descrito acima, o criptador de vídeo 20 e o decodificador de vídeo 30 podem inferir que se o modo associado à amostra anterior é codificado com o uso de modo CopyFromTop, o modo da amostra atual não pode ser codificado com o uso do modo CopyFromTop. Se a execução anterior tiver sido codificada com o uso do modo Valor e a execução anterior tiver sido maior do que ou igual à largura do bloco menos um, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para determinar que os índices de paleta para a amostra anterior e a amostra diretamente acima da amostra atual são iguais (de uma maneira similar ao exemplo descrito acima). Nesse caso, se a amostra atual não pode ter o mesmo índice, que torna impossível o modo CopyFromTop. Desse modo, nesse caso, o criptador de vídeo 20 não pode sinalizar o sinalizador SPoint para a amostra atual, e o criptador de vídeo 20 e o decodificador de vídeo 30 podem inferir o sinalizador SPoint para ser igual ao modo Valor se for necessário.
[0100] Em outro exemplo, de acordo com os aspectos desta revelação, se o tamanho de paleta for um para um bloco que é codificado ao usar a sinalização de fuga explícita, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para não codificar certos índices de paleta, tais como os índices de paleta descritas no Pedido Provisório no U.S. 61/845,824, depositado no dia 12 de junho de 2013, Pedido Provisório no U.S. 61 /899.048, depositado no dia 1o de novembro de 2013, ou Pedido Provisório no U.S. 61/913.040, depositado no dia 6 de dezembro de 2013. Além disso, o criptador de vídeo 20 pode ser configurado para não codificar o sinalizador SPoint, visto que o criptador de vídeo 20 e o decodificador de vídeo 30 podem inferir o sinalizador SPoint para ser igual ao modo Valor se for necessário. Isso se deve ao fato de que, se a amostra atual não for codificada como uma amostra de fuga (por exemplo, uma amostra que não tem um valor de cor representado em uma paleta para a codificação do bloco), o índice de paleta para a amostra atual já é conhecido e derivado igual a zero (como o único índice de paleta possível). Nesse caso, apenas a execução é sinalizado. Se não for necessário distinguir entre os modos CopyFromTop e Valor, visto que ambos os modos fornecem um resultado idêntico. De modo semelhante, para a sinalização de fuga implícita, quando o tamanho de paleta for dois, o criptador de vídeo 20 pode sinalizar os índices de paleta para distinguir entre modos Valor e Fuga, mas a sinalização do sinalizador SPoint não é necessária pelas mesmas razões acima.
[0101] As técnicas desta revelação também podem ser usadas para remover as redundâncias ao usar de Valor, CopyFromTop, e modos de Execução de Transição. No presente documento, as técnicas podem aprimorar a eficiência de taxa de bits de codificação de vídeo sem afetar materialmente a distorção. Em um exemplo para propósitos de ilustração, uma amostra atual é codificada no modo Valor e o modo de Execução de Transição não é disponível para use (por exemplo, apenas os modos CopyFromAbove e Valor são disponíveis). Nesse exemplo, quando o modo para a amostra anterior for Valor, o índice da amostra atual não pode ser igual àquele da amostra anterior, de outro modo, a amostra atual está incluída no modo Valor anterior e o modo Valor é incrementado por um. De modo semelhante, quando o modo para a amostra anterior for CopyFromTop, o índice da amostra atual a ser codificada não pode ser igual àquele acima, de outro modo, a amostra atual é codificada com o modo CopyFromTop e, possivelmente, uma execução para o modo CopyFromTop seria incrementada por um.
[0102] Com a relação descrita acima em mente, o criptador de vídeo 20 e o decodificador de vídeo 30 podem reduzir o índice para a amostra atual por um quando o índice for maior do que o índice para a amostra anterior (por exemplo, se a amostra anterior estiver no modo Valor) ou a amostra de topo (por exemplo, se a amostra anterior estiver no modo CopyFromTop). Esse processo é descrito em C, Gisquet et at., "AFIG I0: Palette Index Coding", JCTVC- Q0064, Valencia, ES, 27 de março a 4 de abril de 2014 (doravante no presente documento JCTVC-Q0064). Além disso, o número de índices de paleta possíveis máximos pode ser reduzido por um, independente se a condição anterior é verdadeira (índice atual é maior do que os índices de paleta acima ou à esquerda anteriores). Por exemplo, ao usar um código de comprimento variável (por exemplo, tal como um código binário truncado) para codificar o índice, o número de entradas de paleta pode ser reduzido por um.
[0103] De acordo com os aspectos desta revelação, alternativa ou adicionalmente ao processo descrito acima, o processo de ajuste de índice no modo Valor pode ser adicionalmente modificado ao usar o modo de Execução de Transição. Por exemplo, de acordo com os aspectos desta revelação, se a amostra não for a primeira amostra no bloco e a amostra anterior não for codificada como uma amostra de fuga, o criptador de vídeo 20 e o decodificador de vídeo 30 podem realizar o processo de ajuste de índice descrito abaixo.
[0104] De acordo com os aspectos desta revelação, se a amostra anterior for codificada no modo Valor ou Execução de Transição, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para diminuir o número de entradas de paleta por um. Além disso, se o valor de índice for maior do que ou igual ao valor de índice da amostra anterior (índice ou índice de transição), o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para diminuir o valor de índice atual por um. Esta revelação pode se referir a esse valor decrescido como o valor de índice ajustado. Desse modo, se o valor de índice para a amostra anterior não for igual ao índice de transição e o número de entradas de paleta for maior do que um, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para ajustar uma "atualização" variável para um, de outro modo, ajustar a "atualização" para zero. Se a atualização for igual a um, o criptador de vídeo 20 e o decodificador de vídeo 30 podem diminuir adicionalmente o número de entradas de paleta por um. Esta revelação pode se referir ao número decrescido de entradas de paleta como o tamanho de paleta ajustado.
[0105] Além disso, se o índice de transição for maior do que ou igual ao valor de índice para a amostra anterior, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para diminuir o índice de transição por um. Esta revelação pode se referir ao índice de transição decrescido como o valor de índice de transição ajustado. Se a atualização for igual a um e o valor de índice ajustado for maior do que o valor de índice de transição ajustado, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para adicionalmente diminuir o valor de índice ajustado por um. Adicionalmente, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para realizar o último ajuste de índice apenas se o tamanho de paleta ajustado for maior do que um. Isso se deve ao fato de que o valor de índice ajustado pode ser apenas sinalizado se o tamanho de paleta ajustado for maior do que um.
[0106] Se o tamanho de paleta ajustado for maior do que um, o criptador de vídeo 20 pode criptar uma indicação do valor de índice ajustado, levando em consideração que o número possível máximo de índices de paleta pode ser igual ao tamanho de paleta ajustado. Nesse caso, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar a binarização truncada para a codificação, tal como a codificação binária truncada descrita no presente documento.
[0107] Em alguns exemplos, de acordo com os aspectos desta revelação, um processo similar como o processo descrito acima pode ser realizado pela verificação do valor de pixel e modo usado para o pixel diretamente acima da amostra atual. Isto é, o processo descrito acima em relação a um pixel posicionado para a esquerda do pixel atual pode ser realizado, em vez disso, para pixels vizinhos superiores, em que o valor de amostra à esquerda e modo descrito acima é substituídos pelo valor de pixel e modo acima.
[0108] Por exemplo, se a amostra não estiver na primeira fileira e a amostra anterior for codificada no modo CopyFromTop e a amostra acima não for codificada como uma amostra de fuga, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para diminuir o número de entradas de paleta por um. Além disso, se o valor de índice atual for maior do que ou igual ao valor de índice da amostra diretamente acima, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para diminuir o valor de índice atual por um. Novamente, esse valor decrescido de índice pode ser referido como o valor de índice ajustado. Desse modo, se o valor de índice para a amostra diretamente acima não for igual ao índice de transição e o número de entradas de paleta for maior do que um, o criptador de vídeo 20 pode definir uma atualização variável para um, de outro modo, definir a atualização para zero.
[0109] Se atualização for igual a um, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para diminuir adicionalmente o número de entradas de paleta por um, que pode ser referido como o tamanho de paleta ajustado. Além disso, se o índice de transição for maior do que ou igual ao valor de índice para a amostra acima, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para diminuir o índice de transição por um, que pode ser referido como o valor de índice de transição ajustado. Se atualização for igual a zero e o valor de índice ajustado for maior do que o valor de índice de transição ajustado, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para diminuir o valor de índice ajustado por um. Adicionalmente, o último ajuste de índice pode ser realizado apenas se o tamanho de paleta ajustado for maior do que um, devido ao fato de que o valor de índice ajustado é tipicamente apenas sinalizado se o tamanho de paleta ajustado for maior do que um.
[0110] Se o tamanho de paleta ajustado for maior do que um, o criptador de vídeo 20 pode ser configurado para criptar uma indicação do valor de índice ajustado, e pode, em alguns exemplos, assumir o número possível máximo de índices de paleta igual ao tamanho de paleta ajustado em consideração. Nesse caso, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar a binarização truncada, tal como a codificação binária truncada descrita no presente documento.
[0111] A remoção de redundância na sinalização de índice de paleta em conexão com o modo de Execução de Transição é descrita acima. Entretanto, essas técnicas podem ser combinadas com um método de Execução Limitada, conforme descrito abaixo e no Pedido Provisório no U.S. 62/002.717 depositado no dia pode 23 de 2014 e Pedido Provisório no U.S. 62/009.772, depositado no dia 9 de junho de 2014. Nesse caso, acima de um certo valor de índice de paleta, a execução sempre é igual a zero e, por conseguinte, para aqueles índices de paleta, o criptador de vídeo 20 pode ser configurado para não criptar uma indicação do valor de execução. Ao invés disso, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para derivar o valor de execução para ser igual a zero. Para essa combinação, as técnicas descritas acima em relação ao modo de Execução de Transição permanecem inalteradas. Isto é, por exemplo, as técnicas de remoção de redundância descritas acima também podem ser usadas com o modo Execução Limitada.
[0112] Adicional ou alternativamente, as técnicas desta revelação também podem ser combinadas com a técnica de Execução Limitada conforme proposto no documento de submissão padrão Guillaume Laroche et at., "AHG IO: Run Coding for Palette Mode", JCTVC-Q0066, Valencia, ES, 27 de março a 4 de abril de 2014 (doravante no presente documento JCTVC-Q0066). Nesse exemplo, um índice limite também é especificado. Entretanto, uma diferença com a técnica de Execução Limitada descrita acima é que os índices de paleta maior do que um índice limite também podem ter execuções de um ou mais. Entretanto, o criptador de vídeo 20 não pode sinalizar as execuções. Ao implantar essa segunda técnica de Execução Limitada, as técnicas de remoção de redundância desta revelação podem ser apenas aplicadas se o valor de índice do pixel anterior for menor do que ou igual ao valor de índice limite, ou o valor de índice do pixel acima for menor do que ou igual ao valor de índice limite.
[0113] As técnicas descritas acima são geralmente descritas em relação a um criptador de vídeo (tal como, criptador de vídeo 20). No lado de decodificador (conforme implantado, por exemplo, pelo decodificador de vídeo 30), com o uso das mesmas condições como no lado de criptador, o decodificador de vídeo 30 também pode ajustar o número de entradas de paleta e o índice de transição. O decodificador de vídeo 30 pode, desse modo, decodificar o índice com o uso do número ajustado de entradas de paleta. O índice decodificado pode ser incrementado (em vez de decrescido) com o uso das mesmas condições como no lado de criptador.
[0114] Certas técnicas descritas reduzem a redundância em exemplos que o modo CopyFromTop não é possível e, por conseguinte, a sinalização do sinalizador SPoint pode ser modificada de modo que o criptador de vídeo 20 e o decodificador de vídeo 30 possam inferir o modo Valor. De acordo com os aspectos desta revelação, as técnicas de redução de redundância podem ser estendidas para o caso em que o modo de Execução de Transição também está sendo usado. Nesse caso, modo CopyFromTop não é possível e qualquer uma das seguintes condições são verdadeiras:
[0115] 1. A amostra está na primeira fileira.
[0116] 2. O modo para a amostra anterior é CopyFromTop.
[0117] 3. O pixel acima é codificado no modo Fuga e a amostra não está na primeira fileira e a amostra anterior não é codificada no modo CopyFromTop.
[0118] 4. A amostra acima e a amostra anterior têm o mesmo índice e a amostra anterior não é codificada no modo Fuga.
[0119] As técnicas desta revelação também fornecem uma alternativa para sinalizar explicitamente um sinalizador de fuga para o modo Fuga de paleta. Por exemplo, em vez de sinalizar o sinalizador de fuga antes do sinalizador SPoint com a sinalização de fuga explícita, de acordo com os aspectos desta revelação, a ordem dos sinalizadores pode ser trocada embora também altere as semânticas daqueles sinalizadores. Nesse caso, o criptador de vídeo 20 pode sinalizar o sinalizador SPoint primeiro em um fluxo de bits. Nesse exemplo, um sinalizador SPoint que é igual a um pode indicar o modo Valor, enquanto um sinalizador SPoint que é igual a zero pode indicar que o modo de paleta para uma amostra atual é CopyFromTop ou fuga. Além disso, quando o sinalizador SPoint for igual a um, o criptador de vídeo 20 pode sinalizar um sinalizador de fuga para diferenciar entre modo CopyFromTop e modo Fuga.
[0120] Nos exemplos acima, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar CAB AC para codificar pelo menos um dos sinalizadores descritos acima ou ambos os sinalizadores descritos acima (por exemplo, o sinalizador SPoint ou o sinalizador de fuga). Alternativamente, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar tais sinalizadores com o uso de modo de desvio de CABAC para reduzir o número de bins codificados de contexto.
[0121] Conforme descrito acima, o modo CopyFromTop não pode ser possível sob certas condições. Em tais casos, ao usar um método de sinalização alternado (por exemplo, tal como troca dos sinalizadores), o criptador de vídeo 20 pode ser configurado apenas para sinalizar o sinalizador SPoint sem a sinalização do sinalizador de fuga. Nesse caso, o sinalizador SPoint pode ter uma semântica diferente. Por exemplo, um sinalizador SPoint que é igual a um ainda pode indicar que o modo é modo Valor, mas um sinalizador SPoint que é igual a zero pode indicar um modo Fuga. Se o sinalizador SPoint for codificado pelo contexto com o uso de CABAC, um contexto separado adicional pode ser usado para codificar o valor de sinalizador SPoint em casos quando o modo CopyFromTop é impossível. No caso de um tamanho de paleta que é um e um modo Fuga que é usado, conforme descrito acima, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para omitir a codificação do sinalizador SPoint ao usar o método de sinalização alternado.
[0122] As técnicas desta revelação também fornecem uma outra técnica de sinalização alternativa (por exemplo, em relação a JCTVC-Q0094) para sinalizar um sinalizador de fuga para o modo Fuga de paleta. Por exemplo, em JCTVC-Q0094, certas redundâncias de sinalização foram consideradas e removidas no software de referência. Como um exemplo, ao codificar uma amostra atual, se um modo de paleta para uma amostra anterior for CopyFromTop, o criptador de vídeo 20 e o decodificador de vídeo 30 não podem codificar o pixel atual com o uso de modo CopyFromTop. De modo semelhante, se o modo para a amostra anterior for o modo Valor com índice de paleta "X", o criptador de vídeo 20 e o decodificador de vídeo 30 não podem codificar o pixel atual com o uso de modo Valor com o mesmo índice de paleta "X". No estágio de análise (por exemplo, ao analisar os elementos de sintaxe a partir de um fluxo de bits criptado no decodificador de vídeo 30), o decodificador de vídeo 30 verifica as condições notadas acima para determinar quais elementos de sintaxe são permitidos a fim de ler o fluxo de bits adequadamente. Esse processo de verificação pode se tornar oneroso se muitas dessas condições tiverem que ser verificadas.
[0123] De acordo com os aspectos desta revelação, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para "reutilizar" as redundâncias notadas acima para sinalizar implicitamente o modo Fuga. Por exemplo, ao codificar uma amostra atual de um bloco, se uma amostra anterior for codificada com o uso de modo CopyFromTop e o modo para o pixel atual também é sinalizado como CopyFromTop, o decodificador de vídeo 30 pode inferir que o modo para o bloco atual é o modo Fuga. Isto é, o criptador de vídeo 20 pode usar a redundância de duas amostras em uma fileira que é codificada com modo CopyFromTop para sinalizar o modo Fuga. De modo semelhante, se o modo para a amostra anterior para uma amostra que é atualmente codificada for modo Valor com índice de paleta "X" e o modo sinalizado for modo Valor com o mesmo índice de paleta "X", o decodificador de vídeo 30 pode inferir o modo para o bloco atual para ser modo Fuga. De modo semelhante, outras redundâncias descritas acima também podem ser aproveitadas dessa maneira.
[0124] Nos exemplos descritos acima, o modo Fuga de sinalização com base nas redundâncias não inclui todas as possíveis situações em que o criptador de vídeo 20 pode sinalizar o modo Fuga. Consequentemente, essas técnicas podem ser usadas como uma maneira complementar para sinalizar o modo Fuga. Em outros exemplos, as técnicas podem ser impostas no fluxo de bits, de modo que o modo Fuga apenas possa ser sinalizado nessas situações limitadas.
[0125] As técnicas desta revelação também se referem à sinalização de que uma amostra é uma amostra de fuga para um tamanho de paleta que é igual a zero. Por exemplo, de acordo com os aspectos desta revelação, se um tamanho de paleta de uma paleta associada a um bloco que é atualmente codificada for igual a zero ao usar a sinalização de fuga explícita, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para inferir que todas as amostras no bloco são codificadas como amostras de fuga. Isto é, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para determinar que todas as amostras no bloco são codificadas como amostras de fuga (por exemplo, amostras que não têm um valor de cor representado em uma paleta para a codificação do bloco) sem a criptação ou decodificação de sintaxe dedicada que representa o modo Fuga em um fluxo de bits. Do mesmo modo, se um tamanho de paleta de uma paleta associado a um bloco que é atualmente codificada for igual a um ao usar a sinalização de fuga implícita (por exemplo, apenas o índice da paleta é o índice adicional usado para sinalizar o modo Fuga, conforme descrito acima), o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para inferir que todas as amostras no bloco são codificadas como amostras de fuga.
[0126] Em ambos os exemplos descritos acima (por exemplo, tanto para a sinalização de fuga implícita quanto explícita), o criptador de vídeo 20 e o decodificador de vídeo 30 podem omitir a codificação de certa sintaxe com base em paleta para o resto do bloco. Por exemplo, para a sinalização de fuga explícita, o criptador de vídeo 20 não pode sinalizar um sinalizador de fuga para amostras do bloco. Além disso, tanto para a sinalização de fuga implícita quanto explícita, o criptador de vídeo 20 não pode sinalizar o sinalizador SPoint (tanto para a sinalização de fuga explícita quanto implícita). Isto é, devido ao fato de que todas as amostras para o bloco podem ser inferidas para serem amostras de fuga, o criptador de vídeo 20 não precisa sinalizar o sinalizador Spoint para distinguir entre os modos CopyFromTop e Valor. O decodificador de vídeo 30 pode, de modo semelhante, omitir a decodificação de tal sintaxe, que pode aprimorar a taxa de bits e a eficiência de codificação.
[0127] Em um exemplo alternativo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem restringir o tamanho de paleta para ser pelo menos um em um projeto normativo. Nesse exemplo, o criptador de vídeo 20 pode ser configurado para modificar a sinalização do tamanho de paleta de modo que (tamanho de paleta - I) seja sinalizado. Por exemplo, quando um indicador de paleta for usado (por exemplo, conforme descrito em maiores detalhes em relação ao exemplo da Figura 4), para cada entrada do indicador de paleta, o criptador de vídeo 20 pode criptar um sinalizador de bit para indicar se o respectivo indicador de entradas de paleta está incluído em uma paleta de um bloco atual. Essas entradas são referidas como as entradas de paleta previstas e são indicadas por um vetor binário de previsão de paleta (por exemplo, a coluna de sinalizadores de bit). O criptador de vídeo 20 também pode sinalizar o número de novas entradas de paleta após as entradas previstas. Em outros exemplos, o criptador de vídeo 20 pode sinalizar o número de novas entradas de paleta antes das entradas previstas. Em qualquer caso, se o número das entradas de paleta previstas for zero, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar os dados que indicam (número de novas entradas de paleta - 1) em vez de codificar o número de novas entradas de paleta.
[0128] Em outro exemplo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para restringir o modo de paleta de modo que um tamanho de paleta não deva ser igual a 0. Por exemplo, essa restrição pode ser alcançada como uma restrição de fluxo de bits, isto é, um fluxo de bits não pode conter um bloco codificado de paleta com um tamanho de paleta igual a zero.
[0129] As técnicas desta revelação também se referem ao tamanho de paleta de sinalização. Por exemplo, o tamanho de paleta para um bloco atual (por exemplo, uma CU que é atualmente codificada pelo criptador de vídeo 20 ou decodificador de vídeo 30) pode ser explicitamente sinalizado (por exemplo, conforme revelado, por exemplo, no Pedido no U.S. 14/244.688, depositado no dia 3 de abril de 2014 e Pedido no U.S. 14/244.711, depositado no dia 3 de abril de 2014). Em tais exemplos, o tamanho de paleta inclui tanto as entradas de paleta previstas (por exemplo, determinadas com o uso de um indicador de paleta) quanto as novas entradas de paleta (por exemplo, conforme explicitamente sinalizado no fluxo de bits).
[0130] De acordo com os aspectos desta revelação, se o tamanho de paleta for sinalizado, pode não haver necessidade de sinalizar o número de novas entradas, visto que o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para derivar o número de novas entradas de paleta para um bloco a partir do número de entradas previstas e o tamanho de paleta (por exemplo, tamanho de paleta - número de entradas previstas = número de novas entradas). Além disso, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para terminar a previsão de entradas de paletas anteriores quando o tamanho de paleta for sinalizado e aquele número de tamanho sinalizado é alcançado ao construir a paleta para um bloco atual.
[0131] Em alguns exemplos, o tamanho de paleta pode ser previsto a partir das paletas anteriores e o criptador de vídeo 20 pode ser configurado para sinalizar apenas a diferença. O criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar a diferença entre o tamanho de paleta e o tamanho de paleta previsto para um bloco com o uso de um código de comprimento fixo, unário truncado ou Golomb exponencial. Em alguns casos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para tornar a previsão dependente (por exemplo, com base em) do tamanho de bloco que é codificado. Por exemplo, para um bloco 8x8, o tamanho de paleta pode ser previsto a partir da paleta associada ao último bloco codificado 8x8 com o uso de modo de paleta (por exemplo, o 8x8 mais recentemente codificada em ordem de varredura antes do bloco atual). Do mesmo modo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para prever um tamanho de paleta para um bloco 16x16 com base em uma paleta de um anteriormente bloco 16x16 codificado e uma relação similar pode ser estendida para os blocos de outros tamanhos. Alternativamente, em um outro exemplo, um tamanho de paleta pode ser previsto a partir do último bloco codificado com tamanho menor ou igual ao tamanho de bloco atual.
[0132] As técnicas desta revelação também se referem à sinalização de um tamanho de paleta máximo e/ou um tamanho de indicador de paleta máximo. Por exemplo, de acordo com os aspectos desta revelação, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar os dados que indicam um tamanho de paleta máximo e/ou um tamanho de indicador de paleta máximo. Em alguns exemplos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar tais dados de um SPS. A codificação de dados que indica um tamanho de paleta máximo e/ou um tamanho de indicador de paleta máximo pode fornecer flexibilidade, por exemplo, permitir que o criptador de vídeo 20 e decodificador de vídeo 30 usem as paletas e indicadores de paleta de diferentes tamanhos para diferentes perfis, níveis, profundidades de bit, tamanhos de bloco, ou similares. No contexto de um padrão de codificação de vídeo, um perfil pode corresponder a um subconjunto de algoritmos, recursos ou ferramentas e restrições que se aplicam aos mesmos. Por exemplo, um perfil pode ser um subconjunto de uma sintaxe de fluxo de bits total que é especificada por um particular. Um nível pode corresponder às limitações do consumo de recurso de decodificador, tais como, por exemplo, memória e decodificação e computação, que podem ser relacionadas à resolução de figurações, taxa de bits e taxa de processamento de macrobloco. Um profile pode ser sinalizado com um valor profile__idc (indicador de perfil), embora um nível possa ser sinalizado com um valor level_idc (indicador de nível).
[0133] De acordo com os aspectos desta revelação, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar as informações em relação a um tamanho de paleta máximo para determinar os elementos e sinalizadores associados ao modo de paleta, por exemplo, a sinalização do número de novas entradas de paleta. Como um exemplo, um tamanho de paleta possível máximo pode ser denotado pelo MAX_PLT_SIZE, que pode ser criptado pelo criptador de vídeo 20 e decodificado pelo decodificador de vídeo 30. De modo semelhante, um tamanho possível máximo de um vetor de indicador de paleta pode ser denotado por MAX_PLT_PREDICTOR_SIZE, que pode ser criptado pelo criptador de vídeo 20 e decodificador pelo decodificador de vídeo 30.
[0134] Como outro exemplo, de acordo com os aspectos desta revelação, o criptador de vídeo 20 e o decodificador de vídeo 30 podem codificar dados que indicam o número de "um" em um vetor binário de previsão de paleta (por exemplo, que pode representar o número de entradas do indicador de paleta que é copiado para uma paleta para a codificação de um bloco atual). Em alguns casos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar um elemento de sintaxe numPredPalette para indicar o número das entradas de paleta previstas. Se o valor de numPredPalette for igual ao valor de MAX_PLT_SIZE (isto é, o tamanho de paleta máximo), o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para omitir a codificação do número de novas entradas de paleta juntamente. De outro modo, se o valor de numPredPaletie for menor do que o valor de MAX_PLT_SIZE, o criptador de vídeo 20 e o decodificador de vídeo 30 podem usar uma binarização truncada com base em (MAX_PLT_SIZE-numPredPalette), que é o valor máximo possível para o número de novas entradas de paleta, para codificar os dados que indicam o número de novas entradas.
[0135] Em geral, a binarização truncada pode incluir qualquer técnica que use informações sobre um valor máximo possível de um parâmetro em particular que é sinalizado (por exemplo, tal como o número de novas entradas de paleta) diminuindo-se o comprimento de algumas palavras de código usadas no método de binarização do parâmetro enquanto se mantêm a capacidade de decodificação única. Por exemplo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para construir um código binário truncado com o uso de um valor máximo de um determinado parâmetro (por exemplo, tal como o número de novas entradas de paleta). As técnicas exemplificativas para codificação binária truncada são descritas em http://en.wikipedia.org/wiki mncated_binaiy_encoding.
[0136] De modo semelhante, o criptador de vídeo 20 e o decodificador de vídeo 30 podem usar códigos Golomb-Rice ou Golomb exponencial ou unário truncados para sinalizar e decodificar o número de novas entradas de paleta, com base em um valor máximo possível do número de novas entradas de paleta. Por exemplo, se (MAX_PLT_SIZE - numPredPalette) = 3, então, o criptador de vídeo 20 pode usar um código unário truncado para sinalizar três como 000 em vez de 0001 (por exemplo, como seria sinalizado ao usar o código unário regular). No caso dos códigos Golomb-Rice ou Golomb exponencial truncados, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para reduzir o comprimento do prefixo para o intervalo que contém o valor máximo por um. Desse modo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para alterar o prefixo de 000 ... 001 a 000 ... 000. De modo semelhante, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para reduzir o número de bits de sufixo no método de binarização para aquele intervalo que depende do valor máximo.
[0137] Para grandes blocos (e/ou grandes CUs), o tamanho de paleta tende a ser o tamanho de paleta máximo. Portanto, em alguns casos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para mapear a binarização de (MAX_PLT_SIZE - numPredPaletie) no inverso da maneira usual, ou seja, com os comprimentos de palavra de código mais curtos atribuídos aos maiores valores de (MAX_PLT_SIZE - numPredPaletie) e os comprimentos de palavra de código mais longos atribuídos aos menores valores de (MAX_PLT_SIZE - numPredPaletie). Em alguns exemplos, em vez usar zeros (O's) seguidos por um (1) para sinalizar códigos unários truncados/unários ou como um prefixo de Golomb-Rice ou Golomb exponencial ou Golomb-Rice concatenado e família de Golomb exponencial de códigos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar uns (l's) seguidos por um zero (0)0.
[0138] Além disso, outras variações são possíveis. Por exemplo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para interpretar o primeiro bit em tais códigos como um sinalizador para indicar se o número de novas entradas é zero ou diferente de zero. O criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para interpretar os bits restantes como inúmeras novas entradas de paleta menos 1. Em um exemplo para propósitos ilustrativos, um valor máximo de novas entradas de paleta pode ser oito e o número de novas entradas de paleta pode ser três. Com o uso de código unário truncado, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para determinar a binarização como sendo 0001. Se o criptador de vídeo 20 e decodificador de vídeo 30 forem configurados para interpretar o primeiro bit como um sinalizador (por exemplo, 0: uma ou mais novas entradas de paleta, 1 : novas entradas de paleta de zero), o resto dos bits (001) indicam que há duas novas entradas de paleta. Ao usar os códigos truncados, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para ajustar o valor máximo para baixo por um.
[0139] Em outros exemplos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para interpretar o sinalizador descrito acima ao contrário. Nesse caso, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para interpretar um valor de sinalizador de 1 como uma ou mais novas entradas de paleta e um valor de sinalizador de 0 como novas entradas de paleta de zero. Em tal caso, os bits para a sinalização de três novas entradas de paleta com um valor máximo de oito são 1001.
[0140] Em outros exemplos, o conceito do sinalizador descrito acima pode ser estendido para outros códigos tal como Golomb exponencial, Golomb-Rice ou similares. Por exemplo, quando o valor máximo para novas entradas de paleta for diferente de zero, o criptador de vídeo 20 pode ser configurado para sinalizar um sinalizador que indica se há novas entradas diferente de zero, se o sinalizador indicar que houve novas entradas diferentes de zero, o número de novas entradas menos um pode ser sinalizado com o uso de Golomb exponencial, Golomb-ice, concatenação de Golomb exponencial e Golomb-Rice ou códigos similares ou suas versões truncadas. Quando as versões truncadas forem usadas, o valor máximo pode ser ajustado para baixo por um.
[0141] Em alguns exemplos, o sinalizador pode ser codificado pelo contexto com o uso de CABAC, enquanto o resto dos bins (por exemplo, para novas entradas de paleta menos 1) pode ser codificado por desvio. Alternativamente, o sinalizador bem como o resto dos bins (para novas entradas de paleta menos 1) pode ser codificado por desvio. Em alguns casos, um número fixo de bins de prefixo da codificação para as novas entradas de paleta menos I pode ser codificado pelo contexto com o uso de CABAC e o resto dos bins pode ser codificado por desvio.
[0142] De acordo com os aspectos desta revelação, conforme observado acima, o MAX_PLT_SIZE de elemento de sintaxe pode ser sinalizado em um conjunto de parâmetros, tal como um SPS. Em outros exemplos, o MAX_PLT_SIZE de elemento de sintaxe pode ser sinalizado em um VPS, conjunto de parâmetros de figuração (PPS), cabeçalho de fatia, em um nível de bloco (por exemplo, com sintaxe sinalizado para uma LCU ou CIJ) ou em outro lugar. Em alguns exemplos, de acordo com os aspectos desta revelação, diferentes tamanhos de paleta máximos podem ser especificados para diferentes tamanhos de bloco. Em outros exemplos, o tamanho de paleta máximo pode depender de um perfil ou da profundidade de bit dos dados de vídeo que são codificados. Por exemplo, para uma profundidade de bit de entrada maior (ou profundidade de bit de perfil), o elemento de sintaxe MAX_PLT_SIZE pode ser usado para especificar um tamanho de paleta máximo relativamente maior. Ainda em outros exemplos, o tamanho de paleta máximo pode, adicional ou alternativamente, depender do formato chroma dos dados de vídeo que são codificados. Por exemplo, o elemento de sintaxe MAX_PLT_SIZE pode ser usado para especificar um tamanho de paleta máximo relativamente menor para entradas de monocroma do que para formatos de subamostragem croma 4:2:0, que pode, por sua vez, ter tamanhos menores do que entradas formatadas de subamostragem croma 4:4:4.
[0143] De acordo com os aspectos desta revelação, em vez de sinalizar o MAX_PLT_SIZE de elemento de sintaxe da maneira descrita acima, os dados que indicam (MAX_PLT_SIZE-1) podem ser sinalizados, devido ao fato de que um elemento de sintaxe de MAX_PLT_SIZE que é igual a zero pode ser inválido devido à desativação da paleta completamente.
[0144] Em um outro exemplo, em vez de sinalizar um sinalizador separado no VPS, SPS, PPS ou nível de cabeçalho de fatia para permitir/desativar o modo de paleta, o criptador de vídeo 20 pode ser configurado apenas para sinalizar o elemento de sintaxe de MAX_PLT_SIZE. Nesse exemplo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para interpretar um elemento de sintaxe de MAX_PLT_SIZE de 0 como modo de paleta de desativação. Isto é, mediante o recebimento de um elemento de sintaxe de tamanho de paleta (por exemplo, o elemento de sintaxe de MAX_PLT_SIZE), o decodificador de vídeo 30 pode determinar que o modo de paleta foi desativado com base no elemento de sintaxe. O elemento de sintaxe de MAX_PLT_SIZE ou (MAX_PLT_SIZE - 1) pode ser sinalizado com o uso de códigos de comprimento fixo (assumindo um limite normativo em MAX_PLT_SIZE) ou códigos de Goiomb-Rice ou Golomb exponencial.
[0145] Conforme notado acima, as técnicas desta revelação também incluem a codificação de dados que indicam um tamanho de indicador de paleta máximo. Por exemplo, de acordo com os aspectos desta revelação, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar um elemento de sintaxe de MAX_PLT_PREDICTOR_SIZE no VPS, SPS, PPS, cabeçalho de fatia, em um nível de bloco ou em outro lugar que indica um tamanho de indicador de paleta máximo. Em alguns exemplos, em vez de sinalizar o elemento de sintaxe de MAX_PLT_PREDICTOR_SIZE, (MAX_PLT_PREDICTOR_SIZE- 1) pode ser sinalizado. Ainda em outros exemplos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar outros dados que indicam um tamanho de indicador de paleta máximo.
[0146] Nos exemplos particulares descritos no presente documento, o elemento de sintaxe de MAX_PLT_PREDICTOR_SIZE ou (MAX_PLT_PREDICTOR_SIZE -1) pode ser sinalizado com o uso de códigos de comprimento fixo (por exemplo, assumindo um limite normativo em MAX_PLT_PREDICT0R_SIZE) ou códigos de Golomb-Rice ou Golomb exponencial, em alguns exemplos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para assumir (por exemplo, determinar automaticamente) que o tamanho indicado pelo elemento de sintaxe de MAX_PLT_PREDICTOR_SIZE é maior do que ou igual a um tamanho de paleta máximo (por exemplo, conforme indicado por um elemento de sintaxe de MAX_PLT_SIZE). Nesse exemplo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar (MAX_PLT_PREDICTOR_SIZE - MAX_PLT_SIZE) com o uso de códigos de comprimento fixo ou códigos de Golomb-Rice ou Golomb exponencial. Consequentemente, de acordo com os aspectos desta revelação, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar dados que indicam um delta (por exemplo, diferença) entre o tamanho de indicador de paleta máximo e o tamanho de paleta máximo.
[0147] Em exemplos em que o tamanho de paleta máximo e o tamanho de indicador de paleta máximo são sinalizado no nível de SPS, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar os dados que indicam o número de novas entradas com o uso de um código unário truncado. O número de novas entradas mais o número de entradas previsto a partir do indicador de paleta juntamente não pode exceder o tamanho de paleta máximo sinalizado no SPS. Entretanto, se o tamanho de paleta máximo sinalizado no SPS for relativamente grande, o número de novas entradas pode exceder 31. Nesse exemplo, o código unário truncado excede um comprimento de 32 bits, que pode ser indesejável para implantações de software e hardware.
[0148] Para abordar isso, de acordo com os aspectos desta revelação, em um exemplo, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para restringir o número de novas entradas de modo que o comprimento do codificador para sinalizar o número de novas entradas não exceda 32. Por exemplo, se um código unário truncado ou unário for usado para sinalizar o número de entradas, o número de novas entradas pode ser restringido para 31. Deve ser entendido que uma restrição de comprimento de 32 é meramente um exemplo (por exemplo, outras restrições de comprimento podem, alternativamente, ser usadas).
[0149] No esboço de especificação de texto de extensões de codificação de conteúdo de tela de HEVC 2, (Rajan Joshi et al., "High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 2," JCTVC-S1005, Sapporo, JP, 30 de junho a 9 de junho de 2014 (doravante no presente documento JCTVC-S 1005), o código unário truncado é usado para sinalizar o número de novas entradas de paleta com o valor máximo igual ao tamanho de paleta máximo sinalizado no SPS (palette_max_size) menos o número de entradas de paleta que é previsto a partir do indicador de paleta. Com o uso da restrição proposta, o valor máximo pode ser modificado para ser o menor de 32 e a diferença entre o tamanho de paleta máximo sinalizado no SPS (palette_max_size) e o número de entradas de paleta previsto do indicador de paleta. Se tal modificação para o valor máximo for realizada e a codificação unária truncada de JCTVC-S1005 for usada, o número máximo de novas entradas de paleta pode ser 32 (em vez de 31 ) sem o comprimento do codificador que excede 32 bits.
[0150] Em alguns exemplos, em vez da codificação unária truncada, se o criptador de vídeo 20 e o decodificador de vídeo 30 forem configurados para usar um outro código tal como Golomb exponencial ou sua versão truncada, as novas entradas de paleta permitidas máximas podem ser modificadas apropriadamente de modo que o comprimento não exceda 32. Se houver inúmeros valores que têm um comprimento de palavra de código de 32, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para escolher o valor máximo de tal valor a ser o valor permitido máximo para o número de novas entradas de paleta.
[0151] A restrição descrita no presente documento nas novas entradas de paleta de número máximo pode ser feita em uma restrição normativa. Por exemplo, o criptador de vídeo 20 pode ser configurado para gerar um fluxo de bits com a restrição e o decodificador de vídeo 30 pode ser configurado para depender da restrição em um fluxo de bits de conformação.
[0152] De acordo com os aspectos desta revelação, em um exemplo, o elemento de sintaxe palette_num_signaled_entries pode ser alterado em relação a JCTVC-S1005 conforme a seguir: o elemento de sintaxe palette_num_signaied_entries especifica o número de entradas na paleta atual que é explicitamente sinalizado. O valor do elemento de sintaxe palette_num_signaied_entries deve estar na faixa de 0 a 31, inclusive. Quando o elemento de sintaxe palette_num_signaied_entries não estiver presente, o mesmo é inferido para ser igual a 1.
[0153] Além disso, o valor do CurrentPaletteSize variável especifica o tamanho da paleta atual e é derivado conforme a seguir:
[0154] Se palette_share_flag [x0][y0] for igual a 1,
[0155] CurrentPaletteSize = PreviousPaletteSize (7-71)
[0156] De outro modo (palette_sbare_flag [x0][y0] é igual a 0)
[0157] CurrentPaletteSize = paletteNumPredicte dEntries + palette num signaled entries (7-72)
[0158] No exemplo acima, o valor de CurrentPaletteSize precisa estar na faixa de 0 a palette_max_size, inclusive.
[0159] De acordo com os aspectos desta revelação, se o valor máximo for modificado da maneira descrita acima, o valor do elemento palette_num_signaied_entries pode ser modificado de modo que o valor deva estar na faixa de 0 a 32, inclusive.
[0160] Em outro exemplo, o tamanho de paleta máximo pode ser sinalizado no SPS e pode ser limitado para 31. A limitação do tamanho pode ser realizada forçando-se um limite superior no elemento de sintaxe palette_max_size nas semânticas do elemento de sintaxe palette_max_size, de modo que o elemento de sintaxe palette_max_size especifique o tamanho de paleta permitido máximo. O valor de elemento de sintaxe de palette_max_size deve estar na faixa de 0 a 31, inclusive. Quando não estiver presente, o valor do elemento de sintaxe de palette_max_size é inferido como sendo 0. Em alguns exemplos, em vez de 31, o valor pode ser restringido para 32.
[0161] Em outro exemplo, o valor máximo do elemento de sintaxe palette_max_size pode ser restringido de modo que, se o número de novas entradas de paleta for igual ao palette_max_size, o criptador de vídeo 20 e o decodificador de vídeo 30 possam ser configurados para codificar o número de novas entradas de paleta com o uso de um código que não exceda 32 bits. Ainda em um outro exemplo, o valor máximo de número de novas entradas de paleta sempre pode ser limitado para 31, independente do codificador usado para codificar o valor máximo. Ainda em um outro exemplo, o valor máximo pode ser limitado para 32.
[0162] As técnicas desta revelação também se referem à sinalização de fuga no nível de bloco (por exemplo, para uma CU ou LCU). Por exemplo, de acordo com os aspectos desta revelação, um ou mais elementos de sintaxe podem indicar, no nível de bloco (por exemplo, um nível de CU), se qualquer uma das amostras do bloco for codificada como uma amostra de fuga (por exemplo, uma amostra que não tem um valor de cor representado em uma paleta para a codificação do bloco). Conforme notado acima, os um ou mais elementos de sintaxe podem ser referidos como sintaxe de fuga no nível de bloco. Novamente, a sintaxe no nível de bloco pode se referir à sintaxe que é codificada ou determinada com um bloco de dados de vídeo, tal uma CU ou LCU e não sintaxe que pode estar incluída em um cabeçalho de fatia ou com pixels individuais de dados de vídeo.
[0163] Em exemplos em que pelo menos uma amostra em um bloco de amostras codificadas com o uso de codificação de paleta é codificada como uma amostra de fuga, as técnicas desta revelação podem ser usadas para sinalizar a existência de tal modo. No exemplo para propósitos ilustrativos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar um sinalizador (que pode ser referido como um sinalizador de fuga no nível de bloco) que indica se qualquer uma das amostras do bloco que é codificado é codificada como uma amostra de fuga. Em alguns casos, um valor de sinalizador de zero pode indicar que nenhuma amostra ou pixel do bloco é codificada como amostras de fuga. Um valor de sinalizador de um pode indicar que pelo menos uma amostra ou pixel do bloco é codificada como uma amostra de fuga. No presente documento, a sintaxe de fuga no nível de bloco pode indicar, para todas as amostras de um bloco de dados de vídeo, se pelo menos uma amostra do bloco for codificada com/sem o uso de um índice para uma paleta de valores de cor para o bloco, por exemplo, ser codificada com o uso de modo Fuga.
[0164] De acordo com os aspectos desta revelação, a sintaxe descrita acima pode alcançar economias de bit em relação às técnicas de amostras de fuga de sinalização sem uma indicação no nível de bloco. Por exemplo, em exemplos em que a sintaxe indica que nenhuma amostra de um bloco é codificada como amostras de fuga, (por exemplo, o sinalizador descrito acima é zero), o criptador de vídeo 20 e o decodificador de vídeo 30 não podem codificar qualquer outra sintaxe associada às amostras de fuga para o bloco. Por exemplo, em relação à sinalização de fuga explícita descrita no presente documento, o criptador de vídeo 20 e o decodificador de vídeo 30 podem omitir a codificação dos sinalizadores de modo de fuga no nível de amostra. Em relação à sinalização de fuga implícita, o criptador de vídeo 20 e o decodificador de vídeo 30 podem omitir a codificação do índice adicional para a paleta que indica a amostra de fuga. Nesse exemplo, o criptador de vídeo 20 e o decodificador de vídeo 30 pode apenas codificar um sinalizador SPoint para distinguir entre o modo CopyFromTop e o modo Valor.
[0165] Em alguns exemplos, o sinalizador descrito acima pode ser sinalizado antes das entradas de paleta para um bloco ou CU serem atualmente codificadas. Em outros exemplos, o sinalizador descrito acima pode ser sinalizado após as entradas de paleta para um bloco ou CU serem atualmente codificadas. Em alguns exemplos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para omitir a codificação de contexto do sinalizador descrito acima. Em tais exemplos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem determinar os contextos com base no bloco ou tamanho de CU e/ou o tamanho de paleta para o bloco atual ou CU.
[0166] Em alguns casos, o uso de amostras de fuga pode variar por tamanho de bloco. Por exemplo, o uso de amostras de fuga pode ser menos predominante em blocos relativamente pequenos. Em tais casos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para determinar que um bloco não inclui quaisquer amostras de fuga e omitir a codificação do sinalizador descrito acima, alcançando, desse modo, uma economia de bits. Por exemplo, de acordo com aspectos desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem não codificar o sinalizador do nível de bloco para blocos 8x8, em que é mais improvável que as amostras de fuga sejam usadas do que em tamanhos de bloco maiores. De modo semelhante, para tamanhos de bloco grandes (por exemplo, blocos de 64x64 pixels ou maiores), o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para determinar que sempre existem amostras codificadas como amostras de fuga. Em tais casos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem inferir que o sinalizador de fuga no nível de bloco para um bloco é igual a um (por exemplo, pelo menos uma amostra é uma amostra de fuga) e omitir a codificação do sinalizador de fuga no nível de bloco (por exemplo, uma indicação do sinalizador de fuga no nível de bloco não está incluído no fluxo de bits).
[0167] As técnicas desta revelação também se referem a codificar um bloco de amostras com base em se quaisquer amostras de um bloco são codificadas como amostras de fuga. Por exemplo, conforme observado acima, as técnicas desta revelação podem ser usadas para indicar se quaisquer amostras são codificadas como amostras de fuga de um bloco codificado por paleta. Em casos em que um bloco não inclui amostras de fuga e quando o tamanho de uma paleta é um, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para determinar automaticamente que todas as amostras do bloco têm o mesmo valor de índice (por exemplo, a única entrada da paleta). O encriptador de vídeo 20 e o decodificador de vídeo 30 também podem, portanto, omitir a codificação de todos os outros dados usados para determinar índices de paleta do bloco. Por exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem omitir a codificação do sinalizador SPoint, a sinalização de índice e os dados associados a execuções de índices de paleta.
[0168] Em um exemplo para propósito de ilustração, o decodificador de vídeo 30 pode decodificar um sinalizador de fuga no nível de bloco que indica que não existe nenhum amostra no bloco atual que seja codificada como amostras de fuga (por exemplo, o sinalizador é igual a zero). O decodificador de vídeo 30 também pode decodificar dados que indicam que a paleta para o bloco tem uma única entrada (por exemplo, dados que indicam que o tamanho de paleta é um) ou decodificar uma paleta que tem uma única entrada. Nesse exemplo, com base em ambas as condições que avaliam a verdade (por exemplo, nenhuma amostra é amostra de fuga e o tamanho de paleta é um), o decodificador de vídeo 30 pode determinar automaticamente que todos os índices de paleta do bloco são iguais à única entrada incluída na paleta. O decodificador de vídeo 30 também pode omitir a decodificação de outros dados usados para determinar índices de paleta do bloco (por exemplo, tais como sinalizadores SPoint, índices de paleta e informações de execução).
[0169] Em outro exemplo, de acordo com aspectos desta revelação, quando um tamanho de paleta é um, execuções de amostras codificadas com o índice de paleta zero podem ser terminadas por amostras de fuga. Isto é, uma execução de índices de paleta pode ser interrompida por uma posição que é codificada como uma amostra de fuga. Nesse exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para omitir a codificação do sinalizador SPoint. Além disso, nesse exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para inferir que o modo para os índices de paleta é o modo Valor assim como o índice do modo Valor (por exemplo, com apenas uma entrada na paleta, pode não ser necessário sinalizar o índice para o modo Valor). Nesse exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem inferir que a amostra que segue imediatamente uma execução é codificada como uma amostra de fuga e omitir a codificação de sintaxe relacionada a fuga.
[0170] As técnicas desta revelação também se referem a codificar dados que indicam um valor de execução de uma execução de índices de paleta em codificação de paleta. Por exemplo, conforme observado acima, um valor de execução pode indicar um número de amostras consecutivas (por exemplo, uma execução de amostras) em uma ordem de varredura em particular em um bloco codificado por paleta que são codificadas em conjunto. Em alguns casos, a execução de amostras também pode ser denominada como uma execução de índices de paleta, devido ao fato de que cada amostra da execução tem um índice associado a uma paleta.
[0171] Um valor de execução pode indicar uma execução de índices de paleta que são codificados com o uso do mesmo modo de codificação de paleta. Por exemplo, em relação ao modo Valor, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar um valor de índice e um valor de execução que indicam diversas amostras consecutivas em uma ordem de varredura que têm o mesmo valor de índice e que estão sendo codificadas com o valor de índice. Em relação ao modo CopyFromTop, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar uma indicação de que um índice para o valor de amostra atual é copiado com base em um índice de uma amostra vizinha acima (por exemplo, uma amostra que está posicionada acima da amostra que é atualmente codificada em um bloco) e um valor de execução que indica diversas amostras consecutivas em uma ordem de varredura que também copiam um valor de índice a partir uma amostra vizinha acima e que estão sendo codificadas com o valor de índice.
[0172] Por exemplo, de acordo com aspectos desta revelação, dados que indicam uma execução de índices de paleta em um bloco de dados de vídeo podem ser codificados com base em um valor de execução máximo possível para o bloco. Isto é, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem determinar, para um pixel associado a um índice de paleta que relaciona um valor do pixel a um valor de cor em uma paleta, um comprimento de execução de uma execução de índices de paleta que são codificados com o índice de paleta do pixel. O encriptador de vídeo 20 e o decodificador de vídeo 30 também podem determinar um comprimento de execução máximo para uma execução máxima de índices de paleta que têm capacidade para serem codificados com o índice de paleta do pixel. O encriptador de vídeo 20 e o decodificador de vídeo 30 podem, então, codificar dados que indicam o comprimento de execução com base no comprimento de execução máximo determinado.
[0173] Em um exemplo para propósitos de ilustração, o número total de amostras em um bloco de dados de vídeo pode ser N e cada uma das amostras pode ser indexada de 0 para (N-1). Para a amostra com a posição j, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem determinar o valor de execução máximo possível como (N-j- 1). Deve ser observado que o valor de execução indica o número de amostras subsequentes que são codificadas com o mesmo modo de codificação de paleta (por exemplo, modo Valor ou modo CopyFromTop) como a amostra atual. De acordo com aspectos desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar dados que indicam o valor de execução com o uso de uma binarização truncada, levando em consideração o valor de execução máximo possível. Em geral, a binarização truncada pode incluir qualquer técnica que use informações sobre um valor máximo possível de um parâmetro em particular que é sinalizado (por exemplo, tal como o número de novas entradas de paleta) diminuindo-se o comprimento de algumas palavras de código usadas no método de binarização do parâmetro enquanto se mantêm a possibilidade de decodificação única. Por exemplo, um código binário truncado com base no valor máximo possível de uma execução pode ser usado. De modo semelhante, códigos de Golomb ou Golomb Rice unários ou exponenciais truncados podem ser usados para codificar e decodificar o valor de execução com base no valor máximo possível de uma execução. Em alguns exemplos, a binarização truncada pode ser uma combinação de códigos de Golomb e de Golomb Rice exponenciais.
[0174] Por exemplo, a palavra de código de Golomb Exponencial de k-ésima ordem é composta por duas partes, um prefixo e um sufixo. Para um dado número inteiro não sinalizado x, a parte de prefixo da palavra de código de EGk consiste em um código unário que corresponde ao valor de:
[0175] A parte de sufixo é computada como a representação binária de x-2k(2l(x)-1) com o uso de k + l(x) bits.
[0176] Como um exemplo, a Tabela 1 abaixo inclui diversas palavras de código para EG0.TABELA 1 - EXEMPLO DE EG0
[0177] No Pedido Provisório no U.S. 62/019.223, depositado em 20 de junho de 2014, um valor de execução é codificado com o uso de código de Golomb exponencial de 2a ordem.
[0178] De acordo com aspectos desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar dados que indicam um valor de execução com o uso de um código de Golomb exponencial truncado. Por exemplo, uma palavra de código de Golomb exponencial truncada de k-ésima ordem (TEGk) também é composta por duas partes, um prefixo e um sufixo. O prefixo pode ser um prefixo unário e o sufixo pode ser um sufixo binário. Por exemplo, para um dado número inteiro não sinalizado x e seu maior valor de execução possível Xmax (por exemplo, o comprimento de execução máximo), a parte de prefixo da palavra de código de EGk consiste em um código unário truncado que corresponde ao valor de:
[0179] Especificamente, o “um final” do código unário pode ser evitado se:
[0180] Se o prefixo for truncado, isto é,, a parte de sufixo de TEGk e computada como a representação binária truncada de x — 2k (2l(x)— 1) com o uso de k + l(x) ou de k + l(x)— 1 bits. O valor de símbolo máximo para a entrada de código binário truncado e Xmax - 2k(2l(x)- 1).
[0181] Se o prefixo não e truncado, a parte de sufixo de TEGk e a mesma que EGk, isto e, a representação binária de x — 2k (2l(x) — 1) com o uso de k + l(x) bits. Como um exemplo, a Tabela 1 abaixo inclui diversas palavras de código para TEG0.TABELA 2 - EXEMPLOS DE TEG0 (X=5)
[0182] Embora o exemplo da Tabela 2 acima ilustre que o prefixo e diversos zeros seguidos por um (1) final (por exemplo, 00... 1_), deve ser entendido que, em outros exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar diversos uns (1) seguidos por um zero final (por exemplo, 11 0).
[0183] De acordo com aspectos desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar um valor de execução com o uso do código de TEGk descrito acima. Em alguns exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem, para uma posição de pixel atual em um bloco (ou CU), determinar o valor de execução máximo Xmax com base na equação (Xmax = número de pixels no CU atual - posição atual em ordem de varredura - 1).
[0184] Em outro exemplo, se o valor de execução for codificado primeiro com o uso de um prefixo unário truncado, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para, consequentemente, ajustar o valor de execução máximo, por exemplo, com base no valor truncado. Por exemplo, em alguns casos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar um valor de execução como uma série de três sinalizadores: maior que zero, maior que um e maior que dois. Nesse exemplo, se a execução sinalizada for maior que dois, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar o valor restante (por exemplo, valor de execução - 3) potencialmente com outro método de binarização, tal como uma combinação de códigos de Golomb e Golomb Rice exponenciais ou o código de TEGk descritos acima.
[0185] Entretanto, se (N-j-1) for igual a 0, o encriptador de vídeo 20 e o decodificador de vídeo 30 não codificar uma execução. Do mesmo modo, se (N-j-1) for igual a um, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar apenas o sinalizador maior que zero. Do mesmo modo, se (N-j-1) for igual a dois, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar apenas os sinalizadores maiores que zero e maiores que um. Do mesmo modo, se (N-j-1) for igual a três, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar apenas o sinalizador maior que zero, o sinalizador maior que um e o sinalizador maior que dois. Se (N-j-1) for maior que três, além do sinalizador maior que zero, do sinalizador maior que um e do sinalizador maior que dois, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar o valor restante até um valor máximo de (N-j-4). De uma forma semelhante, o processo descrito pode ser estendido para usar um número de sinalizadores diferente de três, por exemplo, sinalizadores que indicam um valor sinalizado maior que o número M, em que M pode ser um valor não negativo que começa de zero.
[0186] De acordo com aspectos desta revelação, no exemplo acima, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar o comprimento de execução restante com o uso do código de TEGk descrito acima, com um valor de execução máximo igual a (número de pixels no CU atual - posição atual em ordem de varredura - 4). Em outro exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar um sinalizador que indica se o valor de execução é maior que zero e o valor restante como o comprimento de execução menos um. Por exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar o sinalizador maior que zero. O encriptador de vídeo 20 e o decodificador de vídeo 30 também podem codificar dados que indicam o comprimento de execução menos um com o uso do código de TEGk com um valor máximo para o código de TEGk definido igual ao comprimento de execução máximo menos um. Em um exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem definir k igual a zero, de forma que o código de TEGk seja um código TEG0.
[0187] Em outros exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem usar qualquer ordem do código de TEG descrito acima para codificar elementos de sintaxe para codificação de paleta. Em um exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem definir k igual a dois, de forma que o código de TEGk seja um código TEG2.
[0188] Embora os exemplos acima sejam descritos em relação à codificação de um valor de execução em codificação de paleta, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar os códigos (tal como o código de TEGk) para codificar outra sintaxe para codificação de paleta. Por exemplo, conforme descrito em maiores detalhes abaixo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem usar os códigos descritos acima para codificar um vetor de previsão de paleta binário, um comprimento de execução CopyAbove ou outros valores.
[0189] Em Joshi et al., "Non-SCCE3: Contexts for coding index runs”, Time Colaborativo Unido em Codificação de Vídeo (JCT-VC) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 18o Encontro, Sapporo, JP, 30 de junho a 9 de julho de 2014, JCTVC-R0174 (doravante JCTVC-R0174), os autores propuseram fazer com que os contextos das palavras de código de comprimento de execução dependam do índice se o modo CopyLeft (por exemplo, o qual pode operar de uma forma semelhante ao modo CopyFromTop) for usado. Entretanto, de acordo com um exemplo desta revelação, se o modo de execução atual for CopvFromAbove, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem determinar contextos para codificar por CABAC a execução com base no valor de índice do pixel que está posicionado acima do pixel que é atualmente codificado. Nesse exemplo, o pixel vizinho acima está fora do CU atual, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem determinar que o índice correspondente é igual a uma constante predefinida k. Em alguns exemplos, a constante k pode ser igual a zero.
[0190] Em alguns exemplos, se o modo de paleta para codificar um pixel atual for o modo CopyFromAbove, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem selecionar um de dois contextos de CABAC candidatos para codificar o primeiro bin da palavra de código de comprimento de execução com base em se o pixel vizinho acima tem um índice que é igual a zero. Como outro exemplo, se o modo de paleta para codificar um pixel atual for o modo Copy-Previous, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem selecionar um de quatro contextos de CABAC candidatos para codificar o primeiro bin da palavra de código de comprimento de execução com base em se o índice é igual a zero, um , dois ou maior que dois.
[0191] A Figura 2 é um diagrama em blocos que ilustra um criptador de vídeo exemplificativo 20 que pode implantar as técnicas desta revelação. A Figura 2 é fornecida para propósitos de explicação e não deve ser considerada como limitante das técnicas conforme amplamente exemplificadas e descritas nesta revelação. Para propósitos de explicação, esta revelação descreve o encriptador de vídeo 20 no contexto de codificação de HEVC. Entretanto, as técnicas desta revelação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0192] O criptador de vídeo 20 representa um exemplo de um dispositivo que pode ser configurado para realizar técnicas para codificação de vídeo com base em paleta de acordo com diversos exemplos descritos nesta revelação. Por exemplo, o encriptador de vídeo 20 pode ser configurado para codificar seletivamente diversos blocos de dados de vídeo, tais como CUs ou PUs na codificação de HEVC, com o uso de codificação com base em paleta ou codificação sem base em paleta. Os modos de codificação sem base em paleta podem se referir a diversos modos de codificação temporais interpreditivos ou modos de codificação espaciais intrapreditivos, tais como diversos modos de codificação especificado por HEVC Draft 10. O encriptador de vídeo 20, em um exemplo, pode ser configurado para gerar uma paleta que tem entradas que indicam valores de pixel, selecionar valores de pixel em uma paleta para representarem valores de pixels de pelo menos alguns locais de pixel em um bloco de dados de vídeo e sinalizar informações que associam pelo menos alguns dos locais de pixel no bloco de dados de vídeo com entradas na paleta que correspondem, respectivamente, aos valores de pixel selecionados na paleta. As informações sinalizadas podem ser usadas pelo decodificador de vídeo 30 para decodificar dados de vídeo.
[0193] No exemplo da Figura 2, o encriptador de vídeo 20 inclui uma unidade de processamento de previsão 100, uma memória de dados de vídeo 101, uma unidade de geração de resíduos 102, uma unidade de processamento de transformada 104, uma unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de processamento de transformada inversa 110, uma unidade de reconstrução 12, uma unidade de filtro 114, um armazenamento temporário de figuração decodificada 116 e uma unidade de criptação por entropia 118. A unidade de processamento de previsão 100 inclui uma unidade de processamento de interprevisão 120 e uma unidade de processamento de intraprevisão 126. A unidade de processamento de interprevisão 120 inclui uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostrada). O criptador de vídeo 20 também inclui uma unidade de criptação com base em paleta 122 configurada para realizar diversos aspectos das técnicas de codificação com base em paleta descritas nesta revelação. Em outros exemplos, o criptador de vídeo 20 pode incluir mais, menos ou diferentes componentes funcionais.
[0194] A memória de dados de vídeo 101 pode armazenar dados de vídeo a serem criptados pelos componentes de criptador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 101 podem ser obtidos, por exemplo, a partir de fonte de vídeo 18. O armazenamento temporário de figuração decodificada 16 pode ser uma memória de figuração de referência que armazena dados de vídeo de referência para uso na criptação de dados de vídeo pelo encriptador de vídeo 20, por exemplo, em modos de intra ou intercodificação. A memória de dados de vídeo 101 e o armazenamento temporário de figuração decodificada 116 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tais como memória dinâmica de acesso aleatório (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 101 e o armazenamento temporário de figuração decodificada 116 podem ser fornecidos pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em diversos exemplos, a memória de dados de vídeo 101 pode estar em chip com outros componentes de criptador de vídeo 20 ou fora do chip em relação a esses componentes.
[0195] O criptador de vídeo 20 pode receber dados de vídeo. O criptador de vídeo 20 pode codificar cada CTU em uma fatia de uma gravura dos dados de vídeo. Cada uma das CTUs pode ser associada a blocos de árvore de codificação luma igualmente dimensionados (CTBs) e CTBs correspondentes da figuração. Como parte de criptação de uma CTU, a unidade de processamento de previsão 100 pode realizar separação de árvore quadrática para dividir os CTBs da CTU em blocos progressivamente menores. O menor bloco pode ser blocos de codificação de CUs. Por exemplo, a unidade de processamento de previsão 100 pode separar um CTB associado a uma CTU em quatro sub-blocos igualmente dimensionados, separar um ou mais dos sub-blocos em quatro sub-blocos igualmente dimensionados e assim por diante.
[0196] O encriptador de vídeo 20 pode criptar as CUs de uma CTU para gerar representações criptadas das CUs (isto é, CUs codificadas). Como parte da criptação de uma CU, a unidade de processamento de previsão 100 pode particionar os blocos de codificação associados à CU dentre uma ou mais PUs da CU. Dessa forma, cada PU pode estar associada a um bloco de previsão luma e os blocos de previsão croma correspondentes. O criptador de vídeo 20 e o decodificador de vídeo 30 podem suportar as PUs que têm vários tamanhos. Conforme indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação luma da CU e o tamanho de uma PU pode se referir ao tamanho de um bloco de previsão luma da PU. Presumindo-se que o tamanho de uma CU em particular seja 2Nx2N, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou de NxN para intraprevisão e tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, NxN ou semelhantes para interprevisão. O encriptador de vídeo 20 e o decodificador de vídeo 30 também podem suportar uma separação assimétrica para tamanhos de PU de 2xnU, 2NxnD, nLx2N e nRx2N para interprevisão.
[0197] A unidade de processamento de interprevisão 120 pode gerar dados preditivos para uma PU através da realização de interprevisão em cada PU de uma CU. Os dados preditivos para a PU podem incluir blocos preditivos da PU e informações de movimento para a PU. A unidade de interprevisão 121 pode realizar diferentes operações para uma PU de uma CU que depende 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 intrapreditivas. Por conseguinte, se a PU estiver em uma fatia I, a unidade de interprevisão 121 não realiza interprevisão na PU. Dessa forma, para blocos codificados no modo I, o bloco previsto é formado com uso de previsão espacial a partir de blocos vizinhos anteriormente criptados dentro do mesmo quadro.
[0198] Se uma PU estiver em um a fatia P, a unidade de estimativa de movimento da unidade de processamento de interprevisão 120 pode buscar as figurações de referência em uma lista de figurações 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 figuração de referência, que contém blocos de amostras que correspondem o mais proximamente aos blocos de previsão da PU. A unidade de estimativa de movimento pode gerar um índice de referência que indica uma posição em RefPicList0 da figuração de referência que contém a região de referência para a PU. Além disso, a unidade de estimativa de movimento pode gerar um MV que indica um deslocamento espacial entre um bloco de codificação da PU e um local de referência associado à região de referência. Por exemplo, o MV pode ser um vetor bidimensional que fornece um desvio a partir das coordenadas na figuração decodificada atual para as coordenadas em uma figuração de referência. A unidade estimativa de movimento pode emitir o índice de referência e o MV como as informações de movimento da PU. A unidade de compensação de movimento da unidade de processamento de interprevisão 120 pode gerar os blocos preditivos da PU com base nas amostras atuais ou interpoladas no local de referência indicado pelo vetor de movimento da PU.
[0199] Se uma PU estiver em uma fatia B, a unidade de estimativa de movimento pode realizar uniprevisão ou biprevisão para a PU. Para realizar uniprevisão para a PU, a unidade de estimativa de movimento pode buscar as figurações de referência de RefPicList0 ou uma segunda lista de figuração de referência (”RefPicList1”) para uma região de referência para a PU. A unidade estimativa de movimento pode emitir, como as informações de movimento da PU, um índice de referência que indica uma posição em RefPicList0 ou ReiPicList1 da figuração de referência que contém a região de referência, um MV que indica um deslocamento espacial entre um bloco de previsão da PU e um local de referência associado à região de referência e um ou mais indicadores de direção de previsão que indicam se a figuração de referência está em RefPicList0 ou em RetPtcList1. A unidade de compensação de movimento da unidade de processamento de interprevisão 120 pode gerar os blocos preditivos da PU com base, pelo menos em parte, em amostras atuais ou interpoladas na região de referência indicada pelo vetor de movimento da PU.
[0200] Para realizar a interprevisão bidirecional para uma PU, a unidade estimativa de movimento pode pesquisar as gravuras de referência em RefPicList0 para uma região de referência para a PU e também pode pesquisar as gravuras de referência em RefPicListl para uma outra região de referência para a PU. A unidade estimativa de movimento pode gerar índices de gravura de referência que indicam posições em RefPicList0 e RefPicListl das gravuras de referência que contêm as regiões de referência. Além disso, a unidade estimativa de movimento pode gerar MVs que indicam deslocamentos espaciais entre a localização de referência associada às regiões de referência e um bloco de amostra da PU. As informações de movimento da PU podem incluir os índices de referência e os MVs da PU. A unidade de compensação de movimento pode gerar os blocos preditivos da PU com base, pelo menos em parte, em amostras atuais ou interpoladas nas regiões de referência indicadas pelos vetores de movimento da PU.
[0201] De acordo com vários exemplos desta revelação, o criptador de vídeo 20 pode ser configurado para realizar codificação com base em paleta. Em relação à estrutura de HEVC, como um exemplo, as técnicas de codificação com base em paleta podem ser configuradas para serem usadas como um modo de unidade de controle (CU). Em outros exemplos, as técnicas de codificação com base em paleta podem ser configuradas para ser usadas como um modo de PU na estrutura de HEVC. Consequentemente, todos os processos revelados descritos no presente documento (através desta revelação) no contexto de um modo de CU podem, adicional ou alternativamente, se aplicar a uma PU. No entanto, esses exemplos com base em HEVC não seriam considerados a uma restrição ou limitação da técnicas de codificação com base em paleta descritas no presente documento, tais como técnicas que podem ser aplicadas para funcionar de modo independente ou como parte de outros existentes ou ainda a serem sistemas/padrões desenvolvidos. Nesses casos, a unidade para codificação de paleta pode ser blocos quadrados, blocos retangulares ou mesmo regiões com formato não retangular.
[0202] A unidade de criptação com base em paleta 122, por exemplo, pode realizar decodificação com base em paleta quando um modo de criptação com base em paleta é selecionado, por exemplo, para uma CU ou PU. Por exemplo, a unidade de criptação com base em paleta 122 pode ser configurada para gerar uma paleta que tem entradas que indicam valores de pixels, selecionar valores de pixels em uma paleta para representar valores de pixels de pelo menos algumas posições de um bloco de dados de vídeo e informações de sinal que associam pelo menos algumas das posições do bloco de dados de vídeo às entradas na paleta que correspondem, respectivamente, aos valores de pixels selecionados. Embora diversas funções sejam descritas como sendo realizadas pela unidade de criptação com base em paleta 122, algumas ou todas as tais funções podem ser realizadas por outras unidades de processamento ou por uma combinação de unidades de processamento diferentes.
[0203] De acordo com aspectos desta revelação, a unidade de criptação com base em paleta 122 pode ser configurada para realizar qualquer combinação das técnicas para a codificação de paleta descrita no presente documento. Por exemplo, de acordo com aspectos desta revelação, a unidade de criptação com base em paleta 122 pode determinar um valor de um elemento de sintaxe que indica, para todas as amostras de um bloco de dados de vídeo, se pelo menos uma respectiva amostra do bloco é codificada com um primeiro modo de paleta, em que o primeiro modo de paleta inclui codificar a respectiva amostra do bloco sem usar um índice para uma paleta de valores de cor para o bloco. Por exemplo, a unidade de criptação com base em paleta 122 pode determinar um valor de um elemento de sintaxe no nível de bloco que indica se qualquer amostra do bloco é criptada como uma amostra de fuga (como uma amostra que não tem um valor de cor representado em uma paleta para codificar o bloco). Em alguns exemplos, a unidade de criptação com base em paleta 122 pode determinar um sinalizador de fuga para um bloco que indica se qualquer amostra do bloco é criptada como uma amostra de fuga.
[0204] Adicional ou alternativamente, a unidade de criptação com base em paleta 122 pode determinar pelo menos um dentre dados que indicam um tamanho de paleta máximo de uma paleta de valores de cor para codificar um bloco de dados de vídeo ou dados que indicam um tamanho de indicador de paleta máximo de um indicador de paleta para determinar a paleta de valores de cor. Por exemplo, a unidade de criptação com base em paleta 122 pode incluir tais dados em um conjunto de parâmetros, tal como um SPS.
[0205] Adicional ou alternativamente, a unidade de criptação com base em paleta 122 pode determinar, para um pixel associado a um índice de paleta que relaciona um valor do pixel a um valor de cor em uma paleta de cores para codificar o pixel, um comprimento de execução de uma execução de índices de paleta que são codificados com o índice de paleta do pixel. Isto é, a unidade de criptação com base em paleta 122 pode determinar que um valor de índice para uma amostra em particular está sendo criptado com uma execução de outros índices de paleta subsequentes. A unidade de criptação com base em paleta 122 também pode determinar um comprimento de execução máximo para uma execução máxima de índices de paleta que têm capacidade para serem criptados com o índice de paleta do pixel. Conforme descrito em maiores detalhes abaixo, em relação à unidade de criptação por entropia 118, o encriptador de vídeo 20 pode criptar dados que indicam o comprimento de execução com base no comprimento de execução máximo determinado.
[0206] A unidade de processamento de intraprevisão 126 pode gerar dados preditivos para uma PU realizando-se intraprevisão na PU. Os dados preditivos para a PU podem incluir blocos preditivos para a PU e vários elementos de sintaxe. A unidade de processamento de intraprevisão 126 pode realizar intraprevisão em PUs em fatias I, fatias P e fatias B.
[0207] Para realizar intraprevisão em uma PU, a unidade de processamento de intraprevisão 126 pode usar múltiplos modos de intraprevisão para gerar múltiplos conjuntos de dados preditivos para a PU. A unidade de processamento de intraprevisão 126 pode usar amostras a partir de blocos de amostra de PUs vizinhas para gerar um bloco preditivo para uma PU. As PUs vizinhas podem estar acima, acima e à direita, acima e à esquerda ou à esquerda da PU, assumindo uma ordem de criptação do fundo para o topo e da esquerda para direita para PUs, CUs e CTUs. A unidade de processamento de intraprevisão 126 pode usar diversos modos de intraprevisão, por exemplo, 33 modos de intraprevisão direcional. Em alguns exemplos, o número de modos de intraprevisão pode depender do tamanho da região associada à PU.
[0208] A unidade de processamento de previsão 100 pode selecionar os dados preditivos para as PUs de uma CU dentre os dados preditivos gerados pela unidade de processamento de interprevisão 120 para as PUs ou os dados preditivos gerados pela unidade de processamento de intraprevisão 126 para as PUs. Em alguns exemplos, a unidade de processamento de previsão 100 seleciona os dados preditivos para as PUs da CU com base nas métricas de taxa/distorção dos conjuntos de dados preditivos. Os blocos preditivos dos dados preditivos selecionados podem ser referidos no presente documento como blocos preditivos selecionados.
[0209] A unidade de geração de resíduos 102 pode gerar, com base na luma, um bloco de codificação Cb e Cr de uma CU e a luma preditiva selecionada, blocos Cb e Cr das PUs da CU, uma luma, blocos residuais Cb e Cr da CU. Por exemplo, a unidade de geração residual 102 pode gerar os 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 preditivo selecionado correspondente de uma PU da CU.
[0210] A unidade de processamento de transformada 104 pode realizar particionamento de árvore quadrática para separar os blocos residuais associados a uma CU em blocos de transformada associados às TUs da CU. Dessa forma, uma TU pode ser associada a um bloco de transformada de luma e a dois blocos de transformada de croma. Os tamanhos e posições dos blocos de transformada luma e croma de TUs de uma CU podem ou não podem ter base nos tamanhos e posições de blocos de previsão das PUs da CU. Uma estrutura de árvore quadrática conhecida como uma “árvore quadrática residual” (RQT) pode incluir nós associados a cada uma das regiões. As TUs de uma CU podem corresponder aos nós-folha da RQT.
[0211] A unidade de processamento de transformação 104 pode gerar blocos de coeficiente de transformação para cada TU de uma CU através da 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 a uma TU. Por exemplo, a unidade de processamento de transformada 104 pode aplicar uma transformada distinta de cosseno (DCT), uma transformada direcional ou uma transformada conceitualmente semelhante a um bloco de transformada. Em alguns exemplos, a unidade de processamento de transformada 104 não aplica transformadas a um bloco de transformada. Em tais exemplos, o bloco de transformada pode ser processado como um bloco de coeficiente de transformada.
[0212] A unidade de quantização 106 pode quantizar os coeficientes de transformada em um bloco de coeficiente. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou a todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de n-bits pode ser arredondado para baixo para um coeficiente de transformada de m-bits durante a quantização, em que n é maior que m. A unidade de quantização 106 pode quantizar um bloco de coeficientes associado a uma TU de uma CU com base em um valor de parâmetro de quantização (QP) associado à CU. O criptador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficiente associados a uma CU através do ajuste do valor de QP associado à CU. A quantização pode apresentar perda de informações, desse modo, os coeficientes de transformada quantizados podem ter precisão menor que aqueles originais.
[0213] A unidade de quantização inversa 108 e a unidade de processamento de transformada inversa 110 podem aplicar quantização inversa e transformadas inversas 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 a partir de um ou mais blocos preditivos gerados pela unidade de processamento de previsão 100 para produzir um bloco de transformada reconstruído associado a uma TU. Reconstruindo-se blocos de transformada para cada TU de uma CU dessa forma, o encriptador de vídeo 20 pode reconstruir os blocos de codificação da CU.
[0214] 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 a uma CU. O armazenamento temporário de figuração decodificada 116 pode armazenar os blocos de codificação reconstruídos após a unidade de filtro 114 realizar as uma ou mais operações de desbloqueio nos blocos de codificação reconstruídos. A unidade de processamento de 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 em PUs de outras imagens. Além disso, a unidade de processamento de intraprevisão 126 pode usar blocos de codificação reconstruídos no armazenamento temporário de figuração decodificada 16 para realizar a intraprevisão em outras PUs na mesma figuração que a CU.
[0215] A unidade de codificação por entropia 1 18 pode receber dados a partir de outros componentes funcionais de criptador de vídeo 20. Por exemplo, a unidade de criptação por entropia 118 pode receber blocos de coeficientes da unidade de quantização 106 e pode receber elementos de sintaxe da unidade de processamento de previsão 100. A unidade de criptação por entropia 118 pode realizar uma ou mais operações de criptação por entropia nos dados para gerar dados criptados por entropia. Por exemplo, a unidade de criptação por entropia 118 pode realizar uma operação de codificação de comprimento variável adaptativo ao contexto (CAVLC), uma operação de CABAC, uma operação de codificação de comprimento de variável para variável (V2V), uma operação de codificação aritmética binária adaptativa a contexto com base em sintaxe (SBAC), uma operação de codificação de Particionamento por Entropia com Intervalo de Probabilidade (PIPE), uma operação de criptação de Golomb Exponencial ou outro tipo de operação de criptação por entropia nos dados. O encriptador de vídeo 20 pode emitir um fluxo de bits que inclui dados criptados por entropia gerados pela unidade de criptação por entropia 118. Por exemplo, o fluxo de bits pode incluir dados que representam uma RQT para uma CU.
[0216] De acordo com aspectos desta revelação, a unidade de criptação por entropia 118 pode ser configurada para codificar dados de paleta com o uso um código de TEGk, conforme descrito acima em relação ao exemplo da Figura 1. Em particular, de acordo com aspectos desta revelação, a unidade de criptação por entropia 118 pode criptar dados que indicam um comprimento de execução para uma execução de índices de paleta com base em um comprimento de execução máximo determinado. Em alguns exemplos, a unidade de criptação por entropia 118 pode criptar o comprimento de execução com o uso de um código TEG2.
[0217] A Figura 3 é um diagrama em blocos que ilustra um decodificador de vídeo exemplificativo 30 que é configurado para implantar as técnicas desta revelação. A Figura 3 é fornecida para propósitos de explicação e não está limitada às técnicas conforme amplamente exemplificado e descrito nesta revelação. Para propósitos de explicação, essa revelação descreve o decodificador de vídeo 30 no contexto de codificação de HEVC. Entretanto, as técnicas desta revelação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0218] O criptador de vídeo 20 representa um exemplo de um dispositivo que pode ser configurado para realizar técnicas para codificação de vídeo com base em paleta de acordo com diversos exemplos descritos nesta revelação. Por exemplo, o encriptador de vídeo 20 pode ser configurado para decodificar seletivamente diversos blocos de dados de vídeo, tais como CUs ou PUs na codificação de HEVC, com uso de codificação com base em paleta ou codificação sem base em paleta. Os modos de codificação sem paleta podem se referir a vários modos de codificação temporais interpreditivos ou modos de codificação espaciais intrapreditivos, tais como vários modos de codificação especificados por HEVC Draft 10. O decodificador de vídeo 30, em um exemplo, pode ser configurado para gerar uma paleta que tem entradas que indicam valores de pixel, receber informações que associam pelo menos alguns locais de pixel em um bloco de dados de vídeo a entradas na paleta, selecionar valores de pixel com base em paleta nas informações e reconstruir valores de pixel do bloco com base nos valores de pixel selecionados na paleta.
[0219] No exemplo da Figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 150, uma memória de dados de vídeo 151, uma unidade de processamento de previsão 152, uma unidade de quantização inversa 154, uma unidade de processamento de transformada inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 160 e um armazenamento temporário de figuração decodificada 162. A unidade de processamento de previsão 152 inclui uma unidade de compensação de movimento 164 e uma unidade de processamento de 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 vários aspectos das técnicas de codificação com base em paleta descritas nesta revelação. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, poucos ou diferentes componentes funcionais.
[0220] A memória de dados de vídeo 151 pode armazenar dados de vídeo, tal como um fluxo de bits de vídeo codificado, a ser decodificado pelos componentes de decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 151 podem ser obtidos, por exemplo, a partir do canal 16, por exemplo, a partir de uma fonte de vídeo local, tal como uma câmera, por meio de comunicação de rede sem fio ou com fio de dados de vídeo ou acessando-se os meios de armazenamento de dados físicos. A memória de dados de vídeo 151 pode formar um armazenamento temporário de figuração criptada (CPB) que armazena dados de vídeo criptados a partir de um fluxo de bits de vídeo codificado. O armazenamento temporário de gravura decodificada 162 pode ser uma memória de gravura de referência que armazena dados de vídeo de referência para uso em dados de vídeo de decodificação pelo decodificador de vídeo 30, por exemplo, em modos de intra ou intercodificação. A memória de dados de vídeo 151 e o armazenamento temporário de figuração decodificada 162 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tais como memória dinâmica de acesso aleatório (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 151 e o armazenamento temporário de figuração decodificada 162 podem ser fornecidos pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 151 pode ser no chip com outros componentes de decodificador de vídeo 30, ou fora do chip em relação àqueles componentes.
[0221] Um armazenamento temporário de figuração codificada (CPB) 79 pode receber e armazenar dados de vídeo criptados (por exemplo, unidades de NAL) de um fluxo de bits. A unidade de decodificação por entropia 150 pode receber dados de vídeo criptados (por exemplo, unidades de NAL) a partir do CPB e pode analisar as unidades de NAL para decodificar os elementos de sintaxe. A unidade de decodificação por entropia 50 pode decodificar por entropia os elementos de sintaxe criptados por entropia nas unidades de NAL.
[0222] De acordo com aspectos desta revelação, a unidade de decodificação por entropia 150 pode ser configurada para decodificar dados de paleta com o uso de um código de TEGk, conforme descrito acima em relação ao exemplo da Figura 1. Em particular, de acordo com aspectos desta revelação, a unidade de decodificação por entropia 150 pode decodificar dados que indicam um comprimento de execução para uma execução de índices de paleta (por exemplo, uma execução de índices que têm o mesmo valor ou uma execução de índices que são copiados a partir dos índices vizinhos acima) com base em um comprimento de execução máximo determinado. Em alguns exemplos, a unidade de decodificação por entropia 150 pode decodificar o comprimento de execução com o uso de um código TEG2.
[0223] A unidade de processamento de previsão 152, a unidade de quantização inversa 154, a unidade de processamento de transformada inversa 156, a unidade de reconstrução 158 e a unidade de filtro 160 podem gerar dados de vídeo decodificados com base em elementos de sintaxe extraídos do fluxo de bits. As unidades de NAL do fluxo de bits podem incluir unidades de NAL de fatia codificada. Como parte de decodificação do fluxo de bits, a unidade de decodificação por entropia 150 pode extrair e decodificar por entropia elementos de sintaxe a partir das unidades de NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe pertencentes a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um PPS associado a uma gravura que contém a fatia.
[0224] Além de decodificar os elementos de sintaxe a partir do fluxo de bits, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em uma CU não particionada. Para realizar a operação de reconstrução em uma CU não particionada, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Realizando-se a operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir os blocos residuais da CU.
[0225] Como parte de realização de uma operação de reconstrução em uma TU de uma CU, a unidade de quantização inversa 154 pode inverter e quantizar, isto é, desquantizar, os blocos de coeficiente associados à TU. A unidade de quantização inversa 154 pode usar um valor de QP associado à CU da TU para determinar um grau de quantização e, de modo semelhante, um grau de quantização inversa para unidade de quantização inversa 154 a ser aplicado. Isto é, a razão de comparação, isto é, a razão do número de bits usada para representar sequência original e a compactada, pode ser controlada através do ajuste do valor do QP usado ao quantizar os coeficientes de transformada. A razão de comparação também pode depender do método de codificação de entropia empregado.
[0226] Após a unidade de quantização inversa 154 quantizar de modo inverso um bloco de coeficientes, a unidade de processamento de transformada inversa 156 pode aplicar uma ou mais transformadas inversas ao bloco de coeficientes a fim de gerar um bloco residual associado à TU. Por exemplo, a unidade de processamento de transformada inversa 156 pode aplicar uma DCT inversa, uma transformada de número inteiro inversa, uma transformada de Karliunen- Loeve inversa (KLT), uma transformada giratória inversa, uma transformada direcional inversa ou outra transformada inversa ao bloco de coeficientes.
[0227] Se uma PU for criptada com ouso de intraprevisão, a unidade de processamento de intraprevisão 166 pode realizar intraprevisão para gerar blocos preditivos para a PU, a unidade de processamento de intraprevisão 166 pode usar um modo de intraprevisão para gerar a luma preditiva, blocos Cb e Cr para a PU com base nos blocos de previsão de PUs espacialmente vizinhos. 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 do fluxo de bits.
[0228] A unidade de processamento de previsão 152 pode construir uma primeira lista de figuração de referência (RefPicList0) e uma segunda figuração de referência (RefPicList1) com base nos elementos de sintaxe extraídos do fluxo de bits. Além disso, se uma PU for codificada com uso de interprevisão, a unidade de decodificação por entropia 150 pode extrair as informações de movimento para a PU. A unidade de compensação de movimento 164 pode determinar, com base nas informações 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 em blocos de amostras nos um ou mais blocos de referência para a PU, de luma preditiva, Cb e Cr para a PU.
[0229] A unidade de reconstrução 158 pode usar os blocos de luma, de Cb e Cr de transformada associados às TUs de uma CU e os blocos de luma preditiva, de Cb e Cr das PUs da CU, isto é, dados de intraprevisão ou dados de interprevisão, conforme aplicável, para reconstruir os blocos de luma, de codificação de Cb e Cr da CU. Por exemplo, a unidade de reconstrução 158 pode adicionar amostras dos blocos de luma, de transformada de Cb e Cr a amostras correspondentes dos blocos de luma preditiva, de Cb e Cr para reconstruir os blocos de luma, de codificação de Cb e Cr da CU.
[0230] A unidade de filtro 160 pode realizar uma operação de desbloqueio para reduzir os artefatos de bloqueio associados aos blocos de codificação de luma, de Cb e Cr da CU. O decodificador de vídeo 30 pode armazenar os blocos de codificação de luma, de Cb e Cr da CU no armazenamento temporário de figuração decodificada 162. O armazenamento temporário de imagem decodificada 162 pode fornecer gravuras de referência para compensação, intraprevisão e apresentação de movimento subsequente em um dispositivo de visor, tal como dispositivo de visor 32 da Figura 1. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos de luma, de Cb e Cr no armazenamento temporário de figuração decodificada 162, operações de intraprevisão ou interprevisão em PUs de outras CUs.
[0231] De acordo com diversos exemplos desta revelação, o decodificador de vídeo 30 pode ser configurado para realizar codificação com base em paleta. A unidade de decodificação com base em paleta 165, por exemplo, pode realizar 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 que tem entradas que indicam valores de pixel, receber informações que associam pelo menos alguns locais de pixel em um bloco de dados de vídeo a entradas na paleta, selecionar valores de pixel com base em paleta nas informações e reconstruir valores de pixel do bloco com base nos valores de pixel selecionados na paleta. Embora várias funções sejam descritas conforme sendo realizadas pela unidade de decodificação com base em paleta 165, algumas ou todas as tais funções podem ser realizadas por outras unidades de processamento ou uma combinação de diferentes unidades de processamento.
[0232] A unidade de decodificação com base em paleta 165 pode receber as informações de modo de codificação de paleta e realizar as operações acima quando as informações de modo de codificação de paleta indicarem que o modo de codificação de paleta se aplica ao bloco. Quando as informações de modo de codificação de paleta indicam que a codificação de paleta modo não se aplica ao bloco ou quando outras informações de modo indicam o uso de um modo diferente, o decodificador de vídeo 30 pode decodificar o bloco de dados de vídeo com o uso de um modo de codificação sem base em paleta, por exemplo, tal como um modo de codificação interpreditivo ou intrapreditivo de HEVC. O bloco de dados de vídeo pode ser, por exemplo, uma CU ou uma PU gerada de acordo com um processo de codificação de HEVC.
[0233] De acordo com aspectos desta revelação, a unidade de decodificação com base em paleta 165 pode ser configurada para realizar qualquer combinação das técnicas para a codificação de paleta descrita no presente documento. Por exemplo, de acordo com aspectos desta revelação, a unidade de decodificação com base em paleta 165 pode determinar um valor de um elemento de sintaxe que indica, para todas as amostras de um bloco de dados de vídeo, se pelo menos uma respectiva amostra do bloco é codificada com um primeiro modo de paleta, em que o primeiro modo de paleta inclui codificar a respectiva amostra do bloco sem usar um índice para uma paleta de valores de cor para o bloco. Por exemplo, a unidade de decodificação com base em paleta 165 pode determinar um valor de um elemento de sintaxe no nível de bloco que indica se qualquer amostra do bloco deve ser decodificada como uma amostra de fuga (por exemplo, uma amostra que pode não ser reconstruída com o uso de uma entrada de cor a partir da paleta). Em alguns exemplos, a unidade de decodificação com base em paleta 165 pode determinar um sinalizador de fuga de um bit para um bloco que indica se quaisquer amostras do bloco devem ser decodificadas como uma amostra de fuga.
[0234] Adicional ou alternativamente, a unidade de decodificação com base em paleta 165 pode determinar pelo menos um dentre dados que indicam um tamanho de paleta máximo de uma paleta de valores de cor para codificar um bloco de dados de vídeo ou dados que indicam um tamanho de indicador de paleta máximo de um indicador de paleta para determinar a paleta de valores de cor. Por exemplo, a unidade de decodificação com base em paleta 165 pode decodificar tais dados a partir de um conjunto de parâmetros, tal como um SPS.
[0235] Adicional ou alternativamente, a unidade de decodificação com base em paleta 165 pode determinar, para um pixel associado a um índice de paleta que relaciona um valor do pixel a um valor de cor em uma paleta de cores para codificar o pixel, um comprimento de execução de uma execução de índices de paleta que são codificados em conjunto com o índice de paleta do pixel (por exemplo, uma execução de índices que têm o mesmo valor ou uma execução de índices que são copiados de índices vizinhos acima). Isto é, a unidade de decodificação com base em paleta 165 pode determinar que um valor de índice para uma amostra em particular é decodificado com uma execução de outros índices de paleta subsequentes. A unidade de decodificação com base em paleta 165 também pode determinar um comprimento de execução máximo para uma execução máxima de índices de paleta que têm capacidade para serem decodificados com o índice de paleta do pixel. Conforme observado acima em relação à unidade de decodificação por entropia 150, o decodificador de vídeo 30 pode decodificar dados que indicam o comprimento de execução com base no comprimento de execução máximo determinado.
[0236] A Figura 4 é um diagrama conceitual que ilustra um exemplo de determinação de uma paleta para codificação de dados de vídeo, consistente com as técnicas desta revelação. O exemplo da Figura 4 inclui uma figuração 178 que tem uma primeira unidade de codificação (CU) 180 que é associada a primeiras paletas 184 e uma segunda CU 188 que é associada a segundas paletas 192. Conforme descrito em maiores detalhes abaixo e de acordo com as técnicas desta revelação, as segundas paletas 192 são baseadas nas primeiras paletas 184. A figuração 178 também inclui o bloco 196 codificado com um modo de codificação de intraprevisão e o bloco 200 que é codificado com um modo de codificação de interprevisão.
[0237] As técnicas da Figura 4 são descritas no contexto de criptador de vídeo 20 (Figura 1 e Figura 2) e decodificador de vídeo 30 (Figura 1 e Figura 3) e em relação ao padrão de codificação de vídeo HEVC para propósitos explicativos. No entanto, deve ser entendido que as técnicas desta revelação não são limitadas dessa maneira e, podem ser aplicadas por outros processadores e/ou dispositivos de codificação de vídeo em outros padrões e/ou processos de codificação de vídeo.
[0238] Em geral, uma paleta se refere a diversos valores de pixels que são dominantes e/ou representativos para uma CU que é atualmente codificada, CU 188 no exemplo da Figura 4. As primeiras paletas 184 e as segundas paletas 192 são mostradas como incluindo múltiplas paletas. Em alguns exemplos, de acordo com os aspectos desta revelação, um codificador de vídeo (tal como criptador de vídeo 20 ou decodificador de vídeo 30) pode codificar as paletas de modo separado para cada componente de cor de uma CU. Por exemplo, o encriptador de vídeo 20 pode criptar uma paleta para um componente de luma (Y) de uma CU, outra paleta para um componente de croma (U) da CU e ainda outra paleta para o componente de croma (V) da CU. Nesse exemplo, as entradas da paleta Y podem representar valores Y de pixels da CU, as entradas da paleta U podem representar valores U de pixels da CU e as entradas da paleta V podem representar valores V de pixels da CU.
[0239] Em outros exemplos, o criptador de vídeo 20 pode codificar uma paleta única para todos os componentes de cor de uma CU. Nesse exemplo, o encriptador de vídeo 20 pode criptar uma paleta que tem uma i-ésima entrada que é um valor triplo, que inclui Yi, Ui e V. Nesse caso, a paleta inclui valores para cada um dos componentes dos pixels. Consequentemente, a representação das primeiras paletas 184 e 192 como um conjunto de paletas que tem múltiplas paletas individuais é meramente um exemplo e não se destina a ser limitante.
[0240] No exemplo da Figura 4, as primeiras paletas 184 incluem três entradas 202 a 206 que têm valor de índice de entrada 1, valor de índice de entrada 2 e valor de índice de entrada 3, respectivamente. As entradas 202 a 206 relacionam os índices de paleta aos valores de pixels que incluem o valor de pixel A, o valor de pixel B e o valor de pixel C, respectivamente. Conforme descrito no presente documento, em vez de codificar os valores de pixels reais da primeira CU 180, um codificador de vídeo (tal como o encriptador de vídeo 20 ou o decodificador de vídeo 30) pode usar a codificação com base em paleta para codificar os pixels do bloco com uso dos índices 1 a 3. Isto é, para cada posição de pixel da primeira CU 180, o encriptador de vídeo 20 pode criptar um valor de índice para o pixel, em que o valor de índice é associado a um valor de pixel em uma ou mais das primeiras paletas 184. O decodificador de vídeo 30 pode obter os índices de paleta a partir de um fluxo de bits e reconstruir os valores de pixel com o uso dos índices de paleta e de uma ou mais primeiras paletas 84. Dessa forma, as primeiras paletas 184 são transmitidas por encriptador de vídeo 20 em um fluxo de bits de dados de vídeo criptados para uso pelo decodificador de vídeo 30 na decodificação com base em paleta.
[0241] De acordo com aspectos desta revelação, um tamanho de paleta máximo pode ser sinalizado para as primeiras paletas 184. Por exemplo, de acordo com aspectos desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar dados que indicam um tamanho de paleta máximo, por exemplo, em termos do número de entradas que podem estar incluídas nas primeiras paletas 184. Em alguns exemplos, um ou mais elementos de sintaxe que indicam o tamanho de paleta máximo (por exemplo, MAX_PLT_SIZE) podem estar incluídos em um SPS que está ativo para a CU 180. Em outros exemplos, um ou mais elementos de sintaxe que indicam o tamanho de paleta máximo podem estar incluídos em outro conjunto de parâmetros, tal como um VPS ou PPS, ou nos dados de cabeçalho, tais como dados de cabeçalho de fatia ou dados associados a uma LCU ou CU.
[0242] Em alguns exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem variar, com o uso dos um ou mais elementos de sintaxe que indicam o tamanho de paleta máximo, em que o tamanho de paleta máximo pode ser baseado no perfil, no nível ou na profundidade de bits em particular dos dados de vídeo que são codificados. Em outros exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem variar, com o uso dos um ou mais elementos de sintaxe que indicam o tamanho de paleta máximo, em que o tamanho de paleta máximo pode ser baseado em um tamanho do bloco que é codificado, tal como a CU 180.
[0243] Em um exemplo para propósitos de ilustração, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem usar os dados que indicam um tamanho de paleta máximo quando se constrói primeiras paletas 184 para CU 180. Por exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem continuar a adicionar entradas a primeiras paletas 184 até alcançar o tamanho de paleta máximo indicado pelos dados. O encriptador de vídeo 20 e o decodificador de vídeo 30 podem, então, codificar a CU 180 com o uso das primeiras paletas construídas 184.
[0244] Em alguns exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem determinar segundas paletas 192 com base nas primeiras paletas 184. Por exemplo, o encriptador de vídeo 20 e/ou o decodificador de vídeo 30 podem localizar um ou mais blocos a partir dos quais as paletas preditivas, nesse exemplo, as primeiras paletas 184, são determinadas. A combinação de entradas que são usadas para propósitos de previsão pode ser denominada como uma paleta preditiva.
[0245] No exemplo da Figura 4, as segundas paletas 192 incluem três entradas 208 a 212 que têm valor de índice de entrada 1, valor de índice de entrada 2 e valor de índice de entrada 3, respectivamente. As entradas 208 a 212 relacionam os índices de paleta aos valores de pixels que incluem o valor de pixel A, o valor de pixel B e o valor de pixel C, respectivamente. Nesse exemplo, o encriptador de vídeo 20 pode codificar um ou mais elementos de sintaxe que indicam quais entradas das primeiras paletas 184 (que representam uma paleta preditiva, embora a paleta preditiva possa incluir entradas de diversos blocos) estão incluídas nas segundas paletas 192.
[0246] No exemplo da Figura 4, os um ou mais elementos de sintaxe são ilustrados como um vetor 216. O vetor 216 tem diversos bins associados (ou bits), em que cada bin indica se o indicador de paleta associado àquele bin é usado para prever uma entrada da paleta atual. Por exemplo, o vetor 216 indica que as primeiras duas entradas das primeiras paletas 184 (202 e 204) estão incluídas nas segundas paletas 192 (um valor de “1” no vetor 216), enquanto a terceira entrada das primeiras paletas 184 não está incluída nas segundas paletas 192 (um valor de “0” no vetor 216). No exemplo da Figura 4, o vetor é um vetor de Boolean. O vetor pode ser denominado como um vetor de previsão de paleta.
[0247] Em alguns exemplos, conforme observado acima, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem determinar um indicador de paleta (o qual também pode ser denominado como uma tabela de indicador de paleta ou uma lista de indicador de paleta) quando se realiza previsão de paleta. O indicador de paleta pode incluir entradas de paletas de um ou mais blocos vizinhos que são usados para prever uma ou mais entradas de uma paleta para codificar um bloco atual. O encriptador de vídeo 20 e o decodificador de vídeo 30 podem construir a lista da mesma forma. O encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar dados (tal como vetor 216) para indicar quais entradas do indicador de paleta devem ser copiadas para uma paleta para codificar um bloco atual,
[0248] Dessa forma, em alguns exemplos, entradas de paleta anteriormente decodificadas são armazenadas em uma lista para uso como um indicador de paleta. Essa lista pode ser usada para prever entradas de paleta no modo de paleta atual de CU. Um vetor de previsão binário pode ser sinalizado no fluxo de bits para indicar quais entradas na lista são reutilizadas na paleta atual. No Pedido Provisório no U.S. 62/018.461, depositado em 27 de junho de 2014, a codificação de comprimento de execução é usada para compactar o indicador de paleta binário. Em um exemplo, o valor de comprimento de execução é codificado com o uso do código de Exponencial de 0o ordem.
[0249] De acordo com aspectos desta revelação, em alguns exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 (por exemplo, a unidade de criptação por entropia 118 e a unidade de decodificação por entropia 150) podem ser configurados para codificar (por exemplo, criptar e decodificar, respectivamente) um vetor de previsão de paleta binário para uma paleta de um bloco com o uso de um código de Golomb exponencial truncado de k- ésima ordem (TEGk), conforme descrito acima em relação ao exemplo da Figura 1.
[0250] Em alguns casos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar o vetor de previsão de paleta binário com o uso do código de TEGk em conjunto com as técnicas descritas no documento de submissão padrão Seregin et al, “Non-SCCE3: Run-Length Coding for Palette Predictor”, JCTVC-R0228, Sapporo, JP, 30 de junho a 9 de julho de 2014 (doravante JCTVC-R0228). Em JCTVC-R0228, a codificação de comprimento de execução é usada para codificar os elementos zero em um vetor binário com as seguintes condições e etapas:
[0251] • Valor de comprimento de execução igual a 1 indica fim da previsão
[0252] • O fim da previsão não é sinalizado pelo último 1 no vetor binário
[0253] • O número de elementos zero antecedentes é codificado para cada 1 no vetor binário
[0254] • Se o número de elementos zero for maior que 0, o número mais um é sinalizado, devido ao valor de fuga de 1
[0255] • O valor de comprimento de execução é codificado com o uso de código de Golomb Exponencial de 0o ordem
[0256] Em um exemplo para propósitos de ilustração, um vetor de previsão de paleta binário pode ser igual a {1100100010000}, o que indica que quatro entradas (indicadas pelos quatro números um) do indicador de paleta são copiadas para a paleta para codificar um bloco atual. Nesse exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar o vetor como 0-0-3-4-1.
[0257] De acordo com aspectos desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar o vetor de previsão de paleta binário com o uso de um valor de execução máximo X para o vetor, o qual pode ser igual ao número de entradas de paleta no indicador de paleta lista menos a posição atual em ordem de varredura menos um). De acordo com um exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 usam um código TEG0 para codificar o valor de execução.
[0258] As técnicas desta revelação também se referem a sinalizar um tamanho de indicador de paleta máximo. Por exemplo, de acordo com aspectos desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar dados que indicam um tamanho de indicador de paleta máximo, por exemplo, em termos do número de bits que podem ser incluídos no vetor 216. Em alguns exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar dados que indicam o tamanho de indicador de paleta máximo em relação a um ou mais outros valores. Por exemplo, de acordo com aspectos desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar dados que indicam o tamanho de indicador de paleta máximo como um delta (por exemplo, diferença) entre o tamanho de indicador de paleta máximo e o tamanho de paleta máximo. Em alguns casos, o encriptador de vídeo e o decodificador de vídeo 30 podem codificar o delta com o uso de pelo menos um dentre um código de comprimento fixo, um código de Golomb-Rice ou um código de Golomb exponencial.
[0259] Em alguns exemplos, os elementos de sintaxe que indicam o tamanho de indicador de paleta máximo podem estar incluídos em um SPS. Em outros exemplos, os elementos de sintaxe que indicam o tamanho de indicador de paleta máximo podem estar incluídos em outro conjunto de parâmetros, tal como um VPS ou PPS, ou em dados de cabeçalho, tais como dados de cabeçalho de fatia ou dados associados a uma LCU ou CU.
[0260] Em alguns exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem variar, com o uso dos elementos de sintaxe que indicam o tamanho de indicador de paleta máximo, em que o tamanho de indicador de paleta máximo pode ser baseado no perfil, no nível ou na profundidade de bits em particular dos dados de vídeo que são codificados. Em outros exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem variar, com o uso dos elementos de sintaxe que indicam o tamanho de indicador de paleta máximo, em que o tamanho de indicador de paleta máximo pode ser baseado em um tamanho do bloco que é codificado.
[0261] Em um exemplo para propósitos de ilustração, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem usar os dados em relação ao tamanho de indicador de paleta máximo quando se constrói segundas paletas 192 para codificar a CU 188. Por exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem continuar a adicionar entradas a uma paleta preditiva (por exemplo, e bits ao vetor 216) até alcançar um tamanho de indicador de paleta máximo, conforme indicado pelos dados. O encriptador de vídeo 20 e o decodificador de vídeo 30 podem, então, usar o vetor 216 para construir as segundas paletas 192 para a CU 188.
[0262] A Figura 5 é um diagrama conceitual que ilustra um exemplo de determinação de índices de paleta para uma paleta para um bloco de pixels, consistente com as técnicas desta revelação. Por exemplo, a Figura 5 inclui um mapa 240 de índices de paleta que relaciona respectivas posições de pixels associadas aos índices de paleta a uma entrada de paletas 244. Por exemplo, o índice 1 é associado ao Valor A, o índice 2 é associado ao Valor B e o índice 3 é associado ao Valor C. Além disso, quando amostras de fuga são indicadas com o uso de sinalização de fuga implícita, o encriptador de vídeo 20 e o decodificador de vídeo 30 também podem adicionar um índice adicional às paletas 244, ilustrado na Figura 5 como o índice 4, o qual pode indicar que as amostras de mapa 240 associadas ao índice 4 são amostras de fuga. Nesse caso, o encriptador de vídeo 20 pode criptar (e o decodificador de vídeo 30 pode obter, a partir de um fluxo de bits criptado) uma indicação de um valor de pixel real (ou sua versão quantizada) para uma posição no mapa 240 se o valor de pixel não estiver incluído nas paletas 244.
[0263] Em alguns exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar um mapa adicional que indica quais posições de pixel são associadas a índices de paleta. Por exemplo, presume-se que a entrada (i, j) no mapa corresponda à posição (i, j) de uma CU. O encriptador de vídeo 20 pode criptar um ou mais elementos de sintaxe para cada entrada do mapa (isto é, cada posição de pixel) que indica se a entrada tem um valor de índice associado. Por exemplo, o encriptador de vídeo 20 pode criptar um sinalizador que tem um valor de um para indicar que o valor de pixel no local (i, j) na CU é um dentre os valores nas paletas 244.
[0264] O encriptador de vídeo 20 também pode, em tal exemplo, criptar um índice de paleta (mostrado no exemplo da Figura 5 como os valores 1 a 3) para indicar o valor de pixel na paleta e permitir que o decodificador de vídeo reconstrua o valor de pixel.
[0265] Em casos em que as paletas 244 incluem uma única entrada e um valor de pixel associado, o encriptador de vídeo 20 pode omitir a sinalização do valor de índice. O encriptador de vídeo 20 pode criptar o sinalizador para ter um valor de zero para indicar que o valor de pixel no local (i, j) na CU não é um dentre os valores nas paletas 244. Nesse exemplo, o encriptador de vídeo 20 também pode criptar uma indicação do valor de pixel para uso pelo decodificador de vídeo 30 na reconstrução do valor de pixel. Em alguns casos, o valor de pixel pode ser codificado de uma maneira com perdas.
[0266] O valor de um pixel em uma posição de uma CU pode fornecer uma indicação de valores de um ou mais outros pixels em outras posições da CU. Por exemplo, pode existir uma probabilidade relativamente alta de que as posições de pixel vizinhas de uma CU tenham o mesmo valor de pixel ou possam ser mapeadas para o mesmo valor de índice (no caso de codificação com perdas, em que mais de um valor de pixel pode ser mapeado para um único valor de índice).
[0267] Consequentemente, o encriptador de vídeo 20 pode criptar um ou mais elementos de sintaxe que indicam diversos pixels consecutivos ou índices de paleta em uma dada ordem de varredura que são codificados em conjunto. Conforme observado acima, a série de índices de paleta (ou de valores de pixel indicados pelos índices de paleta) pode ser denominada no presente documento como uma execução. O decodificador de vídeo 30 pode obter os elementos de sintaxe que indicam uma execução a partir de um fluxo de bits criptado e usar os dados para determinar o número de locais consecutivos que têm o mesmo pixel ou valor de índice.
[0268] Conforme observado acima, as execuções podem ser usadas em conjunto com um modo CopyFromTop ou Valor. Em um exemplo para propósitos de ilustração, considere as fileiras 264 e 268 do mapa 240. Presumindo-se uma direção de realização de varredura da esquerda para a direita horizontal, a fileira 264 inclui três índices de paleta de “1”, dois índices de paleta de “2” e três índices de paleta de “3”. A fileira 268 inclui cinco índices de paleta de “1”, dois índices de paleta de “3” e uma amostra que não está incluída nas paletas 244 (representada pelo índice 4, embora um sinalizador de fuga no nível de amostra possa ser usado para sinalização de fuga explícita), a qual pode ser denominada como uma amostra de fuga.
[0269] Nesse exemplo, o encriptador de vídeo 20 pode usar o modo CopyFromTop para criptar dados para a fileira 268. Por exemplo, o encriptador de vídeo 20 pode criptar um ou mais elementos de sintaxe que indicam que a primeira posição da fileira 268 (a posição mais à esquerda da fileira 268) é a mesma que a primeira posição da fileira 264. O encriptador de vídeo 20 também pode criptar um ou mais elementos de sintaxe que indicam que a próxima execução de duas entradas consecutivas na direção de varredura na fileira 268 são as mesmas que na primeira posição da fileira 264.
[0270] Após criptar os um ou mais elementos de sintaxe que indicam a primeira posição da fileira 264 e a execução de duas entradas (observada acima), o encriptador de vídeo 20 pode criptar as quarta e quinta posições na fileira 268 (da esquerda para a direita) com o uso do modo Valor. Por exemplo, o encriptador de vídeo 20 pode criptar um ou mais elementos de sintaxe que indicam um valor de 1 para a quarta posição e um ou mais elementos de sintaxe que indicam uma execução 1 (por exemplo, modo Valor). Logo, o encriptador de vídeo 20 cripta essas duas posições sem referência a outra linha.
[0271] O encriptador de vídeo 20 pode, então, criptar a primeira posição que tem um valor de índice de 3 na fileira 268 com o uso do modo CopyFromTop em relação à fileira superior 264. Por exemplo, o encriptador de vídeo 20 pode sinalizar um modo CopyFromTop e uma execução de 1. Consequentemente, o encriptador de vídeo 20 pode selecionar entre codificar valores de pixel ou índices de paleta de uma linha em relação a outros valores da linha, por exemplo, com o uso de uma execução, ou codificar valores de pixel de uma linha em relação a valores de outra linha (ou coluna) ou uma combinação dos mesmos. O encriptador de vídeo 20 pode, em alguns exemplos, realizar uma otimização de taxa/distorção para fazer a seleção.
[0272] O encriptador de vídeo 20 pode, então, decodificar a amostra de fuga para a amostra final da fileira 268 (da esquerda para a direita), a qual não está incluída nas primeiras paletas 244. Por exemplo, o encriptador de vídeo 20 pode criptar a posição final da fileira 268 como uma amostra de fuga. Isto é, o encriptador de vídeo 20 pode criptar uma indicação de que a posição final da fileira 268 é em uma amostra de fuga (por exemplo, índice 4) , assim como uma indicação do valor de amostra. O decodificador de vídeo 30 pode obter a sintaxe descrita acima a partir de um fluxo de bits criptado e reconstruir a fileira 268 com o uso de tal sintaxe.
[0273] Conforme observado acima, podem existir duas técnicas para codificar a amostra de fuga. Por exemplo, com sinalização de fuga explícita, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar um modo Fuga por amostra explícito sinalizador para cada posição de amostra do mapa 240. Se uma amostra em particular (tal como a amostra final da fileira 268) for codificada como uma amostra de fuga, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar dados que indicam o valor de cor para a amostra em particular. Se a amostra não for codificada como uma amostra de fuga, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar dados adicionais para indicar se o modo é CopyFromTop ou Valor, tal como um sinalizador SPoint.
[0274] Com sinalização de fuga implícita, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem adicionar um índice adicional a paletas 244 (índice de entrada 4). O encriptador de vídeo 20 e o decodificador de vídeo 30 podem usar o índice adicional a paletas 244 para indicar que uma amostra é codificada como uma amostra de fuga, por exemplo, índice 4. Entretanto, o índice adicional não tem um valor de cor associado. Em vez disso, o encriptador de vídeo 20 e o decodificador de vídeo 30 também codificam valores de cor para cada amostra que é associada ao índice adicional. Se a amostra não for codificada como uma amostra de fuga, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar dados para indicar se o modo é CopyFromTop ou Valor, tal como um sinalizador SPoint.
[0275] De acordo com aspectos desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar um ou mais elementos de sintaxe no nível de bloco que indicam, para todas as amostras de um bloco de dados de vídeo, se pelo menos uma amostra do bloco é codificada com base em um valor de cor que não está incluído em uma paleta de cores para o bloco. Em relação ao exemplo da Figura 5, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar um ou mais elementos de sintaxe associados ao mapa 240 que indicam que pelo menos uma amostra do mapa 240 é codificada como uma amostra de fuga, isto é, a amostra final da fileira 268.
[0276] Em um exemplo, os um ou mais elementos de sintaxe podem ser um sinalizador de fuga no nível de bloco (denominado abaixo simplesmente como “sinalizador de fuga”). Por exemplo, o encriptador de vídeo 20 pode criptar um sinalizador de fuga que tem um valor de um para indicar que o mapa 240 inclui uma amostra codificada como uma amostra de fuga. Do mesmo modo, o decodificador de vídeo 30 pode decodificar um sinalizador de fuga que tem um valor de um, o qual indica que o mapa 240 inclui uma amostra codificada como uma amostra de fuga. Consequentemente, o encriptador de vídeo 20 pode criptar e o decodificador de vídeo 30 pode decodificar o mapa 240 de acordo com o sinalizador de fuga. Por exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem adicionar o índice 4 às primeiras paletas 244, o qual pode ser usado para representar amostras codificadas como amostras de fuga. O encriptador de vídeo 20 e o decodificador de vídeo 30 podem usar esse índice adicional durante a codificação do mapa 240.
[0277] De acordo com aspectos desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para omitir a codificação de determinada sintaxe com base no sinalizador de fuga e no tamanho da paleta que é usada para codificar um bloco em particular. Isto é, embora os exemplos da Figura 5 ilustrem as primeiras paletas 244 que têm três entradas, em alguns casos, uma paleta para codificar um bloco de dados de vídeo pode incluir uma única entrada. Em tais casos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para omitir a codificação de determinada sintaxe relacionada a fuga com base na paleta que tem uma única entrada e o sinalizador de fuga que indica que nenhuma amostra do bloco é codificada como amostras de fuga.
[0278] Por exemplo, como nos casos em que o sinalizador de fuga indica que nenhuma amostra do bloco são amostras de fuga e quando o tamanho de uma paleta é um, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para inferir que todas as amostras do bloco têm o mesmo valor de índice (por exemplo, a única entrada da paleta). O encriptador de vídeo 20 e o decodificador de vídeo 30 também podem, portanto, omitir a codificação de todos os outros dados usados para determinar índices de paleta do bloco.
[0279] No exemplo acima, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar explicitamente a sintaxe de fuga no nível de bloco (por exemplo, o encriptador de vídeo 20 pode criptar um sinalizador de fuga no fluxo de bits e o decodificador de vídeo 30 pode decodificar tal sinalizador a partir do fluxo de bits). Entretanto, em alguns exemplos, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem inferir (por exemplo, determinar, sem criptar ou decodificar o elemento de sintaxe observado acima) o valor do elemento de sintaxe de fuga no nível de bloco com base no tamanho de paletas 244 usada para codificar o mapa 240. Por exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem tomar uma determinação preliminar em relação ao tamanho de paleta a fim de determinar o valor do sinalizador de fuga no nível de bloco. O elemento de sintaxe de fuga no nível de bloco apenas pode ser codificado no fluxo de bits quando o tamanho de paleta é maior que zero.
[0280] De acordo com aspectos desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem determinar inicialmente um tamanho de uma paleta para codificar um bloco de dados de vídeo. Com base no tamanho da paleta ser zero, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem determinar que o sinalizador de fuga é igual a um e que todas as amostras do bloco são codificadas como amostras de fuga, devido ao fato que não existem outras entradas de paleta disponíveis para codificar amostras.
[0281] Por exemplo, como nos casos em que o tamanho de paleta é zero, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para determinar automaticamente que todas as amostras do bloco têm o mesmo valor de índice (por exemplo, a entrada adicional da paleta associada a indicar amostras de fuga). O encriptador de vídeo 20 e o decodificador de vídeo 30 também podem, portanto, omitir a codificação do sinalizador de fuga assim como todos os outros dados usados para determinar índices de paleta do bloco.
[0282] A Figura 6 é um diagrama conceitual que ilustra um exemplo de determinação do comprimento de execução máximo para o modo CopyFromAbove, presumindo-se uma ordem de varredura raster, consistente com as técnicas desta revelação. Conforme observado acima, as técnicas desta revelação incluem sintaxe de codificação para codificação de paleta com o uso de um código que leva em conta um valor de potencial máximo da sintaxe que é codificada.
[0283] Em um exemplo para propósitos de ilustração, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem codificar um comprimento de execução de uma execução de índices de paleta (por exemplo, uma execução de índices que têm o mesmo valor ou uma execução de índices que são copiados dos índices vizinhos acima). Por exemplo, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem determinar, para uma amostra codificada em paleta atual, um comprimento de execução de uma execução de índices de paleta que é codificado em conjunto com a amostra atual. O criptador de vídeo 20 e o decodificador de vídeo 30 também podem determinar um comprimento de execução máximo para uma execução máxima de índices de paleta que têm capacidade para serem codificados com o índice de paleta do pixel. O encriptador de vídeo 20 e o decodificador de vídeo 30 podem, então, codificar dados que indicam o comprimento de execução com base no comprimento de execução máximo determinado
[0284] Em alguns casos, de acordo com aspectos desta revelação, a sintaxe pode ser codificada com o uso de uma forma de código de Golomb Exponencial, tal como o código de TEGk descrito no presente documento. Para usar o código de TEGk, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem determinar um comprimento de execução máximo como o número de pixels na CU atual menos a posição atual na ordem de varredura menos 1.
[0285] Em algumas técnicas de codificação de paleta, não se permite que execuções de pixels associadas a um modo CopyFromAbove (em que um codificador de vídeo copia um índice de um pixel acima do pixel atual) incluam quaisquer pixels de fuga. Isto é, um codificador de vídeo precisa para uma execução CopyFromAbove se o pixel vizinho acima do pixel atual for um pixel codificado como uma amostra de fuga. Logo, o comprimento de execução CopyFromAbove máximo é unido pela distância entre a posição de pixel atual e a posição que tem um pixel vizinho acima que é de fuga na ordem de varredura.
[0286] Em um exemplo para propósitos de ilustração, a posição inicial de uma execução CopyFromAbove na ordem de varredura é A, o pixel vizinho acima do pixel na posição A+L (L>0) (ou, em alguns exemplos, A+L (Z>I)) é codificada como uma amostra de fuga e o pixel vizinho acima do pixel na posição A+l(l<L) não é codificado como uma amostra de fuga. Se tal pixel L não existir, o encriptador de vídeo 20 pode atribuir L à posição após o último pixel no bloco na ordem de varredura. De acordo com as técnicas desta revelação, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem usar TEGk para codificar o comprimento de execução para o modo CopyFromAbove com a restrição de que o comprimento de execução codificado máximo não é maior que L-1. Alternativamente, se prefixos unários maiores que 0, maiores que 1 e maiores que 2 forem usados quando se codifica um comprimento de execução, o encriptador de vídeo 20 ou o decodificador de vídeo 30 podem definir o comprimento de execução máximo da execução do mapa de índices a ser codificado com o uso de TEGk para L-4.
[0287] Em casos em que o decodificador de vídeo 30 ou o encriptador de vídeo 20 não podem determinar se um pixel em uma posição corresponde a um pixel de fuga ou não, o encriptador de vídeo 20 e o decodificador de vídeo 30 podem processar o pixel como se o mesmo não fosse codificado como uma amostra de fuga, isto é, o comprimento de execução codificado máximo não para. No exemplo da Figura 6, se nenhum dos pixels abrangidos pelas linhas tracejadas 280 for codificado como uma amostra de fuga, o comprimento de execução máximo possível é 35 (isto é, o número de posições de pixel não sombreadas). Se um ou mais dos pixels dentro das linhas tracejadas 280 for codificado como uma amostra de fuga, presumindo-se que o pixel marcado como o pixel de fuga (a posição de pixel com o “X”) é o primeiro pixel de fuga dentro das linhas tracejadas 280 em ordem de varredura, então, o comprimento de execução acima de cópia codificada máxima possível é cinco.
[0288] Em alguns exemplos, o decodificador de vídeo 30 pode determinar apenas o modo de execução (por exemplo, o modo de paleta em que os pixels são codificados) para os pixels dentro das linhas tracejadas 280. Logo, no pior caso, o decodificador de vídeo 30 faz a determinação para pixels de BlockWidth-1. Em alguns exemplos, o decodificador de vídeo 30 pode ser configurado para implantar determinadas restrições em relação ao número máximo de pixels ao qual o modo de execução é verificado. Por exemplo, o decodificador de vídeo 30 pode verificar apenas os pixels dentro das linhas tracejadas 280 se os pixels estiverem na mesma fileira que o pixel atual. O decodificador de vídeo 30 pode inferir que todos os outros pixels dentro das linhas tracejadas 280 não são codificados como amostras de fuga. O exemplo da Figura 6 presume uma ordem de varredura raster. Entretanto, as técnicas podem ser aplicadas a outras ordens de varredura, tais como vertical, transversal horizontal e transversal vertical.
[0289] A Figura 7 é um fluxograma que ilustra um processo exemplificativo para criptar um bloco de dados de vídeo com base em um ou mais elementos de sintaxe no nível de bloco que indicam se quaisquer amostras de um bloco são criptadas como amostras de fuga, consistente com técnicas desta revelação. O processo da Figura 7 é descrito, em geral, como sendo realizado pelo encriptador de vídeo 20 para propósitos de ilustração, embora uma variedade de outros processadores também possa executar o processo mostrado na Figura 7.
[0290] No exemplo da Figura 7, o encriptador de vídeo 20 determina uma paleta para criptar um bloco de dados de vídeo (300). Em alguns exemplos, o encriptador de vídeo 20 pode determinar as paletas com base em paleta de um ou mais blocos anteriormente criptados, por exemplo, com o uso de um indicador de paleta. O encriptador de vídeo 20 também pode determinar o tamanho da paleta (302). Por exemplo, o encriptador de vídeo 20 pode determinar diversas entradas na paleta determinada.
[0291] O encriptador de vídeo 20 pode determinar se o tamanho de paleta é zero (304). Com base no tamanho de paleta ser igual a zero (a ramificação sim da etapa 304), o encriptador de vídeo 20 pode determinar que a sintaxe de fuga no nível de bloco que indique que pelo menos uma amostra do bloco é uma amostra de fuga (306). Em um exemplo, o encriptador de vídeo 20 pode determinar que um sinalizador de fuga no nível de bloco é igual a um. O encriptador de vídeo 20 cripta, então, todas as amostras do bloco como amostras de fuga e sem criptar outros elementos de sintaxe para o bloco (308). Por exemplo, o encriptador de vídeo 20 pode não criptar uma indicação do sinalizador de fuga no nível de bloco, devido ao fato de que o elemento de sintaxe de fuga no nível de bloco pode ser apenas criptado no fluxo de bits quando o tamanho de paleta é maior que zero. Além disso, o encriptador de vídeo 20 pode não criptar outros dados para índices de paleta do bloco, tal como a sintaxe que indica um modo de paleta (por exemplo, Valor ou CopyFromTop), a sintaxe associada à determinação de execuções, a sintaxe associada aos índices de paleta e qualquer outra sintaxe relacionada.
[0292] Se o tamanho de paleta não for zero (a ramificação não da etapa 304), o encriptador de vídeo 20 pode determinar se quaisquer amostras do bloco são criptadas como amostras de fuga (310). Com base na determinação que pelo menos uma amostra do bloco é criptada como uma amostra de fuga (a ramificação sim da etapa 310), o encriptador de vídeo 20 pode determinar a sintaxe de fuga no nível de bloco que indica que pelo menos uma amostra do bloco é criptada como uma amostra de fuga e criptar uma indicação da sintaxe no nível de bloco em um fluxo de bits com o bloco (312). Por exemplo, o encriptador de vídeo 20 pode definir um sinalizador de fuga no nível de bloco igual a um e criptar uma indicação do sinalizador de fuga no fluxo de bits. O encriptador de vídeo 20 também cripta o bloco com modos de codificação de paleta, o que inclui criptar pelo menos um pixel do bloco como uma amostra de fuga (314).
[0293] Com base em nenhuma amostra ser criptada como amostras de fuga (a ramificação não da etapa 310), o encriptador de vídeo 20 pode determinar se um tamanho de paleta da paleta para o bloco é igual a um (316). Com base na determinação de que o tamanho de paleta não é igual a um (a ramificação não da etapa 316), o encriptador de vídeo 20 pode determinar a sintaxe de fuga no nível de bloco que indica que nenhuma amostra do bloco é criptada como amostras de fuga e criptar uma indicação da sintaxe de fuga no nível de bloco no fluxo de bits (318). Por exemplo, o encriptador de vídeo 20 pode definir um sinalizador de fuga no nível de bloco igual a zero e criptar uma indicação do sinalizador de fuga no fluxo de bits. O encriptador de vídeo 20 também cripta o bloco com o uso de modos de codificação de paleta, mas sem criptar quaisquer amostras de fuga (320). Por exemplo, o encriptador de vídeo 20 pode criptar índices de paleta do bloco com o uso dos modos CopyFromTop ou Valor e criptar a sintaxe associada ao uso de tais modos, por exemplo, a sintaxe que indica os modos, os índices de paleta, as execuções e semelhantes.
[0294] Com base na determinação de que o tamanho de paleta é igual a um (a ramificação sim da etapa 316), o encriptador de vídeo 20 pode determinar a sintaxe de fuga no nível de bloco que indica que nenhuma amostra do bloco é codificada como amostras de fuga e criptar uma indicação da sintaxe de fuga no nível de bloco no fluxo de bits (322). Por exemplo, o encriptador de vídeo 20 pode definir um sinalizador de fuga no nível de bloco igual a zero e criptar uma indicação do sinalizador de fuga no fluxo de bits. O encriptador de vídeo 20 também cripta uma indicação de que todas as amostras do bloco têm o mesmo valor de índice e sem criptar outra sintaxe (324). Por exemplo, o encriptador de vídeo 20 pode omitir a criptação de sintaxe associada ao uso dos modos de paleta, por exemplo, a sintaxe que indica os modos, os índices de paleta, as execuções e semelhantes.
[0295] A Figura 8 é um fluxograma que ilustra um processo exemplificativo para decodificar um bloco de dados de vídeo com base em um ou mais elementos de sintaxe no nível de bloco que indicam se quaisquer amostras de um bloco são decodificadas como amostras de fuga, consistente com técnicas desta revelação. O processo da Figura 8 é descrito, em geral, como sendo realizado pelo decodificador de vídeo 30 para propósitos de ilustração, embora uma variedade de outros processadores também possa executar o processo mostrado na Figura 8.
[0296] No exemplo da Figura 8, o decodificador de vídeo 30 determina uma paleta para decodificar um bloco de dados de vídeo (340). Em alguns exemplos, o decodificador de vídeo 30 pode determinar as paletas com base em paleta de um ou mais blocos anteriormente criptados, por exemplo, com o uso de um indicador de paleta sinalizado em um fluxo de bits que é decodificado. O decodificador de vídeo 30 também pode determinar o tamanho da paleta (342). Por exemplo, o decodificador de vídeo 30 pode determinar diversas entradas na paleta determinada.
[0297] O decodificador de vídeo 30 pode determinar se o tamanho de paleta é zero (344). Com base no tamanho de paleta ser igual a zero (a ramificação sim da etapa 344), o decodificador de vídeo 30 pode determinar a sintaxe de fuga no nível de bloco que indica que pelo menos uma amostra do bloco é criptada como uma amostra de fuga (346). Em um exemplo, o decodificador de vídeo 30 pode determinar que um sinalizador de fuga no nível de bloco é igual a um. Por exemplo, o decodificador de vídeo 30 pode inferir que o sinalizador de fuga no nível de bloco é igual a um sem decodificar o sinalizador a partir do fluxo de bits, devido ao fato de que o elemento de sintaxe de fuga no nível de bloco apenas pode ser codificado no fluxo de bits quando o tamanho de paleta é maior que zero. O decodificador de vídeo 30 decodifica, então, todas as amostras do bloco com o uso da cor associada à amostra de fuga e sem decodificar outros elementos de sintaxe para o bloco (por exemplo, diferentes do valor(es) de cor associado(s) à amostra de fuga) (348). Por exemplo, conforme observado acima, o decodificador de vídeo 30 pode não decodificar uma indicação do sinalizador de fuga no nível de bloco. Além disso, o decodificador de vídeo 30 pode não decodificar outros dados para índices de paleta do bloco, tal como a sintaxe que indica um modo de paleta (por exemplo, Valor ou CopyFromTop), a sintaxe que indica valores de índice, a sintaxe associada à determinação de execuções e qualquer outra sintaxe relacionada.
[0298] Se o tamanho de paleta não for zero (a ramificação não da etapa 344), o decodificador de vídeo 30 pode decodificar a sintaxe de fuga no nível de bloco a partir do fluxo de bits e determinar um valor da sintaxe no nível de bloco (350). Por exemplo, o decodificador de vídeo 30 pode decodificar um sinalizador de fuga no nível de bloco e determinar se o valor é igual a zero ou a um.
[0299] O decodificador de vídeo 30 pode, então, determinar se quaisquer amostras do bloco são codificadas como uma amostra de fuga, por exemplo, com base na sintaxe decodificada (352). Com base na determinação de que pelo menos uma amostra do bloco é criptada como uma amostra de fuga (a ramificação sim da etapa 352), o decodificador de vídeo 30 pode decodificar o bloco com modos de codificação de paleta, o que inclui decodificar pelo menos uma amostra do bloco como uma amostra de fuga (354). O decodificador de vídeo 30 também pode decodificar pelo menos um valor de cor que corresponde às amostras de fuga.
[0300] Com base em nenhuma amostra ser criptada como amostras de fuga (a ramificação não da etapa 352), o decodificador de vídeo 30 pode determinar se um tamanho de paleta da paleta para o bloco é igual a um (356). Com base na determinação de que o tamanho de paleta não é igual a um (a ramificação não da etapa 356), o decodificador de vídeo 30 pode decodificar o bloco com o uso de modos de codificação de paleta, mas sem decodificar quaisquer amostras de fuga (358). Por exemplo, o decodificador de vídeo 30 pode decodificar índices de paleta do bloco com o uso dos modos CopyFromTop ou Valor e decodificar a sintaxe associada ao uso de tais modos, por exemplo, a sintaxe que indica os modos, os índices de paleta, as execuções e semelhantes.
[0301] Com base na determinação de que o tamanho de paleta é igual a um (a ramificação sim da etapa 356), o decodificador de vídeo 30 pode decodificar o bloco com o uso da entrada de paleta da paleta (por exemplo, a única entrada presente na paleta) e sem decodificar outra sintaxe (360). Por exemplo, o decodificador de vídeo 30 pode omitir a decodificação de sintaxe associada ao uso dos modos de paleta, por exemplo, a sintaxe que indica os modos, os índices de paleta, as execuções e semelhantes.
[0302] A Figura 9 é um fluxograma que ilustra um processo exemplificativo para a criptação de um bloco de dados de vídeo com base em um ou mais elementos de sintaxe que indicam um tamanho de paleta máximo e um tamanho de indicador de paleta máximo, consistente com as técnicas desta revelação. O processo da Figura 9 é descrito, em geral, como sendo realizado pelo encriptador de vídeo 20 para propósitos de ilustração, embora uma variedade de outros processadores também possa executar o processo mostrado na Figura 9.
[0303] No exemplo da Figura 9, o encriptador de vídeo 20 pode determinar um tamanho máximo de uma paleta para criptar um bloco atual de dados de vídeo no modo de paleta (380). Por exemplo, o encriptador de vídeo 20 pode ser configurado para determinar um tamanho de paleta máximo com base em uma característica dos dados de vídeo que são criptados, em alguns exemplos, o encriptador de vídeo 20 pode determinar um tamanho de paleta máximo com base em uma profundidade de bits dos dados (por exemplo, uma profundidade de bits de entrada ou uma profundidade de bits de perfil), um tamanho de bloco do bloco, um perfil ou nível associado aos dados de vídeo ou semelhantes.
[0304] O encriptador de vídeo 20 também pode determinar um tamanho de indicador de paleta máximo de um indicador de paleta para criar uma paleta do bloco atual (382). Por exemplo, o encriptador de vídeo 20 pode ser configurado para determinar um tamanho de indicador de paleta máximo com base em uma característica dos dados de vídeo que são criptados. Em alguns exemplos, o encriptador de vídeo 20 pode determinar um tamanho de indicador de paleta máximo com base em uma profundidade de bits dos dados (por exemplo, uma profundidade de bits de entrada ou uma profundidade de bits de perfil), um tamanho de bloco do bloco, um perfil ou um nível associado aos dados de vídeo ou semelhantes.
[0305] O encriptador de vídeo 20 também cripta dados que indicam o tamanho de paleta máximo e/ou o tamanho de indicador de paleta máximo em um fluxo de bits que inclui o bloco atual (386). Em alguns exemplos, o encriptador de vídeo 20 pode criptar dados que indicam o tamanho de paleta máximo e/ou o tamanho de indicador de paleta máximo em relação a um ou mais outros valores. Por exemplo, de acordo com aspectos desta revelação, o encriptador de vídeo 20 pode ser configurado para codificar dados que indicam o tamanho de indicador de paleta máximo como um delta (por exemplo, diferença) entre o tamanho de indicador de paleta máximo e o tamanho de paleta máximo.
[0306] De acordo com aspectos desta revelação, o encriptador de vídeo 20 pode criptar um ou mais elementos de sintaxe que indicam o tamanho de paleta máximo e/ou o tamanho de indicador de paleta máximo em um SPS. Em outros exemplos, o encriptador de vídeo 20 pode criptar tal sintaxe em outro conjunto de parâmetros (por exemplo, um PPS), em um cabeçalho de fatia de uma fatia que inclui o bloco atual ou em outro local no fluxo de bits.
[0307] O encriptador de vídeo 20 também cripta o bloco atual de acordo com os dados que indicam o tamanho de paleta máximo e/ou o tamanho de indicador de paleta máximo (388). Por exemplo, o encriptador de vídeo 20 pode determinar uma paleta que é limitada pelo tamanho de paleta máximo e/ou um indicador de paleta que é limitado pelo tamanho de indicador de paleta máximo.
[0308] A Figura 10 é um fluxograma que ilustra um processo exemplificativo para criptar um bloco de dados de vídeo com base em um ou mais elementos de sintaxe que indicam um tamanho de paleta máximo e um tamanho de indicador de paleta máximo, consistente com as técnicas desta revelação. O processo da Figura 10 é descrito, em geral, como sendo realizado pelo decodificador de vídeo 30 para propósitos de ilustração, embora uma variedade de outros processadores também possa executar o processo mostrado na Figura 10.
[0309] No exemplo da Figura 10, o decodificador de vídeo 30 decodifica dados que indicam um tamanho de paleta máximo e/ou um tamanho de indicador de paleta máximo a partir de um fluxo de bits que inclui um bloco atual que é decodificado no modo de paleta (400). Em alguns exemplos, o encriptador de vídeo 20 pode criptar dados que indicam o tamanho de paleta máximo e/ou o tamanho de indicador de paleta máximo em relação a um ou mais outros valores. Por exemplo, de acordo com aspectos desta revelação, o encriptador de vídeo 20 pode ser configurado para codificar dados que indicam o tamanho de indicador de paleta máximo como um delta (por exemplo, diferença) entre o tamanho de indicador de paleta máximo e o tamanho de paleta máximo.
[0310] De acordo com aspectos desta revelação, o decodificador de vídeo 30 pode decodificar um ou mais elementos de sintaxe que indicam o tamanho de paleta máximo e/ou o tamanho de indicador de paleta máximo a partir de um SPS. Em outros exemplos, o decodificador de vídeo 30 pode decodificar tal sintaxe a partir de outro conjunto de parâmetros (por exemplo, um PPS), a partir de um cabeçalho de fatia de uma fatia que inclui o bloco atual ou em outro local no fluxo de bits.
[0311] O decodificador de vídeo 30 pode determinar o tamanho máximo de uma paleta para decodificar o bloco atual com base nos dados decodificados (402). O decodificador de vídeo 30 também pode determinar um tamanho de indicador de paleta máximo de um indicador de paleta para criar uma paleta para o bloco atual com base nos dados (404). O decodificador de vídeo 30 também decodifica o bloco atual de acordo com os dados que indicam o tamanho de paleta máximo e/ou o tamanho de indicador de paleta máximo (408). Por exemplo, o decodificador de vídeo 30 pode determinar uma paleta que é limitada pelo tamanho de paleta máximo e/ou um indicador de paleta que é limitado pelo tamanho de indicador de paleta máximo.
[0312] A Figura 11 é um fluxograma que ilustra um processo exemplificativo para codificar (criptar ou decodificar) dados que indicam um comprimento de execução de uma execução de pixels com base em um comprimento de execução potencial máximo, consistente com técnicas desta revelação. O processo da Figura 11 é descrito, em geral, como sendo realizado por um codificador de vídeo, tal como o encriptador de vídeo 20 ou o decodificador de vídeo 30, para propósitos de ilustração, embora uma variedade de outros processadores também possa executar o processo mostrado na Figura 11.
[0313] No exemplo da Figura 11, o codificador de vídeo pode determinar um modo de paleta para codificar um pixel atual (420). Por exemplo, o codificador de vídeo pode determinar se o pixel atual é codificado com o uso de um modo CopyFromTop, um modo Valor ou outro modo de codificação com base em paleta. O codificador de vídeo também determina um comprimento de execução de uma execução para o pixel atual (422). Por exemplo, o codificador de vídeo determina o número de índices de paleta que são codificados com o índice de paleta do pixel atual.
[0314] O codificador de vídeo também determina um comprimento de execução máximo para a execução (424). Por exemplo, o codificador de vídeo pode determinar um comprimento de execução máximo para uma execução máxima de índices de paleta que têm capacidade para serem codificados com o índice de paleta do pixel atual. Em um exemplo, o codificador de vídeo pode determinar um número de pixels no bloco de dados de vídeo que inclui o pixel. O codificador de vídeo também pode determinar uma posição do pixel atual no bloco com base em uma ordem de varredura usada para realizar varredura nos índices de paleta. O codificador de vídeo determina, então, o comprimento de execução máximo como o número de pixels no bloco menos a posição de pixel do pixel atual menos um.
[0315] O codificador de vídeo também codifica dados que indicam o comprimento de execução da execução com base no comprimento de execução máximo determinado (426). Por exemplo, de acordo com aspectos desta revelação, o codificador de vídeo pode codificar dados que indicam o comprimento de execução com o uso de um código de TEGk.
[0316] Deve ser reconhecido que, dependendo do exemplo, certos atos ou eventos de quaisquer uma dentre as técnicas descritas no presente documento podem ser realizados em uma sequência diferente, podem ser adicionados, fundidos ou deixados de fora todos juntos (por exemplo, nem todos os atos e eventos descritos são necessários para a prática das técnicas). Além disso, em determinados exemplos, os atos ou eventos podem ser realizados de modo concomitante, por exemplo, através de processamento de múltiplos encadeamentos, processamento interrupto ou em múltiplos processadores, em vez de sequencialmente. Adicionalmente, embora certos aspectos desta revelação sejam descritos como realizados por um único módulo ou unidade para propósitos de clareza, deve ser entendido que as técnicas desta revelação podem ser realizadas por uma combinação de unidades ou módulos associados a um codificador de vídeo.
[0317] Determinados aspectos desta revelação foram descritos em relação ao padrão de HEVC em desenvolvimento para propósitos de ilustração. No entanto, as técnicas descritas nesta revelação podem ser úteis para outros processos de codificação de vídeo, que incluem outro padrão ou processos de codificação de vídeo de proprietário ainda não desenvolvidos.
[0318] As técnicas descritas acima podem ser realizadas pelo encriptador de vídeo 20 (Figuras 1 e 2) e/ou decodificador de vídeo 30 (Figuras 1 e 3), ambos os quais podem ser referidos de modo geral como um codificador de vídeo. De modo semelhante, a codificação de vídeo pode se referir a criptação de vídeo ou decodificação de vídeo, conforme aplicável.
[0319] Embora combinações particulares de diversos aspectos das técnicas sejam descritas acima, essas combinações são fornecidas meramente para ilustrar exemplos das técnicas descritas nesta revelação. Portanto, as técnicas desta revelação não devem ser limitadas a essas combinações exemplificativas e podem abranger qualquer combinação concebível dos vários aspectos das técnicas descritas nesta revelação.
[0320] Em um ou mais exemplos, as funções descritas podem ser implantadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implantado em software, as funções podem ser armazenadas em, ou transmitidas sobre, como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento com base em hardware. Os meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível, tais como meios de armazenamento de dados ou meios de comunicação que incluem qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa maneira, os meios legíveis por computador, em geral, podem corresponder a (1) meios de armazenamento legíveis por computador tangíveis que são não transitórios ou (2) um meio de comunicação tal como um sinal ou onda portadora. As mídias de armazenamento de dados podem ser quaisquer mídias disponíveis que possam ser acessadas por um ou mais computadores ou um ou mais processadores para recuperar instruções, estruturas de código e/ou dados para a implantação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0321] A título de exemplo e não de limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser usado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada uma mídia legível por computador. Por exemplo, se as instruções forem transmitidas a partir de um sítio da Web, servidor ou outra fonte remota com o uso de um cabo coaxial, cabo de fibra óptica, par trançado, linha de inscrição digital (DSL) ou tecnologias sem fio tais como infravermelho, rádio e micro-onda, então, o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou as tecnologias sem fio tais como infravermelho, rádio e micro-onda estão incluídos na definição de mídia. Deve ser entendido, entretanto, que os meios de armazenamento legíveis por computador e os meios de armazenamento de dados não incluem conexões, ondas de portadora, sinais ou outros meios transitórios, mas são, em vez disso, direcionados para meios não transitórios e tangíveis. O disco magnético e o disco óptico, conforme usados no presente documento, incluem disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disquete e disco blu-ray, em que os discos magnéticos, em geral, reproduzem os dados de modo magnético, enquanto os discos ópticos reproduzem os dados de modo óptico com lasers. As combinações dos supracitadas também devem ser abrangidas pelo escopo de meios legíveis por computador.
[0322] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs) ou outro conjunto de circuitos lógico discreto ou integrado equivalente. Consequentemente, o termo “processador”, conforme usado no presente documento, pode se referir a qualquer uma das estruturas supracitadas ou a qualquer outra estrutura adequada para a implantação das técnicas descritas no presente documento. Adicionalmente, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos dedicados de hardware e/ou software configurados para cifrar e decodificar ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implantadas em um ou mais circuitos ou elementos lógicos.
[0323] As técnicas desta revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho de telefone 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 nesta revelação para enfatizar os aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem, necessariamente, a realização por diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequados.
[0324] Vários exemplos foram descritos. Essas e outras implantações estão dentro do escopo das reivindicações a seguir.

Claims (12)

1. Método de codificação de dados de vídeo, compreendendo: determinar, para um pixel de um bloco de dados de vídeo associado a um índice de paleta que relaciona um valor do pixel a um valor de cor em uma paleta de cores usada para codificar o pixel, um comprimento de execução de uma execução de índices de paleta que são codificadas com o índice de paleta do pixel; o método caracterizado pelo fato de que compreende adicionalmente: determinar um número de pixels no bloco de dados de vídeo; determinar uma posição do pixel no bloco de dados de vídeo com base em uma ordem de varredura usada para realizar varredura em índices de paleta de pixels do bloco; determinar um comprimento de execução máximo para uma execução máxima de índices de paleta de pixels do bloco que têm capacidade para serem codificados com o índice de paleta do pixel com base no número de pixels do bloco menos a posição determinada do pixel menos um; e codificar dados que indicam o comprimento de execução com base no comprimento de execução máximo determinado.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que codificar os dados que indicam o comprimento de execução compreende codificar os dados com o uso de um código de Golomb exponencial truncado de k-ésima ordem (TEGk), em que o código de TEGk compreende um prefixo unário e um sufixo binário.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que codificar os dados com o uso do código de TEGk compreende determinar o prefixo unário com base em um código unário truncado que corresponde a em que x é um valor do comprimento de execução da execução de índices de paleta, de modo que um valor um binário de rastreio do prefixo unário seja truncado quando e em que Xmax é o comprimento de execução máximo.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que compreende adicionalmente, com base no prefixo unário que é truncado, determinar o sufixo binário como uma representação binária truncada de, em que um valor máximo da representação binária truncada é .
5. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que compreende adicionalmente, com base no prefixo unário que não é truncado, determinar o sufixo binário como uma representação binária decom o uso de bits.
6. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que codificar os dados com o uso de um código de Golomb exponencial truncado de k-ésima ordem compreende codificar os dados com o uso de um código de Golomb exponencial truncado de 2a ordem.
7. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que codificar os dados que indicam o comprimento de execução compreende codificar um sinalizador maior que zero para o comprimento de execução, codificar um sinalizador maior que um para o comprimento de execução, codificar um sinalizador maior que dois para o comprimento de execução, e codificar compartimentos restantes para o comprimento de execução com o uso do código de TEGk.
8. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que codificar os dados que indicam o comprimento de execução compreende codificar um sinalizador maior que zero para o comprimento de execução e codificar dados que indicam o comprimento de execução menos um com o uso do código de TEGk com um valor máximo para o código de TEGk definido igual ao comprimento de execução máximo menos um e em que k é igual a zero, de modo que o código de TEGk compreenda um código TEG0.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que codificar os dados que indicam o comprimento de execução compreende codificar os dados, e em que o método compreende adicionalmente: codificar dados que indicam a paleta de cores; e codificar dados que indicam, para o pixel associado ao índice de paleta, um modo de paleta usado para codificar o pixel.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que codificar os dados que indicam o comprimento de execução compreende decodificar os dados, e em que o método compreende adicionalmente: obter, a partir de um fluxo de bits codificado, dados que indicam a paleta de cores; e obter dados que indicam, para o pixel associado ao índice de paleta, um modo de paleta usado para codificar o pixel; e determinar o valor do pixel com o uso do modo de paleta e da paleta de cores.
11. Aparelho para processar dados de vídeo, compreendendo: meios para determinar, para um pixel de um bloco de dados de vídeo associado a um índice de paleta que se refere a um valor do pixel para um valor de cor em uma paleta de cores usada para codificar o pixel, um comprimento de execução de uma execução de índices de paleta que são codificados com o índice de paleta do pixel; o aparelho caracterizado pelo fato de que compreende adicionalmente: meios para determinar um número de pixels no bloco de dados de vídeo; meios para determinar uma posição do pixel no bloco de dados de vídeo com base em uma ordem de varredura usada para realizar varredura em índices de paleta de pixels do bloco; meios para determinar um comprimento de execução máximo para uma execução máxima de índices de paleta de pixels do bloco que têm capacidade para serem codificados com o índice de paleta do pixel com base no número de pixels do bloco menos a posição determinada do pixel menos um; e meios para codificar dados que indicam o comprimento de execução com base no comprimento de execução máximo determinado.
12. Memória, caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executadas por um computador para realizar o método conforme definido em qualquer umas das reivindicações 1 a 10.
BR112016027265-0A 2014-05-22 2015-05-22 Execuções de codificação em codificação de vídeo com base em paleta BR112016027265B1 (pt)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US201462002054P 2014-05-22 2014-05-22
US201462010313P 2014-06-10 2014-06-10
US62/010,313 2014-06-10
US201462015240P 2014-06-20 2014-06-20
US62/015,240 2014-06-20
US201462031766P 2014-07-31 2014-07-31
US201462040978P 2014-08-22 2014-08-22
US201562114533P 2015-02-10 2015-02-10
US62/114,533 2015-02-10
US201562115099P 2015-02-11 2015-02-11
US62/115,099 2015-02-11
US14/719,222 US10264285B2 (en) 2014-05-22 2015-05-21 Coding runs in palette-based video coding
US14/719,222 2015-05-21
PCT/US2015/032256 WO2015179810A1 (en) 2014-05-22 2015-05-22 Coding runs in palette-based video coding

Publications (2)

Publication Number Publication Date
BR112016027265A2 BR112016027265A2 (pt) 2017-08-15
BR112016027265B1 true BR112016027265B1 (pt) 2023-11-28

Family

ID=53404865

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016027265-0A BR112016027265B1 (pt) 2014-05-22 2015-05-22 Execuções de codificação em codificação de vídeo com base em paleta

Country Status (11)

Country Link
US (1) US10264285B2 (pt)
EP (1) EP3146723B1 (pt)
JP (1) JP6553090B2 (pt)
KR (1) KR101958536B1 (pt)
CN (1) CN106464884B (pt)
BR (1) BR112016027265B1 (pt)
CA (1) CA2945042C (pt)
ES (1) ES2677522T3 (pt)
HU (1) HUE038387T2 (pt)
TW (1) TWI669944B (pt)
WO (1) WO2015179810A1 (pt)

Families Citing this family (26)

* 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
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
US10038915B2 (en) 2014-05-22 2018-07-31 Qualcomm Incorporated Escape sample coding in palette-based video coding
US10750198B2 (en) 2014-05-22 2020-08-18 Qualcomm Incorporated Maximum palette parameters in palette-based video coding
US10264285B2 (en) 2014-05-22 2019-04-16 Qualcomm Incorporated Coding runs in palette-based video coding
CN106716999B (zh) * 2014-06-20 2019-08-09 寰发股份有限公司 用于视频编码的调色板预测器信令的方法
AU2014408228B2 (en) 2014-09-30 2019-09-19 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US9942551B2 (en) * 2015-01-30 2018-04-10 Qualcomm Incorporated Palette index grouping for video coding
US10659783B2 (en) * 2015-06-09 2020-05-19 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
JP6545570B2 (ja) * 2015-08-18 2019-07-17 株式会社東芝 符号化装置、復号装置および画像処理装置
US10097842B2 (en) * 2015-09-18 2018-10-09 Qualcomm Incorporated Restriction of escape pixel signaled values in palette mode video coding
GB2547047B (en) * 2016-02-08 2018-07-18 Canon Kk Encoder optimizations for palette lossless encoding of content with subsampled colour component
WO2018061550A1 (ja) * 2016-09-28 2018-04-05 シャープ株式会社 画像復号装置及び画像符号化装置
US10694202B2 (en) * 2016-12-01 2020-06-23 Qualcomm Incorporated Indication of bilateral filter usage in video coding
GB2574733B (en) * 2016-12-28 2020-05-06 Arris Entpr Llc Improved video bitstream coding
US10706492B2 (en) * 2017-09-05 2020-07-07 Texas Instruments Incorporated Image compression/decompression in a computer vision system
CN113475062A (zh) * 2019-02-24 2021-10-01 北京字节跳动网络技术有限公司 确定屏幕内容编解码的条件
US10924750B2 (en) 2019-03-01 2021-02-16 Alibaba Group Holding Limited Palette size constraint in palette mode for video compression system
EP3954125A4 (en) * 2019-05-31 2022-06-22 ByteDance Inc. INTRA-BLOCK COPY PREDICTION PALETTE MODE
CN114072849B (zh) 2019-06-28 2023-12-15 字节跳动有限公司 屏幕内容编解码中的色度帧内模式推导
CN114026859B (zh) 2019-06-28 2024-06-14 字节跳动有限公司 在变换跳过模式中修改量化参数的技术
JP7359936B2 (ja) * 2019-07-20 2023-10-11 北京字節跳動網絡技術有限公司 パレットモードの使用の指示の条件依存符号化
CN114145013B (zh) 2019-07-23 2023-11-14 北京字节跳动网络技术有限公司 调色板模式编解码的模式确定
WO2021018166A1 (en) 2019-07-29 2021-02-04 Beijing Bytedance Network Technology Co., Ltd. Scanning order improvements for palette mode coding
US11206413B2 (en) * 2019-08-13 2021-12-21 Qualcomm Incorporated Palette predictor updates for local dual trees
US11689743B2 (en) * 2020-11-12 2023-06-27 Tencent America LLC Method and apparatus for video coding

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4568983A (en) * 1983-12-07 1986-02-04 The Mead Corporation Image data compression/decompression
JP2007202169A (ja) 1995-09-29 2007-08-09 Toshiba Corp 画像復号化方法及び装置
US5883678A (en) * 1995-09-29 1999-03-16 Kabushiki Kaisha Toshiba Video coding and video decoding apparatus for reducing an alpha-map signal at a controlled reduction ratio
US6304607B1 (en) * 1997-03-18 2001-10-16 Texas Instruments Incorporated Error resilient video coding using reversible variable length codes (RVLCS)
US6748116B1 (en) * 2000-08-22 2004-06-08 Airzip, Inc. Apparatus and method for compressing and decompressing image files
CA2467266A1 (en) * 2001-11-22 2003-05-30 Matsushita Electric Industrial Co., Ltd. Variable length coding method and variable length decoding method
EP1474915A1 (en) * 2002-02-01 2004-11-10 Koninklijke Philips Electronics N.V. Compression of palettized color images with variable length color codes
JP4540585B2 (ja) 2005-10-20 2010-09-08 パナソニック株式会社 符号化装置及び復号化装置
CN101068352A (zh) * 2007-06-08 2007-11-07 中兴通讯股份有限公司 一种网络图像的压缩方法和系统
US20090010533A1 (en) 2007-07-05 2009-01-08 Mediatek Inc. Method and apparatus for displaying an encoded image
CN107197277B (zh) 2011-03-09 2020-05-05 日本电气株式会社 视频解码设备以及视频解码方法
US9654777B2 (en) 2013-04-05 2017-05-16 Qualcomm Incorporated Determining palette indices in palette-based video coding
US9558567B2 (en) 2013-07-12 2017-01-31 Qualcomm Incorporated Palette prediction in palette-based video coding
US10972742B2 (en) * 2013-12-19 2021-04-06 Canon Kabushiki Kaisha Encoding process using a palette mode
US10055189B2 (en) 2014-01-02 2018-08-21 Vid Scale, Inc. Two-dimensional palette coding for screen content coding
US10362333B2 (en) 2014-01-02 2019-07-23 Qualcomm Incorporated Color index coding for palette-based video coding
US9445111B2 (en) 2014-01-08 2016-09-13 Sony Corporation Image processing apparatus and image processing method
KR102494913B1 (ko) 2014-03-14 2023-02-06 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 팔레트 코딩
CN106030651B (zh) 2014-03-21 2019-06-07 华为技术有限公司 利用改进的颜色表和索引图编码方法的高级屏幕内容编码
US10362336B2 (en) 2014-03-25 2019-07-23 Qualcomm Incorporated Palette predictor signaling with run length code for video coding
EP3140987A4 (en) 2014-05-09 2017-12-06 Nokia Technologies Oy Method and technical equipment for video encoding and decoding using palette coding
US10264285B2 (en) 2014-05-22 2019-04-16 Qualcomm Incorporated Coding runs in palette-based video coding
US10038915B2 (en) 2014-05-22 2018-07-31 Qualcomm Incorporated Escape sample coding in palette-based video coding
US10750198B2 (en) 2014-05-22 2020-08-18 Qualcomm Incorporated Maximum palette parameters in palette-based video coding
US10291940B2 (en) 2014-05-23 2019-05-14 Qualcomm Incorporated Coding runs with escape in palette-based video coding
US10382749B2 (en) 2014-05-23 2019-08-13 Qualcomm Incorporated Coding run values based on palette index in palette-based video coding
US11323733B2 (en) 2014-05-23 2022-05-03 Qualcomm Incorporated Predictor palette initialization in palette-based video coding

Also Published As

Publication number Publication date
JP6553090B2 (ja) 2019-07-31
TW201608874A (zh) 2016-03-01
US10264285B2 (en) 2019-04-16
CN106464884B (zh) 2019-07-19
CN106464884A (zh) 2017-02-22
ES2677522T3 (es) 2018-08-03
CA2945042A1 (en) 2015-11-26
US20150341673A1 (en) 2015-11-26
WO2015179810A1 (en) 2015-11-26
BR112016027265A2 (pt) 2017-08-15
JP2017520160A (ja) 2017-07-20
EP3146723A1 (en) 2017-03-29
EP3146723B1 (en) 2018-04-18
HUE038387T2 (hu) 2018-10-29
KR20170007464A (ko) 2017-01-18
TWI669944B (zh) 2019-08-21
KR101958536B1 (ko) 2019-03-14
CA2945042C (en) 2019-09-17

Similar Documents

Publication Publication Date Title
US10097842B2 (en) Restriction of escape pixel signaled values in palette mode video coding
BR112016027265B1 (pt) Execuções de codificação em codificação de vídeo com base em paleta
ES2746072T3 (es) Parámetros de paletas máximos en codificación de vídeo basada en paletas
US10097839B2 (en) Palette mode for subsampling format
JP6594903B2 (ja) パレットベースのビデオコーディングにおけるエスケープサンプルのコーディング
US10313684B2 (en) Copy from previous rows for palette mode coding
US10158866B2 (en) Parsing dependency reduction for palette index coding
US20160234494A1 (en) Restriction on palette block size in video coding
US20160037164A1 (en) Palette mode encoding and decoding design
BR112016027428B1 (pt) Inicialização de paleta de preditor em codificação de vídeo com base em paleta
CA2972617A1 (en) Palette index grouping for high throughput cabac coding
US9961351B2 (en) Palette mode coding
US20160366439A1 (en) Palette copy extension
BR112017016371B1 (pt) Agrupamento de índice de paleta para codificação cabac de banda larga
BR112017017139B1 (pt) Método e aparelho para codificar dados de vídeo e memória legível por computador
OA18393A (en) Restriction on palette block size in video coding.

Legal Events

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

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