BR112016027420B1 - Codificação de sequências de execução com evasão em codificação de vídeo baseada em paleta - Google Patents

Codificação de sequências de execução com evasão em codificação de vídeo baseada em paleta Download PDF

Info

Publication number
BR112016027420B1
BR112016027420B1 BR112016027420-2A BR112016027420A BR112016027420B1 BR 112016027420 B1 BR112016027420 B1 BR 112016027420B1 BR 112016027420 A BR112016027420 A BR 112016027420A BR 112016027420 B1 BR112016027420 B1 BR 112016027420B1
Authority
BR
Brazil
Prior art keywords
palette
index
video
row
encoding
Prior art date
Application number
BR112016027420-2A
Other languages
English (en)
Other versions
BR112016027420A2 (pt
Inventor
Vadim SEREGIN
Rajan Laxman Joshi
Marta Karczewicz
Wei Pu
Joel Sole Rojals
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016027420A2 publication Critical patent/BR112016027420A2/pt
Publication of BR112016027420B1 publication Critical patent/BR112016027420B1/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/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/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • 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

Landscapes

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

Abstract

CODIFICAÇÃO DE SEQUÊNCIAS DE EXECUÇÃO COM EVASÃO EM CODIFICAÇÃO DE VÍDEO BASEADA EM PALETA. Em um exemplo um método de processamento de dados de vídeo inclui determinar os índices de paleta de uma primeira fileira de um bloco de dados de vídeo, em que os índices de paleta correspondem a uma paleta de uma ou mais cores para codificação do bloco de dados de vídeo, e em que os índices de paleta da primeira fileira incluem um ou mais índices que são associados com um valor de cor na paleta e um elemento de sintaxe que não é associado com um valor de cor na paleta. O método inclui também a codificação de uma sequência de execução de índices de paleta de uma segunda fileira do bloco de dados de vídeo em relação aos índices de paleta da primeira fileira, em que a sequência de execução inclui um ou mais índices que são associados com um valor de cor na paleta e o elemento de sintaxe que não é associado com um valor de cor na paleta.

Description

[0001] Esse pedido reivindica o benefício do Pedido Provisional dos Estados Unidos N° 62/002.717 depositado em 23 de maio de 2014, Pedido Provisional dos Estados Unidos N° 62/009.772, depositado em 9 de junho de 2014, Pedido Provisional dos Estados Unidos N° 62/015.261, depositado em 20 de junho de 2014, Pedido Provisional dos Estados Unidos N° 62/019.223, depositado em 20 de junho de 2014, Pedido Provisional dos Estados Unidos N° 62/059.659, depositado em 3 de outubro de 2014, e Pedido Provisional dos Estados Unidos N° 62/065.526, depositado em 17 de outubro de 2014, cujos conteúdos integrais são aqui incorporados integralmente mediante referência.
CAMPO TÉCNICO
[0002] Essa revelação se refere à codificação e decodificação de vídeo.
FUNDAMENTOS
[0003] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas digitais de difusão direta, sistemas de difusão sem fio, assistentes pessoais digitais (PDAs), computadores de mesa ou laptop, computadores tablet, leitores de livro eletrônico, câmeras digitais, dispositivos digitais de gravação, dispositivos de reprodução de mídia digital, dispositivo de videogame, consoles de videogame, telefones de rádio via satélite ou celulares, os assim chamados “smartphones”, dispositivos de teleconferência de vídeo, dispositivos de fluxo contínuo de vídeo, e semelhantes. Os dispositivos de vídeo digital implementam técnicas de compactaçã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 Avançada de Vídeo (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informação de vídeo digital mais especificamente mediante implementação de tais técnicas de compactação de vídeo.
[0004] Técnicas de compactação de vídeo realizam predição espacial (imagem intra) e/ou predição temporal (imagem inter) para reduzir ou remover a redundância inerente nas sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (isto é, uma imagem de vídeo ou uma porção de uma imagem de vídeo) pode ser dividida em blocos de vídeo, os quais também podem ser referidos como treeblocks, unidades de codificação (CUs) e/ou modos de codificação. Os blocos de vídeo em uma fatia codificada intra (I) de uma imagem são codificados utilizando a predição espacial com relação às amostras de referência em blocos adjacentes na mesma imagem. Os blocos de vídeo em uma fatia codificada inter (P ou B) de uma imagem podem usar predição espacial com relação às amostras de referência em blocos adjacentes na mesma imagem ou predição temporal com relação às amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e as imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco codificado inter é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco preditivo, e os dados residuais indicando a diferença entre o bloco codificado e o bloco preditivo. Um bloco codificado intra é codificado de acordo com um modo de codificação intra e os dados residuais. Para compactação adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residual, os quais podem ser então quantizados. Os coeficientes de transformada quantizados, inicialmente arranjados em um arranjo bidimensional, podem ser escaneados para produzir um vetor unidimensional dos coeficientes de transformada, e codificação de entropia pode ser empregada para se obter ainda mais compactação.
SUMÁRIO
[0006] As técnicas dessa revelação se referem à codificação de vídeo baseada em paleta. Por exemplo, na codificação baseada em paleta, um codificador de vídeo (um codificador 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 específica (por exemplo, um bloco determinado). A codificação baseada em paleta pode ser especialmente útil para codificar áreas de dados de vídeo tendo um número relativamente pequeno de cores. Mais propriamente do que codificar os valores reais de pixel (ou seus resíduos), o codificador de vídeo pode codificar os valores de índice para um ou mais dos pixels que se relacionam aos pixels com entradas na paleta representando as cores dos pixels. As técnicas descritas nessa revelação podem incluir técnicas para várias combinações de uma ou mais entradas de paleta de predição, codificação de sequências de execução de índices de paleta, e várias outras técnicas de codificação de paleta.
[0007] Em um exemplo, um método de processamento dos dados de vídeo inclui determinar uma primeira paleta para um primeiro bloco de dados de vídeo que está localizada em uma primeira fileira de bloco, em que a primeira paleta compreende uma ou mais entradas de paleta incluindo individualmente um índice de paleta que é associado com um valor de cor para codificar o bloco de dados de vídeo, gerar uma paleta de predição para construir pelo menos uma segunda paleta de pelo menos um segundo bloco de dados de vídeo na primeira fileira de blocos codificados após o primeiro bloco, em que a paleta de predição inclui pelo menos uma entrada de paleta a partir de um ou mais blocos da primeira fileira exceto o primeiro bloco; reinicializar a paleta de predição para determinar uma terceira paleta de um terceiro bloco de dados de vídeo que está localizada em uma segunda fileira de blocos, em que a reinicialização da paleta de predição compreende reinicializar a paleta de predição com base na uma ou mais entradas de paleta da primeira paleta ou uma paleta de predição inicial gerada após a codificação do primeiro bloco; determinar a terceira paleta do terceiro bloco com base na paleta de predição reinicializada, e codificar o terceiro bloco utilizando a terceira paleta.
[0008] Em outro exemplo, um dispositivo para processar os dados de vídeo inclui uma memória configurada para armazenar um primeiro bloco de dados de vídeo, ao menos um segundo bloco de dados de vídeo e um terceiro bloco de dados de vídeo, e um ou mais processadores configurados para determinar uma primeira paleta para o primeiro bloco de dados de vídeo que está localizado em uma primeira fileira de blocos, em que a primeira paleta compreende uma ou mais entradas de paleta cada uma delas incluindo um índice de paleta que é associado com um valor de cor para codificar o bloco de dados de vídeo, gerar uma paleta e predição para construir pelo menos uma segunda paleta do pelo menos um segundo bloco de dados de vídeo na primeira fileira de blocos codificados após o primeiro bloco, em que a paleta de predição inclui pelo menos uma entrada de paleta a partir de um ou mais blocos da primeira fileira exceto o primeiro bloco, reinicializar a paleta de predição para determinar uma terceira paleta do terceiro bloco de dados de vídeo que está localizado em uma segunda fileira de blocos, em que a reinicialização da paleta de predição compreende reinicializar a paleta de predição com base na uma ou mais entradas de paleta da primeira paleta ou uma paleta de predição inicial gerada após a codificação do primeiro bloco, determinar a terceira paleta do terceiro bloco com base na paleta de predição reinicializada, e codificar o terceiro bloco utilizando a terceira paleta.
[0009] Em outro exemplo, um aparelho para processar os dados de vídeo inclui meios para determinar uma primeira paleta para um primeiro bloco de dados de vídeo que está localizado em uma primeira fileira de blocos, em que a primeira paleta compreende uma ou mais entradas de paleta que incluem individualmente um índice de paleta que é associado com um valor de cor para codificar o bloco de dados de vídeo, meios para gerar uma paleta de predição para construir pelo menos uma segunda paleta de pelo menos um segundo bloco de dados de vídeo na primeira fileira de blocos codificados após o primeiro bloco, em que a paleta de predição inclui pelo menos uma entrada de paleta a partir de um ou mais blocos da primeira fileira exceto o primeiro bloco, meios para reinicializar a paleta de predição para determinar uma terceira paleta de um terceiro bloco de dados de vídeo que está localizado em uma segunda fileira de blocos, em que a reinicialização da paleta de predição compreende reinicializar a paleta de predição com base na uma ou mais entradas de paleta da primeira paleta ou uma paleta de predição inicial gerada após a codificação do primeiro bloco ou uma paleta de predição inicial gerada após a codificação do primeiro bloco, meios para determinar a terceira paleta do terceiro bloco com base na paleta de predição reinicializada; e meios para codificar o terceiro bloco utilizando a terceira paleta.
[0010] 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 uma primeira paleta para um primeiro bloco de dados de vídeo que está localizado em uma primeira fileira de blocos, em que a primeira paleta compreende uma ou mais entradas de paleta incluindo individualmente o índice de paleta que é associado com um valor de cor para codificar o bloco de dados de vídeo, gerar uma paleta de predição para construir pelo menos uma segunda paleta de pelo menos um segundo bloco de dados de vídeo na primeira fileira de blocos codificados após o primeiro bloco, em que a paleta de predição inclui pelo menos uma entrada de paleta a partir de um ou mais blocos da primeira fileira exceto o primeiro bloco, reinicializar a paleta de predição para determinar uma terceira paleta de um terceiro bloco de dados de vídeo que está localizado em uma segunda fileira de blocos, em que a reinicialização da paleta de predição compreende reinicializar a paleta de predição com base na uma ou mais entradas de paleta da primeira paleta ou uma paleta de predição inicial gerada após a codificação do primeiro bloco, determinar a terceira paleta do terceiro bloco com base na paleta de predição reinicializada, e codificar o terceiro bloco usando a terceira paleta.
[0011] Em outro exemplo, um método de processar os dados de vídeo inclui determinar um valor de série e indica um comprimento de sequência de execução de uma sequência de execução de um índice de paleta de um bloco de dados de vídeo, em que o índice de paleta é associado com um valor de cor em uma paleta de valores de cor para codificar o bloco de dados de vídeo; determinar um contexto para codificação adaptativa de contexto de dados que representam o valor de sequência de execução com base no índice de paleta, e codificar os dados que representam um valor de sequência de execução a partir de um fluxo de bits utilizando o contexto determinado.
[0012] Em outro exemplo, um dispositivo para processar os 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 determinar um valor de sequência de execução que inclui um comprimento de sequência de execução de uma sequência de execução de um índice de paleta do bloco de dados de vídeo, em que o índice de paleta é associado com um valor de cor em uma paleta de valores de cor para codificação do bloco de dados de vídeo; determinar um contexto para codificação adaptativa de contexto de dados que representam o valor de sequência de execução com base no índice de paleta, e codificar os dados que representam o valor de sequência de execução a partir de um fluxo de bits utilizando o contexto determinado.
[0013] Em outro exemplo, um aparelho para processar os dados de vídeo inclui meios para determinar um valor de sequência de execução que indica um comprimento de sequência de execução de uma sequência de execução de um índice de paleta de um bloco de dados de vídeo, em que o índice de paleta é associado com um valor de cor em uma paleta de valores de cor para codificar o bloco de dados de vídeo, meios para determinar um contexto para codificação adaptativa de contexto de dados que representam o valor de sequência de execução com base no índice de paleta; e meios para codificar os dados que representam o valor de sequência de execução a partir de um fluxo de bits utilizando o contexto determinado.
[0014] Em outro exemplo, um meio legível por computador não transitório tem instruções armazenadas que, quando executadas, fazem com que um ou mais processadores determinem um valor de sequência de execução que indica um comprimento de sequência de execução de uma sequência de execução de um índice de paleta de um bloco de dados de vídeo, em que o índice de paleta é associado com um valor de cor em uma paleta de valores de cor para codificar o bloco de dados de vídeo, determinar um contexto para codificação adaptativa de contexto de dados que representam o valor de sequência de execução com base no índice de paleta, e codificar os dados que representam o valor de sequência de execução a partir de um fluxo de bits utilizando o contexto determinado.
[0015] Em outro exemplo, um método de processamento de dados de vídeo inclui determinar os índices de paleta de uma primeira fileira de um bloco de dados de vídeo, em que os índices de paleta correspondem a uma paleta de uma ou mais cores para codificação do bloco de dados de vídeo, e em que os índices de paleta da primeira fileira incluem um ou mais índices que são associados com um valor de cor na paleta e um elemento de sintaxe que não é associado com um valor de cor na paleta, e codificação de uma sequência de execução de índices de paleta de uma segunda fileira de bloco de dados de vídeo em relação aos índices de paleta da primeira fileira, em que a sequência de execução inclui o elemento de sintaxe que não é associado com um valor de cor na paleta.
[0016] Em outro exemplo, um dispositivo para processamento de 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 determinar índices de paleta de uma primeira fileira do bloco de dados de vídeo, em que os índices de paleta correspondem a uma paleta de uma ou mais cores para codificação do bloco de dados de vídeo, e em que os índices de paleta da primeira fileira incluem um ou mais índices que são associados com um valor de cor na paleta e um elemento de sintaxe que não é associado com um valor de cor na paleta, e codificar uma sequência de execução de índices de paleta de uma segunda fileira do bloco de dados de vídeo em relação aos índices de paleta da primeira fileira, em que a sequência de execução inclui o um ou mais índices que são associados com um valor de cor na paleta e o elemento de sintaxe que não é associado com um valor de cor na paleta.
[0017] Em outro exemplo, um aparelho para processamento de dados de vídeo inclui meios para determinar os índices de paleta de uma primeira fileira de um bloco de dados de vídeo, em que os índices de paleta correspondem a uma paleta de uma ou mais cores para codificação do bloco de dados de vídeo, e em que os índices de paleta da primeira fileira incluem um ou mais índices que são associados com um valor de cor na paleta e um elemento de sintaxe que não é associado com um valor de cor na paleta, e meios para codificar uma sequência de execução de índices de paleta de uma segunda fileira do bloco de dados de vídeo em relação aos índices de paleta da primeira fileira, em que a sequência de execução inclui o um ou mais índices que são associados com um valor de cor na paleta e o elemento de sintaxe que não é associado com um valor de cor na paleta.
[0018] Em outro exemplo, um meio legível por computador não transitório tem nele armazenadas as instruções que, quando executadas, fazem com que um ou mais processadores determinem os índices de paleta de uma primeira fileira de um bloco de dados de vídeo, em que os índices de paleta correspondem a uma paleta de uma ou mais cores para codificação do bloco de dados de vídeo, e em que os índices de paleta da primeira fileira incluem um ou mais índices que são associados com um valor de cor na paleta e um elemento de sintaxe que não é associado com um valor de cor na paleta, e codificação de uma sequência de execução de índices de paleta de uma segunda fileira do bloco de dados de vídeo em relação aos índices de paleta da primeira fileira, em que a sequência de execução inclui o um ou mais índices que são associados com um valor de cor na paleta e o elemento de sintaxe que não é associado com um valor de cor na paleta.
[0019] Os detalhes de um ou mais exemplos da revelação são apresentados nos desenhos a seguir e na descrição abaixo. Outras características, objetivos e vantagens serão evidentes a partir da descrição, desenhos e 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 exemplar que pode utilizar as técnicas descritas nessa revelação.
[0021] A Figura 2 é um diagrama de blocos que ilustra um codificador de vídeo exemplar que pode implementar as técnicas descritas nessa revelação.
[0022] A Figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar que pode implementar as técnicas descritas nessa 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 baseada em paleta, consistente com as técnicas dessa revelação.
[0024] A Figura 5 é um diagrama conceitual que ilustra conjuntos de pixels adjacentes exemplares de acordo com o padrão de Codificação de Vídeo de Alta Eficiência (HEVC).
[0025] A Figura 6 é um diagrama conceitual que ilustra as frentes de onda para processamento paralelo de frentes de onda (WPP).
[0026] A Figura 7 é um diagrama conceitual que ilustra um exemplo de reinicialização de paleta de predição na presença de múltiplos blocos de pixels adjacentes e frentes de onda, consistentes com as técnicas dessa revelação.
[0027] A Figura 8 é um diagrama conceitual que ilustra um exemplo de determinação de índices para uma paleta para um bloco de pixels, consistente com os ensinamentos dessa revelação.
[0028] A Figura 9 é um fluxograma que ilustra um processo exemplar para determinação de uma paleta de predição, consistente com os ensinamentos dessa revelação.
[0029] A Figura 10 é um fluxograma que ilustra um processo exemplar para codificar de um valor de sequência de execução de uma sequência de execução de índices e paleta, consistentes com as técnicas dessa revelação.
[0030] A Figura 11 é um fluxograma que ilustra um processo exemplar para codificação de uma sequência de execução de índices codificados com mais do que um modo de codificação de paleta, consistente com os ensinamentos dessa revelação.
DESCRIÇÃO DETALHADA
[0031] Os aspectos dessa revelação são dirigidos às técnicas para codificação de vídeo e compactação de dados de vídeo. Especificamente, essa revelação descreve as técnicas para codificação baseada em paleta de dados de vídeo. Na codificação de vídeo tradicional, as imagens supostamente são de tom contínuo e são espacialmente suaves. Com base nessas suposições, várias ferramentas foram desenvolvidas tal como transformada baseada em bloco, filtragem e outras ferramentas de codificação e tais ferramentas apresentaram bom desempenho para os vídeos de conteúdo natural.
[0032] Contudo, em aplicações como trabalho colaborativo eletrônico, remoto e exibição sem fio, conteúdo de tela gerado por computador pode ser o conteúdo dominante a ser compactado. Esse tipo de conteúdo tende a ter fileiras acentuadas de característica, de tom discreto, e apresentam limites de objeto de elevado contraste. A suposição de suavidade e com contínuo pode não mais se aplicar e, assim, técnicas tradicionais de codificação de vídeo podem ser ineficientes na compactação de conteúdo.
[0033] Essa revelação descreve codificação baseada em paleta, que pode ser particularmente adequada para codificação de conteúdo gerado em tela ou outro conteúdo onde uma ou mais ferramentas de codificação tradicionais são ineficientes. As técnicas para codificação baseada em paleta de dados de vídeo podem ser usadas com uma ou mais de outras técnicas de codificação, tais como técnicas para codificação de predição inter ou intra. Por exemplo, conforme descrito em maior detalhe abaixo, um codificador ou decodificador, ou codificador/decodificador combinados (codec), podem ser configurados para realizar codificação de predição inter ou intra, assim como codificação baseada em paleta.
[0034] Em alguns exemplos, as técnicas de codificação baseadas em paleta podem ser configuradas para uso com as normas de codificação de um ou mais de vídeo. Por exemplo, High Efficiency Video Coding (HEVC) é um novo padrão de codificação de vídeo que está sendo desenvolvido pelo Joint Collaboration Team on Video Coding (JCT-VC) do ITU-T Video Coding Experts Group (VCEG) e ISO/IEC Motion Picture Experts Group (MPEG). Um esboço de especificação de texto HEVC recente é descrito no Bross et al., “High Efficiency Video Coding (HEVC) Text Specification Draft 10 (for FDIS & Consent)”, JCVC-L1003_v13, 12a Reunião do JCT-VC da ITU-T SG16 WP 3 e ISO/IEC JCT 1/SC 29/WG 11, 14- 23 de janeiro de 2013 (“HEVC Projeto 10”).
[0035] Com relação à estrutura HEVC, como um exemplo, as técnicas de codificação baseadas em paleta podem ser configuradas para utilização como um modo de unidade de codificação (CU). Em outros exemplos, as técnicas de codificação baseadas em paleta podem ser configuradas para utilização como um modo de PU no âmbito de HEVC. Consequentemente, todos os seguintes processos divulgados descritos no contexto de um moda CU podem, adicionalmente ou alternativamente, aplicar-se a PU. No entanto, estes exemplos baseados em HEVC não devem ser considerados uma restrição ou limitação das técnicas de codificação baseados em paleta aqui descritos, uma vez que tais técnicas podem ser aplicadas para trabalhar de forma independente ou como parte de outros sistemas/normas existentes ou ainda a serem desenvolvidas. Nesses casos, o aparelho para codificação de paleta podem ser blocos quadrados, blocos retangulares ou mesmo regiões de forma não retangular.
[0036] Em codificação baseada em paleta se pode supor que uma determinada área de dados de vídeo tenha um número relativamente pequeno de cores. Um codificador de vídeo (um codificador de vídeo ou decodificador de vídeo) pode codificar uma assim chamada “paleta”, tal como uma tabela de cores para representar os dados de vídeo da área específica (por exemplo, um determinado bloco). Cada pixel pode ser associado com 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 para o valor apropriado na paleta.
[0037] No exemplo acima, um codificador de vídeo pode codificar um bloco de dados de vídeo através da determinação de uma paleta para o bloco, para localizar uma entrada na paleta para representar o valor de cada pixel, e que codifica para a paleta com valores de índice para os pixels relacionando o valor de pixel para a paleta. Um decodificador de vídeo pode obter, a partir de uma fluxo de bits codificada, uma paleta para um bloco, assim como os valores de índice para os pixels do bloco. O decodificador de vídeo pode relacionar os valores de índice de pixels de entradas de paleta para reconstruir os valores de pixel do bloco. Pixels (e/ou os valores de índice relacionados que indicam um valor de pixel) podem ser geralmente referidos como amostras.
[0038] Supõe-se que as amostras no bloco sejam processadas (por exemplo, digitalizadas) usando ordem de varredura de rastreio horizontal. Por exemplo, o codificador de vídeo pode converter um bloco bidimensional de índices em uma matriz unidimensional, digitalizando os índices usando uma ordem de digitalização de rastreio horizontal. Da mesma forma, o decodificador de vídeo pode reconstruir um bloco de índices usando a ordem de digitalização de rastreio horizontal. Consequentemente, esta revelação pode referir-se a uma amostra anterior como uma amostra que precede a amostra a ser codificado no bloco na ordem de leitura. Deve ser apreciado que verifica que não seja uma varredura horizontal, tal como a ordem de varredura quadro vertical, também podem ser aplicáveis. O exemplo acima se destina fornecer uma descrição geral da codificação à base de paleta.
[0039] Uma paleta tipicamente inclui entradas numeradas por um índice e que representam pelo menos um de valores ou intensidades de componente de cor (por exemplo, pelo menos em um componente de RGB, YUV, ou semelhantes). Um codificador de vídeo e um decodificador de vídeo determinam o número de entradas de paleta, os valores dos componentes de cor para cada entrada de paleta e a ordem exata das entradas de paleta para o bloco atual. Na presente revelação, presume-se que cada entrada de paleta especifica os valores para todos os componentes de cor de uma amostra. No entanto, os conceitos da presente revelação aplicam-se ao uso de uma paleta separada para cada componente de cor.
[0040] Em alguns exemplos, uma paleta pode ser composta usando informações de blocos previamente codificados ou paletas previamente codificadas. Isto é, uma paleta pode conter entradas de paleta preditas a partir da paleta (s) utilizada para codificar o bloco(s) anterior. Por exemplo, como descrito no documento de apresentaçã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-04 de abril de 2014 (a seguir JCTVC-Q0094), uma paleta pode incluir entradas que são copiadas a partir de uma paleta de predição. Uma paleta de predição pode incluir entradas de paleta de blocos previamente codificados usando o modo de paleta ou outras amostras reconstruídas. A paleta de predição pode utilizar a totalidade ou parte de uma paleta previamente codificada, ou pode ser composta de várias entradas de paletas previamente codificadas.
[0041] Em alguns exemplos, para cada entrada na paleta de predição, um indicador binário pode ser codificado para indicar se a entrada associada com o indicador é copiada para a paleta atual (por exemplo, indicado pelo indicador = 1). A sequência de indicadores binários pode ser referida como o vetor de paleta de predição de binário. A paleta para a codificação de um bloco atual pode também incluir um número de novas entradas de paleta, as quais podem ser codificadas de forma explícita (por exemplo, separadamente do vetor de predição de paleta). Uma indicação do número de novas entradas pode também ser codificada. A soma das entradas preditas e de novas entradas pode indicar o tamanho total de paleta para o bloco.
[0042] Tal como proposto JCTVC-Q0094, cada amostra em um bloco codificado com um modo de codificação baseados em paleta pode ser codificada de acordo com um dos três modos de paletas, tal como estabelecido abaixo: • Modo de evasão: Nesse modo, o valor da amostra é não incluído em uma paleta como uma entrada de paleta e o valor da amostra quantizado é sinalizado explicitamente para todos os componentes de cor. É semelhante à sinalização das novas entradas de paleta, embora para novas entradas de paleta, os valores dos componentes de cor não são quantizados. • Modo CopyFromTop (também conhecido como modo de CopyAbove): nesse modo, o índice de entrada de paleta para a amostra atual é copiado a partir da amostra situa-se acima em um bloco. • Modo de valor (também referido como o modo de Índice): nesse modo, o valor do índice de entrada de paleta é explicitamente sinalizado.
[0043] Tal como aqui descrito, um índice de entrada de paleta pode ser referido como um índice de paleta ou simplesmente índice. Estes termos podem ser utilizados indiferentemente para descrever as técnicas da presente revelação. Além disso, tal como descrito em maior detalhe abaixo, um índice de paleta podem ter um ou mais valores de cor associados ou intensidade. Por exemplo, um índice de paleta pode ter um único valor de cor ou intensidade associado com uma única cor ou componente de intensidade de um pixel (por exemplo, um componente vermelho de dados RGB, um componente Y de dados YUV, ou semelhante). Em outro exemplo, um índice de paleta pode ter vários valores de cores ou de intensidade associados. Em alguns casos, a codificação baseada em paleta pode ser aplicada ao código de vídeo monocromático.Consequentemente, “valor de cor” pode referir-se geralmente a qualquer cor ou componente de não-cor utilizado para gerar um valor de pixel.
[0044] Para os modos CopyFromTop e Valor, um valor de sequência de sequência de execução (que também pode ser chamada simplesmente de sequência de execução) pode também ser sinalizado. Um valor de sequência de execução pode indicar um número de amostras consecutivas (por exemplo, uma sequência de execução de amostras) em uma ordem de análise em particular em um bloco com código de paleta que são codificados juntos. Em alguns casos, o sequência de execução de amostras pode também ser referido como uma sequência de execução de índices de paleta, porque cada amostra de sequência de execução tem um índice associado a uma paleta.
[0045] Um valor de sequência de execução pode indicar uma sequência de execução de índices de paleta que são codificados utilizando o mesmo modo de codificação de paleta. Por exemplo, no que diz respeito ao modo de Valor, um codificador de vídeo (um codificador 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 simplesmente valor de índice) e um valor de sequência de execução que indica um número de amostras consecutivas em uma ordem de pesquisa que têm o mesmo índice de paleta, e que estão a ser codificada com o índice de paleta. No que diz respeito ao modo de CopyFromTop, o codificador de vídeo pode codificar uma indicação de que um índice para o valor da amostra atual é copiado com base em um índice de uma amostra acima adjacente (por exemplo, uma amostra que se encontra posicionada acima da amostra a ser codificado em um bloco) e um valor de sequência de execução que indica um número de amostras consecutivas em uma ordem de digitalização que também copiar um índice paleta de uma amostra acima vizinhos e que estão a ser codificados com o índice paleta. Assim, nos exemplos acima, uma sequência de execução de índices de paleta refere-se a uma sequência de execução de índices de paleta com o mesmo valor ou uma sequência de execução de índices de paleta que são copiados a partir de índices de paleta acima vizinhos.
[0046] Assim, a sequência de execução pode especificar, para um dado modo, o número de amostras subsequentes que pertencem ao mesmo modo. Em alguns casos, um índice de sinalização e um valor de sequência de execução podem ser semelhantes à sequência de execução de codificação de comprimento. Em um exemplo para fins de ilustração, uma sequência de execução de índices consecutivos de um bloco pode ser de 0, 2, 2, 2, 2, 5 (por exemplo, onde cada índice corresponde a uma amostra no bloco). Nesse exemplo, um codificador de vídeo pode codificar a segunda amostra (por exemplo, o primeiro valor do índice de dois) usando o modo de Valor. Após a codificação de um índice que é igual a 2, o codificador de vídeo pode codificar uma sequência de três, o que indica que as três amostras subsequentes também têm o mesmo valor de índice de dois. De um modo semelhante, codificando uma sequência de execução de quatro Após a codificação de um índice usando o modo CopyFromTop pode indicar que um total de cinco índices é copiado a partir dos índices correspondentes na fileira acima da posição da amostra a ser codificada.
[0047] Tal como descrito em maior detalhe abaixo, um codificador de vídeo (por exemplo, um codificador de vídeo e um decodificador de vídeo) pode codificar ou decodificar os dados que indica se uma amostra é codificada como uma amostra de evasão em uma base por amostra. As amostras de evasão (também referidas como evasão pixels) 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. Assim, amostras de evasão não podem ser reconstruídas usando uma entrada de cor (ou valor de pixel) a partir de uma paleta. Em vez disso, os valores de cor para as amostras de evasão são sinalizados em um fluxo de bits separadamente a partir dos valores das cores da paleta. Em geral, a codificação de uma amostra utilizando o “modo de evasão” pode referir-se geralmente uma amostra de codificação de um bloco que não tem uma cor correspondente representado em uma paleta para a codificação do bloco. Como observado acima, as amostras podem ser referidos como amostras de evasão ou escapar pixels.
[0048] Em alguns exemplos, o codificador de vídeo pode codificar um indicador para cada amostra que indica se a amostra está codificada como uma amostra de evasão (esta técnica pode ser referida sinalização de evasão como explícito, tal como descrito em maior detalhe abaixo, com respeito ao exemplo da figura 1). Em outro exemplo, o codificador de vídeo pode codificar um adicional valor de índice para uma paleta para indicar que uma determinada amostra é codificada como uma amostra de evasão (esta técnica pode ser referida como evasão de sinalização implícita, como descrito em maior detalhe com relação ao exemplo da figura 1).
[0049] As técnicas descritas na presente revelação podem incluir técnicas para várias combinações de predizer entradas de paleta, que codifica execuções de índices de paleta, e uma variedade de outras técnicas de codificação paleta. Tal como descrito em maior pormenor a seguir, as técnicas da presente revelação podem, em alguns casos, melhorar a eficiência e melhorar a taxa de bits quando a codificação de dados de vídeo, utilizando um modo de paleta.
[0050] Por exemplo, certos aspectos da presente revelação são dirigidos para técnicas para predizer entradas de paleta para um bloco de dados de vídeo. Em alguns casos, uma paleta de predição pode ser reinicializada para um bloco na borda esquerda de uma imagem. Ou seja, ao gerar uma paleta para o bloco na borda esquerda da imagem, a paleta de predição pode ser reinicializada a zero (por exemplo, a paleta de predição ainda não tem entradas e a paleta atual não está prevista usando uma paleta de predição). O indicador pode ser reinicializada, desta forma, porque uma paleta de predição pode incluir entradas de paleta, que na sua maioria pertencem a paletas de blocos localizados no lado direito da imagem após a decodificação de uma fileira (por exemplo, supondo uma varredura de rastreio da esquerda para direita). Consequentemente, após a codificação do primeiro bloco da fileira seguinte (bloco ao bordo mais à esquerda da imagem), a paleta de predição pode incluir cores de blocos que estão localizados relativamente distantes do bloco a ser codificado. Assim, a paleta de predição pode não ser muito eficaz na predição de uma paleta atual para o atual bloco (por exemplo, as cores de pixels no lado esquerdo de uma imagem podem ser diferentes das cores de pixels no lado direito da figura).
[0051] No entanto, em alguns casos, reinicializando uma paleta de predição podem levar a perdas de codificação. Por exemplo, sem uma paleta de predição, um codificador de vídeo (um decodificador de codificador de vídeo de vídeo 20 ou) pode codificar os dados que indicam todas as entradas de uma paleta (por exemplo, todos os índices de paleta e valores de cor relacionados) em um fluxo de bits. Isto pode ser uma quantidade relativamente grande de dados relativa aos dados associados com entradas de paleta preditos. Assim, redefinindo uma paleta de predição pode afetar negativamente a taxa de bits de dados de vídeo codificados com a codificação baseada em paleta.
[0052] De acordo com aspectos da presente revelação, uma paleta de predição para a construção de uma paleta de um bloco de dados de vídeo de uma primeira fileira pode ser reinicializado com base em um ou mais blocos de outra fileira. Por exemplo, um codificador de vídeo pode determinar uma primeira paleta para um primeiro bloco de dados de vídeo que está localizado em uma primeira fila de blocos. O codificador de vídeo pode também gerar uma paleta de predição quando codificar um ou mais outros blocos na primeira fileira. Após a codificação de um bloco de uma segunda fileira, o codificador de vídeo pode reinicializar a paleta de predição para a determinação de uma paleta de bloco na segunda fileira com base nas entradas da primeira paleta. De acordo com alguns aspectos da presente revelação, a fileira de blocos pode ser uma fila de blocos de certo tamanho (por exemplo, uma fileira de unidades de árvores de codificação (CTU), tal como descrito abaixo). O comprimento da fileira pode representar uma largura da imagem em unidades de bloco selecionado, e o número de fileiras pode representar a altura de imagem nas unidades de bloco selecionado.
[0053] Em alguns exemplos, a paleta de predição reinicializada preditor inclui entradas de uma paleta de um ou mais blocos que são posicionadas relativamente perto do bloco a ser codificado. Consequentemente, a paleta de predição pode incluir entradas que têm uma maior probabilidade de ser incluídas em uma paleta de o bloco a ser codificado (por exemplo, em relação a uma paleta de predição com base em blocos localizados longe do bloco atual ou uma paleta de predição que tenha sido reinicializada). Deste modo, as técnicas desta revelação podem aumentar a eficiência de codificação, porque o codificador de vídeo pode determinar a paleta para o bloco atual utilizando a paleta de predição em vez de codificar as entradas da paleta no fluxo de bits.
[0054] Outros aspectos desta revelação são direcionados para codificação (ou seja, codificação ou decodificação) um valor de sequência de execução que indica um comprimento sequência de execução de uma sequência de execução de índices de paleta. Por exemplo, como notado acima, pode especificar uma sequência de execução, para um índice atualmente a ser codificado com um determinado modo, o número de amostras subsequentes que são codificados com o índice atual utilizando o mesmo modo.
[0055] Em alguns casos, os dados que indicam o valor de sequência de execução pode ser codificada de acordo com uma técnica de codificação, tais como Context Adaptive Binary Arithmetic Coding (CABAC), contexto adaptativa codificação de comprimento variável (CAVLC), ou outra técnica de codificação adaptativa contexto adaptativo contexto. Por exemplo, um codificador de vídeo (um codificador de vídeo ou de um decodificador de vídeo) pode selecionar um modelo de probabilidade ou “modelo de contexto” que opera no contexto de símbolos de código associadas a um bloco de dados de vídeo. Isto é, o modelo de contexto (Ctx) pode ser um índice ou deslocamento que é aplicada para selecionar uma de uma pluralidade de diferentes contextos, cada um dos quais pode corresponder a um modelo de probabilidade particular.
[0056] Em alguns casos, um único contexto pode ser usado para codificar os dados que indicam um valor de sequência de execução. Por exemplo, um valor de sequência de execução binarizada pode incluir uma primeira posição que indica se o valor de sequência de execução é maior do que zero um segundo binário que indica se o valor de sequência de execução é maior do que um, uma terceira posição que indica se o valor de sequência de execução é maior do que dois e quaisquer outras caixas necessárias para representar o valor de sequência de execução. Nesse exemplo, o mesmo contexto, pode ser utilizado para codificar contexto, os três primeiros silos com o valor de sequência de execução binarizada. No entanto, utilizando o mesmo modelo de probabilidade codificar várias bandejas podem criar um atraso entre ciclos sucessivos de codificação. Além disso, a correlação de caixas de um valor de sequência de execução pode não ser suficiente para justificar o tempo e recursos computacionais associados com a atualização do modelo de probabilidade.
[0057] De acordo com aspectos da presente revelação, o contexto pode ser selecionado com base no valor de índice do valor de sequência de execução sendo codificado. Por exemplo, um codificador de vídeo pode determinar um valor de sequência de execução que indica um comprimento de sequência de execução de um sequência de execução de um índice de paleta de um bloco de dados de vídeo. O codificador de vídeo também pode determinar um contexto para a codificação de dados de contexto adaptável que representa o valor de sequência de execução com base no valor do índice paleta. As técnicas podem melhorar a eficiência de codificação.
[0058] Em alguns exemplos, o índice paleta usada para derivar contextos para codificação sequência de execução pode ser um índice paleta que é usado para recuperar um valor de cor na paleta. Em outros exemplos, o índice de paleta utilizado para derivar contextos para a codificação de sequência de execução pode ser um índice de paleta analisada, isto é, o índice de paleta sinalizado em um fluxo de bits (que pode ser diferente do que o índice de paleta, que é usado para aceder às cores da paleta, como descrito em maior detalhe abaixo).
[0059] Em alguns exemplos, três contextos podem ser usados para codificar um valor de sequência de execução. Em tais exemplos, de acordo com aspectos da presente revelação, um codificador de vídeo pode selecionar um primeiro contexto para codificar o valor de sequência de execução com base no índice de ser maior que zero. O codificador de vídeo pode selecionar um primeiro contexto para codificar o valor de sequência de execução com base no índice de ser maior que zero. O codificador de vídeo pode selecionar um segundo contexto para codificar o valor de sequência de execução com base no índice de ser maior do que um. O codificador de vídeo pode selecionar um terceiro contexto para codificar o valor de sequência de execução com base no índice de ser maior do que dois. No que diz respeito ao exemplo escaninho codificada três contextos descritos anteriormente, o codificador de vídeo pode selecionar os três contextos para a codificação de qualquer combinação dos três binários. Embora o exemplo acima seja descrito em relação à definição de três contextos associados com três características do valor de índice, deve ser entendido que as técnicas aqui descritas podem ser estendidas para a definição de outros números de contextos com base em outras características do valor de índice.
[0060] Outros aspectos da presente revelação são dirigidos a execuções de codificação de índices de paleta que são codificados utilizando mais do que um modo de paleta. Em geral, os índices que são codificados usando diferentes modos de paleta não podem ser codificados no mesmo sequência de execução. Em um exemplo para fins de ilustração, uma sequência de execução codificada utilizando o modo de CopyFromTop pode não incluir quaisquer índices que são codificadas em que as amostras de evasão. Nesse exemplo, um pixel codificado como uma amostra de evasão pode encerrar uma sequência de execução, o que pode afetar negativamente a eficiência da codificação devido ao corre relativamente mais curtos para um determinado bloco.
[0061] De acordo com aspectos desta revelação, uma sequência de execução pode incluir amostras que são codificados usando mais do que um modo de paleta. Por exemplo, um codificador de vídeo pode determinar índices de paleta de uma primeira fileira de um bloco de dados de vídeo, em que os índices de paletas incluem um ou mais índices que são associados com um valor de cor na paleta e um elemento de sintaxe que não está associada com um valor de cor na paleta (que pode ser referido como um índice de paleta, apesar de o elemento de sintaxe não necessariamente correspondente a um valor de índice). O codificador de vídeo também pode codificar uma sequência de índices de paleta de uma segunda fileira do bloco de dados de vídeo em relação aos índices de paleta da primeira fileira, onde a sequência de execução inclui um ou mais índices que são associados com um valor de cor na paleta e o elemento de sintaxe que não está associado com um valor de cor na paleta.
[0062] Em alguns exemplos, a sequência de execução de índices de paleta pode incluir pixels que são codificadas com tanto no modo CopyFromTop e como amostras de evasão, por exemplo, usando o modo de Evasão. Por exemplo, os índices que são associados com um valor de cor na paleta podem ser codificados com o modo CopyFromTop e o elemento de sintaxe que não está associado com um valor de cor na paleta podem ser codificados como uma amostra de evasão. Em alguns exemplos, tal como descrito em maior detalhe abaixo, o elemento de sintaxe pode ser associado com um índice que não está associado com um valor de cor na paleta. Em alguns exemplos, os valores dos pixels codificados como amostras de evasão podem ser assinaladas na sequência de execução de índices, e os pixels codificados como amostras de evasão não são obrigados a serem os mesmos. Em outros exemplos, uma amostra de evasão pode ser representam pelo modo CopyFromTop e uma amostra de evasão pode ser incluída no mesmo grupo de pixels, juntamente com as amostras não evasão codificada (por exemplo, pixels para os quais os valores de cor estão representados na paleta), onde o grupo de pixels é identificado por um valor de sequência de execução. Deste modo, as técnicas podem ser usadas para aumentar o comprimento das calhas, o que pode melhorar a eficiência de codificação.
[0063] A figura 1 é um diagrama de blocos que ilustra um exemplo do sistema 10 que podem utilizar as técnicas desta revelação de codificação de vídeo. Tal como aqui utilizado, o termo “codificador de vídeo” refere-se genericamente para ambos os codificadores de vídeo e decodificadores de vídeo. Na presente revelação, os termos “de codificação de vídeo” ou “de codificação” podem referir-se, genericamente, a codificação de vídeo ou de decodificação de vídeo. O codificador de vídeo 20 e o decodificador de vídeo 30 de sistema de codificação de vídeo 10 representam exemplos de dispositivos que podem ser configurados para realizar as técnicas de codificação de vídeo baseado em paleta de acordo com vários exemplos descritos nesta revelação. Por exemplo, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para seletivamente código vários blocos de dados de vídeo, tais coma CU ou PUs nas HEVC codificação, usando a codificação baseada em codificação ou paleta com base não-paleta. Os modos de codificação não baseados em paleta podem se referir a diferentes modos de codificação temporal de predição inter, ou modos de codificação espacial de predição intra, como os vários modos de codificação especificados pelo Projeto HEVC 10.
[0064] Como mostrado na figura 1, o sistema de codificação de vídeo 10 inclui um dispositivo de origem 12 e um dispositivo de destino 14. O dispositivo de origem 12 gera dados de vídeo codificados. Consequentemente, o dispositivo de origem 12 pode ser referido como um dispositivo de codificação de vídeo ou um aparelho de codificação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados, gerados pelo dispositivo de origem 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 de origem 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.
[0065] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender uma ampla gama de dispositivos, incluindo computadores de mesa, dispositivos de computação móvel, notebook (por exemplo, laptop) computadores, tablets, set-top boxes, aparelhos de telefone, como os chamados “smartphones”, televisores, câmeras, dispositivos de exibição, media players digitais, consolas de vídeo jogos, no carro computadores, ou algo semelhante.
[0066] O dispositivo de destino 14 pode receber os dados de vídeo codificados do dispositivo de origem 12 através de um canal 16. O canal 16 pode compreender um ou mais suportes ou dispositivos capazes de retirar os dados de vídeo codificados de dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, O canal 16 pode compreender um ou mais meios de comunicação que permitem dispositivo de origem 12 para transmitir dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Nesse exemplo, o dispositivo de origem 12 pode modular os dados de vídeo codificado de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fios, 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 sem fios e/ou meios de comunicação com fio, como um espectro de frequência de rádio (RF) ou uma ou mais fileiras físicas de transmissão. O um ou mais meios de comunicação podem formar parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla, ou uma rede global (por exemplo, a Internet). O um ou mais meios de comunicação podem incluir roteadores, switches, estações de base, ou outros equipamentos que facilitam a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0067] Em outro exemplo, o canal 16 pode incluir um meio de armazenamento que armazena os dados de vídeo codificados gerados pelo dispositivo de origem 12. Nesse exemplo, o dispositivo de destino 14 pode acessar o meio de armazenamento, por exemplo, via de acesso ao disco ou de acesso ao cartão. O meio de armazenamento pode incluir uma variedade de meios de armazenamento de dados localmente acessados, tais como Blu-ray discos, DVDs, CD- ROMs, memória flash, ou outras mídias de armazenamento digital adequado para o armazenamento de dados de vídeo codificados.
[0068] Em outro exemplo, o canal 16 pode incluir um servidor de arquivos ou outro dispositivo de armazenamento intermediário que armazena os dados codificados de vídeo gerados pelo dispositivo de origem 12. Nesse exemplo, o dispositivo de destino 14 pode aceder aos dados de vídeo codificados armazenados no servidor de arquivos ou outro dispositivo de armazenamento intermediário via fluxo contínuo ou download. O servidor de arquivos pode ser um tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir os dados de vídeo codificados para o dispositivo de destino 14. Os exemplos de servidores de arquivos incluem servidores de rede (por exemplo, para um site), protocolo de transferência de arquivos (FTP), rede ligada dispositivos (NAS) de armazenamento e unidades de disco locais.
[0069] O dispositivo de destino 14 pode acessar os dados de vídeo codificados por meio de uma conexão de dados padrão, como uma ligação à Internet. Exemplo tipos de conexões de dados pode incluir canais sem fio (por exemplo, conexões Wi-Fi), conexões com fio (por exemplo, DSL, cabo modem, etc.), ou combinações de ambos que são adequados para o acesso a dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados vídeo codificados desde o servidor de arquivos pode ser uma transmissão ao vivo, uma transmissão de download, ou uma combinação de ambos.
[0070] As técnicas da presente revelação não se limitam a aplicações ou sem fios. As técnicas podem ser aplicadas a codificação de vídeo em apoio de uma variedade de aplicações multimídia, como transmissões de televisão pelo ar, transmissões de televisão por cabo, transmissões de televisão por satélite, fluxo contínuo de transmissões de vídeo, por exemplo, através da Internet, a codificação de dados de vídeo para armazenamento em um meio de armazenamento de dados, a decodificação de dados de vídeo são 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 uma forma ou de transmissão de vídeo de duas vias para suportar aplicações tais como fluxo contínuo de vídeo, reprodução de vídeo, transmissão de vídeo, e/ou vídeo telefonia.
[0071] O sistema de codificação de vídeo 10 ilustrado na figura 1 é apenas um exemplo e as técnicas desta revelação podem ser aplicadas às configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não necessariamente incluir qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados são recuperados a partir de uma memória local, transmitido através de uma rede, ou algo semelhante. Um dispositivo de codificação de vídeo pode codificar e armazenar dados na memória, e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar os dados da memória. Em muitos exemplos, a codificação e a decodificação são realizadas por dispositivos que não comunicam uma com a outra, mas simplesmente codificar os dados para a memória e/ou recuperar e decodificar dados a partir da memória.
[0072] No exemplo da figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20, e uma interface de saída 22. Em alguns exemplos, a relação da saída 22 pode incluir um modulador/demodulador (modem) e/ou de um transmissor. A fonte de vídeo 18 pode incluir um dispositivo de captura de vídeo, por exemplo, uma câmara de vídeo, um arquivo de vídeo que contém os dados de vídeo capturados anteriormente, uma interface de alimentação de vídeo para receber dados de vídeo a partir de um provedor de conteúdo de vídeo, e/ou um sistema de computação gráfica para gerar vídeo de dados, ou uma combinação de tais fontes de dados de vídeo.
[0073] O codificador de vídeo 20 pode codificar os dados de vídeo a partir de fonte de vídeo 18. Em alguns exemplos, o dispositivo de origem 12 transmite diretamente os dados de vídeo codificados para o dispositivo de destino 14 através de uma interface de saída 22. Em outros exemplos, os dados de vídeo codificados podem também 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.
[0074] 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 visualização 32. Em alguns exemplos, a interface de entrada 28 inclui um receptor e/ou um modem. A interface de entrada 28 pode receber dados de vídeo codificados pelo canal 16. O dispositivo de vídeo 32 pode ser integrado com ou pode ser externo ao dispositivo de destino 14. Em geral, dispositivo de exibição 32 exibe dados de vídeo decodificados. O dispositivo de exibição 32 pode compreender uma variedade de dispositivos de vídeo, como um monitor de cristal líquido (LCD), um display de plasma, um display de diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0075] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser implementados individualmente como qualquer um de uma variedade de circuitos adequados, tais como um ou mais microprocessadores, processadores de sinal digitais (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis no campo (FPGAs), lógica discreta, hardware, ou quaisquer combinações dos mesmos. Se as técnicas forem parcialmente implementadas 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 podem executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta revelação. Qualquer um dos anteriores (incluindo o hardware, software, uma combinação de hardware e software, etc.) pode ser considerado como sendo um ou mais processadores. O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser incluídos individualmente em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um codificador combinado/decodificador (codec) de um respectivo dispositivo.
[0076] Essa revelação pode geralmente se referir a codificador de vídeo 20 “sinalizando” ou “transmitindo” determinadas informações para outro dispositivo, como o decodificador de vídeo 30. O termo “sinalizando” ou “transmitindo” pode geralmente se referir à comunicação de elementos de sintaxe e/ou outros dados utilizados para decodificar os dados de vídeo compactados. Essa comunicação pode ocorrer em tempo quase real ou real. Alternativamente, esta comunicação pode ocorrer ao longo de um período de tempo, tal como pode ocorrer quando o armazenamento de elementos de sintaxe para um meio de armazenamento legível por computador, em um fluxo de bits codificado no momento da codificação, que pode então ser recuperado por um dispositivo de decodificação, em qualquer momento após sendo armazenado a este meio.
[0077] Em alguns exemplos, codificador de vídeo 20 e decodificador de vídeo 30 opera de acordo com um padrão de compressão de vídeo, como o padrão HEVC mencionado acima, e descrito em HEVC Projeto de 10. Além da base padrão HEVC, há esforços em curso para produzir codificação escalável de vídeo, codificação de vídeo de múltiplas vistas e 3D codificação extensões para HEVC. Além disso, os modos de codificação baseados em paleta, por exemplo, como descrito na presente revelação, pode ser proporcionada para a extensão do padrão HEVC. Em alguns exemplos, as técnicas descritas na presente revelação para a codificação baseada em paleta pode ser aplicada a codificadores e decodificadores configurados para operação de acordo com outras normas de codificação de vídeo, como padrão ITU-TH.264/AVC ou padrões futuros. Consequentemente, a aplicação de uma codificação baseada em modo de paleta para codificação de unidades codificadoras (CU) ou unidades de predição (PUs) em um codec HEVC é descrita para fins de exemplo.
[0078] Em HEVC e outros padrões de codificação de vídeo, uma sequência de vídeo normalmente inclui uma sequência de execução de imagens. As imagens também podem ser referidas como “quadros”. Uma imagem pode incluir três matrizes de amostra, denotado SL, SCb e SCr. SL é uma matriz bidimensional (isto é, um bloco) de amostras de luminância. SCb é uma matriz bidimensional de amostras de crominância Cb. SCr é uma matriz bidimensional de amostras de crominância Cr. Amostras de crominância podem também ser aqui referidos como amostras de “croma”. Em outros casos, uma imagem pode ser monocromática e apenas pode incluir uma variedade de amostras de luma.
[0079] Para gerar uma representação codificada de uma imagem, codificador de vídeo 20 pode gerar um conjunto de unidades de árvores de codificação (CTU). Cada uma das CTUs pode compreender um bloco de árvores de codificação de amostras de luminância, dois blocos de codificação de árvores correspondentes de amostras de croma e estruturas de sintaxe usadas para codificar as amostras de blocos de árvores de codificação. Dentro de imagens monocromáticas ou imagens com três planos de cores distintas, uma CTU pode compreender um único estruturas de codificação de bloco árvore e sintaxe utilizada para codificar as amostras do bloco árvore de codificação. Um bloco de árvore de codificação pode ser um bloco de NxN de amostras. A CTU também pode ser referida como um “bloco de árvore” ou uma “unidade de codificação maior” (LCU). A CTU de HEVC pode ser amplamente análoga aos macroblocos de outros padrões, tais como o H.264/AVC. No entanto, uma CTU não é necessariamente limitada a um tamanho particular e pode incluir uma ou mais unidades de codificação (UC). Uma fatia pode incluir um número inteiro de CTUs consecutivamente ordenados em uma ordem de digitalização de rastreio.
[0080] Para gerar uma CTU codificada, o codificador de vídeo 20 pode de forma recursiva executar a partição quad-tree sobre os blocos de árvores de codificação de um CTU para dividir os blocos de árvores codificação em blocos de codificação, daí o nome “codificação de unidades de árvores.” Um bloco de codificação é um bloco de NxN de amostras. Uma CU pode compreender um bloco de codificação de amostras de luminância e dois blocos de amostras de crominância correspondentes de codificação de uma imagem que tem uma matriz de amostra de luminância, uma matriz de amostra Cb, e uma matriz de amostra de Cr, e estruturas de sintaxe utilizada para codificar as amostras de codificação blocos. Em imagens monocromáticas ou imagens com três planos de cores distintas, uma CU pode compreender um único bloco de codificação e estruturas de sintaxe utilizadas para codificar as amostras do bloco de codificação. O codificador de vídeo 20 pode dividir um bloco de codificação de uma CU em um ou mais blocos de predição. Um bloco de predição é retangular (ou seja, quadrada ou não- quadrado) bloco de amostras em que é aplicada a mesma predição. Um órgão de predição (PU) de uma CU pode compreender um bloco de predição de amostras de luminância, dois blocos de predição correspondentes de amostras de crominância, e estruturas de sintaxe usadas para predizer os blocos de predição. Em imagens monocromáticas ou imagens com três planos de cores distintas, uma PU pode compreender um único estruturas de bloco predição e de sintaxe usados para predizer o bloco de predição. O codificador de video 20 pode gerar blocos de predição (por exemplo, blocos de predição de luma, Cb e Cr) para blocos de predição (por exemplo, blocos de predição luma, Cb e Cr) de cada PU da CU.
[0081] O codificador de vídeo 20 pode usar a predição intra ou predição inter para gerar os blocos de predição para a PU. Se codificador de vídeo 20 utiliza predição intra para gerar os blocos de predição de uma PU, codificador de vídeo 20 pode gerar os blocos de predição da PU com base em amostras decodificadas da imagem que inclui a PU.
[0082] Se o codificador de vídeo 20 utiliza predição inter para gerar os blocos de predição de uma PU, o codificador de vídeo 20 pode gerar os blocos de predição de PU com base em amostras decodificadas de uma ou mais de outras do que a imagem associada com as imagens de PU. O codificador de vídeo 20 pode usar predição única ou predição dupla para gerar os blocos de predição de uma PU. Quando o codificador de vídeo 20 usa predição única para gerar os blocos de predição para uma PU, a PU pode ter um único vetor de movimento (MV). Quando codificador de vídeo 20 usa predição dupla para gerar os blocos de predição para a PU, a PU pode ter dois MVs.
[0083] Após o codificador de vídeo 20 gerar blocos de predição de luma, Cb e Cr para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar um bloco residual de luma para a CU. Cada amostra no bloco residual de luma da CU indica uma diferença entre uma amostra luma em um dos blocos luma predição da Cu e uma amostra correspondente no bloco de codificação de luma original da CU. Além disso, codificador de vídeo 20 pode gerar um bloco residual Cb para a CU. Cada amostra no bloco residual Cb da CU pode indicar uma diferença entre uma amostra Cb em um dos blocos Cb de predição da CU e uma amostra correspondente no bloco de codificação Cb original da CU. O codificador de vídeo 20 também pode gerar um bloqueio residual Cr para a CU. Cada amostra no bloco residual Cr da CU pode indicar uma diferença entre uma amostra de Cr em um dos blocos Cr de predição da CU e uma amostra correspondente no bloco de codificação Cr original da CU.
[0084] Além disso, codificador de vídeo 20 pode usar partição quadtree para decompor os blocos residuais de luma, Cb e Cr de uma CU em um ou mais blocos de transformada de luma, Cb e Cr. Um bloco de transformada pode ser um bloco retangular de amostras em que a mesma transformada é aplicada. Uma unidade de transformação (TU) de uma CU pode ser um bloco de transformada de amostras de luminância, correspondendo dois blocos de transformada de amostras de crominância, e estruturas de sintaxe usadas para transformar a amostras de blocos de transformada. Assim, cada unidade de tradução de uma CU pode ser associada com um bloco de transformada de luminância, um bloco de transformada Cb e Cr de um bloco de transformada. O bloco de transformada de luma associado a TU pode ser um sub-bloco do bloco residual de luma da CU. O bloco Cb transformar pode ser um sub-bloco do bloco residual Cb da CU. O bloco Cr transformar pode ser um sub-bloco do bloco residual Cr da CU.
[0085] O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de luma de uma TU para gerar um bloco de coeficientes de luma para a TU. Um bloco de coeficientes pode ser uma matriz bidimensional de coeficientes de transformada. Um coeficiente de transformada pode ser uma quantidade escalar. O codificador de vídeo 20 pode aplicar um ou mais transformações para um Cb transformar blocos de uma TU para gerar um bloco de coeficientes Cb para o TU. O codificador de vídeo 20 pode aplicar um ou mais transformações para um Cr transformar blocos de uma TU para gerar um bloco de coeficientes Cr para o TU.
[0086] Depois de gerar um bloco de coeficientes (por exemplo, um bloco de coeficientes de luminância, um bloco de coeficientes Cb ou um bloco de coeficientes Cr), codificador de vídeo 20 pode quantificar o bloco de coeficientes. Quantização geralmente refere-se a um processo em que os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizados para representar os coeficientes de transformada, proporcionando a compressão adicional. Depois de codificador de vídeo 20 quantifica um bloco de coeficientes, codificador de vídeo 20 pode entropia codifica elementos de sintaxe indicando coeficientes de transformada quantificados. Por exemplo, o codificador de vídeo 20 pode executar codificação aritmética binária de contexto adaptativo (CABAC) sobre os elementos de sintaxe indicando coeficientes de transformada quantizados.
[0087] No que diz respeito ao CABAC, como um exemplo, o codificador de vídeo 20 e do decodificador de vídeo 30 podem selecionar um modelo de probabilidade (também referida como um modelo de contexto) para símbolos de código associadas a um bloco de dados de vídeo com base no contexto. Por exemplo, um modelo de contexto (Ctx) pode ser um índice ou deslocamento que é aplicada para selecionar uma de uma pluralidade de diferentes contextos, cada um dos quais pode corresponder a um modelo de probabilidade particular. Consequentemente, um modelo de probabilidade diferente é tipicamente definido para cada contexto. Depois de codificação ou decodificação binária, o modelo de probabilidade é atualizado adicionalmente com base em um valor binário para refletir as estimativas de probabilidade mais atuais para binário. Por exemplo, um modelo de probabilidade pode ser mantido como um estado em uma máquina de estado finito. Cada estado particular pode corresponder a um valor de probabilidade específica. O próximo estado, o que corresponde a uma atualização do modelo de probabilidade, pode depender do valor do recipiente atual (por exemplo, o binário a ser codificado). Consequentemente, a seleção de um modelo de probabilidade pode ser influenciada por os valores das caixas anteriormente codificados, porque os valores indicam, pelo menos em parte, a probabilidade de o binário tendo um determinado valor. O processo de codificação de contexto descrita acima pode ser geralmente referido como um modo de codificação contexto-adaptativo.
[0088] Assim, codificador de vídeo 20 pode codificar um símbolo alvo usando um modelo de probabilidade. Da mesma forma, decodificador de vídeo 30 pode analisar um símbolo alvo usando o modelo de probabilidade. Em alguns casos, o codificador de vídeo 20 pode codificar elementos de sintaxe utilizando uma combinação de codificação de contexto adaptável e codificação de não-contexto adaptável. Por exemplo, o codificador de vídeo 20 pode codificar em contexto os binários, selecionando um modelo de probabilidade ou “modelo de contexto” que opera em contexto para codificar os binários. Em contraste, o codificador de vídeo 20 pode ignorar os binários de código, ignorando ou omitindo o processo de codificação aritmética normal ao codificar os binários. Nesses exemplos, o codificador de vídeo 20 pode usar um modelo de probabilidade fixo para ignorar a codificação dos binários. Ou seja, ignorar os binários codificados não inclui atualizações de contexto ou de probabilidade.
[0089] O codificador de vídeo 20 pode gerar um fluxo contínuo de dados, que inclui os elementos de sintaxe codificados 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 NAL inclui um cabeçalho unidade NAL e encapsula uma carga seqüência de byte-prima (RBSP). O cabeçalho unidade NAL pode incluir um elemento de sintaxe que indica um código de tipo de unidade NAL. O código de tipo de unidade NAL especificado pelo cabeçalho de unidade NAL de uma unidade NAL indica o tipo da unidade NAL. Um PAAB pode ser uma estrutura de sintaxe contendo um número inteiro de bytes que está encapsulado dentro de uma unidade NAL. Em alguns casos, um PAAB inclui bits zero.
[0090] Diferentes tipos de unidades NAL podem encapsular diferentes tipos de RBSPs. Por exemplo, um primeiro tipo de unidade NAL pode encapsular uma RBSP para um conjunto de parâmetros de imagem (PPS), um segundo tipo de unidade NAL pode encapsular uma RBSP para uma fatia codificada, um terceiro tipo de unidade NAL pode encapsular uma RBSP para SEI, e assim por diante. As unidades NAL que encapsular RBSPs para codificação de dados de vídeo (em oposição a RBSPs para conjuntos de parâmetros e mensagens SEI) pode ser referido como camada de vídeo codificação unidades (VCL) NAL.
[0091] O decodificador de vídeo 30 pode receber um fluxo de bits gerado pelo codificador de vídeo 20. Além disso, o decodificador de vídeo 30 pode analisar o fluxo de bits para decodificar elementos de sintaxe de fluxo de bits. Decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base pelo menos em parte sobre os elementos de sintaxe decodificados a partir do fluxo de bits. O processo para reconstruir os dados de vídeo pode ser em geral recíproco para o processo realizado por um codificador de vídeo 20. Por exemplo, um decodificador de vídeo 30 pode usar MVs de PUs para determinar os blocos de predição para a PU de uma CU atual. Além disso, decodificador de vídeo 30 pode inverter quantização transformar blocos de coeficiente associado TUs da CU atual. Decodificador de vídeo 30 pode realizar transformações inversas nos transformar blocos de coeficiente para reconstruir transformar blocos associados ao TUs da CU atual. O decodificador de vídeo 30 pode reconstruir os blocos de codificação do atual CU, adicionando as amostras dos blocos de predição para a PU da CU atual para as amostras de blocos de transformada de todas as TUs de a CU atual correspondente. Ao reconstruir os blocos de codificação para cada CU de uma imagem, decodificador de vídeo 30 pode reconstruir a imagem.
[0092] O HEVC contém várias propostas para tornar o codec paralelamente mais amigável, incluindo blocos de pixels adjacentes e processamento paralelo de frente de onda (WPP). HEVC WD10 define blocos de pixels adjacentes como um número inteiro de blocos de árvore de codificação que ocorrem em conjunto em uma coluna e uma fileira, ordenados consecutivamente em varredura de rastreio de blocos de árvore de codificação do bloco de pixels adjacentes. A divisão de cada imagem em blocos de pixels adjacentes é um particionamento. O número de blocos de pixels adjacentes e a localização dos seus limites podem ser definidos para toda a sequência ou mudou de imagem a imagem. Os limites de blocos de pixels adjacentes, de forma semelhante aos limites de fatias, operam de modo que um bloco de pixels adjacentes pode ser processado de forma independente, mas os filtros em laço (deslocamento de desblocagem e adaptativo de amostra (SAO)) podem ainda cruzar os limites de bloco de pixels adjacentes. HEVC WD10 também especifica algumas restrições sobre a relação entre fatias e blocos de pixels adjacentes.
[0093] Em alguns exemplos, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para executar a codificação baseada em paleta. Por exemplo, em paleta com base de codificação, em vez de executar as técnicas de predição intra ou de predição inter de codificação acima descrito, um codificador de vídeo 20 e do decodificador de vídeo 30 pode codificar um assim chamado paleta como uma tabela de cores para representar os dados de vídeo do área específica (por exemplo, um dado bloco). Cada pixel pode ser associado com uma entrada na paleta que representa a cor do pixel. Por exemplo, codificador de vídeo 20 e decodificador de vídeo 30 pode codificar um índice que relaciona o valor de pixel para o valor apropriado na paleta.
[0094] No exemplo acima, o codificador de vídeo 20 pode codificar um bloco de dados de vídeo através da determinação de uma paleta para o bloco, para localizar uma entrada na paleta para representar o valor de cada pixel, e que codifica para a paleta com valores de índice para os pixels relacionando o valor de pixel para a paleta. O decodificador de vídeo 30 pode obter, a partir de um fluxo de bits codificado, uma paleta para um bloco, assim como os valores de índice para os pixels do bloco. O decodificador de vídeo 30 pode relacionar os valores do índice dos pixels de entrada da paleta para reconstituir os valores de pixel do bloco.
[0095] Em alguns exemplos, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para construir uma paleta utilizando entradas de paleta a partir de um ou mais blocos previamente codificados. Por exemplo, codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para copiar um ou mais de entradas de paleta para a codificação de um bloco atual a partir de uma paleta de predição que inclui entradas de paleta de blocos previamente codificados usando o modo de paleta ou outras amostras reconstruídas. Para cada entrada na paleta de predição, codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para codificar um binário indicador para indicar se a entrada associada com o indicador é copiada para a paleta atual (por exemplo, indicado pelo indicador = 1). A sequência de indicadores binários pode ser referida como o vetor de paleta de predição de binário. A paleta para a codificação de um bloco atual pode também incluir um número de novas entradas de paleta, os quais podem ser codificados de forma explícita (por exemplo, separadamente do vetor de predição de paleta).
[0096] Como mencionado acima, o codificador de vídeo 20 e do decodificador de vídeo 30 pode usar um número de diferentes modos de paleta de codificação para os índices de código de uma paleta. Por exemplo, o codificador de vídeo 20 e do decodificador de vídeo 30 pode usar um modo de evasão, de um modo CopyFromTop (também referido como o modo CopyAbove), ou um modo de Valor (também referido como o modo de Índice) para os índices de código de um bloco. Em geral, a codificação de uma amostra utilizando o “modo de evasão” pode referir-se geralmente uma amostra de codificação de um bloco que não tem uma cor correspondente representado em uma paleta para a codificação do bloco. Como observado acima, as amostras podem ser referidos como amostras de evasão ou escapar pixels.
[0097] Como outro exemplo, em um terceiro experimento de núcleo de codificação de conteúdo de tela, sub-teste B.6, como descrito em Yu-Wen Huang et al,. “Description of Screen Content Core Experiment 3 (SCCE3): Palette Mode”, JCTVC- Q1123, Valencia, ES, 27 de março-04 de abril de 2014 (Q1123 adiante), outra modalidade foi introduzida no software lançado pela Canon em 26 de Maio de 2014. A macro para este modo pode ser definida como “CANON_NEW_RUN_LAST_TRANSITION” e pode ser aqui referida como o modo de sequência de execução de transição. O sequência de execução de transição pode ser semelhante ao modo de valor em que o codificador de vídeo 20 ou decodificador de vídeo 30 pode codificar um valor de índice seguido por uma sequência de execução especificando o número de amostras subsequentes que tenham o mesmo índice de paleta.
[0098] Uma diferença entre o modo de valor e o modo de Sequência de Execução de Transição é que o valor do índice do modo de sequência de execução de transição não é sinalizado no fluxo de bits. Em vez disso, codificador de vídeo 20 e decodificador de vídeo 30 pode-se inferir o valor do índice para o modo de sequência de execução de transição. Tal como aqui descrito, inferir um valor pode referir-se à determinação de um valor de referência sem a sintaxe dedicada que representa o valor que é codificado em um fluxo de bits. Ou seja, codificador de vídeo 20 e decodificador de vídeo 30 pode inferir um valor sem codificação um elemento de sintaxe específica para o valor em um fluxo de bits. O índice inferido pode ser referido como um índice de transição.
[0099] Em alguns exemplos, pode haver duas formas de sinalizar os modos de paleta. A primeira técnica para a sinalização modos de paleta pode ser referida sinalização de evasão tão explícita. Por exemplo, em JCTVC- Q0094, se a macro “PLT_REMOVE_EVASÃO_FLAG” é zero, o codificador de vídeo pode codificar 20 explicitamente um indicador de evasão para cada amostra de um bloco para indicar se uma amostra a ser codificado em um bloco é codificada em modo de evasão. Se a amostra não está codificada com o modo de Evasão, codificador de vídeo 20 pode codificar dados adicionais para indicar se o modo é CopyFromTop ou Valor. Em alguns casos, os dados adicionais podem ser um indicador, aqui referida como uma indicador SPoint (por exemplo, um valor da indicador SPoint de zero pode indicar o modo de CopyFromTop e um valor da indicador de um SPoint pode indicar modo de valor, ou vice-versa).
[0100] Portanto, com a sinalização explícita de evasão, a indicador SPoint pode ser utilizado para indicar um tipo de sequência de execução particular para uma sequência de execução de valores de pixel associados com o modo indicado. Por exemplo, codificador de vídeo 20 pode codificar uma indicador SPoint para indicar se o índice a ser codificado e o sequência de execução de valores de índice subsequentes ser codificado em uma sequência de execução são codificados usando o modo CopyFromTop ou modo Valor. O codificador de vídeo 20 não codifica o indicador de evasão (por exemplo, “PLT_REMOVE_EVASÃO_FLAG”) e a indicador SPoint (quando necessário) para as amostras de teste posterior. Ou seja, codificador de vídeo 20 e decodificador de vídeo 30 pode inferir os valores do indicador evasão e indicador SPoint para amostras incluídos em uma sequência de execução. Por exemplo, codificador de vídeo 20 e decodificador de vídeo 30 pode determinar o valor do indicador de evasão e indicador SPoint para amostras incluídos na sequência de execução sem referência a sintaxe específica que representam esses valores no fluxo de bits.
[0101] A segunda técnica para a sinalização de modos de paleta pode ser referida como sinalização de evasão implícita. Por exemplo, se a macro “PLT_REMOVE_EVASÃO_FLAG” de JCTVC-Q0094 for um, o codificador 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 um dos índices do bloco. Em alguns exemplos, o codificador 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 dado bloco. O índice adicional pode ser utilizado como uma indicação de uma amostra de evasão.
[0102] Nessa sinalização de evasão implícita, o codificador de vídeo 20 pode codificar, para um valor de amostra particular de um bloco, os dados que representa o índice adicional para indicar que a amostra adicional é codificada utilizando o modo de evasão. O codificador de vídeo 20 pode também codificar o valor da cor da amostra de evasão. Consequentemente, no caso de evasão de sinalização implícita, existem apenas dois modos possíveis (por exemplo, o modo de CopyFromTop ou modo Valor) de ser sinalizado usando sintaxe explícita. Por exemplo, apenas a indicador SPoint pode sinalizou para distinguir entre os modos. Se a amostra for codificada no modo de Valor e o índice de modo de valor é igual ao índice de evasão (por exemplo, o índice adicional acima mencionado para a paleta), codificador de vídeo 20 e do decodificador de vídeo 30 pode-se inferir a amostra a ser codificada em escapar modo. Nesse caso nenhum sequência de execução é sinalizado. Quando se utiliza a evasão de sinalização implícita com o modo de Sequência de Execução de Transição, a indicador SPoint pode tomar valores de 0 (por exemplo, o modo de Valor), 1 (por exemplo, o modo de CopyFromTop) ou 2 (por exemplo, o modo de sequência de execução de transição).
[0103] As técnicas descritas na presente revelação podem incluir técnicas para várias combinações de um ou mais de predição de paleta e sinalização de índices de paleta com evasão de sinalização implícita. Por exemplo, os aspectos da presente revelação deste referem-se a reinicializar uma paleta de predição. Por exemplo, reinicializar uma paleta de predição pode incluir definir o tamanho da paleta de predição para zero, de tal modo que a paleta de predição não possa ser utilizada para construir uma paleta para um bloco a ser codificado. Nesse caso, um vetor de paleta de predição binário não é sinalizado em um fluxo de bits e não há entradas de paleta são preditas a partir da paleta de predição.
[0104] Em JCTVC-Q0094, uma paleta de predição é reinicializada para um bloco da árvore de codificação (CTB) na borda esquerda da imagem (por exemplo, no início de uma fileira de CTBs em uma imagem (“fileira CTB”)). A razão para reinicializar a paleta de predição no início de uma fileira de CTB pode ser duplo. Em primeiro lugar, depois de codificação de uma fileira de CTBs, a paleta de predição pode incluir entradas de paleta, que na sua maioria pertencem a paletas de blocos localizados no lado direito da imagem. Consequentemente, a paleta de predição pode não ser muito eficaz na predição de uma paleta atual para um primeiro CTB de uma fileira de CTB, o qual pode ser posicionado na parte lateral esquerda da imagem (por exemplo, as cores de pixels no lado esquerdo de uma imagem podem diferentes das cores de pixels no lado direito da figura). Além disso, quando duas ou mais frentes de onda estão a ser utilizados para a codificação de uma imagem em particular, para além dos estados CABAC, seria necessária para propagar informações sobre a paleta de predição entre frentes de onda.
[0105] Por exemplo, uma frente de onda pode ser uma unidade de dados de vídeo para codificação, e pode ser codificada em paralelo com outras frentes de onda. Por exemplo, duas abordagens de paralelização estão incluídas na HEVC, incluindo Processamento Paralelo de Frente de Onda (WPP) e Frente de Onda Sobreposta (OWF). WPP permite criar partições de imagem que podem ser processados em paralelo, sem incorrer em perdas elevadas de codificação. Em WPP fileiras de CTBs são processadas em paralelo, preservando todas as dependências de codificação. OWF permite sobrepor a sequência de execução de imagens consecutivas usando frentes de onda.
[0106] No entanto, em alguns casos, reinicializando uma paleta de predição podem levar a perdas de codificação. Por exemplo, sem uma paleta de predição, codificador de vídeo 20 e decodificador de vídeo 30 pode codificar os dados que indicam todas as entradas de uma paleta (por exemplo, todos os índices de paleta e valores de cor relacionados) em um fluxo de bits. Estes dados de paleta podem ser uma relativamente grande quantidade de dados em relação às entradas de paleta previstas, o que pode ser indicado no fluxo de bits utilizando um único indicador. Assim, redefinindo uma paleta de predição pode afetar negativamente a taxa de bits de dados de vídeo codificados com a codificação baseada em paleta.
[0107] De acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para desativar a reinicialização de uma paleta de predição com base no número de frentes de onda que são usadas para codificar uma imagem para ser um ou zero (isto é, não há frentes de onda). Ou seja, codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para não reinicializar uma paleta de predição quando um ou zero frentes de onda são usados para codificar uma imagem. No entanto, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para permitir o reinicialização de uma paleta de predição quando dois ou mais frentes de onda são usados para codificar uma imagem. Nesse exemplo, o codificador de vídeo 20 e decodificador de vídeo 30 pode não precisar propagar informações sobre uma paleta de predição entre frentes de onda, enquanto ainda evitando perdas de codificação no caso de frente de onda única.
[0108] De acordo com aspectos desta revelação,quando vários blocos de pixels adjacentes e várias frentes de onda são usados para codificar uma imagem (por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 usam dois ou mais blocos de pixels adjacentes e duas ou mais frentes de onda para codificar a imagem), o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para redefinir a paleta de predição no início de cada bloco de pixels adjacentes CTB fileira. Um bloco de pixels adjacentes CTB fileira pode incluir CTBs de uma fileira CTB que pertencem a um bloco de pixels adjacentes particular. Deve ser entendido que uma “fileira” pode estar orientada verticalmente ou horizontalmente, em função de uma ordem de exploração em particular utilizada para blocos de código. Uma fileira também pode ser aqui referida como uma fileira, e os termos podem ser aqui utilizados indistintamente.
[0109] As técnicas descritas acima também podem ser aplicadas a uma tabela de transição de paleta. Por exemplo, o documento submissão padrão Yu-Chen Sun et al., “CE6 Test C.2 Transition Copy Mode”, JCTVC-S0078, Strasbourg, FR, 17-24 outubro (JCTVC-S0078) descreve um modo de cópia de transição. A cópia de transição pode também ser referida como um modo de sequência de execução de cópia de transição (sequência de execução TC). No modo de sequência de execução TC, um decodificador registra os padrões de índice de cor adjacentes e usa os padrões para predizer índices para codificação. No modo de sequência de execução TC, como um exemplo, um elemento de imagem atual, C, tem um índice de cor de piloto igual a um. A partir de uma área de causalidade de pixels codificados, um codificador de vídeo (por exemplo, um codificador de vídeo 20 ou decodificador de vídeo 30) pode determinar que um índice de cor para a direita de um índice de cor que é igual a um é susceptível de ser de dois (por exemplo, supondo digitalização da esquerda para a direita). Este padrão de transição de um para dois pode ser gravado em uma tabela de cópia de transição (tabela TC) para realçar a eficiência de predição de índice de cor.
[0110] Em JCTVC-S0078, uma tabela TC é reinicializada quando uma CU atual a ser codificada é o primeira CU da fatia ou a CU atual herda a tabela de TC da CU anterior quando a CU atual é uma não-primeira CU da fatia. Esta propriedade herdar pode ser referido como “propagação tabela TC”. A tabela TC pode ser mantida e atualizada conforme os pixels na CU são codificados.
[0111] Em alguns exemplos, no modo de cópia de transição, duas tabelas de transição são mantidas, uma para fileiras pares indexadas e outra para fileiras ímpares indexadas. Contribuições anteriores descritas usando uma tabela de transição única. Independentemente disso, em geral, como notado acima, uma tabela de transição a partir de uma paleta de CU codificada anterior (ou bloco) pode ser usada para inicializar a tabela de transição para uma CU atual (ou bloco) codificada no modo de paleta.
[0112] De acordo com aspectos da presente revelação, o conceito de reinicializar a paleta no início de uma primeira CTB em uma fileira CTB ou a primeira CTB em um bloco de pixels adjacentes em uma fileira CTB quando várias frentes de onda estão sendo utilizadas, como descrito acima, pode ser estendido para reinicializar a tabela de transição de paleta (ou tabelas) também nesses locais. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para definir todas as entradas de uma tabela de transição de paleta de zero (ou a qualquer outro índice fixo paleta, ou qualquer outro padrão) para o primeiro CTB em uma fileira CTB ou primeira CTB em um bloco de pixels adjacentes em uma fileira CTB quando várias frentes de onda estão sendo usadas (ou, de forma equivalente, as CUs de primeira paleta codificada dentro do CTBs). De acordo com aspectos da presente revelação, o ajustamento das tabelas de transição de paleta de predição e paleta pode ser generalizado a qualquer outra paleta de dados relacionados que podem ser propagadas a partir de uma CU de paleta codificada para outra.
[0113] Em outro exemplo, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para codificar um indicador de um conjunto de parâmetros de vídeo (VPS), conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS), cabeçalho de fatia, em um nível de bloco de pixels adjacentes, em um nível de bloco ou noutro local que indica se uma reinicialização paleta de predição (e/ou nova fixação de outras informações, tais como as tabelas de transição de paleta acima mencionadas) é realizada, no início de cada fileira de CTB. Nos casos em que a indicador é sinalizado em um nível bloco de pixels adjacentes, a indicador pode indicar se a reinicialização paleta de predição é executada no início de cada fileira CTB bloco de pixels adjacentes (por exemplo, no início de cada fileira de CTBs em um bloco de pixels adjacentes). Em alternativa, para o primeiro bloco codificado utilizando o modo de paleta em uma fileira de CTBs, um indicador pode ser sinalizado para indicar se reinicialização de paleta de predição é realizada.
[0114] Em outro exemplo, um indicador (por exemplo, onde um indicador pode ser um ou mais elementos de sintaxe) pode ser sinalizado para cada bloco codificado utilizando o modo de paleta para indicar se reinicialização paleta de predição deve ser realizada. Em alguns exemplos, esta técnica pode ter uma vantagem de permitir o codificador de vídeo 20 e do decodificador de vídeo 30 para ser capaz de selecionar entre as técnicas, que têm todas as entradas de paleta explicitamente sinalizadas ou técnicas que utilizam uma paleta de predição para predizer algumas das entradas de paleta. Em alguns exemplos, o valor do indicador pode ser inferido. Por exemplo, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para inferir o valor do indicador para cada frente de onda, de tal modo que o valor inferido indica que a paleta de predição é reinicializada. Alternativamente ou adicionalmente, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para inferir o valor do indicador para o primeiro bloco de uma fatia ou bloco de pixels adjacentes, de tal modo que o valor inferido indica que uma paleta de predição é reinicializada no início de cada fatia e/ou bloco de pixels adjacentes.
[0115] Em outro exemplo, em vez de sinalizar um indicador para indicar uma reinicialização paleta de predição, codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para redefinir uma paleta de predição de acordo com uma regra ou conjunto de regras. Por exemplo, codificador de vídeo 20 e decodificador de vídeo 30 pode tanto ser configurado para aplicar a regra ou conjunto de regras. Em um exemplo, codificador de vídeo 20 e decodificador 30 de vídeo pode ser configurado para aplicar a seguinte regra para determinar se deve redefinir uma paleta de predição: se a paleta no atual bloco não tem entradas preditas de uma paleta de predição, a paleta de predição é reinicializada (por exemplo, a paleta de predição é reinicializada para ter um comprimento de zero) para este bloco atual, de tal modo que apenas a paleta atual pode ser utilizada como um preditor para os blocos seguintes, mas não as entradas de paleta a partir dos blocos anteriores.
[0116] No exemplo acima, o codificador de vídeo 20 pode controlar a reinicialização de paleta. Por exemplo, quando a paleta deve ser reinicializada, o codificador de vídeo 20 pode simplesmente não usar nenhuma entrada da paleta de predição. Uma vantagem potencial da implementação deste processo é que há novos elementos de sintaxe são adicionados, e a reinicialização paleta pode ser mais granular e mais flexível controlada. Por exemplo, a flexibilidade/granularidade pode ser alcançada devido à possibilidade de alterar as condições sob as quais paleta de predição ajustamento é realizada.
[0117] Em alguns exemplos, codificador de vídeo 20 pode não usar a paleta de predição em pelo menos um dos seguintes casos: pela primeira LCU em cada fileira LCU, quando de frente de onda de codificação é ativada; para o primeiro bloco em um bloco de pixels adjacentes, ou para o primeiro bloco de uma fatia.
[0118] De acordo com aspectos da presente revelação, uma paleta de predição pode ser reinicializada. Por exemplo, reinicializando a paleta de predição podem geralmente se referem à substituição de entradas da paleta de predição com novas entradas. Por exemplo, após a codificação de um bloco de índices de uma paleta de predição podem incluir um número de entradas para a predição de uma paleta de o bloco seguinte ser codificada. Reinicializar a paleta de predição pode incluir a remoção do número de entradas e adicionar novas entradas para a paleta de predição para predizer a paleta do próximo bloco a ser codificada.
[0119] Em alguns exemplos, de acordo com aspectos da presente revelação, no início de cada fileira de CTB, um codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para reinicializar uma paleta de predição para a determinação de uma paleta atual de um CTB atual utilizando entradas de paleta a partir de uma primeira linha de CTB da CTB acima da CTB atual, se a linha de CTB atual não for a primeira linha de CTB na imagem/fatia/bloco de pixels adjacentes. Nesse caso, como descrito em maior detalhe com relação ao exemplo da figura 5 a seguir, depois de terminar a codificação do primeiro CTB e antes da codificação do segundo CTB em uma linha de CTB acima (desde que o primeiro CTB não seja a primeira linha de CTB na imagem/fatia/bloco de pixels adjacentes), o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar a paleta de predição para reinicializar a paleta de predição no início da fileira de atual de CTB. Se a linha CTB atual for a primeiro na imagem/fatia/bloco de pixels adjacentes, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para definir o número de entradas de paleta de predição (por exemplo, como descrito em JCTVC-Q0094), e não predizer qualquer entrada de paleta quando da determinação da paleta para o CTB atual.
[0120] Em outro exemplo, o conceito de reinicialização de uma paleta de predição pode ser generalizado. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para gerar uma paleta de predição após codificação N CTBs de uma fileira de CTBs acima de um CTB atualmente a ser codificada e antes de iniciar o código do N + 1° CTB na fileira de CTB acima da CTB atualmente a ser codificada (desde a fileira de CTBs não é a primeira fileira de CTB na imagem/fatia/blocos de pixels adjacentes). O codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para reinicializar a paleta de predição para determinar a paleta de CTB atualmente a ser codificado utilizando a paleta de predição gerada. A CTB atualmente a ser codificada pode ser a primeira CTB de uma fileira de CTB atual (desde que a atual de CTB não é a primeira fileira de CTB na imagem/fatia/blocos de pixels adjacentes). Aqui, N pode estar entre um e o número de CTBs na fileira de CTB. Para alinhar conceitualmente esta técnica re-inicialização paleta de predição com codificação de frente de onda, N pode ser selecionado para ser menor do que ou igual a dois. Desta forma, o mesmo processo de re-inicialização da paleta de predição pode ser utilizado independentemente do número de frentes de onda utilizada para codificar uma imagem.
[0121] Como mencionado acima, uma CTB pode também ser referido como uma LCU. Em alguns exemplos, a paleta de predição re-inicialização pode ser realizada pela primeira CTB de uma fileira de blocos em que um modo de paleta é usado para predizer qualquer bloco de CTB (por exemplo, em casos em que uma variedade de modos de predição (modos inter ou intra) ou paletas pode ser utilizada para codificar uma CTB. Embora os exemplos acima sejam descritos com respeito às CTBs para fins de ilustração, deve entender-se que as técnicas podem ser estendidas a qualquer tipo de bloco de dados de vídeo.
[0122] De acordo com aspectos da presente revelação, o processo de re-inicialização de paleta descrito acima pode ser estendido para tabelas de transição de paleta. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para reinicializar tabelas de transição de paleta no início de uma fileira atual de CTB utilizando as tabelas de transição de paleta geradas após codificação N CTBs e antes de começar a codificar de N + 1a CTB na linha de CTB acima da CTB atual (desde que a CTB atual não seja a primeira linha de CTB na imagem/fatia/blocos de pixels adjacentes). Aqui, N pode estar entre um e o número de CTBs na linha de CTB. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para selecionar um valor de N que seja menor ou igual a dois.
[0123] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para copiar o tamanho das tabelas de transição além das próprias tabelas de transição de paleta. Com efeito, este processo de re-inicialização de informação de codificação de paleta (por exemplo, informação de predição de paleta, informação da tabela de transição de paleta, ou semelhante) pode ser generalizado para qualquer outra paleta de dados relacionados que se propaga a partir de uma CU de paleta codificada para a próxima CU de paleta codificada. Por exemplo, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para reinicializar os dados de paleta relacionados para a CTB atual com base em dados de paleta gerados após a codificação N CTBs e antes de começar a codificar o N+1a CTB na linha de CTB acima da CTB atual.
[0124] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para utilizar a nova inicialização de todas as CTBs aplicáveis (por exemplo, CTBs inicialmente codificadas em uma linha de CTBs). Em outros exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para só executar as técnicas de re- inicialização quando o número de frentes de onda a ser utilizado para codificar uma imagem ou bloco de pixels adjacentes for dois ou mais.
[0125] De acordo com aspectos da presente revelação, quando os blocos e frentes de onda estiverem sendo utilizados em conjunto para a codificação de uma imagem em particular, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para aplicar as técnicas de re-inicialização para blocos de pixels adjacentes como se os blocos de pixels adjacentes são imagens separadas. Por exemplo, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para aplicar o processo de re-inicialização acima descrito para uma primeira CTB de bloco de pixels adjacentes se a primeira CTB de bloco de pixels adjacentes não for a primeira linha de CTB no bloco de pixels adjacentes, como descrito em maior detalhe no que diz respeito à figura 7 abaixo.
[0126] Outros aspectos da presente revelação referem-se à sinalização de amostras de evasão em exemplos em que a sinalização implícita de evasão é usada. Por exemplo, em JCTVC-Q0094, para a técnica de evasão implícita acima descrita, o tamanho da paleta é aumentado em um e o último índice na paleta expandido é atribuído para indicar se uma amostra é codificada como uma amostra de evasão. Se a codificação binária truncada é utilizada para codificar os índices, o último índice pode usar mais do que um bit do índice de zero. Do mesmo modo, se outra estratégia de codificação de comprimento variável é utilizada, a diferença de comprimentos pode ser ainda maior.
[0127] Tipicamente, para determinados tamanhos do bloco, pode haver mais amostras que são codificadas como amostras de evasão do que os blocos de outros tamanhos. Para alavancar esta relação para melhorar a codificação dos índices, codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para atribuir o índice zero de uma paleta para o índice usado para indicar uma amostra de evasão para blocos que são susceptíveis de ter mais pixels codificados como um escapar amostra. Para os outros blocos que podem ter relativamente menos amostras codificadas como amostras de evasão, codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para pode seguir o atual regime de atribuição de maior índice da paleta expandida para indicar uma amostra de evasão.
[0128] Em um exemplo para fins de ilustração, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para atribuir um índice de zero ao índice usado para indicar uma amostra de evasão para blocos de dados de 32 x 32 e abaixo. Nesse exemplo, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para atribuir a mais alta (por exemplo, numericamente maior dos índices de paleta) índice para o índice usado para indicar uma amostra de evasão para 64 x 64 blocos e maiores.
[0129] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para implementar a mesma regra de atribuição de índices de evasão para cada tamanho de bloco a priori. Em outro exemplo, um índice regra de atribuição de evasão pode ser assinalado de forma explícita em um conjunto de parâmetros de vídeo (VPS), conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS), cabeçalho de fatia, em um nível de bloco de pixels adjacentes ou em outro lugar.
[0130] Outros aspectos da presente revelação referem-se à sinalização de amostras de evasão em exemplos em que a sinalização explícita de evasão é usada. No caso da sinalização explícita evasão, o modo de evasão pode ser sinalizado com um indicador. De acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar contexto adaptativamente os indicadores de evasão com base no tamanho do bloco. Por exemplo, os contextos podem ser concebidos para codificar indicadores de evasão, a fim de explorar a relação que, para determinados tamanhos do bloco, pode haver mais amostras codificadas usando uma amostra de evasão em relação a outros tamanhos de bloco. Nesse caso, o contexto para a indicador pode depender do tamanho do bloco. Além disso, em alguns exemplos, um tamanho de paleta pode ter alguma correlação com a quantidade/número de amostras de evasão para ser assinalado na CU. Portanto, o contexto pode depender do tamanho da paleta ou se o tamanho da paleta é igual ao tamanho máximo paleta (ou não igual ao tamanho máximo de paleta).
[0131] Outros aspectos dessa revelação referem-se à sinalização valores de sequência de execução de sequências de execução de índices codificados usando o modo de paleta de Valor. Por exemplo, no documento de apresentação padrão de Guillaume Laroche et al, “AHG10: Run Coding for Palette Mode”, JCTVC-Q0066, Valencia, ES, 27 de março-04 de abril de 2014 (JCTVC-Q0066), propõe-se que para cada bloco codificado utilizando uma paleta, um índice- limite pode ser sinalizada. Se o índice sendo codificado no modo de valor for maior do que ou igual ao índice de limiar, nenhuma sequência de execução é sinalizada para o modo de Valor. Essa revelação pode referir-se a este método como “Sequência de Execução Limitada”.
[0132] De acordo com aspectos da presente revelação, podem ser feitas modificações ao processo descrito no Q0066. Em um primeiro exemplo, os primeiros índices indicados pelo elemento de sintaxe num_skip, uma sequência de execução é sempre sinalizado. Em alguns exemplos, o elemento de sintaxe num_skip é igual a dois, para sequência de execução é sempre um sinal para os índices de zero e um. O valor indicado pelo elemento de sintaxe num_skip podem ser conhecidos por ambos o codificador de vídeo 20 e decodificador de vídeo 30 a priori (por exemplo, pré-determinada para os codificadores de vídeo), ou pode ser sinalizado explicitamente no conjunto de parâmetros de vídeo (VPS), conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS), cabeçalho de fatia, em um nível de bloco de pixels adjacentes ou em outro lugar.
[0133] Em um segundo exemplo, se o tamanho da paleta estiver abaixo de um limite de tamanho de paleta particular, o limiar de índice não é sinalizado e a sequência de execução é sinalizada para cada índice. O limite de tamanho da paleta pode ser conhecido pelo codificador de vídeo 20 e pelo decodificador de vídeo 30 a priori ou podem ser sinalizados explicitamente no conjunto de parâmetros de vídeo (VPS), no conjunto de parâmetros de sequência (SPS), no conjunto de parâmetros de imagem (PPS), no cabeçalho de fatia, em um nível de bloco de pixels adjacentes ou em outro lugar.
[0134] Em um terceiro exemplo, um indicador pode ser sinalizado para cada bloco onde o tamanho de paleta é maior do que o limite de tamanho de paleta, para indicar se o limiar do índice é sinalizado. O indicador pode ser assinalado apenas para determinados tamanhos de bloco e/ou tamanhos de paleta. Se o limite de índice não é sinalizado, o sequência de execução é sinalizado para todos os índices. Em um exemplo alternativo, em vez de sinalizar um indicador explícito, um limite de índice de um tamanho da paleta é sinalizada para indicar que sequência de execução é sinalizada para todos os índices.
[0135] Em um quarto exemplo, binarização truncada (por exemplo, codificação binária truncada como descrito em US Pedido Provisional dos EUA N° 62/002.054, depositado em 22 de maio de 2014) pode ser utilizada para codificar o índice de limiar para um bloco, se o tamanho da paleta está acima do limiar de tamanho de paleta. Se um indicador explícito como no terceiro exemplo acima é sinalizado, o valor máximo para binarização é truncado pode ser (tamanho de paleta atual - num_skip). Se nenhum indicador explícito estiver sendo enviado, o valor máximo para binarização truncada pode ser (tamanho de paleta atual - num_skip + 1).
[0136] Em um quinto exemplo, um valor de sequência de execução pode ser codificado após o rearranjo, reordenamento ou re-mapeamento de índice de paleta. Por exemplo, alguma paleta de técnicas de codificação pode ser utilizada para os índices de o grupo ter mais longas tiragens de índices. Em um exemplo, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para executar uma verificação adaptativa de índices ou aplicar uma transformada de Burrows Wheeler.
[0137] Em um sexto exemplo, o índice de limiar pode ser assinalado como (índice de limiar de tamanho de paleta) nos casos em que o indicador explícito descrito acima em relação com o terceiro exemplo é sinalizado. De modo semelhante, o índice de limiar pode ser assinalado como (paleta - tamanho + 1 - índice - limiar) nos casos em que um indicador explícito não é sinalizado. Em alguns casos, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para codificar o índice de limiar ou (índice de limiar de tamanho de paleta) com base no tamanho de bloco e/ou o tamanho da paleta. Em alguns exemplos, uma estratégia semelhante pode ser usada em casos em que um indicador explícito não é sinalizado.
[0138] As técnicas de os seis exemplos acima descritos podem ser implementadas por um codificador de vídeo 20 e do decodificador de vídeo 30 individualmente ou em combinação. Além disso, as técnicas podem ser aplicadas seletivamente dependendo do tamanho do bloco e/ou o tamanho da paleta. Tal dependência do tamanho do bloco e/ou o tamanho da paleta podem ser conhecidos por ambos os codificador de vídeo 20 e decodificador de vídeo 30 a priori, ou pode ser sinalizado explicitamente no conjunto de parâmetros de vídeo (VPS), conjunto de parâmetros de sequência (SPS), parâmetro de imagem definido (PPS), o cabeçalho da fatia, em um nível de bloco de pixels adjacentes ou em outro lugar.
[0139] Em contraste com JCTVC-Q0066, de acordo com aspectos da presente revelação, as técnicas acima descritas podem ser normativas. Por exemplo, isto significa que um fluxo de bits válidos (por exemplo, um fluxo de bits que é decodificável por um decodificador em conformidade com um padrão em particular) não é permitido ter um índice para o qual sequência de execução não é mostrado para ocorrer em posições consecutivas e ser codificada utilizando o modo de Valor. Isto é, duas posições consecutivas com o mesmo valor do índice não podem ser codificadas de acordo com o modo de Valor. Essa restrição pode ser tratada como uma restrição normativa em um fluxo de bits. Ou seja, um fluxo de bits conformidade não deve conter dois ou mais pixels consecutivos codificados com o modo Valor ter valores de índice idênticos para os quais uma sequência de execução não é sinalizada. Isto permite a aplicação de todas as remoções de redundância descritas no Pedido Provisório dos Estados Unidos No. 62/002.054, depositado em 22 de maio de 2014, assim como a remoção dos assim chamados valores de índice impossíveis descrito em C. Gisquet et al. “AHG10 : Palette Index Coding, “JCTVC-Q0064, Valencia, ES, 27 de março-04 de abril de 2014 (JCTVC- Q0064).
[0140] Se o modo de Sequência de Execução de Transição também for utilizado, a técnica de Sequência de execução limitada pode ser estendida também para o modo de sequência de execução de transição. Nesse caso, se o modo for Sequência de Execução de Valor ou Transição e o índice paleta (para o modo Valor) ou índice paleta inferido (para o modo de sequência de execução de transição) estiver acima do limite de índice, nenhum sequência de execução é sinalizada e a mesma restrição de fluxo de bits normativa pode ser aplicada como descrito acima.
[0141] Outros aspectos dessa revelação referem-se à codificação de um valor de sequência de execução que indica um comprimento de sequência de execução de uma sequência de execução de índices de paleta. No exemplo, as técnicas podem ser usadas para codificar um valor de sequência de execução de um índice codificado utilizando o modo de valor.
[0142] Por exemplo, em alguns exemplos, três indicadores codificados contexto podem ser utilizados para a codificação de um valor de sequência de execução no modo Valor. Em tais exemplos, os três indicadores contexto codificado podem incluir uma indicador maior do que zero, que indica se o valor de sequência de execução é maior do que zero, um maior do que um indicador que indica se o valor de sequência de execução é maior do que um, e uma maior do que dois indicadores que indica se o valor de sequência de execução é maior do que dois. Em alguns exemplos, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para codificar cada um dos três indicadores, utilizando um único contexto.
[0143] No entanto, o uso de um único contexto pode exigir que o codificador de vídeo 20 e o decodificador de vídeo 30 atualizem o modelo de probabilidade associado com o contexto após a codificação de cada um dos indicadores. Além disso, o processo de atualização probabilidade acima pode introduzir atrasos no processo de codificação. Em um exemplo para fins de ilustração, três caixas de usar o mesmo modelo de contexto (por exemplo, CTX (0)) com a finalidade de codificação de contexto adaptativo. Nesse exemplo, um primeiro binário pode usar CTX (0) para determinar um modelo de probabilidade para a codificação. O primeiro valor binário influencia o modelo de probabilidade associada com CTX (0). Consequentemente, uma atualização de probabilidade é realizada antes da codificação do segundo binário com CTX (0). Uma atualização probabilidade adicional também é realizada antes da codificação do terceiro binário com CTX (0). Desta forma, a probabilidade de atualização pode introduzir atraso no ciclo de codificação.
[0144] Além disso, a correlação entre o primeiro binário, segundo binário, e o terceiro binário de um valor de sequência de execução pode ser insuficiente para justificar o tempo e recursos computacionais associados com a atualização do modelo de probabilidade. Isto é, um benefício potencial de codificação adaptativa de contexto é a capacidade de adaptar um modelo de probabilidade com base em binários previamente codificados (dado o mesmo contexto). Se o valor de um primeiro binário, no entanto, tem pouca influência sobre o valor de um binário posterior, pode haver pouco o ganho de eficiência associada com a atualização de probabilidade. Assim, binários exibindo uma baixa correlação podem não se beneficiar de codificação adaptativa de contexto tanto quanto os binários com correlações relativamente mais elevadas.
[0145] De acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para determinar um contexto para codificar um valor de sequência de execução com base no índice do valor de sequência de execução. Adicionalmente ou alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para determinar um contexto para codificar um valor de sequência de execução com base em um tamanho de bloco de um bloco a ser codificada, ou uma paleta de tamanho de uma paleta para o bloco a ser codificado. Em alguns exemplos, os aspectos desta revelação incluem o uso de vários contextos para codificar um valor de sequência de execução.
[0146] Em um exemplo, de acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para utilizar sete contextos para codificar um valor de sequência de execução. Por exemplo, sete contextos podem ser definidos para a codificação de um indicador que indica que um valor de sequência de execução é maior do que zero. Este exemplo está ilustrado na Tabela 1 abaixo:TABELA 1- SETE CONTEXTOS PARA SEQUÊNCIA DEEXECUÇÃO DE CODIFICAÇÃO COM BASE NO ÍNDICEEmbora o exemplo da tabela 1 ilustre sete contextos, em outros exemplos, um número de contextos alternativos pode ser definido com base em um valor de índice de evasão ser codificada. Tabela 1 pode-se supor que o elemento de sintaxe MAX_PLT_SIZE é de 32.
[0147] Em outro exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar dois contextos para codificar os valores de sequência de execução para o modo de valor com base no valor de índice. Por exemplo, para um índice de modo Valor 0, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto executar (0) para codificar dados que indica o valor de sequência de execução. Nesse exemplo, para todos os outros índices de Valor, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto de sequência de execução (1) com dados de código que indica o valor de sequência de execução.
[0148] Em outro exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar dois contextos para codificar os valores executados no modo de valor com base no valor do índice. Nesses exemplos, para índices de valor 0 e 1, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto executar (0) para codificar dados que indica o valor de sequência de execução. Para índices de valor maior que 1, o codificador de vídeo 20 e decodificador de vídeo 30 podem ser configurados para usar o contexto de sequência de execução (1) com dados de código que indica o valor de sequência de execução.
[0149] Em ainda outro exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar três contextos para codificar os valores executados no modo de valor com base no valor do índice. Por exemplo, para o índice de valor 0, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto executar (0) para codificar os dados que indica o sequência de execução. Para índices de valor de 1 e 2, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto de sequência de execução (1) para codificar os dados que indica o sequência de execução. Para índices de valor superior a 2, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto de sequência de execução (2) para codificar os dados que indica o valor de sequência de execução.
[0150] Em ainda outro exemplo, três contextos pode ser usado para codificar os valores executados no modo de valor com base no valor do índice. Por exemplo, para índices de valor 0 e 1, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto executar (0) para codificar dados que indica o valor de sequência de execução. Para índices de valor no intervalo de 2 a 5, inclusive, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto de sequência de execução (1) com dados de código que indica o valor de sequência de execução. Para índices de valor superior a 5, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto de sequência de execução (2) para codificar os dados que indicam o valor de sequência de execução.
[0151] Em outro exemplo, quatro contextos podem ser usados para codificar os valores são executados em modo Valor dependendo (por exemplo, com base em) o valor do índice. Por exemplo, para o índice de valor 0, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto executar (0) com dados de código que indica o valor de sequência de execução. Para índices de valor 1 e 2, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto executar (1) para codificar dados que indica o valor de sequência de execução. Para índices de valor na faixa de 3 a 6, inclusive, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto de sequência de execução (2) para codificar os dados que indicam o valor de sequência de execução. Para índices de valor superior a 6, codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para usar o contexto executar (3) para codificar dados que indica o valor de sequência de execução pode ser usado. Em alguns casos, qualquer combinação das técnicas acima pode ser utilizada para determinar contexto.
[0152] As técnicas acima descritas podem ser utilizadas para codificar qualquer combinação de posições de um valor submetido à binarização de sequência de execução. Por exemplo, como notado acima, um valor submetido à binarização de sequência de execução pode incluir uma primeira posição que indica se o valor de sequência de execução é maior do que zero; um segundo binário que indica se o valor de sequência de execução é maior do que um, uma terceira posição que indica se o valor de sequência de execução é maior do que dois, e quaisquer outras caixas necessários para representar o valor de sequência de execução. De acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para selecionar os contextos acima definidos para a codificação do primeiro binário do valor submetido à binarização de sequência de execução, o segundo binário do valor submetido à binarização de sequência de execução, o terceiro binário do valor submetido à binarização de sequência de execução, ou qualquer combinação dos mesmos. As técnicas também podem ser aplicadas a outras binarizações de um valor de sequência de execução.
[0153] De acordo com aspectos da presente revelação, o contexto pode ser baseado em um valor de índice efetivo ou um valor de índice ajustado. Por exemplo, em um exemplo, os contextos de sequência de execução podem depender do elemento de sintaxe adjusted_palette_index, em vez da sintaxe palette_index, em que o elemento de sintaxe adjusted_palette_index pode indicar um índice ajustado com base nas seguintes condições: Se (adjusted_palette_index> = adjustedRefIndex), então, palette_index = + 1 adjusted_palette_index Caso contrário, (palette_index= adjusted_palette_index) como descrito no Wei Pu et al, “SCCE3: Test B.12- Binarization of Escape Sample and Palette Index”, JCTVC- R0065, Sapporo, JP, 30 de junho a 09 de julho de 2014 (JCTVC-R0065). Isto é, de acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para determinar contexto para codificar um valor de sequência de execução com base em um índice de paleta sinalizado em um fluxo de bits (que pode estar associada com o elemento de sintaxe adjusted_palette_index) mais propriamente que o índice paleta realmente usado para codificar uma amostra em um bloco, nos casos em que um índice de paleta reinicializado é assinalado no fluxo de bits.
[0154] Em outro exemplo, se um código binário truncado é utilizado na codificação do índice, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para selecionar os contextos de sequência de execução com base nos primeiros ‘k’ bits do índice de sintaxe (por exemplo, tal como descrito, por exemplo, na Seção 9.3.3.x de JCTVC-R0065). Por exemplo, usando o código binário truncado, o elemento de sintaxe para representar um índice de paleta pode usar k bits ou k + 1 bits, com base no valor relativo do índice de paleta para a variável u, descrita a seguir (tal como descrito na Secção 9.3.3.x de JCTVC-R0065): A entrada para este processo é um pedido de binarização TB por um elemento de sintaxe com valor synVal, cMax. A saída desse processo é a binarização TB do elemento de sintaxe. Seja n = cMax + 1, k = floor (log2 (n)) de tal modo que 2k < n <2k+1 e deixe u = 2k+1 - n. Se synVal<u, a sequência binária TB é especificada pela representação binária de synVal com comprimento k. Caso contrário, a sequência binária TB é especificada pela representação binária de synVal + u, com comprimento k + 1.
[0155] Nesse exemplo, os contextos de sequência de execução dependem apenas dos primeiros k bits decodificados. Assim, por exemplo, o decodificador de vídeo 30 não precisa esperar para decodificar os possíveis k + 1 bits antes de se determinar os contextos.
[0156] Em outro exemplo, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para usar vários contextos com base no valor de índice, o tamanho da paleta de um bloco a ser codificado e/ou o tamanho do bloco a ser codificado. Se o modo Sequência de execução limitado descrito acima é utilizado para codificar um bloco, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para selecionar contexto com base no valor de índice, o tamanho do bloco, e/ou o limiar do índice superior que uma sequência de execução é não sinalizada.
[0157] Se o modo de Sequência de Execução de Transição também for utilizado, esta técnica pode ser estendida também para o modo de Sequência de Execução de Transição. Nesse caso, para o modo de Sequência de Execução de Transição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para determinar contextos para a codificação da sequência de execução com base no valor de índice, o tamanho do bloco, e/ou o limiar acima do qual o índice de sequência de execução não é sinalizado. Nesse caso, conjuntos separados de contextos podem ser usados para sequências de execução correspondentes para o modo de Valor e modo de Sequência de Execução de Transição.
[0158] Outros aspectos da presente revelação esta se relacionam com sequência de execução de codificação dos índices de paleta que são codificados utilizando mais do que um modo de paleta. Por exemplo, no modo CopyFromTop descrito em JCTVC-Q0094, não é possível copiar uma amostra codificada como uma amostra de evasão ou uma indicador de evasão a partir da linha. Um exemplo de duas fileiras de índices é mostrado na Tabela 2 abaixo:Tabela 2 - ÍNDICES EXEMPLARESonde os valores numéricos representam índices e ESC representa uma amostra codificada como uma amostra de evasão. Nesse exemplo, a partir da amostra mais à esquerda, no exemplo acima, como por JCTVC-Q0094, codificador de vídeo 20 pode sinalizar o modo CopyFromTop. O codificador de vídeo 20 pode também sinalizar um valor de sequência de execução de três, como valores de evasão de cópia ou indicadores não são permitidos. Assim, a amostra codificada como uma amostra de evasão termina a sequência de execução.
[0159] Documento de apresentação Padrão Jianqing Zhu et al, “AHG10: Modified Copy Above Mode for Palette Based Coding”, JCTVC-Q0174, Valencia, ES, 27 de março-04 de abril de 2014 (JCTVC-Q0174) descreve a permissão de cópia dos valores de evasão (por exemplo, os valores de pixel atual) em uma sequência de execução. No entanto, esta técnica requer que os valores associados com as amostras de evasão sejam idênticos.
[0160] De acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar os dados que indicam o modo mais do que uma paleta em uma sequência de execução de índices. Por exemplo, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para copiar indicadores de evasão (em sinalização explícita de evasão) ou um índice de evasão (na sinalização implícita de evasão) com outros índices que foram associados valores de cores de uma paleta. No que diz respeito ao exemplo da Tabela 2 acima, o codificador de vídeo 20 podem ser configurados para sinalizar o modo CopyFromTop seguido por dados que indica um valor de sequência de execução de seis. Esta técnica pode alcançar a vantagem de aumentar o tamanho de execuções, que pode resultar na melhoria da compressão de dados.
[0161] De acordo com aspectos desta revelação, durante o sequência de execução de índices codificado em relação aos índices de outra fileira, se uma amostra da sequência de execução tem uma amostra bem acima da amostra que é codificado como uma amostra de evasão, codificador de vídeo 20 e vídeo decodificador 30 podem ser configurados para inferir que a amostra está codificada como uma amostra de evasão. Nesse exemplo, o valor real da amostra pode ser assinalado na sequência da sequência de execução.
[0162] Em alguns exemplos, o codificador de vídeo 20 e do decodificador de vídeo 30 podem ser configurados para não utilizar o modo CopyFromTop para uma amostra se a amostra acima adjacente (por exemplo, a amostra localizada diretamente acima da amostra a ser codificada) está codificada como uma amostra de evasão . Nos casos em que são permitidos amostras codificadas como amostras de evasão para ser incluído em um sequência de execução associada com o modo de paleta CopyFromTop (como descrito acima) com algumas redundâncias associados sinalização do modo de evacuação podem ser removidos. Em um primeiro exemplo, de acordo com aspectos da presente revelação, se a amostra que se segue uma sequência de execução de índices tem uma amostra acima adjacente que é codificada como uma amostra de evasão, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para não codificar a sequência amostra como uma amostra de evasão. Nesse exemplo, a amostra não pode ser codificada como uma amostra de evasão, uma vez que de outro modo seriam incluídos no CopyFromTop sequência de execução. Nesse exemplo, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para ignorar a codificação de um indicador de evasão ou um índice de evasão, porque codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para inferir que a amostra não está codificada como uma amostra de evasão.
[0163] Pelas mesmas razões como no exemplo acima descrito, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para não codificar uma amostra utilizando o modo CopyFromTop após uma sequência de execução CopyFromTop. Deste modo, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para ignorar a codificação de um elemento de sintaxe relacionados com o modo (por exemplo, uma indicador que diferencia entre os modos CopyFromTop ou de valores), e o codificador de vídeo 20 e do decodificador de vídeo 30 podem ser configurados para inferir que a amostra é codificada no modo de Valor.
[0164] Em um segundo exemplo, se a última amostra incluída na sequência de execução CopyFromTop é uma amostra de evasão e o seguinte exemplo é codificado com o modo de Valor, um codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para ajustar o índice do modo de Valor (bem como o número máximo de possíveis índices que pode ser utilizado na binarização truncada para codificar o índice de valor), verificando o valor do índice da amostra acima adjacente ao exemplo seguinte. Nesse caso, se o pixel adjacente acima tiver um índice, em seguida, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para reduzir o índice do valor de um, se o valor do índice é maior do que o índice de cima. O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para reduzir o número máximo possível por um índex para codificar o índice. Na fase de reconstrução, decodificador de vídeo 30 pode verificar o valor do índice decodificado para determinar se o índice é maior ou igual ao índice adjacente acima, e, se assim for, aumentar o valor decodificado por um.
[0165] A figura 2 é um diagrama de blocos que ilustra um exemplo de codificador de vídeo 20, que pode implementar as técnicas desta revelação. A figura 2 é proporcionada para fins de explicação e não deve ser considerada como limitadora da técnica como amplamente exemplificado e descrito na presente revelação. Para efeitos da explicação, esta revelação descreve um codificador de vídeo 20, no contexto da codificação HEVC. No entanto, as técnicas da presente revelação podem ser aplicáveis a outras normas ou métodos de codificação.
[0166] O codificador de vídeo 20 representa um exemplo de um dispositivo que pode ser configurado para executar a técnicas de codificação de vídeo baseado em paleta de acordo com vários exemplos descritos nesta revelação. Por exemplo, o codificador de vídeo 20 pode ser configurado para codificar seletivamente vários blocos de dados de vídeo, tais coma CU ou PUs na codificação HEVC, utilizando codificação baseada em paleta ou codificação baseada em não-paleta. Os modos de codificação baseados em não paleta podem se referir a vários modos de codificação temporal de predição inter, ou modos de codificação espacial de predição intra, tais como os vários modos de codificação especificados pelo Projeto HEVC 10. O codificador de vídeo 20, em um exemplo, pode ser configurado para gerar uma paleta tendo entradas que indiquem valores de pixel, selecionar os valores de pixel em uma paleta para representar valores de pixels de, pelo menos, alguns locais de pixels em um bloco de dados de vídeo, e o sinal de informação associando, pelo menos, alguns dos locais de pixel no bloco de dados de vídeo com entradas em uma paleta correspondente, respectivamente, aos valores de pixel selecionados na paleta. A informação sinalizada pode ser utilizada pelo decodificador de video 30 para decodificar os dados de vídeo.
[0167] No exemplo da figura 2, um codificador de vídeo 20 inclui uma unidade de processamento de predição 100, a memória de dados de vídeo 101, uma unidade de geração residual 102, uma unidade de processamento de transformada 104, uma unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de processamento de transformada inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 114, um armazenador temporário de imagem decodificada 116, e uma unidade de codificação de entropia 118. A unidade de processamento de predição 100 inclui uma unidade de processamento de predição inter 120 e uma unidade de processamento de predição intra 126. A unidade de processamento de predição inter 120 inclui uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostrada). O codificador de vídeo 20 inclui também uma unidade de codificação baseada em paleta 122 configurada para realizar vários aspectos das técnicas de codificação baseadas em paleta descritas na presente revelação. Em outros exemplos, o codificador de vídeo 20 pode incluir mais, menos, ou diferentes componentes funcionais.
[0168] A memória de dados de vídeo 101 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 101 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. O armazenador temporário de imagem decodificada 116 pode ser uma memória de imagem de referência, que armazena dados de referência de vídeo para utilização na codificação de dados de vídeo por um codificador de vídeo 20, por exemplo, em modos de codificação intra ou inter. A memória de dados de vídeo 101 e o armazenador temporário de imagem decodificada 116 podem ser formados por qualquer um de uma variedade de dispositivos de memória, tais como a memória dinâmica de acesso aleatório (DRAM), incluindo DRAM síncrona (SDRAM), RAM magneto (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 101 e o armazenador temporário de imagem decodificada 116 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 101 pode ser em chip com outros componentes de um codificador de vídeo 20, ou fora do chip em relação a esses componentes.
[0169] O codificador de vídeo 20 pode receber dados de vídeo. O codificador de vídeo 20 pode codificar cada CTU em uma fatia de uma imagem dos dados de vídeo. Cada uma das CTUs pode estar associada com a codificação de luminância de blocos de tamanho igual, árvores (CTBS) e correspondentes CTBs da imagem. Como parte de codificar uma CTU, unidade de processamento de predição 100 pode executar o particionamento quad-tree para dividir o CTBs da CTU em blocos progressivamente-menores. O bloco menor pode ser codificação de blocos de CUs. Por exemplo, a unidade de processamento de predição 100 pode dividir uma CTB associado com um CTU em quatro sub-blocos de tamanho igual, partição um ou mais dos sub-blocos em quatro sub-sub-blocos de tamanho igual, e assim por diante.
[0170] Codificador de vídeo 20 pode codificar as CUs de uma CTU para gerar representações codificadas da CUs (ou seja, codificados CUs). Como parte de um codificador de CU, unidade de processamento de predição 100 pode dividir os blocos de codificação associados com a CU entre um ou mais PU da CU. Assim, cada PU pode ser associada com um bloco de predição de luminância e blocos de predição croma correspondentes. O codificador de vídeo 20 e decodificador de vídeo 30 pode suportar PUs ter vários tamanhos. Tal como indicado acima, o tamanho de uma CU pode referir-se o tamanho do bloco de luminância de codificação da CU e o tamanho de uma PU pode referir-se ao tamanho de um bloco de predição de luminância da PU. Supondo-se que o tamanho de uma CU particular é 2Nx2N, codificador de vídeo 20 e decodificador de vídeo 30 pode suportar tamanhos de PU de 2Nx2N ou NxN para a predição intra e tamanhos PU simétricas de 2Nx2N, 2NxN, Nx2N, NxN, ou similar para a inter predição. O codificador de vídeo 20 e decodificador de vídeo 30 pode também apoiar particionamento assimétrica para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para, inter predição.
[0171] A unidade de processamento de predição inter 120 pode gerar dados de predição para uma PU realizando entre predição em cada PU de uma CU. Os dados de predição para a PU podem incluir blocos de predição de informação de PU e movimento para a PU. A unidade de predição inter 121 pode realizar diferentes operações para uma PU de uma CU dependendo se a PU é uma fatia em I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PU são intra previsto. Por isso, se a PU é uma fatia em que, a unidade de predição inter 121 não realiza entre a predição sobre a PU. Assim, para os blocos codificados na I-modo, o bloqueio previsto é formado usando a predição espacial dos blocos vizinhos anteriormente codificados dentro do mesmo quadro.
[0172] Se uma PU está em uma fatia P, a unidade de estimativa de movimento da unidade de processamento de predição inter 120 pode procurar as imagens de referência em uma lista de imagens de referência (por exemplo, “RefPicList0”) para uma região de referência para a PU. A região de referência para a PU pode ser uma região, dentro de uma imagem de referência, que contém blocos de amostra que melhor corresponde aos blocos de amostras de PU. A unidade de estimativa de movimento pode gerar um índice de referência que indica uma posição em RefPicList0 da imagem de referência, que contém a região de referência para a PU. Além disso, a unidade de estimativa de movimento pode gerar uma MV que indica um deslocamento espacial entre um bloco de codificação de PU e de uma localização de referência associado com a região de referência. Por exemplo, o MT pode ser um vetor bidimensional que proporciona um deslocamento a partir das coordenadas da imagem atual decodificada para coordenadas de uma imagem de referência. A unidade de estimativa de movimento pode produzir o índice de referência e o MV como a informação de movimento da PU. A unidade de compensação de movimento da unidade de processamento de predição inter 120 pode gerar os blocos de predição de PU com base em amostras reais ou interpolada no local de referência indicado por o vetor de movimento da PU.
[0173] Se uma PU está em uma fatia B, a unidade de estimativa de movimento pode realizar predição única ou predição dupla para a PU. Para executar predição única para a PU, a unidade de estimativa de movimento pode procurar as imagens de referência de RefPicList0 ou uma lista de imagens segunda referência (“RefPicList1”) para uma região de referência para a PU. A unidade de estimativa de movimento pode saída, como a informação sobre o movimento da PU, um índice de referência que indica uma posição em RefPicList0 ou RefPicList1 da imagem de referência que contém a região de referência, uma MV que indica um deslocamento espacial entre um bloco de predição da PU e um local de referência associado com a região de referência, e um ou mais indicadores de direção predição que indicam se a imagem de referência é em RefPicList0 ou RefPicList1. A unidade de compensação de movimento da unidade de processamento de predição inter 120 pode gerar os blocos de predição de PU com base, pelo menos em parte, em amostras reais ou interpoladas na região de referência indicado por o vetor de movimento da PU.
[0174] Para executar predição inter bidirecional para uma PU, a unidade de estimativa de movimento pode procurar as imagens de referência em RefPicList0 para uma região de referência para a PU e pode também procurar as imagens de referência em RefPicList1 para outra região de referência para a PU. A unidade de estimativa de movimento pode gerar índices de imagem de referência que indicam as posições em RefPicList0 e RefPicList1 das imagens de referência que contêm as regiões de referência. Além disso, a unidade de estimativa de movimento pode gerar MVs que indicam deslocamentos espaciais entre a localização de referência associada com as regiões de referência e um bloco de amostras de PU. A informação de movimento da PU pode incluir os índices de referência e as MVs da PU. A unidade de compensação de movimento pode gerar os blocos de predição de PU com base, pelo menos em parte, em amostras reais ou interpoladas nas regiões de referência indicados pelos vetores de movimento da PU.
[0175] De acordo com vários exemplos da presente revelação, o codificador de vídeo 20 pode ser configurado para executar a codificação baseada em paleta. No que diz respeito ao quadro HEVC, como um exemplo, as técnicas de codificação baseados em paleta pode ser configurado para ser utilizado como um modo de unidade de codificação (CU). Em outros exemplos, as técnicas de codificação baseados em paleta pode ser configurado para ser utilizado como um modo de PU no âmbito da HEVC. Consequentemente, todos os processos revelados aqui descritos (ao longo desta descrição) no contexto de um modo de CU pode, adicionalmente ou alternativamente, aplicar-se a PU. No entanto, estes exemplos baseados em HEVC não devem ser considerados uma restrição ou limitação das técnicas de codificação baseados em paleta aqui descritos, uma vez que tais técnicas podem ser aplicadas a trabalhar de forma independente ou como parte de outros sistemas/normas existentes ou ainda a serem desenvolvidas. Nesses casos, o aparelho para codificação de paleta podem ser blocos quadrados, blocos retangulares ou mesmo regiões de forma não retangular.
[0176] A unidade de codificação baseada em paleta 122, por exemplo, pode realizar a decodificação baseado em paleta quando um modo de codificação baseados em paleta é selecionado, por exemplo, por um ou CU PU. Por exemplo, unidade de codificação baseada em paleta 122 pode ser configurada para gerar uma paleta tendo entradas que indiquem valores de pixel, selecionar os valores de pixel em uma paleta para representar valores de pixels de, pelo menos, algumas posições de um bloco de dados de vídeo, e o sinal de informação associando pelo menos algumas das posições de bloco de dados de vídeo com entradas na paleta correspondentes, respectivamente, aos valores de pixel selecionados. Embora as várias funções sejam descritas como realizadas pela unidade de codificação baseada em paleta 122, alguns ou todas as tais funções podem ser realizadas por outras unidades de processamento, ou uma combinação de unidades de processamento diferentes.
[0177] De acordo com aspectos da presente revelação, a unidade de codificação baseada em paleta 122 pode ser configurada para realizar qualquer combinação das técnicas de codificação de paleta aqui descritas. Por exemplo, como descrito em relação às figuras 4-7 abaixo, de acordo com aspectos da presente revelação, a unidade de codificação baseada em paleta 122 pode ser configurado para reinicializar uma paleta de predição para a construção de uma paleta de um bloco de dados de vídeo baseado em um ou mais blocos de outra fileira. Por exemplo, como aqui descrito, unidade de codificação baseada em paleta 122 pode determinar um primeiro paleta para um primeiro bloco de dados de vídeo que está localizado em uma primeira fila de blocos. A unidade de codificação baseada em paleta 122 pode também gerar uma paleta de predição quando se codifica um ou mais outros blocos na primeira fileira. Após a codificação de um bloco em uma segunda fileira, unidade de codificação baseada em paleta 122 pode reinicializar a paleta de predição para determinar uma paleta do bloco na segunda fila com base nas entradas da primeira paleta.
[0178] Em outro exemplo, a unidade de codificação baseada em paleta 122 pode ser configurada para codificar uma sequência de execução de índices que inclui amostras codificadas usando mais do que um modo de paleta. Por exemplo, a unidade de codificação baseada em paleta 122 pode determinar os índices de paleta de uma primeira fileira de um bloco de dados de vídeo, em que os índices de paletas incluem um ou mais índices que são associados com um valor de cor na paleta e um elemento de sintaxe que não está associado com um valor de cor na paleta. A unidade de codificação baseada em paleta 122 pode também codificar uma sequência de execução de índices de paleta de uma segunda fileira do bloco de dados de vídeo em relação aos índices de paleta da primeira fileira, onde a sequência de execução inclui um ou mais índices que são associados com um valor de cor na paleta e o elemento de sintaxe que não está associado com um valor de cor na paleta.
[0179] A unidade de processamento de predição intra 126 pode gerar dados de predição para uma PU pela realização de predição intra na PU. Os dados de predição para a PU pode incluir blocos de predição para a PU e vários elementos de sintaxe. A unidade de processamento de predição intra 126 pode executar predição intra na PU em fatias I, fatias P e fatias B.
[0180] Para executar predição intra em PU, a unidade de processamento de predição intra 126 pode usar vários modos de predição intra para gerar vários conjuntos de dados de predição para a PU. A unidade de processamento de predição intra 126 pode usar amostras de blocos de amostras de PUs adjacente para gerar um bloco de predição para uma PU. A PU adjacente pode estar acima, acima e para a direita, de cima e para a esquerda, ou para a esquerda da PU, supondo uma ordem de codificação da esquerda para a direita, de cima para baixo para PU, CUs e CTUs. A unidade de processamento de predição intra 126 pode usar vários números de modos de predição Intra, por exemplo, 33 direcionais modos de predição intra. Em alguns exemplos, o número de modos de predição intra pode depender do tamanho da região associada com a PU.
[0181] A unidade de processamento de predição 100 pode selecionar os dados de predição para PUs de uma CU entre os dados de predição gerados pela unidade de processamento de predição inter 120 para as PUs ou os dados de predição gerados pela unidade de processamento de predição intra 126 para as PUs. Em alguns exemplos, a unidade de processamento de predição 100 seleciona os dados de predição para a PUs da CU com base em métricas/taxa de distorção dos conjuntos de dados de predição. Os blocos de predição dos dados de predição selecionados podem ser aqui referidos como os blocos de predição selecionados.
[0182] A unidade de geração residual 102 pode gerar, com base no bloco de codificação de luma, Cb e Cr de uma CU e o bloco de predição selecionado de luma, Cb e Cr das PUs da CU, blocos residuais de luma, Cb e Cr da CU. Por exemplo, a unidade de geração residual 102 pode gerar os blocos residuais da CU de tal forma que cada amostra nos blocos residuais tem um valor igual a diferença entre uma amostra em um bloco de codificação da CU e uma amostra correspondente de um bloco de predição selecionado correspondendo de uma PU da CU.
[0183] A unidade de processamento de transformada 104 pode executar o particionamento quadtree para dividir os blocos residuais associados a CU para transformar blocos associados com TUs da CU. Assim, uma TU pode ser associada com um bloco de transformada de luminância e dois blocos de transformada de croma. Os tamanhos e as posições da luminância e crominância blocos de transformada de TUs de uma CU podem ou não podem basear- se nos tamanhos e posições dos blocos de predição das PUs da CU. Uma estrutura quad-tree conhecida como “quadtree residual” (RQT) pode incluir os nós associados com cada uma das regiões. As TUs de uma CU podem corresponder aos nós folha da RQT.
[0184] A unidade de processamento de transformada 104 pode gerar blocos de transformada coeficiente para cada unidade de tradução de uma CU através da aplicação de uma ou mais transformações para os blocos de transformada de TU. A unidade de processamento de transformada 104 pode aplicar várias transformações para um bloco transformar associado a um TU. Por exemplo, a unidade de processamento de transformada 104 pode aplicar uma transformação de coseno discreta (DCT), transformar um direcional, ou transformar uma conceitualmente similar a um bloco de transformar. Em alguns exemplos, a unidade de processamento de transformada 104 não aplica transformações para um bloco de transformada. Nesses exemplos, o bloco de transformada pode ser tratado como um bloco de coeficiente de transformada.
[0185] A unidade de quantização 106 pode quantificar os coeficientes de transformada em um bloco de coeficientes. O processo de quantização pode reduzir a profundidade do bit associado com alguns ou todos os coeficientes de transformada. Por exemplo, um N-bit coeficiente de transformada pode ser arredondado para baixo para um m-bit coeficiente de transformada durante quantização, em que n é maior do que m. A unidade de quantização 106 pode quantizar um bloco de coeficientes associados com uma TU de uma CU com base em um valor de parâmetro de quantificação (QP) associado com a CU. O codificador de vídeo 20 pode ajustar o grau de quantização aplicada aos blocos de coeficientes associados com uma CU, ajustando o valor QP associada com a CU. Quantização pode introduzir a perda de informações, assim coeficientes de transformada quantificados podem ter precisão menor do que os originais.
[0186] A unidade de quantização inversa 108 e a unidade de processamento de transformada inversa 110 podem aplicar quantização inversa e transformada inversa a um bloco de coeficientes, respectivamente, para reconstruir um bloco residual do bloco de coeficientes. A unidade de reconstrução 112 pode adicionar o bloco residual reconstruído a partir de amostras correspondentes de um ou mais blocos de predição gerados pela unidade de processamento de predição 100 para produzir um bloco de transformada reconstruído associado a uma TU. Ao reconstruir blocos de transformada para cada CU das TUs desse modo, o codificador de vídeo 20 pode reconstruir os blocos de codificação da CU.
[0187] A unidade de filtro 114 pode executar uma ou mais operações de desblocagem para reduzir artefatos de bloqueio nos blocos de codificação associados a uma CU. O armazenador temporário de imagem decodificada 116 pode armazenar os blocos de codificação reconstruídos após a unidade de filtro 114 realiza a uma ou mais operações de desblocagem sobre os blocos de codificação reconstituídos. A unidade de processamento de predição inter 120 pode usar uma imagem de referência que contém os blocos de codificação reconstruídos para executar predição inter nas PUs de outras imagens. Além disso, a unidade de processamento de predição intra 126 pode usar blocos de codificação reconstruídas em armazenador temporário de imagem decodificada 116 para executar predição intra em outras PUs na mesma imagem como a CU.
[0188] A unidade de codificação de entropia 118 pode receber dados de outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação de entropia 118 pode receber blocos de coeficientes da unidade de quantização 106 e pode receber elementos de sintaxe da unidade de processamento de predição 100. A unidade de codificação de entropia 118 pode efetuar uma ou mais operações de entropia que codifica sobre os dados para gerar dados codificados por entropia. Por exemplo, a unidade de codificação de entropia 118 pode executar uma operação de codificação de extensão variável contexto adaptativo (CAVLC), uma operação CABAC, uma operação de codificação de comprimento variável/variável (V2V), uma operação de codificação aritmética binária de contexto adaptativo baseada em sintaxe (SBAC), uma operação de codificação de entropia de divisão de intervalo de probabilidade (PIPE), uma operação de codificação exponencial - Golomb, ou outro tipo de operação de codificação de entropia nos dados.
[0189] Para executar CABAC, a unidade de codificação de entropia 118 pode selecionar um modelo de contexto para aplicar a um determinado contexto para codificar símbolos a serem transmitidos. De acordo com aspectos da presente revelação, a unidade de codificação de entropia 118 pode ser configurada para usar o contexto com base no valor de índice do valor de sequência de execução sendo codificada. Por exemplo, a unidade de codificação de entropia 118 pode ser configurada para determinar um valor de sequência de execução que indica uma sequência de execução de comprimento de uma sequência de execução de um índice de paleta de um bloco de dados de vídeo. A unidade de codificação de entropia 118 pode ser configurada para determinar um contexto para a codificação de dados adaptativo contexto que representa o valor de sequência de execução com base no valor do índice de paleta.
[0190] O codificador de vídeo 20 pode emitir um fluxo de bits, que inclui dados codificados por entropia gerada pela unidade de codificação de entropia 118. Por exemplo, o fluxo de bits pode incluir os dados que representam uma RQT para uma CU.
[0191] A figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar 30 que é configurado para implementar as técnicas desta revelação. A figura 3 é proporcionada para fins de explicação e não é limitadora das técnicas como amplamente exemplificadas e descritas na presente revelação. Para efeitos da explicação, esta revelação descreve decodificador de vídeo 30, no contexto da codificação HEVC. No entanto, as técnicas da presente revelação podem ser aplicáveis a outras normas ou métodos de codificação.
[0192] O codificador de vídeo 30 representa um exemplo de um dispositivo que pode ser configurado para executar a técnicas de codificação de vídeo baseado em paleta de acordo com vários exemplos descritos nesta revelação. Por exemplo, o codificador de vídeo 30 pode ser configurado para decodificar seletivamente vários blocos de dados de vídeo, tais coma CU ou PUs nas HEVC de codificação, utilizando codificação baseada em codificação ou paleta com base não-paleta. Não paleta de modos de codificação com base pode referir-se a vários modos de codificação de predição inter, ou modos de codificação espacial de predição intra, tais como os vários modos de codificação especificados pelo Projeto HEVC 10. O decodificador de vídeo 30 temporais, em um exemplo, pode ser configurado para gerar uma paleta de ter entradas que indica valores de pixel, receber informações associar, pelo menos, alguns locais de pixel em um bloco de dados de vídeo com entradas na paleta, selecione os valores dos pixels na paleta com base nas informações, e reconstruir valores de pixel do bloco baseado em pixel selecionado valores na paleta.
[0193] No exemplo da figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 150, uma memória de dados de vídeo 151, uma unidade de processamento de predição 152, uma unidade de quantificação inversa 154, uma unidade de processamento de transformada inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 160, e uma imagem decodificada armazenador temporário unidade de processamento 162. A unidade de processamento de predição 152 inclui uma unidade de compensação de movimento 164 e uma unidade de processamento predição intra 166. O decodificador de vídeo 30 inclui também uma unidade de decodificação com base em paleta 165 configurada para realizar vários aspectos das técnicas de codificação baseadas em paleta descritas nesta revelação. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos ou diferentes componentes funcionais.
[0194] 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, para ser decodificado por os componentes do decodificador de vídeo 30. Os dados de vídeo armazenada na memória de dados de vídeo 151 podem ser obtidos, por exemplo, a partir de leitura por computador média de 16, por exemplo, a partir de uma fonte de vídeo local, como uma câmera, através de comunicação em rede com ou sem fio de dados de vídeo, ou acessando meios de armazenamento de dados físico. Vídeo memória de dados 151 pode formar uma imagem codificada armazenador temporário (CEC) que armazena os dados codificados de vídeo a partir de um fluxo de bits de vídeo codificado. O armazenador temporário de imagem 162 pode ser uma memória de imagem de referência que armazena dados de referência de vídeo para utilização na decodificação de dados de vídeo por decodificador de vídeo 30, por exemplo, nos modos de codificação intra ou inter. A memória de dados de vídeo 151 e o armazenador temporário de imagem decodificada 162 podem ser formados por qualquer um de uma variedade de dispositivos de memória, tais como a memória dinâmica de acesso aleatório (DRAM), DRAM síncrona incluindo (SDRAM), RAM magneto (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 151 e o armazenador temporário de imagem decodificada 162 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, memória de dados de vídeo 151 pode ser em chip com outros componentes do decodificador de vídeo 30, ou fora do chip em relação a esses componentes.
[0195] Um armazenador temporário de imagem codificada (CEC) pode receber e armazenar dados de vídeo (por exemplo, unidades NAL) de um fluxo de bits. A unidade de decodificação de entropia 150 pode receber dados de vídeo codificados (por exemplo, unidades NAL) do CPB e analisar as unidades NAL para decodificar elementos de sintaxe. A unidade de decodificação de entropia 150 pode decodificar por entropia os elementos de sintaxe codificados por entropia nas unidades NAL.
[0196] De acordo com aspectos da presente revelação, a unidade de decodificação de entropia 150 pode ser configurada para usar o contexto com base no valor de índice do valor de sequência de execução sendo codificada. Por exemplo, a unidade de decodificação de entropia 150 pode ser configurada para determinar um valor de sequência de execução que indica uma sequência de execução de comprimento de uma sequência de execução de um índice de paleta de um bloco de dados de vídeo. A unidade de decodificação de entropia 150 pode ser configurada para determinar um contexto para a codificação de dados adaptativo contexto que representa o valor de sequência de execução com base no valor do índice de paleta.
[0197] A unidade de processamento de predição 152, uma unidade de quantificação inversa 154, unidade de processamento de transformada inversa 156, unidade de reconstrução 158, e a unidade de filtro 160 podem gerar dados de vídeo decodificados com base nos elementos de sintaxe extraídos a partir do fluxo de bits.
[0198] As unidades NAL do fluxo de bits podem incluir unidades de fatia codificada NAL. Como parte de decodificar o fluxo de bits, a unidade de decodificação de entropia 150 pode extrair e decodificar por entropia os elementos de sintaxe das unidades NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe que pertencem a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica uma PPS associada com uma imagem que contém a fatia.
[0199] Além de decodificar os elementos de sintaxe do fluxo de bits, decodificador de vídeo 30 pode executar uma operação de reconstrução em uma CU não- dividida. Para executar a operação de reconstrução em uma CU não-dividido, decodificador de vídeo 30 pode executar uma operação de reconstrução em cada TU da CU. Ao realizar a operação de reconstrução para cada TU da CU, decodificador de vídeo 30 pode reconstruir blocos residuais da CU.
[0200] Como parte de executar uma operação de reconstrução em um TU de uma CU, unidade de quantização inversa 154 pode inverter a quantização de blocos de coeficiente associado à TU. A unidade de quantificação inversa 154 pode utilizar um valor QP associado com a CU do TU para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa para unidade de quantificação inversa 154 para aplicar. Isto é, a taxa de compressão, isto é, a razão entre o número de bits utilizados para representar sequência original e o um compactado, pode ser controlada ajustando o valor do QP utilizado quando se quantifica os coeficientes de transformada. A taxa de compressão pode também depender do método de codificação empregue entropia.
[0201] Após a unidade de quantização inversa 154 quantificar inversamente um bloco de coeficientes, a unidade de processamento de transformada inversa 156 pode aplicar um ou mais inversa transforma o bloco de coeficientes de forma a gerar um bloco residual associado à TU. Por exemplo, unidade de processamento de transformada inversa 156 pode aplicar uma DCT inversa, transformada inversa de número inteiro, transformada inversa de Karhunen-Loeve (KLT), transformada rotacional inversa, transformada direcional inversa, ou outra transformada inversa ao bloco de coeficientes.
[0202] Se uma PU é codificada utilizando a predição intra, a unidade de processamento de predição intra 166 pode executar predição intra para gerar blocos de predição para a PU. Predição intra unidade de processamento 166 pode usar um modo de predição intra para gerar a luma de predição, blocos Cb e Cr de PU com base nos blocos de predição de espacialmente adjacente PUs. A unidade de processamento de predição intra 166 pode determinar o modo de predição para a intra PU com base em um ou mais elementos de sintaxe de fluxo de bits decodificados a partir do.
[0203] A unidade de processamento de predição 152 pode construir uma lista de primeira referência imagem (RefPicList0) e uma lista de imagens segunda referência (RefPicList1) com base em elementos de sintaxe extraídos do fluxo de bits. Além disso, se uma PU é codificada utilizando inter predição, a unidade de decodificação de entropia 150 pode extrair informações de movimento para a PU. Movimento unidade de compensação 164 pode determinar, com base na informação sobre o movimento da PU, uma ou mais regiões de referência para a PU. Movimento unidade de compensação 164 pode gerar, com base em amostras de blocos em um ou mais blocos de referência para a PU, luma de predição, blocos Cb e Cr para a PU.
[0204] A unidade de reconstrução 158 pode usar blocos de transformada de luma, Cb e Cr associados com as TUs de uma CU e blocos de predição de luma, Cb e Cr das PUs da CU, ou seja, quer sejam dados de predição intra ou dados de predição inter, conforme aplicável, para reconstruir os blocos de codificação de luma, Cb e Cr da CU. Por exemplo, a unidade de reconstrução 158 pode adicionar as amostras de blocos de transformada de luma, Cb e Cr em amostras de blocos de predição de luma, Cb e Cr correspondentes para reconstruir os blocos de codificação de luma, Cb e Cr da CU.
[0205] A unidade de filtro 160 pode executar uma operação de desblocagem para reduzir artefatos bloqueio associados com blocos de codificação de luma, Cb e Cr da CU. O decodificador de vídeo 30 pode armazenar blocos de codificação de luma, Cb e Cr da CU em armazenador temporário de imagem decodificada 162. O armazenador temporário imagem decodificada 162 pode fornecer imagens de referência para posterior compensação de movimento, a predição intra e apresentação em um dispositivo de exibição, como o dispositivo de exibição 32 da figura 1. Por exemplo, decodificador de vídeo 30 pode realizar, com base nos blocos de luma, Cb e Cr em armazenador temporário de imagem decodificada 162, as operações de predição intra ou de predição inter na PU de outra CU.
[0206] Como mencionado acima, o decodificador de vídeo 30 pode ser configurado para executar a codificação baseada em paleta. A unidade de decodificação baseada em paleta 165, por exemplo, pode realizar a decodificação baseado em paleta quando um modo de decodificação com base em paleta é selecionado, por exemplo, por um ou CU PU. Por exemplo, unidade de decodificação baseada em paleta 165 pode ser configurado para gerar uma paleta tendo entradas que indiquem valores de pixel, receber informação associando, pelo menos, alguns locais de pixels em um bloco de dados de vídeo com entradas na paleta, selecionar os valores pixel da paleta com base na a informação, e reconstituir valores de pixel do bloco baseado nos valores de pixel selecionado na paleta. Embora as várias funções sejam descritas como sendo realizadas pela unidade de decodificação com base em paleta 165, algumas ou todas as funções podem ser realizadas por outras unidades de processamento, ou uma combinação de unidades de processamento diferentes.
[0207] A unidade de decodificação baseada em paleta 165 pode receber paleta de codificação de informação de modo e executar as operações acima quando a paleta de codificação informações modo indica que o modo de paleta de codificação se aplica ao bloco. Quando a paleta de codificação de informação do modo indica que o modo de codificação de paleta não se aplica ao bloco, ou quando outra informação de modo indicar a utilização de um modo diferente, com base na unidade de decodificação baseada em paleta 165, decodifica o bloco de dados de vídeo usando um modo de codificação baseado em não-paleta, por exemplo, um modo de codificação, tal como um modo de codificação de predição inter ou de predição intra HEVC. O bloco de dados de vídeo pode ser, por exemplo, uma CU ou PU gerada de acordo com um processo de codificação HEVC.
[0208] De acordo com aspectos da presente revelação, a unidade de decodificação com base em paleta 165 pode ser configurada para realizar qualquer combinação das técnicas de codificação de paleta aqui descritas. Por exemplo, como descrito em relação às figuras 4-7 abaixo, de acordo com aspectos da presente revelação, a unidade de decodificação com base em paleta 165 pode ser configurado para reinicializar uma paleta de predição para a construção de uma paleta de um bloco de dados de vídeo baseado em um ou mais blocos de outra fileira. Por exemplo, como aqui descrito, unidade de decodificação com base em paleta 165 pode determinar um primeiro paleta para um primeiro bloco de dados de vídeo que está localizado em uma primeira fila de blocos. A unidade de decodificação com base em paleta 165 pode também gerar uma paleta de predição ao decodificar um ou mais outros blocos na primeira fileira. Após a codificação de um bloco em uma segunda fileira, a unidade de decodificação com base em paleta 165 pode reinicializar a paleta de predição para determinar uma paleta do bloco na segunda fila com base nas entradas da primeira paleta.
[0209] Em outro exemplo, como descrito em relação à figura 8 abaixo, a unidade de decodificação com base em paleta 165 pode ser configurada para decodificar uma sequência de execução de índices que inclui amostras codificadas usando mais de um modo de paleta. Por exemplo, a unidade de decodificação com base em paleta 165 pode determinar os índices de paleta de uma primeira fileira de um bloco de dados de vídeo, em que os índices de paletas incluem um ou mais índices que são associados com um valor de cor na paleta e um elemento de sintaxe que não está associado com um valor de cor na paleta. A unidade de decodificação com base em paleta 165 pode também decodificar uma sequência de execução de índices de paleta de uma segunda fileira do bloco de dados de vídeo em relação aos índices de paleta da primeira fileira, onde a sequência de execução inclui um ou mais índices que são associados com um valor de cor na paleta e o elemento de sintaxe que não está associado com um valor de cor na paleta.
[0210] A figura 4 é um diagrama conceptual que ilustra um exemplo da determinação de uma paleta para a codificação de dados de vídeo, de acordo com as técnicas da presente revelação. O exemplo de figura 4 inclui um quadro 178 que possui uma primeira unidade de codificação (CU) 180 que está associado com as primeiras paletas 184 e uma segunda CU 188 que está associada com a segunda paleta 192. Tal como descrito em maior detalhe abaixo e de acordo com as técnicas desta revelação, segundo paletas 192 baseiam-se em primeiras paletas 184. A figura 178 também inclui o bloco 196 codificado com um modo de codificação de predição intra e bloco 200 que é codificado com um modo de codificação de predição inter.
[0211] As técnicas da figura 4 são descritas no contexto de um codificador de vídeo 20 (figura 1 e figura 2) e do decodificador de vídeo 30 (figura 1 e figura 3) e no que diz respeito ao padrão de codificação de vídeo HEVC para fins de explicação. No entanto, deve ser entendido que as técnicas desta revelação não se limitam, desta forma, e pode ser aplicada por outros processadores e/ou dispositivos de codificação de vídeo em outros processos e/ou padrões de codificação de vídeo.
[0212] De um modo geral, uma paleta refere-se a um número de valores de pixel que são dominantes e/ou representativos para uma CU atualmente sendo codificada, a CU 188 no exemplo da figura 4. A primeira paleta 184 e a segunda paleta 192 são mostradas como incluindo várias paletas. Em alguns exemplos, de acordo com aspectos da presente revelação, um codificador de vídeo (por exemplo, um codificador de vídeo 20 ou decodificador de vídeo 30) pode codificar paletas separadamente para cada componente de cor de uma CU. Por exemplo, o codificador de vídeo pode codificar 20 uma paleta para um componente de luminância (Y) de uma CU, outra paleta para uma componente de crominância (U) da CU, e ainda outra paleta para o componente de crominância (V) da CU. Nesse exemplo, as entradas de paleta Y podem representar valores Y de pixels da CU, entradas de paleta L podem representar valores U de pixels da CU, e as entradas da paleta V podem representar os valores v de pixels da CU.
[0213] Em outros exemplos, o codificador de vídeo 20 pode codificar uma única paleta para todos os componentes de cor de uma CU. Nesse exemplo, o codificador de vídeo pode codificar 20 uma paleta com uma entrada de ordem i que é um valor triplo, incluindo Yi, Ui, Vi e. Nesse caso, a paleta inclui valores para cada um dos componentes dos pixels. Consequentemente, a representação de paletas 184 e 192 como um conjunto de paletas possuindo várias paletas individuais é meramente um exemplo e não pretende ser limitativa.
[0214] No exemplo da figura 4, as primeiras paletas 184 incluem três entradas 202-206 que têm valor de índice de entrada 1, valor de índice de entrada 2 e valor de índice de entrada 3, respectivamente. Entradas 202-206 relacionar os valores de índice de valores de pixel, incluindo valor de pixel A, valor de pixel B, e valor de pixel C, respectivamente. Tal como aqui descrito, em vez de codificar os valores de pixel atual da primeira CU 180, um codificador de vídeo (por exemplo, um codificador de vídeo 20 ou decodificador de vídeo 30) podem utilizar uma codificação baseada em paleta para codificar os pixels do bloco utilizando os índices 1-3. Isto é, para cada posição de pixel da primeira CU 180, o codificador de vídeo 20 pode codificar um valor de índice para o elemento de imagem, em que o valor do índice é associado com um valor de pixel em uma ou mais das primeiras paletas 184. O decodificador de vídeo 30 pode obter o índice valores a partir de um fluxo de bits e reconstruir os valores de pixel usando os valores de índice e um ou mais das primeiras paletas 184. Assim, em primeiras paletas 184 são transmitidos pelo codificador de vídeo 20 em um fluxo de bits de dados de vídeo codificados para utilização pelo decodificador de vídeo 30 na decodificação baseado em paleta.
[0215] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem determinar segundas paletas 192 com base em primeiras paletas de 184. Por exemplo, o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode localizar um ou mais blocos a partir do qual as paletas de predição, nesse exemplo, as primeiras paletas 184, são determinadas. A combinação de entradas a ser utilizados para fins de predição pode ser referida como uma paleta de predição.
[0216] No exemplo da figura 4, as segundas paletas 192 incluem três entradas 208-212 tendo valor de índice de entrada 1, o valor de índice de entrada 2 e valor de índice de entrada 3, respectivamente. Entradas 208-212 relacionam os valores de índice de valores de pixel, incluindo valor de pixel A, valor de pixel B, e valor de pixel D, respectivamente. Nesse exemplo, o codificador de vídeo 20 pode codificar um ou mais elementos de sintaxe indicando quais as entradas de primeiras paletas 184 (representando uma paleta de predição, embora a paleta de predição possa incluir entradas de certo número de blocos) são incluídas nas segundas paletas 192.
[0217] No exemplo da figura 4, o um ou mais elementos de sintaxe são ilustrados como um vetor 216. Vector 216 tem um número de binários associados (ou bits), com cada bandeja que indica se a paleta de predição associado a esse binário é usado para predizer uma entrada de paleta atual. Por exemplo, o vetor 216 indica que as duas primeiras entradas de primeira paleta 184 (202 e 204) estão incluídas no segundo paletas 192 (um valor de “1” no vetor 216), enquanto que a terceira entrada de primeiras paletas 184 não está incluída em segundas paletas 192 (um valor de “0” no vetor 216). No exemplo da figura 4, o vetor é um vetor booleano. O vetor pode ser referido como um vetor de paleta de predição.
[0218] Em alguns exemplos, como mencionado acima, codificador de vídeo 20 e decodificador de vídeo 30 pode determinar uma paleta de predição (que também pode ser referido como uma lista tabela paleta de predição ou paleta de predição), quando a realização de paleta de predição. A paleta de predição pode incluir entradas de paletas de blocos de um ou mais vizinhos que são usados para predizer uma ou mais entradas de uma paleta para a codificação de um bloco atual. O codificador de vídeo 20 e decodificador de vídeo 30 pode construir a lista da mesma maneira. O codificador de vídeo 20 e vídeo decodificador 30 pode codificar dados (como vetor 216) para indicar quais entradas da paleta de predição devem ser copiados para uma paleta para a codificação de um bloco atual.
[0219] De acordo com aspectos da presente revelação, uma paleta de predição (tal como a paleta de predição associado com o vetor 216) pode ser reinicializada para gerar uma paleta associada com certos blocos de uma imagem e/ou bloco de pixels adjacentes de dados de vídeo. Por exemplo, como descrito em maior detalhe com relação aos exemplos das figuras 5-7 abaixo, uma paleta de predição para a construção de uma paleta de um bloco de dados de vídeo de uma primeira fileira pode ser reinicializado com base em um ou mais blocos de outra fileira. Em um exemplo, o codificador de vídeo 20 e do decodificador de vídeo 30 pode determinar uma primeira paleta para um primeiro bloco de dados de vídeo que está localizado em uma primeira fila de blocos. O codificador de vídeo 20 e decodificador de vídeo 30 pode também gerar uma paleta de predição quando codificar um ou mais outros blocos na primeira fileira. Após a codificação de um bloco em uma segunda fileira, codificador de vídeo 20 e decodificador de vídeo 30 pode reinicializar a paleta de predição para determinar uma paleta do bloco na segunda fila com base nas entradas da primeira paleta.
[0220] A figura 5 é um diagrama conceptual ilustrando blocos de pixels adjacentes exemplares, em conformidade com o padrão de codificação de vídeo de alta eficiência (HEVC). HEVC contém várias propostas para tornar o codec mais amigável paralelamente, incluindo processamento paralelo de blocos de pixels adjacentes e de frente de onda (WPP). HEVC WD10 define os blocos de pixels adjacentes como um número inteiro de CTBs que ocorrem conjuntamente em uma coluna e uma fileira, ordenados consecutivamente em uma varredura de rastreio de CTB do bloco de pixels adjacentes. A divisão de cada imagem em blocos pode ser referida como uma partição. Os blocos de pixels adjacentes em uma imagem são ordenados consecutivamente na varredura de rastreio de bloco de pixels adjacentes da imagem, como mostrado na figura 5.
[0221] Por exemplo, a figura 5 ilustra uma ordem de codificação exemplar de CTB para uma imagem 220 que é dividida em vários blocos de pixels adjacentes 222A, 222B, 222C, 222D, 222E, 222F, 222G, 222H, e 222I (coletivamente, “blocos de pixels adjacentes 222”), com limites de blocos de pixels adjacentes indicados pela fileiras grossas. Cada bloco quadrado na figura 220 representa um bloco de pixels associado a uma CTB. Os números nos blocos de pixels indicam posições das CTBs correspondentes (por exemplo, fontes de luz) em uma ordem de codificação do bloco de pixels adjacentes para imagem 220.
[0222] Tal como ilustrado no exemplo da figura 5, CTBs em bloco de pixels adjacentes 222A são codificados em primeiro lugar seguidos por CTBs em bloco de pixels adjacentes 222B, seguidos por CTBs em bloco de pixels adjacentes 222C, seguidos por CTBs em bloco de pixels adjacentes 222d, seguidos por CTBs em bloco de pixels adjacentes 222E, seguidos por CTBs em bloco de pixels adjacentes 222F, seguidos por CTBs em bloco de pixels adjacentes 222G, seguidos por CTBs em bloco de pixels adjacentes 222H, seguidos por CTBs em bloco de pixels adjacentes 222I. A ordem de processamento de blocos de pixels adjacentes 222 é geralmente ilustrada pelos números compreendidos em blocos de pixels adjacentes 222. Dentro de cada um dos blocos de pixels adjacentes 222, os CTBs são codificados de acordo com uma ordem de varredura de rastreio.
[0223] O número de blocos de pixels adjacentes e a localização dos seus limites podem ser definidos para toda a sequência ou mudou de imagem a imagem. Os limites de blocos de pixels adjacentes, de forma semelhante aos limites de fatia, cancelam as dependências de análise e predição de modo que uma peça pode ser processado de forma independente. No entanto, em alguns casos, filtros de malha (por exemplo, filtros de desblocagem e deslocamento adaptativo de amostra (SAO)) podem ainda cruzar os limites de blocos de pixels adjacentes.
[0224] O uso de blocos de pixels adjacentes pode aumentar o paralelismo, porque nenhuma (ou relativamente pouca) comunicação é necessária entre processadores ou núcleos de processador para a decodificação de entropia e reconstrução de compensação de movimento. Além disso, os blocos de pixels adjacentes podem apresentar uma eficácia relativamente melhor codificação quando comparados com fatias, porque blocos de pixels adjacentes permitirem formas de partição de imagem que contêm amostras com correlação potencialmente mais elevada do que as fatias. Blocos de pixels adjacentes também podem reduzir a fatia de cabeçalho em cima.
[0225] De acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem reinicializar uma paleta de predição para a determinação de uma paleta de um CTB com base em uma paleta de outro CTB. Em um exemplo para fins de ilustração, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para reinicializar uma paleta de predição para a determinação de uma paleta atual de uma atual CTB no início de cada fileira de CTB. O codificador de vídeo 20 e decodificador de vídeo 30 pode reinicializar a paleta de predição usando entradas de paleta de um primeiro CTB da fileira CTB acima do atual CTB.
[0226] Em um exemplo para fins de ilustração, depois da codificação CTB (4) (de bloco de pixels adjacentes 222A) utilizando codificação baseada em paleta, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para gerar uma paleta de predição para a determinação de uma paleta de CTB (5) (de bloco de pixels adjacentes 222A). Além disso, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para atualizar a paleta de predição Após a codificação de cada uma das CTB (5), CTB (6), e CTB (7) usando um modo de codificação baseado em paleta. Isto é, o codificador de vídeo 20 e do decodificador de vídeo 30 pode substituir ou adicionar uma ou mais entradas de paleta de predição após a codificação de cada uma das CTB (5), CTB (6), e CTB (7).
[0227] De acordo com aspectos da presente revelação, quando a codificação CTB (8) da linha de CTB abaixo da linha de CTB que inclui CTB (4) (supondo a ordem de varredura de rastreio), o codificador de vídeo 20 pode reinicializar a paleta de predição antes da geração de uma paleta para a codificação de CTB (8). Por exemplo, em vez de utilizar a paleta de predição como uma atualização anterior baseado em CTB (7), o codificador de vídeo 20 e do decodificador de vídeo 30 pode reinicializar a paleta de predição com base nas entradas de uma paleta associado com o primeiro CTB da fileira CTB acima adjacente, ou seja, a CTB (4). Desta maneira, a paleta de predição para gerar a paleta para CTB (8) pode ser mais propensos a ter cores semelhantes aos utilizados em (8) CTB, porque CTB (4) está localizada espacialmente mais perto de CTB (4) do que de CTB (7).
[0228] Como mencionado acima, o codificador de vídeo 20 e o decodificador de vídeo 30 podem reinicializar a paleta de predição com base nas entradas de uma paleta do primeiro CTB da linha adjacente acima de CTB, isto é, a CTB (4). De acordo com alguns exemplos, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para reinicializar a paleta de predição para CTB (8) (por exemplo, a paleta de predição usada para gerar uma paleta para codificar as amostras de CTB (8) através da substituição de entradas do preditor paleta com entradas da paleta utilizada para codificar CTB (4).
[0229] Em outro exemplo, de acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para reinicializar a paleta de predição com base em uma paleta de predição associada com CTB (4), que inclui entradas de paleta de CTB (4). Por exemplo, como notado acima, o codificador de vídeo 20 e do decodificador de vídeo 30 pode gerar uma paleta de predição (ou atualizar uma paleta de predição gerada anteriormente) após codificação CTB (4). O codificador de vídeo 20 e decodificador de vídeo 30 pode incluir entradas de CTB (4) na paleta de predição gerado ou atualizado. Nesse caso, o codificador de vídeo 20 e do decodificador de vídeo 30 pode reinicializar a paleta de predição com base nas entradas da paleta de predição Após a codificação de CTB (4) e antes da codificação de CTB (5). Nesse exemplo, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para reinicializar a paleta de predição de CTB (8) depois de terminar a codificação de CTB (4) e antes da codificação CTB (5).
[0230] Embora o exemplo acima seja descrito em relação à CTB (4) e CTB (5), o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para aplicar técnicas generalizadas, de um modo semelhante. Por exemplo, no que diz respeito ao exemplo de reinicialização da paleta de predição para (8) CTB, codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para gerar e/ou atualizar uma paleta de predição após codificação N CTBs da fileira de CTBs acima CTB (8) (por exemplo, a linha de cima adjacente de CTBs, que inclui CTB (4)). O codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para reinicializar a paleta de predição para CTB (8) com base na paleta de predição gerado (ou atualizados) e antes de iniciar o código do N + 1° CTB na linha de CTB acima de CTB (4). Consequentemente, em alguns exemplos, a paleta de predição utilizada para re- inicialização pode incluir entradas que são diferentes do (ou em adição a) as entradas da paleta para CTB (4).
[0231] Em um exemplo, o processo descrito acima para a CTB (4) pode ser realizada em vez disso para a CTB (5). Por exemplo, a paleta de predição gerada após CTB (5) pode ser usada em vez de CTB (4) no exemplo acima. Nesse caso, a CTB utilizada para o processo de reinicialização de paleta pode ser o mesmo CTB usado no processo de inicialização contexto CABAC aplicado para frentes de onda, o que potencialmente harmonizar paleta re- inicialização com o processo de inicialização do contexto.
[0232] Em alguns exemplos, codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para não reinicializar uma paleta de predição para uma CTB inicial que está localizado na fileira superior (supondo uma varredura de rastreio de cima para baixo) de uma imagem ou blocos de pixels adjacentes. Por exemplo, codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para não reinicializar uma paleta de predição para CTB (0) (de bloco de pixels adjacentes 222A), porque não há CTB localizado acima de CTB (0).
[0233] Embora os exemplos da figura 5 sejam descritos com relação aos CTBs para fins de ilustração, deve ser entendido que as técnicas podem ser estendidas a qualquer tipo de bloco de dados de vídeo.
[0234] A figura 6 é um diagrama conceitual que ilustra frentes de onda para o processamento de frente de onda paralela (WPP). HEVC define uma técnica WPP. Quando WPP é habilitada, cada fileira CTU de uma imagem é uma partição separada. Comparado com fatias e blocos de pixels adjacentes, no entanto, não há dependências de codificação são quebradas em limites de fileira CTU. Além disso, as probabilidades CABAC são propagadas a partir do segundo CTU da fileira anterior, para reduzir adicionalmente as perdas de codificação. Além disso, a WPP não altera a ordem regular de digitalização de rastreio. Como dependências não são rompidas, a perda taxa de distorção de um fluxo de bits WPP é pequena, em comparação com um fluxo contínuo de dados paralelos.
[0235] Quando WPP é habilitado, certo número de processadores até o número de fileiras de CTU pode trabalhar em paralelo para processar a fileira de CTU (ou linhas). As dependências da frente de onda, no entanto, não permitem que todas as fileiras de CTU comecem a decodificar no início da imagem. Consequentemente, as fileiras de CTU também não podem terminar a decodificação ao mesmo tempo no final da imagem. Isto introduz ineficiência paralelização que se tornam mais evidentes quando um grande número de processadores é utilizado. A figura 6 ilustra como a WPP processa fileiras de CTBs em paralelo, cada fileira de partida com as probabilidades CABAC disponíveis após o processamento da segunda CTB da fileira acima.
[0236] De acordo com aspectos da presente revelação, como descrito em maior pormenor a seguir, o codificador de vídeo 20 e o decodificador de vídeo 30 podem determinar se reinicializam uma paleta de predição com base nas frentes de onda ilustradas na figura 6.
[0237] A figura 7 é um diagrama conceptual que ilustra um exemplo de reinicialização de paleta de predição na presença de vários blocos de pixels adjacentes e frentes de onda, de acordo com as técnicas desta revelação. No exemplo da figura 7, linhas relativamente mais grossas sólidas podem indicar limites de blocos de pixels adjacentes, tais como limites de blocos de pixels adjacentes do bloco de pixels adjacentes 230. As fileiras tracejadas indicam limites de CTB. Por exemplo, fileira de CTB 232 indica uma fileira de blocos de pixels adjacentes da CTBs incluindo os dois CTBs mais acima do bloco de pixels adjacentes 230.
[0238] Algumas técnicas da presente invenção incluem reinicializar uma paleta de predição com base em uma sequência de execução de frentes de onda e/ou um número de peças a ser utilizada para codificar uma imagem, como imagem de 234. Por exemplo, de acordo com aspectos da presente revelação, o codificador de vídeo 20, e o decodificador de vídeo 30, podem reinicializar uma paleta de predição para primeiros CTBs de blocos de pixels adjacentes (tal como a CTB superior esquerda do bloco de pixels adjacentes 230) quando várias frentes de onda e vários blocos de pixels adjacentes são usados para codificar a imagem 234 (tal como os blocos de pixels adjacentes e frentes de onda mostrados nas figuras 5 e 6, respectivamente). No exemplo da figura 7, os círculos sólidos compreendidos dentro dos CTBs indicam um primeiro bloco de pixels adjacentes CTB dos blocos de pixels adjacentes para o qual reinicialização de paleta é realizada. O codificador de vídeo 20 e o decodificador de vídeo 30 podem redefinir uma paleta, reajustando o tamanho de paleta de predição para zero e não prevendo qualquer entrada de paleta de uma paleta a ser utilizada para codificar um bloco atual.
[0239] A figura 8 é um diagrama conceitual que ilustra um exemplo da determinação de índices para uma paleta de um bloco de pixels, de acordo com técnicas da presente revelação. Por exemplo, a figura 5 inclui um mapa 240 de índices que relacionam posições respectivas de pixels associados aos valores de índice para uma entrada de paletas de 244. Por exemplo, o índice 1 é associado com Valor A, índice 2 está associada com valor B, e índice 3 é associado com valor C. Além disso, quando as amostras de evasão são indicadas usando a sinalização implícita de evasão, o codificador de vídeo 20 e do decodificador de vídeo 30 pode também adicionar um índice adicional para paletas 244, ilustrado na figura 5 como índice de 4, o que pode indicar que as amostras de mapa 240 associados com o índice de 4 são amostras de evasão. Nesse caso, o codificador de vídeo 20 pode codificar (e decodificador de vídeo 30 pode obter, a partir de um fluxo de bits codificado) a 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 está incluído na paleta 244.
[0240] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar um mapa adicional indicando que as posições de pixel estão associadas com os valores de índice. Por exemplo, suponha que a entrada (i, j) no mapa corresponda à posição (i, j) de uma CU. O codificador de vídeo 20 pode codificar um ou mais elementos de sintaxe para cada entrada do mapa (ou seja, cada posição de pixel) que indica se a entrada tem um valor de índice associado. Por exemplo, o codificador de vídeo pode codificar 20 um indicador que tem um valor de um para indicar que o valor do pixel em (i, j) na localização de CU é um dos valores em paletas 244.
[0241] O codificador de vídeo 20 pode, em tal exemplo, também codificar um índice de paleta (mostrado no exemplo da figura 8, como valores 1-3) para indicar o valor de pixel na paleta e para permitir que o decodificador de vídeo reconstrua o valor de pixel. Nos casos em que paletas 244 incluem uma única entrada e valor de pixel associado, o codificador de vídeo 20 pode ignorar a sinalização do valor do índice. O codificador de vídeo 20 pode codificar o indicador para ter um valor de zero para indicar que o valor de pixel na posição (i, j) na CU não é um dos valores em paletas 244. Nesse exemplo, o codificador de vídeo 20 também pode codificar uma indicação do valor de pixel para utilização pelo decodificador de vídeo 30 na reconstrução do valor do pixel. Em alguns casos, o valor do pixel pode ser codificado de uma maneira com perdas.
[0242] 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 elevada de que posições de pixel adjacentes de uma CU tenham o mesmo valor de pixel ou pode ser mapeado para o mesmo valor de índice (no caso de codificação com perdas, em que mais do que um valor de pixel pode ser mapeado a um único valor do índice). Deste modo, o codificador de vídeo 20 pode codificar um ou mais elementos de sintaxe indicando um número de valores de índice consecutivos em uma dada ordem de pesquisa que têm o mesmo índice. Como notado acima, os índices de codificação deste modo pode ser referido como modo de paleta de Valor.
[0243] Como mencionado acima, sequências de execução podem ser usadas em conjunto com um modo de CopyFromTop ou de valor. Em um exemplo para fins de ilustração, considere as fileiras 264 e 268 do mapa 240. Supondo uma direção de varredura horizontal, da esquerda para a direita, a fileira 264 inclui três valores de índice de “1”, dois valores de índice de “2”, e três valores de índice de “3”. A fileira 268 inclui cinco valores de índice de “1”, dois valores de índice de “3”, e uma amostra que não está incluída nas paletas 244 (representado pelo índice 4, embora um indicador de nível de amostra de evasão possa ser utilizado para a sinalização explícita de evasão), que pode ser referida como uma amostra de evasão.
[0244] Nesse exemplo, o codificador de vídeo 20 pode usar o modo de CopyFromTop para codificar os dados para a fileira 268. Por exemplo, o codificador de vídeo 20 pode codificar um ou mais elementos de sintaxe indicando que a primeira posição da fileira 268 (a posição mais à esquerda da fileira 268) é a mesma que a primeira posição de fileira 264. O codificador de vídeo 20 pode também codificar um ou mais elementos de sintaxe indicando que a próxima sequência de execução de duas entradas consecutivas no sentido de exploração de fileira 268 são as mesmas que na primeira posição da fileira 264.
[0245] Após codificar um ou mais elementos de sintaxe indicando a primeira posição da fileira 264 e a sequência de execução de duas entradas (mencionado acima), o codificador de vídeo 20 pode codificar as quarta e quinta posições na fileira 268 (da esquerda para a direita), usando modo de valor. Por exemplo, codificador de vídeo 20 pode codificar um ou mais elementos de sintaxe indicando um valor de 1 para a quarta posição e um ou mais elementos de sintaxe indicando um sequência de execução de 1 (por exemplo, o modo de valor). Assim, codificador de vídeo 20 codifica estas duas posições sem referência a outra fileira.
[0246] De acordo com aspectos desta revelação, codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar em contexto um valor de sequência de execução para um índice codificado utilizando o modo de Valor com base no valor do índice. Por exemplo, como aqui descrito, um codificador de vídeo 20 e do decodificador de vídeo 30 pode usar um modo adaptativo contexto de um processo de codificação de CABAC para codificar dados que indica um valor de sequência de execução. De acordo com aspectos da presente revelação, o codificador de vídeo 20 e do decodificador de vídeo 30 pode ser configurado para determinar um contexto para a codificação de um dos dados com base no índice de evasão.
[0247] No exemplo da figura 8, o codificador de vídeo 20 e o decodificador de vídeo 30 codificam um índice de 1 para a quarta posição acima referida do mapa 40. O codificador de vídeo 20 e o decodificador de vídeo 30 podem também binarizar um valor de sequência de execução de 1 para a quarta posição do mapa de 240. Em uns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem gerar um indicador que indica que o valor de sequência de execução é maior do que zero, mas não maior do que um (que pode ser indicado, usando um indicador separado).
[0248] De acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem selecionar um contexto para a codificação do indicador maior do que zero com base no valor do índice de 1. Por exemplo, de acordo com alguns aspectos, o codificador de vídeo 20 e decodificador de vídeo 30 pode definir um conjunto de contextos para codificar o valor de sequência de execução. O conjunto de contextos pode incluir um contexto, dois contextos, os contextos, quatro contextos, ou mais contextos.
[0249] Em um exemplo, o codificador de video 20 e o decodificador de vídeo 30 podem ser configurados para selecionar contexto de sequência de execução (0) com base no índice de ser igual a zero. Nesse exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para selecionar contexto de sequência de execução (1) com base no índice ser qualquer valor diferente de zero. Com este exemplo, codificador de vídeo 20 e decodificador de vídeo 30 selecionar um contexto de sequência de execução de (1) com base no índice sendo 1 para a quarta posição do mapa 240.
[0250] Em outro exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para selecionar contexto de sequência de execução (0) com base no índice de ser igual a zero. O codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para selecionar contexto de sequência de execução (1) com base no índice de ser um. O codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para selecionar contexto de sequência de execução (2) com base no índice ser qualquer valor maior do que um. Com este exemplo, codificador de vídeo 20 e decodificador de vídeo 30 selecionar um contexto de sequência de execução de (1) com base no índice sendo 1 para a quarta posição do mapa 240.
[0251] Em outro exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para selecionar contexto de sequência de execução (0) com base no índice de ser igual a zero. O codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para selecionar contexto de sequência de execução (1) com base no índice de ser um ou dois. O codificador de vídeo 20 e decodificador de vídeo 30 pode ser configurado para selecionar contexto de sequência de execução (2) com base no índice é maior do que dois. Com este exemplo, codificador de vídeo 20 e decodificador de vídeo 30 selecionar um contexto de sequência de execução de (1) com base no índice sendo 1 para a quarta posição do mapa 240.
[0252] De acordo com aspectos da presente revelação, o contexto pode ser baseado em um valor de índice efetivo ou um valor de índice ajustado. Por exemplo, de acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador 30 de vídeo podem ser configurados para determinar contexto para codificar um valor de sequência de execução com base em um índice de paleta sinalizado em um fluxo de bits (que pode estar associada com o elemento de sintaxe adjusted_palette_index), em vez do índice de paleta atualmente usado para codificar uma amostra em um bloco, nos casos em que um índice de paleta reinicializado é assinalado no fluxo de bits.
[0253] Após a codificação da sequência de execução associada com a quarta posição do mapa 240, codificador de vídeo 20 pode então codificar a primeira posição com um valor de índice de 3 em fileira 268 usando o modo CopyFromTop relativo a fileira superior 264. Por exemplo, codificador de vídeo 20 pode sinalizar um modo CopyFromTop e uma sequência de execução de 1. Assim, codificador de vídeo 20 pode selecionar entre codificação de pixel ou índice de valores de uma fileira em relação a outros valores da fileira, por exemplo, usando uma sequência de execução, codificação de pixel ou índice de valores de uma fileira em relação aos valores de outra fileira (ou coluna), ou uma combinação destes. O codificador de vídeo 20 pode, em alguns exemplos, executar uma otimização de taxa/distorção para fazer a seleção.
[0254] Codificador de vídeo 20 pode então codificar a amostra de evasão para a amostra final de fileira 268 (da esquerda para a direita), que não está incluída nas primeiras paletas de 244. Por exemplo, codificador de vídeo 20 pode codificar a posição final da fileira 268 como uma amostra de evasão. Isto é, o codificador de vídeo pode codificar 20 uma indicação de que a posição final de fileira 268 é um exemplo de evasão (por exemplo, índice 4), bem como uma indicação do valor da amostra. Decodificador de vídeo 30 pode obter a sintaxe acima descrita a partir de um fluxo de bits codificado e reconstruir fileira 268 usando tal sintaxe.
[0255] Tal como acima referido, pode haver duas ou mais técnicas para codificar uma indicação de como a amostra codificada como uma amostra de evasão. Por exemplo, com a sinalização de evasão explícita, codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar um indicador evasão explícito para cada posição amostra de mapa 240. Se uma amostra em particular (como a amostra final de fileira 268) é codificada como uma amostra de evasão, codificador de vídeo 20 e decodificador de vídeo 30 pode codificar os dados que indica o valor da cor para a amostra particular. Se a amostra não é codificada como uma amostra de evasão, codificador de vídeo 20 e decodificador de vídeo 30 pode codificar dados adicionais para indicar se o modo é CopyFromTop ou valor, como um indicador SPoint.
[0256] Com a sinalização de evasão implícita, o codificador de vídeo 20 e o decodificador de vídeo 30 podem adicionar um índice adicional para paletas 244 (índice de entrada 4). O codificador de vídeo 20 e o decodificador de vídeo 30 podem usar o índice adicional para paletas 244 para indicar que uma amostra é codificada como uma amostra de evasão. O índice adicional, no entanto, não tem um valor de cor associada. Em vez disso, o codificador de vídeo 20 e decodificador de vídeo 30 também valores de cores de código para cada amostra que está relacionada com o índice adicional. Se a amostra não é codificada como uma amostra de evasão, codificador de vídeo 20 e decodificador de vídeo 30 pode codificar dados para indicar se o modo é CopyFromTop ou valor, como um indicador SPoint.
[0257] De acordo com aspectos da presente revelação, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar uma sequência de execução de índices usando o modo CopyFromTop que inclui uma ou mais amostras codificadas como amostras de evasão. Em alguns casos, as amostras codificadas como amostras de evasão podem ser referidas como “índices” incluídos no sequência de execução, apesar das amostras codificadas como amostras de evasão não ter um índice que mapeia para um valor de cor de uma paleta (por exemplo, o índice adicional é adicionado à paleta para fins de amostras codificadas, indicando que as amostras de evasão, mas não tem um valor de cor correspondente). Por exemplo, codificador de vídeo 20 e decodificador 30 de vídeo pode ser configurado para copiar indicadores de evasão (na sinalização de evasão explícita) ou um índice de evasão (na sinalização de evasão implícita) dentro de um sequência de execução de outros índices que têm associados valores de cor em uma paleta sejam copiadas com modo de paleta CopyFromTop. Os indicadores de evasão e o índice de evasão podem ambos ser referido como um elemento de sintaxe que não está associado com um valor de cor na paleta, porque nem a indicador nem o índice de evasão estão incluídos em uma paleta.
[0258] Assim, de acordo com aspectos da presente revelação, o codificador de vídeo 20, e o decodificador de vídeo 30 podem ser configurados para inferir que uma amostra atual incluída em um sequência de execução associada com o modo de paleta CopyFromTop (por exemplo, uma amostra a ser codificada em relação a uma amostra de outra fileira) é codificado como uma amostra de evasão se o exemplo acima, adjacente à amostra atual é codificado como uma amostra de evasão. O codificador de vídeo 20 e decodificador de vídeo 30 pode também codificar os valores de evasão relacionados para todas as amostras codificadas como amostra de evasão após a sequência de execução.
[0259] No que diz respeito à figura 8, a terceira amostra de fileira 270 é codificada como uma amostra de evasão e a terceira amostra de fileira 272 são codificadas como uma amostra de evasão (supondo uma ordem de varredura da esquerda para a direita). No exemplo da figura 8, codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar uma primeira amostra de fileira 270 usando o modo CopyFromTop. Além disso, codificador de vídeo 20 e decodificador de vídeo 30 pode codificar um valor de sequência de execução indica uma sequência de execução de comprimento de 15 para o modo CopyFromTop. A sequência de execução inclui tanto a terceira amostra de fileira 270 e a terceira amostra de fileira 272. Assim, codificador de vídeo 20 e decodificador de vídeo 30 pode codificar os dados que indica um valor de evasão (por exemplo, um valor de cor) para a terceira amostra de fileira 270. O codificador de vídeo 20 e decodificador de vídeo 30 pode também dados de código que indica um valor de evasão (por exemplo, um valor de cor) para a terceira amostra de fileira 272, que pode ser diferente que o valor evasão de fileira 270.
[0260] A figura 9 é um diagrama de fluxo que ilustra um processo exemplar para a determinação de uma paleta de predição, consistente com as técnicas da presente revelação. O processo da figura 9 é geralmente descrita como sendo realizada por um codificador de vídeo, o qual pode incluir um codificador de vídeo 20, um decodificador de vídeo 30, ou uma variedade de outros processadores.
[0261] No exemplo da figura 9, o codificador de vídeo pode determinar uma primeira paleta para um primeiro bloco de dados de vídeo que está localizado em uma primeira fila de blocos (290). Embora descrito em relação a “fileiras” para fins de ilustração, deve entender-se que as técnicas podem também ser aplicadas a colunas de blocos em casos em que as varreduras de codificador de blocos de vídeo na ordem da coluna. Em qualquer caso, a primeira paleta para o primeiro bloco pode incluir uma ou mais entradas de paleta cada um tendo um índice de paleta que está associado com um valor de cor para a codificação do bloco.
[0262] O codificador de vídeo também gera uma paleta de predição de gerar ou construção de, pelo menos, uma paleta de pelo menos um segundo bloco que está localizado na primeira fileira (292). Por exemplo, o codificador de vídeo pode gerar uma paleta de predição com base nas entradas da primeira paleta Após a codificação do primeiro bloco. O codificador de vídeo pode também atualizar a paleta de predição para cada bloco subsequentemente codificada da primeira fileira que é codificada utilizando a codificação baseada em paleta.
[0263] De acordo com aspectos da presente revelação, o codificador de vídeo pode reinicializar a paleta de predição para determinar uma terceira paleta de um terceiro bloco que está localizado em uma segunda fila de blocos (294). O terceiro bloco pode ser o primeiro bloco que está codificada na segunda fila de blocos. O terceiro bloco pode ser posicionado imediatamente abaixo do primeiro bloco.
[0264] O codificador de vídeo pode reinicializar a paleta de predição com base em entradas de paleta do primeiro bloco. De acordo com alguns exemplos, o codificador de vídeo pode ser configurado para reinicializar a paleta de predição substituindo entradas da paleta de predição com as entradas da primeira paleta. Em alguns exemplos, o codificador de vídeo pode ser configurado para reinicializar a paleta de predição usando a paleta de predição que é gerada após a codificação do primeiro bloco (por exemplo, antes da codificação de um segundo bloco na primeira fileira) ou uma paleta de preditor atualizado depois de codificação um ou mais outros blocos de primeira fileira.
[0265] O codificador de vídeo pode determinar a terceira paleta com base na paleta de predição reinicializada (296). Por exemplo, o codificador de vídeo pode determinar quais as entradas da paleta de predição para copiar para a terceira paleta e copiar as entradas relevantes. Em alguns exemplos, tal como aqui descrito, o codificador de vídeo pode determinar as entradas da paleta de predição de cópia com base em um vetor de predição.
[0266] O codificador de vídeo pode então codificar/decodificar o bloco usando a terceira paleta (298). Por exemplo, em casos em que o codificador de vídeo opera como um codificador de vídeo (tal como um codificador de vídeo 20), o codificador de vídeo pode codificar os dados que representam os índices do terceiro bloco utilizando a paleta determinada em um fluxo de bits codificado. Nos casos em que o codificador de vídeo opera como um decodificador de vídeo (tal como decodificador de vídeo 30), o decodificador de vídeo pode determinar os valores de amostra para os índices do terceiro bloco utilizando a terceira paleta.
[0267] A figura 10 é um diagrama de fluxo que ilustra um processo de exemplo para codificar um valor de sequência de execução de uma sequência de execução de índices de paleta, de acordo com as técnicas da presente revelação. O processo da figura 10 é geralmente descrita como sendo realizada por um codificador de vídeo, o qual pode incluir um codificador de vídeo 20, um decodificador de vídeo 30, ou uma variedade de outros processadores.
[0268] No exemplo da figura 10, o codificador de vídeo determina um valor de sequência de execução que indica um comprimento de um sequência de execução de um índice de paleta (310). Por exemplo, o codificador de vídeo pode codificar uma indicação de um índice de paleta, por exemplo, utilizando um modo de paleta de Valor. O codificador de vídeo pode também determinar o número de amostras consecutivas de uma ordem de leitura que têm o mesmo valor que o índice codificado. O número de amostras consecutivas pode ser o valor de sequência de execução.
[0269] O codificador de vídeo também determina contexto para codificação adaptativa de contexto de dados determinados que indique o valor de sequência de execução com base no índice de paleta (312). Por exemplo, o codificador de vídeo pode determinar um ou mais contextos de CABAC codificando o valor de sequência de execução determinado com base no índice de paleta. Em alguns exemplos, o codificador de vídeo pode selecionar a partir de uma pluralidade de contextos definidos para codificar o valor de sequência de execução.
[0270] O codificador de vídeo pode então codificar/decodificar os dados que indicam o valor de sequência de execução usando o contexto determinado (314). Por exemplo, em casos em que o codificador de vídeo opera como um codificador de vídeo (tal como um codificador de vídeo 20), o codificador de vídeo pode codificar os dados que indica o valor de sequência de execução em um fluxo de bits codificado. Nos casos em que o codificador de vídeo funciona como um decodificador de vídeo (como o decodificador de vídeo 30), o decodificador de vídeo pode analisar (decodificar) os dados que indica o valor executado a partir de um fluxo de bits codificado.
[0271] A figura 11 é um diagrama de fluxo que ilustra um exemplo de processo para a codificação de uma sequência de execução de índices codificados com mais do que um modo de codificação paleta, de acordo com as técnicas da presente revelação. O processo da figura 11 é geralmente descrita como sendo realizada por um codificador de vídeo, o qual pode incluir um codificador de vídeo 20, um decodificador de vídeo 30, ou uma variedade de outros processadores.
[0272] O codificador de vídeo determina índices de uma primeira fileira de um bloco que inclui índices associados a uma cor de uma paleta e um ou mais elementos de sintaxe não associada com uma cor da paleta (320). Por exemplo, o codificador de vídeo pode determinar amostras para as quais os índices de paleta são codificados e as amostras codificadas em modo de paleta de evasão.
[0273] O codificador de vídeo também pode codificar/decodificar uma sequência de execução de índices de uma segunda fila em relação aos índices de paleta de primeira fileira (322). Por exemplo, em casos em que o codificador de vídeo opera como um codificador de vídeo (tal como um codificador de vídeo 20), o codificador de vídeo pode codificar uma indicação do modo de CopyFromTop e uma indicação do comprimento de percurso da sequência de execução. Nos casos em que o codificador de vídeo opera como um decodificador de vídeo (tal como decodificador de vídeo 30), o decodificador de vídeo pode decodificar uma indicação do modo CopyFromTop e uma indicação de comprimento da sequência de execução. Em ambos os casos, o sequência de execução inclui tanto os índices que têm associado cores e um ou mais elementos de sintaxe não associados com uma cor da paleta, por exemplo, amostras codificadas, tanto Modo CopyFromTop e como amostras de evasão.
[0274] O codificador de vídeo pode então codificar/decodificar os dados que indica valores de cor para elementos de sintaxe não associados com uma cor da paleta (324). Por exemplo, em casos em que o codificador de vídeo opera como um codificador de vídeo (tal como um codificador de vídeo 20), o codificador de vídeo pode codificar os dados que indicam os valores de cor das amostras representadas por os elementos de sintaxe de um fluxo de bits codificado. Nos casos em que o codificador de vídeo opera como um decodificador de vídeo (tal como decodificador de vídeo 30), o decodificador de vídeo pode decodificar os dados que indicam os valores de cor das amostras representadas por os elementos de sintaxe de um fluxo de bits.
[0275] Deve ser entendido que todas as técnicas aqui descritas podem ser utilizadas individualmente ou em combinação. Esta revelação inclui vários métodos de sinalização que podem mudar dependendo de alguns fatores, tais como tamanho do bloco, o tamanho de paleta, tipo de fatia etc. Essa variação na sinalização ou inferir os elementos de sintaxe pode ser conhecido para o codificador e o decodificador a priori ou podem ser sinalizado explicitamente no conjunto de parâmetros de vídeo (VPS), parâmetro sequência set (SPS), conjunto de parâmetros de imagem (PPS), cabeçalho de fatia, em um nível de bloco de pixels adjacentes ou em outro lugar.
[0276] Deve ser reconhecido que, dependendo do exemplo, podem ser adicionados certos atos ou eventos de qualquer das técnicas aqui descritas podem ser realizadas em uma sequência diferente, fundidas, ou deixadas de fora (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, através do processamento de encadeamento múltiplo, processamento de interrupção, ou múltiplos processadores, em vez de sequencialmente. Além disso, enquanto certos aspectos da presente revelação são descritas como sendo realizada por um único módulo ou unidade para fins de clareza, deve-se compreender que as técnicas da presente revelação podem ser realizadas por uma combinação de unidades ou módulos associado com um codificador de vídeo.
[0277] Certos aspectos da presente revelação foram descritos no que diz respeito ao padrão HEVC desenvolvimento para fins de ilustração. No entanto, as técnicas descritas na presente revelação podem ser úteis para outros processos de codificação de vídeo, incluindo outros processos de codificação de vídeo padrão ou proprietários ainda não desenvolvidos.
[0278] As técnicas descritas acima podem ser realizadas por um codificador de vídeo 20 (FIGS. 1 e 2) e/ou decodificador de vídeo 30 (FIGS. 1 e 3), ambos os quais podem ser geralmente referido como um codificador de vídeo. Do mesmo modo, a codificação de vídeo pode referir- se a codificação de vídeo ou de decodificação de vídeo, como aplicável.
[0279] Embora as combinações particulares de vários aspectos das técnicas estão descritas acima, estas combinações são fornecidos meramente para ilustrar exemplos das técnicas descritas na presente revelação. Consequentemente, as técnicas desta revelação não devem ser limitadas a estes exemplos de combinações e pode abranger qualquer combinação concebível dos vários aspectos das técnicas descritas nesta revelação.
[0280] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementado em software, as funções podem ser armazenadas em ou transmitidos através de, como uma ou mais instruções de código, ou um meio de leitura por computador e executado por uma unidade de processamento com base em hardware. Os meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, o que corresponde a um meio tangível, como mídia de armazenamento de dados ou meios de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, meios legíveis por computador podem geralmente corresponder a (1) de armazenamento legível por computador tangível meios de comunicação que é não transitório ou (2) um meio de comunicação, tal como um sinal de onda ou transportador. Os meios de armazenamento de dados pode ser qualquer material disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções de código, e/ou estruturas de dados para a implementação das técnicas descritas na presente revelação. Um produto de programa de computador pode incluir um meio legível por computador.
[0281] A título de exemplo, e não como limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outro meio que pode ser usado para armazenar o código de programa desejado sob a forma de instruções ou estruturas de dados, e que pode ser acedido por um computador. Além disso, qualquer ligação é denominada adequadamente um meio legível por computador. Por exemplo, se as instruções são transmitidas de um site, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra óptica, par trançado, fileira de assinante digital (DSL) ou tecnologias sem fios, tais como infravermelhos, rádio e microondas, então o cabo coaxial, cabo de fibra óptica, par torcido, DSL, ou tecnologias sem fios, tais como infravermelho, rádio e microondas estão incluídos na definição de forma. Deve ser entendido, no entanto, que os meios de armazenamento legíveis por computador e mídias de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios de comunicação transitórios, mas são direcionados para não- transitória, meios de armazenamento tangível. Disco e disco, como aqui utilizado, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, onde discos geralmente reproduzem dados magneticamente, enquanto que os discos reproduzem dados opticamente com laseres. Combinações dos anteriores também devem ser incluídas dentro do âmbito dos meios de leitura por computador.
[0282] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, aplicação específica circuitos integrados (ASIC), arranjos de campos lógicos programáveis (FPGA), ou outra equivalente integrado ou circuitos lógicos discretos. Consequentemente, o termo “processador” tal como aqui utilizado pode referir-se a qualquer da estrutura precedente ou de qualquer outra estrutura adequada para aplicação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de hardware e/ou software dedicado configurados para a codificação e decodificação, ou incorporada em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0283] As técnicas da presente revelação podem ser implementadas em uma vasta variedade de dispositivos ou aparelhos, incluindo um monofone sem fios, um circuito integrado (IC) ou um conjunto de CIs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos na presente revelação para enfatizar os aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não precisam necessariamente de realização por diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecida por um conjunto de unidades de hardware operativas entre si, incluindo um ou mais processadores, conforme descrito acima, em conjunto com o software e/ou firmware adequado.
[0284] Vários exemplos foram descritos. Esses e outros exemplos estão no âmbito das reivindicações a seguir.

Claims (15)

1. Método de processar dados de vídeo, o método compreendendo: determinar (320) os índices de paleta de uma primeira fileira de um bloco de dados de vídeo, em que os índices de paleta correspondem a uma paleta para codificação do bloco de dados de vídeo, e em que os índices de paleta da primeira fileira incluem um ou mais índices que são associados com pelo menos um valor de cor na paleta e um índice que indica uma amostra de evasão que não é associada com um valor de cor na paleta; e codificar (322) uma sequência de execução de índices de paleta de uma segunda fileira do bloco de dados de vídeo em relação aos índices de paleta da primeira fileira, caracterizado pelo fato de que a sequência de execução inclui o um ou mais índices de paleta que são associados com pelo menos um valor de cor e o índice que indica uma amostra de evasão.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira fileira é posicionada acima da segunda fileira no bloco de dados de vídeo, e em que a codificação (322) da sequência de execução de índices de paleta da segunda fileira em relação aos índices de paleta da primeira fileira compreende codificar a sequência de execução de índices de paleta da segunda fileira utilizando um modo de paleta CopyFromTop.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de compreender adicionalmente: codificação de dados que indica pelo menos um primeiro valor de cor para o índice que indica uma amostra de evasão incluída na primeira fileira; e codificação de dados que indica pelo menos um segundo valor para o índice de cor que indica uma amostra de evasão incluída na sequência de execução, em que o pelo menos um segundo valor de cor é diferente do pelo menos um primeiro valor de cor.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que os índices de paleta da primeira fileira incluem um segundo índice que indica uma amostra de evasão e em que a sequência de execução inclui o segundo índice, o método compreendendo adicionalmente: codificar dados que indicam pelo menos um terceiro valor de cor para o segundo índice incluído na primeira fileira; e codificar dados que indicam o pelo menos um terceiro valor de cor para o segundo índice incluído na sequência de execução.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de compreender adicionalmente: codificar a paleta incluindo codificar o um ou mais índices que são associados com um valor de cor na paleta; adicionar o índice que indica uma amostra de evasão para a paleta, de modo que o índice que indica uma amostra de evasão possui o índice numericamente mais alto da paleta.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de compreender adicionalmente a determinação de um modo de paleta para um terceiro índice após a sequência de execução dos índices de paleta na segunda fileira com base em um modo de paleta de um índice adjacente acima para o terceiro índice.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que a determinação do modo de paleta para o terceiro índice compreende determinar um modo de paleta de Valor para o terceiro índice com base em uma amostra adjacente acima sendo uma amostra de evasão.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que determinar o modo de paleta de Valor para o terceiro índice compreende determinar o modo de paleta de Valor sem codificar uma indicação do modo de paleta de Valor a partir de um fluxo de bits.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a codificação compreende codificar, e em que a codificação da sequência de execução de índices de paleta da segunda fileira compreende: codificar os dados que indicam a paleta de cores; codificar um valor de cor para o índice que indica uma amostra de evasão; codificar os dados que indicam um modo de paleta para uma primeira amostra da segunda fileira.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a codificação compreende decodificar, e em que a decodificação da sequência de execução de índices de paleta da segunda fileira compreende: decodificar, a partir de um fluxo de bits codificado, os dados que indicam a paleta de cores; decodificar um valor de cor para o índice que indica uma amostra de evasão; decodificar os dados que indicam um modo de paleta para uma primeira amostra da segunda fileira; e determinar os valores de amostra para as amostras da sequência de execução utilizando a paleta de cores e o valor de cor para o índice que indica uma amostra de evasão.
11. Dispositivo para processamento de dados de vídeo, o dispositivo compreendendo: meios para determinar os índices de paleta de uma primeira fileira de um bloco de dados de vídeo, em que os índices de paleta correspondem a uma paleta para codificar o bloco de dados de vídeo, e em que os índices de paleta da primeira fileira incluem um ou mais índices que são associados com pelo menos um valor de cor na paleta e um índice que indica uma amostra de evasão que não é associada com um valor de cor na paleta; e meios para codificar (20,30) uma sequência de execução de índices de paleta de uma segunda fileira do bloco de dados de vídeo em relação aos índices de paleta da primeira fileira, caracterizado pelo fato de que a sequência de execução inclui o um ou mais índices de paleta que são associados com o pelo menos um valor de cor e o índice que indica uma amostra de evasão.
12. Dispositivo, de acordo com a reivindicação 11, caracterizado pelo fato de que a primeira fileira é posicionada acima da segunda fileira no bloco de dados de vídeo, e em que os meios para codificar a sequência de execução de índices de paleta da segunda fileira em relação aos índices de paleta da primeira fileira compreendem meios configurados para codificar a sequência de execução de índices de paleta da segunda fileira utilizando um modo de paleta CopyFromTop.
13. Dispositivo, de acordo com a reivindicação 11, caracterizado pelo fato de que o meio de codificação é um codificador (20).
14. Dispositivo, de acordo com a reivindicação 11, caracterizado pelo fato de que o meio de codificação é um decodificador (30).
15. Memória legível por computador caracterizada pelo fato de que possui instruções nela armazenadas que, quando executadas, fazem com que um computador realize o método conforme definido em qualquer uma das reivindicações 1 a 10.
BR112016027420-2A 2014-05-23 2015-05-22 Codificação de sequências de execução com evasão em codificação de vídeo baseada em paleta BR112016027420B1 (pt)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US201462002717P 2014-05-23 2014-05-23
US201462009772P 2014-06-09 2014-06-09
US62/009,772 2014-06-09
US201462015261P 2014-06-20 2014-06-20
US62/015,261 2014-06-20
US201462019223P 2014-06-30 2014-06-30
US201462059659P 2014-10-03 2014-10-03
US62/059,659 2014-10-03
US201462065526P 2014-10-17 2014-10-17
US62/065,526 2014-10-17
US14/719,265 US10291940B2 (en) 2014-05-23 2015-05-21 Coding runs with escape in palette-based video coding
US14/719,265 2015-05-21
PCT/US2015/032286 WO2015179829A1 (en) 2014-05-23 2015-05-22 Coding runs with escape in palette-based video coding

Publications (2)

Publication Number Publication Date
BR112016027420A2 BR112016027420A2 (pt) 2017-08-15
BR112016027420B1 true BR112016027420B1 (pt) 2023-11-14

Family

ID=53404867

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016027420-2A BR112016027420B1 (pt) 2014-05-23 2015-05-22 Codificação de sequências de execução com evasão em codificação de vídeo baseada em paleta

Country Status (10)

Country Link
US (1) US10291940B2 (pt)
EP (1) EP3146716B1 (pt)
JP (1) JP6557260B2 (pt)
KR (1) KR101958534B1 (pt)
CN (1) CN106464871B (pt)
BR (1) BR112016027420B1 (pt)
CA (1) CA2947043C (pt)
ES (1) ES2678398T3 (pt)
HU (1) HUE039438T2 (pt)
WO (1) WO2015179829A1 (pt)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2925183C (en) 2013-10-14 2020-03-10 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
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
US11323733B2 (en) 2014-05-23 2022-05-03 Qualcomm Incorporated Predictor palette initialization 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
KR101943805B1 (ko) 2014-06-20 2019-01-29 에이치에프아이 이노베이션 인크. 비디오 코딩에서의 신택스에 대한 이진화 및 컨텍스트 적응 코딩의 방법 및 장치
CN106537910B (zh) * 2014-07-07 2019-07-12 寰发股份有限公司 在索引图编码中将跳出像素作为预测器的方法
US10687064B2 (en) 2014-08-04 2020-06-16 Qualcomm Incorporated Palette mode encoding and decoding with inferred pixel scan order
US9544607B2 (en) * 2014-08-25 2017-01-10 Hfi Innovation Inc. Method of palette index signaling for image and video coding
WO2016048092A1 (ko) * 2014-09-26 2016-03-31 주식회사 케이티 비디오 신호 처리 방법 및 장치
CA2959682C (en) 2014-09-30 2022-12-06 Microsoft Technology Licensing, Llc Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US9596479B2 (en) * 2014-10-07 2017-03-14 Hfi Innovation Inc. Method of pulse-code modulation and palette coding for video coding
US10477218B2 (en) * 2014-10-20 2019-11-12 Kt Corporation Method and apparatus for predicting and restoring a video signal using palette entry
KR102596896B1 (ko) * 2015-01-15 2023-11-01 주식회사 케이티 비디오 신호 처리 방법 및 장치
CN111970515B (zh) 2015-01-29 2024-03-29 株式会社Kt 对视频信号进行编解码的方法
CN107211153B (zh) 2015-01-29 2020-10-02 株式会社Kt 用于处理视频信号的方法和设备
EP3282706A4 (en) 2015-04-02 2019-01-30 KT Corporation METHOD AND APPARATUS FOR PROCESSING VIDEO SIGNAL
WO2016197314A1 (en) * 2015-06-09 2016-12-15 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
US10506259B2 (en) * 2015-06-16 2019-12-10 Lg Electronics Inc. Method for encoding/decoding image, and device therefor
US10110914B1 (en) * 2016-09-15 2018-10-23 Google Llc Locally adaptive warped motion compensation in video coding
CN110020333A (zh) * 2017-07-27 2019-07-16 北京嘀嘀无限科技发展有限公司 数据分析方法及装置、电子设备、存储介质
US10659794B2 (en) * 2018-03-06 2020-05-19 Mediatek Inc. Apparatus and method for palette decoding
US11606575B2 (en) 2018-07-10 2023-03-14 Qualcomm Incorporated Multiple history based non-adjacent MVPs for wavefront processing of video coding
US10924750B2 (en) * 2019-03-01 2021-02-16 Alibaba Group Holding Limited Palette size constraint in palette mode for video compression system
US11503311B2 (en) * 2019-03-08 2022-11-15 Sony Group Corporation Hybrid palette-DPCM coding for image compression
CN113853789B (zh) 2019-05-15 2024-06-04 现代自动车株式会社 用于运动图像数据的并行编码和解码的方法
CN117834876A (zh) * 2019-06-14 2024-04-05 松下电器(美国)知识产权公司 编码装置、解码装置和非暂时性的计算机可读取介质
US11206413B2 (en) * 2019-08-13 2021-12-21 Qualcomm Incorporated Palette predictor updates for local dual trees
US20220295105A1 (en) * 2019-08-29 2022-09-15 Lg Electronics Inc. Image or video coding based on escape binarization in palette mode
WO2023086956A1 (en) * 2021-11-11 2023-05-19 Innopeak Technology, Inc. Initialization processing for video coding
US20230231991A1 (en) * 2022-01-14 2023-07-20 Tencent America LLC Palette Predictor Generation and Signaling

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4033836B2 (ja) 2002-02-01 2008-01-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 可変長カラー・コードを用いる、パレット化されたカラー画像の圧縮
US8000547B2 (en) 2005-09-23 2011-08-16 Slipstream Data Inc. Method, system and computer program product for providing entropy constrained color splitting for palette images with color-wise splitting
JP4999864B2 (ja) 2006-12-28 2012-08-15 日本電信電話株式会社 映像符号化方法及び復号方法、それらの装置、それらのプログラム並びにプログラムを記録した記憶媒体
US8406573B2 (en) 2008-12-22 2013-03-26 Microsoft Corporation Interactively ranking image search results using color layout relevance
US9491491B2 (en) 2011-06-03 2016-11-08 Qualcomm Incorporated Run-mode based coefficient coding for video coding
US9357185B2 (en) 2011-11-08 2016-05-31 Qualcomm Incorporated Context optimization for last significant coefficient position coding
US9479780B2 (en) 2012-02-01 2016-10-25 Google Technology Holdings LLC Simplification of significance map coding
US9729875B2 (en) * 2013-07-08 2017-08-08 Sony Corporation Palette coding mode
CN110336999B (zh) 2013-12-18 2021-09-03 寰发股份有限公司 利用调色板编码的编码视频数据区块的方法和装置
US10038915B2 (en) 2014-05-22 2018-07-31 Qualcomm Incorporated Escape sample coding in palette-based video coding
US11323733B2 (en) 2014-05-23 2022-05-03 Qualcomm Incorporated Predictor palette initialization 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

Also Published As

Publication number Publication date
CA2947043A1 (en) 2015-11-26
KR20170008286A (ko) 2017-01-23
CA2947043C (en) 2019-12-31
ES2678398T3 (es) 2018-08-10
CN106464871B (zh) 2019-04-23
KR101958534B1 (ko) 2019-03-14
US20150341674A1 (en) 2015-11-26
US10291940B2 (en) 2019-05-14
CN106464871A (zh) 2017-02-22
HUE039438T2 (hu) 2018-12-28
EP3146716A1 (en) 2017-03-29
JP2017520157A (ja) 2017-07-20
WO2015179829A1 (en) 2015-11-26
JP6557260B2 (ja) 2019-08-07
EP3146716B1 (en) 2018-04-18
BR112016027420A2 (pt) 2017-08-15

Similar Documents

Publication Publication Date Title
BR112016027420B1 (pt) Codificação de sequências de execução com evasão em codificação de vídeo baseada em paleta
CA2947042C (en) Coding run values based on palette index in palette-based video coding
US11323733B2 (en) Predictor palette initialization in palette-based video coding
US10097842B2 (en) Restriction of escape pixel signaled values in palette mode video coding
US10158866B2 (en) Parsing dependency reduction for palette index coding
BR112016027384B1 (pt) Codificação de amostra de escape em codificação de vídeo com base em paleta
BR112016022261B1 (pt) Métodos de codificação e decodificação de dados de vídeo, aparelhos configurados para codificar e decodificar dados de vídeo, e, memória legível por computador
BR112016027265B1 (pt) Execuções de codificação em codificação de vídeo com base em paleta
US20160366439A1 (en) Palette copy extension
BR112017016371B1 (pt) Agrupamento de índice de paleta para codificação cabac de banda larga

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
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