BR112014025419B1 - Binários de desvio para codificação de índices de referência em codificação de vídeo - Google Patents
Binários de desvio para codificação de índices de referência em codificação de vídeo Download PDFInfo
- Publication number
- BR112014025419B1 BR112014025419B1 BR112014025419-2A BR112014025419A BR112014025419B1 BR 112014025419 B1 BR112014025419 B1 BR 112014025419B1 BR 112014025419 A BR112014025419 A BR 112014025419A BR 112014025419 B1 BR112014025419 B1 BR 112014025419B1
- Authority
- BR
- Brazil
- Prior art keywords
- encoding
- reference index
- binary
- context
- index value
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
BINÁRIOS DE DESVIO PARA CODIFICAÇÃO DE ÍNDICES DE REFERÊNCIA EM CODIFICAÇÃO DE VÍDEO. Em um exemplo, os aspectos desta revelação referem-se a um método para decodificar um elemento de sintaxe de índice de referência em um processo de decodificação de vídeo que inclui decodificar pelo menos um binário de um valor de índice de referência com um modo de codificação por contexto de um processo de codificação aritmética binária adaptativa ao contexto (CABAC). O método inclui também decodificar, quando o valor de índice de referência compreende mais binários que o pelo menos um binário codificado com o modelador de contexto, pelo menos outro binário do valor de índice de referência com um modo de codificação por desvio do processo CABAC, e binarizar o valor de índice de referência.
Description
[0001] Esta revelação reivindica o benefício do pedido provisório norte-americano N°. 61/623 043, depositado a 11 de abril de 2012, do pedido provisório norte-americano N°. 61/637 218, depositado a 23 de abril de 2012, do pedido provisório norte-americano N°. 61/640 568, depositado a 30 de abril de 2012, do pedido provisório norte-americano N°. 61/647 411, depositado a 15 de maio d 2012, e do pedido provisório norte americano N°. 61/665 151, depositado a 27 de junho de 2012, o conteúdo de cada um dos quais sendo por este incorporado em sua totalidade à guisa de referência.
[0002] Esta revelação refere-se à codificação de vídeo e, mais especificamente, a técnicas para codificar elementos de sintaxe em um processo de codificação de vídeo.
[0003] As capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de aparelhos, que incluem televisões digitais, sistemas de broadcast direto digitais, sistemas de broadcast sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou de mesa, computadores tablet, câmeras digitais, aparelhos de gravação digitais, aparelhos de meios digitais, aparelhos de jogos de vídeos, consoles para jogos de vídeos, rádio telefones celulares ou de satélite, aparelhos de teleconferência de vídeo e semelhantes. Os aparelhos de vídeo digital implementam técnicas de compactação de vídeo, tais como as descritas nos padrões definidos por MPEG-2, MPEG-4 e ITU-TH.263, ITU-TH.264/MPEG-4 Parte 10, Codificação Avançada de Vídeo (AVC), o padrão de Codificação de Vídeo de Alta Eficácia (HEVC) atualmente em desenvolvimento e extensões de tais padrões para transmitir, receber e armazenar informações de vídeo digital de maneira mais eficaz.
[0004] As técnica de compactação de vídeo incluem predição espacial e/ou predição temporal para reduzir ou remover a redundância inerente a sequências de vídeo. Para a codificação de vídeo baseada em blocos, um quadro ou fatia de vídeo pode ser particionada em blocos. Um quadro de vídeo pode alternativamente ser referido como imagem. Cada bloco pode ser também particionado. Os blocos em uma imagem ou fatia intra-codificada (I) são codificados utilizando-se predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem ou fatia. Os blocos em uma imagem ou fatia intercodificada (P ou B) podem utilizar predição espacial com relação à amostras de referência em blocos vizinhos na mesma imagem ou fatia ou predição temporal com relação a amostra de referência em outras imagens de referência. 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.
[0005] Um bloco inter-codificado é codificado de acordo com um vetor de movimento que indica um bloco de amostra de referência que forma o bloco preditivo e os dados residuais que indica a diferença entre o bloco codificado e o bloco preditivo. Um bloco inter-codificado é codificado de acordo com um modo de intra-codificação e os dados residuais. Para compactação adicional, os dados residuais podem ser transformados do domínio de pixel em um domínio de transformada, do que resultam coeficientes de transformada residuais, que podem ser então quantificados. Os coeficientes de transformada quantificados, inicialmente dispostos em um arranjo bidimensional, podem ser varridos em uma ordem específica de modo a se produzir um vetor unidimensional de coeficientes de transformada para codificação por entropia. A codificação por entropia pode ser também aplicada a diversos outros elementos de sintaxe utilizados no processo de codificação de vídeo.
[0006] As técnicas desta revelação referem-se de maneira geral à codificação por entropia de dados de vídeo. Quando efetua codificação adaptativa ao contexto, um codificador de vídeo pode codificar cada bit ou “binário” de dados utilizando estimativas de probabilidades, que podem indicar a probabilidade de um binário ter um dado valor binário. As estimativas de probabilidades podem ser incluídas dentro de um modelo de probabilidade, também referido como “modelo de contexto”. As estimativas de probabilidades podem ser incluídas dentro de um modelo de probabilidade, também referido como “modelo de contexto”. Um codificador de vídeo pode selecionar um modelo de contexto determinando um contexto para o binário. O contexto para um binário pode incluir valores de binários conexos de elementos de sintaxe codificados anteriormente. Depois de codificar o binário, o codificador de vídeo pode atualizar o modelo de contexto com base em um valor do binário de modo a refletir as estimativas de probabilidades mais atuais. Em contraste com a aplicação de um modo de codificação por contexto, um codificador de vídeo pode aplicar o modo de codificação por desvio. Por exemplo, o codificador de vídeo pode utilizar o modo de desvio para desviar-se do, ou omitir o, processo de codificação aritmética regular. Em tais casos, um codificador de vídeo pode utilizar um modelo de probabilidade fixo (que não é atualizado durante a codificação) para codificar por desvio os binários.
[0007] As técnicas desta revelação referem-se à codificação eficaz por contexto de elementos de sintaxe associados a dados de vídeo inter-codificados. Por exemplo, os aspectos desta revelação referem-se à codificação eficaz de valores de índice de referência, preditores de vetor de movimento, valores de diferença entre vetores de movimento. Em alguns casos, um codificador de vídeo pode efetuar codificação por contexto para alguns binários de um elemento de sintaxe e codificação por desvio de outros binários do elemento de sintaxe. Por exemplo, o codificador de vídeo pode codificar por contexto um ou mais binários de um valor de índice de referência e codificar por desvio um ou mais outros binários do valor de índice de referência.
[0008] Em um exemplo, os aspectos desta revelação referem-se a um método para codificar um elemento de sintaxe de índice de referência em um processo de codificação de vídeo que inclui tornar binário um valor de índice de referência, codificar pelo menos um binário do valor de índice de referência tornado binário com o modo de codificação por contexto de um processo de codificação aritmética binária adaptativa ao contexto (CABC), e codificar quando o valor de índice de referência tornado binário compreende mais binários que o pelo menos um binário codificado com o modo codificado por contexto, pelo menos outro binário do valor de índice de referência tornado binário com um modo de codificação por desvio do processo CABAC.
[0009] Em outro exemplo os aspectos desta revelação referem-se a um equipamento para codificar um elemento de sintaxe de índice de referência em um processo de codificação de vídeo que inclui um ou mais processadores para tornar binário um valor de índice de referência, codificar pelo menos um binário do valor de índice de referência tornado binário com um modo de codificação por contexto de um processo de codificação aritmética binária adaptativa ao contexto (CABAC) e codificar, quando o valor de índice de referência tornado binário compreende mais binários que o pelo menos um binário codificado com o modo codificado por contexto, pelo menos outro binário do valor de índice de referência tornado binário com modo de codificação por desvio do processo CABAC.
[0010] Em outro exemplo os aspectos desta revelação referem-se a um equipamento para codificar um elemento de sintaxe de índice de referência em um processo de codificação de vídeo que inclui um dispositivo para tornar binário um valor de índice de referência, um dispositivo para codificar pelo menos um binário do valor de índice de referência tornado binário com um modo de codificação por contexto de um processo de codificação aritmética binária adaptativa ao contexto (CABAC) e um dispositivo para codificar, quando o valor de índice de referência tornado binário compreende mais binários que o pelo menos um binário codificado com o modo codificado por contexto, pelo menos outro binário do valor de índice de referência tornado binário com modo de codificação por desvio do processo CABAC.
[0011] Em outro exemplo, os aspectos desta revelação referem-se a um método para decodificar um elemento de sintaxe de índice de referência em um processo de decodificação de vídeo que inclui decodificar pelo menos um binário de um valor de índice de referência com um modo de codificação por contexto com um processo de codificação aritmética binária adaptativa ao contexto (CABAC), decodificar quando o valor de índice de referência compreende mais binários que o pelo menos um binário codificado com o modo codificado por contexto, pelo menos outro binário do valor de índice de referência com um modo de codificação por desvio do processo CABAC e tornar binário o valor de índice de referência.
[0012] Em outro exemplo, os aspectos desta revelação referem-se a um equipamento para decodificar um elemento de sintaxe de índice de referência em um processo de decodificação de vídeo que inclui um ou mais processadores configurados para decodificar pelo menos um binário de um valor de índice de referência com um modo de codificação por contexto de um processo de codificação aritmética binária adaptativa ao contexto (CABAC), decodificar quando o valor de índice de referência compreende mais binários que o pelo menos um binário codificado com o modo codificado por contexto, pelo menos outro binário do valor de índice de referência com um modo de codificação por desvio do processo CABAC e tornar binário o valor de índice de referência.
[0013] Em outro exemplo, os aspectos desta revelação referem-se a um meio passível de leitura por computador não transitório que armazena instruções nele que, quando executadas, fazem com que um ou mais processadores decodifiquem pelo menos um binário de um valor de índice de referência com um modo codificado por contexto de um processo de codificação aritmética binária adaptativa ao contexto (CABAC) decodifiquem, quando o valor de índice de referência compreende mais binários que o pelo menos um binário codificado com o modo codificado por contexto, pelo menos outro binário do valor de índice de referência com um modo de codificação por desvio do processo CABAC e tornem binário o valor de índice de referência.
[0014] os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição que se segue. Outros recursos, objetos e vantagens serão evidentes com a descrição e os desenhos e com as reivindicações.
[0015] A Figura 1 é um diagrama de blocos que mostra um sistema de codificação e de codificação de vídeo exemplar.
[0016] A Figura 2 é um diagrama de blocos que mostra um codificador de vídeo exemplar.
[0017] A Figura 3 é um diagrama de blocos que mostra um decodificador de vídeo exemplar.
[0018] A Figura 4 é um diagrama de blocos que mostra um processo de codificação aritmética exemplar.
[0019] A Figura 5A é um diagrama de blocos que mostra uma cadeia exemplar de dados de predição.
[0020] A Figura 5B é um diagrama de blocos que mostra outra cadeia exemplar de dados de predição.
[0021] A Figura 6 é um diagrama de blocos que mostra outra cadeia exemplar de dados de predição.
[0022] A Figura 7 é um diagrama de blocos que mostra outra cadeia exemplar de dados de predição.
[0023] A Figura 8A é um diagrama de blocos que mostra a codificação por contexto de um elemento de sintaxe de direção de inter-predição com três valores possíveis.
[0024] A Figura 8B que mostra a codificação por desvio do elemento de sintaxe de direção inter-preditiva de acordo com os aspectos desta revelação.
[0025] A Figura 9 é um fluxograma que mostra um exemplo de codificação por entropia de um valor de índice de referência, de acordo com os aspectos desta revelação.
[0026] A Figura 10 é um fluxograma que mostra um exemplo de decodificação por entropia de um valor de índice de referência de acordo com os aspectos desta revelação.
[0027] A Figura 11 é um fluxograma que mostra um exemplo de codificação por entropia de dados de predição, de acordo com os aspectos desta revelação.
[0028] A Figura 12 é um fluxograma que mostra um exemplo de decodificação por entropia de dados de predição, de acordo com os aspectos desta revelação.
[0029] Um aparelho de codificação de vídeo pode compactar dados de vídeo tirando vantagem da redundância espacial e temporal. Por exemplo, um codificador de vídeo pode tirar vantagem da redundância espacial codificando um bloco com relação a blocos vizinhos codificados anteriormente. Da mesma maneira, um codificador de vídeo pode tirar vantagem da redundância temporal codificando um bloco com relação a dados de imagens codificadas anteriormente. Em particular, o codificador de vídeo pode predizer o bloco atual a partir de dados de um vizinho espacial (referido como intra-codificação) ou a partir de dados de uma ou mais outras imagens (referido como intra- codificação). O codificador de vídeo pode calcular então um resíduo para o bloco como a diferença entre os valores de pixel reais para o bloco e os valores de pixel preditos para o bloco. por conseguinte, o resíduo para um bloco pode incluir valores de diferença de pixel por pixel no domínio de pixel (ou espacial).
[0030] Um codificador de vídeo pode efetuar estimação de movimento e compensação de movimento quando inter-prediz um bloco de dados de vídeo. Por exemplo, a estimação de movimento é efetuada em um codificador de vídeo e inclui calcular um ou mais vetores de movimento. Um vetor de movimento pode indicar o deslocamento de um bloco de dados de vídeo na imagem atual com relação a uma amostra de referência de uma imagem de referência. Uma amostra de referência pode ser um bloco que se verifica corresponder intimamente ao bloco que é codificado em termos de diferença de pixel, o que pode ser determinado pela soma da diferença absoluta (SAD), pela soma da diferença elevada ao quadrado (SSD) ou por outras métricas de diferença. A amostra de referência pode ocorrer em qualquer lugar dentro de uma imagem de referência ou fatia de referência, e não necessariamente em uma fronteira entre bloco da imagem ou fatia de referência. Em alguns exemplos, a amostra de referência pode ocorrer em uma posição de pixel fracionária.
[0031] Os dados que definem um vetor de movimento podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (precisão de um quarto de pixel ou precisão de um quarto de pixel), uma imagem de referência que o vetor de movimento indica e/ou uma lista de imagens de referência, lista 0 (L0), lista 1 (L1) ou uma lista combinada (LC)) para o vetor de movimento, conforme indicado por uma direção de predição. Um índice de referência (idx_ref) pode identificar a imagem específica na lista de imagens de referência que o vetor de movimento indica. Desta maneira, o elemento de sintaxe idx_ref funciona como índice em uma lista de imagens de referência, como, por exemplo, L0, L1 ou LC.
[0032] A se identificar um bloco de referência, é determinada a diferença entre o bloco de dados de vídeo original e o bloco de referência. A diferença pode ser referida como dados residuais de predição e indica as diferenças de pixel entre os valores de pixel no bloco a ser codificado e os valores de pixel no bloco de referência selecionado para representar o bloco codificado. De modo a se obter melhor compactação, os dados residuais de predição podem ser transformados, como, por exemplo, utilizando-se uma transformada de co-seno discreta (DCT), uma transformada de número inteiro, uma transformada de Karhumen-Loeve (K-L) ou outra transformada. Para compactação adicional os coeficientes de transformada podem ser codificados.
[0033] Um codificador por entropia codificador por entropia então os símbolos ou elemento de sintaxe associados a um bloco de dados de vídeo e aos coeficientes de transformada quantificados. Exemplos de esquemas de codificação por entropia incluem a Codificação de Comprimento Variável Adaptativa ao Contexto (CAVLC), a Codificação Aritmética Binária Adaptativa ao Contexto (CABAC), a Codificação por Entropia com Particionamento de Intervalos de Probabilidade (PIPE), ou semelhantes. Antes da codificação por contexto, um com relação de vídeo pode converter o valor absoluto de cada valor que é codificado em forma binarizada. desta maneira, cada valor não-zero que é codificado pode ser “binarizado”, utilizando-se, por exemplo uma tabela de codificação unária ou outro esquema de codificação que converta um valor em uma palavra de código que tem um ou mais bits, ou “binários”.
[0034] Com relação à CABAC, como um exemplo, um codificador de vídeo pode selecionar um modelo de probabilidade (também referido como modelo de contexto) para codificar os símbolos associados a um bloco de dados de vídeo. Por exemplo, no codificador, um símbolo-alvo pode ser codificado utilizando-se o modelo de probabilidade. No decodificador um símbolo-alvo pode ser submetido a parse utilizando-se o modelo de probabilidade. Em algumas ocorrências, os binários podem ser codificados utilizando- se uma combinação de codificação adaptativa ao contexto e não-adaptativa ao contexto. Por exemplo, um com relação de vídeo pode utilizar um modo de desvio para desviar-se do, ou omitir o, processo de codificação aritmética regular para um ou mais binários utilizando ao mesmo tempo codificação adaptativa ao contexto para outros binários. Em tais exemplos, o codificador de vídeo pode utilizar um modelo de probabilidade fixo para codificar por desvio os binários. Ou seja, os binários codificados por desvio não incluem atualizações de contexto ou probabilidade. Em geral, conforme descrito mais detalhadamente com relação à Figura 4 abaixo, a codificação por contexto dos binários pode ser referida como codificação dos binários que utiliza um modo de codificação por contexto. Da mesma maneira, a codificação por desvio de binários pode ser referida como codificação dos binários que utiliza modo de codificação por desvio.
[0035] Um modelo de contexto para codificar um binário de um elemento de sintaxe pode ser baseado nos valores de binários conexos de elementos de sintaxe vizinho codificados anteriormente. Como um exemplo, um modelo de contexto para codificar um binário do elemento de sintaxe atual pode ser baseado nos valores de binários conexos de elementos de sintaxe vizinhos codificados anteriormente, como, por exemplo, no topo e à esquerda do elemento de sintaxe atual. As posições das quais o contexto é derivado podem ser referidas como vizinhança de suporte de contexto (também referida como “suporte de contexto”) ou simplesmente como “suporte”. Por exemplo, com relação à codificação dos binários de um mapa de significação (que indica as localizações de coeficientes de transformada não zero em um bloco de dados de vídeo, por exemplo) pode ser utilizado um suporte de cinco pontos para definir o modelo de contexto.
[0036] Em alguns exemplos, um modelo de contexto (Ctx) pode ser um índice ou deslocamento que é aplicado para selecionar um de uma série de contextos diferentes, cada um dos quais pode corresponder a um modelo de probabilidade específico. Consequentemente, em qualquer caso, um modelo de probabilidade diferente é tipicamente definido para cada contexto. Depois da codificação do binário, o modelo de probabilidade é também atualizado com base no valor do binário de modo a refletir as estimativas de probabilidade mais atuais para o binário. Por exemplo, um modelo de probabilidade pode ser mantido como um estado em uma máquina de estados finita. Cada estado específico pode corresponder a um valor de probabilidade específico. O estado seguinte, que corresponde a uma atualização do modelo de probabilidade, pode depender do valor do binário atual (o binário que é atualmente codificado, por exemplo). Por conseguinte, a seleção de um modelo de probabilidade pode ser influenciada pelos valores dos binários codificados anteriormente, uma vez que os valores indicam, pelo menos em parte, a probabilidade de o binário ter um dado valor. O processo de codificação por contexto descrito acima pode ser geralmente referido como modo de codificação adaptativa ao contexto.
[0037] O processo de atualização de probabilidade descrito acima pode retardar-se no processo de codificação. Por exemplo, suponha-se que dois binários utilizam o mesmo modelo de contexto (ctx(0), por exemplo) para fins de codificação adaptativa ao contexto. Neste exemplo um primeiro binário pode utilizar ctx(0) para determinar um modelo de probabilidade para codificação. O valor do primeiro binário influencia o modelo de probabilidade associado a ctx(0). Por conseguinte, uma atualização de probabilidade deve ser efetuada antes da codificação do segundo binário com ctx(0). Desta maneira, a atualização de probabilidade pode introduzir retardo no ciclo de codificação.
[0038] Com relação à codificação de vídeo, como outro exemplo, um com relação de vídeo pode codificar, de maneira adaptativa ao contexto uma sequência de binários (binário(0), binário(1), ... binário(n), por exemplo) de um índice de referência (idx_ref). Conforme observado acima, um índice de referência (idx_ref) pode identificar a imagem específica na lista de imagens de referência indicada pelo vetor de movimento. Um único índice de referência (idx_ref) pode incluir, por exemplo, até 15 binários. Suponha-se, para fins de explanação, que o codificador de vídeo deriva três contextos para codificar os binários e aplica os contextos com base no número de binário que é codificado, indicado utilizando-se os índices de contexto (ctx(0), ctx(1) e ctx(2), por exemplo). Ou seja, neste exemplo, o codificador de vídeo pode utilizar ctx(0) para codificar o binário(0), ctx(1) para codificar o binário(1) e ctx(2) para codificar os binários restantes (binário(2) até binário(n), por exemplo).
[0039] No exemplo descrito acima, o terceiro contexto (ctx(2)) é compartilhado entre vários binários (até 13 binários, por exemplo). A utilização do mesmo modelo de probabilidade para codificar os binários (2) a (n) desta maneira pode produzir um retardo entre ciclos de codificação sucessivos. Conforme observado acima, por exemplo, a chamada repetida do mesmo contexto e a espera pela atualização do modelo depois de cada binário podem apresentar um gargalo para a capacidade de transmissão do codificador.
[0040] Além do mais, a correlação entre o binário(2) e o binário(n) pode não ser suficiente para garantir os recursos de tempo e computacionais associados à atualização do modelo de probabilidade. Ou seja, um benefício potencial da codificação adaptativa ao contexto é a capacidade de adaptar um modelo de probabilidade com base nos binários codificados anteriormente (dado o mesmo contexto). Se o valor de um primeiro binário, contudo, tem pouca relação com ou se baseia no valor de um binário subseqüente, pode haver pouco ganho de eficácia associado à atualização de probabilidade. Por conseguinte, binários que apresentam uma baixa correlação podem não beneficiar-se da codificação adaptativa ao contexto tanto quanto os binários que têm correlações relativamente mais elevadas.
[0041] Os aspectos desta revelação referem-se a codificação por contexto eficaz de elementos de sintaxe associados a dados de vídeo inter-codificados. Por exemplo, os aspectos desta revelação referem-se à codificação eficaz de valores de índice de referência, preditores de vetores de movimento, valores de diferença entre vetores de movimento e semelhantes. Em alguns exemplos, um codificador de vídeo pode efetuar codificação por contexto para alguns binários de um elemento de sintaxe e codificação por desvio de outros binários do elemento de sintaxe.
[0042] Com referência específica ao exemplo de codificação de índices de referência descrito acima de acordo com aspectos desta revelação, o codificador de vídeo pode aplicar ctx(0) ao binário(0), ctx(1) ao binário(1), ctx(2) ao binário(2) e pode codificar por desvio os binários restantes do valor de índice de referência sem necessidade de contextos. Em outras palavras, o codificador de vídeo pode utilizar ctx(2) como o contexto para codificar por CABAC o binário(2) de um valor de índice de referência binarizado, mas pode codificar por desvio quaisquer binários que se sigam ao binário(2).
[0043] Dado que os valores de índice de referência podem ser de 15 binários ou mais de comprimento, a limitação do número de binários que são codificados por contexto desta maneira pode produzir uma economia computacional e/ou de tempo versus codificação por contexto de todos os binários de índice de referência. Além do mais, conforme observado acima, a correlação entre os bits de um valor de índice de referência pode não ser elevada (como, por exemplo, o valor do binário(3) do valor de índice de referência pode não fornecer uma indicação útil referente à probabilidade de o binário(4) ter um valor de “1” ou “0”), o que reduz o benefício da codificação por contexto. Por conseguinte, a quantidade de recursos de tempo e computacionais economizada pela codificação por contexto de menos binários de um valor de índice de referência pode ser mais importante que os ganhos de eficácia de codificação associados à codificação por contexto de todos os binários do valor de índice de referência.
[0044] Outros aspectos desta revelação referem-se de maneira geral ao agrupamento de binários codificado por contexto e de binários não codificados por contexto durante a codificação. Por exemplo, conforme observado acima, alguns elementos de sintaxe podem ser codificados utilizando-se uma combinação de codificação por contexto e codificação por desvio. Ou seja, alguns elementos de sintaxe podem ter um ou mais binários que são codificados por contexto e um ou mais outros binários que são codificados por desvio.
[0045] Suponha-se, para fins de exemplificação, que dois elementos de sintaxe tenham, cada um, uma parte codificada por contexto (que inclui um ou mais binários codificados por contexto) e uma parte codificada por desvio (que inclui um ou mais binários codificado por desvio). Neste exemplo, o codificador de vídeo pode codificar a parte codificada por contexto do primeiro elemento de sintaxe seguida da parte codificada por desvio do primeiro elemento de sintaxe, seguida da parte codificada por contexto do segundo elemento de sintaxe, seguida parte codificada por desvio do segundo elemento de sintaxe.
[0046] No exemplo descrito acima, um codificador de vídeo pode comutar entre um modo de codificação por contexto em um modo de codificação por desvio três vezes para codificar os dois elementos de sintaxe. Por exemplo, o codificador de vídeo comuta entre a codificação por contexto e a codificação por desvio depois dos binários codificados por contexto do primeiro elemento de sintaxe, depois dos binários codificados por desvio do primeiro elemento de sintaxe e depois dos binários codificados por contexto do segundo elemento de sintaxe. A comutação entre a codificação por contexto e a codificação por desvio desta maneira pode ser computacionalmente ineficaz. Por exemplo, a comutação entre a codificação por contexto e a codificação por desvio pode consumir um ou mais ciclos de relógio. Por conseguinte, a comutação entre a codificação por contexto e a codificação por desvio para cada elemento pode introduzir latência, devido às transições entre a codificação por contexto e a codificação por desvio.
[0047] Os aspectos desta revelação incluem agrupar binários codificados por contexto e binários não codificados por contexto (binários de desvio, por exemplo) durante a codificação. Por exemplo, com relação ao exemplo descrito acima, de acordo com os aspectos desta revelação, um codificador de vídeo pode codificar os binários codificados por contexto do primeiro elemento de sintaxe, seguidos dos binários codificados por contexto do segundo elemento de sintaxe, seguidos dos binários codificados por desvio do primeiro elemento de sintaxe, seguidos dos binários codificados por desvio do segundo elemento de sintaxe. Por conseguinte, o codificador de vídeo só transita entre o modo de codificação por contexto e o modo de codificação por desvio uma única vez, como por exemplo, entre os binários codificados por contexto e os binários não codificados por contexto.
[0048] O agrupamento de binários desta maneira pode reduzir a frequência com a qual um codificador de vídeo comuta entre o modo de codificação por contexto e o modo de codificação por desvio. Por conseguinte, os aspectos desta revelação podem reduzir a latência quando se codificam elementos de sintaxe que incluem uma combinação de binários codificados por contexto e binários codificados pode desvio. Em alguns exemplos, conforme descrito com relação às Figuras 5-8 abaixo, os bits associados a dados de predição podem ser agrupados de acordo com as técnicas desta revelação. Por exemplo, Conforme aqui descrito, os dados de predição podem incluir geralmente dados associados à inter-predição. Por exemplo, os dados de predição podem incluir dados que indicam valores de índice de referência, vetores de movimento, preditores de vetores de movimento, valores de diferença entre vetores de movimento e semelhantes.
[0049] A Figura 1 é um diagrama de blocos que mostra um sistema de codificação e decodificação de vídeo 10 exemplar que pode ser configurado para codificar dados de predição de acordo com exemplos desta revelação. Conforme mostrado na Figura 1, o sistema 10 inclui um aparelho de origem 12 que transmite vídeo codificado para um aparelho de destino 14 por meio de um canal de comunicação 16. Os dados de vídeo codificados podem ser também armazenados em um meio de armazenamento ou em um servidor de arquivos 36 e podem ser acessados pelo aparelho de destino 14 conforme desejado. Quando armazenados em um meio de armazenamento ou servidor de arquivos, o codificador de vídeo 20 pode fornecer dados de vídeo codificados a outro aparelho, tal como uma interface com rede, um disco compacto (CD), um gravador de disco de vídeo Blu-Ray ou digital (DVD) ou aparelho de instalação de estampagem ou outros aparelhos, para armazenar os dados de vídeo codificados no meio de armazenamento. Da mesma maneira, um período de aquecimento separado do decodificador de vídeo 30, tal como uma interface com rede, leitora de CD ou DVD ou semelhante, pode recuperar dados de vídeo decodificados de um meio de armazenamento e fornecer os dados recuperados ao decodificador de vídeo 30.
[0050] O aparelho de origem 12 e o aparelho de destino 14 podem compreender qualquer um de uma ampla variedade de aparelhos, inclusive computadores de mesa, computadores notebook (isto é, laptop), computadores tablet, conversores set-top box, aparelhos telefônicos tais como os chamados telefones inteligentes, televisões, câmeras, aparelhos de exibição, tocadores de meios digitais, consoles para jogos de vídeo ou semelhantes. Em muitos casos tais aparelhos podem ser equipados para comunicação sem fio, consequentemente, o canal de comunicação 16 pode compreender um canal sem fio, um canal cabeado ou uma combinação de canais sem fio e cabeados adequados para transmissão de dados de vídeo codificados. Da mesma maneira, o servidor de arquivo 36 pode ser acessados pelo aparelho de destino 14 através de qualquer conexão de dados padrão, inclusive uma conexão com a Internet. Isto pode inclui um canal sem fio (uma conexão Wi-Fi, por exemplo), uma conexão cabeada (como, por exemplo, DSL, modem a cabo, etc.) ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos.
[0051] Técnicas para codificar dados de predição, de acordo com exemplos desta revelação, podem ser aplicadas à codificação de vídeo em suporte a qualquer um de diversos aplicativos multimídia, tais como broadcasts de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo de fluxo contínuo, como, por exemplo, por meio da Internet, à codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, à decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outros aplicativos. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional no suporte de aplicativos tais como fluxo contínuo de vídeo, repetição de vídeo, broadcast de vídeo e/ou telefonia com vídeo.
[0052] No exemplo da Figura 1, o aparelho de origem 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20, um modulador/demodulador, e um transmissor 24. No aparelho de origem 12 a fonte de vídeo 18 pode incluir uma fonte tal como um aparelho de captação de vídeo, tal como uma câmara de vídeo, um arquivo de vídeo que contém vídeo previamente captado, uma interface com alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeos e/ou um sistema de gráficos de computador para gerar dados gráficos de computador como o vídeo de origem, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o aparelho de origem 12 e o aparelho de destino 14 podem formar os chamados telefones com câmara ou telefones com vídeo. Entretanto, as técnicas descritas nesta revelação podem ser aplicadas à codificação de vídeo em geral e podem ser aplicadas a aplicativos sem fio e/ou cabeados, ou a aplicativos nos quais dados de vídeo codificados são armazenados em um disco local.
[0053] O vídeo captado, pré-captado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. As informações de vídeo codificadas podem ser moduladas pelo modem 22 de acordo com um padrão de comunicação, tal como o protocolo de comunicação sem fio, e transmitido para o aparelho de destino 14 por meio do transmissor 24. O modem 22 pode incluir diversos misturadores, filtros, amplificadores ou outros componentes projetados para modulação de sinais. O transmissor 24 pode incluir circuitos projetados para transmitir dados, inclusive amplificadores, filtros e uma ou mais antenas.
[0054] O vídeo captado, pré-captado ou gerado por computador pelo codificador de vídeo 20 pode ser também armazenado em um meio de armazenamento 34 ou em um servidor de arquivos 36 para consumo posterior. O meio de armazenamento 34 pode incluir discos Blu-Ray, DVDs, CD- ROMs, memória flash ou quaisquer outros meios de armazenamento digitais para armazenar vídeo codificado. O vídeo codificado armazenado no meio de armazenamento 34 pode ser então acessado pelo aparelho de destino 14 para decodificação e repetição.
[0055] O servidor de arquivo 36 pode ser qualquer tipo de servidor capaz de armazenar vídeo codificado e transmitir esse vídeo codificado para o aparelho de destino 14. Servidores de arquivos exemplares incluem um servidor da Web (para um site da Web, por exemplo), um servidor FTP, aparelhos de armazenamento anexados à rede (NAS), uma unidade de disco local ou qualquer outro tipo de aparelho capaz de armazenar dados de vídeo codificados e transmiti- los para um aparelho de destino. A transmissão de dados de vídeo codificados do servidor de arquivos 36 pode ser uma transmissão em fluxo contínuo, uma transmissão de download ou uma combinação de ambas. O servidor de arquivo 36 pode ser acessado pelo aparelho de destino 14 através de qualquer conexão de dados padrão, inclusive uma conexão com a Internet. Isto pode incluir um canal sem fio (uma conexão Wi-Fi, por exemplo) uma conexão cabeada (como, por exemplo, DSL, modem a cabo, Ethernet, USB, etc.) ou uma combinação de ambos que seja adequada para acessar os dados de vídeo codificados armazenados em um servidor de arquivos.
[0056] O aparelho de destino 14, no exemplo da Figura 1, inclui um receptor 26, um modem 28, um decodificador de vídeo 300 e um aparelho de exibição. O receptor 26 do aparelho de destino 14 recebe informações através do canal 16, e o modem 28 demodula as informações de modo a produzir um fluxo de bits demodulado para o decodificador de vídeo 30. As informações comunicadas através do canal 16 podem incluir diversas informações de sintaxe geradas pelo codificador de vídeo 20 para utilização pelo decodificador de vídeo 30 na decodificação de dados de vídeo. Tal sintaxe pode ser também incluída com os dados de vídeo codificados armazenados no meio de armazenamento 34 ou no servidor de arquivos 36. Cada um do codificador de vídeo 20 e do decodificador de vídeo 30 pode fazer parte de um respectivo codificador-decodificador (CODEC) que é capaz de codificar ou decodificar dados de vídeo.
[0057] O aparelho de exibição 32 pode ser integrado com o, ou externo ao, aparelho de destino 14. Em alguns exemplos, o aparelho de destino 14 pode incluir um aparelho de exibição integrado e ser também configurado para formar interface com um aparelho de exibição externo. Em outros exemplos o aparelho de destino 14 pode ser um aparelho de exibição. Em geral, o aparelho de exibição 32 exibe os dados de vídeo codificados para o usuário e pode compreender qualquer um de diversos aparelhos de exibição, tais como uma tela de cristal líquido (LCD) uma tela de plasma ou uma tela de diodo emissor de luz orgânico (OLED) ou outro tipo de aparelho de exibição.
[0058] No exemplo da Figura 1, o canal de comunicação 16 pode compreender qualquer meio de comunicação sem fio ou cabeado, tal como um espectro de radiofrequência ou uma ou mais linhas de transmissão físicas ou qualquer combinação de meios sem fios e cabeados. O canal de comunicação 16 pode fazer parte de uma rede baseada em pacotes, uma rede de área local, uma rede de área estendida ou uma rede global como a Internet. O canal de comunicação 16 representa geralmente qualquer meio de comunicação adequado com coleção de meios de comunicação diferentes, para transmitir dados de vídeo do aparelho de origem 12 para o aparelho de destino 14, inclusive qualquer combinação adequada de meios cabeados ou sem fio. O canal de comunicação 16 pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do aparelho de origem 12 com o aparelho de destino 14.
[0059] O codificador de vídeo 29 e o decodificador de vídeo 30 podem funcionar de acordo com um padrão de compactação de vídeo, tal como o padrão de Codificação de Vídeo de Alta Eficácia (HEVC)atualmente em desenvolvimento e podem conformar-se com o modelo de teste HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem funcionar de acordo com outros padrões patenteados ou industriais, tais como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC) ou extensões de tais padrões. As técnicas desta revelação, contudo, não estão limitadas a qualquer padrão de codificação específico.
[0060] Embora não mostrado na Figura 1, sob alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, integrados com um codificador e decodificador de áudio e podem incluir unidades MUX-DMUX ou outro hardware e software, para processar a codificação tanto de áudio quanto de vídeo em um fluxo de dados comum ou em fluxos de dados separados. Se aplicável, em alguns exemplos, as unidade MUX-DEMUX podem conformar-se ao protocolo de multiplexador ITU H.223 ou a outros protocolos tais como o protocolo de datagrama de usuário (UDP).
[0061] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, implementados, como qualquer um de diversos conjuntos de circuitos de codificador ou decodificador adequados, conforme aplicável, que incluem um processador, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), processadores ou circuito de processamento para fins especiais, circuito integrados específico de aplicativo (ASICs), arranjo de portas programáveis no campo (FPGAs), conjunto de circuito lógico fixo, lógica discreta, software, hardware, firmware ou qualquer combinação deles. Por conseguinte, as diversas unidades dentro do codificador de vídeo 20 e do decodificador de vídeo 30 podem ser igualmente implementadas por qualquer um de diversos elementos estruturais que tais ou combinações deles. Quando as técnica são implementadas em software, um aparelho pode armazenar instruções para o software em um meio passível de leitura por computador não transitório adequado e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta revelação. Cada um do codificador de vídeo 20 e do decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, um ou outro dos quais pode ser integrado como parte de um codificador/decodificador (CODEC) combinado em um respectivo aparelho.
[0062] Esta revelação pode referir-se de maneira geral à “sinalização” pelo codificador de vídeo 20 de determinadas informações para outro aparelho, tal como o decodificador de vídeo 30. Deve ficar entendido que o codificador de vídeo 20 pode sinalizar informações associando determinados elementos de sintaxe com diversas partes codificadas de dados de vídeo. Ou seja, o codificador de vídeo 20 pode “sinalizar” dados armazenando determinados elementos de sintaxe em cabeçalhos de diversas partes codificadas de partes de vídeo. Em alguns casos, tais elementos de sintaxe podem ser codificados e armazenados (armazenados no aparelho de armazenamento 32, por exemplo) antes de serem recebidos e decodificados pelo decodificador de vídeo 30. Assim, o termo “sinalização” pode referir-se de maneira geral à comunicação de dados de sintaxe ou outros dados para decodificar dados de vídeo compactados, quer tal comunicação ocorra em tempo real ou tempo quase real ou dentro de uma extensão de tempo, tal como pode ocorrer quando se armazenam elementos de sintaxe em um meio do momento da codificação, os quais podem ser então recuperados por um aparelho de decodificação em qualquer momento depois de serem armazenados neste meio.
[0063] Conforme observado acima, a JST-VC está trabalhando no desenvolvimento do padrão HEVC. Os esforços de padronização HEVC são baseados em um modelo de evolução de um aparelho de codificação de vídeo referido como Modelo de Teste HEVC (HM). O HM presume várias capacidades adicionais de aparelhos de codificação de vídeo com relação a aparelhos existentes de acordo com, por exemplo, o ITU-T H.264-AVC. Esta revelação utiliza tipicamente o termo “bloco de vídeo” para referir-se a um nó de codificação de uma CU. Em alguns casos específicos, esta revelação pode utilizar também o termo “bloco de vídeo” para referir-se a um bloco de árvore, isto é, LCU, ou uma CU, que inclui um nó de codificação e PUs e TUs.
[0064] Uma sequência de vídeo inclui tipicamente uma serie de quadros ou imagens de vídeo. Um grupo de imagens (GOP) compreende geralmente uma série de uma ou mais das imagens de vídeo. UM GOP pode incluir dados de sintaxe no cabeçalho do GOP, um cabeçalho de uma ou mais das imagens ou em outro lugar, que descreve o número de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a respectiva fatia. O codificador de vídeo 20 funciona tipicamente em blocos de vídeo dentro de fatias de vídeo individuais de modo a codificar os dados de vídeo. Um bloco de vídeo pode corresponder à um nó de codificação dentro uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis e podem diferir de tamanho de acordo com um padrão de codificação especificado.
[0065] Como um exemplo, e conforme observado acima, o HM suporte predição em diversos tamanhos de PU (também referidos como tipos de PU. Supondo que o tamanho de uma CU específica seja 2Nx2N, o HM suporta intra-predição em tamanhos de PU de 2Nx2N ou NxN e inter-predição em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N ou NxN. O HM suporta também particionamento assimétrico para inter-predição em tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. No particionamento assimétrico uma direção de uma CU não é particionada, enquanto a outra direção é particionada em 25% e 75%. A parte da CU que corresponde à partição de 25% é indicada por um n seguido de uma indicação de “Para Cima”, “Para Baixo”, “Esquerda” ou “Direita”. Assim, por exemplo, “2NxnU” refere-se a uma CU de 2Nx2N que é particionada em sentido horizontal com uma PU de 2Nx0,5N no topo e uma PU de 2Nx1,5N na base. São também possíveis outros tipos de particionamento.
[0066] Nesta revelação, “NxN” e “N por N” podem ser utilizados de maneira intercambiável para referir-se às dimensões de pixel de um bloco de vídeo em termos de dimensões vertical e horizontal, como, por exemplo, 16x16 pixels ou 16x16 pixels. Em geral, um bloco de 16x16 terá 16 pixels na direção vertical (y = 16) e 16 pixels na direção horizontal (x = 16). Da mesma maneira, um NxN bloco tem geralmente N pixels na direção vertical N pixels na direção horizontal, onde N representa um valor de número inteiro não negativo. Os pixels em um bloco podem ser dispostos em fileiras e colunas. Além do mais, os blocos não precisam ter necessariamente o mesmo número de pixels na direção horizontal que têm direção vertical. Por exemplo, os blocos podem compreender NxM pixels, onde M não é necessariamente igual a N.
[0067] Em seguida à codificação intra-preditiva ou inte- rpreditiva que utiliza as PUs de uma CU, o codificador de vídeo 20 pode calcular dados residuais para as TUs da CU. As PUs podem compreender dados de pixel no domínio espacial (também referido como domínio de pixel) e as TUs podem compreender coeficientes de transformada em seguida a aplicação de uma transformada, como, por exemplo, uma transformada de co-seno discreta (DCT), uma transformada de número inteiro, uma transformada de wavelet ou uma transformada conceptualmente diferente semelhante a dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixel entre os pixels da imagem original, não codificada, e valores de predição que correspondem às PUs. O codificador de vídeo 20 pode formar as TUs que incluem os dados residuais para a CU e em seguida transformar as TUs de modo a produzir coeficientes de transformada para a CU.
[0068] Em alguns exemplos, conforme observado acima, as TUs podem ser definidas de acordo com o RQT. Por exemplo, um RQT pode representar a maneira pela qual transformadas (como, por exemplo, DCT, transformada de número inteiro, transformada de wavelet ou uma ou mais outras transformadas são aplicadas às amostras luma residuais e às amostras croma residuais associadas a um bloco de dados de vídeo. Ou seja, conforme observado acima, as amostras residuais que correspondem a uma CU podem ser subdivididas em unidades menores utilizando-se um RQT. Em geral, o RQT é uma representação recursiva do particionamento de uma CU em TUs.
[0069] Em seguida, à aplicação de quaisquer transformadas a dados residuais para produzir coeficientes de transformada, o codificador de vídeo 20 pode efetuar a quantificação dos coeficientes de transformada. A quantificação refere-se de maneira geral os coeficientes de transformada são quantificados de modo a se reduzir possivelmente a quantidade de dados representados para representar os coeficientes, obtendo-se compactação adicional. O processo de quantificação pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para um valor de m bits durante a quantificação, onde n é maio que m.
[0070] Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura pré-definida para varrer os coeficientes de transformada quantificados de modo a produzir um vetor serializado que pode ser quantificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode efetuar uma varredura adaptativa. Depois de varrer os coeficientes de transformada quantificados de modo a formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia um vetor unidimensional, como, por exemplo, de acordo com a codificação de comprimento variável adaptativa ao contexto (CAVLC), a codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação por Entropia com Particionamento de Intervalos de Probabilidade (PIPE), ou outra metodologia de codificação por entropia. O codificador de vídeo 20 pode também codificar por entropia elementos de sintaxe associados aos dados de vídeo codificados para utilização pelo decodificador de vídeo 30 na decodificação dos dados de vídeo. Uma versão atual da HEVC é projetada para utilizar a CABAC para codificação por entropia.
[0071] Em alguns exemplos, o codificador de vídeo 20 pode codificar elementos de sintaxe utilizando uma combinação de codificação adaptativa ao contexto e não adaptativa ao contexto. Por exemplo, o codificador de vídeo 20 pode codificar por contexto binários selecionando um modelo de probabilidade ou “modelo de contexto” que funciona com base no contexto de modo a codificar os binários. Em contraste, o codificador de vídeo 20 pode codificar por desvio binários desviando-se do ou omitindo o processo de codificação aritmética regular quando codifica os binários. Em tais exemplos, o codificador de vídeo 20 pode utilizar um modelo de probabilidade fixo para codificar por desvio os binários.
[0072] Conforme observado acima, o processo de atualização de modelo de probabilidade associado à codificação por contexto pode introduzir retardo no processo de codificação. Por exemplo, o codificador de vídeo 20 pode codificar por contexto uma sequência de binários (binário(0), binário(1),... binário(n), por exemplo) de um índice de referência (idx_ref). Um único índice de referência (idx_ref) pode incluir, por exemplo, até 15 binários. Suponha-se, para fins de explanação, que o codificador de vídeo 20 derive três contextos para codificar os binários e aplique os contextos com base no número de binário que é codificado (indicado utilizando-se índices de contexto ctx(0), ctx(1) e ctx(2), por exemplo). Ou seja, neste exemplo, o codificador de vídeo 20 pode utilizar o ctx(0) para codificar o binário(0), ctx(1) para codificar o binário(1) e ctx(2) para codificar os binários restantes (os binários (2) ao binário(n), por exemplo).
[0073] No exemplo descrito acima o terceiro contexto (ctx(2)) é compartilhado entre vários binários (até 13 binários, por exemplo). A utilização do mesmo modelo de probabilidade para codificar o binário(2) ao binário(n) desta maneira pode produzir um retardo entre ciclos de codificação sucessivos. Por exemplo, a chamada repetida do mesmo contexto e a espera pela atualização do modelo após cada binário pode apresentar um gargalo para a capacidade de transmissão do codificador.
[0074] Além do mais, a correlação entre o binário(2) e o binário(n) pode não ser suficiente para garantir os recursos de tempo e computacionais associados à atualização do modelo de probabilidade. Ou seja, um benefício potencial da codificação adaptativa ao contexto é a capacidade de adaptar um modelo de probabilidade com base em binários codificados anteriormente (dado o mesmo contexto). Se o valor de um primeiro binário, contudo, tiver pouca relação com, ou se basear no valor de um binário subsequente, pode haver pouco ganho de eficácia associado à atualização de probabilidade. Por conseguinte, os binários que apresentam uma baixa correlação podem não se beneficiar da codificação adaptativa ao contexto tanto quanto os binários que têm correlações relativamente mais elevadas.
[0075] De acordo com os aspectos desta revelação, o codificador de vídeo 20 pode codificar um elemento de sintaxe de índice de referência codificando pelo menos um binário de um valor de índice de referência binarizado com um processo de codificação aritmética binária adaptativa ao contexto (CABAC) e codificando pelo menos outro binário do valor de índice de referência binarizado com um modo de codificação por desvio do processo de codificação aritmética binária adaptativa ao contexto (CABAC).
[0076] Em um exemplo para fins de ilustração, o codificador de vídeo 20 pode aplicar ctx(0) ao binário(0), ctx(1) ao binário(1), ctx(2) ao binário(2) e pode codificar por desvio os binários restantes do valor de índice de referência sem necessidade de contextos. Em outras palavras, o codificador de vídeo pode utilizar ctx(2) como o contexto para codificar com CABAC o binário(2) de um valor de índice de referência binarizado, mas pode codificar por desvio quaisquer binários que se sigam ao binário(2).
[0077] Dado que os valores de índice de referência podem ser de 15 binários ou mais de comprimento, a limitação do número de binários que são codificados por contexto desta maneira pode produzir uma economia computacional e/ou de tempo versus a codificação por contexto de todos os binários de índice de referência. Além do mais, conforme observado acima, a correlação entre os bits de um valor de índice de referência pode não ser elevada (como, por exemplo, o valor do binário(3) do valor de índice de referência pode não fornecer uma indicação útil referente à probabilidade de o binário (4) ter um valor de “1” ou “0”), o que reduz o benefício da codificação por contexto. Por conseguinte, a quantidade de recursos de tempo e computacionais economizada pela codificação por contexto de menos binários de um valor de índice de referência pode ser mais importante que os ganhos de eficácia de codificação associados à codificação por contexto de todos os binários do valor de índice de referência.
[0078] De acordo com outros aspectos desta revelação, o codificador de vídeo 20 pode agrupar binários codificados por contexto e binários não codificados por contexto durante a codificação. Por exemplo, conforme observado acima, alguns elementos de sintaxe podem ser codificados utilizando-se uma combinação de codificação por contexto e codificação por desvio. Ou seja, alguns elementos de sintaxe podem ter um ou mais binários que são codificados por contexto e um ou mais outros binários que são codificados por desvio.
[0079] Em alguns exemplos, o codificador de vídeo 20 pode comutar entre codificação por contexto e codificação por desvio para codificar uma sequência de elementos de sintaxe. Entretanto, a comutação entre codificação por contexto e codificação por desvio pode consumir um ou mais ciclos de relógio. Por conseguinte, a comutação entre codificação por contexto e codificação por desvio para cada elemento pode introduzir latência, devido às transições entre codificação por contexto e codificação por desvio.
[0080] De acordo com os aspectos desta revelação, o codificador de vídeo 20 pode agrupar binários codificados por contexto e binários não codificados por contexto (binários de desvio, por exemplo) durante a codificação. Por exemplo, o codificador de vídeo 20 pode codificar por contexto binários associados a mais de um elemento de sintaxe. O codificador de vídeo 20 pode em seguida codificar por desvio binários associados ao mais de um elemento de sintaxe. Em outros exemplos, o codificador de vídeo 20 pode efetuar a codificação por desvio antes da codificação por contexto. Seja como for, as técnicas permites que o codificador de vídeo 20 reduza ao mínimo as transições entre a codificação por contexto e a codificação por desvio. Por conseguinte, os aspectos desta revelação podem reduzir a latência quando se codificam elementos de sintaxe que incluem uma combinação de binários codificados e binários codificados por desvio.
[0081] O decodificador de vídeo 30 ao receber os dados de vídeo codificados, pode efetuar uma passagem de decodificação geralmente correspondente à passagem de codificação descrita com relação ao codificador de vídeo 20. Por exemplo, o decodificador de vídeo 30 pode receber um fluxo de bit codificado e decodificar o fluxo de bits. De acordo com aspectos desta revelação, por exemplo, o decodificador de vídeo 30 pode decodificar um elemento de sintaxe de índice de referência codificando pelo menos um binário de valor de índice de referência binarizado com um processo de codificação aritmética binária adaptativa ao contexto (CABAC) e codificando pelo menos outro binário do valor de índice de referência binarizado com um modo de codificação por desvio do processo de codificação aritmética binária adaptativa ao contexto (CABAC).
[0082] De acordo com outros aspectos desta revelação, o decodificador de vídeo 30 pode decodificar um fluxo de bits que tem binários codificados por contexto e binários não codificados por contexto (binários de desvio, por exemplo) agrupados. Por exemplo, o decodificador de vídeo 30 pode decodificar binários codificados por contexto associados a mais de um elemento de sintaxe. O decodificador de vídeo 30 pode em seguida decodificar binários codificados por desvio associados ao mais de um elemento de sintaxe. Em outros exemplos, o decodificador de vídeo 30 pode executar a codificação por desvio antes da codificação por contexto (dependendo da disposição de binários no fluxo de bits que é decodificado). Seja como for, as técnicas permitem que o decodificador de vídeo 30 reduza ao mínimo as transições entre codificação por contexto e codificação por desvio. Por conseguinte, os aspectos desta revelação podem reduzir a latência quando se codificam elementos de sintaxe que incluem uma combinação de binários codificados por contexto e binários codificados por desvio.
[0083] A Figura 2 é um diagrama de blocos que mostra um exemplo de codificador de vídeo 20 que pode utilizar técnicas para codificar dados de predição de acordo com exemplos desta revelação. Embora aspectos do codificador de vídeo 20 sejam descritos no contexto da codificação HEVC para fins de exemplificação, as técnicas desta revelação não estão limitadas a qualquer padrão ou método de codificação específico que possa exigir codificação de dados de predição.
[0084] O codificador de vídeo 20 pode efetuar intra- e inter-codificação de CUs dentro de imagens de vídeo. A intra-codificação recorre à predição espacial para reduzir ou remover a redundância espacial em dados de vídeo dentro de uma dada imagem. A inter-codificação recorre à predição temporal para reduzir ou remover a redundância temporal entre a imagem atual e imagens codificadas anteriormente de uma sequência de vídeo. O intra-modo (modo I) pode referir- se a qualquer um de vários modos de compactação espacial de vídeo. Inter-modos tais como predição unidirecional (modo P) ou predição bidirecional (modo B) podem referir-se a qualquer um de vários modos de compactação temporal de vídeo.
[0085] Conforme mostrado na Figura 2 o codificador de vídeo 20 recebe o bloco de vídeo atual dentro de uma imagem a ser codificada. No exemplo da Figura 2, o codificador de vídeo 20 inclui uma unidade de compensação de movimento 44, uma unidade de estimação de movimento 42, uma unidade de intra-predição 46, uma memória de imagens de referência 64, um somador 50, uma unidade de processamento de transformadas 52, uma unidade quantificação 54 e uma unidade de codificação por entropia 56. A unidade de processamento de transformadas 52 mostrada na Figura 2 é a unidade que aplica a transformada real ou combinações de transformada a um bloco de dados residuais e não deve ser confundida com um bloco de coeficiente de transformada, que pode ser referida como uma unidade de transformada (TU) de uma CU. Para reconstrução de blocos de vídeo, o codificador de vídeo inclui também uma unidade de quantificação inversa 58, uma unidade de processamento de transformada inversa 60 e um somador 62. Um filtro de desbloqueio (não mostrado na Figura 2) pode ser também incluído para filtrar fronteiras entre blocos de modo a remover artefatos de bloqueio do vídeo reconstruído. Se desejado, o filtro de desbloqueio filtraria tipicamente a saída do somador 62.
[0086] Durante o processo de codificação, o codificador de vídeo 20 recebe uma imagem ou fatia a ser codificada. A imagem ou fatia pode ser dividida em vários blocos de vídeo, como, por exemplo, as maiores unidades de codificação (LCUs). A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 efetuam codificação inter-preditiva do bloco de vídeo recebido com relação a um ou mais blocos em uma ou mais imagens de referência de modo a se obter compactação temporal. A unidade de intra-predição 46 pode efetuar codificação intra-preditiva do bloco de vídeo recebido com relação a um ou mais blocos vizinhos na mesma imagem ou fatia no bloco a ser codificado de modo a se obter compactação espacial.
[0087] A unidade de seleção de modo pode selecionar um dos modos de codificação, intra- ou inter-, como, por exemplo, com base em resultados de erro (isto é, distorção) para cada modo, e fornece o bloco intra- ou inter-predito resultante (uma unidade de predição (PU), por exemplo) ao somador 50 de modo a gerar dados de blocos residuais e ao somador 62 de modo a reconstruir o bloco codificado para utilização em uma imagem de referência. O somador 62 combina o bloco predito com dados quantificados por inversão, transformados por inversão da unidade de processamento de transformada inversa 60 para o bloco de modo a reconstruir o bloco codificado, conforme descrito mais detalhadamente a seguir. Algumas imagens podem ser designadas como quadros I, onde todos os blocos em um quadro são codificados em um modo de intra-predição. Em alguns casos a unidade de intra-predição pode efetuar codificação intra-preditiva de um bloco em uma imagem predita de maneira antecipada (quadro P) ou uma imagem bi- predita (quadro B), como, por exemplo, quando a busca de movimento efetuada pela unidade de estimação de movimento 42 não resulta em uma predição suficiente do bloco.
[0088] A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são mostradas separadamente para fins conceptuais. A estimação de movimento (ou busca de movimento) é o processo de gerar vetores de movimento, que estimam o movimento para blocos de vídeo. Um vetor de movimento pode indicar o deslocamento de uma unidade de predição na imagem atual com relação a uma amostra de referência de uma imagem de referência. A unidade de estimação de movimento 42 calcula um vetor de movimento para uma unidade de predição de uma imagem inter-codificada pela comparação da unidade de predição com amostras de referência de uma imagem de referência armazenada na memória de imagens de referência 64.
[0089] Um bloco preditivo (também referido como amostra de referência) é um bloco que se verifica corresponder intimamente ao bloco a ser codificado, em termos de diferença de pixel, o que pode ser determinado pela soma da diferença absoluta (SAD), pela soma da diferença ao quadrado (SSD) ou por outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de sub-pixel de número inteiro de imagens de referência armazenadas na memória de imagem de referência 64, que pode ser também referida como buffer de imagens de referência. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de um quarto de pixel, posições de um oitavo de pixel ou outras posições de pixel fracionárias da imagem de referência. Portanto, a unidade de estimação de movimento 42 pode efetuar uma busca de movimento com relação às posições de pixel inteiro e às posições de pixel fracionárias e transmitir um vetor de movimento com precisão de pixel fracionária.
[0090] A unidade de estimação de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. Por conseguinte, em geral, os dados para um vetor de movimento podem inclui uma lista de imagem de referência, um índice na lista de imagens de referência (idx_ref), um componente horizontal e um componente vertical. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0), uma segunda lista de imagens de referência (Lista 1) ou de uma lista de imagens de referência combinadas (Lista c) cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64.
[0091] A unidade de estimação de movimento 42 pode gerar e enviar um vetor de movimento que identifica o bloco preditivo da imagem de referência à unidade de codificação por entropia 56 e à unidade de compensação de movimento 44. Ou seja, a unidade de estimação de movimento 42 pode gerar e enviar dados de vetor de movimento que identificam a lista de imagens. de referência que contêm o bloco preditivo, o índice na lista de imagens de referência que idêntica a imagem do bloco preditivo e um componente horizontal e vertical para localizar o bloco preditivo dentro da imagem identificada.
[0092] Em alguns exemplos, em vez de enviar o vetor de movimento real para a PU atual, a unidade de estimação de movimento 42 pode predizer o vetor de movimento de modo a reduzir ainda mais a quantidade de dados necessários para comunicar o vetor de movimento. Neste caso, em vez codificar e comunicar o vetor de movimento propriamente dito, a unidade de estimação de movimento 42 pode gerar uma diferença entre vetores de movimento (MVD) com relação a um vetor de movimento conhecido ou (passível de se conhecer). A MVD pode incluir um componente horizontal e um componente vertical que correspondem ao componente horizontal e ao componente vertical do vetor de movimento conhecido. O vetor de movimento conhecido, que pode ser utilizado com a MVD para definir o vetor de movimento atual, pode ser definido pelo chamado preditor de vetor de movimento (MVP), em geral para ser um MVP válido, o vetor de movimento que é utilizado na predição deve indicar a mesma imagem de referência do vetor de movimento que está sendo codificado atualmente.
[0093] Quando vário candidatos a preditores de vetores de movimento estão disponíveis, (de vários blocos candidatos) a unidade de estimação de movimento 42 pode determinar um preditor de vetores de movimento para o bloco atual de acordo com critérios de seleção pré-determinados. Por exemplo, a unidade de estimação de movimento 42 pode selecionar o preditor mais preciso do conjunto de candidatos com base na análise da taxa de codificação e na distorção (utilizando uma análise de custo de taxa- distorção ou análise ou outra análise de eficácia de codificação, por exemplo). Em outros exemplos, a unidade de estimação de movimento 42 pode gerar uma média dos candidatos a preditor de vetores de movimento. São também possíveis outros métodos para selecionar um preditor de vetores de movimento.
[0094] Ao selecionar um preditor de vetores de movimento a unidade de estimação de movimento pode determinar um índice de preditor de vetores de movimento (indicador_de_mvp), que pode ser utilizado para informar a um decodificador de vídeo, (tal como o decodificador de vídeo 30, por exemplo) onde localizar o MVP em uma lista de imagens de referência que contêm blocos candidatos a MVP. A unidade de estimação de movimento 42 pode determinar também a MVD (componente horizontal e componente vertical entre o bloco atual e o MVP selecionado). O índice de MVP e a MVD pode ser utilizado para reconstruir o vetor de movimento.
[0095] Em alguns exemplos, a unidade de estimação de movimento 42 pode em vez disso, implementar o chamado “modo de fusão”, no qual a unidade de estimação de movimento 42 pode “fundir” informações de movimento (tais como vetores de movimento, índices de imagem de referência, direções de predição ou outras informações) de um bloco de vídeo preditivo com o bloco de vídeo atual. Por conseguinte, com relação ao modo de fusão, o bloco de vídeo atual herda as informações de movimento de outro bloco de vídeo conhecido (ou passível de se conhecer). A unidade de estimação de movimento 42 pode construir uma lista de candidatos ao modo de fusão que inclui vários blocos vizinhos em direções espaciais e/ou temporais como candidatos para o modo de fusão. A unidade de estimação de movimento 42 pode determinar um valor de índice (idx_de_fusao, por exemplo) que pode ser utilizado para informar a um decodificador de vídeo (tal como o decodificador de vídeo 30, por exemplo) onde localizar o bloco de vídeo em fusão em uma lista de imagem de referência que contém os blocos candidatos à fusão.
[0096] A unidade de intra-predição pode intra-predizer o bloco recebido, como uma alternativa para a inter-predição executada pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44. A unidade de intra- predição 46 pode predizer o bloco recebido com relação a blocos vizinhos, codificados anteriormente, como, por exemplo, blocos acima, acima e à direita, acima e à esquerda ou à esquerda do bloco atual, supondo-se uma ordem de codificação da esquerda para a direita, do topo para a se para os blocos. A unidade de intra-predição 46 pode ser configurada com diversos modos de intra-predição diferentes. Por exemplo, a unidade de intra-predição 46 pode ser configurada com um determinado número de modos de predição direcionais, como, por exemplo, trinta e quatro modos de predição direcionais, com base no tamanho da CU que é codificada.
[0097] A unidade de intra-predição 46 pode selecionar um modo de intra-predição, por exemplo, calculando valores de erro para diversos modos de intra-predição e selecionando um modo que apresente o valor de erro mais baixo. Os modos de predição direcionais podem incluir funções para combinar valores de pixels espacialmente vizinhos e aplicar os valores combinados a uma ou mais posições de pixel em uma PU. Uma vez que os valores para todas as posições de pixel na PU tenham sido calculados, a unidade de intra-predição 46 pode calcular um valor de erro para o modo de predição com base nas diferenças de pixel entre a PU e o bloco recebido a ser codificado. A unidade de intra-predição 46 pode continuar a testar modos de intra-predição até que um modo de intra-predição que apresente um valor de erro aceitável seja descoberto. A unidade de intra-predição 43 pode enviar então a PU ao somador 50.
[0098] O codificador de vídeo 20 forma um bloco residual ao subtrair os dados de predição calculados pela unidade de compensação de movimento 44 ou pela unidade de intra- predição 46 do bloco de vídeo original que é codificado. O somador 50 representa o componente ou componentes que executam esta operação de subtração. O bloco residual pode corresponder a uma matriz bidirecional de valores de diferença de pixel, onde o número de valores no bloco residual é o mesmo número de pixels na PU que corresponde ao bloco residual. Os valores no bloco residual podem corresponder às diferenças, isto é, erro entre os valores de pixels co-localizados na PU e no bloco original a ser codificado. As diferenças podem ser diferenças croma ou luma dependendo do tipo de bloco que codificado.
[0099] A unidade de processamento de transformadas 52 pode formar uma ou mais unidades transformadas (TUs) a partir do bloco residual. A unidade de processamento de transformadas 52 seleciona uma transformada dentre uma série de transformadas. A transformada pode ser selecionada com base em uma ou mais características de codificação, tais como tamanho de bloco, modo de codificação ou semelhantes. A unidade de processamento de transformadas 52 em seguida aplica a transformada selecionada à TU, produzindo um bloco de vídeo que compreende um arranjo bidimensional.
[0100] A unidade de processamento de transformadas 52 pode enviar os coeficientes de transformada resultantes à unidade quantificação 54. A unidade quantificação 54 pode em seguida quantificar os coeficientes de transformada. A unidade de codificação por entropia 56 pode efetuar então uma varredura dos coeficientes de transformada quantificados na matriz de acordo com um modo de varredura. Esta revelação descreve a unidade de codificação por entropia 56 como efetuando a varredura. Entretanto, deve ficar entendido que em outros exemplos, outras unidades de processamento, tais como a unidade quantificação 54, podem efetuar a varredura.
[0101] Uma vez que os coeficientes de transformada são varridos sob a forma de um arranjo unidimensional, a unidade de codificação por entropia 56 pode aplicar codificação por entropia tal como CAVLC, CABAC, codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SCABAC), Entropia com Particionamento de Intervalos de Probabilidade (PIPE) ou outra metodologia de codificação por entropia para os coeficientes.
[0102] Para efetuar CABAC, a unidade de codificação por entropia 56 pode selecionar um modelo de contexto para aplicar a um determinado contexto de modo a codificar símbolos a serem transmitidos. O contexto referir-se a, por exemplo, se valores vizinhos são não 0 ou não. A unidade de codificação por entropia 56 pode também codificar por entropia elementos de sintaxe, tais como o sinal que representa a transformada selecionada.
[0103] A unidade de codificação por entropia 56 pode codificação por entropia dados de predição. Quando dados de vídeo são inter-preditos, os dados de predição podem incluir valores de índice de referência, vetores de movimento, preditores de vetores de movimento, valores de diferença entre vetores de movimento e semelhantes. Ou seja, conforme observado acima, a estimação de movimento (pela unidade de estimação de movimento 42) determina um ou mais índices para as imagens de referência (idx_ref) e uma direção de predição (dir_pred: para frente, para trás ou bidirecional). A unidade de codificação por entropia 56 pode codificar por entropia elementos de sintaxe que representam vetores de movimento (como, por exemplo, um componente horizontal e um componente vertical dos vetores de movimento), índices de imagens de referência e direção de predição. A unidade de codificação por entropia 56 pode incluir os elementos de sintaxe codificados em um fluxo de bits de vídeo codificado, que pode ser então decodificado por um decodificador de vídeo (tal como o decodificador de vídeo 30, descrito em seguida) para utilização em um processo de decodificação de vídeo. Os seja, estes elementos de sintaxe podem ser providos para uma PU inter- codificada de modo a permitir que o decodificador de vídeo 30 decodifique e reproduza dados de vídeo definidos por uma PU.
[0104] Em alguns exemplos, conforme descrito mais detalhadamente com relação à Figura 4 abaixo, a unidade de codificação por entropia 56 (ou outra unidade de codificação do codificador de vídeo 20) pode binarizar os elementos de sintaxe antes de codificar por entropia os elementos de sintaxe. Por exemplo, a unidade de codificação por entropia pode converter o valor absoluto de cada elemento de sintaxe que é codificado em forma binária. A unidade de codificação por entropia 56 pode utilizar um processo de codificação unário truncado ou outro para binarizar os elementos de sintaxe. Com relação aos valores de índice de referência, se o número máximo de imagem de referência em uma lista de imagens de referência for quatro, isto é, o índice de referência (idx_ref) tem um valor que varia na faixa de 0 a 3, então pode ser aplicada a binarização seguinte da Tabela 1. TABELA 1 Conforme mostrado na Tabela 1 o valor binarizado varia de um bit a três bits, dependendo do valor do índice de referência.
[0105] Em alguns exemplos, a unidade de codificação por entropia 56 pode codificar por entropia valores de índice de referência utilizando três contextos diferentes (ctx0, ctx1 ctx2, por exemplo). Por exemplo, a unidade de codificação por entropia 56 pode codificar por entropia um primeiro binário (bin0) e um segundo binário (bin1) utilizando ctx0 e ctx1 respectivamente, e um terceiro binário (bin2) e outros binários são codificados com o contexto ctx2. Neste exemplo, ctx2 é compartilhado entre todos os binários começando do e incluindo o bin2, isto é, bin2 e binários depois do binb2, como, por exemplo, bin3, bin4 e assim por diante. Em alguns exemplos, binários adicionais além do bin2 podem ser providos, como, por exemplo, se o número máximo de imagens de referência for maior que 4.
[0106] Conforme observado acima, o compartilhamento do contexto ctx2 entre os binários pode ser ineficaz, devido às atualizações de probabilidade associadas à codificação por contexto. De acordo com aspectos desta revelação, a unidade de codificação por entropia 56 pode codificar com CABAC um valor de índice de referência dedicando ctx2 à codificação do bin2 e à codificação de todos os binários depois do bin2 utilizando um modo de codificação por desvio. Mais uma vez, a codificação por desvio inclui geralmente codificar binários utilizando uma probabilidade fixa (contextos não são necessários). Por exemplo, a unidade de codificação por entropia 56 pode codificação por desvio binários depois do bin2 de um valor de índice de referência utilizando codificação de Golomb, codificação de Golomb exponencial, codificação de Golomb-Rice ou outro processo de codificação que se desvie de uma máquina de codificação CABAC.
[0107] Em outro exemplo, a unidade de codificação por entropia 56 pode codificação por contexto um número menor de binários de um valor de índice de referência removendo ctx2. Ou seja, de acordo com aspectos desta revelação, a unidade de codificação por entropia 56 pode codificador o bin2 e todos os binários posteriores utilizando um modo de desvio CABAC. Neste exemplo, a unidade de codificação por entropia pode codificar com CABAC o bin0 utilizando o contexto ctx0 e o bin1 utilizando o contexto ctx1, e pode codificação por desvio o bin2 e outros binários que se seguem ao bin2 utilizando um modo de desvio CABAC. A remoção de um contexto de maneira pode reduzir a complexidade total associada à codificação de valores de índice de referência.
[0108] Em ainda outro exemplo, a unidade de codificação por entropia 56 pode codificar um número menor de binários de um valor de índice de referência removendo tanto o ctx1 quanto o ctx2. Ou seja, de acordo com aspectos desta revelação, a unidade de codificação por entropia 56 pode codificar o bin1 e todos os binários utilizando um modo de desvio CABAC, reduzindo assim ainda mais a complexidade associada à codificação de valores de índice de referência. Neste exemplo, a unidade de codificação por entropia 56 pode codificar com CABAC o bin0 utilizando o contexto ctx0 e pode codificar por desvio o bin1 e o bin2 e outros binários que se seguem aos bin2 utilizando um modo de desvio CABAC.
[0109] Outros aspectos desta revelação referem-se de maneira geral à maneira pela qual a unidade de codificação por entropia 56 binariza o valor de índice de referência. Por exemplo, conforme observado acima, a unidade de codificação por entropia 56 pode binarizar valores de índice de referência utilizando um processo de codificação unário, unário truncado ou outro. Em outro exemplo, a unidade de codificação por entropia 56 pode utilizar um processo de codificação de Golomb exponencial para binarizar um valor de índice de referência.
[0110] Em alguns exemplos, de acordo com aspectos desta revelação, a unidade de codificação por entropia 56 pode implementar uma combinação de processos de binarização. Por exemplo, conforme descrito mais detalhadamente com relação à Figura 4 abaixo, a unidade de codificação por entropia 56 pode combinar um processo de codificação unário, ou unário truncado, com um processo de codificação de Golomb exponencial para binarizar valores de índice de referência. Em um exemplo para fins de ilustração, a unidade de codificação por entropia 56 pode combinar um código unário truncado de comprimento (4) com um código de Golomb exponencial (um código de Golomb exponencial de ordem 0). Em tal exemplo, a unidade de codificação por entropia 56 pode binarizar um primeiro número de binários (dois, três, quatro ou semelhantes, por exemplo) de um valor de índice de referência utilizando um código unário e pode binarizar os binários do índice de referência utilizando um código de Golomb exponencial.
[0111] Seja como for, a unidade de codificação por entropia 56 pode implementar as técnicas para codificar por contexto um ou mais binários de um valor de índice de referência e codificar por desvio um ou mais outros binários do valor de índice de referência com qualquer esquema de binarização. Por exemplo, conforme observado acima, a unidade de codificação por entropia 56 pode codificar por contexto (codificar com CABAC, por exemplo) um primeiro número de binários de um elemento de sintaxe binarizado e codificar por desvio os binários restantes. No exemplo descrito acima, no qual um código unário truncado do comprimento 4 é combinado com um código de Golomb exponencial da ordem 0, a unidade de codificação por entropia 56 pode codificar por contexto os dois primeiros binários (ou qualquer outro número de binários) do código unário truncado e em seguida codificar por desvio a segunda parte do código unário e o código de Golomb exponencial inteiro. Em outros exemplos, a unidade de codificação por entropia 56 pode utilizar outros esquemas de binarização. Por exemplo, a unidade de codificação por entropia 56 pode utilizar um código binário de comprimento fixo em vez do código de Golomb exponencial descrito nos exemplos acima.
[0112] Em alguns exemplos, a unidade de codificação por entropia 56 pode truncar ou remover binários de um valor de índice de referência binarizado antes de codificar o valor. Além disto, ou alternativamente, a unidade de codificação por entropia 56 pode agrupar binários codificados utilizando contexto e binários codificados utilizando um modo de desvio. Por exemplo, a unidade de codificação por entropia 56 pode codificar índices de referência de uma imagem B codificando por contexto um ou mais binários de um primeiro valor de índice de referência, codificar por contexto um ou mais binários de um segundo valor de índice, codificar por desvio um ou mais outros binários do primeiro valor de índice de referência e codificar por desvio um ou mais outros binários do segundo valor de índice de referência (na ordem apresentada acima). Por conseguinte, a unidade de codificação por entropia só transita entre um modo codificação por contexto e um modo de codificação por desvio em um único tempo, como, por exemplo, entre os binários codificados por contexto e os binários não codificados por contexto.
[0113] Em seguida, à codificação por entropia pela unidade de codificação por entropia 56, o vídeo codificado resultante pode ser transmitido para outro aparelho, tal como o decodificador de vídeo 30, ou arquivado para transmissão ou recuperação posterior. A unidade de quantificação inversa 58 unidade de processamento de transformada inversa 60 aplicam quantificação inversa e transformação inversa respectivamente, para reconstruir o bloco residual no domínio de pixel, como, por exemplo, para utilização posterior como um bloco de referência.
[0114] A unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando o bloco residual a um bloco preditivo de uma das imagens da memória de imagens de referência 64. A unidade de compensação de movimento 44 pode também aplicar um ou mais filtros de interpolação ao bloco residual reconstruído de modo a calcular valores de sub-pixel de número inteiro para utilização na estimação de movimento.
[0115] O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado por movimento produzido pela unidade de compensação de movimento 44 de modo a produzir um bloco de vídeo reconstruído para armazenamento na memória de imagens de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência para inter- codificar um bloco em uma imagem subseqüente.
[0116] A Figura 3 é um diagrama de blocos que mostra um exemplo de decodificador de vídeo 30, que decodifica uma sequência de vídeo codificada. No exemplo da Figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, uma unidade de compensação de movimento 72, uma unidade de intra-predição 74, uma unidade de quantificação inversa 76, uma unidade de transformação inversa 78, uma memória de imagens de referência e um somador 80.
[0117] A título de antecedentes, o decodificador de vídeo 30 pode receber dados de vídeo compactados que foram compactados por transmissão por meio de uma rede para dentro das chamadas “unidades de camada de abstração de rede” ou unidades NAL. Cada unidade NAL pode incluir um cabeçalho que identifica o tipo de dados armazenado na unidade NAL. Há dois tipos de dados que são comumente armazenados em unidades NAL. O primeiro tipo de dados armazenado em uma unidade NAL consiste em dados de camada de codificação de vídeo (VCL) que incluem os dados de vídeo compactados. O segundo tipo de dados armazenados em uma unidade NAL é referido como dados não VCL, que incluem informações adicionais tais como conjuntos de parâmetros que definem dados de cabeçalho comuns a um grande número de unidades NAL e informações de aperfeiçoamento suplementares (SEI).
[0118] Por exemplo, os conjuntos de parâmetros podem conter informações de cabeçalho ao nível de sequência (em conjuntos de parâmetros de sequência (SPS), por exemplo) e informações de cabeçalho ao nível de imagem que se alteram de maneira não freqüente (em conjuntos de parâmetro de imagem (PPS), por exemplo). As informações que se alteram de maneira não freqüente contidas nos conjuntos de parâmetros não precisam ser repetidas para cada sequência ou imagem, aperfeiçoando-se assim a eficácia de codificação. Além disto, a utilização de conjuntos de parâmetros permite transmissão fora da banda de informações de cabeçalho, evitando-se assim a necessidade de transmissões redundantes para resiliência de erros.
[0119] Durante o processo de codificação, o decodificador de vídeo 30 recebe um fluxo de bits codificado que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe conexos. Em geral, a unidade de decodificação por entropia 70 decodifica por entropia o fluxo de bits de modo a gerar coeficientes quantificados, vetores de movimento e outros elementos de sintaxe. O decodificador de vídeo 30 pode receber os elementos de sintaxe ao nível de fatia de vídeo e/ou ao nível de bloco de vídeo.
[0120] Por exemplo, quando uma fatia de vídeo é codificada como uma fatia intra-codificada (I) a unidade de intra-predição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intra-predição sinalizado e dados de blocos decodificados anteriormente da imagem atual. Quando a imagem é codificada como uma fatia inter-codificada (isto é, B, P ou GPB), a unidade de compensação de movimento 72 produz blocos preditivos (também referidos como amostras de referência) para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e em outro elementos de sintaxe recebidos da unidade de decodificação por entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de imagens de referência, Lista 0 e Lista 1, utilizando técnicas de construção pré-definidas baseadas em imagens de referência armazenadas na memória de imagens de referência 82.
[0121] A unidade de decodificação por entropia 70 pode decodificar o fluxo de bits utilizando o mesmo processo implementado no codificador de vídeo 20 (como, por exemplo, CABAC, CVLC, etc.). O processo de codificação por entropia utilizado pelo codificador pode ser sinalizado no fluxo de bits codificado ou pode ser um processo pré-determinado. Por exemplo, a unidade de decodificação por entropia 70 pode receber elementos de sintaxe binarizados codificados. A unidade decodificação por entropia pode decodificar um fluxo de bits (utilizando um modo adaptativo ao contexto ou um modo de desvio, por exemplo) e binarizar os valores decodificados de modo a produzir elementos de sintaxe decodificados.
[0122] Em algumas ocorrências, a unidade de decodificação por entropia 70 pode decodificar por entropia dados de predição. Conforme observado acima com relação ao codificador de vídeo 20, os dados de predição podem incluir dados que indicam valores de índice de referência, vetores de movimento, preditores de vetores de movimento, valores de diferença entre vetores de movimento e semelhantes. Ou seja a unidade de decodificação por entropia 70 pode decodificar por entropia elementos de sintaxe que representam vetores de movimento (um componente horizontal e um componente vertical dos vetores de movimento, por exemplo) índices de imagens de referência e diretores de predição. Estes elementos de sintaxe podem ser providos para uma PU inter-codificada de modo a permitir que o decodificador de vídeo 30 decodifique e reproduza dados de vídeo por uma PU.
[0123] Em alguns exemplos, conforme observado acima, a unidade de decodificação por entropia pode decodificar por entropia valores de índice de referência utilizando três contextos diferentes (ctx0, ctx1 e ctx2, por exemplo). Por exemplo, a unidade de decodificação por entropia 56 pode decodificar por entropia um primeiro binário (bin0) e um segundo binário (Bin1) utilizando ctx0 e ctx1 respectivamente, e decodificar um terceiro binário (bin2) e outros binários com o contexto ctx2. O compartilhamento do contexto ctx2 entre os binários pode ser ineficaz, devido às atualizações de probabilidade associadas à codificação por contexto.
[0124] De acordo com aspectos desta revelação, a unidade de decodificação por entropia 70 pode codificar com CABAC um valor de índice de referência dedicando o ctx2 à codificação do bin2 e codificando todos os binários depois do bin2 utilizando um modo de codificação por desvio. Em outro exemplo, a unidade de decodificação por entropia 70 pode codificar por contexto um número menor de binários de um valor de índice de referência removendo ctx2. Ou seja, de acordo com aspectos desta revelação, a unidade de decodificação por entropia 70 pode decodificar o bin2 e todos os binários posteriores utilizando um modo de desvio CABAC. Em ainda outro exemplo, a unidade de decodificação por entropia 70 pode codificar um número menor de binários de um valor de índice de referência removendo tanto o ctx1 quanto o ctx2. Ou seja, de acordo com aspectos desta revelação, a unidade de decodificação por entropia 70 pode decodificar o bin1 e todos os binários posteriores utilizando um modo de desvio CABAC reduzindo-se ainda mais assim a complexidade associada à codificação de valor de índice de referência.
[0125] Outros aspectos desta revelação referem-se de maneira geral à maneira pela qual a unidade de decodificação por entropia 70 binariza valores de índice de referência. Em alguns exemplos, a unidade de decodificação por entropia 70 pode binarizar valores de índice de referência utilizando um processo de codificação unário truncado ou outro. Em outro exemplo, a unidade de codificação por entropia 56 pode utilizar um processo de codificação de Golomb exponencial para binarizar o valor de índice de referência.
[0126] Em alguns exemplos, de acordo com aspectos desta revelação, a unidade de decodificação por entropia 70 pode implementar uma combinação de processos de binarização. Por exemplo, conforme descrito mais detalhadamente com relação à Figura 4 abaixo, a unidade de decodificação por entropia 70 pode combinar um processo de codificação unário (ou unário truncado) com um processo de codificação de Golomb exponencial para binarizar valores de índice de referência. Em um exemplo, para fins de ilustração, a unidade de decodificação por entropia 70 pode combinar um código unário truncado de comprimento (4) com um código de Golomb exponencial (um código de Golomb exponencial de ordem 0, por exemplo) Em tal exemplo a unidade de decodificação por entropia 70 pode binarizar um primeiro número de binários (dois, três, quatro ou semelhantes, por exemplo) de um valor de índice de referência utilizando um código unário e pode binarizar os binários restantes do índice de referência utilizando um código de Golomb exponencial.
[0127] Seja como for, a unidade de decodificação por entropia 70 pode implementar as técnicas para codificar por contexto um ou mais binários de um valor de índice de referência e codificar por desvio um ou mais outros binários do valor de índice de referência com qualquer esquema de binarização. Por exemplo, conforme observado acima, a unidade de decodificação por entropia 70 pode codificar por contexto (codificar com CABAC, por exemplo) um primeiro número de binários de um elemento de sintaxe binarizado e codificar por desvio os binários restantes. No exemplo descrito acima, no qual um código unário truncado do comprimento (4) é combinado com um código de Golomb exponencial da ordem 0, a unidade de decodificação por entropia pode codificar por contexto os dois primeiros binários (ou qualquer outro número de binários) do código unário truncado e em seguida codificar por desvio a segunda parte do código unário e o código de Golomb exponencial inteiro. Em outros exemplos, a unidade de decodificação por entropia pode utilizar outros esquemas de binarização. Por exemplo, a unidade de decodificação por entropia pode utilizar um código binário de comprimento fixo em vez do código de Golomb exponencial descrito nos exemplos acima.
[0128] Em alguns exemplos, a unidade de decodificação por entropia 70 pode truncar ou remover binários de um valor de índice de referência binarizado antes de codificar o valor. Além disto, ou alternativamente, a unidade de decodificação por entropia 70 pode agrupar binários codificados utilizando contexto e binários codificados utilizando um modo de desvio. Por exemplo, a unidade de decodificação por entropia 70 pode codificar índices de referência de uma imagem B codificando por contexto um ou mais binários de um primeiro valor de índice de referência, codificar por contexto um ou mais binários de um segundo valor de índice, codificar por desvio um ou mais outros binários do primeiro valor de índice de referência e codificar por desvio um ou mais outros binários do segundo valor de índice de referência (na ordem apresentada acima). Por conseguinte, a unidade de codificação por entropia só transita entre um modo codificação por contexto e um modo de codificação por desvio em um único tempo, como, por exemplo, entre os binários codificados por contexto e os binários não codificados por contexto.
[0129] Depois de decodificar por entropia elementos de sintaxe e coeficientes de transformada, em alguns exemplos a unidade de decodificação por entropia 70 (ou a unidade de quantificação inversa 76) pode varrer os valores de coeficientes de transformada recebidos utilizando uma varredura que espelha o modo de varredura pela unidade de codificação por entropia 56 (ou pela unidade quantificação 54) do codificador de vídeo 20. Embora mostradas como unidades funcionais separadas para facilitar a exemplificação, a estrutura e a funcionalidade da unidade de decodificação por entropia 70, da unidade de quantificação inversa 73 e outras unidade do decodificador de vídeo 30 podem ser altamente integradas entre si.
[0130] A unidade de quantificação inversa 76 quantifica por inversão, isto é, desquantifica, os coeficientes de transformada quantificados apresentados no fluxo de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantificação inversa pode incluir um processo convencional, como, por exemplo, semelhante aos processos propostos para a HEVC ou definidos pelo padrão de decodificador H.264. O processo de quantificação inversa pode incluir a utilização de um parâmetro de quantificação QP calculado pelo codificador de vídeo 20 para a CU de modo a se determinar um grau de quantificação e da mesma maneira, um grau de quantificação inversa que deve ser aplicado. A unidade de quantificação inversa 76 pode quantificar por inversão os coeficientes de transformada ou antes ou depois que os coeficientes são convertidos de um arranjo unidimensional a um arranjo bidimensional.
[0131] A unidade de intra-predição 74 pode gerar dados de predição para o bloco atual da imagem atual com base em um modo de intra-predição sinalizado e em dados de blocos decodificados anteriormente da imagem atual. A unidade de compensação de movimento 72 pode recuperar o vetor de movimento, a direção de predição de movimento e o índice de referência do fluxo de bits codificado. A direção de predição de referência indica se o modo de inter-predição é unidirecional (um quadro P, por exemplo) ou bidirecional (um quadro B). O índice de referência indica a imagem de referência para a qual o vetor de movimento está direcionado. Com base na direção de predição de movimento, no índice de imagem de referência e no vetor de movimento recebidos, a unidade de compensação de movimento produz um bloco compensado por movimento para a parte atual. Este blocos compensados por movimento são utilizados para recriar o bloco preditivo utilizado para produzir os dados residuais.
[0132] A unidade de compensação de movimento 72 pode produzir os blocos compensados por movimento, possivelmente efetuando interpolação com base em filtros de interpolação. Identificadores para os filtros de interpolação a serem utilizados para estimação de movimento com precisão de subpixel podem ser incluídos nos elementos de sintaxe. A unidade de compensação de movimento 72 pode utilizar os filtros de interpolação utilizados pelo codificador de vídeo 20 durante a código do bloco de vídeo de modo a calcular valores interpolados para sub-pixels de número inteiro de um bloco de referência. A unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 de acordo com as informações de sintaxe recebidas e utilizar os filtros de interpolação para produzir blocos preditivos.
[0133] A unidade de compensação de movimento pode receber dados de predição que indicam onde recuperar informações de movimento para o bloco atual. Por exemplo, a unidade de compensação de movimento 72 pode receber informações de predição de vetor de movimento, tais como um índice de MVP (indicador de indicador_de_mvp), uma MVD, um indicador de fusão (indicador_de_fusão) e/ou um índice de fusão (idx_de_fusao) e utilizar tais informações para identificar informações de movimento utilizadas para predizer o bloco atual.
[0134] Por exemplo, a unidade de compensação de movimento 72 pode gerar uma lista de candidatos à MVP ou fusão. A unidade central de processamento 72 pode utilizar então um índice de MVP ou fusão para identificar as informações de movimento utilizadas para predizer o vetor de movimento do bloco atual. Ou seja, a unidade de compensação de movimento 72 pode identificar um MVP a partir de uma lista de imagens de referência utilizando o índice de MVP (indicador_de_mvp). A unidade de compensação de movimento 72 pode combinar o MVP identificado com uma MVD de modo a determinar o vetor de movimento para o bloco atual. Em outros exemplos, a unidade de compensação de movimento 72 pode identificar um candidato à fusão a partir de uma lista de imagens de referência utilizando um índice de fusão (idx_de_fusao) de modo a determinar informações de movimento para o bloco atual. Seja como for, depois de determinar informações de movimento para o bloco atual, a unidade de compensação de movimento 72 pode gerar o bloco preditivo para o bloco atual.
[0135] Além disso, a unidade de compensação de movimento 72 a unidade de intra-predição 74, em um exemplo de HEVC, podem utilizar algumas das informações de sintaxe (fornecidas por uma transformação quadtree, por exemplo) de modo a determinar os tamanhos das LCUs utilizadas para codificar as imagens da sequência de vídeo codificada. A unidade de compensação de movimento 72n e a unidade de intra-predição 74 podem utilizar também informações de sintaxe da determinar informações de divisão que descrevem como cada CU de uma imagens da sequência de vídeo codificada é dividida (e, da mesma maneira, como as sub-CUs são divididas). As informações de sintaxe podem incluir também modos que indicam como cada divisão é codificada (como, por exemplo, intra- ou inter- predição e, para intra-predição, um modo de codificação intra-preditiva), uma ou mais imagens de referência (e/ou listas de referência que contêm identificadores para as imagens de referência) para cada PU inter-codificada, e outras informações para decodificar a sequência de vídeo codificada.
[0136] O somador 80 combina os blocos residuais com os blocos de predição correspondentes gerados pela unidade de compensação de movimento 72 ou pela unidade de intra- predição 74 de modo a formar bloco decodificados. Se desejado, um filtro de desbloqueio pode ser também aplicado para filtrar os blocos decodificados de modo a remover os artefatos de bloqueio. Os blocos de vídeo decodificados são então armazenados na memória de imagens de referência 82, que provê blocos de referência para compensação de movimento subseqüente e também produz vídeo decodificado para apresentação em um aparelho de exibição (tal como o aparelho de exibição 32 da Figura 1).
[0137] A Figura 4 é um diagrama de blocos que mostra um processo de codificação aritmética exemplar. O processo de codificação aritmética exemplar da Figura 4 é geralmente descrito como sendo executado pelo codificador de vídeo 20. Entretanto, deve ficar entendido que as técnicas descritas com relação à Figura 4 podem ser executadas por diversos outros codificadores de vídeo, inclusive o decodificador de vídeo 30. Por exemplo, conforme observado acima com relação à Figura 3, o decodificador de vídeo 30 pode executar um processo de decodificação que é complementar ao processo executado pelo codificador de vídeo 20.
[0138] O exemplo da Figura 4 inclui um binarizador 100, um modelador de contexto 102, um mecanismo de codificação 104 e um codificador por desvio 106. O binarizador 100 é responsável por binarizar um elemento de sintaxe recebido. Por exemplo, o binarizador 100 pode mapear um elemento de sintaxe em um número dos chamados binários, com cada binário representando um valor binário. Em um exemplo, para fins de ilustração, o binarizador 100 pode mapear um elemento de sintaxe em binários utilizando um código unário truncado (TU). Em geral a codificação unária pode envolver gerar uma cadeia de binários de comprimento N + 1, onde os N binários e o último binário é 0. A codificação unária truncada pode ter um binário a menos que a codificação unária pela fixação de um máximo no maior valor possível do elemento de sintaxe (cMax). Um exemplo de codificação unária truncada é mostrado na Tebela 2 com cMax = 10. TABELA 2
Quando executada no decodificador de vídeo 30, o decodificador de vídeo 30 pode efetuar busca de um 0 de modo a determinar quando o elemento de sintaxe que está sendo codificado atualmente está completo. Conforme descrito mais detalhadamente em seguida, o a codificação unária truncada é meramente um exemplo, e o binarizado 100 pode executar diversos outros processos de binarização (assim como combinações de processo de binarização) para binarizar elementos de sintaxe.
[0139] O modelador de contexto 102 pode ser responsável por determinar um modelo de contexto (também referido como modelo de probabilidade) para um dado binário. Por exemplo, o modelador de contexto 102 pode selecionar um modelo de bloco que funcione com base no contexto para codificar símbolos associados a um bloco de dados de vídeo. Em geral, o modelo de probabilidade armazena a probabilidade de cada binário ser “1” ou “0”.
[0140] O modelador de contexto 102 pode selecionar o modelo de probabilidade a partir de vários modelos de probabilidade disponíveis. Em alguns exemplos, conforme descrito mais detalhadamente em seguida, um contexto utilizado pelo modelador de contexto 102 pode ser determinado com base no número de binário que é codificado. Ou seja, o contexto pode depender da posição do binário na cadeia de binários gerada pelo binarizador 100. Seja como for, no codificador de vídeo 20, um símbolo-alvo pode ser codificado utilizando-se o modelo de probabilidade selecionado. No decodificador de vídeo 30, um símbolo-alvo pode submetido a parse utilizando-se o modelo de probabilidade selecionado.
[0141] O mecanismo de codificação 104 codifica o binário utilizando 0 modelo de probabilidade determinado (do modelador de contexto 102). Depois que o mecanismo de codificação 104 codifica o binário, o mecanismo de codificação 104 pode atualizar o modelo de probabilidade associado ao contexto utilizado para codificar o binário. Ou seja, o modelo de probabilidade selecionado é atualizado com base no valor codificado real (como, por exemplo, se o valor de binário fosse “1”, o total de frequências de um “1” é aumentado). A codificação de binários com a utilização do modelador de contexto 102 e do mecanismo de codificação 104 pode ser referida como codificação dos binários com a utilização de um modo de codificação por contexto.
[0142] O codificador por desvio 106 codifica binários utilizando uma probabilidade fixa. Em contraste com a codificação por contexto ( por meio do modelador de contexto 102 e do mecanismo de codificação 104) o codificador por desvio 106 não atualiza o processo de codificação por desvio com base nos valores reais dos binários que são codificados. Por conseguinte, em geral, o codificador por desvio 106 pode codificar por desvio binários de maneira mais rápida que a codificação por contexto. A codificação de binários que utiliza o codificador por desvio 106 pode ser referida como codificação dos binários que utiliza um modo de codificação por desvio. Modos de codificação por desvio exemplares incluem a codificação de Golomb. A codificação de Golomb exponencial, a codificação de Golomb-Rice ou qualquer outro processo de codificação adequado que se desvie do modelador de contexto 102 e do mecanismo de codificação 104.
[0143] Os binários codificados (do mecanismo de codificação 104 e do codificador por desvio 106) são combinados de modo a se formar um fluxo de bits codificado. Para decodificar o fluxo de bits codificado, um decodificador de vídeo (tal como o decodificador de vídeo 30) pode espelhar o processo mostrado na Figura 4. Ou seja, o decodificador de vídeo 30 pode efetuar codificação por contexto (utilizando um modelador de contexto 102 e o mecanismo de codificação 104) ou codificação por desvio (utilizando o codificador por desvio 106) em um fluxo de bits codificado de modo a gerar uma cadeia de binários decodificada. O decodificador de vídeo pode em seguida binarizar a cadeia de binários (utilizando o binarizador 100) para gerar valores de sintaxe).
[0144] O processo de codificação aritmética mostrado na Figura 3 pode ser utilizado para codificar dados de vídeo. Por exemplo, o processo de codificação mostrado na Figura 3 pode ser utilizado para codificar dados de predição, inclusive valores de índice de referência, vetores de movimento, preditores de vetores de movimento, valores de diferença entre vetores de movimento e semelhantes.
[0145] Em um exemplo para fins de ilustração, o binarizador 100 pode binarizar um índice de referência (idx_ref). Em alguns exemplos, a cadeia de binários resultante para um índice de referência pode ser de até 15 binários de comprimento, dependendo do número de imagens de referência que estão disponíveis para referência. Conforme observado acima, em alguns exemplos, todos os binários de um valor de índice de referência podem ser codificados por contexto utilizando-se um modelador de contexto 102 e o mecanismo de codificação 104. Além do mais, um ou mais dos binários podem compartilhar um contexto. Entretanto, a codificação por contexto de todos os binário e o compartilhamento de um contexto entre mais de um binário podem ser ineficazes, devido às latências associadas à codificação por contexto.
[0146] De acordo com aspectos desta revelação, conforme mostrado na Figura 4, o codificador de vídeo 20 pode codificar uma cadeia de binários para um índice de referência com base no número de binário do binário que é codificado. Por exemplo, o codificador de vídeo 20 pode codificar um binário específico em uma cadeia de binários de índice de referência de acordo com a posição relativa do binário específico na cadeia de binários. Em um exemplo, o codificador de vídeo 20 pode codificar por contexto um primeiro, um segundo binário e um terceiro binário de um índice de referência e pode codificador por desvio os binários restantes do índice de referência. Ou seja, o codificador de vídeo 20 pode codificar um primeiro binário (bin0) utilizando o modelador de contexto 102 e o mecanismo de codificação com um primeiro contexto ctx0, um segundo binário (bin1) utilizando um modelador de contexto 102 e o mecanismo de codificação 104 com um segundo contexto ctx1 e um terceiro binário (bin2) utilizando o modelador de contexto 102 e o mecanismo de codificação 104 com um terceiro contexto ctx2. Entretanto, o codificador de vídeo pode codificar o quarto binário (bin3) e quaisquer outros binários seguintes utilizando o codificador por desvio 106.
[0147] Em outro exemplo, o codificador de vídeo pode reduzir o número de binários que são codificados por contexto. Por exemplo, o codificador de vídeo 20 pode codificar um primeiro binário (nin0) utilizando um modelador de contexto 102 e o mecanismo de codificação 104 com um primeiro contexto ctx0 e um segundo binário (bin1) utilizando o modelador de contexto 102 e o mecanismo de codificação 104 com um segundo contexto ctx1. Neste exemplo, contudo, o codificador de vídeo 20 pode codificar por desvio um terceiro binário (bin2) e quaisquer outros binários seguintes utilizando o codificador por desvio 106.
[0148] Em ainda outro exemplo, o codificador de vídeo 20 pode reduzir ainda mais o número de binário que são codificados por contexto. Por exemplo, o codificador de vídeo 20 pode codificar um primeiro binário (bin0) utilizando um modelador de contexto 102 e o mecanismo de codificação 104 com um primeiro contexto ctx 0. Entretanto, o codificador de vídeo 20 pode codificar o segundo binário (bin1) e quaisquer outros binários seguintes utilizando o codificador por desvio 106.
[0149] Os aspectos desta revelação referem-se também à maneira pela qual o binarizador 100 efetua binarização para dados de vídeo. Por exemplo, de acordo com aspectos desta revelação, o binarizador 100 pode dividir um elemento de sintaxe em mais de uma peça. Ou seja, o binarizador 100 pode utilizar codificação unária truncada para codificar um prefixo (com um cMax relativamente pequeno, conforme descrito acima) e pode utilizar outro método de codificação para codificar o sufixo. Em um exemplo, o binarizador 100 pode utilizar um código de Golomb exponencial de késima ordem para codificar o sufixo.
[0150] Em alguns exemplos, apenas os binários do prefixo podem ser codificados por contexto, enquanto os binários do sufixo podem ser codificados por desvio. A Tabela 3 mostra um exemplo de código unário truncado combinado com um código de Golomb exponencial, com cMax = 4 para prefixo e Golomb Exp de 0a para sufixo. Estas técnicas podem ser também aplicadas a valores de índice de referência assim como a outros elementos de sintaxe, tais como valores de diferença entre vetor de movimento ou outros elementos de sintaxe utilizados na codificação por meio da predição avançada de vetores de movimento (AMVP). TABELA 3 No exemplo mostrado na Tabela 3, os binários unários truncados podem ser codificados por contexto, enquanto os binários de Golomb exponenciais podem ser codificado por desvio.
[0151] As técnicas desta revelação podem incluir, por exemplo, aplicar codificação por contexto a binários depois de um determinado número de binários para a binarização de Golomb exponencial em uma peça de prefixo. As técnicas desta revelação incluem também, por exemplo aplicar codificação baseada em contexto a um determinado número de binários (um número pré-determinado de binário de prefixo, por exemplo) e aplicar codificador por desvio aos binários restantes. Por exemplo, em vez da codificação de todos os binários em uma parte de prefixo utilizando-se contexto, o bin2 e binários posteriores na parte de prefixo podem ser codificados com um modo de desvio. Em outro exemplo, um modo de desvio pode ser aplicado a todos os binários depois do e/ou que incluem o bin1. Em ainda outro exemplo, o modo de desvio pode ser aplicado a todos os binários da parte de prefixo. Uma abordagem semelhante que utiliza codificação no modo de desvio depois de um determinado número de binários codificados por contexto pode ser utilizada para qualquer método de binarização. Ou seja, embora esta revelação descreva a utilização de esquemas de codificação de Golombe exponencial e unária truncada, podem ser utilizados outros método de binarização.
[0152] Em ainda outro exemplo, as técnicas desta revelação descritas acima podem ser implementadas em conjunto com outros processos de binarização, que incluem combinações de processos de binarização. Ou seja, em um exemplo, um processo de codificação unária pode ser uso para binarizar o valor de índice de referência. Em outro exemplo, um processo de codificação unária truncada pode ser utilizado para binarizar o valor de índice de referência. Em ainda outro exemplo, um processo de codificação de Golomb exponencial pode ser utilizado para binarizar o valor de índice de referência. São também possíveis outros processos de binarização e combinações de processos de binarização. Ou seja, por exemplo, um processo de codificação unário (ou unário truncado) pode ser combinado com um processo de codificação de Golombe exponencial para binarizar o valor de índice de referência. Em um exemplo para fins de ilustração, um código unário truncado de comprimento (4) pode ser combinado com um código de Golomb exponencial (um código de Golomb exponencial de ordem 0, por exemplo). Em tal exemplo, um primeiro número de binários (dois, três, quatro ou semelhantes, por exemplo) do valor de índice de referência pode ser codificado de maneira unária. Enquanto os binários restantes do índice de referência podem ser codificados por Golomb exponencial.
[0153] Seja como for, as técnicas descritas acima com relação à CABAC e à codificador por desvio do valor de índice de referência podem ser aplicadas a qualquer valor de índice de referência binarizado. Ou seja, de açodo com aspectos desta revelação um primeiro número de binários de um valor de índice de referência binarizado pode ser codificado por contexto (codificado com um mecanismo de CABAC, por exemplo), enquanto os binários restantes podem ser codificados por desvio. No exemplo descrito acima, no qual um código unário truncado do comprimento (4) é combinado com código de Golomb exponencial na ordem 0, os dois primeiros binários (ou qualquer outro número de binários) do código unário truncado podem ser codificados por contexto, e a segunda parte do código unário e o código de Golomb exponencial inteiro podem ser codificados por desvio.
[0154] Deve ficar entendido que o código unário truncado de comprimento (4) e o Golomb exponencial de ordem 0 são apresentados para fins de exemplificação apenas, e as mesmas técnicas ou técnicas semelhantes podem ser aplicadas para outras extensões de código unário truncado, assim como para outras ordens de código de Golomb exponencial. Além do mais, os processos de binarização descritos acima são apresentados para fins de exemplificação apenas e outros códigos binários podem ser utilizados. Por exemplo, um código binário de comprimento fixo pode ser utilizado em vez do código de Golomb exponencial descrito nos exemplos acima. Além disto, o exemplo de dois binários codificados por contexto para parte de binarização unária truncada é apresentado para fins de ilustração e outros números de binários codificados por contexto e desvio podem ser utilizados.
[0155] Seja como for, os aspectos desta revelação referem-se também ao truncamento de uma parte do valor binarizado. Por exemplo, uma vez que o número de índice de referência é conhecido de antemão, de acordo com os aspectos desta revelação, o código de Golomb exponencial ou de comprimento fixo pode ser truncado. Ou seja, um Golomb exponencial k pode ser uso pelo binarizador 100. Como exemplo, um Golomb exponencial de ordem 0 pode ser aplicado em compactação de vídeo. Esta binarização consiste em um prefixo exponencial codificado com código unário e um sufixo de comprimento fixo do comprimento (prefixo-1), um exemplo do qual é mostrado na Tabela 4 abaixo: TABELA 4
[0156] Por exemplo, o valor 10 (que corresponde ao elemento com valor 10 na primeira coluna da Tabela 4, por exemplo) é representado pela palavra de código binarizada 0001011, onde 0001 é um prefixo e 011 é um sufixo. O elemento pode ser um dado de entrada, que é codificado utilizando-se as palavras de código da Tabela 4 ou utilizando-se as tabelas mostradas e descritas a seguir. Por exemplo, o codificador de vídeo 20 pode receber os elementos e converter os elementos em palavras de código de acordo com as tabelas mostradas e descritas em seguida. Da mesma maneira, o decodificador de vídeo 30 pode receber as palavras de código e converter as palavras de código em elementos de sintaxe (dados de entrada, por exemplo) de acordo com as tabelas mostradas e descritas em seguida.
[0157] Um valor reconstruído pode ser obtido de acordo com a equação (1), mostrada abaixo: valor=2^ (prefixo-1)+sufixo-1(1) Neste exemplo, o prefixo é representado por um código unário onde 0001 corresponde a 4, e o sufixo é um valor representado com um sistema numeral binário onde 011 corresponde a 3, conforme mostrado na Tabela 4 acima. Por conseguinte, neste exemplo, a aplicação da equação (1) resulta nos valores seguintes: 2^4-1+3-1=10.
[0158] Este código pode representar números geralmente infinitos, mas em alguns cenários, o número de elementos pode ser conhecido. Neste caso, a palavra de código pode ser encurtada, levando-se em conta o número máximo de elementos possíveis.
[0159] Por exemplo, se o número máximo de elementos é dois (os elementos 0 e 1, por exemplo) uma palavra de código de Golomb Exponencial regular para um número é 010. Entretanto, não há elemento maior que dois. Por conseguinte, o código regular 010 pode ser encurtado para 1. Este tipo de binarização pode ser referido como Golomb Exponencial Truncado e pode ser utilizado em padrões de codificação de vídeo tais como o H.264/AVC. Entretanto, com relação ao padrão H.264, o Golomb Exponencial Truncado só é utilizado quando o número máximo de elementos é 1. Para outros casos, é utilizada a binarização de Golomb Exponencial regular.
[0160] De acordo com aspectos desta revelação, a codificação Golomb Exponencial regular pode ser também truncada, como, por exemplo, de uma maneira semelhante à do exemplo acima no qual o número máximo de elemento é um. Geralmente, quando um número máximo de elementos é conhecido de antemão, o sufixo da palavra de código de binarização de Golomb Exponencial pode ser truncado pela remoção de binários redundantes. Por exemplo, se um número máximo de elementos for 9, então os dois binários marcados com negrito, itálico e sublinhado na Tabela 5 podem ser removido das palavras de código.
Ou seja, para o elemento 7 mostrado na Tabela 5, os dois primeiros 00s do sufixo podem ser removidos. Além disto, para o elemento 8 mostrado na Tabela 5, os dois primeiros 00s do sufixo podem ser removido. Por conseguinte, o Golomb Exponencial Truncado de ordem 0 indica o 0001 0 para o elemento 7 e 00001 1 para o elemento 8.
[0161] As técnicas descritas acima, podem ser implementadas, por exemplo, pela comparação de um sufixo de comprimento fixo para o prefixo mais recente (0001 no exemplo acima) com o código de Golomb Exponencial regular. Por exemplo, se o número de elementos no grupo mais recente for menor do que em um código Golomb Exponencial regular, os binários redundantes podem ser removidos. Em outras palavras, o binarizador 100 pode gerar o código de Golomb Exponencial Truncado resultante de ordem 0 pela comparação do sufixo de comprimento fixo para o prefixo mais recente, e se o número de elementos neste grupo mais recente for menor que no código de Golomb Exponencial regular, os binários redundantes podem ser removidos.
[0161] Por exemplo, neste exemplo, o binarizador 100 pode determinar o número de elementos cujo prefixo é idêntico ao prefixo do último elemento quando há um número máximo de elementos para codificação que é conhecido de antemão. Na Tabela 5, por exemplo o prefixo para o último elemento é 0001, e há dois elementos (o elemento 7 e o elemento 8, por exemplo) e há dois elementos cujo prefixo é idêntico ao prefixo do último elemento quando há um número máximo de elemento (como, por exemplo, 9 neste exemplo).
[0163] O binarizador pode em seguida comparar o número de elementos cujo é idêntico ao prefixo do ultimo elemento com número de elementos com código de Golomb Exponencial regular com o mesmo prefixo. Na Tabela 4 acima, por exemplo, há oito elementos (isto é, do elemento 7 ao elemento 14) cujo prefixo é 0001 (isto é, o mesmo prefixo do elemento anterior). Neste exemplo, o binarizador 100 pode determinar que o número de elementos cujo prefixo é idêntico ao prefixo do último elemento é menor que o número de elementos do código de Golomb Exponencial regular com o mesmo prefixo.
[0164] Quando isto é verdadeiro, o binarizador 100 pode truncar binários de palavras de código cujo prefixo é idêntico ao último prefixo de modo a gerar palavras de código truncadas. Em alguns exemplos, os binários são truncados a partir do sufixo, embora os aspectos desta revelação não sejam assim limitados. O binarizador 100 pode determinar o número de binários a serem truncados com base no número de elementos cujo prefixo é idêntico ao último prefixo.
[0165] Na Tabela 5 acima, por exemplo há dois elementos com o mesmo prefixo que o último prefixo (os elementos 7 e 8, por exemplo). O binarizador 100 pode truncar binários a partir das palavras de código dos elementos 7 e 8 de modo a gerar palavras de código truncadas, conforme mostrado na última coluna da Tabela 5. Neste exemplo, uma vez que há dois elementos com o mesmo prefixo do último prefixo, o binarizador 100 pode determinar que apenas um binário é necessário no sufixo para representar os dois elementos. Por exemplo, 10 no sufixo pode representar um elemento (o elemento 7, por exemplo) e um 1 no sufixo pode representar outro elemento (o elemento 8, por exemplo). Por conseguinte, para o elemento 7 na Tabela 5 acima, o binarizador 100 pode truncar os dois primeiros binários do sufixo, deixando apenas 0 como o sufixo para a palavra de código truncada. Além disto, para o elemento 8 na Tabela 5 acima, o binarizador 100 pode truncar os dois primeiros binários do sufixo, deixando apenas 1 como o sufixo para palavra de código truncada.
[0166] As técnicas descritas acima podem ser implementadas para codificar meio, (tal como a codificação e/ou decodificação de dados de vídeo). Por exemplo, de acordo com aspectos desta revelação, um decodificador de vídeo, tal como o decodificador de vídeo 30, pode receber uma ou mais palavras de código que representam dados de meios, e pode haver um número máximo de elementos que podem ser utilizados na codificação. O decodificador de vídeo 30 pode converter as palavras de código em elementos de acordo com uma tabela de codificação. A tabela de codificação pode ser construída de modo que pelo menos algumas das palavras de código que têm o mesmo prefixo sejam truncadas quando o mesmo prefixo é o último prefixo na tabela de codificação, e o número de palavras de código que têm o mesmo prefixo é menor que o número máximo de palavras de código únicas que podem ter o mesmo prefixo. Para o prefixo 0001, por exemplo, a Tabela 4 mostra possibilidades únicas para palavras de código, e as Tabelas 5 e 6 (mostrada em seguida), mostram exemplos de palavras de código que compartilham o mesmo prefixo e são truncadas de acordo com as técnicas desta revelação.
[0167] As técnicas podem ser também executadas pelo codificador de vídeo 20, por exemplo, o codificador de vídeo 20 pode receber um u mais elementos que representam dados de meios. O codificador de vídeo 20 pode converter os elementos em uma ou mais palavras de código de acordo com uma tabela de codificação e pode haver um número máximo de elementos que podem ser utilizados na codificação. A tabela de codificação pode ser construída de modo que pelo menos algumas das palavras de código que têm o mesmo prefixo sejam truncadas quando o mesmo prefixo é o último prefixo na tabela de codificação, e o número de palavras de código que têm o mesmo prefixo é menor que o número máximo de palavras de código únicas que podem ter o mesmo prefixo. Mais uma vez, por exemplo, para o prefixo 0001 a Tabela 4 mostra possibilidades únicas para palavras de código e as Tabelas 5 e 6 (mostrada seguida) mostram exemplos de palavras de código que compartilham o mesmo prefixo e são truncadas de acordo com as técnicas desta revelação.
[0168] Desta maneira, as técnicas podem reduzir o número de binários necessários para codificar dados de vídeo quando o número máximo de elementos que são codificados é conhecido. A redução nos binários resultam em menos binários que precisam ser sinalizados ou recebidos, do que resulta eficácia de largura de banda.
[0169] Em ainda outro exemplo, se o número máximo de elementos for 11, as palavras de código de Golomb Exponencial Truncado são mostradas na Tabela 6 abaixo. Os binários marcados com negrito, itálico sublinhado na Tabela 6 podem ser removidos das palavras de código. TABELA 6
[0170] Conforme mostrado na Tabela 6, os primeiros binários no sufixo para os elementos 7, 9, 9 e 10 podem ser truncados (mostrados em negrito, itálico e sublinhado). Neste exemplo, apenas um binário do sufixo pode ser truncado, uma vez que quatro elementos são representados pela palavra de código. Por esta razão, nas palavras de código truncadas, o sufixo começa de 00 e termina em 11 para cobrir quatro elementos, cada um deles com o mesmo prefixo.
[0171] Os exemplos mostrados nas Tabelas 5 e 6 acima apresentam exemplos apenas, e o mesmo processo pode ser aplicado para qualquer número de elementos máximos. Em alguns exemplos, por exemplo, os aspectos desta revelação referem-se ao recebimento de palavras de código truncadas. As palavras de código truncadas podem ser geradas pela determinação de um primeiro número de elementos. O primeiro número de elementos pode indicar quantas palavras de código em uma primeira tabela de codificação têm um prefixo que é idêntico ao prefixo de uma palavra de código que corresponde ao último elemento na primeira tabela de codificação quando há um número máximo de elementos que podem ser utilizados na codificação. Neste exemplo, a primeira tabela de codificação pode ser a Tabela 5 ou a Tabela 6. Os aspectos referem-se ao recebimento das palavras de código truncadas que são pré-classificadas ou calculadas às pressas durante a operação.
[0172] os aspectos desta revelação referem-se também à determinação de um segundo número de elementos que indicam quantas palavras de código em uma segunda tabela de codificação têm um prefixo que é idêntico ao prefixo das palavras de código que corresponde ao último elemento na primeira tabela de codificação. Neste exemplo, a segunda tabela de codificação pode ser a Tabela 4. Em alguns exemplos, a primeira tabela de codificação pode ser um subconjunto da segunda tabela de codificação, que é baseado no número máximo de elementos que podem ser utilizados na codificação.
[0173] Em alguns exemplos, quando o primeiro número de elementos é menor que o segundo número de elementos, os aspectos desta revelação referem-se ao truncamento de binários de palavras de código na primeira tabela de codificação cujo prefixo é idêntico ao prefixo da palavra de código que corresponde ao último elemento na primeira tabela de codificação de modo a gerar palavras de código truncadas, e à codificação dos dados de vídeo com a utilização da palavras de código truncadas. Em alguns exemplos, truncar as palavras de código inclui truncar binários de sufixos ou prefixos das palavras de código ou uma combinação deles. Em alguns exemplos, o truncamento de binários é baseado no primeiro número de elementos onde o primeiro número de elementos indica quantas palavras de código em uma primeira tabela de codificação têm um prefixo que é idêntico ao prefixo de uma palavra de código que corresponde ao último elemento na primeira tabela de codificação. Em alguns exemplos, a codificação é a codificação de Golomb.
[0174] Alternativa ou adicionalmente, um prefixo pode ser também encurtado utilizando-se um código unário truncado. Por exemplo, se o número máximo de elementos for 4, então um prefixo e um sufixo podem ser truncados conforme mostrado na Tabela 7 abaixo. TABELA 7
[0175] Os binários truncados da Tabela 7 são representados em negrito, itálico e sublinhado. No exemplo mostrado na Tabela 7, a palavra de código para o elemento 3 é mais curta que as palavras de código para os elementos 1 e 2. O reordenamento ou mapeamento adicional para a binarização de Golomb Exponencial Truncada pode ser aplicada, por exemplo, pela atribuição da palavra de código mais curta 00 ao elemento que ocorre mais frequentemente 1 e 010 ao elemento 3. Tal reordenamento ou mapeamento pode ser efetuado utilizando-se tabelas de mapeamento.
[0176] Em alguns exemplos, o reordenamento pode ser também baseado na frequência de aparecimento de elementos específicos. Por exemplo, palavras de código mais curtas podem ser atribuídas aos elementos que aparecem com a maior frequência. Este mapeamento de palavras de código pode ser particularmente eficaz nos casos que os elementos são ordenados pela frequência de aparecimento.
[0177] Embora determinados exemplos acima tenham sido descritos com relação ao Golomb Exponencial de codificação de ordem 0, deve ficar entendido que as técnicas são mais geralmente aplicáveis ao Golomb Exponencial de codificação de ordem k. Além do mais, as técnicas não estão limitadas ao padrão de vídeo HEVC e podem ser aplicadas a qualquer padrão de compactação de vídeo, ou de maneira mais ampla, para qualquer aplicativo no qual a binarização é efetuada.
[0178] Com relação ao padrão HEVC emergente (assim como às extensões do padrão HEVC, tais como a codificação de vídeo escalonável (SVC) ou a codificação de vídeo de várias vistas (MVC)), as técnicas de binarização de Golomb Exponencial Truncado descritas acima podem ser aplicadas para binarizar diversos elementos de sintaxe. Exemplos incluem, valores de índice de referência, um modo intra- modal, um índice de fusão, parâmetros de quantificação (ou parâmetros de quantificação delta), ou qualquer outro elemento de sintaxe para o qual o número de elementos é conhecido de antemão.
[0179] Embora o exemplo acima descreva truncamento de Golomb Exponencial, as técnicas de truncamento descritas podem ser também aplicadas a um código de comprimento fixo. Ou seja, em exemplos nos quais um elemento de sintaxe (um índice de referência, por exemplo) é nzo utilizando-se mais de um processo de binarização (unário truncado e Golombe Exponencial, por exemplo), um número pré-determinado de binários pode ser codificado com CABAC, enquanto os binários restantes podem ser truncados e codificados por desvio.
[0180] Em alguns exemplos, pode ser aplicado um algoritmo para determinar um número de binários que podem ser truncados (truncados a partir do Golombe Exponencial ou da parte de binarização de comprimento fixo do elemento de sintaxe binarizado, por exemplo). Em um exemplo, suponha-se que um número pré-determinado de binários permanece para ser codificado por desvio. Neste exemplo, um codificador de vídeo (tal como o codificador de vídeo 20 ou o decodificador de vídeo 30) pode determinar o número de binários restantes que podem ser truncados calculando-se o registro dos arredondados dos binários restantes.
[0181] As Figuras 5A e 5B são diagrama de blocos que mostram cadeias de binários exemplares associadas a dados de predição. Por exemplo, a Figura 5A mostra de maneira geral um índice de referência (idx_ref) uma diferença entre vetores de movimento (mvd) e um índice de preditor de vetores de movimento (idx_mvp) para uma imagem que é predita a partir de uma única imagem de referência.
[0182] A Figura 5B mostra de maneira geral um primeiro índice de referência (idx_ref_L0) uma primeira diferença entre vetores de movimento (mvd_L0) (que representa o componente horizontal e o componente vertical) e um primeiro índice de preditor de vetor de movimento (idx_mvp_L0), assim como um segundo índice de referência (idx_ref_L1), uma segunda diferença entre vetores de movimento (mvd_L1) (que representa o componente horizontal e o componente vertical), e um segundo índice de preditor de vetor de movimento (idx_mvp_L1) para uma imagem que é predita a partir de duas imagens de referência (imagem B). Ou seja, para um PU bi-predita, dois índices de referência podem ser codificados, com um índice de referência para cada lista da lista L0 e da lista L1. Por conseguinte, até dois índices de referência podem ser codificados por PU e até oito índices de referência podem ser codificados por CU.
[0183] As cadeias de binários 120 (Figura 5A) e 124 (Figura 5B) incluem dados de predição associados a uma técnica de predição de vetores de movimento avançada (AMVP). Com a AMVP um vetor de movimento para o bloco que está sendo codificado atualmente pode ser codificado com um valor de diferença (isto é, delta) com relação a outro vetor de movimento, tal como um vetor de movimento associado a um bloco espacialmente ou temporalmente vizinho. Por exemplo, o codificador de vídeo 20 pode construir uma lista de candidatos a preditor de vetor de movimento que inclui vetores de movimento associados a uma ou mais blocos vizinhos em direções espaciais e temporais. O codificador de vídeo 20 pode selecionar o preditor de vetor de movimento (MVP) mais preciso a partir da lista de candidatos com base, por exemplo, em uma análise de custo de distorção de taxa.
[0184] O codificador de vídeo 20 pode indicar a imagem de referência para o vetor de movimento real utilizando o índice de referência (idx_ref). Além disto, o codificador de vídeo 20 pode indicar o MVP selecionado utilizando o índice de preditor de vetor de movimento (idx_mvp), que identifica o MVP na lista de candidatos. O codificador de vídeo 20 pode indicar também a diferença entre o vetor de movimento do bloco atual (o vetor de movimento real) e o MVP utilizando-se a diferença entre vetores de movimento (mvd). Conforme observado acima, a mvd pode incluir um componente horizontal e um componente vertical que correspondem ao componente horizontal e ao componente vertical do mvp.
[0185] O decodificador de vídeo pode construir uma lista de candidatos a MVP da mesma maneira. O decodificador de vídeo 30 pode utilizar então o índice de preditor de vetor de movimento (idx_mvp) recebido para determinar onde localizar o MVP na lista de candidatos. O decodificador de vídeo 30 pode combinar a diferença entre vetores de movimento (mvd) com o preditor de vetor de movimento (determinado utilizando-se o índice de preditor de vetor de movimento (idx_mvp)) de modo a reconstruir o vetor de movimento.
[0186] A predição dos vetores de movimento desta maneira (com um valor de diferença, por exemplo) pode exigir menos bits a serem incluídos no fluxo de bits com relação à codificação de vetores de movimento reais. Com relação à Figura 5B, as imagens bi-preditas podem incluir dados de predição associados a imagens de duas listas diferentes, como, por exemplo, a lista 0 e a lista 1. Conforme mostrado no exemplo da Figura 5B, os dados de predição associados à lista 0 podem preceder os dados de predição que são associados à lista 1. Ou seja, a cadeias de binários 124 inclui uma primeira informação recebida do primeiro índice de referência (idx_ref_L0), uma primeira diferença entre vetores de movimento (mvd_L0 (como, por exemplo, que representa os componentes tanto horizontais quanto verticais) e um primeiro índice de preditor vetor de movimento (idx_mvp_L0), seguidos de um segundo índice de referência (idx_ref_1) uma segunda diferença entre vetores de movimento (mvd_L1)(como, por exemplo, que representa o componente horizontal e o componente vertical), e um segundo índice de preditor de movimento (idx_mvp_L1).
[0184] Em alguns exemplos, a sintaxe relacionada com o AMVP pode ser codificada utilizando-se uma combinação de codificação por contexto e codificação por desvio. Por exemplo, conforme mostrado nos exemplos das Figuras 5A e 5B, alguns dos binários de dados de predição são codificados por contexto, enquanto outros binários são codificados por desvio. Ou seja, um ou mais binários de valores de diferença entre vetores de movimento (assim como outros valores, tais como valores de índice de referência descritos com relação à Figura 7 abaixo) podem ser codificados por contexto enquanto um ou mais outros binários de valores de diferença de vetores de movimento podem ser codificados por desvio.
[0188] Com relação ao exemplo da Figura 5A, o índice de referência (idx_ref) e uma primeira parte da diferença entre vetores de movimento (mvd) podem ser codificados por contexto, conforme indicado pelos binários codificados por contexto 128. Uma segunda parte da diferença entre vetores de movimento (mvd) podem ser codificada por desvio, conforme indicado pelo binários codificados por desvio. Além disto, o índice de preditor de vetor de movimento (idx_mpv) pode ser codificado por contexto, conforme indicado pelos binários codificados por contexto 132.
[0189] Com relação ao exemplo da Figura 5B, o primeiro índice de referência (idx_ref_L0) e uma primeira parte da primeira diferença entre vetores de movimento (mvd_L0) que representa tanto o componente horizontal quanto o componente vertical, por exemplo) podem ser codificados por contexto, conforme indicado pelos binários codificados por contexto 136. Uma segunda parte da primeira diferença entre vetores de movimento (mvd_L0) (que representa tanto o componente horizontal quanto o componente vertical, por exemplo) pode ser codificada por desvio conforme indicado pelos binários codificados por desvio 138. Além disto, o primeiro índice de preditor de vetor de movimento (idx_mpv_L0) o segundo índice de referência (idx_ref_L1) e uma primeira parte da segunda diferença entre vetores de movimento (mvd_L1) (que representa tanto o componente horizontal quanto o componente vertical, por exemplo) podem ser codificados por contexto, conforme indicado pelos binários codificados por contexto 140. Uma segunda parte da segunda diferença entre vetores de movimento (mvd_L1) (que representa tanto o componente vertical, por exemplo) pode ser também codificada por desvio, conforme indicado pelos binários codificados por desvio 142. Finalmente, o segundo índice de preditor de vetor de movimento (idx_mpv_L1) pode ser codificado por contexto conforme indicado pelos binários codificados por contexto 144.
[0190] Por conseguinte, o exemplo da Figura 5B mostra uma sintaxe inter-modal baseada em PU para bi-predição para a qual um codificador de vídeo pode ter que comutar quatro vezes entre codificação por contexto e codificação por desvio para processar os binários. A comutação entre codificação por contexto e codificação por desvio para codificar as cadeias de binários 120 e 124 pode ser ineficaz. Por exemplo, a comutação entre codificação por contexto e codificação por desvio pode consumir um ou mais ciclos de relógio. Por conseguinte, a comutação entre codificação por contexto e codificação por desvio para cada elemento pode introduzir latência devido às transições entre codificação por contexto e codificação por desvio.
[0191] De acordo com aspectos desta revelação, conforme descrito mais detalhadamente, com relação às Figuras 6 e 7 abaixo, os binários de contexto e os binários de desvio podem ser agrupados de modo a se reduzirem as transições entre codificação por contexto e codificação por desvio. Com relação à Figura 5A, por exemplo, os aspectos desta revelação referem-se ao agrupamento dos binários codificados por contexto 128 e 132 uns com os outros, de modo que os binários não sejam separados pelos binários codificados por desvio 130. Desta maneira, pode-se fazer uma única transição entre codificação por contexto e codificação por desvio durante a codificação das cadeias de binários 120.
[0192] Da mesma maneira, com relação à Figura 5B, os aspectos desta revelação referem-se ao agrupamento dos binários codificados por contexto 136, 140, 144, de modo que os binários não sejam separados pelos binários codificados por desvio 138 e 142. Mais uma vez, o agrupamento dos binários por contexto e os binários codificados por desvio desta maneira podem permitir que um codificador de vídeo (tal como o codificador de vídeo 20 ou decodificador de vídeo 30) faça uma única transição entre codificação por contexto e codificação por desvio. Evitar várias transições entre codificação por contexto e codificação por desvio pode aumentar a eficácia pela limitação da latência associada às transições.
[0193] A Figura 6 é um diagrama de blocos que mostra outra cadeias de binários 140 exemplar de dados de predição desta maneira. A cadeia de binários 140 inclui um primeiro índice de referência (idx_ref_L0) uma primeira diferença entre vetores de movimento (mvd_L0) (que representa tanto o componente horizontal quanto o componente vertical, por exemplo) e um primeiro índice de preditor de vetor de movimento (idx_mvp_L0) seguidos de um segundo índice de referência (idx_ref_L1), uma segunda diferença entre vetores de movimento (mvd_L1)(que representa tanto o componente horizontal quanto o componente vertical, por exemplo) e um segundo índice de preditor de vetor de movimento (idx_mvp_L1). A cadeia de binários 140 inclui os binários codificados por contexto 144 e os binários codificados por desvio 148. Por exemplo, os binários codificados por contexto 144 podem ser codificados utilizando-se um modo de codificação por contexto de um processo de codificação adaptativa ao contexto (CABAC, por exemplo), enquanto os binários codificados por desvio 148 podem ser codificados utilizando-se uma probabilidade fixa (um modo de codificação por desvio CABAC, por exemplo).
[0194] De acordo com aspectos desta revelação, os binários codificados por contexto 144 são agrupados para codificação antes dos binários de desvio 148. Ou seja, no exemplo mostrado na Figura 6, os binários codificados por contexto 144 incluem binários codificados por contexto de um primeiro índice de referência (idx_ref_L0), binários codificados por contexto de um segundo índice de referência (idx_ref_L1), binários codificados por contexto de um primeiro índice de preditor de vetor de movimento (idx_mvp_L0), binários codificados por contexto de um segundo índice de preditor de vetor de movimento (idx_mvp_L1), binários codificados por contexto de uma primeira diferença entre vetores de movimento (mvd_L1), e binários codificados por contexto de uma segunda diferença entre vetores de movimento (mvd_L1). Além disto, os binários codificados por desvio 148 incluem binários codificados por desvio de uma primeira diferença entre vetores de movimento (mvd_L0) e binários codificados por desvio da segunda diferença entre vetores de movimento (mvd_L1).
[0195] Em alguns exemplos, os binários podem ser agrupados com base nos número de binário dos elementos de sintaxe que são codificados. Em um exemplo, para fins de ilustração, um codificador de vídeo (tal como o codificador de vídeo 20 ou o decodificador de vídeo 30) pode codificar os dois primeiros binários dos valores de diferença entre vetores de movimento utilizando codificação por contexto e codificar os binários restantes utilizando codificação por desvio. Por conseguinte, neste exemplo, os binários codificados por contexto 144 podem incluir os dois primeiros binários tanto da primeira diferença entre vetores de movimento (mvd_L0) quanto do segundo valor de diferença entre vetores de movimento (mvd_L1) enquanto os binários codificados por desvio 148 podem incluir os bits restantes dos valores de diferença entre vetores de movimento.
[0196] O ordenamento de elementos de sintaxe mostrado na Figura 6 é apresentado para fins exemplificação apenas. Em outros exemplos, os elementos de sintaxe podem ser ordenados de maneira diferente, como, por exemplo, com valores de índice de referência, preditores de vetor de movimento e valores de diferença entre vetores de movimento em uma ordem alternativa (ou intercalados). Ou seja, em outro exemplo, um codificador de vídeo pode codificar uma PU da maneira seguinte: binários codificados por contexto do índice de referência L0, binários codificados por contexto do índice de referência L1, binários codificados pelo modo de desvio do índice de referência L0, binários codificação pelo modo de desvio do índice de referência L1. em ainda outros exemplos, o binários de desvio 140 podem ser codificados antes dos binários codificados por contexto 144.
[0197] Seja como for, a Figura 6 mostra dados de predição que têm um grupo de um ou mais binários codificados por contexto 144 e um grupo de um ou mais binários codificados por desvio 148. O agrupamento dos binários codificados por contexto e dos binários codificados por desvio desta maneira pode conforme observado acima, reduzir a latência associada à codificação dos binários. Por exemplo, um codificador de vídeo pode codificar todos os binários codificados por contexto 144, fazer uma única transição da codificação por contexto para a codificação por desvio e codificar todos os binários codificados por desvio. Evitar várias transações entre codificação por contexto e codificação por desvio pode aumentar a eficácia pela limitação da latência associada às transições entre codificação por contexto e codificação por desvio.
[0198] Em alguns exemplos, conforme mostrado na Figura 6, os binários codificados por contexto e os binários codificados por desvio podem ser agrupados para um bloco de dados de vídeo (em uma base por PU, por exemplo). Em outros exemplos, os binários codificados por contexto e os binários codificados por desvio podem ser agrupados para CUs (uma ou mais CUs de uma LCU, por exemplo), para uma LCU inteira ou para uma fatia inteira de dados de vídeo. Em tais exemplos, os binários codificados por contexto podem ser agrupados e codificados para uma CU/LCU/fatia antes dos binários codificados por desvio da CU/LCU/fatia ou vice- versa.
[0199] A Figura 7 é um diagrama de bloco que mostra outra cadeia de binários 160 exemplar de dados de predição. No exemplo da Figura 7 a cadeia de binários 160 inclui um primeiro índice de referência (idx_ref_L0), uma primeira diferença entre vetores de movimento (mvd_L0)(que representa tanto o componente horizontal quanto o componente vertical, por exemplo) e um primeiro índice de preditor de vetor de movimento (idx_mvp_L0), seguidos de um segundo índice de referência (idx_ref_L1), uma segunda diferença entre vetores de movimento (mvd_L1)(que representa tanto o componente horizontal quanto o componente vertical, por exemplo) e um segundo índice de preditor de vetor de movimento (idx_mvp_L1). A cadeia de binários 160 inclui binários codificados por contexto 164 e binários codificados por desvio 168. Por exemplo, os binários codificados por contexto 164 podem ser codificados utilizando-se um modo de codificação por contexto de um processo de codificação adaptativa ao contexto (CABAC, por exemplo), enquanto os binários codificados por desvio 168 podem ser codificados utilizando-se uma probabilidade fixa (um modo de codificação por desvio CABAC, por exemplo).
[0200] De acordo com aspectos desta revelação, da mesma maneira semelhante ao exemplo mostrado na Figura 6, os binários codificados por contexto 164 são agrupados para codificação antes dos binários de desvio 168. Entretanto, no exemplo mostrado na Figura 7, os índices de referência (idx_ref_L0 e idx_ref_L) incluem uma combinação de binários codificados por contexto e binários codificados por desvio. Ou seja, os índices de referência podem ser codificados de acordo com os exemplos descritos com relação à Figura 4 acima, com um ou mais binários sendo codificados utilizando-se um modo adaptativo ao contexto e ou mais outros binários sendo codificados utilizando-se um modo de desvio.
[0201] Por conseguinte, no exemplo da Figura 7, os binários codificados por contexto 164 incluem binários codificados por contexto de um primeiro índice de referência (idx_ref_L0), binários codificados por contexto de um segundo índice de referência (idx_ref_L1), binários codificados por contexto de um primeiro índice de preditor de vetor de movimento (idx_mvp_L0), binários codificados por contexto de um segundo índice de preditor de movimento (idx_mvp_L1), binários codificados por contexto de uma primeira diferença entre vetores de movimento (mvd_L0)(que representa tanto o componente horizontal quanto o componente vertical, por exemplo) e binários codificados por contexto de uma segunda diferença entre vetores de movimento (mvd_L1)(que representa tanto o componente horizontal quanto o componente vertical, por exemplo). Além disto, os binários codificados por desvio 168 incluem binários codificados por desvio do primeiro índice de referência (idx_ref_L0), binários codificados por desvio do segundo índice de referência (idx_ref_L1), binários codificados por desvio da primeira diferença entre vetores de movimento (mvd_L0) e binários codificados por desvio da segunda diferença entre vetores de movimento (mvd_L1).
[0202] Conforme descrito acima, com relação à Figura 6, os binários podem ser agrupados com base nos número de binário dos elemento de sintaxe que são codificados. Em um exemplo, para fins de ilustração, um codificador de vídeo (tal como o codificador de vídeo 20 ou o decodificador de vídeo 30) pode codificar os dois primeiros binários dos valores de diferença entre vetores de movimento utilizando codificação por contexto e codificar os binários restantes utilizando codificação por desvio. Além disto, o codificador de vídeo pode codificar os dois primeiros binários dos índices de referência utilizando codificação por contexto e codificar os binários restantes utilizando codificação por desvio, Por conseguinte, neste exemplo, os binários codificados por contexto 144 podem incluir os dois primeiros binários tanto da primeira diferença entre vetores de movimento (mvd_L0) quanto do segundo valor de diferença entre vetores de movimento (mvd_L1) e os dois primeiros binários tanto do primeiro índice de referência (idx_ref_l0) quando do segundo índice de referência (idx_ref_L1). Os binários codificados por desvio 148 podem incluir os binários restantes dos valores de diferença entre vetores de movimento e dos índices de referência.
[0203] O agrupamento dos binários codificados por contexto e dos binários codificados por desvio pode reduzir a latência associada à codificação dos binários. Por exemplo, um codificador de vídeo pode codificar todos os binários codificados por contexto 144, fazer uma única transição da codificação por contexto para a codificação por desvio e codificar todos os binários codificados por desvio. Evitar várias transições entre codificação por contexto e codificação por desvio pode aumentar a eficácia pela limitação da latência associada às transições entre codificação por contexto e codificação por desvio.
[0404] Deve ficar entendido que as técnicas descritas com relação às Figura 6 e 7 podem ser executadas utilizando-se qualquer esquema de binarização. Além do mais, conforme observado acima, o ordenamento de elementos de sintaxe é apresentado para fins de exemplificação apenas. Além disto, os binários codificados por contexto e os binários codificados por desvio podem ser agrupados para uma PU, para uma ou mais CUs, para uma LCU inteira ou para uma fatia inteira de dados de vídeo. Em tais exemplos, os binários codificados por contexto pode ser agrupados e codificados para uma PU/CU/LCU/fatia antes dos binários codificados por desvio da PU/CU/LCU/fatia, ou vice-versa.
[0205] As Figura 8A e 8B mostram, da mesma maneira geral, a codificação de um elemento de sintaxe de direção inter-preditiva. Por exemplo, conforme observado acima, além do cálculo do vetor de movimento, a estimação de movimento determina também o índice do quadro de referência (idx_ref) e a direção de predição para fatias B (idc_inter_pred: para frente a partir de L0, para trás a partir L1, ou bidirecional ou indicador_de_inter_pred: unidirecional a partir de LC ou bidirecional a partir de L0 e L1). O vetor de movimento (um componente horizontal e um componente vertical do vetor de movimento, por exemplo) o índice do quadro de referência e a direção de predição são tipicamente codificados por entropia pelo codificador como elementos de sintaxe e colocados no fluxo de bits de vídeo codificado para serem decodificados por um decodificador de vídeo para utilização de decodificação de vídeo. Esses elementos de sintaxe podem ser providos para uma PU inter- codificada de modo a permitir que o decodificador decodifique e reproduza dados de vídeo definidos por uma PU.
[0206] Em algumas ocorrências os índices de referência lista L0 e lista 01 podem ser utilizados para sinalizar índices de referência para um modo de predição bidirecional (Pred_BI) e um índice de referência de listas combinadas (LC) é utilizado para sinalizar um índice de referência para um modo de predição unidirecional (Pred_LC). O índice de referência LC é o índice de referência da lista de imagens de referência combinadas que inclui uma combinação de imagens de referência das listas L0 e L1 com imagens de referência duplicadas removidas de acordo com uma regra pré-definida (ou sinalização explícita). O índice de referência LC, portanto é mapeado em um índice de referência para uma das listas L0 ou L1.
[0207] Em tais ocorrências, o elemento de sintaxe de direção inter-preditiva (indicador_de_inter_prd) tem apenas dois valores possíveis (bidirecional ou unidirecional a partir de LC). Quando o elemento de sintaxe de direção inter-preditiva é binarizado, pode ser necessário codificar apenas um binário para indicar a direção de inter-predição ou como bidirecional ou como unidirecional. A Tabela 8, mostrada abaixo, mostra o elemento de sintaxe de direção inter-preditiva: TABELA 8
[0208] Em outros exemplos, conforme proposto em um documento submetido por T.Lee e J. Park “Sobre Combinação de Listas de Referência”, JCTVC-I0125 Genebra, abril de 2012, a lista combinada (LC) pode ser removida. Em tais exemplos, em vês da utilização de um elemento de sintaxe de direção inter-preditiva (indicador_de_inter_pred ou idc__inter_pred) com três valores possíveis (bidirecional, unidirecional a partir de L0, ou unidirecional a partir de L1). Quando o modo de predição e o modo de predição unidirecional pode ser necessário codificar um binário adicional que indica ou Perd_L0 ou Perd_L1.
[0209] A Tabela 9 mostra a alteração na codificação do elemento de sintaxe de direção inter-preditiva (com relação à Tabela 8 acima): TABELA 9
[0210] A Figura 8A mostra a estrutura de codificação descrita acima com relação à Tabela 9. Conforme mostrado na Figura 8A, o elemento de sintaxe de direção inter-preditiva (indicador_de_inter_pred) pose codificado com um processo CABAC que utiliza dois binários. O primeiro binário (Bin(0)) indica se o modo de inter-predição é unidirecional (bin(0)=0) ou bidirecional (pred_BI (bin(0)=1). O segundo binário é codificado condicionalmente apenas se o primeiro binário indicar o modo de predição unidirecional. O segundo binário (bin(1)) indica se o modo de predição unidirecional é da Lista0 (pred_L0) (bin(1)=0) ou da Lista1 (pred_L1) (bin(1)=1).
[0211] A derivação do índice de modelo de contexto para a direção inter-predição que tem apenas dois valores possíveis (bidirecional ou unidirecional a partir de LC) pode ser determinada com base na profundidade da CU que pode ter valores na faixa 0... 3 para o primeiro binário (bin0), conforme mostrado na equação abaixo: ctxIdx=Profundidadecu
[0212] No exemplo da Figura 8A, o segundo binário (bin(1)) pode ser codificado com contexto adicional ou pode ser codificado reutilizando-se um contexto do primeiro binário (bin(0)). Entretanto, a introdução de um contexto adicional pode aumentar a complexidade associada à codificação do elemento de sintaxe de direção inter- preditiva. Além do mais, a reutilização de um dos contextos do primeiro binário pode reduzir o número de contextos utilizados para codificar o bin0, e o codificador de vídeo deve efetuar uma verificação adicional para esta condição.
[0213] A Figura 8B é um diagrama de blocos que mostra a codificação por desvio do elemento de sintaxe de direção inter-preditiva de acordo com aspectos desta revelação. Conforme mostrado na Figura 8B, o primeiro binário (bin(0)) do elemento de sintaxe de direção inter-preditiva (indicador_de_inter_pred) pode ser codificado por contexto com um processo CABAC e um segundo binário (bin(1)) pode ser codificado com um modo de desvio do processo CABAC. O primeiro binário (bin(0)) indica se o modo de inter- predição é unidirecional (bin(0)=0) ou bidirecional (pred_BI)(bin(0)=1). Neste exemplo, o bin(0) pode ser codificado utilizando-se um de quatro contextos possíveis, ctxIdx=0...3. O segundo binário (bin(1)) pode ser codificado condicionalmente apenas se o primeiro binário indicar o modo de predição unidirecional. O segundo binário (bin(1)) indica se o modo de predição unidirecional é da Lista0 (pred_L0) (bin(1)=0) ou da Lista1 (pred_L1)(bin(1)=1). De acordo com aspectos desta revelação, o bin(1) pode ser codificado sem a utilização de contextos (codificado utilizando-se um modo de desvio do processo CABAC, por exemplo).
[0214] Desta maneira, de acordo com aspectos desta revelação, um codificador de vídeo (o codificador de vídeo 20 ou o decodificador de vídeo 30, por exemplo) pode binarizar um valor de direção inter-preditiva e codificar pelo menos um binário do valor direção inter-preditiva binarizado com um modo de desvio. Mais especificamente, o codificador de vídeo pode selecionar um contexto para codificar por contexto o primeiro binário (bin(0)) para o valor de direção inter-preditiva com um processo CABAC e codificar o segundo binário (bin(1)) com o modo de desvio do processo CABAC. Alternativamente, as técnicas permitem que o codificador de vídeo codifique o primeiro binário (bin(0)) para o valor de direção inter-preditiva com o modo de desvio e codifique também o segundo binário (bin(1)) com o modo de desvio. Por conseguinte, podem ser salvos os quatro contextos disponíveis para codificar o binário(0) ctxIdx=0... 3.
[0215] As técnicas permitem a codificação do elemento de sintaxe de direção inter-preditiva com três valores possíveis (bidirecional, unidirecional a partir de L0, ou unidirecional a partir de L1) sem exigir qualquer contexto adicional ou reutilização de contexto (o contexto do bin0, por exemplo). Além do mais, as técnicas utilizam o modo de desvio sem contextos necessários, o que pode ser menos complexos computacionalmente do que a codificação por contexto.
[0216] A Figura 9 é um fluxograma que mostra um exemplo de codificação por entropia de um valores de índice de referência, de acordo com aspectos desta revelação. Embora descrito de maneira geral como executado por componentes do codificador de vídeo 20 (Figura 1 e 2) para fins de explanação, deve ficar entendido que outras unidades de codificador de vídeo, processadores, unidades de processamento, unidades de codificação baseadas em hardware, tais como codificadores/decodificadores (CODECs) e semelhantes podem ser configurados para executar o processo da Figura 9.
[0217] No exemplo da Figura 9, o codificador de vídeo 20 binariza um elemento de sintaxe recebido (180). O codificador de vídeo 20 pode binarizar o elemento de sintaxe de acordo com qualquer um dos processos de binarização descritos nesta revelação. Processos de binarização exemplares incluem o unário truncado, Golomb exponencial ou semelhantes.
[0218] O codificador de vídeo 20 determina se o elemento de sintaxe binarizador é um valor de índice de referência (182). Mais uma vez, um valor de índice de referência identifica geralmente uma imagem de referência em uma lista de imagens de referência para fins de inter-predição. Se o elemento de sintaxe binarizador for um valor de índice de referência (a ramificação “sim” da etapa 182), o codificador de vídeo 20 pode codificar pelo menos um binário do valor de índice de referência binarizado utilizando codificação adaptativa ao contexto, tal como CABAC (184). Além disto, o componente vertical 20 pode codificar pelo menos outro binário do valor de índice de referência binarizado (em caso nos quais há binários adicionais a serem codificados) utilizando-se codificação por desvio, que se desvia do mecanismo de codificação adaptativa ao contexto (186).
[0219] Conforme descrito acima, com relação à Figura 4, o codificador de vídeo 20 pode, em alguns exemplos, codificar um, dois ou três binários utilizando-se codificação por contexto. Para os binários codificados por contexto, o codificador de vídeo 20 pode selecionar um contexto com base na posição relativa do binário na cadeia de binários. Por exemplo, o codificador de vídeo 20 pode selecionar um contexto para um primeiro binário que é diferente de um contexto para um segundo binário.
[0220] Seja como for, o codificador de vídeo 20 pode combinar os binários codificados por contexto e os binários codificados por desvio de modo a formar um fluxo de bits codificado 188. Em alguns exemplos, se o elemento de sintaxe que é codificado não for um índice de valor de referência (a ramificação “não” da etapa 182), o codificador de vídeo 20 pode selecionar um modo de codificação específico (de desvio ou adaptativo ao contexto, por exemplo) para codificar o elemento de sintaxe (190). O codificador de vídeo pode codificar o elemento de sintaxe utilizando-se o modo selecionado (192) e formar um fluxo de bits codificado (188).
[0221] Deve ficar entendido que as etapas mostradas e descritas com relação à Figura 9 são mostradas meramente como um exemplo. Ou seja, as etapas do método da Figura 9 não precisam ser necessariamente executadas na ordem mostrada na Figura 9, e um número menor de etapas, etapas adicionais, ou alternativas pode ser executadas. Por exemplo, o codificador de vídeo 20, pode em alguns casos, determinar se o elemento de sintaxe é um índice de referência (etapa 182) antes de binarizar o elemento de sintaxe (etapa 180).
[0222] A Figura 10 é um fluxograma que mostra um exemplo de decodificação por entropia de um valor de índice de referência, de acordo com aspectos desta revelação. Embora descrito de maneira geral como executado por componentes do decodificador de vídeo 30 (Figuras 1 e 3) para fins de explanação, deve ficar entendido que outras unidades de codificação de vídeo, processadores, unidades de processamento, unidades de codificação baseada em hardware tais como codificadores/decodificadores (CODEC) e semelhantes, podem ser também configurados para executar o processo da Figura 12.
[0223] O decodificador de vídeo 30 pode efetuar inicialmente parse de um elemento de sintaxe codificado a partir de um fluxo de bits codificado (200). Por exemplo, o decodificador de vídeo 30 pode ler e segmentar um elemento de sintaxe codificado a partir de um fluxo de bits codificado de acordo com um processo de execução de parse específico (execução de parse de frente de onda, por exemplo). O elemento de sintaxe codificado pode incluir uma série de binários codificados, isto é, valores binários.
[0224] O decodificador de vídeo 30 pode também determinar se uma parte do fluxo de bits que está sendo decodificado atualmente é um valor de índice de referência (202). Se o decodificador de vídeo estiver decodificando um valor de índice de referência (a ramificação “sim” da etapa 202), o decodificador de vídeo 30 pode decodificar pelo menos um binário utilizando codificação adaptativa ao contexto (206). Além disto, o decodificador de vídeo 30 pode decodificar pelo menos outro binário (em ocorrências nas quais há binários adicionais a serem codificados) utilizando codificação por desvio (208). Conforme observado acima com relação à Figura 9, o decodificador de vídeo 30 pode, Em alguns exemplos, codificar um, dois, ou três binários utilizando codificação por contexto. Para os binários codificados por contexto, o decodificador de vídeo 30 pode selecionar um contexto com base na posição relativa do binário na cadeia de binários. Por exemplo, o decodificador de vídeo 30 pode selecionar um contexto para um primeiro binário que é diferente de um contexto para um segundo binário.
[0225] Depois de decodificar os binário de modo a produzir valores binários decodificados, o decodificador de vídeo 30 pode binarizar a cadeia de binários decodificada de modo a produzir um elemento de sintaxe decodificado (208). Por exemplo, o decodificador de vídeo 30 pode mapear a cadeia de binários decodificada em um elemento de sintaxe utilizando um processo pré-determinado. Ou seja, em algumas ocorrências, o decodificador de vídeo 30 pode receber uma indicação de que um binário específico é o binário final para um elemento de sintaxe. Ao completar o elemento de sintaxe, em seguida o decodificador de vídeo 30 pode mapear a cadeia de binários em um elemento de sintaxe utilizando uma tabela de binarização.
[0226] Em alguns exemplos, se o elemento de sintaxe que é codificado não for um valor de índice de referência (a ramificação “não” da etapa 202) o decodificador de vídeo 30 pode selecionar um modo codificação específico (de desvio ou adaptativo ao contexto, por exemplo) para codificar o elemento de sintaxe (210). O decodificador de vídeo 30 pode decodificar o elemento de sintaxe utilizando um modo selecionado (212) e binarizar a cadeia de binários decodificada (208)
[0227] Deve ficar também entendido que as etapas mostradas e descritas com relação à Figura 10 são apresentadas meramente como um exemplo. Ou seja, as etapas do método da Figura 10 não precisam ser necessariamente executadas na ordem mostrada na Figura 10, e menos etapas, etapas adicionais ou alternativas podem ser executadas.
[0228] A Figura 11 é um fluxograma que mostra um exemplo de codificação por entropia de dados de predição, de acordo com aspectos desta revelação. Embora descrito de maneira geral como executado por componentes do codificador de vídeo 20 (Figuras 1 e 2) para fins de explanação, deve ficar entendido que outras unidade de codificação dd vídeo, processadores, unidades de processamento, unidades de codificação baseadas em software tais como codificadores/decodificadores (CODECs) e semelhantes podem ser também configurados para executar o processo da Figura 9.
[0229] No exemplo da Figura 11, o codificador de vídeo 20 pode binarizar um ou mais elementos de sintaxe que estão sendo codificados atualmente (220). Por exemplo, o codificador de vídeo 20 pode binarizar dados de predição que incluem um ou mais índices de referência, vetores de movimento, preditor de vetor de movimento, índices de preditor de vetor de movimento, valores de diferença entre vetores de movimento e semelhantes.
[0230] Seja como for, o codificador de vídeo 20 pode determinar se os elementos de sintaxe que são codificados incluem binários para codificação por contexto e binários para codificação por desvio (222). Ou seja, o codificador de vídeo 20 pode determinar se os binários de um elemento de sintaxe são codificados utilizando uma mistura de codificação adaptativa ao contexto e codificação por desvio. Se houver uma mistura tanto da codificação por contexto quanto da codificação por desvio (a ramificação “sim” da etapa 222), o codificador de vídeo 20 pode agrupar binários codificados por contexto e binários codificados por desvio (224). Por exemplo, o codificador de vídeo 20 pode separar os binários codificados por contexto dos binários codificados por desvio.
[0231] O codificador de vídeo 20 pode em seguida codificar os binários codificados por contexto utilizando, por exemplo, um processo de codificação adaptativa ao contexto (como CABAC, por exemplo)(226). Além disto, o codificador de vídeo 20 pode codificar os binários codificados por desvio utilizando um modo de desvio (226). O modo de desvio pode desviar-se do mecanismo de codificação adaptativa ao contexto e utilizar uma probabilidade fixa para codificar os binários.
[0232] Se o elemento de sintaxe que é codificado não incluir tanto binários codificados por contexto quanto binários codificados por desvio (a ramificação “não” da etapa 222) o codificador de vídeo pode selecionar um modo de codificação específico (pode desvio ou adaptativa ao contexto) para codificar o elemento de sintaxe (230). O codificador de vídeo 20 pode codificar então o elemento de sintaxe utilizando o modo selecionado (234).
[0233] Em algumas ocorrências, o agrupamento de binários descrito com relação à Figura 11 pode ser efetuado para mais de dois elementos de sintaxe. Conforme descrito acima, com relação à Figura 7, por exemplo, todos os binários codificados por contexto associados a uma PU podem ser agrupados, de modo que os binários codificados por contexto da PU sejam codificados juntos e os binários codificados por desvio da PU sejam codificados juntos. Além disto, o agrupamento pode ser efetuado ao nível de CU, LCU ou fatia. Ou seja, em alguns exemplos, todos os binários codificados por contexto para uma CU/LCU/fatia podem ser agrupados e codificados juntos, permitindo assim que o codificador de vídeo 20 faça uma única transição entre codificação por contexto e codificação por desvio.
[0234] Deve ficar também entendido que as etapas mostradas e descritas com relação à Figura 11 são apresentadas meramente com um exemplo. Os seja, as etapas do método da Figura 11 não precisam ser necessariamente executadas na ordem mostrada na Figura 11, e menos etapas, etapas adicionais ou alternativas podem ser executadas. Por exemplo, embora a Figura 11 mostre o codificador de vídeo 20 codificando binários codificados por contexto antes de binários codificados por desvio, em outros exemplos o codificador de vídeo 20 pode codificar binários codificados por desvio antes de binários codificados por contexto.
[0235] A Figura 12 é um fluxograma que mostra um exemplo de codificação por entropia de dados de predição, de acordo com aspectos desta revelação. Embora descrito de maneira geral como executado por componentes do decodificador de vídeo 30 (Figura 1 e 3) para fins de explanação, deve ficar entendido que outras unidades de codificação de vídeo, processadores, unidades de processamento, unidades de codificação baseadas em hardware tais como codificadores/decodificadores (CODECs) e semelhantes, podem ser também configurados para executar o processo da Figura 12.
[0236] No exemplo da Figura 12, o decodificador de vídeo pode determinar o elemento (ou elementos) de sintaxe a ser decodificado (240). Em um exemplo, o decodificador de vídeo 30 pode identificar elementos de sintaxe associados a dados de predição para decodificação. O decodificador de vídeo 30 pode determinar também se os binários do(s) elemento(s) de sintaxe incluem binários codificados por contexto e binários codificados por desvio (242). Se houver uma mistura de codificação por contexto e codificação por desvio (a ramificação “sim” da etapa 242), o decodificador de vídeo 30 pode decodificar os binários codificados por contexto (244). O decodificador de vídeo 30 pode decodificar também separadamente dos binários codificados por contexto, os binários codificados por desvio (246). Ou seja, em ocorrências nas quais binários codificados por contexto são agrupados separadamente dos binários codificados por desvio no fluxo de bits que é decodificado, o decodificador de vídeo 30 pode decodificar todos os binários codificados por contexto separadamente da decodificação dos binários codificados por desvio. Depois de decodificar os binários, o decodificador de vídeo 30 pode binarizar os binários decodificados de modo a formar um elemento de sintaxe decodificado (248). Por exemplo, o decodificador de vídeo 30 pode mapear a cadeia de binários decodificada em um elemento de sintaxe utilizando uma tabela de binarização ou outro processo de binarização.
[0237] Se o elemento de sintaxe que é codificado não incluir tantos binários codificados por contexto quanto binários codificados por desvio (a ramificação “não” da etapa 242), o decodificador de vídeo 30 pode selecionar um modo de codificação específico (por desvio ou adaptativo ao contexto, por exemplo) para codificar o elemento de sintaxe (250). O decodificador de vídeo 30 pode decodificar então os binários decodificados utilizando o modo selecionado (252) e binarizar a cadeia de binários decodificada de modo a formar um elemento de sintaxe decodificado (248).
[0238] Conforme descrito acima, com relação à Figura 11, em algumas ocorrências o agrupamento de binários pode ser efetuado para mais de dois elementos de sintaxe. Por exemplo, o agrupamento pode ser efetuado ao nível de PU, CU, LCU ou fatia. Ou seja, em alguns exemplos, todos os binários codificados para uma PU/CU/LCU/fatia podem ser agrupados e codificados juntos, permitindo assim que o decodificador de vídeo 30 faça uma única transição entre codificação por contexto e codificação por desvio.
[0239] Deve ficar também entendido que as etapas mostradas e descritas com relação à Figura 12 são apresentadas meramente como um exemplo. Ou seja, as etapa do método da Figura 12 não precisam ser necessariamente executadas na ordem mostrada na Figura 12, e menos etapas, etapas adicionais ou alternativas podem ser executadas. Por exemplo, embora a Figura 12 mostre o decodificador de vídeo 30 decodificando binários codificados por contexto antes de binários codificados por desvio, em outros exemplos o decodificador de vídeo 30 pode decodificar binários codificados por desvio antes de binários codificados por contexto.
[0240] Deve ficar também entendido que, dependendo do exemplo, determinados atos ou eventos de qualquer um dos métodos aqui descritos pode ser executados em uma sequência diferente. Podem ser adicionados, fundidos ou deixados de fora completamente (nem todos os atos ou eventos descritos são necessários para a prática do método, por exemplo). Além do mais, em determinados exemplos, os atos ou exemplos podem ser executados concomitantemente, como, por exemplo, através de processamento de vários fluxos, processamento por interrupção ou vários processadores e não sequencialmente. Além disto, embora determinados aspectos desta revelação sejam descritos como sendo executados por um único módulo ou unidade para maior clareza, deve ficar entendido que as técnicas desta revelação podem ser executadas por uma combinação de unidades ou módulos associados a um codificador de vídeo.
[0241] O codificador de vídeo 20 pode implementar qualquer uma ou todas as técnicas desta revelação para codificar um índice de referência e outros elementos de sintaxe em um processo de codificação de vídeo. Da mesma maneira, o decodificador de vídeo 30 pode implementar qualquer uma ou todas estas técnicas para codificar um índice de referência ou outros elementos de sintaxe em um processo de codificação de vídeo. Um codificador de vídeo conforme descrito nesta revelação, pode referir-se a um codificador de vídeo ou a um decodificador de vídeo. De maneira semelhante, uma unidade de codificação de vídeo pode referir-se a um codificador de vídeo ou a um decodificador de vídeo. Da mesma maneira, a codificação de vídeo pode referir-se à codificação de vídeo ou à decodificação de vídeo.
[0242] Em um ou mais exemplos, as funções descritas nesta revelação e atribuídas ao codificador de vídeo 20, ao decodificador de vídeo 30 ou a qualquer outra unidade de processamento podem ser implementadas em hardware, software, firmware ou qualquer combinação deles. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas através de uma ou mais instruções ou código em um meio passível de leitura por computador e executadas por uma unidade de processamento baseada em hardware. Os meios passíveis de leitura por computador podem incluir meios de armazenamento passíveis de leitura por computador, que correspondem a um meio tangível tal como um meio de armazenamento de dados ou meios de comunicações que incluem qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, como, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, os meios passíveis de leitura por computador podem corresponder a (1) meios de armazenamento passíveis de leitura por computador tangíveis que são não transitórios ou (2) um meio de comunicação tal como um sinal ou onda portadora. Os meios de armazenamento de dados podem ser quaisquer meios disponíveis que possam ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, códigos e/ou estrutura de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio passível de leitura por computador.
[0243] A título de exemplo, e não de limitação, tal meio passível de leitura por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou qualquer outro armazenamento em disco óptico, armazenamento em disco magnético ou outro aparelho de armazenamento magnético, memória flash ou qualquer outro meio que possa ser utilizado para armazenar dispositivos de código de programa desejados sob a forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disto, qualquer conexão é apropriadamente denominada de meio passível de leitura por computador. Por exemplo, se as instruções forem transmitidas de um site da Web, servidor ou outra fonte remota utilizando-se um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio tais como infravermelho, rádio e microonda, então o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou tecnologias sem fio tais como infravermelho, rádio e microonda são incluídos na definição de meio. Deve ficar entendido, contudo, que os meios de armazenamento passíveis de leitura por computador e os meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas estão em vez disso direcionados para meios de armazenamento tangíveis, não transitórios. O termo disco (disk e disc), conforme aqui utilizado, inclui disco compacto (CD), disco de laser, disco óptico, disco versátil digital (DVD), disco flexível e disco blu-ray, em que usualmente discos (disks) reproduzem usualmente dados magneticamente, enquanto discos (discs) reproduzem dados opticamente com lasers. Combinações deles devem ser também incluídas dentro do alcance dos meios passíveis de leitura por computador.
[0244] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados específicos de aplicativo (ASICs), arranjos lógicos programáveis no campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes ou qualquer combinação deles. O codificador de vídeo 20 ou o decodificador de vídeo 30 pode incluir um ou mais processadores que tais configurados para desempenhar as funções descritas nesta revelação. Por conseguinte, o termo processador, conforme aqui utilizado, pode referir-se a qualquer uma das estruturas precedentes ou qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disto, sob alguns aspectos, a funcionalidade aqui descrita pode ser provida dentro de hardware dedicado e/ou módulos de software configurados para codificar e decodificar ou incorporada em um codec combinado. Além disto, as técnicas pode sem completamente implementadas em um ou mais circuitos ou elementos lógicos.
[0245] As técnicas desta revelação podem ser implementadas em uma ampla variedade de aparelhos ou equipamentos, inclusive um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (um conjunto de chips, por exemplo). Diversos componentes, módulos ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de aparelhos configurados para executar as técnicas reveladas, mas não exigem necessariamente execução por unidades de hardware diferentes. Em vez disso, conforme descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware de codec ou providas por uma coleção de unidade de hardware inter-operantes, que incluem um ou mais processadores, conforme descrito acima, em conjunto com software ou firmware adequado.
[0246] Foram descritos diversos exemplos, estes outros exemplos estão dentro do alcance das reivindicações seguintes.
Claims (15)
1. Método para codificar um elemento de sintaxe de índice de referência em um processo de codificação de vídeo, o método caracterizado por compreender: binarizar (180) um valor de índice de referência; codificar (184) pelo menos um binário (bin) do valor de índice de referência binarizado com um modo de codificação por contexto de um processo de codificação aritmética binária adaptativa ao contexto, CABAC; e codificar (186), quando o valor de índice de referência binarizado compreender mais binários do que o pelo menos um binário codificado com o modo codificado por contexto, pelo menos outro binário do valor de índice de referência binarizado com um modo de codificação por desvio do processo (by-pass) CABAC, em que codificar pelo menos um binário do valor de índice de referência binarizado com o modo de codificação por contexto compreende: codificar um primeiro binário, bin0, do valor de índice de referência binarizado com um primeiro contexto, ctx0; codificar um segundo binário, bin1, do valor de índice de referência binarizado com um segundo contexto, ctx1, em que o primeiro contexto é diferente do segundo contexto; e codificar pelo menos outro binário do valor de índice de referência binarizado com um modo de codificação por desvio do processo compreender: codificar um terceiro binário, bin2, e todos os binários restantes após o terceiro binário, bin2, com o modo de codificação por desvio de processo.
2. Método, de acordo com a reivindicação 1, caracterizado por binarizar o valor de índice de referência compreender binarizar o valor de índice de referência usando um código unário truncado e um código de Golomb exponencial combinados.
3. Método, de acordo com a reivindicação 1, caracterizado por codificar pelo menos outro binário do valor de índice de referência binarizado com um modo de codificação por desvio compreender codificar o pelo menos outro binário com pelo menos um dentre um processo de codificação unário, unário truncado, de Golomb, de Golomb exponencial ou de Golomb-Rice e preferivelmente compreender adicionalmente: binarizar os componentes de um primeiro valor de diferença entre vetores de movimento associado ao primeiro índice de referência e os componentes de um segundo valor de diferença entre vetores de movimento associado a segundo índice de referência; codificar uma primeira parte dos componentes do primeiro valor de diferença entre vetores de movimento e uma primeira parte dos componentes do segundo valor de diferença entre vetores de movimento com o modo de codificação por contexto; e codificar uma segunda parte dos componentes do primeiro valor de diferença entre vetores de movimento e uma segunda parte dos componentes do segundo valor de diferença entre vetores de movimento com o modo de codificação por desvio e preferivelmente compreendendo adicionalmente: agrupar a primeira parte dos componentes do primeiro valor de diferença entre vetores de movimento e a primeira parte dos componentes do segundo valor de diferença entre vetores de movimento em um primeiro grupo para codificação com o modo de codificação por contexto, e agrupar a segunda parte dos componentes do primeiro valor de diferença entre vetores de movimento e a segunda parte dos componentes do segundo valor de diferença entre vetores de movimento em um segundo grupo para codificação com o modo de codificação por desvio.
4. Método, de acordo com a reivindicação 1, caracterizado por: codificar pelo menos um binário do valor de índice de referência binarizado com o modo de codificação por contexto compreender: codificar um terceiro binário, bin2, do índice de referência binarizado com um terceiro contexto, ctx2, em que codificar pelo menos outro binário do valor de índice de referência binarizado com um modo de codificação por desvio compreende: codificar todos os binários restantes após o terceiro binário, bin2, com o modo de codificação por desvio e preferivelmente em que codificar pelo menos um binário do valor de índice de referência binarizado com o modo de codificação por contexto compreende: codificar um primeiro binário, bin0, do valor de índice de referência binarizado com um primeiro contexto, ctx0, e em que codificar pelo menos outro binário do valor de índice de referência binarizado com o modo de codificação por desvio compreende: codificar todos os binários restantes após o primeiro binário, bin0, com o modo de codificação por desvio.
5. Método, de acordo com a reivindicação 1, caracterizado por binarizar o valor de índice de referência compreender codificar de maneira unária o valor de índice de referência e preferivelmente em que codificar de maneira unária o valor de índice de referência compreende codificar de maneira unária truncada o valor de índice de referência.
6. Método, de acordo com a reivindicação 1, caracterizado por binarizar o valor de índice de referência compreender codificar de maneira unária e codificar por Golomb exponencial o valor de índice de referência; codificar o pelo menos um binário do valor de índice de referência binarizado com o modo de codificação por contexto compreender: codificar pelo menos um binário de uma parte codificada de maneira unária do valor de índice de referência com o modo de codificação por contexto; e codificar o pelo menos outro binário do valor de índice de referência binarizado com o modo de codificação por desvio compreender: codificar pelo menos outro binário da parte codificada de maneira unária do valor de índice de referência e de uma parte codificada por Golomb exponencial do valor de índice de referência com o modo de codificação por desvio e preferivelmente compreendendo adicionalmente truncar a parte codificada por Golomb exponencial do valor de índice de referência antes de codificar a parte codificada por Golomb exponencial do valor de índice de referência e preferivelmente em que binarizar o valor de índice de referência compreende codificar de maneira unária e codificar com comprimento fixo o valor de índice de referência; codificar o pelo menos um binário do valor de índice de referência binarizado com o modo de codificação por contexto compreender codificar pelo menos um binário de uma parte codificada de maneira unária do valor de índice de referência com o modo de codificação por contexto; e codificar o pelo menos outro binário do valor de índice de referência binarizado com o modo de codificação por desvio compreender codificar pelo menos outro binário da parte codificada de maneira unária do valor de índice de referência e uma parte codificada de comprimento fixo do valor de índice de referência com o modo de codificação por desvio e preferivelmente compreendendo adicionalmente truncar a parte codificada de comprimento fixo do valor de índice de referência antes de codificar a parte codificada de comprimento fixo do valor de índice de referência e preferivelmente em que codificar com modo de codificação por contexto compreende selecionar um ou mais modelos de probabilidade para codificar o pelo menos um binário do índice de referência binarizado e codificar o pelo menos um binário do índice de referência binarizado utilizando o modelo selecionado ou os modelos de maior probabilidade selecionados; e codificar com o modo de codificação por desvio compreender determinar uma probabilidade fixa e codificar o pelo menos outro binário do valor de índice de referência binarizado utilizando a probabilidade fixa.
7. Equipamento para codificar um elemento de sintaxe de índice de referência em um processo de codificação de vídeo, o equipamento caracterizado por compreender: meios para binarizar um valor de índice de referência; meios para codificar pelo menos um binário do valor de índice de referência binarizado com um modo de codificação por contexto de um processo de codificação aritmética binária adaptativa ao contexto, CABAC; e meios para codificar, quando o valor de índice de referência binarizado compreender mais binários do que o pelo menos um binário codificado com o modo codificado por contexto, pelo menos outro binário do valor de índice de referência binarizado com um modo de codificação por desvio do processo CABAC, em que codificar pelo menos um binário do valor de índice de referência binizarizado com o modo de codificação por contexto compreende: codificar um primeiro binário, bin0, do valor de índice de referência binarizado com um primeiro contexto, ctx0; codificar um segundo binário, bin1, do valor de índice de referência binarizado com um segundo contexto, ctx1, em que o primeiro contexto é diferente do segundo contexto; e codificar pelo menos outro binário do valor de índice de referência binarizado com um modo de codificação por desvio do processo compreender: codificar um terceiro binário, bin2, e todos os binários restantes após o terceiro binário, bin2, com o modo de codificação por desvio de processo.
8. Equipamento, de acordo com a reivindicação 7, caracterizado por compreender adicionalmente meios para executar um método conforme definido em qualquer uma das reivindicações 2 a 6.
9. Método para decodificar um elemento de sintaxe de índice de referência em um processo de decodificação de vídeo, o método caracterizado por compreender: decodificar (204) pelo menos um binário de um valor de índice de referência com um modo de codificação por contexto de um processo de codificação aritmética binária adaptativa ao contexto, CABAC; decodificar (206), quando o valor de índice de referência compreender mais binários do que o pelo menos um binário codificado com o modo codificado por contexto, pelo menos outro binário do valor de índice de referência com um modo de codificação por desvio do processo CABAC, em que decodificar pelo menos um binário do valor de índice de referência binizarizado com o modo de codificação por contexto compreende: decodificar um primeiro binário, bin0, do valor de índice de referência binarizado com um primeiro contexto, ctx0; decodificar um segundo binário, bin1, do valor de índice de referência binarizado com um segundo contexto, ctx1, em que o primeiro contexto é diferente do segundo contexto; e decodificar pelo menos outro binário do valor de índice de referência binarizado com um modo de codificação por desvio do processo compreender: decodificar um terceiro binário, bin2, e todos os binários restantes após o terceiro binário, bin2, com o modo de codificação por desvio de processo; e binarizar o valor de índice de referência.
10. Método, de acordo com a reivindicação 9, caracterizado por binarizar o valor de índice de referência compreender binarizar o valor de índice de referência utilizando um código unário truncado e um código de Golomb exponencial combinados e preferivelmente em que decodificar pelo menos outro binário do valor de índice de referência com o modo de codificação por desvio compreende decodificar o pelo menos outro binário com pelo menos um dentre um processo de codificação unário, unário truncado, de Golomb, de Golomb exponencial ou de Golomb-Rice e preferivelmente compreender adicionalmente: decodificar uma primeira parte dos componentes de um primeiro valor de diferença entre vetores de movimento e uma primeira parte dos componentes de um segundo valor de diferença entre vetores de movimento com o modo de codificação por contexto; decodificar uma segunda parte dos componentes do primeiro valor de diferença entre vetores de movimento e uma segunda parte dos componentes do segundo valor de diferença entre vetores de movimento com o modo de codificação por desvio; e binarizar os componentes do primeiro valor de diferença entre vetores de movimento associado ao primeiro índice de referência e os componentes do segundo valor de diferença entre vetores de movimento associado a um segundo índice de referência e preferencialmente compreender adicionalmente: agrupar a primeira parte dos componentes do primeiro valor de diferença entre vetores de movimento e a primeira parte dos componentes do segundo valor de diferença entre vetores de movimento em um primeiro grupo para codificação com o modo de codificação por contexto, e agrupar a segunda parte dos componentes do primeiro valor de diferença entre vetores de movimento e a segunda parte dos componentes do segundo valor de diferença entre vetores de movimento em um segundo grupo para codificação com o modo de codificação por desvio.
11. Método, de acordo com a reivindicação 9, caracterizado por decodificar pelo menos um binário do valor de índice de referência com o modo de codificação por contexto compreender: decodificar um terceiro binário, bin2, do índice de referência binarizado com um terceiro contexto, ctx2, e decodificar pelo menos outro binário do valor de índice de referência com um modo de codificação por desvio compreender: decodificar todos os binários restantes após o terceiro binário, bin2, com o modo de codificação por desvio e preferivelmente em que decodificar pelo menos um binário do valor de índice de referência com o modo de codificação por contexto compreende: decodificar um primeiro binário, bin0, do valor de índice de referência com um primeiro contexto, ctx0, e decodificar pelo menos outro binário do valor de índice de referência com o modo de codificação por desvio compreender: decodificar todos os binários restantes após o primeiro binário, bin0, com o modo de codificação por desvio e adicionalmente preferivelmente em que binarizar o valor de índice de referência compreende codificação unária do valor de índice de referência e preferivelmente em que a codificação unária do valor de índice de referência compreende codificação unária truncada do valor de índice de referência.
12. Método, de acordo com a reivindicação 9, caracterizado por decodificar o pelo menos um binário do valor de índice de referência com o modo de codificação por contexto compreender: decodificar pelo menos um binário de uma parte codificada de maneira unária do valor de índice de referência com o modo de codificação por contexto; decodificar o pelo menos outro binário do valor de índice de referência com o modo de codificação por desvio compreender: decodificar pelo menos outro binário da parte codificada de maneira unária do valor de índice de referência e de uma parte codificada por Golomb exponencial do valor de índice de referência com o modo de codificação por desvio; e binarizar o valor de índice de referência compreender codificar de maneira unária e codificar por Golomb exponencial o valor de índice de referência e preferivelmente compreender adicionalmente truncar a parte codificada por Golomb exponencial do valor de índice de referência antes de decodificar a parte codificada por Golomb exponencial do valor de índice de referência.
13. Método, de acordo com a reivindicação 9, caracterizado por decodificar o pelo menos um binário do valor de índice de referência com o modo de codificação por contexto compreender decodificar pelo menos um binário de uma parte codificada de maneira unária do valor de índice de referência com o modo de codificação por contexto; decodificar o pelo menos outro binário do valor de índice de referência com o modo de codificação por desvio compreender decodificar pelo menos outro binário da parte codificada de maneira unária do valor de índice de referência e uma parte codificada por comprimento fixo do valor de índice de referência com o modo de codificação por desvio; e binarizar o valor de índice de referência compreender codificar de maneira unária e codificar por comprimento fixo o valor de índice de referência e preferivelmente compreender adicionalmente truncar a parte codificada por comprimento fixo do valor de índice de referência antes de codificar a parte codificada por comprimento fixo do valor de índice de referência e por preferivelmente decodificar com modo de codificação por contexto compreender selecionar um ou mais modelos de probabilidade para codificar o pelo menos um binário do índice de referência e decodificar o pelo menos um binário do índice de referência binarizado utilizando o modelo selecionado ou os modelos de probabilidade selecionados; e decodificar com o modo de codificação por desvio compreender determinar uma probabilidade fixa e decodificar o pelo menos outro binário do valor de índice de referência binarizado utilizando a probabilidade fixa.
14. Equipamento para decodificar um elemento de sintaxe de índice de referência em um processo de decodificação de vídeo, o equipamento caracteri zado por compreender meios para realizar o método conforme definido em qualquer uma das reivindicações de 9 a 13.
15. Memória caracterizada por conter instruções armazenadas na mesma que, quando executadas, fazem com que um ou mais processadores executem o método conforme definido em qualquer uma das reivindicações 1 a 6 ou 9 a 13.
Applications Claiming Priority (12)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261623043P | 2012-04-11 | 2012-04-11 | |
US61/623,043 | 2012-04-11 | ||
US201261637218P | 2012-04-23 | 2012-04-23 | |
US61/637,218 | 2012-04-23 | ||
US201261640568P | 2012-04-30 | 2012-04-30 | |
US201261647422P | 2012-05-15 | 2012-05-15 | |
US61/647,422 | 2012-05-15 | ||
US201261665151P | 2012-06-27 | 2012-06-27 | |
US61/665,151 | 2012-06-27 | ||
US13/828,173 | 2013-03-14 | ||
US13/828,173 US9264706B2 (en) | 2012-04-11 | 2013-03-14 | Bypass bins for reference index coding in video coding |
PCT/US2013/034968 WO2013154866A1 (en) | 2012-04-11 | 2013-04-02 | Bypass bins for reference index coding in video coding |
Publications (3)
Publication Number | Publication Date |
---|---|
BR112014025419A2 BR112014025419A2 (pt) | 2017-06-20 |
BR112014025419A8 BR112014025419A8 (pt) | 2021-06-22 |
BR112014025419B1 true BR112014025419B1 (pt) | 2023-02-28 |
Family
ID=49325049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112014025419-2A BR112014025419B1 (pt) | 2012-04-11 | 2013-04-02 | Binários de desvio para codificação de índices de referência em codificação de vídeo |
Country Status (21)
Country | Link |
---|---|
US (1) | US9264706B2 (pt) |
EP (1) | EP2837178B1 (pt) |
JP (1) | JP6215304B2 (pt) |
KR (1) | KR101706838B1 (pt) |
CN (1) | CN104205830B (pt) |
AU (1) | AU2013246275B2 (pt) |
BR (1) | BR112014025419B1 (pt) |
CA (1) | CA2867756C (pt) |
DK (1) | DK2837178T3 (pt) |
ES (1) | ES2742027T3 (pt) |
HK (1) | HK1201111A1 (pt) |
HU (1) | HUE044738T2 (pt) |
IL (1) | IL234648A (pt) |
MY (1) | MY171168A (pt) |
PH (1) | PH12014502204A1 (pt) |
RU (1) | RU2643655C2 (pt) |
SG (1) | SG11201405754VA (pt) |
TW (1) | TWI520619B (pt) |
UA (1) | UA115142C2 (pt) |
WO (1) | WO2013154866A1 (pt) |
ZA (1) | ZA201407859B (pt) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012134246A2 (ko) | 2011-04-01 | 2012-10-04 | 엘지전자 주식회사 | 엔트로피 디코딩 방법 및 이를 이용하는 디코딩 장치 |
US9379736B2 (en) * | 2011-06-03 | 2016-06-28 | Qualcomm Incorporated | Context-adaptive coding video data |
WO2012172811A1 (ja) * | 2011-06-17 | 2012-12-20 | パナソニック株式会社 | 動画像復号化装置および動画像復号化方法 |
US9258565B1 (en) * | 2011-06-29 | 2016-02-09 | Freescale Semiconductor, Inc. | Context model cache-management in a dual-pipeline CABAC architecture |
WO2013067435A1 (en) * | 2011-11-04 | 2013-05-10 | Huawei Technologies Co., Ltd. | Differential pulse code modulation intra prediction for high efficiency video coding |
US9584802B2 (en) * | 2012-04-13 | 2017-02-28 | Texas Instruments Incorporated | Reducing context coded and bypass coded bins to improve context adaptive binary arithmetic coding (CABAC) throughput |
US9621909B2 (en) * | 2012-07-02 | 2017-04-11 | Lg Electronics Inc. | Method for decoding image and apparatus using same |
RU2647674C1 (ru) * | 2012-07-02 | 2018-03-16 | Самсунг Электроникс Ко., Лтд. | Способ и устройство для кодирования видео и способ и устройство для декодирования видео, определяющие список опорных изображений внешнего прогнозирования в зависимости от размера блока |
CN104717512B (zh) * | 2013-12-16 | 2019-07-23 | 浙江大学 | 一种前向双假设编码图像块的编解码方法和装置 |
US9900625B2 (en) * | 2014-03-17 | 2018-02-20 | Mediatek Inc. | Method and apparatus for efficient information coding |
US9842115B2 (en) * | 2014-05-30 | 2017-12-12 | Apple Inc. | Media asset proxies |
US9854253B2 (en) * | 2014-06-30 | 2017-12-26 | Qualcomm Incorporated | Method for motion vector difference (MVD) and intra block copy vector difference (BVD) coding of screen content video data |
GB2530312B (en) * | 2014-09-19 | 2016-09-14 | Imagination Tech Ltd | Data compression |
CN107113442B (zh) * | 2014-10-31 | 2020-08-07 | 三星电子株式会社 | 用于对运动矢量进行编码/解码的方法和装置 |
US9942551B2 (en) * | 2015-01-30 | 2018-04-10 | Qualcomm Incorporated | Palette index grouping for video coding |
US11233998B2 (en) | 2015-05-29 | 2022-01-25 | Qualcomm Incorporated | Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design |
US10708164B2 (en) | 2016-05-03 | 2020-07-07 | Qualcomm Incorporated | Binarizing secondary transform index |
EP3264763A1 (en) * | 2016-06-29 | 2018-01-03 | Thomson Licensing | Method and apparatus for improved significance flag coding using simple local predictor |
CN113905238B (zh) * | 2016-07-05 | 2024-06-04 | 株式会社Kt | 对视频进行解码或编码的方法和计算机可读介质 |
US10412390B2 (en) | 2016-07-12 | 2019-09-10 | Mediatek Inc. | Video processing system using low-cost video encoding/decoding architecture |
US10827186B2 (en) * | 2016-08-25 | 2020-11-03 | Intel Corporation | Method and system of video coding with context decoding and reconstruction bypass |
KR20180031944A (ko) | 2016-09-21 | 2018-03-29 | 삼성전자주식회사 | 비디오 디코더 및 이를 포함하는 전자 시스템 |
US10264264B2 (en) * | 2016-09-24 | 2019-04-16 | Apple Inc. | Multi-bin decoding systems and methods |
EP3306924A1 (en) | 2016-10-05 | 2018-04-11 | Thomson Licensing | Method and device for context-adaptive binary arithmetic coding a sequence of binary symbols representing a syntax element related to picture data |
TWI604323B (zh) * | 2016-11-10 | 2017-11-01 | 財團法人工業技術研究院 | 視訊索引建立方法及應用其之裝置 |
KR102414164B1 (ko) * | 2017-03-31 | 2022-06-29 | 한국전자통신연구원 | 향상된 산술부호화를 제공하는 영상 처리 방법, 그를 이용한 영상 복호화, 부호화 방법 및 그 장치 |
US10560723B2 (en) | 2017-05-08 | 2020-02-11 | Qualcomm Incorporated | Context modeling for transform coefficient coding |
CN107300909A (zh) * | 2017-06-30 | 2017-10-27 | 电子科技大学 | 一种基于mvc框架的无人机地面维护***及方法 |
US10506242B2 (en) * | 2018-01-30 | 2019-12-10 | Google Llc | Efficient context model computation design in transform coefficient coding |
US10869060B2 (en) * | 2018-01-30 | 2020-12-15 | Google Llc | Efficient context model computation design in transform coefficient coding |
US11528490B2 (en) * | 2018-04-13 | 2022-12-13 | Zhejiang University | Information preserving coding and decoding method and device |
EP3562162A1 (en) | 2018-04-27 | 2019-10-30 | InterDigital VC Holdings, Inc. | Method and apparatus for video encoding and decoding based on neural network implementation of cabac |
WO2019235366A1 (ja) * | 2018-06-06 | 2019-12-12 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置 |
KR102648120B1 (ko) | 2018-06-29 | 2024-03-18 | 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 | 슬라이스/타일/lcu 행마다의 룩업 테이블 리셋 |
CN110662043B (zh) | 2018-06-29 | 2021-12-21 | 北京字节跳动网络技术有限公司 | 一种用于处理视频数据的方法、装置和计算机可读介质 |
CN114900694A (zh) | 2018-06-29 | 2022-08-12 | 抖音视界(北京)有限公司 | 哪个查找表需要更新或不更新 |
WO2020003270A1 (en) | 2018-06-29 | 2020-01-02 | Beijing Bytedance Network Technology Co., Ltd. | Number of motion candidates in a look up table to be checked according to mode |
JP7137008B2 (ja) | 2018-06-29 | 2022-09-13 | 北京字節跳動網絡技術有限公司 | 1つまたは複数のルックアップテーブルを使用して、以前コーディングされた動き情報を順に記憶させてそれらを後続のブロックのコーディングに使用する概念 |
CN110662052B (zh) | 2018-06-29 | 2022-07-08 | 北京字节跳动网络技术有限公司 | 更新查找表(lut)的条件 |
EP3791588A1 (en) | 2018-06-29 | 2021-03-17 | Beijing Bytedance Network Technology Co. Ltd. | Checking order of motion candidates in lut |
EP3791585A1 (en) | 2018-06-29 | 2021-03-17 | Beijing Bytedance Network Technology Co. Ltd. | Partial/full pruning when adding a hmvp candidate to merge/amvp |
AU2019293670B2 (en) | 2018-06-29 | 2023-06-08 | Beijing Bytedance Network Technology Co., Ltd. | Update of look up table: FIFO, constrained FIFO |
CN110677667B (zh) * | 2018-07-02 | 2022-06-07 | 北京字节跳动网络技术有限公司 | 查找表的使用 |
CN117651149A (zh) | 2018-09-10 | 2024-03-05 | 华为技术有限公司 | 视频解码方法及视频解码器 |
WO2020053800A1 (en) | 2018-09-12 | 2020-03-19 | Beijing Bytedance Network Technology Co., Ltd. | How many hmvp candidates to be checked |
GB2577318B (en) | 2018-09-21 | 2021-03-10 | Canon Kk | Video coding and decoding |
EP3857882A1 (en) * | 2018-09-24 | 2021-08-04 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Efficient coding of transform coefficients using or suitable for a combination with dependent scalar quantization |
US11006150B2 (en) | 2018-09-24 | 2021-05-11 | Tencent America LLC | Method and apparatus for video coding |
US11197017B2 (en) * | 2018-12-06 | 2021-12-07 | Tencent America LLC | Methods and apparatuses for video coding |
US10798397B2 (en) * | 2019-01-02 | 2020-10-06 | Tencent America LLC | Method and apparatus for video coding |
JP7275286B2 (ja) | 2019-01-10 | 2023-05-17 | 北京字節跳動網絡技術有限公司 | Lut更新の起動 |
CN113273207A (zh) * | 2019-01-10 | 2021-08-17 | 北京字节跳动网络技术有限公司 | 基于几何分区的具有运动矢量差(MVD)的Merge |
CN113383554B (zh) | 2019-01-13 | 2022-12-16 | 北京字节跳动网络技术有限公司 | LUT和共享Merge列表之间的交互 |
CN113330739A (zh) | 2019-01-16 | 2021-08-31 | 北京字节跳动网络技术有限公司 | Lut中的运动候选的***顺序 |
CN113316934B (zh) * | 2019-01-25 | 2024-03-08 | 寰发股份有限公司 | 带有变换块级别约束的变换系数编码的方法和设备 |
WO2020171644A1 (ko) * | 2019-02-22 | 2020-08-27 | 엘지전자 주식회사 | 영상 코딩 시스템에서 cclm 예측에 기반한 영상 디코딩 방법 및 그 장치 |
CN111726632B (zh) * | 2019-03-18 | 2022-08-26 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置及其设备 |
CN113615193B (zh) | 2019-03-22 | 2024-06-25 | 北京字节跳动网络技术有限公司 | Merge列表构建和其他工具之间的交互 |
US11604767B2 (en) | 2019-04-05 | 2023-03-14 | Comcast Cable Communications, Llc | Systems and methods for data distillation |
KR20210142008A (ko) * | 2019-06-17 | 2021-11-23 | 엘지전자 주식회사 | 루마 맵핑 및 크로마 스케일링 기반 비디오 또는 영상 코딩 |
CN111742552B (zh) * | 2019-06-25 | 2021-08-31 | 北京大学 | 环路滤波的方法与装置 |
US11330298B2 (en) * | 2019-06-25 | 2022-05-10 | Qualcomm Incorporated | Simplified intra chroma mode coding in video coding |
WO2021054776A1 (ko) * | 2019-09-18 | 2021-03-25 | 삼성전자 주식회사 | 움직임 정보의 부호화 장치 및 방법, 및 복호화 장치 및 방법 |
US11431688B2 (en) | 2019-12-13 | 2022-08-30 | TripleBlind, Inc. | Systems and methods for providing a modified loss function in federated-split learning |
US11973743B2 (en) | 2019-12-13 | 2024-04-30 | TripleBlind, Inc. | Systems and methods for providing a systemic error in artificial intelligence algorithms |
US11363002B2 (en) | 2019-12-13 | 2022-06-14 | TripleBlind, Inc. | Systems and methods for providing a marketplace where data and algorithms can be chosen and interact via encryption |
US11599671B1 (en) * | 2019-12-13 | 2023-03-07 | TripleBlind, Inc. | Systems and methods for finding a value in a combined list of private values |
MX2022010889A (es) * | 2020-03-05 | 2022-10-27 | Lg Electronics Inc | Metodo y dispositivo de codificacion/decodificacion de imagen basado en el tipo de unidad nal combinada, y metodo para trasmitir flujo de bits. |
CN114467133A (zh) * | 2020-03-11 | 2022-05-10 | 深圳云英谷科技有限公司 | 压缩和解压缩显示补偿亮度不匀的补偿数据的方法和*** |
WO2023091688A1 (en) * | 2021-11-19 | 2023-05-25 | Beijing Dajia Internet Information Technology Co., Ltd. | Methods and devices for decoder-side intra mode derivation |
WO2023114155A1 (en) * | 2021-12-13 | 2023-06-22 | Beijing Dajia Internet Information Technology Co., Ltd. | Methods and devices for decoder-side intra mode derivation |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5473376A (en) * | 1994-12-01 | 1995-12-05 | Motorola, Inc. | Method and apparatus for adaptive entropy encoding/decoding of quantized transform coefficients in a video compression system |
WO1998000977A1 (en) * | 1996-07-03 | 1998-01-08 | Motorola Inc. | Method and apparatus for bound-based adaptive entropy encoding/decoding |
US5994123A (en) * | 1996-08-09 | 1999-11-30 | Regents Of University Of Minnesota | Sugarcane bacilliform virus promoter |
EP1809044B1 (en) * | 1997-02-14 | 2008-10-01 | Nippon Telegraph and Telephone Corporation | Predictive decoding method of video data |
BR9806152A (pt) * | 1997-09-02 | 2000-01-11 | Koninkl Philips Electronics Nv | Processo e arranjo para detectar uma "marca d'água" multi-bit em um sinal, e, processo e arranjo para embutir uma "marca d'água" multi-bit em uma imagem de vìdeo |
US5978494A (en) * | 1998-03-04 | 1999-11-02 | Sensar, Inc. | Method of selecting the best enroll image for personal identification |
KR100796176B1 (ko) * | 1999-08-27 | 2008-01-21 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 신호 코딩 방법 및 장치, 인코더, 카메라 시스템, 디코딩 방법, 스케일가능 디코더 및 수신기 |
US20020157116A1 (en) * | 2000-07-28 | 2002-10-24 | Koninklijke Philips Electronics N.V. | Context and content based information processing for multimedia segmentation and indexing |
FR2825538A1 (fr) * | 2001-05-31 | 2002-12-06 | Cit Alcatel | Procede de codage consistant a coder un mot binaire selon une pluralite de tables de codage |
US7142675B2 (en) * | 2002-02-12 | 2006-11-28 | City University Of Hong Kong | Sequence generator and method of generating a pseudo random sequence |
CN1198635C (zh) * | 2002-07-30 | 2005-04-27 | 孙新刚 | 中药痔疮药膏 |
CN1525354A (zh) * | 2003-02-24 | 2004-09-01 | 王雅量 | 利用互联网资源进行语言词汇学习的方法和*** |
US7630440B2 (en) | 2003-05-28 | 2009-12-08 | Broadcom Corporation | Context adaptive binary arithmetic code decoding engine |
US6900748B2 (en) * | 2003-07-17 | 2005-05-31 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Method and apparatus for binarization and arithmetic coding of a data value |
US7599435B2 (en) * | 2004-01-30 | 2009-10-06 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Video frame encoding and decoding |
US7469070B2 (en) * | 2004-02-09 | 2008-12-23 | Lsi Corporation | Method for selection of contexts for arithmetic coding of reference picture and motion vector residual bitstream syntax elements |
US7804903B2 (en) * | 2005-06-27 | 2010-09-28 | Intel Corporation | Hardware-based CABAC decoder |
US8320453B2 (en) * | 2005-07-08 | 2012-11-27 | Lg Electronics Inc. | Method for modeling coding information of a video signal to compress/decompress the information |
US7894523B2 (en) * | 2005-09-05 | 2011-02-22 | Lg Electronics Inc. | Method for modeling coding information of a video signal for compressing/decompressing coding information |
KR100714706B1 (ko) * | 2005-09-26 | 2007-05-04 | 삼성전자주식회사 | 엔트로피 코딩의 성능 향상 방법 및 장치, 상기 방법을이용한 비디오 코딩 방법 및 장치 |
KR100644713B1 (ko) | 2005-10-31 | 2006-11-10 | 삼성전자주식회사 | 컨텍스트 기반 적응적 이진 산술 코딩 복호기에서 원소구문을 복호화하는 방법 및 이를 위한 복호화 장치 |
US7983343B2 (en) * | 2006-01-12 | 2011-07-19 | Lsi Corporation | Context adaptive binary arithmetic decoding for high definition video |
RU2407218C2 (ru) * | 2006-07-13 | 2010-12-20 | Квэлкомм Инкорпорейтед | Видеокодирование с высокодетализированной масштабируемостью с использованием выровненных с циклом фрагментов |
EP2232874B1 (en) * | 2008-01-08 | 2012-12-05 | Telefonaktiebolaget L M Ericsson (publ) | Adaptive filtering |
CN101668202A (zh) * | 2008-09-01 | 2010-03-10 | 中兴通讯股份有限公司 | 帧内预测模式的选择方法和装置 |
TWI403170B (zh) * | 2010-05-21 | 2013-07-21 | Univ Nat Chiao Tung | 背景調適性二進制算術解碼裝置及其解碼方法 |
WO2012134246A2 (ko) * | 2011-04-01 | 2012-10-04 | 엘지전자 주식회사 | 엔트로피 디코딩 방법 및 이를 이용하는 디코딩 장치 |
US20130003829A1 (en) * | 2011-07-01 | 2013-01-03 | Kiran Misra | System for initializing an arithmetic coder |
US9538172B2 (en) * | 2012-04-11 | 2017-01-03 | Qualcomm Incorporated | Grouping bypass coded syntax elements in video coding |
US9584802B2 (en) * | 2012-04-13 | 2017-02-28 | Texas Instruments Incorporated | Reducing context coded and bypass coded bins to improve context adaptive binary arithmetic coding (CABAC) throughput |
-
2013
- 2013-03-14 US US13/828,173 patent/US9264706B2/en active Active
- 2013-04-02 WO PCT/US2013/034968 patent/WO2013154866A1/en active Application Filing
- 2013-04-02 ES ES13717116T patent/ES2742027T3/es active Active
- 2013-04-02 MY MYPI2014702628A patent/MY171168A/en unknown
- 2013-04-02 BR BR112014025419-2A patent/BR112014025419B1/pt active IP Right Grant
- 2013-04-02 EP EP13717116.1A patent/EP2837178B1/en active Active
- 2013-04-02 AU AU2013246275A patent/AU2013246275B2/en active Active
- 2013-04-02 CN CN201380019062.0A patent/CN104205830B/zh active Active
- 2013-04-02 HU HUE13717116 patent/HUE044738T2/hu unknown
- 2013-04-02 SG SG11201405754VA patent/SG11201405754VA/en unknown
- 2013-04-02 DK DK13717116.1T patent/DK2837178T3/da active
- 2013-04-02 RU RU2014145207A patent/RU2643655C2/ru active
- 2013-04-02 UA UAA201412158A patent/UA115142C2/uk unknown
- 2013-04-02 CA CA2867756A patent/CA2867756C/en active Active
- 2013-04-02 KR KR1020147031475A patent/KR101706838B1/ko active IP Right Grant
- 2013-04-02 JP JP2015505786A patent/JP6215304B2/ja active Active
- 2013-04-11 TW TW102112895A patent/TWI520619B/zh active
-
2014
- 2014-09-15 IL IL234648A patent/IL234648A/en active IP Right Grant
- 2014-09-30 PH PH12014502204A patent/PH12014502204A1/en unknown
- 2014-10-28 ZA ZA2014/07859A patent/ZA201407859B/en unknown
-
2015
- 2015-02-12 HK HK15101566.5A patent/HK1201111A1/xx unknown
Also Published As
Publication number | Publication date |
---|---|
CA2867756A1 (en) | 2013-10-17 |
SG11201405754VA (en) | 2014-10-30 |
UA115142C2 (uk) | 2017-09-25 |
CN104205830A (zh) | 2014-12-10 |
AU2013246275A1 (en) | 2014-10-23 |
TW201408073A (zh) | 2014-02-16 |
TWI520619B (zh) | 2016-02-01 |
DK2837178T3 (da) | 2019-08-19 |
MY171168A (en) | 2019-09-30 |
CN104205830B (zh) | 2018-01-12 |
US9264706B2 (en) | 2016-02-16 |
JP2015513290A (ja) | 2015-04-30 |
US20130272377A1 (en) | 2013-10-17 |
IL234648A (en) | 2016-08-31 |
HUE044738T2 (hu) | 2019-11-28 |
WO2013154866A1 (en) | 2013-10-17 |
AU2013246275B2 (en) | 2016-09-15 |
RU2643655C2 (ru) | 2018-02-02 |
PH12014502204B1 (en) | 2014-12-10 |
PH12014502204A1 (en) | 2014-12-10 |
RU2014145207A (ru) | 2016-05-27 |
JP6215304B2 (ja) | 2017-10-18 |
KR20150003299A (ko) | 2015-01-08 |
ES2742027T3 (es) | 2020-02-12 |
EP2837178B1 (en) | 2019-05-15 |
EP2837178A1 (en) | 2015-02-18 |
BR112014025419A2 (pt) | 2017-06-20 |
ZA201407859B (en) | 2017-04-26 |
CA2867756C (en) | 2018-07-10 |
KR101706838B1 (ko) | 2017-02-14 |
BR112014025419A8 (pt) | 2021-06-22 |
HK1201111A1 (en) | 2015-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112014025419B1 (pt) | Binários de desvio para codificação de índices de referência em codificação de vídeo | |
TWI828507B (zh) | 圖像預測方法、裝置以及視訊編碼器、視訊解碼器 | |
US9736489B2 (en) | Motion vector determination for video coding | |
US9432685B2 (en) | Scalable implementation for parallel motion estimation regions | |
US9426463B2 (en) | Restriction of prediction units in B slices to uni-directional inter prediction | |
US20130188715A1 (en) | Device and methods for merge list reordering in video coding | |
BR122020003135B1 (pt) | Método e dispositivo para decodificar dados de vídeo e meio de armazenamento não transitório legível por computador | |
BR112013021612B1 (pt) | Método e dispositivo para decodificar dados de vídeo de acordo com um modo de fusão, método e dispositivo para codificar dados de vídeo de acordo com um modo de fusão e memória legível por computador | |
BR112014011058B1 (pt) | Métodos para codificar e decodificar dados de vídeo, dispositivos compreendendo um codificador e um decodificador de vídeo e meio de armazenamento | |
WO2013155424A1 (en) | Common motion information candidate list construction process | |
BR112015016253B1 (pt) | Sinalização de informação de derivação de tique de relógio para temporização de vídeo em codificação de vídeo | |
US9420285B2 (en) | Inter-layer mode derivation for prediction in scalable video coding | |
WO2013119816A1 (en) | Restriction of prediction units in b slices to uni-directional inter prediction | |
BR112014025406B1 (pt) | Método de codificação e de decodificação de dados de vídeo, mídia de armazenamento legível por computador e aparelho para codificar e decodificar dados de vídeo | |
JP7407741B2 (ja) | ビデオ符号化方法および装置 | |
US20210203944A1 (en) | Decoding method and decoding apparatus for predicting motion information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B15K | Others concerning applications: alteration of classification |
Ipc: H04N 7/00 (2011.01) |
|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B15K | Others concerning applications: alteration of classification |
Free format text: A CLASSIFICACAO ANTERIOR ERA: H04N 7/00 Ipc: H04N 19/13 (2014.01), H04N 19/463 (2014.01), H04N |
|
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 02/04/2013, OBSERVADAS AS CONDICOES LEGAIS |