BR122021000264B1 - Codificação de entropia das diferenças do vetor de movimento - Google Patents

Codificação de entropia das diferenças do vetor de movimento Download PDF

Info

Publication number
BR122021000264B1
BR122021000264B1 BR122021000264-9A BR122021000264A BR122021000264B1 BR 122021000264 B1 BR122021000264 B1 BR 122021000264B1 BR 122021000264 A BR122021000264 A BR 122021000264A BR 122021000264 B1 BR122021000264 B1 BR 122021000264B1
Authority
BR
Brazil
Prior art keywords
horizontal
vertical components
probability
data stream
motion vector
Prior art date
Application number
BR122021000264-9A
Other languages
English (en)
Inventor
George Valeri
Benjamin BROSS
Kirchhoffer Heiner
Marpe Detlev
Tung Nguyen
Matthias PREISS
Mischa SIEKMANN
Jan STEGEMANN
Thomas Wiegand
Original Assignee
Ge Video Compression, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=46319135&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=BR122021000264(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Ge Video Compression, Llc filed Critical Ge Video Compression, Llc
Publication of BR122021000264B1 publication Critical patent/BR122021000264B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4068Parameterized codes
    • H03M7/4075Golomb codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks

Abstract

Um decodificador para decodificar um vídeo de um fluxo de dados, no qual os componentes horizontais e verticais das diferenças do vetor de movimento são codificados utilizando binarizações dos componentes horizontais e verticais, é descrito, as binarizações equalizando um código unário truncado dos componentes horizontais e verticais, respectivamente, dentro de um primeiro intervalo do domínio dos componentes horizontais e verticais abaixo de um valor de corte, e uma combinação de um prefixo na forma do código unário truncado para o valor de corte e um sufixo na forma de um código Exp-Golomb dos componentes horizontais e verticais, respectivamente, dentro de um segundo intervalo do domínio dos componentes horizontais e verticais, inclusive e acima do valor de corte, caracterizado pelo valor de corte ser dois e o código Exp- Golomb ter ordem um. Um decodificador de entropia é configurado para, para os componentes horizontais e verticais das diferenças do vetor de movimento, derivar o código unário truncado do fluxo de dados utilizando decodificação de entropia binária adaptativa por contexto com exatamente um contexto por localização da posição do código unário truncado, que é comum para os componentes horizontais e verticais das diferenças do vetor de movimento, e o código Exp-(...).

Description

PEDIDO DIVIDIDO DO BR 11 2013 032333 7 depositado em 18/06/2012. DESCRIÇÃO
[0001] A presente invenção refere-se a um conceito de codificação de entropia para codificar dados de vídeo.
[0002] Muitos codecs de vídeo são conhecidos na técnica. Geralmente, estes codecs reduzem a quantidade de dados necessária para representar o conteúdo de vídeo, ou seja, eles comprimem os dados. No contexto de codificação de vídeo, sabe-se que a compressão dos dados de vídeo é vantajosamente obtida aplicando sequencialmente as diferentes técnicas de codificação: previsão compensada por movimento é utilizada para prever o conteúdo da figura. Os vetores de movimento determinados na previsão compensada por movimento bem como o resíduo de previsão são sujeitos à codificação de entropia sem perda. Para reduzir mais a quantidade de dados, os próprios vetores de movimento são sujeitos à previsão de modo que meramente as diferenças do vetor de movimento representando o resíduo de previsão do vetor de movimento, devem ser codificadas por entropia. Em H.264, por exemplo, o procedimento agora descrito é aplicado para transmitir a informação nas diferenças do vetor de movimento. Em particular, as diferenças do vetor de movimento são binarizadas em séries de posição correspondentes a uma combinação de um código unário truncado e, de um determinado valor de corte em, um código Golom exponencial. Enquanto as posições do código Golom exponencial são facilmente codificadas utilizando um modo de derivação da equiprobabilidade com probabilidade fixa de 0,5, vários contextos são providos para as primeiras posições. O valor de corte é escolhido como nove. Certamente, uma alta quantidade de contextos é fornecida para codificar as diferenças do vetor de movimento.
[0003] Fornecendo um alto número de contextos, entretanto, não apenas aumenta a complexidade de codificação, mas também pode negativamente afetar a eficiência da codificação: se um contexto for visitado muito raramente, a adaptação de probabilidade, ou seja, a adaptação da estimativa de probabilidade associada ao respectivo contexto durante a causa da codificação de entropia, falha para realizar efetivamente. Certamente, as estimativas de probabilidade aplicadas inapropriadamente estimam as estatísticas de símbolo real. Além disso, se for uma posição determinada da binarização, vários contextos é fornecida, a seleção entre eles pode necessitar de inspeção das posições próximas/valores do elemento de sintaxe cuja necessidade pode dificultar a execução do processo de decodificação. Por outro lado, se o número de contextos for muito baixo, as posições de estatísticas de símbolo real altamente variantes são agrupadas juntas dentro de um contexto e certamente, a estimativa de probabilidade associada com este contexto falhar para efetivamente codificar as posições associadas a ele.
[0004] Há uma necessidade contínua de aumentar mais a eficiência da codificação de codificação de entropia das diferenças do vetor de movimento.
[0005] Certamente, é um objetivo de a presente invenção fornecer este conceito de codificação.
[0006] Este objetivo é obtido pelo assunto das reivindicações independentes anexadas aqui.
[0007] Uma constatação básica da presente invenção é que a eficiência da codificação de codificação de entropia de diferenças do vetor de movimento pode ainda ser aumentada pela redução do valor de corte até o qual o código unário truncado é utilizado para binarizar as diferenças do vetor de movimento, abaixo de dois de modo que há meramente duas localizações da posição do código unário truncado, e se uma ordem de um for utilizada para o código Golom exponencial para a binarização das diferenças do vetor de movimento do valor de corte e se, adicionalmente, exatamente um contexto for fornecido para duas localizações da posição do código unário truncado, respectivamente, de modo que a seleção de contexto com base nas posições ou valores do elemento de sintaxe dos blocos de imagem próximos não é necessária e uma classificação muito fina das posições nestas localizações das posição em contexto é evitada de modo que a adaptação de probabilidade opera corretamente, e se os mesmos contextos são utilizados para os componentes horizontais e verticais assim reduzindo mais os efeitos negativos de uma subdivisão de contexto muito fino.
[0008] Ainda, foi observado que os ajustes agora mencionados com relação à codificação de entropia de diferenças do vetor de movimento são especialmente valiosos ao combinar o mesmo com os métodos avançados para prever os vetores de movimento e reduzir a quantidade necessária de diferenças do vetor de movimento a ser transmitido. Por exemplo, vários indicadores do vetor de movimento podem ser fornecidos para obter uma lista ordenada de indicadores do vetor de movimento, e um índice nesta lista de indicadores do vetor de movimento pode ser utilizado para determinar o indicador do valor real de movimento indicador do residual de previsão do qual é representado pela diferença do vetor de movimento em questão. Embora a informação no índice da lista utilizada deva ser derivável do fluxo de dados no lado da decodificação, toda a qualidade de previsão dos vetores de movimento é aumentada e certamente, a magnitude das diferenças do vetor de movimento é ainda reduzida de modo que juntas, a eficiência da codificação seja elevada mais e a redução do valor de corte e o uso comum do contexto para componentes horizontais e verticais das diferenças do vetor de movimento encaixa em uma previsão do vetor de movimento melhorado. Por outro lado, a união pode ser utilizada para reduzir o número de diferenças do vetor de movimento a ser transmitido dentro do fluxo de dados: para esta finalidade, a informação de união pode ser conduzida dentro do fluxo de dados sinalizando para os blocos do decodificador de uma subdivisão de blocos que são agrupados em um grupo de blocos. As diferenças do vetor de movimento podem então ser transmitidas dentro do fluxo de dados em unidades destes grupos unidos ao invés de blocos individuais, assim reduzindo o número de diferenças do vetor de movimento tendo que ser transmitido. Como este agrupamento de blocos reduz a inter-correlação entre as diferenças próximas do vetor de movimento, a omissão agora mencionada da provisão de vários contextos para uma localização da posição impede o esquema da codificação de entropia de uma classificação muito fina em contextos dependendo das diferenças próximas do vetor de movimento. Ainda, o conceito de união já explora a inter- correlação entre as diferenças do vetor de movimento de bloco próximo e certamente, um contexto para uma localização da posição - o mesmo para os componentes horizontais e verticais – é suficiente.
[0009] Aplicações preferidas da presente invenção são descritas a seguir com relação às Figuras, nas quais:
[00010] A Figura 1 mostra um diagrama em blocos de um codificador de acordo com uma aplicação;
[00011] As Figuras 2a-2c mostram esquematicamente diferentes subdivisões de uma matriz de amostra como uma figura em blocos;
[00012] A Figura 3 mostra um diagrama em blocos de um decodificador de acordo com uma aplicação;
[00013] A Figura 4 mostra um diagrama em blocos de um codificador de acordo com uma aplicação em mais detalhes;
[00014] A Figura 5 mostra um diagrama em blocos de um decodificador de acordo com uma aplicação em mais detalhes;
[00015] A Figura 6 esquematicamente ilustra uma transformação de um bloco de domínio espacial em domínio espectral, o bloco de transformação resultante e sua retransformação;
[00016] A Figura 7 mostra um diagrama em blocos de um codificador de acordo com uma aplicação;
[00017] A Figura 8 mostra um diagrama em blocos de um decodificador adequado para decodificar o fluxo de dados contínuo gerado pelo codificador da Figura 8, de acordo com uma aplicação;
[00018] A Figura 9 mostra um diagrama esquemático que ilustra um pacote de dados com fluxos de dados contínuos parciais multiplexados de acordo com uma aplicação;
[00019] A Figura 10 mostra um diagrama esquemático que ilustra um pacote de dados com uma segmentação alternativa utilizando segmentos de tamanho fixo de acordo com outra aplicação ;
[00020] A Figura 11 mostra um decodificador que suporta a comutação do modo de acordo com uma aplicação;
[00021] A Figura 12 mostra um decodificador que suporta a comutação do modo de acordo com outra aplicação;
[00022] A Figura 13 mostra um encaixe do codificador no decodificador da Figura 11 de acordo com uma aplicação;
[00023] A Figura 14 mostra um encaixe do codificador ao decodificador da Figura 12 de acordo com uma aplicação;
[00024] A Figura 15 mostra o mapeamento de pStateCtx e fullCtxState/256**E**;
[00025] A Figura 16 mostra um decodificador de acordo com uma aplicação da presente invenção; e
[00026] A Figura 17 mostra um codificador de acordo com uma aplicação da presente invenção.
[00027] Figura 18 esquematicamente mostra uma diferença da binarização do vetor de movimento de acordo com uma aplicação da presente invenção;
[00028] Figura 19 esquematicamente ilustra um conceito de combinação de acordo com uma aplicação; e
[00029] Figura 20 esquematicamente ilustra um esquema de previsão do vetor de movimento de acordo com uma aplicação.
[00030] É observado que durante a descrição das figuras, elementos que ocorrem em várias destas Figuras são indicados com o mesmo sinal de referência em cada uma dessas Figuras e uma descrição repetida destes elementos, na medida em que faça referência à funcionalidade, é descartada para evitar repetições desnecessárias. Entretanto, as funcionalidades e descrições fornecidas com relação a uma figura devem também se aplicar a outras Figuras, a menos que o oposto seja explicitamente indicado.
[00031] A seguir, primeiramente, aplicações de um conceito geral de codificação de vídeo são descritas com relação às Figuras 1 a 10. As Figuras de 1 a 6 se referem à parte do codec de vídeo que opera no nível de sintaxe. As figuras a seguir de 8 a 10 se referem às aplicações para a parte do código referente à conversão do fluxo de elemento de sintaxe ao fluxo de dados e vice versa. Então, os aspectos específicos e aplicações da presente invenção são descritos na forma de possíveis implementações do conceito geral descrito com relação às Figuras 1 a 10.
[00032] A Figura 1 mostra um exemplo para um codificador 10 no qual os aspectos da presente aplicação podem ser implementados.
[00033] O codificador codifica uma matriz de amostras de informação 20 em um fluxo de dados. A matriz de amostras de informação pode representar as amostras de informação correspondentes, por exemplo, aos valores de claridade, valores de cor, valores de luma, valores de croma ou semelhante. Entretanto, as amostras de informação também podem ser valores profundos no caso da matriz de amostra 20 ser um mapa de profundidade gerado por, por exemplo, um tempo do sensor de luz ou semelhante.
[00034] O codificador 10 é um codificador com base no bloco. Ou seja, o codificador 10 codifica a matriz de amostra 20 no fluxo de dados 30 em unidades de blocos 40. A codificação em unidades de blocos 40 não necessariamente significa que o codificador 10 codifica estes blocos 40 totalmente independentes entre si. Ainda, o codificador 10 pode utilizar as reconstruções dos blocos previamente codificados para extrapolar ou intra-prever os blocos restantes, e podem utilizar a granularidade dos blocos para definir os parâmetros de codificação, ou seja, para definir a forma que cada região da matriz de amostra correspondente a um respectivo bloco é codificada.
[00035] Ainda, o codificador 10 é um codificador de transformação. Ou seja, o codificador 10 codifica blocos 40 utilizando uma transformação para transferir as amostras de informação dentro de cada bloco 40 de domínio espacial em domínio espectral. Uma transformação bidimensional como um DCT de FFT ou semelhante pode ser utilizado. Preferivelmente, os blocos 40 são de forma quadrática ou retangular.
[00036] A subdivisão da matriz de amostra 20 em blocos 40 mostrada na Figura 1 serve meramente para finalidades de ilustração. A Figura 1 mostra a matriz de amostra 20 como sendo subdividida em uma disposição bidimensional regular de blocos quadráticos ou retangulares 40 que encostam entre si de forma não sobreposta. O tamanho dos blocos 40 pode ser predeterminado. Ou seja, o codificador 10 pode não transferir uma informação no tamanho do bloco dos blocos 40 dentro do fluxo de dados 30 ao lado da decodificação. Por exemplo, o decodificador pode esperar o tamanho do bloco predeterminado.
[00037] Entretanto, várias alternativas são possíveis. Por exemplo, os blocos podem se sobrepor entre si. A sobreposição pode, entretanto, ser restrita a tal extensão que cada bloco tem uma parte não sobreposta por qualquer bloco próximo, ou de modo que cada amostra dos blocos seja sobreposta, no máximo, por um bloco entre os blocos próximos dispostos na justaposição ao bloco atual entre uma direção predeterminada. O último significaria que os blocos próximos esquerdo e direito podem sobrepor o bloco atual para cobrir completamente o bloco atual, mas eles não podem sobrepor entre si, e o mesmo se aplica para os vizinhos na direção vertical e diagonal.
[00038] Como outra alternativa, a subdivisão da matriz de amostra 20 em blocos 40 pode ser adaptada ao conteúdo da matriz de amostra 20 pelo codificador 10 com a informação de subdivisão na subdivisão utilizada sendo transferida ao lado do decodificador através do fluxo de dados contínuo 30.
[00039] As Figuras 2a a 2c mostram diferentes exemplos para uma subdivisão de uma matriz de amostra 20 em blocos 40. A Figura 2a mostra uma subdivisão à base de quadtree [árvore quádrupla] de uma matriz de amostra 20 em blocos 40 de diferentes tamanhos, com blocos representativos sendo indicados em 40a, 40b, 40c e 40d com tamanho crescente. De acordo com a subdivisão da Figura 2a, a matriz de amostra 20 é primeiramente dividia em uma disposição bidimensional regular de três blocos 40d que, por sua vez, têm informação individual de subdivisão associada com eles de acordo com um determinado bloco em árvore 40d pode ainda ser subdividido de acordo com uma estrutura quadtree ou não. O bloco em árvore à esquerda do bloco 40d é exemplarmente subdividido em blocos menores de acordo com uma estrutura quadtree. O codificador 10 pode realizar uma transformação bidimensional para cada um dos blocos mostrados com linhas sólidas e tracejadas na Figura 2a. Em outras palavras, o codificador 10 pode transformar a matriz 20 em unidades da subdivisão do bloco.
[00040] Ao invés de uma subdivisão à base de quadtree uma subdivisão à base de várias árvore mais geral pode ser utilizada e o número de pequenos nós por nível hierárquico pode diferir entre diferentes níveis de hierarquia.
[00041] A Figura 2b mostra outro exemplo para uma subdivisão. De acordo com a Figura 2b, a matriz de amostra 20 é primeiramente dividida em macroblocos 40b dispostos em uma disposição bidimensional regular de forma sem sobreposição mutuamente caracterizado por cada macrobloco 40b ser associado com ele a informação de subdivisão de acordo com um macrobloco não é subdividido, ou, se subdividido, subdividido em uma forma bidimensional regular em sub-blocos com tamanhos iguais para atingir diferentes granularidades de subdivisão para diferentes macroblocos. O resultado é uma subdivisão da matriz de amostra 20 em blocos com tamanhos diferentes 40 com representativos dos diferentes tamanhos sendo indicados em 40a, 40b e 40a’. Como na Figura 2a, o codificador 10 realiza uma transformação bidimensional em cada um dos blocos mostrados na Figura 2b com as linhas sólidas e tracejadas. A Figura 2c será discutida posteriormente.
[00042] A Figura 3 mostra um decodificador 50 sendo capaz de decodificar o fluxo de dados 30 gerado pelo codificador 10 para reconstruir uma versão reconstruída 60 da matriz de amostra 20. O decodificador 50 extrai do fluxo de dados 30 o bloco do coeficiente de transformação para cada um dos blocos 40 e reconstrói a versão reconstruída 60 realizando uma transformação inversa em cada um dos blocos do coeficiente de transformação.
[00043] O codificador 10 e o decodificador 50 podem ser configurados para realizar a codificação/decodificação de entropia para inserir a informação nos blocos do coeficiente de transformação, e extrair esta informação do fluxo de dados, respectivamente. Detalhes com relação a isso de acordo com as diferentes aplicações são descritos posteriormente. Deve ser observado que o fluxo de dados 30 não necessariamente compreende informação sobre os blocos do coeficiente de transformação para todos os blocos 40 da matriz de amostra 20. Ainda, o subconjunto dos blocos 40 pode ser codificado no fluxo de dados contínuo 30 de outra forma. Por exemplo, o codificador 10 pode decidir abster de inserir um bloco do coeficiente de transformação para um determinado bloco de blocos 40 inserindo ao fluxo de dados contínuo 30 parâmetros de codificação alternativos que permitem que o decodificador 50 preveja ou caso contrário preencha o respectivo bloco na versão reconstruída 60. Por exemplo, o codificador 10 pode realizar uma análise de textura para localizar os blocos dentro da matriz de amostra 20 que podem ser preenchidos no lado do decodificador pelo decodificador em forma de síntese de textura e indicar isso dentro do fluxo de dados contínuo certamente.
[00044] Conforme discutido com relação às Figuras a seguir, os blocos do coeficiente de transformação não necessariamente representam uma representação de domínio espectral das amostras de informação originais de um respectivo bloco 40 da matriz de amostra 20. Ainda, este bloco do coeficiente de transformação pode representar uma representação de domínio espectral de um residual de previsão do respectivo bloco 40. A Figura 4 mostra uma aplicação para este codificador. O codificador de Figura 4 compreende um estágio de transformação 100, um codificador de entropia 102, um estágio de transformação inverso 104, um indicador 106 e um subtrator 108 bem como um somador 110. O subtrator 108, estágio de transformação 100 e codificador de entropia 102 são serialmente conectados na ordem mencionada entre uma entrada 112 e uma saída 114 do codificador da Figura 4. O estágio de transformação inverso 104, somador 110 e indicador 106 são conectados na ordem mencionada entre a saída de estágio de transformação 100 e a entrada inversa do subtrator 108, com a saída do indicador 106 também sendo conectada a outra entrada do somador 110.
[00045] O codificador da Figura 4 é um codificador de bloco com base na transformação preditiva. Ou seja, os blocos de uma matriz de amostra 20 que entram na entrada 112 são previstos das partes previamente codificadas e reconstruídas da mesma matriz de amostra 20 ou codificadas e reconstruídas de outra matriz de amostras que podem preceder ou suceder a matriz de amostra atual 20 no tempo de apresentação. A previsão é realizada pelo indicador 106. O subtrator 108 subtrai a previsão deste bloco original e o estágio de transformação 100 realiza uma transformação bidimensional no residual de previsões. A própria transformação bidimensional ou uma medição subsequente dentro do estágio de transformação 100 pode levar a uma quantificação dos coeficientes de transformação dentro dos blocos do coeficiente de transformação. Os blocos quantificados do coeficiente de transformação são codificados sem perdas, por exemplo, pela codificação de entropia dentro do codificador de entropia 102 com o fluxo de dados resultante sendo emitido na saída 114. O estágio de transformação inverso 104 reconstrói o residual e somador quantificados 110, por sua vez, combina o residual reconstruído com a previsão correspondente para obter as amostras de informação reconstruídas com base no qual o indicador 106 pode prever os blocos de previsão atualmente codificados mencionados previamente. O indicador 106 pode utilizar diferentes modos de previsão como intra-modos de previsão e inter-modos de previsão para prever os blocos e os parâmetros de previsão são encaminhados ao codificador de entropia 102 para inserção no fluxo de dados. Para cada bloco de previsão inter-previsto, os respectivos dados de movimento são inseridos ao fluxo de dados contínuo através do codificador de entropia 114 para permitir o lado da decodificação para refazer a previsão. Os dados de movimento para um bloco de previsão de uma figura podem envolver uma parte da sintaxe incluindo um elemento de sintaxe representando uma diferença do vetor de movimento diferentemente codificando o vetor de movimento para o bloco de previsão atua com relação a um vetor de movimento indicador derivado, por exemplo, em forma de um método prescrito dos vetores de movimento dos blocos de previsão próximos já codificados.
[00046] Ou seja, de acordo com a aplicação da Figura 4, os blocos do coeficiente de transformação representam uma representação espectral de um residual da matriz de amostra ao invés das amostras de informação reais desta. Ou seja, de acordo com a aplicação da Figura 4, uma sequência de elementos de sintaxe pode inserir o codificador de entropia 102 sendo codificado por entropia ao fluxo de dados 114. A sequência de elementos de sintaxe pode compreender elementos de sintaxe da diferença do vetor de movimento para blocos de inter-previsão e elementos de sintaxe referentes a um mapa de significância indicando as posições dos níveis do coeficiente de transformação significativos bem como elementos de sintaxe que definem os próprios níveis do coeficiente de transformação significativos, para os blocos de transformação.
[00047] Deve ser observado que várias alternativas existem para a aplicação da Figura 4 com algumas delas sendo descritas dentro da parte introdutória da especificação cuja descrição é incorporada na descrição da Figura 4 com ela.
[00048] A Figura 5 mostra um decodificador capaz de decodificar um fluxo de dados gerado pelo codificador da Figura 4. O decodificador da Figura 5 compreende um decodificador de entropia 150, um estágio de transformação inversa 152, um somador 154 e um indicador 156. O decodificador de entropia 150, estágio de transformação inversa 152, e somador 154 são serialmente conectados entre uma entrada 158 e uma saída 160 do decodificador da Figura 5 na ordem mencionada. Outra saída de decodificador de entropia 150 é conectada ao indicador 156 que, por sua vez, é conectada entre a saída do somador 154 e outra entrada dele. O decodificador de entropia 150 extrai, do fluxo de dados que entra no decodificador da Figura 5 na entrada 158, os blocos do coeficiente de transformação caracterizado por uma transformação inversa ser aplicada aos blocos do coeficiente de transformação no estágio 152 para obter o sinal residual. O sinal residual é combinado com uma previsão do indicador 156 no somador 154 para obter um bloco reconstruído da versão reconstruída da matriz de amostra na saída 160. Com base na versão reconstruída, o indicador 156 gera as previsões assim reconstruindo as previsões realizadas pelo indicador 106 no lado do codificador. Para obter as mesmas previsões que as utilizadas no lado do codificador, o indicador 156 utiliza os parâmetros de previsão que o decodificador de entropia 150 também obtém do fluxo de dados na entrada 158.
[00049] Deve ser observada que nas aplicações descritas acima, a granularidade espacial na qual a previsão e a transformação do residual são realizadas, não tem que ser iguais entre si. Isso é mostrado na Figura 2C. Esta figura mostra uma subdivisão para os blocos de previsão da granularidade de previsão com linhas sólidas e a granularidade residual com linhas tracejadas. Como pode ser visto, as subdivisões podem ser selecionadas pelo codificador independentes entre si. Para ser mais preciso, a sintaxe do fluxo de dados pode permitir uma definição da subdivisão residual independente da subdivisão da previsão. Alternativamente, a subdivisão residual pode ser uma extensão da subdivisão da previsão de modo que cada bloco residual seja tanto igual quanto um subconjunto de um bloco de previsão. Isso é mostrado na Figura 2a e na Figura 2b, por exemplo, onde novamente a granularidade de previsão é mostrada com linhas sólidas e a granularidade residual com linhas tracejadas. Ou seja, na Figura 2a-2c, todos os blocos tendo um sinal de referência associado a eles seriam os blocos residuais nos quais uma transformação bidimensional seria realizada enquanto os blocos de linha sólida maiores englobando os blocos de linha tracejada 40a, por exemplo, seriam os blocos de previsão para os quais um ajuste do parâmetro de previsão é realizado individualmente.
[00050] As aplicações acima têm em comum que um bloco de amostras (residual ou original) deve ser transformado no lado do codificador em um bloco do coeficiente de transformação que, por sua vez, deve ser transformado inversamente em um bloco reconstruído de amostras no lado do decodificador. Isso é ilustrado na Figura 6. A figura 6 mostra um bloco de amostras 200. No caso da Figura 6, este bloco 200 é exemplarmente quadrático e 4x4 as amostras 202 no tamanho. As amostras 202 são regularmente dispostas ao longo de uma direção horizontal x e direção vertical y. Pela transformação bidimensional mencionada acima T, o bloco 200 é transformado no domínio espectral, a saber, em um bloco 204 de coeficientes de transformação 206, o bloco de transformação 204 sendo do mesmo tamanho que o bloco 200. Ou seja, o bloco de transformação 204 tem tantos coeficientes de transformação 206 quanto o bloco 200 tem de amostras, tanto na direção horizontal quanto na direção vertical. Entretanto, como a transformação T é uma transformação espectral, as posições dos coeficientes de transformação 206 dentro do bloco de transformação 204 não correspondem às posições espaciais, mas aos componentes espectrais do conteúdo de bloco 200. Em particular, o eixo horizontal do bloco de transformação 204 corresponde a um eixo pelo qual a frequência espectral na direção monotonicamente aumenta enquanto o eixo vertical corresponde a um eixo pelo qual a frequência espacial na direção vertical monotonicamente aumenta caracterizado pelo coeficiente de transformação do componente DC ser posicionado em um canto - aqui exemplarmente o canto esquerdo superior - do bloco 204 de modo que no canto direito inferior, o coeficiente de transformação 206 correspondente à frequência mais alta tanto na direção vertical quanto na horizontal é posicionado. Ignorando a direção espacial, a frequência espacial à qual um determinado coeficiente de transformação 206 pertence, geralmente aumenta do canto esquerdo superior ao canto direito inferior. Por uma transformação inversa T-1, o bloco de transformação 204 é retransferido do domínio espectral ao domínio espacial, para reobter uma cópia 208 do bloco 200. No caso de nenhuma quantificação/perda ser introduzida durante a transformação, a reconstrução seria perfeita
[00051] Conforme já observado acima, pode ser visto da Figura 6 que o tamanho maior dos blocos do bloco 200 aumenta a resolução espectral da representação espectral 204 resultante. Por outro lado, o ruído de quantificação tende a dispersar sobre todo o bloco 208 e assim, objetos abruptos e localizados dentro dos blocos 200 tendem levar à desvios do bloco retransformado com relação ao bloco original 200 devido ao ruído de quantificação. A principal vantagem de utilizar bloco maior é, entretanto, que o índice entre o número de coeficientes de transformação significativos, ou seja, não zero (quantificados), ou seja, níveis, por um lado e o número de coeficientes de transformação insignificantes por outro lado pode ser reduzido dentro de blocos maiores comparados aos blocos menores assim permitindo uma melhor eficiência da codificação. Em outras palavras, frequentemente, os níveis do coeficiente de transformação significativos, ou seja, os coeficientes de transformação não quantificados a zero, são distribuídos sobre o bloco de transformação 204 escassamente. Por causa disso, de acordo com as aplicações descritas em mais detalhes abaixo, as posições dos níveis do coeficiente de transformação significativos são sinalizadas dentro do fluxo de dados em forma de um mapa de significância. Separadamente disso, os valores do coeficiente de transformação significativo, ou seja, os níveis do coeficiente de transformação no caso dos coeficientes de transformação sendo quantificados, são transmitidos dentro do fluxo de dados.
[00052] Todos os codificadores e decodificadores descritos acima, são, então, configurados para lidar com um determinado sintaxe de elementos de sintaxe. Ou seja, os elementos de sintaxe previamente mencionados como os níveis do coeficiente de transformação, elementos de sintaxe referentes ao mapa de significância de blocos de transformação, os elementos de sintaxe dos dados de movimento referentes aos blocos de inter-previsão e assim por diante são assumidos ser sequencialmente dispostos dentro do fluxo de dados em uma forma prescrita. Tal forma prescrita pode ser representada na forma de um pseudocódigo como é feito, por exemplo, no padrão H.264 ou outros codecs de vídeo.
[00053] Ainda em outras palavras, a descrição acima primeiramente tratou da conversão de dados de mídia, aqui exemplarmente dados de vídeo, em uma sequência de elementos de sintaxe de acordo com uma estrutura de sintaxe predefinida, prescrevendo determinados tipos de elemento de sintaxe, sua semântica e a ordem entre elas. O codificador de entropia e o decodificador de entropia da Figura 4 e 5 podem ser configurados para operar e podem ser estruturados conforme descrito a seguir. Os mesmos são responsáveis por realizar a conversão entre a sequência do elemento de sintaxe e o fluxo de dados, ou seja, símbolo ou fluxo de dados contínuo.
[00054] Um codificador de entropia de acordo com uma aplicação é ilustrado na Figura 7. O codificador converte sem perdas um fluxo de elementos de sintaxe 301 em um conjunto de dois ou mais fluxos de dados contínuos parciais 312.
[00055] Em uma aplicação preferida da invenção, cada elemento de sintaxe 301 é associado a uma categoria de um conjunto de uma ou mais categorias, ou seja, um tipo de elemento de sintaxe. Como um exemplo, as categorias podem especificar o tipo do elemento de sintaxe. No contexto de codificação de vídeo híbrida, uma categoria separada pode estar associada aos modos de codificação de macrobloco, modos de codificação de bloco, índices da figura de referência, diferenças do vetor de movimento, indicadores de subdivisão, indicadores do bloco codificado, parâmetro de quantificações, níveis do coeficiente de transformação, etc. Em outras áreas da aplicação como áudio, fala, texto, documento, ou codificação de dados geral, diferentes categorizações dos elementos de sintaxe são possíveis.
[00056] No geral, cada elemento de sintaxe pode ter um valor de um conjunto de valores finito ou infinito contável, onde o conjunto de possíveis valores do elemento de sintaxe pode diferir para as diferentes categorias do elemento de sintaxe. Por exemplo, há elementos de sintaxe binários bem como os valores de número inteiro.
[00057] Para reduzir a complexidade do algoritmo de codificação e decodificação e para permitir um desenho de codificação e decodificação geral para diferentes elementos de sintaxe e categorias do elemento de sintaxe, os elementos de sintaxe 301 são convertidos em conjuntos organizados de decisões binárias e estas decisões binárias são então processadas por simples algoritmos de codificação binária. Desta forma, o binarizador 302 mapeia de forma bijetiva o valor de cada elemento de sintaxe 301 em uma sequência (ou série ou palavra) de posições 303. A sequência de posições 303 representa um conjunto de decisões binárias organizadas. Cada posição 303 ou decisão binária pode ter um valor de um conjunto de dois valores, por exemplo, um dos valores 0 e 1. O esquema de binarização pode ser diferente para diferentes categorias do elemento de sintaxe. O esquema de binarização para uma categoria particular do elemento de sintaxe pode depender do conjunto de possíveis valores do elemento de sintaxe e/ou outras propriedades do elemento de sintaxe para a categoria em particular.
[00058] A Tabela 1 ilustra três esquemas de binarização exemplar para conjuntos infinitos contáveis. Os esquemas de binarização para conjuntos infinitos contáveis também podem ser aplicados para os conjuntos finitos de valores do elemento de sintaxe. Em particular para conjuntos finitos grandes de valores do elemento de sintaxe, a ineficiência (resultante das sequências de posições não utilizadas) pode ser insignificante, mas a universalidade destes esquemas de binarização fornece uma vantagem em termos de complexidade e exigências de memória. Para pequenos conjuntos finitos de valores do elemento de sintaxe, é geralmente preferível (em termos de eficiência da codificação) adaptar o esquema de binarização ao número de possíveis valores de símbolo.
[00059] A Tabela 2 ilustra três esquemas de binarização exemplar para conjuntos finitos de 8 valores. Os esquemas de binarização para conjuntos finitos podem ser derivados dos esquemas de binarização universais para conjuntos infinitos contáveis modificando algumas sequências de posições de modo que os conjuntos finitos de sequências de posição representam um código livre de redundância (e potencialmente reorganização das sequências de posição). Como um exemplo, o esquema de binarização unária truncada na Tabela 2 foi criado pela modificação da sequência de posição para o elemento de sintaxe 7 da binarização unária universal (vide Tabela 1). A binarização Exp-Golomb truncada e reorganizada de ordem 0 na Tabela 2 foi criada pela modificação da sequência de posição para o elemento de sintaxe 7 da binarização de ordem 0 Exp-Golomb universal (vide Tabela 1) e reorganizando as sequências de posição (a sequência de posição truncada para o símbolo 7 foi atribuída ao símbolo 1). Para conjuntos finitos de elementos de sintaxe, é ainda possível utilizar esquemas de binarização não universais / não sistemáticos, conforme exemplificado na última coluna da Tabela 2.
[00060] Tabela 1: Exemplos de binarização para conjuntos infinitos contáveis (ou conjuntos finitos grandes).
Figure img0001
[00061] Tabela 2: Exemplos de binarização para conjuntos finitos.
Figure img0002
Figure img0003
[00062] Cada posição 303 da sequência de posições criada pelo binarizador 302 é inserida ao atribuidor de parâmetro 304 na ordem sequencial. O atribuidor de parâmetro atribui um conjunto de um ou mais parâmetros em cada posição 303 e emite a posição com o conjunto de parâmetros associados 305. O conjunto de parâmetros é determinado exatamente da mesma forma no codificador e no decodificador. O conjunto de parâmetros pode consistir em um ou mais dos seguintes parâmetros:
[00063] Em particular, o atribuidor de parâmetro 304 pode ser configurado para atribuir a uma posição atual 303 um modelo de contexto. Por exemplo, o atribuidor de parâmetro 304 pode selecionar um dos índices de contexto disponíveis para a posição atual 303. O conjunto de contextos disponíveis para uma posição atual 303 pode depender do tipo da posição que, por sua vez, pode ser definido pelo tipo/categoria do elemento de sintaxe 301, a binarização da qual a posição atual 303 faz parte, e uma localização da posição atual 303 dentro da última binarização. A seleção de contexto entre o contexto disponível definindo pode depender das posições prévias e os elementos de sintaxe associados com o último. Cada um destes contextos tem um modelo de probabilidade associado com ele, ou seja, uma medição para uma estimativa da probabilidade para um dos dois possíveis valores de posição para a posição atual. O modelo de probabilidade pode em particular ser uma medição para uma estimativa da probabilidade para o valor da posição menos provável e mais provável para a posição atual, com um modelo de probabilidade adicionalmente sendo definido por um identificador que especifica uma estimativa para a qual dos dois possíveis valores de posição representa o valor da posição menos provável e mais provável para a posição atual 303. No caso de meramente um contexto estando disponível para a posição atual, a seleção de contexto pode ser deixada. Conforme será descrito em mais detalhes abaixo, o atribuidor de parâmetro 304 pode ainda realizar uma adaptação do modelo de probabilidade para adaptar os modelos de probabilidade associados com os vários contextos nas estatísticas da posição real das respectivas posições pertencentes aos respectivos contextos.
[00064] Conforme ainda será descrito em mais detalhes abaixo, atribuidor de parâmetro 304 pode operar diferentemente dependendo de um modo de alta eficiência (HE | high efficiency) ou modo de baixa complexidade (LC | low complexity) sendo ativado. Em ambos os modos o modelo de probabilidade associa a posição atual 303 a qualquer um dos codificadores de posição 310 conforme será descrito abaixo, mas o modo de operação do atribuidor de parâmetro 304 tende a ser menos complexo no modo LC com, entretanto, a eficiência da codificação sendo aumentada no modo de alta eficiência devido ao atribuidor de parâmetro 304 causando a associação das posições individuais 303 aos codificadores individuais 310 para ser mais precisamente adaptado às estatísticas da posição, assim otimizando a entropia com relação ao modo LC.
[00065] Cada posição com um conjunto de parâmetros associado 305 que é emitido ao atribuidor de parâmetro 304 é inserido em um seletor do buffer de posição 306. O seletor do buffer de posição 306 potencialmente modifica o valor da posição de entrada 305 com base no valor da posição de entrada e os parâmetros associados 305 e insere a posição de saída 307 - com um valor potencialmente modificado - em um de dois ou mais buffers de posição 308. O buffer da posição 308 no qual a posição de saída 307 é enviada é determinado com base no valor da posição de entrada 305 e/ou no valor dos parâmetros associados 305.
[00066] Em uma aplicação preferida da invenção, o seletor do buffer de posição 306 não modifica o valor da posição, ou seja, a posição de saída 307 sempre tem o mesmo valor que a posição de entrada 305. Em outra aplicação preferida da invenção, o seletor do buffer de posição 306 determina a valor da posição de saída 307 com base no valor da posição de entrada 305 e a medição associada para uma estimativa da probabilidade para um dos dois possíveis valores de posição para a posição atual. Em uma aplicação preferida da invenção, o valor da posição de saída 307 é definido no valor da posição de entrada 305 se a medição para a probabilidade para um dos dois possíveis valores de posição para a posição atual for menor do que (ou menor ou igual a) um limite particular; se a medição para a probabilidade para um dos dois possíveis valores de posição para a posição atual for maior ou igual a (ou maior do que) um limite particular, o valor da posição de saída 307 é modificado (ou seja, é definido ao oposto do valor da posição de entrada). Em outra aplicação preferida da invenção, o valor da posição de saída 307 é definido igual ao valor da posição de entrada 305 se a medição para a probabilidade para um dos dois possíveis valores de posição para a posição atual for maior do que (ou maior ou igual a) um limite particular; se a medição for a probabilidade para um dos dois possíveis valores de posição para a posição atual for menor ou igual a (ou menor do que) um limite particular, o valor da posição de saída 307 é modificado (ou seja, é definido no oposto do valor da posição de entrada). Em uma aplicação preferida da invenção, o valor do limite corresponde a um valor de 0,5 para a probabilidade estimada para ambos os possíveis valores de posição.
[00067] Em outra aplicação preferida da invenção, o seletor do buffer de posição 306 determina o valor da posição de saída 307 com base no valor da posição de entrada 305 e o identificador associado especificando uma estimativa para qual um dos dois possíveis valores de posição representa o valor da posição menos provável e mais provável para a posição atual. Em uma aplicação preferida da invenção, o valor da posição de saída 307 é definido igual ao valor da posição de entrada 305 se o identificador especificar que os primeiros dos dois possíveis valores de posição representa o valor da posição menos provável (ou mais provável) para uma posição atual, e o valor da posição de saída 307 é modificado (ou seja, é definido oposto do valor da posição de entrada) se o identificador especificar que o segundo dos dois possíveis valores de posição representa o valor da posição menos provável (ou mais provável) para a posição atual.
[00068] Em uma aplicação preferida da invenção, o seletor do buffer de posição 306 determina o buffer da posição 308 no qual a posição de saída 307 é enviada com base na medição associada para uma estimativa da probabilidade para um dos dois possíveis valores de posição para a posição atual. Em uma aplicação preferida da invenção, o conjunto de possíveis valores para a medição para uma estimativa da probabilidade para um dos dois possíveis valores de posição for finito e o seletor do buffer de posição 306 conter uma tabela que associa exatamente um buffer da posição 308 com cada possível valor para a estimativa da probabilidade para um dos dois possíveis valores de posição, onde diferentes valores para a medição para uma estimativa da probabilidade para um dos dois possíveis valores de posição podem ser associados com o mesmo buffer da posição 308. Em outra aplicação preferida da invenção, a faixa de possíveis valores para a medição para uma estimativa da probabilidade para um dos dois possíveis valores de posição é dividida em um número de intervalos, o seletor do buffer de posição 306 determina o índice de intervalo para a medição atual para uma estimativa da probabilidade para um dos dois possíveis valores de posição, e o seletor do buffer de posição 306 contém uma tabela que associa exatamente um buffer da posição 308 com cada possível valor para o índice de intervalo, onde diferentes valores para o índice de intervalo podem estar associados com o mesmo buffer da posição 308. Em uma aplicação preferida da invenção, as posições de entrada 305 com medições opostas para uma estimativa da probabilidade para um dos dois possíveis valores de posição (medição oposta é aquela que representa as estimativas de probabilidade P e 1 - P) são inseridas no mesmo buffer da posição 308. Em outra aplicação preferida da invenção, a associação da medição para uma estimativa da probabilidade para um dos dois possíveis valores de posição para uma posição atual com um buffer da posição particular é adaptado ao longo do tempo, por exemplo, para garantir que os fluxos de dados contínuos parciais criados têm taxas de bit semelhantes. Ainda abaixo, o índice de intervalo também será chamado de índice pipe, enquanto o índice pipe com um índice de refinamento e um indicador indicando os índices do valor da posição mais provável o modelo de probabilidade real, ou seja, a estimativa de probabilidade.
[00069] Em outra aplicação preferida da invenção, o seletor do buffer de posição 306 determina o buffer da posição 308 no qual a posição de saída 307 é enviada com base na medição associada para uma estimativa da probabilidade para o valor da posição menos provável e mais provável para a posição atual. Em uma aplicação preferida da invenção, o conjunto de possíveis valores para a medição para uma estimativa da probabilidade para o valor da posição menos provável e mais provável é finito e o seletor do buffer de posição 306 contém uma tabela que associa exatamente um buffer da posição 308 com cada possível valor da estimativa da probabilidade para o valor da posição menos provável e mais provável, onde diferentes valores para a medição para uma estimativa da probabilidade para o valor da posição menos provável e mais provável podem ser associados com o mesmo buffer da posição 308. Em outra aplicação preferida da invenção, uma faixa de possíveis valores para a medição para uma estimativa da probabilidade para o valor da posição menos provável e mais provável é dividida em um número de intervalos, o seletor do buffer de posição 306 determina o índice de intervalo para a medição atual para uma estimativa da probabilidade para o valor da posição menos provável e mais provável, e o seletor do buffer de posição 306 contém uma tabela que associa exatamente um buffer da posição 308 com cada possível valor para o índice de intervalo, onde diferentes valores para o índice de intervalo podem estar associados com o mesmo buffer da posição 308. Em outra aplicação preferida da invenção, a associação da medição para uma estimativa da probabilidade para o valor da posição menos provável e mais provável para a posição atual com um buffer da posição particular é adaptada ao longo do tempo, por exemplo, para garantir que os fluxos de dados contínuos parciais criados têm taxas de bit semelhantes.
[00070] Cada um dos dois ou mais buffers de posição 308 é conectado com exatamente um codificador de posição 310 e cada codificador de posição é apenas conectado com um buffer da posição 308. Cada codificador de posição 310 lê as posições do buffer da posição associado 308 e converte uma sequência de posições 309 em uma palavra código 311, que representa uma sequência de bits. Os buffers de posição 308 representam buffers primeiro a entrar, primeiro a sair; posições que são inseridas posteriormente (na ordem sequencial) em um buffer da posição 308 não são codificadas antes das posições que são inseridas previamente (na ordem sequencial) ao buffer da posição. As palavras código 311 que são emitidas de um codificador de posição particular 310 são escritas em um fluxo de dados contínuo parcial particular 312. Todo o algoritmo de codificação converte os elementos de sintaxe 301 em dois ou mais fluxos de dados contínuos parciais 312, onde o número de fluxos de dados contínuos parciais é igual ao número de buffers de posição e codificadores de posição. Em uma aplicação preferida da invenção, um codificador de posição 310 converte um número de posições variável 309 em uma palavra código 311 de um número de bits variável. Uma vantagem das aplicações descritas acima e abaixo da invenção é que a codificação de posições pode ser feita em paralelo (por exemplo, para diferentes grupos de medições de probabilidade), o que reduz o tempo de processamento para várias implementações.
[00071] Outra vantagem de aplicações da invenção é que a codificação da posição, que é feita pelos codificadores de posição 310, pode ser especificamente desenhada para diferentes conjuntos de parâmetros 305. Em particular, a codificação da posição e codificação pode ser otimizada (em termos de eficiência da codificação e/ou complexidade) para diferentes grupos de probabilidades estimadas. Por um lado, isso permite uma redução da codificação/complexidade de decodificação, e por outro lado, permite uma melhoria da eficiência da codificação. Em uma aplicação preferida da invenção, os codificadores de posição 310 implementam diferentes algoritmos de codificação (ou seja, mapeamento de sequências de posição em palavras código) para diferentes grupos de medições para uma estimativa da probabilidade para um dos dois possíveis valores de posição 305 para a posição atual. Em outra aplicação preferida da invenção, os codificadores de posição 310 implementam diferentes algoritmos de codificação para diferentes grupos de medições para uma estimativa da probabilidade para o valor da posição menos provável e mais provável para a posição atual.
[00072] Em uma aplicação preferida da invenção, os codificadores de posição 310 - ou um ou mais dos codificadores de posição - representam o codificador de entropias que diretamente mapeiam as sequências de posições de entrada 309 em palavras código 310. Estes mapeamentos podem ser eficientemente implementados e não exigem um motor de codificação aritmético complexo. O mapeamento inverso de palavras código nas sequências de posições (conforme feito no decodificador) deve ser único para garantir a perfeita decodificação da sequência de entrada, mas o mapeamento das sequências de posição 309 nas palavras código 310 não precisa necessariamente ser único, ou seja, é possível que uma sequência de posições particular possa ser mapeada em mais do que uma sequência de palavras código. Em uma aplicação preferida da invenção, o mapeamento das sequências de posições de entrada 309 nas palavras código 310 é bijetivo. Em outra aplicação preferida da invenção, os codificadores de posição 310 - ou um ou mais dos codificadores de posição - representam o codificador de entropias que diretamente mapeiam as sequências de posições de entrada de comprimento variável 309 nas palavras código de comprimento variável 310. Em uma aplicação preferida da invenção, as palavras código de saída representam códigos livre de redundância como códigos de huffman gerais ou códigos de huffman canônicos.
[00073] Dois exemplos para o mapeamento bijetivo de sequências da posição nos códigos livre de redundância são ilustrados na Tabela 3. Em outra aplicação preferida da invenção, as palavras código de saída representam códigos redundantes adequados para direção de erro e recuperação de erro. Em outra aplicação preferida da invenção, as palavras código de saída representam códigos de encriptação adequados para encriptar os elementos de sintaxe.
[00074] Tabela 3: Exemplos para mapeamentos entre as sequências de posição e palavras código.
Figure img0004
[00075] Em outra aplicação preferida da invenção, os codificadores de posição 310 - ou um ou mais dos codificadores de posição - representam o codificador de entropias que diretamente mapeiam as sequências de posições de entrada de comprimento variável 309 nas palavras código de comprimento fixo 310. Em outra aplicação preferida da invenção, os codificadores de posição 310 - ou um ou mais dos codificadores de posição - representam o codificador de entropias que diretamente mapeiam as sequências de posições de entrada de comprimento fixo 309 nas palavras código de comprimento variável 310.
[00076] O decodificador de acordo com uma aplicação da invenção é ilustrado na Figura 8. O decodificador realiza basicamente as operações inversas do codificador, de modo que a sequência de elementos de sintaxe 327 (previamente codificada) seja decodificada de um conjunto de dois ou mais fluxos de dados contínuos parciais 324. O decodificador inclui dois diferentes fluxos de processo: um fluxo para solicitações de dados, que replica o fluxo de dados do codificador, e um fluxo de dados, que representa o inverso do fluxo de dados do codificador. Na ilustração na Figura 8, as setas tracejadas representam o fluxo de solicitação de dados, enquanto as setas sólidas representam o fluxo de dados. Os blocos do decodificador de construção basicamente replicam os blocos do codificador de construção, mas implementam as operações inversas.
[00077] A decodificação de um elemento de sintaxe é acionada por uma solicitação para um novo elemento de sintaxe decodificado 313 que é enviado ao binarizador 314. Em uma aplicação preferida da invenção, cada solicitação para um novo elemento de sintaxe decodificado 313 é associado com uma categoria de um conjunto de uma ou mais categorias. A categoria que é associada a uma solicitação para um elemento de sintaxe é a mesma que a categoria que foi associada ao elemento de sintaxe correspondente durante a codificação.
[00078] O binarizador 314 mapeia a solicitação para um elemento de sintaxe 313 em uma ou mais solicitações para uma posição que são enviadas ao atribuidor de parâmetro 316. Como resposta final a uma solicitação para uma posição que é enviada ao atribuidor de parâmetro 316 pelo binarizador 314, o binarizador 314 recebe uma posição decodificada 326 do seletor do buffer de posição 318. O binarizador 314 compara a sequência de posições decodificadas recebidas 326 com as sequências de posição de um esquema de binarização particular para o elemento de sintaxe solicitado e, se a sequência de posições decodificadas recebidas 26 corresponde à binarização de um elemento de sintaxe, o binarizador esvazia seu buffer da posição e emite o elemento de sintaxe decodificado como resposta final à solicitação para um novo símbolo decodificado. Se a sequência de posições já decodificadas recebidas não corresponder a qualquer uma das sequências de posição para o esquema de binarização para o elemento de sintaxe solicitado, o binarizador envia outra solicitação para uma posição ao atribuidor de parâmetro até que a sequência de posições decodificadas corresponda a uma das sequências de posição do esquema de binarização para o elemento de sintaxe solicitado. Para cada solicitação para um elemento de sintaxe, o decodificador utiliza o mesmo esquema de binarização que foi utilizado para codificar o elemento de sintaxe correspondente. O esquema de binarização pode ser diferente para diferentes categorias do elemento de sintaxe. O esquema de binarização para uma categoria particular do elemento de sintaxe pode depender do conjunto de possíveis valores do elemento de sintaxe e/ou outras propriedades dos elementos de sintaxe para a categoria particular.
[00079] O atribuidor de parâmetro 316 atribui um conjunto de um ou mais parâmetros a cada solicitação para uma posição e envia a solicitação para uma posição com o conjunto de parâmetros associados ao seletor do buffer de posição. O conjunto de parâmetros que é atribuído a uma posição solicitada pelo atribuidor de parâmetro é o mesmo que foi atribuído à posição correspondente durante a codificação. O conjunto de parâmetros pode consistir em um ou mais dos parâmetros que são mencionados na descrição do codificador da Figura 7.
[00080] Em uma aplicação preferida da invenção, o atribuidor de parâmetro 316 associa cada solicitação para uma posição com os mesmos parâmetros como atribuidor 304, ou seja, um contexto e sua medição associada para uma estimativa da probabilidade para um dos dois possíveis valores de posição para a posição solicitada atual, como uma medição para uma estimativa da probabilidade para o valor da posição menos provável e mais provável para a posição solicitada atual e um identificador especificando uma estimativa na qual dos dois possíveis valores de posição representaram o valor da posição menos provável e mais provável para a posição solicitada atual.
[00081] O atribuidor de parâmetro 316 pode determinar uma ou mais das medições de probabilidade mencionadas acima (medição para uma estimativa da probabilidade para um dos dois possíveis valores de posição para uma posição solicitada atual, medição para uma estimativa da probabilidade para o valor da posição menos provável e mais provável para a posição solicitada atual, o identificador especificando uma estimativa na qual dois dos possíveis valores de posição representam o valor da posição menos provável e mais provável para a posição solicitada atual) com base em um conjunto de um ou mais símbolos já decodificados. A determinação das medições de probabilidade para uma solicitação particular para uma posição replica o processo no codificador para a posição correspondente. Os símbolos decodificados que são utilizados para determinar as medições de probabilidade podem incluir um ou mais símbolos já decodificados da mesma categoria do símbolo, um ou mais símbolos já decodificados da mesma categoria do símbolo que correspondem aos conjuntos de dados (como blocos ou grupos de amostras) de localizações espaciais e/ou temporais próximas (com relação ao conjunto de dados associado com a solicitação atual para um elemento de sintaxe), ou um ou mais símbolos já decodificados de diferentes categorias dos símbolos que correspondem aos conjuntos de dados das mesmas e/ou localizações espaciais e/ou temporais próximas (com relação ao conjunto de dados associado com a solicitação atual para um elemento de sintaxe).
[00082] Cada solicitação para uma posição com um conjunto de parâmetros associados 317 que é emitido do atribuidor de parâmetro 316 é inserida em um seletor do buffer de posição 318. Com base no conjunto de parâmetros associados 317, o seletor do buffer de posição 318 envia uma solicitação para uma posição 319 a um de dois ou mais buffers de posição 320 e recebe uma posição decodificada 325 do buffer selecionado da posição 320. A posição decodificada de entrada 325 é potencialmente modificada e a posição decodificada de saída 326 - com um valor potencialmente modificado - é enviada ao binarizador 314 como resposta final à solicitação para uma posição com um conjunto de parâmetros associados 317.
[00083] O buffer da posição 320 no qual a solicitação para uma posição é encaminhado é selecionado da mesma forma que o buffer da posição no qual a posição de saída do seletor do buffer de posição no lado do codificador foi enviada.
[00084] Em uma aplicação preferida da invenção, o seletor do buffer de posição 318 determina o buffer da posição 320 no qual a solicitação para uma posição 319 é enviada com base na medição associada para uma estimativa da probabilidade para um dos dois possíveis valores de posição para a posição solicitada atual. Em uma aplicação preferida da invenção, o conjunto de possíveis valores para a medição para uma estimativa da probabilidade para um dos dois possíveis valores de posição é finito e o seletor do buffer de posição 318 contém uma tabela que associa exatamente um buffer da posição 320 com cada possível valor da estimativa da probabilidade para um dos dois possíveis valores de posição, onde diferentes valores para a medição para uma estimativa da probabilidade para um dos dois possíveis valores de posição podem ser associados com o mesmo buffer da posição 320. Em outra aplicação preferida da invenção, uma faixa de possíveis valores para a medição para uma estimativa da probabilidade para um dos dois possíveis valores de posição é dividida em um número de intervalos, o seletor do buffer de posição 318 determina o índice de intervalo para a medição atual para uma estimativa da probabilidade para um dos dois possíveis valores de posição, e o seletor do buffer de posição 318 contém uma tabela que associa exatamente um buffer da posição 320 com cada possível valor para o índice de intervalo, onde diferentes valores para o índice de intervalo podem ser associados com o mesmo buffer da posição 320. Em uma aplicação preferida da invenção, solicitações para posições 317 com medição oposta a uma estimativa da probabilidade para um dos dois possíveis valores de posição (medição oposta é aquela que representa as estimativas de probabilidade P e 1 - P) são encaminhadas ao mesmo buffer da posição 320. Em outra aplicação preferida da invenção, a associação da medição para uma estimativa da probabilidade para um dos dois possíveis valores de posição para a posição atual solicitação com um buffer da posição particular é adaptada ao longo do tempo.
[00085] Em outra aplicação preferida da invenção, o seletor do buffer de posição 318 determina o buffer da posição 320 no qual a solicitação para uma posição 319 é enviada com base na medição associada para uma estimativa da probabilidade para o valor da posição menos provável e mais provável para a posição solicitada atual. Em uma aplicação preferida da invenção, o conjunto de possíveis valores para a medição para uma estimativa da probabilidade para o valor da posição menos provável e mais provável é finito e o seletor do buffer de posição 318 contém uma tabela que associa exatamente um buffer da posição 320 com cada possível valor da estimativa da probabilidade para o valor da posição menos provável e mais provável, onde diferentes valores para a medição para uma estimativa da probabilidade para o valor da posição menos provável e mais provável podem ser associados com o mesmo buffer da posição 320. Em outra aplicação preferida da invenção, uma faixa de possíveis valores para a medição para uma estimativa da probabilidade para o valor da posição menos provável e mais provável é dividida em um número de intervalos, o seletor do buffer de posição 318 determina o índice de intervalo para a medição atual para uma estimativa da probabilidade para o valor da posição menos provável e mais provável, e o seletor do buffer de posição 318 contém uma tabela que associa exatamente um buffer da posição 320 com cada possível valor para o índice de intervalo, onde diferentes valores para o índice de intervalo podem ser associados com o mesmo buffer da posição 320. Em outra aplicação preferida da invenção, a associação da medição para uma estimativa da probabilidade para o valor da posição menos provável e mais provável para a posição atual solicitação com um buffer da posição particular é adaptada ao longo do tempo.
[00086] Após receber uma posição decodificada 325 do buffer da posição selecionado 320, o seletor do buffer de posição 318 potencialmente modifica a posição de entrada 325 e envia a posição de saída 326 - com um valor potencialmente modificado - ao binarizador 314. O mapeamento da posição de entrada/saída do seletor do buffer de posição 318 é o inverso do mapeamento da posição de entrada/saída do seletor do buffer de posição no lado do codificador.
[00087] Em uma aplicação preferida da invenção, o seletor do buffer de posição 318 não modifica o valor da posição, ou seja, a posição de saída 326 sempre tem o mesmo valor que a posição de entrada 325. Em outra aplicação preferida da invenção, o seletor do buffer de posição 318 determina o valor da posição de saída 326 com base no valor da posição de entrada 325 e a medição para uma estimativa da probabilidade para um dos dois possíveis valores de posição para a posição solicitada atual que é associada com a solicitação para uma posição 317. Em uma aplicação preferida da invenção, o valor da posição de saída 326 é definido igual ao valor da posição de entrada 325 se a medição para a probabilidade para um dos dois possíveis valores de posição para a posição atual solicitação for menor do que (ou menor ou igual a) um limite particular; se a medição para a probabilidade para um dos dois possíveis valores de posição para a posição atual solicitação for maior ou igual a (ou maior do que) um limite particular, o valor da posição de saída 326 é modificado (ou seja, é definido oposto ao valor da posição de entrada). Em outra aplicação preferida da invenção, o valor da posição de saída 326 é definido igual ao valor da posição de entrada 325 se a medição para a probabilidade para um dos dois possíveis valores de posição para a posição atual solicitação for maior do que (ou maior ou igual a) um limite particular; se a medição para a probabilidade para um dos dois possíveis valores de posição para a posição atual solicitação for menor ou igual a (ou menor do que) um limite particular, o valor da posição de saída 326 é modificado (ou seja, é definido oposto ao valor da posição de entrada). Em uma aplicação preferida da invenção, o valor do limite corresponde a um valor de 0,5 para a probabilidade estimada para ambos possíveis valores de posição.
[00088] Em outra aplicação preferida da invenção, o seletor do buffer de posição 318 determina o valor da posição de saída 326 com base no valor da posição de entrada 325 e no identificador, especificando uma estimativa na qual dois dos possíveis valores de posição representam o valor da posição menos provável e mais provável para a posição atual solicitação, que é associada com a solicitação para uma posição 317. Em uma aplicação preferida da invenção, o valor da posição de saída 326 é definido igual ao valor da posição de entrada 325 se o identificador especificar que o primeiro dos dois possíveis valores de posição representa o valor da posição menos provável (ou mais provável) para a posição atual solicitação, e o valor da posição de saída 326 for modificado (ou seja, é definido oposto ao valor da posição de entrada) se o identificador especificar que o segundo dos dois possíveis valores de posição representa o valor da posição menos provável (ou mais provável) para a posição atual solicitação.
[00089] Conforme descrito acima, o seletor do buffer de posição envia uma solicitação para uma posição 319 a um dos dois ou mais buffers de posição 320. Os buffers de posição 20 representam os buffers primeiro a entrar, primeiro a sair, que são inseridos com sequências de posições decodificadas 321 dos decodificadores de posição conectada 322. Como resposta a uma solicitação para uma posição 319 que é enviada a um buffer da posição 320 do seletor do buffer de posição 318, o buffer da posição 320 remove a posição de seu conteúdo que foi primeiro inserido ao buffer da posição 320 e envia-a ao seletor do buffer de posição 318. As posições que são previamente enviadas ao buffer da posição 320 são previamente removidas e enviadas ao seletor do buffer de posição 318.
[00090] Cada um dos dois ou mais buffers de posição 320 é conectado com exatamente um decodificador de posição 322 e cada decodificador de posição é apenas conectado com um buffer da posição 320. Cada decodificador de posição 322 lê palavras código 323, que representam as sequências de bits, de um fluxo de dados contínuo parcial separado 324. O decodificador de posição converte uma palavra código 323 em uma sequência de posições 321 que é enviada ao buffer da posição conectado 320. Toda o algoritmo de decodificação converte dois ou mais fluxos de dados contínuos parciais 324 em um número de elementos de sintaxe decodificados, onde o número de fluxos de dados contínuos parciais é igual ao número de buffers de posição e decodificadores de posição e a decodificação de elementos de sintaxe é acionada pelas solicitações para novos elementos de sintaxe. Em uma aplicação preferida da invenção, um decodificador de posição 322 converte palavras código 323 de um número de bits variável em uma sequência de um número de posições variável 321. Uma vantagem de aplicações da invenção é que a decodificação de posições de dois ou mais fluxos de dados contínuos parciais pode ser feita em paralelo (por exemplo, para diferentes grupos de medições de probabilidade), o que reduz o período de processamento para as várias implementações.
[00091] Outra vantagem das aplicações da invenção é que a decodificação da posição, que é feita pelos decodificadores de posição 322, pode ser especificamente desenhada para diferentes conjuntos de parâmetros 317. Em particular, a codificação e a decodificação da posição podem ser otimizadas (em termos de eficiência da codificação e/ou complexidade) para diferentes grupos de probabilidades estimadas. Por um lado, isso permite uma redução da codificação/complexidade de decodificação com relação aos algoritmos da codificação de entropia do estado da técnica com eficiência da codificação semelhante. Por outro lado, permite uma melhoria da eficiência da codificação com relação aos algoritmos da codificação de entropia do estado da técnica com complexidade de codificação/decodificação semelhante. Em uma aplicação preferida da invenção, os decodificadores de posição 322 implementam diferentes algoritmos de decodificação (ou seja, mapeamento de sequências de posição nas palavras código) para diferentes grupos de medições para uma estimativa da probabilidade para um dos dois possíveis valores de posição 317 para a posição atual solicitação. Em outra aplicação preferida da invenção, os decodificadores de posição 322 implementam diferentes algoritmos de decodificação para diferentes grupos de medições para uma estimativa da probabilidade para o valor da posição menos provável e mais provável para a posição solicitada atual.
[00092] Os decodificadores de posição 322 fazem o mapeamento inverso dos codificadores de posição correspondentes no lado do codificador.
[00093] Em uma aplicação preferida da invenção, os decodificadores de posição 322 - ou um ou mais dos decodificadores de posição - representam os decodificadores de entropia que diretamente mapeiam as palavras código 323 nas sequências de posições 321. Estes mapeamentos podem ser eficientemente implementados e não exigem um motor de codificação aritmético complexo. O mapeamento de palavras código nas sequências de posições deve ser único. Em uma aplicação preferida da invenção, o mapeamento de palavras código 323 nas sequências de posições 321 é bijetivo. Em outra aplicação preferida da invenção, os decodificadores de posição 310 - ou um ou mais dos decodificadores de posição - representam decodificadores de entropia que diretamente mapeiam palavras código de comprimento variável 323 em sequências de posições de comprimento variável 321. Em uma aplicação preferida da invenção, as palavras código de entrada representam códigos livre de redundância como códigos de huffman gerais ou códigos de huffman canônicos. Dois exemplos para o mapeamento bijetivo de códigos livres de redundância em sequências de posição são ilustrados na Tabela 3.
[00094] Em outra aplicação preferida da invenção, os decodificadores de posição 322 - ou um ou mais dos decodificadores de posição - representam decodificadores de entropia que diretamente mapeiam palavras código de comprimento fixo 323 nas sequências de posições de comprimento variável 321. Em outra aplicação preferida da invenção, os decodificadores de posição 322 - ou um ou mais dos decodificadores de posição - representam decodificadores de entropia que diretamente mapeiam as palavras código de comprimento variável 323 nas sequências de posições de comprimento fixo 321.
[00095] Assim, a Figura 7 e 8 mostraram uma aplicação para um codificador para codificar uma sequência de símbolos 3 e um decodificador para reconstruir o mesmo. O codificador compreende um atribuidor 304 configurado para atribuir um número de parâmetros 305 em cada símbolo da sequência de símbolos. A atribuição é baseada na informação contida dentro dos símbolos anteriores da sequência de símbolos como a categoria do elemento de sintaxe 1 na representação - como binarização - ao qual o símbolo atual pertence e que, de acordo com a estrutura da sintaxe dos elementos de sintaxe 1, atualmente deve ser esperada cuja expectativa, por sua vez, é dedutível do histórico dos elementos de sintaxe prévios 1 e símbolos 3. Ainda, o codificador compreende uma pluralidade de codificadores de entropia 10 cada um é configurado para converter os símbolos 3 encaminhados ao respectivo codificador de entropia em um respectivo fluxo de dados contínuo 312, e um seletor 306 configurado para encaminhar cada símbolo 3 a um selecionado da pluralidade de codificadores de entropia 10, a seleção dependendo do número de parâmetros 305 atribuídos ao respectivo símbolo 3. O atribuidor 304 poderia ser entendido como sendo integrado ao seletor 206 para produzir um respectivo seletor 502.
[00096] O decodificador para reconstruir uma sequência de símbolos compreende uma pluralidade de decodificadores de entropia 322, cada um é configurado para converter um respectivo fluxo de dados contínuo 323 em símbolos 321; um atribuidor 316 configurado para atribuir um número de parâmetros 317 a cada símbolo 315 de uma sequência de símbolos para ser reconstruído com base na informação contida dentro dos símbolos previamente reconstruídos da sequência de símbolos (ver 326 e 327 na Figura 8); e um seletor 318 configurado para recuperar cada símbolo da sequência de símbolos a ser reconstruído de um selecionado da pluralidade de decodificadores de entropia 322, a seleção dependendo do número de parâmetros definidos ao respectivo símbolo. O atribuidor 316 pode ser configurado de modo que o número de parâmetros atribuído a cada símbolo compreenda, ou seja, uma medição para uma estimativa de uma probabilidade de distribuição entre os possíveis valores de símbolo que um respectivo símbolo pode assumir. Novamente, o atribuidor 316 e o seletor 318 podem ser entendidos como integrado em um bloco, um seletor 402. A sequência de símbolos a ser reconstruída pode ser de um alfabeto binário e o atribuidor 316 pode ser configurado de modo que a estimativa da distribuição de probabilidade consista em uma medição para uma estimativa de uma probabilidade de um valor da posição menos provável e mais provável dos dois possíveis valores de posição do alfabeto binário e um identificador especificando uma estimativa na qual dois dos possíveis valores de posição representam o valor da posição menos provável e mais provável. O atribuidor 316 pode, ainda, ser configurado para internamente atribuir um contexto a cada símbolo da sequência de símbolos 315 a ser reconstruída com base na informação contida dentro dos símbolos previamente reconstruídos da sequência de símbolos a ser reconstruída com cada contexto tendo uma respectiva distribuição de estimativa de probabilidade associada com ela, e para adaptar a distribuição de estimativa de probabilidade para cada contexto a uma estatística de símbolo real com base nos valores de símbolo de símbolos previamente reconstruídos nos quais o respectivo contexto é atribuído. O contexto pode considerar uma relação espacial ou proximidade de posições na qual os elementos de sintaxe pertencem como na codificação do vídeo ou figura, ou ainda em tabelas no caso de aplicações financeiras. Então, a medição para a estimativa da distribuição de probabilidade para cada símbolo pode ser determinada com base na distribuição de estimativa de probabilidade associada com o contexto atribuído ao respectivo símbolo como pela quantificação, ou utilizando como um índice em uma respectiva tabela, a distribuição de estimativa de probabilidade associada com o contexto atribuído com o respectivo símbolo (nas aplicações abaixo indexadas por um índice pipe com um índice de refinamento) em uma de uma pluralidade de distribuições de estimativa de probabilidade representativas (retirando o índice de refinamento) para obter a medição para a estimativa da distribuição de probabilidade (o índice pipe indexando o fluxo de dados contínuo parcial 312). O seletor pode ser configurado de modo que uma associação bijetiva seja definida entre a pluralidade de codificadores de entropia e a pluralidade de distribuições de estimativa de probabilidade representativa. O seletor 18 pode ser configurado para mudar um mapeamento de quantificação de uma faixa da distribuição de estimativas de probabilidade na pluralidade de distribuições de estimativa de probabilidade representativa de forma determinística predeterminada dependendo dos símbolos previamente reconstruídos da sequência de símbolos, ao longo do tempo. Ou seja, o seletor 318 pode mudar os tamanhos da etapa de quantificação, ou seja, os intervalos de distribuição das probabilidades mapeadas nos índices de probabilidade individual de forma bijetiva, associados com os decodificadores de entropia individuais. A pluralidade de decodificadores de entropia 322, por sua vez, pode ser configurada para adaptar sua forma de converter os símbolos em fluxo de dados contínuos responsivos a uma mudança no mapeamento de quantificação. Por exemplo, cada decodificador de entropia 322 pode ser otimizado para, ou seja, poder ter uma taxa de compressão ótima para, uma determinada distribuição de estimativa de probabilidade dentro do respectivo intervalo de qualificação da distribuição de estimativa de probabilidade, e pode mudar seu mapeamento da palavra código/sequência de símbolo para adaptar a localização desta determinada distribuição de estimativa de probabilidade dentro do respectivo intervalo de qualificação da distribuição de estimativa de probabilidade em uma mudança do último a ser otimizado. O seletor pode ser configurado para mudar o mapeamento de quantificação de modo que as taxas pelas quais os símbolos são recuperados da pluralidade de decodificadores de entropia se tornem menos dispersas. Como no binarizador 314 é observado que o mesmo se ausenta se os elementos de sintaxe já são binários. Ainda, dependendo do tipo de decodificador 322, a existência dos buffers 320 não é necessária. Ainda, os buffers podem ser integrados dentro dos decodificadores.
[00097] Terminação da sequência finita dos elemento de sintaxe.
[00098] Em uma aplicação preferida da invenção, a codificação e a decodificação são feitas para um conjunto finito de elementos de sintaxe. Geralmente uma determinada quantidade de dados como uma imagem estática, uma estrutura ou campo de uma sequência de vídeo, uma parte de uma imagem, uma parte de uma estrutura ou um campo de uma sequência de vídeo, ou um conjunto de amostras de áudio sucessivas, etc. é codificada. Para conjuntos finitos de elementos de sintaxe, no geral, os fluxos de dados contínuos parciais que são criados no lado do codificador devem ser terminados, ou seja, deve ser garantido que todos os elementos de sintaxe podem ser decodificados dos fluxos de dados contínuos parciais transmitidos ou armazenados. Após a última posição ser inserida caracterizada pelo buffer da posição correspondente 308, o codificador de posição 310 deve garantir que uma palavra código completa é escrita no fluxo de dados contínuo parcial 312. Se o codificador de posição 310 representa um codificador de entropia que implementa um mapeamento direto de sequências de posição nas palavras código, a sequência de posição que é armazenada no buffer da posição após escrever a última posição no buffer da posição pode não representar uma sequência de posição que é associada com uma palavra código (ou seja, pode representar um prefixo de duas ou mais sequências de posição que estão associadas com as palavras código). Neste caso, qualquer uma das palavras código associadas com uma sequência de posição que contém a sequência de posição no buffer da posição como prefixo deve ser escrita no fluxo de dados contínuo parcial (o buffer da posição deve ser nivelado). Isso poderia ser feito inserindo posições com um valor particular ou arbitrário ao buffer da posição até que uma palavra código seja escrita. Em uma aplicação preferida da invenção, o codificador de posição seleciona uma das palavras código com comprimento mínimo (além da propriedade que a sequência de posição associada deve conter a sequência de posição no buffer da posição como prefixo). No lado do decodificador, o decodificador de posição 322 pode decodificar mais posições do que exigido para a última palavra código em um fluxo de dados contínuo parcial; estas posições não são solicitadas pelo seletor do buffer de posição 318 e são descartadas e ignoradas. A decodificação do conjunto finito de símbolos é controlada pelas solicitações para os elementos de sintaxe decodificados; se nenhum outro elemento de sintaxe for solicitado para uma quantidade de dados, a decodificação é terminada.
[00099] Transmissão e multiplexação dos fluxos de dados contínuos parciais.
[000100] Os fluxos de dados contínuos parciais 312 que são criados pelo codificador podem ser transmitidos separadamente, ou eles podem ser multiplexados em um único fluxo de dados contínuo, ou as palavras código dos fluxos de dados contínuos parciais podem ser intercaladas em um único fluxo de dados contínuo.
[000101] Em uma aplicação da invenção, cada fluxo de dados contínuo parcial para uma quantidade de dados é escrita em um pacote de dados. A quantidade de dados pode ser um conjunto de elementos de sintaxe arbitrária como uma figura estática, um campo ou estrutura de uma sequência de vídeo, uma parte de uma figura estática, uma parte de um campo ou estrutura de uma sequência de vídeo, ou uma estrutura de áudio amostras, etc.
[000102] Em outra aplicação preferida da invenção, dois ou mais fluxos de dados contínuos parciais para uma quantidade de dados ou todos os fluxos de dados contínuos parciais para uma quantidade de dados são multiplexados em um pacote de dados. A estrutura de um pacote de dados que contém fluxos de dados contínuos parciais multiplexados é ilustrada na Figura 9.
[000103] O pacote de dados 400 consiste em um cabeçalho e uma divisão para os dados de cada fluxo de dados contínuo parcial (para a quantidade de dados considerada). O cabeçalho 400 do pacote de dados contém indicações para a divisão (restante) do pacote de dados em segmentos dos dados do fluxo de dados contínuo 402. Além das indicações para a divisão, o cabeçalho pode conter informação adicional. Em uma aplicação preferida da invenção, as indicações para a divisão do pacote de dados são os locais do início dos segmentos de dados em unidades de bits ou bytes ou múltiplos de bits ou múltiplos de bytes. Em uma aplicação preferida da invenção, os locais do início dos segmentos de dados são codificados como valores absolutos no cabeçalho do pacote de dados, tanto relativo ao início do pacote de dados quanto relativo ao final do cabeçalho ou relativo ao início do pacote de dados anterior. Em outra aplicação preferida da invenção, os locais do início dos segmentos de dados são diferentemente codificados, ou seja, apenas a diferença entre o início real de um segmento de dados e uma previsão para o início do segmento de dados é codificado. A previsão pode ser derivada com base na informação já conhecida ou transmitida como todo o tamanho do pacote de dados, o tamanho do cabeçalho, o número de segmentos de dados no pacote de dados, o local do início dos segmentos de dados precedentes. Em uma aplicação preferida da invenção, o local do início do primeiro pacote de dados não é codificado, mas deduzido com base no tamanho do cabeçalho do pacote de dados. No lado do decodificador, as indicações de divisão transmitidas são utilizadas para derivar o início dos segmentos de dados. Os segmentos de dados são então utilizados como fluxos de dados contínuos parciais e os dados contidos nos segmentos de dados são inseridos nos decodificadores correspondentes da posição na ordem sequencial.
[000104] Há várias alternativas para multiplexação dos fluxos de dados contínuos parciais em um pacote de dados. Uma alternativa, que pode reduzir a informação lateral necessária, em particular para casos nos quais os tamanhos dos fluxos de dados contínuos parciais são muito semelhantes, é ilustrada na Figura 10. A carga útil do pacote de dados, ou seja, o pacote de dados 410 sem seu cabeçalho 411, é dividida em segmentos 412 em uma forma predefinida. Como um exemplo, a carga útil do pacote de dados pode ser dividida em segmentos do mesmo tamanho. Então cada segmento está associado com um fluxo de dados contínuo parcial ou com a primeira parte de um fluxo de dados contínuo parcial 413. Se um fluxo de dados contínuo parcial for maior do que o segmento de dados associado, seu restante 414 é colocado no espaço inutilizado no final de outros segmentos de dados. Isso pode ser feito de forma que a parte restante de um fluxo de dados contínuo seja inserida na ordem reversa (começando do final do segmento de dados), o que reduz a informação lateral. A associação do restante dos fluxos de dados contínuos parciais aos segmentos de dados e, quando mais do que um restante é adicionado a um segmento de dados, o ponto inicial para um ou mais do restante ser sinalizado dentro do fluxo de dados contínuo, por exemplo, no cabeçalho do pacote de dados.
[000105] Intercalação das palavras código de comprimento variável.
[000106] Para algumas aplicações, a multiplexação descrita acima dos fluxos de dados contínuos parciais (para uma quantidade de elementos de sintaxe) em um pacote de dados pode ter as seguintes desvantagens: por um lado, para pequenos pacotes de dados, o número de bits para a informação lateral que é exigida para sinalizar a divisão pode se tornar significativo com relação aos dados reais nos fluxos de dados contínuos parciais, que finalmente reduz a eficiência da codificação. Por outro lado, a multiplexação pode não ser adequada para aplicações que exigem um baixo atraso (por exemplo, para aplicações de vídeo conferência). Com a multiplexação descrita, o codificador não pode iniciar a transmissão de um pacote de dados antes dos fluxos de dados contínuos parciais serem completamente criados, visto que os locais do início das divisões não são conhecidos previamente. Além disso, no geral, o decodificador deve esperar até que receba o início do último segmento de dados antes que possa iniciar a decodificação de um pacote de dados. Para aplicações como sistemas de vídeo conferência, estes atrasos podem somar em um atraso total adicional do sistema de várias figuras de vídeo (em particular para taxas de bits que são próximas à taxa de bit de transmissão e para codificadores/decodificadores que exigem o intervalo de tempo muito próximo entre as duas figuras para codificar/decodificar uma figura), que é crítica para estas aplicações. Para superar as desvantagens para determinadas aplicações, o codificador de uma aplicação preferida da invenção pode ser configurado de forma que as palavras código que são geradas por dois ou mais codificadores de posição sejam intercaladas em um único fluxo de dados contínuo. O fluxo de dados contínuo com as palavras código intercaladas pode ser diretamente enviado ao decodificador (ao ignorar um pequeno atraso de buffer, veja abaixo). No lado do decodificador, dois ou mais decodificadores de posição leem as palavras código diretamente do fluxo de dados contínuo na ordem da decodificação; a decodificação pode ser iniciada com o primeiro bit recebido. Além disso, nenhuma informação lateral é necessária para sinalizar a multiplexação (ou intercalação) dos fluxos de dados contínuos parciais. Outra forma de reduzir a complexidade do decodificador pode ser obtida quando os decodificadores de posição 322 não leem as palavras código de comprimento variável de um buffer de bit global, mas ao invés disso eles sempre leem as sequências de bits de comprimento fixo do buffer de bit global e adicionam estas sequências de bits de comprimento fixo a um buffer de bit local, onde cada decodificador de posição 322 é conectado com um buffer de bit local separado. As palavras código de comprimento variável são então lidas do buffer de bit local. Assim, a análise das palavras código de comprimento variável pode ser feita em paralelo, apenas o acesso das sequências de bits de comprimento fixo deve ser feito de forma sincronizada, mas este acesso de sequências de bits de comprimento fixo é geralmente muito rápido, de modo que toda a complexidade de decodificação possa ser reduzida para algumas arquiteturas. O número fixo de posições que são enviadas a um buffer de bit local particular pode ser diferente para diferente buffer de bit local e pode ainda variar ao longo do tempo, dependendo dos parâmetros determinados como eventos no decodificador de posição, buffer da posição, ou buffer de bit. Entretanto, o número de bits que são lidos por um acesso particular não depende dos bits reais que são lidos durante o acesso particular, que é a diferença importante na leitura das palavras código de comprimento variável. A leitura das sequências de bits de comprimento fixo é acionada por determinados eventos nos buffers de posição, decodificadores de posição, ou buffers de bit local. Como um exemplo, é possível solicitar a leitura de uma nova sequência de bits de comprimento fixo quando o número de bits que são predefinidos em um buffer de bit conectado falhar abaixo de um limite predefinido, onde diferentes valores limites podem ser utilizados para diferentes buffers de bits. No codificador, foi garantido que as sequências de posições de comprimento fixo são inseridas na mesma ordem no fluxo de dados contínuo, no qual são lidas do fluxo de dados contínuo no lado do decodificador. É ainda possível combinar esta intercalação de sequências de comprimento fixo com um controle de atraso baixo semelhante aos explicados acima. A seguir, uma aplicação preferida para a intercalação de sequências de bits de comprimento fixo é descrita. Para mais detalhes referentes aos últimos esquemas de intercalação, a referência é feita a WO2011/128268A1.
[000107] Após ter descrito as aplicações de acordo com a qual a codificação prévia uniforme é utilizada para comprimir dados de vídeo, é descrita como outra aplicação uniforme para implementar as aplicações da presente invenção que apresenta a implementação especialmente efetiva em termos de uma bom compromisso entre a taxa de compressão por um lado e suspensão do cálculo da tabela de visualização por outro lado. Em particular, as seguintes aplicações permitem o uso de códigos com comprimento variável computacionalmente menos complexos para codificar por entropia o fluxo de dados contínuos individualmente, e efetivamente abranger as partes da estimativa de probabilidade. Nas aplicações descritas abaixo, os símbolos são de natureza binária e os códigos VLC apresentados abaixo efetivamente abrangem a estimativa de probabilidade representada, por exemplo, por RLPS, estendendo dentro de [0;0,5].
[000108] Em particular, as aplicações descritas abaixo descrevem possíveis implementações para os codificadores de entropia 310 individuais e decodificadores 322 na Figura 7 a 17, respectivamente. Elas são adequadas para codificar as posições, ou seja, símbolos binários, conforme eles ocorrem na imagem ou nas aplicações de compressão de vídeo. Certamente, estas aplicações são ainda aplicáveis na imagem ou codificação de vídeo onde estes símbolos binários são divididos em um ou mais fluxos de posições 307 a ser codificados e fluxo de dados contínuos 324 a ser decodificados, respectivamente, onde cada fluxo da posição pode ser considerado como uma realização de um processo de Bernoulli. As aplicações descritas abaixo utilizam um ou mais dos vários chamados códigos variável para variável abaixo explicados (códigos-v2v) para codificar os fluxos da posição. Um código v2v pode ser considerado como dois códigos livres de prefixo com o mesmo número de palavras código. Um código livre de prefixo primário e um secundário. Cada palavra código do código livre de prefixo primário é associada a uma palavra código do código livre de prefixo secundário. De acordo com as aplicações descritas abaixo, pelo menos alguns dos codificadores 310 e decodificadores 322, operam como segue: Para codificar uma sequência de posições particular 307, sempre uma palavra código do código livre de prefixo primário é lida do buffer 308, a palavra código correspondente do código livre de prefixo secundário é escrita no fluxo de dados contínuo 312. O mesmo procedimento é utilizado para decodificar tal fluxo de dados contínuo 324, mas com código livre de prefixo primário e secundário trocados. Ou seja, para decodificar um fluxo de dados contínuo 324, sempre uma palavra código do código livre de prefixo secundário é lida do respectivo fluxo de dados contínuo 324, a palavra código correspondente do código livre de prefixo primário é escrita no buffer 320.
[000109] De forma vantajosa, os códigos descritos abaixo não precisam das tabelas de visualização. Os códigos são implementáveis na forma de máquina no estado finito. Os códigos- v2v apresentados aqui, podem ser gerados pela simples regra de construção de modo que não haja necessidade de armazenar grandes tabelas para as palavras código. Ainda, um simples algoritmo pode ser utilizado para realizar a codificação ou decodificação. Três regras de construção são descritas abaixo onde duas delas podem ser parametrizadas. Elas abrangem partes disjuntas diferentes ou iguais do intervalo de probabilidade posteriormente mencionado e são, certamente, especificamente vantajosas se utilizadas juntas, como todos os três códigos em paralelo (cada um para um diferente de co/decodificadores 11 e 22), ou dois deles. Com as regras de construção descritas abaixo, é possível desenhar um conjunto de códigos-v2v, de modo que para os processos de Bernoulli com probabilidade arbitrária p, um dos códigos realiza bem em termos de comprimento do código de excesso.
[000110] Conforme estabelecido acima, a codificação e a decodificação dos fluxos 312 e 324 respectivamente, podem tanto ser realizadas independentemente para cada fluxo ou de forma intercalada. Isso, entretanto, não é específico às classes de códigos-v2v apresentadas e, desta forma, apenas a codificação e decodificação de uma palavra código particular é descritos para cada umas das três regras de construção a seguir. Entretanto, é enfatizado, que todas as aplicações acima referentes às soluções de intercalação são ainda combináveis com os códigos atualmente descritos ou co- e decodificadores 310 e 322, respectivamente.
[000111] Regra de construção 1: códigos ‘pipe da posição unária’ ou co/decodificadores 310 e 322.
[000112] Os códigos pipe unários da posição (PIPE = probability interval partitioning entropy | entropia da divisão do intervalo de probabilidade) são uma versão especial dos códigos chamados ‘pipe de posição’, ou seja, códigos adequados para codificar de qualquer fluxo de dados contínuos individual 12 e 24, cada transferência de dados de uma estatística de símbolo binária pertencente a um determinado subintervalo de probabilidade da faixa de probabilidade previamente mencionada [0;0,5]. A construção de códigos pipe da posição é descrita primeiro. Um código pipe da posição pode ser construído de qualquer código livre de prefixo com pelo menos três palavras código. Para formar um código-v2v, ele utiliza o código livre de prefixo como código primário e secundário, mas com duas palavras código do código livre de prefixo secundário trocadas. Isso significa que exceto para duas palavras código, as posições são escritas no fluxo de dados contínuo inalterado. Com esta técnica, apenas um código livre de prefixo precisa ser armazenado com a informação, que duas palavras código são trocadas e assim, o consumi de memória é reduzido. Observe que apenas faz sentido trocar as palavras código de diferente comprimento visto que, caso contrário, o fluxo de dados contínuo teria o mesmo comprimento que o fluxo da posição (ignorando os efeitos que podem ocorrer no final do fluxo da posição).
[000113] Devido a esta regra de construção, uma propriedade excepcional de códigos pipe da posição é que se os código livres de prefixo primário e secundário são trocados (enquanto o mapeamento das palavras código é retido), o código-v2v resultante é idêntico ao código-v2v original. Desta forma, o algoritmo de codificação e algoritmo de decodificação são idênticos para os códigos de pipe da posição.
[000114] Um código unário pipe de posição é construído de um código livre de prefixo especial. Este código livre de prefixo especial é construído como segue. Primeiro, um código livre de prefixo que consiste em um n palavras código unárias é gerado começando com ‘01’, ‘001’, ‘0001’, até n palavras código ser produzidas. n é o parâmetro para o código unário pipe da posição. Da palavra código mais longa, a pista 1 é removida. Isso corresponde a um código unário truncado (mas sem a palavra código ‘0’). Então, n - 1 palavras código unárias são geradas começando com ‘10’, ‘110’, ‘1110’, até n - 1 palavras código ser produzidas. Das mais longas destas palavras código, a pista 0 é removida. O conjunto de união destes dois códigos livres de prefixo é utilizado como entrada para gerar o código unário pipe da posição. As duas palavras código que são trocadas apenas consistem em 0s e consistem apenas em 1s.
[000115] Exemplo para n = 4:
Figure img0005
[000116] Regra de construção 2: códigos ‘Unários para rice’ e co/decodificadores unários para rice 10 e 22:
[000117] Códigos unários para rice utilizam um código unário truncado como código primário. Ou seja, palavras código unárias são geradas começando com ‘1’, ‘01’, ‘001’, até 2n + 1 palavras código ser geradas e da palavra código mais longa, a pista 1 é removida. n é o parâmetro do código unário para rice. O código livre de prefixo secundário é construído das palavras código de p código livre de prefixo primário como segue. À palavra código primária que consiste apenas em 0s, a palavra código ‘1’ é atribuída. Todas as outras palavras código consistem na concatenação da palavra código ‘0’ com a representação n-bit binária do número de 0s da palavra código correspondente do código livre de prefixo primário.
[000118] Exemplo para n = 3:
Figure img0006
Figure img0007
[000119] Observe que isso é idêntico ao mapeamento de um código unário infinito a um código rice com parâmetro rice 2n.
[000120] Regra de construção 3: código de ‘três posições’.
[000121] O código de três posições é dado
Figure img0008
[000122] Tem a propriedade que o código primário (sequências de símbolo) é de comprimento fixo (sempre três posições) e as palavras código são classificadas pelos numerous ascendentes de 1s.
[000123] Uma implementação eficiente do código de três posições é descrita a seguir. Um codificador e decodificador para o código de três posições pode ser implementado sem armazenar as tabelas na forma a seguir.
[000124] No codificador (qualquer um de 10), três posições são lidas do fluxo da posição (ou seja,7). Se estas três posições contém exatamente um 1, a palavra código ‘1’ é escrita no fluxo de dados contínuo seguida por duas posições que consistem na representação binária da localização de 1 (começando da direita com 00). Se as três posições contém exatamente um 0, a palavra código ‘111’ é escrita no fluxo de dados contínuo seguida por duas posições que consistem na representação binária da localização de 0 (começando da direita com 00). As palavras código restantes ‘000’ e ‘111’ são mapeadas a ‘0’ e ‘11111’, respectivamente.
[000125] No decodificador (qualquer um de 22), uma posição ou bit é lido do respectivo fluxo de dados contínuo 24. Se for igual a ‘0’, a palavra código ‘000’ é decodificada no fluxo da posição 21. Se for igual a ‘1’, duas mais posições são lidas do fluxo de dados contínuo 24. Se estes dois bits não iguais a ‘11’, eles são interpretados como a representação binária de um número e dois 0s e um 1 é decodificado no fluxo de dados contínuo de modo que a localização de 1 seja determinada pelo número. Se os dois bits forem iguais a ‘11’, dois mais bits são lidos e interpretados como representação binária de um número. Se este número for menor do que 3, dois 1s e um 0 são decodificados e o número determina a localização de 0. Se for igual a 3, ‘111’ é decodificado no fluxo da posição.
[000126] Uma implementação eficiente de códigos pipe unários da posição é descrita a seguir. Um codificador e decodificador para códigos pipe unários da posição pode ser eficientemente implementado utilizando um contador. Devido à estrutura de códigos pipe da posição, a codificação e decodificação de códigos pipe da posição é fácil de implementar:
[000127] No codificador (qualquer um de 10), se a primeira posição de uma palavra código for igual a ‘0’, as posições são processadas até que um ‘1’ ocorra ou até que n 0s sejam lidos (incluindo o primeiro ‘0’ da palavra código). Se um ‘1’ ocorreu, as posições lidas são escritas no fluxo de dados contínuo inalterado. Caso contrário (ou seja, n 0s foram lidos), n - 1 1s são escritos no fluxo de dados contínuo. Se a primeira posição da palavra código for igual a ‘1’, posições são processadas até que um ‘0’ ocorra ou até n - 1 1s ser lidos (incluindo o primeiro ‘1’ da palavra código). Se um ‘0’ ocorreu, as posições lidas são escritas no fluxo de dados contínuo inalterado. Caso contrário (ou seja, n - 1 1s foram lidos), n 0s são escritos no fluxo de dados contínuo.
[000128] No decodificador (qualquer um de 322), o mesmo algoritmo é utilizado para o codificador, desde que este seja o mesmo para os códigos pipe da posição conforme descrito acima.
[000129] Uma implementação eficiente de unários para códigos rice é descrita a seguir. Um codificador e decodificador para unários para códigos rice podem ser eficientemente implementados utilizando um contador conforme será descrito agora.
[000130] No codificador (qualquer um de 310), posições são lidas do fluxo da posição (ou seja, 7) até que um 1 ocorra ou até que 2n 0s sejam lidos. O número de 0s é contado. Se o número contado for igual a 2n, a palavra código ‘1’ é escrita no fluxo de dados contínuo. Caso contrário, ‘0’ é escrito, seguido pela representação binária do número contado, escrito com n bits.
[000131] No decodificador (qualquer um de 322), um bit é lido. Se for igual a ‘1’, 2n 0s são decodificados na série da posição. Se for igual a ‘0’, n mais bits são lidos e interpretados como a representação binária de um número. Este número de 0s é decodificado no fluxo da posição, seguido por um ‘1’.
[000132] Em outras palavras, as aplicações agora descritas descrevem um codificador para codificar uma sequência de símbolos 303, compreendendo um atribuidor 316 configurado para atribuir um número de parâmetros 305 a cada símbolo da sequência de símbolos com base na informação contida dentro dos símbolos anteriores da sequência de símbolos; uma pluralidade de codificadores de entropia 310 sendo configurada para converter os símbolos 307 encaminhados ao respectivo codificador de entropia 310 em um respectivo fluxo de dados contínuo 312; e um seletor 6 configurado para encaminhar cada símbolo 303 a um selecionado da pluralidade de codificadores de entropia 10, a seleção dependendo do número de parâmetros 305 atribuído ao respectivo símbolo 303. De acordo com as aplicações agora descritas, pelo menos um primeiro subconjunto de codificadores de entropia pode ser um codificador de comprimento variável configurado para mapear os comprimentos variáveis das sequências de símbolo dentro do fluxo de símbolos 307 em palavras código de comprimentos variáveis para ser inseridas ao fluxo de dados contínuo 312, respectivamente, com cada um dos codificadores de entropia 310 do primeiro subconjunto utilizando uma regra de mapeamento bijetivo de acordo com a qual as palavras código de um código livre de prefixo primário com (2n- 1) ^ 3 palavras código são mapeadas em palavras código de um código livre de prefixo secundário que é idêntico ao código com prefixo primário de modo que todas, mas duas das palavras código do código livre de prefixo primário sejam mapeadas em palavras código idênticas ao código livre de prefixo secundário enquanto as duas palavras código dos códigos livres de prefixo primário e secundário têm diferentes comprimentos e são mapeados entre si de forma inalterada, caracterizado pelos codificadores de entropia poder utilizar diferentes n para abranger diferentes partes de um intervalo do intervalo de probabilidade mencionado acima. O primeiro código livre de prefixo pode ser construído de modo que as palavras código do primeiro código livre de prefixo sejam (a,b)2, (a,a,b)3, ■■■, (a,..,a,b)n, (a,..,a)n, (b,a)2, (b,b,a)3, ■■■, (b,...,b,a)n-1, (b,...,b)n-1, e as duas palavras código mapeada entre si de forma inalterada sejam (a,...,a)n e (b,...,b)n-1 com b + a e a, b e {0,1}. Entretanto, alternativas são praticáveis.
[000133] Em outras palavras, cada um do primeiro subconjunto de codificadores de entropia pode ser configurado para, na conversão dos símbolos encaminhados ao respectivo codificador de entropia ao respectivo fluxo de dados contínuo, examinar um primeiro símbolo encaminhado ao respectivo codificador de entropia, para determinar como (1) o primeiro símbolo é igual a a e {0,1}, neste caso o respectivo codificador de entropia é configurado para examinar os seguintes símbolos encaminhados ao respectivo codificador de entropia para determinar se (1.1) b com b / a e b e {0,1} ocorre dentro dos próximos n-1 símbolos seguindo o primeiro símbolo, neste caso o respectivo codificador de entropia é configurado para escrever uma palavra código ao respectivo fluxo de dados contínuo, que se for igual a o primeiro símbolo seguido pelos seguintes símbolos encaminhados ao respectivo codificador de entropia, até o símbolo b; (1.2) nenhum b ocorre dentro dos próximos n-1 símbolos seguindo o primeiro símbolo, neste caso o respectivo codificador de entropia é configurado para escrever uma palavra código no respectivo fluxo de dados contínuo, que é igual a (b,...,b)n-1; ou (2) o primeiro símbolo é igual a b, neste caso o respectivo codificador de entropia é configurado para examinar os seguintes símbolos encaminhados ao respectivo codificador de entropia para determinar se (2.1) a ocorre dentro dos próximos n-2 símbolos seguindo o primeiro símbolo, neste caso o respectivo codificador de entropia é configurado para escrever uma palavra código no respectivo fluxo de dados contínuo, que é igual ao primeiro símbolo seguido pelos seguintes símbolos encaminhados ao respectivo codificador de entropia até o símbolo a; ou (2.2) nenhum a ocorre dentro dos próximos n-2 símbolos seguindo o primeiro símbolo, neste caso o respectivo codificador de entropia é configurado para escrever uma palavra código no respectivo fluxo de dados contínuo, que é igual a (a,.,a)n.
[000134] Adicionalmente ou alternativamente, um Segundo subconjunto de codificadores de entropia 10 pode ser um codificador de comprimento variável configurado para mapear os comprimentos variáveis das sequências de símbolo em palavras código de comprimentos fixos, respectivamente, com cada um dos codificadores de entropia do segundo subconjunto utilizando uma regra de mapeamento bijetivo de acordo com estas palavras código de um código primário unário truncado com 2n+1 palavras código do tipo {(a), (ba), (bba), ... ,(b...ba), (bb...b)} com b + a e a,b e {0,1} são mapeadas em palavras código de um código livre de prefixo secundário de modo que a palavra código (bb.b) do código primário unário truncado seja mapeado na palavra código (c) do código livre de prefixo secundário e todas as outras palavras código {(a), (ba) , (bba) , ... , (b...ba) } do código primário unário truncado são mapeadas nas palavras código tendo (d) com c + d e c,d e {0,1} como um prefixo e uma palavra n-bit como sufixo, caracterizado pelos codificadores de entropia utilizar diferente n. Cada um do segundo subconjunto de codificadores de entropia pode ser configurado de modo que a palavra n-bit seja uma representação n- bit do número de b’s na respectiva palavra código do código primário unário truncado. Entretanto, alternativas são praticáveis.
[000135] Novamente, da perspectiva do modo de operação do respectivo codificador 10, cada um do segundo subconjunto de codificadores de entropia pode ser configurado para, na conversão dos símbolos encaminhados ao respectivo codificador de entropia no respectivo fluxo de dados contínuo, contar um número de b’s em uma sequência de símbolos encaminhado ao respectivo codificador de entropia, até que um a ocorra, ou até que o número da sequência de símbolos encaminhados ao respectivo codificador de entropia atinha 2n com todos os símbolos 2n da sequência sendo b, e (1) se o número de b’s for igual a 2n, escreva c com c e {0,1} as palavras código de um código livre de prefixo secundário no respectivo fluxo de dados contínuo, e (2) se o número de b’s for menor do que 2n, escreva uma palavra código do código livre de prefixo secundário no respectivo fluxo de dados contínuo, que tem (d) com c / d e d e {0,1} como prefixo e uma palavra n-bit determinada dependendo do número de b’s como sufixo.
[000136] Ainda adicionalmente ou alternativamente, um dos codificadores de entropia 10 predeterminados pode ser um codificador de comprimento variável configurado para mapear as sequências de símbolo de comprimentos fixos em palavras código de comprimentos variáveis, respectivamente, o codificador de entropia predeterminado utilizando uma regra de mapeamento bijetivo de acordo com a qual 23 palavras código de comprimento 3 de um código primário são mapeadas em palavras código de um código livre de prefixo secundário de modo que a palavra código (aaa)3 do código primário com um e {0,1} seja mapeada na palavra código (c) com c e {0,1}, todas as três palavras código do código primário tendo exatamente um b com b^a e b e {0,1} são mapeadas nas palavras código tendo (d) com c / d e d e {0,1} como um prefixo e uma respectiva primeira palavra de 2 bits de um primeiro conjunto de palavras de 2 bits como um sufixo, todas as três palavras código do código primário tendo exatamente um a são mapeadas nas palavras código tendo (d) como um prefixo e uma concatenação de uma primeira palavra de 2 bits não sendo um elemento do primeiro conjunto e uma segunda palavra de 2 bits de um segundo conjunto de palavras de 2 bits, como um sufixo, e caracterizada pela palavra código (bbb)3 ser mapeada em uma palavra código tendo (d) como um prefixo e uma concatenação da primeira palavra de 2 bits não sendo um elemento do primeiro conjunto e uma segunda palavra de 2 bits não sendo um elemento do segundo conjunto, como um sufixo. A primeira palavra de 2 bits das palavras código do código primário tendo exatamente um b pode ser uma representação de 2 bits de uma localização do b na respectiva palavra código do código primário, e a segunda palavra de 2 bits das palavras código do código primário tendo exatamente um a pode ser uma representação de 2 bits de uma localização do a na respectiva palavra código do código primário. Entretanto, alternativas são praticáveis.
[000137] Novamente, um dos codificadores de entropia predeterminados pode ser configurado para, na conversão dos símbolos encaminhados ao codificador de entropia predeterminado no respectivo fluxo de dados contínuo, examinar os símbolos ao codificador de entropia predeterminado em trigêmeos se (1) o trigêmeo consistir em a’s, neste caso o codificador de entropia predeterminado é configurado para escrever a palavra código (c) no respectivo fluxo de dados contínuo, (2) o trigêmeo exatamente compreende um b, neste caso o codificador de entropia predeterminado é configurado para escrever uma palavra código tendo (d) como um prefixo e uma representação de 2 bits de uma localização do b no trigêmeo como um sufixo, ao respectivo fluxo de dados contínuo; (3) o trigêmeo exatamente compreende um a, neste caso o codificador de entropia predeterminado é configurado para escrever uma palavra código tendo (d) como um prefixo e uma concatenação da primeira palavra de 2 bits não sendo um elemento do primeiro conjunto e uma representação de 2 bits de uma localização do a no trigêmeo como um sufixo, ao respectivo fluxo de dados contínuo; ou (4) o trigêmeo consiste em b’s, neste caso o codificador de entropia predeterminado é configurado para escrever uma palavra código tendo (d) como um prefixo e uma concatenação da primeira palavra de 2 bits não sendo um elemento do primeiro conjunto e a primeira palavra de 2 bits não sendo um elemento do segundo conjunto como um sufixo, ao respectivo fluxo de dados contínuo.
[000138] Com referência ao lado da decodificação, aplicações agora descritas revelam um decodificador para reconstruir uma sequência de símbolos 326, compreendendo uma pluralidade de decodificadores de entropia 322, cada um sendo configurado para converter um respectivo fluxo de dados contínuo 324 em símbolos 321; um atribuidor 316 configurado para atribuir um número de parâmetros em cada símbolo 326 de uma sequência de símbolos a ser reconstruída com base na informação contida dentro de símbolos previamente reconstruídos da sequência de símbolos; e um seletor 318 configurado para recuperar cada símbolo 325 da sequência de símbolos a ser reconstruída de um selecionado da pluralidade de decodificadores de entropia, a seleção dependendo do número de parâmetros definido ao respectivo símbolo. De acordo com as aplicações agora descritas pelo menos um primeiro subconjunto de decodificadores de entropia 322 são decodificadores de comprimento variável configurados para mapear palavras código de comprimentos variáveis em comprimentos variáveis das sequências de símbolo, respectivamente, com cada um dos decodificadores de entropia 22 do primeiro subconjunto utilizando uma regra de mapeamento bijetivo de acordo com as quais as palavras código de um código livre de prefixo primário com (2n-1) ^ 3 palavras código são palavras código mapeadas de um código livre de prefixo secundário que é idêntico ao código com prefixo primário de modo que todas, mas duas das palavras código do código livre de prefixo primário sejam mapeadas nas palavras código idênticas do código livre de prefixo secundário enquanto as duas palavras código dos códigos livres de prefixo primário e secundário têm diferentes comprimentos e são mapeadas entre si de forma inalterada, caracterizado pelos codificadores de entropia utilizar diferentes n. O primeiro código livre de prefixo pode ser construído de modo que as palavras código do primeiro código livre de prefixo sejam (a,b)2, (a,a,b)3, ■■■, (a,..,a,b)n, (a,..,a)n, (b,a)2, (b,b,a)3, ■■■, (b,...,b,a)n-1, (b,...,b)n-1, e as duas palavras código mapeadas entre si na forma permitida pode ser (a,...,a)n e (b,...,b)n-1 com b + a e a,b e {0,1}. Entretanto, alternativas são praticáveis.
[000139] Cada um do primeiro subconjunto de codificadores de entropia pode ser configurado para, na conversão do respectivo fluxo de dados contínuo nos símbolos, examinar um primeiro bit do respectivo fluxo de dados contínuo, para determinar se (1) o primeiro b é igual a a 0 {0,1}, neste caso o respectivo codificador de entropia é configurado para examinar os seguintes bits do respectivo fluxo de dados contínuo para determinar se (1.1) b com b / a e b 0 {0,1} ocorre dentro dos próximos bits n-1 seguindo o primeiro bit, neste caso o respectivo decodificador de entropia é configurado para reconstruir uma sequência de símbolo, que é igual ao primeiro bit seguido pelos seguintes bits do respectivo fluxo de dados contínuo até o bit b; ou (1.2) nenhum b ocorra dentro dos próximos bits n-1 seguindo o primeiro bit, neste caso o respectivo decodificador de entropia é configurado para reconstruir uma sequência de símbolo, que é igual a (b,.,b)n-1; ou (2) o primeiro b é igual a b, neste caso o respectivo decodificador de entropia é configurado para examinar os seguintes bits do respectivo fluxo de dados contínuo para determinar se (2.1) a ocorre dentro dos próximos bits n-2 seguindo o primeiro bit, neste caso o respectivo decodificador de entropia é configurado para reconstruir uma sequência de símbolo, que é igual ao primeiro bit seguido pelos seguintes bits do respectivo fluxo de dados contínuo até o símbolo a; ou (2.2) nenhum a ocorre dentro dos próximos bits n-2 seguindo o primeiro bit, neste caso o respectivo decodificador de entropia é configurado para reconstruir uma sequência de símbolo, que é igual a (a,..,a)n.
[000140] Adicionalmente ou alternativamente, pelo menos um segundo subconjunto dos decodificadores de entropia 322 pode ser um decodificador de comprimento variável configurado para mapear as palavras código de comprimentos fixos nos comprimentos variáveis das sequências de símbolo, respectivamente, com cada um dos decodificadores de entropia do segundo subconjunto utilizando uma regra de mapeamento bijetivo de acordo com as quais as palavras código de um código livre de prefixo secundário são mapeadas nas palavras código de um código primário unário truncado com palavras código 2n+1 do tipo {(a), (ba), (bba), . ,(b.ba), (bb...b) } com b + a e a,b e {0,1} de modo que a palavra código (c) do código livre de prefixo secundário seja mapeada na palavra código (bb.b) do código primário unário truncado e palavras código tendo (d) com c / d e c,d e {0,1} como um prefixo e uma palavra n- bit como sufixo, são mapeadas em uma das outras respectivas palavras código {(a), (ba), (bba), . ,(b.ba)} do código primário unário truncado, caracterizado pelos decodificadores de entropia utilizarem diferente n. Cada um do segundo subconjunto de decodificadores de entropia pode ser configurado de modo que a palavra n-bit seja uma representação n-bit do número de b’s na respectiva palavra código do código primário unário truncado. Entretanto, alternativas são praticáveis.
[000141] Cada um do segundo subconjunto de decodificadores de entropia pode ser um decodificador de comprimento variável configurado para mapear palavras código de comprimentos fixos em comprimentos variáveis das sequências de símbolo, respectivamente, e configurado para, na conversão do fluxo de dados contínuo do respectivo decodificador de entropia nos símbolos, examinar um primeiro bit do respectivo fluxo de dados contínuo para determinar se (1) o mesmo é igual a c com c e {0,1}, neste caso o respectivo decodificador de entropia é configurado para reconstruir uma sequência de símbolo que é igual a (bb...b) ' com b e {0,1}; ou (2) o mesmo é igual a d com c + d e c,d e {0,1}, neste caso o respectivo decodificador de entropia é configurado para determinar uma palavra n-bit de n outros bits do respectivo fluxo de dados contínuo, seguindo o primeiro bit, e reconstruir uma sequência de símbolo que é do tipo {(a), (ba), (bba), ... ,(b...ba), (bb...b)} com b / a e b e {0,1} com o número de b’s dependendo da palavra n-bit.
[000142] Adicionalmente ou alternativamente, um decodificador predeterminado dos decodificadores de entropia 322 pode ser um decodificador de comprimento variável configurado para mapear palavras código de comprimentos variáveis nas sequências de símbolo de comprimentos fixos, respectivamente, o decodificador de entropia predeterminado utilizando uma regra de mapeamento bijetivo de acordo com a qual as palavras código de um código livre de prefixo secundário são mapeadas em palavras código 23 de comprimento 3 de um código primário de modo que a palavra código (c) com c e {0,1} seja mapeada na palavra código (aaa)3 do código primário com a e {0,1}, palavras código tendo (d) com c / d e d e {0,1} como um prefixo e uma respectiva primeira palavra de 2 bits de um primeiro conjunto de três palavras de 2 bits como um sufixo são mapeadas em todas as três palavras código do código primário tendo exatamente um b com b^a e b e {0,1}, palavras código tendo (d) como um prefixo e uma concatenação de uma primeira palavra de 2 bits não sendo um elemento do primeiro conjunto e uma segunda palavra de 2 bits de um segundo conjunto de três palavras de 2 bits, como um sufixo são mapeadas em todas as três palavras código do código primário tendo exatamente um a, e uma palavra código tendo (d) como um prefixo e uma concatenação da primeira palavra de 2 bits não sendo um elemento do primeiro conjunto e uma segunda palavra de 2 bits não sendo um elemento do segundo conjunto, como um sufixo é mapeada na palavra código (bbb)3. A primeira palavra de 2 bits das palavras código do código primário tendo exatamente um b pode ser uma representação de 2 bits de uma localização do b na respectiva palavra código do código primário, e a segunda palavra de 2 bits das palavras código do código primário tendo exatamente um a pode ser uma representação de 2 bits de uma localização do a na respectiva palavra código do código primário. Entretanto, alternativas são praticáveis.
[000143] O decodificador predeterminado dos decodificadores de entropia pode ser um decodificador de comprimento variável configurado para mapear palavras código de comprimentos variáveis em sequências de símbolo de três símbolos cada, respectivamente, e configurado para, na conversão do fluxo de dados contínuo do respectivo decodificador de entropia nos símbolos, examinar o primeiro bit do respectivo fluxo de dados contínuo para determinar se (1) o primeiro bit do respectivo fluxo de dados contínuo é igual a c com c e {0,1}, neste caso o decodificador de entropia predeterminado é configurado para reconstruir uma sequência de símbolo que é igual a (aaa)3 com um 0 {0,1}, ou (2) o primeiro bit do respectivo fluxo de dados contínuo é igual a d com c + d e d e {0,1}, neste caso o decodificador de entropia predeterminado é configurado para determinar uma primeira palavra de 2 bits de 2 outros bits do respectivo fluxo de dados contínuo, seguindo o primeiro bit, e examinar a primeira palavra de 2 bits para determinar se (2.1) a primeira palavra de 2 bits está no elemento de um primeiro conjunto de três palavras de 2 bits, neste caso o decodificador de entropia predeterminado é configurado para reconstruir uma sequência de símbolo que tem exatamente um b com b^a e b 0 {0,1}, com a localização de b na respectiva sequência de símbolo dependendo da primeira palavra de 2 bits, ou (2.2) da primeira palavra de 2 bits é o elemento do primeiro conjunto, neste caso o decodificador de entropia predeterminado é configurado para determinar uma segunda palavra de 2 bits de 2 ainda bits do respectivo fluxo de dados contínuo, seguindo os dois bits dos quais a primeira palavra de 2 bits foi determinada, e examinar a segunda palavra de 2 bits para determinar se (3.1) a segunda palavra de 2 bits está no elemento de um segundo conjunto de três palavras de 2 bits, neste caso o decodificador de entropia predeterminado é configurado para reconstruir uma sequência de símbolo que tem exatamente um a, com a localização de a na respectiva sequência de símbolo dependendo da segunda palavra de 2 bits, ou (3.2) a segunda palavra de 2 bits é o elemento de um segundo conjunto de três palavras de 2 bits, neste caso o decodificador de entropia predeterminado é configurado para reconstruir uma sequência de símbolo que é igual a (bbb)3 .
[000144] Agora, após ter descrito o conceito geral de um esquema de codificação de vídeo, as aplicações da presente invenção são descritas com relação às aplicações acima. Em outras palavras, as aplicações descritas abaixo podem ser implementadas pelo uso de um dos esquemas acima, e vice versa, os esquemas de codificação acima podem ser implementados utilizando e explorando as aplicações descritas abaixo.
[000145] Nas aplicações descritas acima com relação à Figura 7 a 9, o codificador de entropia e decodificadores da Figura 1 a 6, foram implementados de acordo com um conceito PIPE. Uma aplicação especial utilizou co/decodificadores do estado de probabilidade único aritmético 310 e 322. Conforme será descrito abaixo, de acordo com uma aplicação alternativa, entidades 306-310 e as entidades 318 a 322 correspondentes podem ser substituídas por um motor de codificação de entropia comum. Por exemplo, um motor de codificação aritmética pode gerenciar meramente um estado comum R e L e codificar todos os símbolos em um fluxo de dados contínuo comum, assim desistindo dos aspectos vantajosos do presente conceito PIPE com relação ao processamento paralelo, mas evitando a necessidade de intercalação dos fluxos de dados contínuos parciais como discutido ainda abaixo. Fazendo isso, o número de estados de probabilidade pelo qual as probabilidades de contexto são estimadas pela atualização (tabela de visualização), pode ser mais alto do que o número de estados de probabilidade pelo qual a subdivisão do intervalo de probabilidade é realizada. Ou seja, analogamente para quantificar o valor de largura do intervalo de probabilidade antes de indexar na tabela Rtab, ainda o índice do estado de probabilidade pode ser quantificado. A descrição acima para uma possível implementação para o único co/decodificador 310 e 322 pode, assim, ser estendida para um exemplo de uma implementação da entropia co/decodificadores 318-322/306-310 como motores de co/decodificação aritmética binária adaptativa por contexto:
[000146] Para ser mais preciso, de acordo com uma aplicação, o codificador de entropia fixado à saída do atribuidor de parâmetro (que age como um atribuidor de contexto, aqui) pode operar da seguinte forma: 0. O atribuidor 304 encaminha o valor de posição com o parâmetro de probabilidade. A probabilidade é pState_current[bin]. 1. Assim, o motor da codificação de entropia recebe: 1) valLPS, 2) a posição e 3) a distribuição de estimativa de probabilidade pState_current[bin]. pState_current[bin] pode ter mais estados do que o número de índices distinguíveis do estado de probabilidade de Rtab. Se assim, pState_current[bin] pode ser quantificado como, por exemplo, abstraindo m LSBs com m sendo maior ou igual a 1 e preferivelmente 2 ou 3 para obter um p_state, ou seja, o índice que é então utilizado para acessar a tabela Rtab. A quantificação pode, entretanto, ser deixada, ou seja, p_state pode ser pState_current[bin]. 2. Então, uma quantificação de R é realizada (conforme mencionado acima: tanto um R (e L correspondente com um fluxo de dados contínuo comum) é utilizado/gerenciado para todos os valores distinguíveis de p_state, quanto um R (e L correspondente com fluxo de dados contínuo parcial associado por par de R/L) por valor distinguível de p_state cujo último caso corresponderia a ter um codificador de posição 310 por este valor) q_index = Qtab[R>>q] (ou alguma outra forma de quantificação) 3. Então, uma determinação de RLPS e R é realizada: RLPS = Rtab[p_state][q_index]; Rtab tem armazenada nela valores pré-calculados para p[p_state]-Q[q_index] R = R - RLPS [ou seja, R é preliminarmente pré- atualizado como se “posição” fosse MPS] 4. Cálculo do novo intervalo parcial: se (posição = 1 - valMPS) então L L + R R RLPS 5. Renormalização de L e R, bits de escrita, Analogamente, o decodificador de entropia fixado à saída de atribuidor de parâmetro (que age como um atribuidor de contexto, aqui) pode operar da seguinte forma: 0. O atribuidor 304 encaminha o valor de posição com o parâmetro de probabilidade. A probabilidade é pState_current[bin]. 1. Assim, o motor da decodificação de entropia recebe a solicitação para uma posição com: 1) valLPS, e 2) a distribuição de estimativa de probabilidade pState_current[bin]. pState_current[bin] pode ter mais estados do que o número de índices distinguíveis do estado de probabilidade de Rtab. Assim, pState_current[bin] pode ser quantificado como, por exemplo, abstraindo m LSBs com m sendo maior ou igual a 1 e preferivelmente 2 ou 3 para obter um p_state, ou seja, o índice que é então utilizado para acessar a tabela Rtab. A quantificação pode, entretanto, ser deixada, ou seja, p_state pode ser pState_current[bin]. 2. Então, uma quantificação de R é realizada (conforme mencionado acima: tanto um R (e V correspondente com um fluxo de dados contínuo comum) é utilizado/gerenciado para todos os valores distinguíveis de p_state, quanto um R (e V correspondente com fluxo de dados contínuo parcial associado por par de R/L) por valor distinguível de p_state cujo último caso corresponderia a ter um codificador de posição 310 por tal valor) q_index = Qtab[R>>q] (ou alguma outra forma de quantificação) 3. Então, uma determinação de RLPS e R é realizada: RLPS = Rtab[p_state][q_index]; Rtab tem armazenado nela valores pré-calculados para p[p_state]-Q[q_index] R = R - RLPS [ou seja, R é preliminarmente pré- atualizado como se a “posição” fosse MPS] 4. Determinação de posição dependendo da localização do intervalo parcial: se (V 3 R) então posição 1 - valMPS (posição é decodificada como LPS; seletor do buffer de posição 18 obterá o valor de posição real por uso desta informação de posição e valMPS) V V - R R RLPS ainda posição valMPS (posição é decodificada como MPS; o valor de posição real é obtido pelo uso desta informação de posição e valMPS) 5. Renormalização de R, lendo um bit e atualizando V,
[000147] Conforme descrito acima, o atribuidor 4 atribui pState_current[bin] a cada posição. A associação pode ser feita com base em uma seleção de contexto. Ou seja, o atribuidor 4 pode selecionar um contexto utilizando um índice de contexto ctxIdx que, por sua vez, tem um respectivo pState_current associado a ele. Uma atualização da probabilidade pode ser realizada toda vez que uma probabilidade pState_current[bin] foi aplicada a uma posição atual. Uma atualização do estado de probabilidade pState_current[bin] é realizada dependendo do valor do bit codificado: se (bit = 1 - valMPS), então pState_current ^ Next_State_LPS [pState_current] se (pState_current = 0), então valMPS ^ 1 - valMPS outro pState_current ^ Next_State_MPS [pState_current]
[000148] Se mais do que um contexto for fornecido, a adaptação é feita por modo de contexto, ou seja, pState_current[ctxIdx] é utilizado para codificar e então atualizado utilizando o valor atual da posição (codificado ou decodificado, respectivamente).
[000149] Conforme será descrito em mais detalhes abaixo, de acordo com as aplicações descritas agora, o codificador e o decodificador podem opcionalmente ser implementados para operar em diferentes modos, a saber, modo de Baixa complexidade (LC), e modo de Alta eficiência (HE). Isso é ilustrado primeiramente com relação à codificação PIPE a seguir (então mencionando os modos LC e HE PIPE), mas a descrição dos detalhes da escalabilidade de complexidade é facilmente transferível a outras implementações do motor de codificação/decodificação de entropia como a aplicação utilizando um co/decodificador aritmético adaptativo por contexto comum.
[000150] De acordo com as aplicações descritas abaixo, ambos os modos de codificação de entropia podem compartilhar:
[000151] a mesma sintaxe e semântica (para a sequência do elemento de sintaxe 301 e 327, respectivamente)
[000152] os mesmos esquemas de binarização para todos os elementos de sintaxe (como atualmente especificado para CABAC) (ou seja, binarizadores podem operar independente do modo ativado)
[000153] o uso dos mesmos códigos PIPE (ou seja, co/decodificadores de posição podem operar independentemente do modo ativado)
[000154] o uso dos valores de inicialização do modelo de probabilidade de 8 bits (ao invés dos valores de inicialização de 16 bits como atualmente especificado para CABAC)
[000155] De forma geral falando, LC-PIPE difere de HE-PIPE na complexidade de processamento, como a complexidade de selecionar a passagem de PIPE 312 para cada posição.
[000156] Por exemplo, o modo LC pode operar nas seguintes restrições: para cada posição (binIdx), pode haver exatamente um modelo de probabilidade, ou seja, um ctxIdx. Ou seja, nenhuma seleção de contexto/adaptação pode ser fornecida em LC PIPE. Elementos de sintaxe específicos como os utilizados para codificação residual podem, atravessar, codificados utilizando contextos, conforme ainda descrito abaixo. Além disso, todos os modelos de probabilidade podem ser não adaptativos, ou seja, todos os modelos podem ser inicializados no início de cada parte com probabilidades do modelo apropriado (dependendo da escolha do tipo de parte e parte QP) e podem ser mantidos fixos por todo o processamento da parte. Por exemplo, apenas 8 diferentes probabilidades do modelo correspondentes a 8 diferentes códigos PIPE 310/322 podem ser suportados, ambos para o modelo de contextualização e codificação. Elementos de sintaxe específicos para a codificação residual, ou seja, significance_coeff_flag e coeff_abs_level_greaterX (com X=1,2), a semântica da qual são descritos em mais detalhes abaixo, podem ser atribuídos aos modelos de probabilidade de modo que (pelo menos) grupos de, por exemplo, 4 elementos de sintaxe sejam codificado/decodificado com a mesma probabilidade de modelo. Comparado a CAVLC, o modo LC-PIPE atinge aproximadamente a mesma realização R-D e a mesma produtividade.
[000157] O HE-PIPE pode ser configurado para ser conceitualmente semelhante a CABAC de H.264 com as seguintes diferenças: Codificação aritmética binária (BAC) é substituída pela codificação PIPE (o mesmo que no caso LC-PIPE). Cada modelo de probabilidade, ou seja, cada ctxIdx, pode ser representado por um pipeIdx e um refineIdx, onde pipeIdx com valores em uma faixa de 0...7 representa a probabilidade de modelo de 8 códigos PIPE diferentes. Esta mudança afeta apenas a representação interna dos estados, não o comportamento da própria máquina do estado (ou seja, estimativa de probabilidade). Como será descrito em mais detalhes abaixo, a inicialização dos modelos de probabilidade pode utilizar valores de inicialização de 8 bits conforme estabelecido acima. A varredura regressiva dos elementos de sintaxe coeff_abs_level_greaterX (com X = 1, 2), coeff_abs_level_minus3, e coeff_sign_flag (a semântica da qual ficará clara discussão abaixo) pode ser realizada ao longo da mesma passagem de varredura que a varredura de avanço (utilizada, por exemplo, no mapa da codificação de significância). A derivação do contexto para codificação de coeff_abs_level_greaterX (com X = 1, 2) pode ainda ser simplificada. Comparado a CABAC, o HE-PIPE proposto atinge aproximadamente a mesma realização de R-D em uma melhor produtividade.
[000158] É fácil ver que os modos mencionados agora são prontamente gerados pela interpretação, por exemplo, do motor de co/decodificação aritmética adaptativa por contexto previamente mencionado de modo que o mesmo opera em diferentes modos.
[000159] Assim, de acordo com uma aplicação de acordo com um primeiro aspecto da presente invenção, um decodificador para decodificar um fluxo de dados pode ser construído conforme mostrado na Figura 11. O decodificador é para decodificar um fluxo de dados 401, como fluxo de dados contínuo intercalado 340, no qual os dados de mídia, como dados de vídeo, são codificados. O decodificador compreende uma comutação do modo 400 configurada para ativar o modo de baixa complexidade ou o modo de alta eficiência dependendo do fluxo de dados 401. Para esta finalidade, o fluxo de dados 401 pode compreender um elemento de sintaxe como um elemento de sintaxe binário, tendo um valor binário de 1 no caso do modo de baixa complexidade ser um para ser ativado, e ter um valor binário de 0 no caso do modo de alta eficiência ser um para ser ativado. Obviamente, a associação entre o valor binário e o modo de codificação poderia ser comutada, e um elemento de sintaxe não binário ter mais do que dois possíveis valores poderia ser utilizado também. Como a seleção real entre ambos os modos ainda não é clara antes da recepção do respectivo elemento de sintaxe, este elemento de sintaxe pode ser contido dentro de algum cabeçalho do fluxo de dados 401 codificado, por exemplo, com uma estimativa de probabilidade fixa ou modelo de probabilidade ou sendo escrita no fluxo de dados 401 como é, ou seja, utilizando um modo de derivação.
[000160] Ainda, o decodificador da Figura 11 compreende uma pluralidade de decodificadores de entropia 322 cada um sendo configurado para converter palavras código no fluxo de dados 401 em sequências parciais 321 de símbolos. Conforme descrito acima, um de-intercalador 404 pode ser conectado entre entradas de decodificadores de entropia 322 por um lado e a entrada do decodificador da Figura 11 onde o fluxo de dados 401 é aplicado, por outro lado. Ainda, como já descrito acima, cada um dos decodificadores de entropia 322 pode ser associado com um respectivo intervalo de probabilidade, os intervalos de probabilidade de vários decodificadores de entropia juntos cobrindo todo o intervalo de probabilidade de 0 a 1 - ou 0 a 0,5 no caso de decodificadores de entropia 322 lidando com MPS e LPS ao invés de valores absolutos de símbolo. Detalhes referentes a esta questão foram descritos acima. Posteriormente, é assumido que o número de decodificadores 322 é 8 com um índice pipe sendo atribuído a cada decodificador, mas qualquer outro número é ainda praticável. Ainda, um destes codificadores, a seguir este é exemplarmente um tendo pipe_id 0, é otimizado para as posições tendo estatísticas equiprováveis, ou seja, seu valor de posição assume 1 e 0 igualmente provável. Este decodificador pode meramente passar na posições. O respectivo codificador 310 opera o mesmo. Mesmo qualquer manipulação de posição dependendo do valor do valor de posição mais provável, valMPS, pelos seletores 402 e 502, respectivamente, pode ser deixado. Em outras palavras, a entropia do respectivo fluxo parcial já é ótima.
[000161] Ainda, o decodificador da Figura 11 compreende um seletor 402 configurado para recuperar cada símbolo de uma sequência 326 de símbolos de um selecionado da pluralidade de decodificadores de entropia 322. Conforme mencionado acima, o seletor 402 pode ser dividido em um atribuidor de parâmetro 316 e um seletor 318. Um dessimbolizador 314 é configurado para dessimbolizar a sequência 326 de símbolos para obter uma sequência 327 de elementos de sintaxe. Um reconstrutor 404 é configurado para reconstruir os dados de mídia 405 com base na sequência de elementos de sintaxe 327. O seletor 402 é configurado para realizar a seleção dependendo do ativado do modo de baixa complexidade e do modo de alta eficiência como é indicado pela seta 406.
[000162] Conforme já observado acima, o reconstrutor 404 pode ser a parte de um decodificador de vídeo com base no bloco preditivo operando em uma sintaxe e semântica fixa de elementos de sintaxe, ou seja, fixa com relação à seleção do modo pela comutação do modo 400. Ou seja, a construção do reconstrutor 404 não sofre da comutação do modo. Para ser mais preciso, o reconstrutor 404 não aumenta a implementação suspensa devido à comutação do modo oferecida pela comutação do modo 400 e pelo menos a funcionalidade com relação aos dados residuais e os dados de previsão permanecem os mesmos independente do modo selecionado pela comutação 400. O mesmo se aplica, entretanto, com relação aos decodificadores de entropia 322. Todos estes decodificadores 322 são reutilizados em ambos os modos e, certamente, não há implementação adicional suspensa embora o decodificador da Figura 11 seja compatível com ambos os modos, o modo de baixa complexidade e o modo de alta eficiência.
[000163] Como um aspecto colateral, deve ser observado que o decodificador da Figura 11 não é apenas capaz de operar em fluxos de dados independentes quer em um modo como no outro modo. Ainda, o decodificador da Figura 11, bem como o fluxo de dados 401, poderia ser configurado de modo que a comutação entre ambos os modos seria ainda possível durante uma parte dos dados de mídia, tal como durante um vídeo ou alguma parte do áudio, por exemplo, para controlar a complexidade da codificação no lado da decodificação dependendo das condições externas ou ambientais, como um status de bateria ou semelhante, utilizando um canal de retroalimentação do decodificador no codificador para bloquear o controle da seleção do modo.
[000164] Assim, o decodificador da Figura 11 opera semelhantemente em ambos os casos, no caso do modo LC sendo selecionado ou do modo HE sendo selecionado. O reconstrutor 404 realiza a reconstrução utilizando os elementos de sintaxe e solicita o elemento de sintaxe atual de um tipo de elemento de sintaxe predeterminado pelo processamento ou obedecendo alguma prescrição da estrutura da sintaxe. O dessimbolizador 314 solicita um número de posições para produzir uma binarização válida para o elemento de sintaxe solicitado pelo reconstrutor 404. Obviamente, no caso de um alfabeto binário, a binarização realizada pelo dessimbolizador 314 reduz meramente passando a respectiva posição/símbolo 326 ao reconstrutor 404 como elemento de sintaxe binário atualmente solicitado.
[000165] O seletor 402, entretanto, age independentemente no modo selecionado pela comutação do modo 400. O modo de operação do seletor 402 tende a ser mais complexo no caso do modo de alta eficiência, e menos complexo no caso do modo de baixa complexidade. Além disso, a seguinte discussão mostrará que o modo de operação do seletor 402 no modo menos complexo ainda tende a reduzir a taxa na qual o seletor 402 muda a seleção entre os decodificadores de entropia 322 ao recuperar os símbolos consecutivos dos decodificadores de entropia 322. Em outras palavras, no modo de baixa complexidade, há uma probabilidade aumentada que imediatamente os símbolos consecutivos são recuperados do mesmo decodificador de entropia entre a pluralidade de decodificadores de entropia 322. Isso, por sua vez, permite uma rápida recuperação dos símbolos dos decodificadores de entropia 322. No modo de alta eficiência, por sua vez, o modo de operação do seletor 402 tende a levar a uma seleção entre os decodificadores de entropia 322 onde o intervalo de probabilidade associado ao respectivo decodificador de entropia 322 selecionado mais proximamente encaixa nas estatísticas de símbolo real do símbolo atualmente recuperado pelo seletor 402, assim produzindo um melhor índice de comparação no lado da codificação ao gerar o respectivo fluxo de dados de acordo com o modo de alta eficiência.
[000166] Por exemplo, o comportamento diferente do selector 402 em ambos os modos pode ser realizado conforme segue. Por exemplo, o seletor 402 pode ser configurado para realizar, para um predeterminado símbolo, a seleção entre a pluralidade de decodificadores de entropia 322 dependendo dos símbolos da sequência previamente recuperados 326 dos símbolos no caso do modo de alta eficiência ser ativado e independente de quaisquer símbolos da sequência previamente recuperado dos símbolos no caso do modo de baixa complexidade sendo ativado. A dependência dos símbolos da sequência previamente recuperados 326 de símbolos pode resultar de uma adaptatividade de contexto e/ou uma adaptatividade de probabilidade. Ambas as adaptatividades podem ser comutadas durante o modo de baixa complexidade no seletor 402.
[000167] De acordo com outra aplicação, o fluxo de dados 401 pode ser estruturado em partes consecutivas como partes, estruturas, grupos de figuras, sequências da estrutura ou semelhante, e cada símbolo da sequência de símbolo pode ser associado a um respectivo de uma pluralidade de tipos de símbolo. Neste caso, o seletor 402 pode ser configurado para variar, para os símbolos de um tipo de símbolo predeterminado dentro de uma parte atual, a seleção dependendo dos símbolos da sequência previamente recuperados de símbolos do tipo de símbolo predeterminado dentro da parte atual no caso do modo de alta eficiência ser ativado, e deixar a seleção constante dentro da parte atual no caso do modo de baixa complexidade ser ativado. Ou seja, seletor 402 pode ser permitido mudar a seleção entre os decodificadores de entropia 322 para o tipo de símbolo predeterminado, mas estas mudanças são restritas para ocorrer entre as transições entre as partes consecutivas. Por esta medição, as avaliações de estatísticas de símbolo real são restritas a raramente ocorrer enquanto a complexidade da codificação é reduzida dentro da maior parte do tempo.
[000168] Ainda, cada símbolo da sequência 326 de símbolos pode ser associado a um respectivo de uma pluralidade de tipos de símbolo, e o seletor 402 pode ser configurado para, para um símbolo predeterminado de um tipo de símbolo predeterminado, selecionar um de uma pluralidade de contextos dependendo dos símbolos da sequência previamente recuperados 326 de símbolos e realizar a seleção entre os decodificadores de entropia 322 dependendo de um modelo de probabilidade associado a um contexto selecionado atualizando o modelo de probabilidade associado a um contexto selecionado dependendo do símbolo predeterminado no caso do modo de alta eficiência ser ativado, e realizar a seleção de um da pluralidade de contexto dependendo dos símbolos da sequência previamente recuperados 326 dos símbolos e realizar a seleção entre os decodificadores de entropia 322 dependendo do modelo de probabilidade associado ao contexto selecionado deixando o modelo de probabilidade associado ao contexto selecionado constante no caso do modo de baixa complexidade ser ativado. Ou seja, o seletor 402 pode utilizar a adaptatividade de contexto com relação a um determinado tipo de elemento de sintaxe em ambos os modos, enquanto suprime a adaptação de probabilidade no caso do modo LC.
[000169] Alternativamente, ao invés de suprimir completamente a adaptação de probabilidade, o seletor 402 pode meramente reduzir a atualização da taxa da adaptação de probabilidade do modo LC com relação ao modo HE.
[000170] Ainda, possíveis aspectos específicos de pipe LC, ou seja, aspectos do modo LC, poderiam ser descritos como segue em outras palavras. Em particular, modelos de probabilidade não adaptativos poderiam ser utilizados no modo LC. Um modelo de probabilidade não adaptativo pode tanto ter um codificado, ou seja, toda a probabilidade constante ou sua probabilidade é mantida fixa em todo o processamento de uma parte apenas e assim pode ser definido dependente do tipo de parte e QP, ou seja, o parâmetro de quantificação que é, por exemplo, sinalizado dentro do fluxo de dados 401 para cada parte. Assumindo que posições sucessivas atribuídas ao mesmo contexto seguem um modelo de probabilidade fixo, é possível decodificar as várias posições em uma etapa que elas são codificadas utilizando o mesmo código pipe, ou seja, utilizando o mesmo decodificador de entropia, e uma atualização da probabilidade após cada posição decodificada ser omitida. Omitir as atualizações de probabilidade economiza operações durante o processo de codificação e decodificação e, assim, ainda leva à reduções de complexidade e uma simplificação significativa no desenho do hardware.
[000171] A restrição não adaptativa pode ser facilitada para todos ou alguns modelos de probabilidade selecionados de modo que as atualizações da probabilidade sejam permitidas após um determinado número de posições serem codificado/decodificado utilizando este modelo. Um intervalo de atualização apropriado permite uma adaptação de probabilidade enquanto tem a capacidade de decodificar as várias posições de uma vez.
[000172] A seguir, uma descrição mais detalhada de possíveis aspectos escaláveis por complexidade e comuns de LC-pipe e HE-pipe é apresentada. Em particular, a seguir, os aspectos são descritos podendo ser utilizados para o modo LC-pipe e o modo HE- pipe da mesma forma ou de forma escalável por complexidade. Escalável por complexidade significa que o caso de LC é derivado do caso HE pela remoção de partes particulares ou substituindo=as com algo menos complexo. Entretanto, antes de proceder com elas, deve ser mencionado que a aplicação da Figura 11 é facilmente transferível na aplicação de co/decodificação aritmética adaptativa por contexto mencionado acima: seletor 402 e decodificadores de entropia 322 condensariam em um decodificador aritmético binário adaptativo por contexto que receberia o fluxo de dados 401 diretamente e selecionaria o contexto para uma posição atualmente a ser derivada do fluxo de dados. Isso é especialmente verdadeiro para a adaptatividade de contexto e/ou adaptatividade de probabilidade. Ambas as funcionalidades/adaptatividades podem ser comutadas, ou desenhadas mais relaxadas, durante o modo de baixa complexidade.
[000173] Por exemplo, ao implementar a aplicação da Figura 11, o estágio de codificação de entropia pipe que envolve os decodificadores de entropia 322 poderia utilizar oito códigos sistemáticos variáveis para variáveis, ou seja, cada decodificador de entropia 322 poderia ser de um tipo v2v que foi descrito acima. O conceito de codificação PIPE utilizando códigos-v2v sistemáticos é simplificado para restringir o número de códigos-v2v. No caso de um decodificador aritmético binário adaptativo por contexto, o mesmo poderia gerenciar os mesmos estados de probabilidade para os diferentes contextos e utilizar o mesmo - ou uma versão quantificada deste - para uma subdivisão de probabilidade. O mapeamento de CABAC ou estados do modelo de probabilidade, ou seja, os estados utilizados para atualização da probabilidade, para ids PIPE ou índices de probabilidade para visualização em Rtab pode ser conforme descrito na Tabela A.
Figure img0009
[000174] Tabela A: Mapeamento dos estados CABAC para índices PIPE
[000175] Este esquema de codificação modificado pode ser utilizado como uma base para a abordagem da codificação de vídeo escalável por complexidade. Ao realizar a adaptação do modo de probabilidade, o seletor 402 ou decodificador aritmético binário adaptativo por contexto, respectivamente, selecionaria o decodificador PIPE 322, ou seja, derivaria o índice pipe, para ser utilizado, e o índice de probabilidade em Rtab, respectivamente, com base no índice do estado de probabilidade - aqui exemplarmente variando de 0 a 62 - associados com o símbolo atualmente a ser decodificado - como através de um contexto - utilizando o mapeamento mostrado na Tabela A, e atualizaria este índice do estado de probabilidade dependendo do símbolo atualmente decodificado utilizando, por exemplo, valores de transição específicos da tabela específica que indicam ao próximo índice do estado de probabilidade para ser visitado no caso de um MPS e a LPS, respectivamente. No caso do modo LC, a última atualização poderia ser deixada longe. Mesmo o mapeamento poderia ser deixado no caso de modelos de probabilidade globalmente fixos.
[000176] Entretanto, uma configuração da codificação de entropia arbitrária poderia ser utilizada e as técnicas neste documento podem ainda ser utilizadas com adaptações menores.
[000177] A descrição acima da Figura 11 geralmente referida aos elementos de sintaxe e tipos de elemento de sintaxe. A seguir, uma codificação configurável de complexidade dos níveis do coeficiente de transformação é descrita.
[000178] Por exemplo, o reconstrutor 404 pode ser configurado para reconstruir um bloco de transformação 200 de níveis do coeficiente de transformação 202 com base em uma parte da sequência de elementos de sintaxe independentemente do modo de alta eficiência ou do modo de baixa complexidade sendo ativado, a parte da sequência 327 de elementos de sintaxe compreendendo, em uma forma não intercalada, os elementos de sintaxe do mapa de significância que definem um mapa de significância indicando as posições de níveis do coeficiente de transformação não zero dentro do bloco de transformação 200, e então (seguido pelos) elementos de sintaxe do nível que definem os níveis do coeficiente de transformação não zero. Em particular, os seguintes elementos podem estar envolvidos: elementos de sintaxe da localização final (last_significant_pos_x, last_significant_pos_y) indicando uma localização de um último nível do coeficiente de transformação não zero dentro do bloco de transformação; primeiros elementos de sintaxe (coeff_significant_flag) juntos definindo um mapa de significância e indicando, para cada localização ao longo de uma passagem unidirecional (274) levando de uma localização DC à localização do último nível do coeficiente de transformação não zero dentro do bloco de transformação (200), se o nível do coeficiente de transformação na respectiva localização for nonzero ou não; segundos elementos de sintaxe (coeff_abs_maior1) indicando, para cada localização da passagem unidirecional (274) onde, de acordo com os primeiros elementos de sintaxe binários, um nível do coeficiente de transformação não zero é localizado, se o nível do coeficiente de transformação na respectiva localização for maior do que um; e os terceiros elementos de sintaxe (coeff_abs_maior2, coeff_abs_minus3) que revelam, para cada localização da passagem unidirecional onde, de acordo com os primeiros elementos de sintaxe binários, um nível do coeficiente de transformação maior do que um é localizado, uma quantidade pela qual o respectivo nível do coeficiente de transformação na respectiva localização excede um.
[000179] A ordem entre os elementos de sintaxe da localização final, os primeiros, os segundos e os terceiros elementos de sintaxe podem ser os mesmos para o modo de alta eficiência e o modo de baixa complexidade, e o seletor 402 pode ser configurado para realizar a seleção entre os decodificadores de entropia 322 para os símbolos dos quais o dessimbolizador 314 obtém os elementos de sintaxe da localização final, os primeiros elementos de sintaxe, segundos elementos de sintaxe e/ou os terceiros elementos de sintaxe, diferentemente dependendo do modo de baixa complexidade ou do modo de alta eficiência sendo ativado.
[000180] Em particular, o seletor 402 pode ser configurado, para símbolos de um tipo de símbolo predeterminado entre uma subsequência de símbolos da qual o dessimbolizador 314 obtém os primeiros elementos de sintaxe e os segundos elementos de sintaxe, para selecionar em cada símbolo do tipo de símbolo predeterminado um de uma pluralidade de contextos dependendo dos símbolos previamente recuperados do tipo de símbolo predeterminado entre a subsequência de símbolos e realizar a seleção dependendo de um modelo de probabilidade associado ao contexto selecionado no caso do modo de alta eficiência ser ativado, e realizar a seleção de forma constante sensata de modo que a seleção seja constante sobre as subpartes contínuas consecutivas da subsequência no caso do modo de baixa complexidade ser ativado. Conforme descrito acima, as subpartes podem ser medidas no número de posições sobre o qual a respectiva subparte se estende quando medida ao longo da passagem unidirecional 274, ou no número de elementos de sintaxe do respectivo tipo já codificado com o contexto atual. Ou seja, os elementos de sintaxe binários coeff_significant_flag, coeff_abs_greater1 e coeff_abs_greater2, por exemplo, são codificados adaptativamente por contexto selecionando o decodificador 322 com base no modelo de probabilidade do contexto selecionado no modo HE. A adaptação de probabilidade é utilizada também. No modo LC, há ainda diferentes contextos que são utilizados para cada um dos elementos de sintaxe binários coeff_significant_flag, coeff_abs_greater1 e coeff_abs_greater2. Entretanto, para cada um destes elementos de sintaxe, o contexto é mantido estático para a primeira parte ao longo da passagem 274 mudando o contexto meramente em uma transição para a próxima, imediatamente seguindo a parte ao longo da passagem 274. Por exemplo, cada parte pode ser definida como extensão de 4, 8, 16 posições do bloco 200, independente se para a respectiva localização o respectivo elemento de sintaxe está presente ou não. Por exemplo, coeff_abs_greater1 e coeff_abs_greater2 são meramente presentes para posições significativas, ou seja, posições onde - ou na qual - coeff_significant_flag é 1. Alternativamente, cada parte pode ser definida como extensão de 4, 8, 16 elementos de sintaxe, independente se para a respectiva parte resultante se estende sobre um número de posições de bloco mais alto. Por exemplo, coeff_abs_greater1 e coeff_abs_greater2 estão meramente presentes para posições significativas, e, assim, as partes de quatro elementos de sintaxe podem se estender sobre mais do que 4 posições do bloco devido a posições entre elas pela passagem 274 na qual nenhum elemento de sintaxe é transmitido como no coeff_abs_greater1 e coeff_abs_greater2, pois o respectivo nível nesta localização é zero.
[000181] O seletor 402 pode ser configurado para, para os símbolos do tipo de símbolo predeterminado entre a subsequência de símbolos da qual o dessimbolizador obtém os primeiros elementos de sintaxe e segundos elementos de sintaxe, selecionar para cada símbolo do tipo de símbolo predeterminado de um de uma pluralidade de contextos dependendo de um número de símbolos previamente recuperados do tipo de símbolo predeterminado dentro da subsequência de símbolos, que têm um valor do símbolo predeterminado e pertence à mesma subparte, ou um número de símbolos previamente recuperados do tipo de símbolo predeterminado dentro da sequência de símbolos, que pertence à mesma subparte. A primeira alternativa foi verdadeira para coeff_abs_greater1 e a alternativa secundária tem que ser verdadeira para coeff_abs_greater2 de acordo com as aplicações específicas acima.
[000182] Ainda, os terceiros elementos de sintaxe que revelam, para cada localização da passagem unidirecional onde, de acordo com os primeiros elementos de sintaxe binários, um nível do coeficiente de transformação maior do que um é localizado, uma quantidade pela qual o respectivo nível do coeficiente de transformação na respectiva localização excede um, pode compreender elementos de sintaxe com valor de número inteiro, ou seja, coeff_abs_minus3, e o dessimbolizador 314 podem ser configurados para utilizar uma função de mapeamento controlável por um parâmetro de controle para mapear um domínio de palavras de sequência de símbolo em um codomínio dos elementos de sintaxe com valor de número inteiro, e para definir o parâmetro de controle por elemento de sintaxe com valor de número inteiro dependendo dos elementos de sintaxe com valor de número inteiro dos terceiros elementos de sintaxe anteriores se o modo de alta eficiência for ativado, e realizar o ajuste de forma constante de modo que o ajuste seja constante sobre as subpartes contínuas consecutivas da subsequência no caso do modo de baixa complexidade ser ativado, caracterizado pelo seletor 402 poder ser configurado para selecionar um predeterminado dos decodificadores de entropia (322) para os símbolos de palavras de sequência de símbolo mapeadas nos elementos de sintaxe com valor de número inteiro, que é associado a uma distribuição de probabilidade igual, em ambos os modos de alta eficiência e de baixa complexidade. Ou seja, mesmo que o dessimbolizador possa operar dependente do modo selecionado a comutação 400 é ilustrada pela linha pontilhada 407. Ao invés de um ajuste constante o parâmetro de controle, o dessimbolizador 314 pode manter o parâmetro de controle constante durante a parte atual, por exemplo, ou constante globalmente no tempo.
[000183] A seguir, um modelo de contexto escalável por complexidade é descrito.
[000184] A avaliação do mesmo elemento de sintaxe da proximidade superior e esquerda para a derivação do modelo de índice de contexto é uma abordagem comum e é geralmente utilizada no caso de HE, por exemplo, para a diferença do elemento de sintaxe do vetor de movimento. Entretanto, esta avaliação requer armazenamento de mais buffer e não permite a codificação direta do elemento de sintaxe. Ainda, para atingir a realização de codificação mais alta, mais proximidades disponíveis podem ser avaliadas.
[000185] Em uma aplicação preferida, todo o estágio do modelo de contexto que avalia os elementos de sintaxe de blocos retângulos ou quadrados próximos ou unidades de previsão são fixos a um modelo de contexto. Isso é igual à desativação da adaptatividade no estágio da seleção do modelo de contexto. Para a aplicação preferida, a seleção do modelo de contexto dependendo do índice de posição da série da posição após uma binarização não ser modificada comparada ao desenho atual para CABAC. Em outra aplicação preferida, adicional ao modelo de contexto fixo para elementos de sintaxe empregam a avaliação de proximidades, ainda o modelo de contexto para os diferentes índices de posição são fixados. Observe que a descrição não inclui a binarização e seleção do modelo de contexto para a diferença do vetor de movimento e os elementos de sintaxe relacionados à codificação dos níveis do coeficiente de transformação.
[000186] Em uma aplicação preferida, apenas a avaliação da proximidade esquerda é permitida. Isso leva à redução do buffer na cadeia de processamento, pois o último bloco ou linha da unidade de codificação não deve ser mais armazenado. Em outra aplicação preferida, apenas proximidades na mesma unidade de codificação são avaliadas.
[000187] Em uma aplicação preferida, todas as proximidades disponíveis são avaliadas. Por exemplo, além da proximidade superior e esquerda, as proximidades esquerda superior, direita superior e esquerda inferior são avaliadas quanto à disponibilidade.
[000188] Ou seja, o seletor 402 da Figura 11 pode ser configurado para utilizar, para um símbolo predeterminado referente a um bloco predeterminado dos dados de mídia, símbolos da sequência previamente recuperados de símbolos referentes a um número mais alto de diferentes blocos próximos dos dados de mídia no caso do modo de alta eficiência ser ativado para selecionar um de uma pluralidade de contextos e realizar a seleção entre os decodificadores de entropia 322 dependendo de um modelo de probabilidade associado ao contexto selecionado. Ou seja, os blocos próximos podem aproximar em períodos e/ou domínio espacial. Os blocos espacialmente próximos são visíveis, por exemplo, nas Figuras 1 a 3. Então, o seletor 402 pode ser responsivo à seleção do modo pela comutação do modo 400 para realizar uma adaptação de contato com base nos símbolos previamente recuperados ou elementos de sintaxe referentes a um número mais alto de blocos próximos no caso do modo HE comparado ao modo LC assim reduzindo o armazenamento suspenso conforme descrito.
[000189] A seguir, uma codificação de complexidade reduzida das diferenças do vetor de movimento de acordo com uma aplicação é descrita.
[000190] No padrão do codec de vídeo H.264/AVC, um vetor de movimento associado a um macrobloco é transmitido pela sinalização da diferença (diferença do vetor de movimento | motion vector difference - mvd) entre o vetor de movimento do macrobloco atual e o indicador do vetor de movimento médio. Quando o CABAC é utilizado como codificador de entropia, o mvd é codificado como segue. O valor de número inteiro mvd é dividido em uma parte absoluta e parte do sinal. A parte absoluta é binarizada utilizando uma combinação de unária truncada e Exp-Golomb de 3a ordem, referida como o prefixo e o sufixo da série da posição resultante. As posições relacionadas à binarização unária truncada são codificadas utilizando modelo de contextos, enquanto as posições relacionadas à binarização Exp-Golomb são codificadas em um modo de derivação, ou seja, com uma probabilidade fixa de 0,5 com CABAC. A binarização unária opera como segue. Deixe o valor de número inteiro absoluto de mvd ser n , então a série da posição resultante consiste emn vezes ’1’ e uma pista ’0’. Como um exemplo, deixe n = 4 , então a série da posição ser ‘11110’. No caso de unário truncado, um limite existe e se o valor exceder este limite, a série da posição consiste emn + 1 vezes ’1’. Para o caso de mvd, o limite é igual a 9. Isso significa que um mvd absoluto igual ou maior do que 9 é codificado, resultando em 9 vezes ’1’, a série da posição consiste em um prefixo e um sufixo com binarização Exp-Golomb. O modelo de contexto para a parte unária truncada é feito como segue. Para a primeira posição da série da posição, os valores absolutos de mvd dos macroblocos próximos superior e esquerdo são considerados se disponíveis (se não disponíveis, o valor é deduzido como 0). Se a soma para o componente específico (horizontal ou direção vertical) for maior do que 2, o segundo modelo de contexto é selecionado, se a soma absoluta for maior do que 32, o terceiro modelo de contexto é selecionado, caso contrário (a soma absoluta é menor do que 3) o primeiro modelo de contexto é selecionado. Além disso, os modelos de contexto são diferentes para cada componente. Para a segunda posição da série da posição, o quarto modelo de contexto é utilizado e o quinto modelo de contexto é empregado para as posições restantes da parte unária. Quando o mvd absoluto é igual ou maior do que 9, por exemplo, todas as posições da parte unária truncada são iguais a ’1’, a diferença entre o valor mvd absoluto e 9 é codificado em um modo de derivação com binarização Exp- Golomb de 3a ordem. Na última etapa, o sinal de mvd é codificado em um modo de derivação.
[000191] A última codificação técnica para o mvd ao utilizar o CABAC como codificador de entropia é especificada no Modelo de Teste atual (HM) do projeto de Codificação de vídeo de Alta eficiência (HEVC | High Efficiency Video Coding). No HEVC, o tamanho dos blocos são variáveis e a forma especificada por um vetor de movimento é referida como a unidade de previsão (PU | prediction unit). O tamanho da PU do próximo superior e esquerdo pode ter outras formas e tamanhos que da PU atual. Desta forma, sempre que relevante, a definição do próximo superior e esquerdo é referida agora como próximo superior e esquerdo do canto superior esquerdo da PU atual. Para a própria codificação, apenas o processo de derivação para a primeira posição pode ser mudado de acordo com uma aplicação. Ao invés de avaliar a soma absoluta de MV dos próximos, cada próximo pode ser avaliado separadamente. Se o MV absoluto de um próximo estiver disponível e for maior do que 16, o modelo de índice de contexto pode ser aumentado resultando no mesmo número de modelos de contexto para a primeira posição, enquanto a codificação do nível de MVD absoluto restante e o sinal é exatamente o mesmo como em H.264/AVC.
[000192] Além da técnica descrita acima sobre a codificação de mvd, até 9 posições devem ser codificadas com um modelo de contexto, enquanto o valor restante de um mvd pode ser codificado em um modo de derivação de baixa complexidade junto com a informação de sinal. Esta presente aplicação descreve uma técnica para reduzir o número de posições codificadas com os modelos de contexto resultando no número elevado de derivação e reduz o número de modelos de contexto necessários para a codificação de mvd. Para isso, o valor de corte é reduzido de 9 a 1 ou 2. Isso significa apenas a primeira posição especificando se o mvd absoluto é maior do que zero será codificado utilizando o modelo de contexto ou a primeira e a segunda posição especificando se o mvd absoluto é maior do que zero e um é codificado utilizando o modelo de contexto, enquanto o valor restante é codificado no modo de derivação e/ou utilizando um código VLC. Todas as posições resultantes da binarização utilizando o código VLC - não utilizando o código unário ou unário truncado - são codificadas utilizando um modo de derivação de baixa complexidade. No caso de PIPE, uma inserção direta no fluxo de dados contínuo é possível. Além disso, uma diferente definição do próximo superior e esquerdo para derivar a melhor seleção do modelo de contexto para a primeira posição, pode ser utilizada, se houver.
[000193] Em uma aplicação preferida, códigos Exp-Golomb são utilizados para binarizar a parte restante dos componentes MVD absolutos. Para isso, a ordem do código Exp-Golomb é variável. A ordem do código Exp-Golomb é derivada como segue. Após o modelo de contexto para a primeira posição, e desta forma o índice deste modelo de contexto, ser derivado e codificado, o índice é utilizado como uma ordem para a parte de binarização Exp-Golomb. Nesta aplicação preferida, o modelo de contexto para a primeira posição varia de 1 - 3 resultando no índice 0 - 2, que é utilizado como uma ordem do código Exp-Golomb. Esta aplicação preferida pode ser utilizada para o caso de HE.
[000194] Em uma alternativa à técnica descrita acima sobre utilizar duas vezes cinco contextos na codificação do MVD absoluto, para codificar as 9 posições de binarização do código unário, 14 modelos de contexto (7 para cada componente) poderia ser utilizado também. Por exemplo, enquanto a primeira e a segunda posição da parte unária poderiam ser codificadas com quatro diferentes contextos conforme descrito anteriormente, um quinto contexto poderia ser utilizado para a terceira posição e um sexto contexto poderia ser utilizado com relação à quarta posição, enquanto da quinta à nona posições são codificadas utilizando um sétimo contexto. Assim, neste caso ainda 14 contextos seriam necessários, e meramente o valor restante pode ser codificado em um modo de derivação de baixa complexidade. Uma técnica para reduzir o número de posições codificadas com modelos de contexto resultantes no número elevado de derivação e reduzir o número de modelos de contexto necessário para a codificação de MVD, é para reduzir o valor de corte como, por exemplo, de 9 a 1 ou 2. Isso significa apenas a primeira posição especificando se o MVD absoluto é maior do que zero seria codificado utilizando um modelo de contexto ou a primeira e a segunda posição especificando se o MVD absoluto é maior do que zero e um seria codificado utilizando um respectivo modelo de contexto, enquanto o valor restante é codificado com um código VLC. Todas as posições resultantes da binarização utilizando o Código VLC são codificadas utilizando um modo de derivação de baixa complexidade. No caso de PIPE, uma inserção direta no fluxo de dados contínuo é possível. Além disso, a aplicação apresentada utiliza outra definição do próximo superior e esquerdo para derivar melhor a seleção do modelo de contexto para a primeira posição. Além disso, o modelo de contexto é modificado de modo que o número de modelos de contexto necessário para a primeira ou a primeira e segunda posição seja reduzido levando a outra redução da memória. Ainda, a avaliação dos próximos como o próximo superior pode ser desabilitada resultando na economia do buffer/memória da linha necessária para armazenamento de valores mvd dos próximos Finalmente, a ordem de codificação dos pode ser dividida permitindo a codificação das posições de prefixo para ambos os componentes (ou seja, posições codificadas com modelos de contexto) seguidos pelas posições da codificação de derivação.
[000195] Em uma aplicação preferida, códigos Exp-Golomb são utilizados para binarizar a parte remanescente dos componentes de MVD absoluto. Para isso, a ordem do código Exp-Golomb é variável. A ordem do código Exp-Golomb pode ser derivada como segue. Após o modelo de contexto para a primeira posição, e desta forma o índice do qual o modelo de contexto é derivado, o índice é utilizado como uma ordem para a binarização Exp-Golomb. Nesta aplicação preferida, o modelo de contexto para a primeira posição varia de 1 - 3 resultando no índice 0 - 2, que é utilizado como a ordem do código Exp-Golomb. Esta aplicação preferida pode ser utilizada para o caso HE e o número de modelos de contexto é reduzido para 6. Para reduzir o número de modelos de contexto novamente e desta forma economizar memória, os componentes horizontal e vertical podem compartilhar os mesmos modelos de contexto em outra aplicação preferida. Neste caso, apenas 3 modelos de contexto são necessários. Além disso, apenas o próximo esquerdo pode ser considerado para a avaliação em outra aplicação preferida da invenção. Nesta aplicação preferida, o limite pode ser inalterado (por exemplo, apenas único limite de 16 resultando nos parâmetros Exp-Golomb de 0 ou 1 ou único limite de 32 resultando nos parâmetros Exp-Golomb de 0 ou 2). Esta aplicação preferida economiza o buffer de linha necessário para o armazenamento de mvd. Em outra aplicação preferida, o limite é modificado e é igual a 2 e 16. Para esta aplicação preferida, no total 3 modelos de contexto são necessários para a codificação de mvd e possíveis parâmetros Exp-Golomb variam de 0 - 2. Em outra aplicação preferida, o limite é igual a 16 e 32. Novamente, a aplicação descrita é adequada para o caso HE.
[000196] Em outra aplicação preferida da invenção, o valor de corte é reduzido de 9 para 2. Nesta aplicação preferida, a primeira posição e a segunda posição podem ser codificadas utilizando modelos de contexto. A seleção do modelo de contexto para a primeira posição pode ser feita como no estado da técnica ou modificada de forma descrita na aplicação preferida acima. Para a segunda posição, um modelo de contexto separado é selecionado como no estado da técnica. Em outra aplicação preferida, o modelo de contexto para a segunda posição é selecionado pela avaliação de mvd do próximo esquerdo. Para este caso, o modelo de índice de contexto é o mesmo que para a primeira posição, enquanto os modelos de contexto disponíveis são diferentes daqueles para a primeira posição. No total, 6 modelos de contexto são necessários (observe que os componentes compartilham os modelos de contexto). Novamente, os parâmetros Exp-Golomb podem depender do modelo de índice de contexto selecionado da primeira posição. Em outra aplicação preferida da invenção, os parâmetros Exp-Golomb são dependentes do modelo de índice de contexto da segunda posição. As aplicações descritas da invenção podem ser utilizadas para o caso HE.
[000197] Em outra aplicação preferida da invenção, os modelos de contexto para ambas as posições são fixos e não derivados pela avaliação tanto do próximo esquerdo quanto superior. Para esta aplicação preferida, o número total de modelos de contexto é igual a 2. Em outra aplicação preferida da invenção, a primeira posição e a segunda posição compartilham o mesmo modelo de contexto. Como um resultado, apenas um modelo de contexto é necessário para a codificação de mvd. Em ambas as aplicações preferidas da invenção, os parâmetros Exp-Golomb podem ser fixos e ser iguais a 1. As aplicações preferidas descritas da invenção são adequadas tanto para a configuração HE quanto para LC.
[000198] Em outra aplicação preferida, a ordem da parte Exp-Golomb é derivada independentemente do modelo de índice de contexto da primeira posição. Neste caso, a soma absoluta da seleção ordinária do modelo de contexto de H.264/AVC é utilizada para derivar uma ordem para a parte Exp-Golomb. Esta aplicação preferida pode ser utilizada para o caso HE.
[000199] Em outra aplicação preferida, a ordem dos códigos Exp-Golomb é fixada e é definida a 0. Em outra aplicação preferida, a ordem dos códigos Exp-Golomb é fixada e definida a 1. Em uma aplicação preferida, a ordem dos códigos Exp-Golomb é fixada a 2. Em outra aplicação, a ordem dos códigos Exp-Golomb é fixada a 3. Em outra aplicação, a ordem dos códigos Exp-Golomb é fixada de acordo com a forma e o tamanho da PU atual. As aplicações preferidas apresentadas podem ser utilizadas para o caso LC. Observe que a ordem fixa da parte Exp-Golomb é considerada com o número reduzido de posições codificadas com modelos de contexto.
[000200] Em uma aplicação preferida, os próximos são definidos como segue. Para a PU acima, todas as PUs que abrangem a PU atual são consideradas e a PU com o maior MV utilizado. Isso é feito ainda para o próximo esquerdo. Todas as PUs que abrangem a PU atual são avaliadas e a PU com o maior MV é utilizada. Em outra aplicação preferida, o valor médio absoluto do vetor de movimento de todas as PUs abrange o limite superior e esquerdo que a PU atual é utilizada para derivar a primeira posição.
[000201] Para as aplicações preferidas apresentadas acima, é possível mudar a ordem da codificação como segue. O mvd deve ser especificado para a direção vertical na horizontal um após outro (ou vice-versa). Assim, duas séries de posições devem ser codificadas. Para reduzir o número de comutação para o motor da codificação de entropia (ou seja, a comutação entre a derivação e o modo regular), é possível codificar as posições codificadas com modelos de contexto para ambos os componentes na primeira etapa seguida pelas posições codificadas no modo de derivação na segunda etapa. Observe que esta é apenas uma reorganização.
[000202] Favor observar que as posições resultantes da binarização unária ou binarização unária truncada podem, ainda, ser representadas por uma binarização de comprimento fixo equivalente de um indicador por índice de posição especificando se o valor é maior do que o índice de posição atual. Como um exemplo, o valor de corte para a binarização unária truncada de mvd é definido como 2 resultando nas palavras código 0, 10, 11 para valores 0, 1, 2. Na binarização do comprimento fixo correspondente com um indicador por índice de posição, um indicador para o índice de posição 0 (ou seja, a primeira posição) especifica se o valor de MVD absoluto é maior do que 0 ou não e um indicador para a segunda posição com índice de posição 1 especifica se o valor de MVD absoluto é maior do que 1 ou não. Quando o segundo indicador for apenas codificado quando o primeiro indicador é igual a 1, isso resulta nas mesmas palavras código 0, 10, 11.
[000203] A seguir, a representação escalável por complexidade doe estado interno de modelos de probabilidade de acordo com uma aplicação conforme descrito.
[000204] Na configuração de HE-PIPE, o estado interno de um modelo de probabilidade é atualizado após a codificação de uma posição com ele. O estado atualizado é derivado por uma visualização da tabela de transição de estado utilizando o antigo estado e o valor da posição codificada. No caso de CABAC, um modelo de probabilidade pode ter 63 diferentes estados onde cada estado corresponde a uma probabilidade de modelo no intervalo (0,0, 0,5). Cada um destes estados é utilizado para realizar duas probabilidades do modelo. Além da probabilidade atribuída ao estado, 1,0 menos a probabilidade é ainda utilizado e um indicador chamado valMps armazena a informação se a probabilidade ou 1,0 menos a probabilidade é utilizado. Isso leva a um total de 126 estados. Para utilizar este modelo de probabilidade com o conceito de codificação PIPE, cada um dos 126 estados precisa ser mapeado em um dos codificadores PIPE disponíveis. Nas implementações atuais dos codificadores PIPE, isso é feito utilizando uma tabela de visualização. Um exemplo deste mapeamento é descrito na Tabela A.
[000205] A seguir, uma aplicação é descrita como o estado interno de um modelo de probabilidade pode ser representado para evitar utilizar uma tabela de visualização para converter o estado interno em um Índice pipe. Apenas algum bit simples fazendo as operações é necessário para extrair o índice pipe do estado interno variável do modelo de probabilidade. Esta nova representação escalável por complexidade do estado interno de um modelo de probabilidade é desenhada em dois níveis. Para aplicações onde a operação de baixa complexidade é obrigatória apenas o primeiro nível é utilizado. Este descreve apenas o índice pipe e o indicador valMps que é utilizado para codificar ou decodificar as posições associadas. No caso do esquema de codificação de entropia PIPE descrito acima, o primeiro nível pode ser utilizado para diferenciar entre 8 diferentes probabilidades do modelo. Assim, o primeiro nível precisaria de 3 bits para pipeIdx e outro bit para o indicador valMps. Com o segundo nível cada uma das faixas de probabilidade do curso do primeiro nível é refinada em vários intervalos menores que suportam a apresentação das probabilidades em resoluções mais altas. Esta apresentação mais detalhada permite a operação mais exata do estimador de probabilidades. No geral, é adequado para codificar aplicações que direcionam as realizações RD altas. Como um exemplo esta representação escalada por complexidade do estado interno de modelos de probabilidade com o uso de PIPE é ilustrada como segue:
Figure img0010
[000206] O primeiro e o segundo nível são armazenados em uma única memória de 8 bits. 4 bits são necessários para armazenar o primeiro nível - um índice que define o índice pipe com o valor de MPS no bit mais significativo- e outros 4 bits são utilizados para armazenar o segundo nível. Para implementar o comportamento do estimador de probabilidade CABAC, cada índice pipe tem um número particular de índices de refinamento permitido dependendo de quantos estados de CABAC foram mapeados no índice pipe. Por exemplo, para o mapeamento na Tabela A, o número de estados de CABAC por Índice pipe é descrito na Tabela B.
Figure img0011
[000207] Tabela B: Número de estados CABAC por índice PIPE para o exemplo da Tabela A.
[000208] Durante o processo de codificação ou decodificação de uma posição o índice pipe e valMps podem ser acessados diretamente empregando a simples máscara de bit ou operações de mudança de bit. Os processos de codificação de baixa complexidade exigem os 4 bits do primeiro nível apenas e os processos de codificação de alta eficiência podem adicionalmente utilizar os 4 bits do segundo nível para realizar p modelo de atualização de probabilidade do estimador de probabilidade CABAC. Para realizar esta atualização, uma tabela de visualização da transição de estado pode ser desenhada fazendo a mesma transição de estados como a tabela original, mas utilizando a representação de estados de dois níveis escalável por complexidade. A tabela original da transição de estado consiste em duas vezes 63 elementos. Para cada estado de entrada, contém dois estados de saída. Ao utilizar a representação escalável por complexidade, o tamanho da transição de estado tabela não excede duas vezes 128 elementos que é um aumento aceitável do tamanho da tabela. Este aumento depende de quantos bits são utilizados para representar o índice de refinamento e para exatamente emular o comportamento do estimador de probabilidade CABAC, quatro bits são necessários. Entretanto, um diferente estimador de probabilidade poderia ser utilizado que pode operar em um conjunto de estados de CABAC reduzido de modo que para cada índice pipe não mais do que 8 estados são permitidos. Desta forma o consumo de memória pode ser correspondido ao dado nível de complexidade do processo de codificação adaptando o número de bits utilizados para representar o índice de refinamento. Comparado aos estados internos de probabilidade do modelo com CABAC - onde 64 índices do estado de probabilidade existem - a utilização das visualizações da tabela para mapear as probabilidades do modelo em um código pipe específico é evitada e a conversão não é mais necessária.
[000209] A seguir, a atualização escalável por complexidade do modelo de contexto de acordo com uma aplicação é descritos.
[000210] Para atualizar um modelo de contexto, seu índice do estado de probabilidade pode ser atualizado com base em uma ou mais codificações previamente codificadas. Na configuração de HE- PIPE, esta atualização é feita após a codificação ou decodificação de cada posição. Inversamente, na configuração de LC-PIPE, esta atualização nunca pode ser feita.
[000211] Entretanto, é possível fazer uma atualização de modelos de contexto em uma forma escalável por complexidade. Ou seja, a decisão de atualizar um modelo de contexto ou não pode ser baseada em vários aspectos. Por exemplo, uma configuração do codificador poderia fazer nenhuma atualização para modelos de contexto particulares apenas como, por exemplo, os modelos de contexto de elemento de sintaxe coeff_significant_flag, e sempre fazer as atualizações para todos os outros modelos de contexto.
[000212] Em outras palavras, o seletor 402 poderia ser configurado para, para símbolos de cada de um número de tipo predeterminado de símbolo, realizar a seleção entre os decodificadores de entropia 322 dependendo de um respectivo modelo de probabilidade associado ao respectivo símbolo predeterminado de modo que o número de tipo predeterminado de símbolo seja menor no modo de baixa complexidade do que comparado ao modo de alta eficiência.
[000213] Além disso, os critérios para controlar se atualizar um modelo de contexto ou não poderia ser, por exemplo, o tamanho de um pacote de fluxo de dados contínuo, o número de posições decodificado até o momento, ou a atualização é feita apenas após a codificação de um número de posições variável ou fixo particular para um modelo de contexto.
[000214] Com este esquema para decidir sobre a atualização ou não dos modelos de contexto, a atualização escalável por complexidade do modelo de contexto pode ser implementada. Permite aumentar ou reduzir a parte de posições em um fluxo de dados contínuo para que as atualizações do modelo de contexto sejam feitas. Quanto mais alto o número de atualização do modelo de contextos, melhor será a eficiência da codificação e mais alta será a complexidade computacional. Assim, a atualização escalável por complexidade do modelo de contexto pode ser obtida com o esquema descrito.
[000215] Em uma aplicação preferida, a atualização do modelo de contexto é feita para as posições de todos os elementos de sintaxe exceto os elementos de sintaxe coeff_significant_flag, coeff_abs_greater1, e coeff_abs_greater2.
[000216] Em outra aplicação preferida, a atualização do modelo de contexto é feita para as posições dos elementos de sintaxe coeff_significant_flag, coeff_abs_greater1, e coeff_abs_greater2 apenas.
[000217] Em outra aplicação preferida, a atualização do modelo de contexto é feita para todos os modelos de contexto quando a codificação ou decodificação de uma parte iniciar. Após um número de blocos de transformação particular predefinido sendo processada, a atualização do modelo de contexto é desabilitada para todos os modelos de contexto até o final de a parte ser atingida.
[000218] Por exemplo, o seletor 402 pode ser configurado para, para símbolos de um tipo de símbolo predeterminado, realizar a seleção entre os decodificadores de entropia 322 dependendo de um modelo de probabilidade associado ao tipo de símbolo predeterminado com ou sem atualização do modelo de probabilidade associado, de modo que um comprimento de uma fase de aprendizagem da sequência de símbolos na qual a seleção para os símbolos do tipo de símbolo predeterminado é realizada com a atualização, é mais curta no modo de baixa complexidade do que comparado ao modo de alta eficiência.
[000219] Outra aplicação preferida é idêntica à aplicação preferida previamente descrita, mas utiliza a representação escalável por complexidade do estado interno de modelos de contexto de forma, de modo que uma tabela armazena a “primeira parte” (valMps e pipeIdx) de todos modelos de contexto e uma segunda tabela armazena a “segunda parte” (refineIdx) de todos os modelos de contexto. Neste ponto, onde a atualização do modelo de contexto é desabilitada para todos os modelos de contexto (conforme descrito na aplicação preferida anterior), a tabela que armazena a “segunda parte” não é necessária mais longa e pode ser descartada.
[000220] A seguir, a atualização do modelo de contexto para uma sequência de posições de acordo com uma aplicação é descrita.
[000221] Na configuração LC-PIPE, as posições de elementos de sintaxe do tipo coeff_significant_flag, coeff_abs_greater1, e coeff_abs_greater2 são agrupadas em subconjuntos. Para cada subconjunto, um único modelo de contexto é utilizado para codificar suas posições. Neste caso, uma atualização do modelo de contexto pode ser feita após a codificação de um número fixo de posições desta sequência. Isso é denotado a atualização de várias posições a seguir. Entretanto, esta atualização pode diferir da atualização utilizando apenas a última posição codificada e o estado interno do modelo de contexto. Por exemplo, para cada posição que foi codificada, uma etapa de atualização do modelo de contexto é conduzida.
[000222] A seguir, exemplos são dados para a codificação de um subconjunto exemplar que consiste em 8 posições. A letra ‘b’ denota a decodificação de uma posição e a letra ‘u’ denota a atualização do modelo de contexto. No caso de LC-PIPE apenas a decodificação da posição é feita sem fazer a atualização do modelo de contextos: b b b b b b b b
[000223] No caso de HE-PIPE, após a decodificação de cada posição, uma atualização do modelo de contexto é feita: b u b u b u b u b u b u b u b u
[000224] Para de alguma forma reduzir a complexidade, a atualização do modelo de contexto pode ser feita após uma sequência de posições (neste exemplo após cada 4 posições, as atualizações destas 4 posições são feitas):b b b b u u u u b b b b u u u u
[000225] Ou seja, o seletor 402 pode ser configurado para, para símbolos de um tipo de símbolo predeterminado, realizar a seleção entre os decodificadores de entropia 322 dependendo de um modelo de probabilidade associado ao tipo de símbolo predeterminado com ou sem atualizar o modelo de probabilidade associado de modo que uma frequência caracterizada pela seleção para os símbolos do tipo de símbolo predeterminado ser realizada com a atualização, é mais baixo no modo de baixa complexidade do que comparado ao modo de alta eficiência.
[000226] Neste caso, após a decodificação de 4 posições, 4 etapas de atualização seguem com base nas 4 posições já decodificadas. Observe que estas quatro etapas de atualização podem ser conduzidas em uma única etapa utilizando uma tabela de visualização especial. Esta tabela de visualização armazena para cada possível combinação de 4 posições e cada possível estado interno do modelo de contexto o novo estado resultante após as quatro etapas de atualização convencionais.
[000227] Em um determinado modo, a atualização de várias posições é utilizada para o elemento de sintaxe coeff_significant_flag. Para as posições de todos os outros elementos de sintaxe, nenhuma atualização do modelo de contexto é utilizada. O número de posições que é codificado antes da etapa de atualização de várias posições ser feita é definido como n. Quando o número de posições do conjunto não for divisível por n, 1 para posições n-1 permanece no final do subconjunto após a última atualização de várias posições. Para cada uma destas posições, uma atualização convencional de única posição é feita após a codificação de todas estas posições. O número n pode ser qualquer número positivo maior do que 1. Outro modo poderia ser idêntico ao modo anterior, exceto que a atualização de várias posições é feita para combinações arbitrárias de coeff_significant_flag, coeff_abs_greater1 e coeff_abs_greater2 (ao invés de coeff_significant_flag apenas). Assim, este modo seria mais complexo do que o outro. Todos os outros elementos de sintaxe (onde a atualização de várias posições não é utilizada) poderiam ser divididos em dois subconjuntos disjuntos onde para um dos subconjuntos, a única atualização da posição é utilizada e para o outro subconjunto na atualização do modelo de contexto é utilizado. Quaisquer possíveis subconjuntos disjuntos são válidos (incluindo o subconjunto vazio).
[000228] Em uma aplicação alternativa, a atualização de várias posições poderia ser com base na última posição m apenas que é codificada imediatamente anteriormente à etapa de atualização de várias posições. m pode ser qualquer número natural menor do que n. Assim, a decodificação poderia ser feita como:b b b b u u b b b b u u b b b b u u b b b b... com n=4 e m=2.
[000229] Ou seja, o seletor 402 pode ser configurado para, para símbolos de um tipo de símbolo predeterminado, realizar a seleção entre os decodificadores de entropia 322 dependendo de um modelo de probabilidade associado ao tipo de símbolo predeterminado, com a atualização do modelo de probabilidade associado cada símbolo n-th do tipo predeterminado com base nos símbolos mais recentes do tipo de símbolo predeterminado de modo que o índice n/m seja mais alto no modo de baixa complexidade do que comparado ao modo de alta eficiência.
[000230] Em outra aplicação preferida, para o elemento de sintaxe coeff_significant_flag, o esquema do modelo de contexto utilizando um modelo local conforme descrito acima para a configuração HE-PIPE pode ser utilizado para atribuir modelos de contexto às posições do elemento de sintaxe. Entretanto, para estas posições, nenhuma atualização do modelo de contexto é utilizada.
[000231] Ainda, o seletor 402 pode ser configurado para, para símbolos de um tipo de símbolo predeterminado, selecionar um de um número de contextos dependendo de um número de símbolos da sequência previamente recuperados dos símbolos e realizar a seleção entre os decodificadores de entropia 322 dependendo de um modelo de probabilidade associado ao contexto selecionado, de modo que o número de contextos, e/ou o número de símbolos previamente recuperados, seja menor no modo de baixa complexidade do que comparado ao modo de alta eficiência.
[000232] Inicialização do modelo de probabilidade utilizando valores de inicialização de 8 bits.
[000233] Esta seção descreve o processo de inicialização do estado interno escalável por complexidade de modelos de probabilidade utilizando um chamado valor de inicialização de 8 bits ao invés de dois valores de 8 bits como é o caso do padrão H.265/AVC da codificação de vídeo do estado da técnica. Consiste em duas partes que são comparáveis aos pares de valor de inicialização utilizados para modelos de probabilidade em CABAC de H.264/AVC. As duas partes representam os dois parâmetros de uma equação linear para computar o estado inicial de um modelo de probabilidade, representando uma probabilidade particular (por exemplo, na forma de um Índice pipe) de um QP: • A primeira parte descreve a inclinação e explora a dependência do estado interno com relação ao parâmetro de quantificação (QP | quantization parameter) que é utilizado durante a codificação ou decodificação. • A segunda parte define um Índice pipe em um dado QP bem como o valMps.
[000234] Dois diferentes modos são disponíveis para inicializar um modelo de probabilidade utilizando o dado valor de inicialização. O primeiro modo é denotado inicialização independente de QP. Utiliza apenas o índice pipe e valMps definidos na segunda parte do valor de inicialização para os todos QPs. Isso é idêntico ao caso onde a inclinação é igual a 0. O segundo modo é denotado inicialização dependente de QP e adicionalmente utiliza a inclinação da primeira parte do valor de inicialização para alterar o índice pipe e para definir o índice de refinamento. As duas partes de um valor de inicialização de 8 bits são ilustradas como segue:
Figure img0012
[000235] Consiste em duas partes de 4 bits. A primeira parte contém um índice que indica 1 de 16 diferentes inclinações predefinidas que são armazenadas em uma matriz. As inclinações predefinidas consistem em 7 inclinações negativas (índice de inclinação 0-6), uma inclinação que é igual a zero (índice de inclinação 7) e 8 inclinações positivas (índice de inclinação 8 - 15). As inclinações são descritas na Tabela C.
Figure img0013
[000236] Tabela C:
[000237] Todos os valores são escalados por um fator de 256 para evitar a utilização das operações do ponto flutuante. A segunda parte é o índice pipe que incorpora a probabilidade ascendente de valMps = 1 entre o intervalo de probabilidade p = 0 e p = 1. Em outras palavras, o codificador PIPE n deve operar em uma probabilidade de modelo mais alto do que o codificador PIPE n - 1. Para cada modelo de probabilidade um índice de probabilidade PIPE está disponível e identifica o codificador PIPE cujo intervalo de probabilidade contém a probabilidade de pvalMPs=1 para QP = 26.
Figure img0014
[000238] Tabela D: Mapeamento da segunda parte do valor de inicialização aos codificadores PIPE e valMps: UR = código unário em rice, TB = código de três posições, BP = código pipe por posição, EP = probabilidade igual (não codificada)
[000239] O QP e o valor de inicialização de 8 bits são necessários para calcular a inicialização do estado interno dos modelos de probabilidade pelo cálculo computacional de uma simples equação linear na forma de y = m * (QP - QPref) + 256 * b. Observe que m define a inclinação que é tomada da Tabela C utilizando o índice de inclinação (a primeira parte do valor de inicialização de 8 bits) e b denota o codificador PIPE em QPref = 26 (a segunda parte do valor de inicialização de 8 bits: “Índice de Probabilidade PIPE”). Então, valMPS é 1 e o pipeIdx igual a (y -2048) >> 8 se y for maior do que 2047. Caso contrário, valMPS é 0 e pipeIdx igual a (2047 - y) >> 8. O índice de refinamento é igual a ( ((y-2048) & 255) * numStates ) >> 8 se valMPS for igual a 1. Caso contrário, o índice de refinamento é igual a ( ((2047-y) & 255) * numStates ) >> 8. Em ambos os casos, numStates é igual ao número de estados de CABAC do pipeIdx conforme descrito na Tabela B.
[000240] O esquema acima não pode apenas ser utilizado em combinação com os codificadores PIPE, mas ainda em conexão com os esquemas CABAC mencionados acima. Na ausência de PIPE, o número de estados de CABAC, ou seja, os estados de probabilidade entre os quais a transição de estado na atualização de probabilidade é realizada (pState_current[bin]), por Índ. PIPE (ou seja, os respectivos bits mais significativos de pState_current[bin]) é então apenas um conjunto de parâmetros que realiza, de fato, uma interpolação linear sensata do estado de CABAC dependendo do QP. Além disso, esta interpolação linear sensata pode ainda virtualmente ser desabilitada no caso onde o parâmetros numStates utiliza o mesmo valor para todos os Índ. PIPE. Por exemplo, ajustar numStates a 8 para todos os casos produz um total de 16 * 8 estados e o cálculo computacional do índice de refinamento simplifica em ((y-2048) & 255) >> 5 para valMPS igual a 1 ou ((2047-y)&255)>>5 para valMPS igual a 0. Para este case, o mapeamento da representação utilizando valMPS, Índ. PIPE, e o índice de refinamento de volta à representação utilizada pelo CABAC original de H.264/AVC é muito simples. O estado de CABAC é dado como (Índ. PIPE << 3) + índice de refinamento. Este aspecto também é descrito abaixo com relação à Figura 16.
[000241] A menos que a inclinação do valor de inicialização de 8 bits seja igual à zero ou a menos que o QP seja igual à 26 é necessário computar o estado interno empregando a equação linear com o QP do processo de codificação ou decodificação. No caso da inclinação equalizando a zero ou que o QP do processo de codificação atual ser igual a 26 a segunda parte do valor de inicialização de 8 bits pode ser utilizada diretamente para inicializar o estado interno de um modelo de probabilidade. Caso contrário, a parte decimal do estado interno resultante pode ser ainda explorada para determinar um índice de refinamento nas aplicações de codificação de alta eficiência pela interpolação linear entre os limites do codificador PIPE específico. Nesta aplicação preferida a interpolação linear é executada pela simples multiplexação da parte decimal com o número total de índices de refinamento disponível para o codificador PIPE atual e o mapeamento do resultado ao índice de refinamento de número inteiro mais próximo.
[000242] O processo de inicialização do estado interno dos modelos de probabilidade poderia ser variado com relação ao número de estados do índice de probabilidade PIPE. Em particular, a ocorrência dupla do modo provável igual utilizando o codificador PIPE E1, ou seja, utilizando os dois diferentes índices pipe para distinguir entre MPS sendo 1 ou 0, poderia ser evitado como segue. Novamente, o processo poderia ser invocado durante o início da análise dos dados da parte, e a entrada deste processo poderia ser um valor de inicialização de 8 bits conforme descrito na Tabela E, que seria, por exemplo, transmitido dentro do fluxo de dados contínuo para cada modelo de contexto a ser inicializado.
[000243] Tabela E: Configuração dos 8 bits do initValue para um modelo de probabilidade
Figure img0015
[000244] Os primeiros 4 bits definem um índice de inclinação e são recuperados mascarando os bits b4 - b7. Para cada índice de inclinação uma inclinação (m) é especificada e exibida na Erro! Fonte de referência não encontrada..
[000245] Tabela F Valores da variável m para slopeIdx
Figure img0016
[000246] Bits b0 -b3, os últimos 4 bits do valor de inicialização de 8 bits, identificam o probIdx e descrevem a probabilidade em um QP predefinido. probIdx 0 indica a probabilidade mais alta para os símbolos com valor 0 e respectivamente, probIdx 14 indica a probabilidade mais alta para os símbolos com valor 1. A Tabela G mostra para cada probIdx o pipeCoder correspondente e seu valMps.
[000247] Tabela G: Mapeamento da parte dos últimos 4 bits do valor de inicialização noscodificadores PIPE e valMps: UR = código unário em rice, TB = código de três posições, BP = código pipe por posição, EP = probabilidade igual (não codificada)
Figure img0017
[000248] Com ambos os valores o cálculo do estado interno poderia ser feito utilizando uma equação linear igual y=m * x +256 * b, onde m denota a inclinação, x denota o QP da parte atual e b é derivada de probIdx conforme mostrado na seguinte descrição. Todos os valores neste processo são escalados por um fator de 256 para evitar a utilização das operações do ponto flutuante. A saída (y) deste processo representa o estado interno do modelo de probabilidade no QP atual e é armazenada em uma memória de 8 bits. Conforme mostrado em G o estado interno consiste em valMPs, pipeIdx e refineIdx.
[000249] Tabela H: Configuração do estado interno de um modelo de probabilidade
Figure img0018
[000250] A atribuição de refineIdx e pipeIdx é semelhante ao estado interno dos modelos de probabilidades de CABAC (pStateCtx) e é apresentada em H.
[000251] Tabela I: Atribuição de pipeIdx, refineIdx e pStateCtx
Figure img0019
[000252] Em uma aplicação preferida o probIdx é definido em QP26. Com base no valor de inicialização de 8 bits o estado pseudocódigo: n = ( probIdx << 8 ) - m * 26 fullCtxState = máx.( 0, mín.( 3839, ( m * máx.( 0,mín.( 51, SliceQPY ) ) ) ) + n + 128 ) remCtxState = fullCtxState & 255 preCtxState = fullCtxState >> 8 se( preCtxState < 8 ) { pipeIdx = 7 - preCtxState valMPS = 0 } outro { pipeIdx = preCtxState - 8 valMPS = 1 } compensação = { 3, 7, 5, 7, 10, 14, 16, 1 } se( pipeIdx = = 0 ) { se( remCtxState <= 127 ) remCtxState = 127 - remCtxState outro remCtxState = remCtxState - 128 refineIdx = ( ( remCtxState << 1 ) * offset ) >> 8 } outro { se( valMPS = = 0 ) remCtxState = 255 - remCtxState refineIdx = ( remCtxState * offset[pipeIdx] ) >> 8 } Conforme mostrado no pseudo código, o refineIdx é calculado interpolando linearmente entre o intervalo de pipeIdx e quantificando o resultado ao refineIdx correspondente. A compensação especifica o número total de refineIdx para cada pipeIdx. O intervalo [7, 8) de fullCtxState/256 é dividido pela metade. O intervalo [7, 7.5) é mapeado em pipeIdx = 0 e valMps = 0 e o intervalo [7.5, 8) é mapeado em pipeIdx = 0 e valMps = 1. A Figura 15 descreve o processo de derivação do estado interno e exibe o mapeamento de fullCtxState/256 em pStateCtx.
[000253] Observe que a inclinação indica uma dependência de probIdx e QP. Se slopeIdx do valor de inicialização de 8 bits for igual a 7 o estado interno resultante do modelo de probabilidade é o mesmo para todas as partes QP - assim o processo de inicialização do estado interno é independente do QP atual da parte.
[000254] Ou seja, o seletor 402 pode inicializar os índices pipe para ser utilizado na decodificação da seguinte parte do fluxo de dados como todo o fluxo ou a próxima parte, utilizando o elemento de sintaxe indicando o tamanho QP da etapa de quantificação utilizado para quantificar os dados desta parte, como os níveis do coeficiente de transformação contidos nela utilizando este elemento de sintaxe como um índice em uma tabela que pode ser comum para ambos os modos, LC e HE. A tabela como tabela D pode compreender índices pipe para cada tipo de símbolo, para uma respectiva referência QPref, ou outros dados para cada tipo de símbolo. Dependendo do QP real da parte atual, o seletor pode computar um valor pipe do índice utilizando a respectiva entrada da tabela a indexada pelo próprio QP e QP real, como pela multiplicação de a com (QP-QPref). A única diferença no modo LC e no modo HE: o seletor computa o resultado meramente em uma precisão inferior no caso de LC comparado ao modo HE. O seletor pode, por exemplo, meramente utilizar a parte de número inteiro do resultado de computação. No modo HE, quanto mais alta a precisão restante, como a parte fracionária, é utilizado para selecionar um dos índices de refinamento disponíveis para o respectivo índice pipe conforme indicado pela precisão inferior ou parte de número inteiro. O índice de refinamento é utilizado no modo HE (potencialmente ainda mais raramente no modo LC) para realizar a adaptação de probabilidade como utilizando a tabela mencionada acima. Ao deixar os índices disponíveis para o índice pipe atual caracterizado pelo limite mais alto, então o índice pipe mais alto é selecionado próximo com a redução do índice de refinamento. Ao deixar os índices disponíveis para o índice pipe atual no limite mais baixo, então o próximo índice pipe mais baixo é selecionado próximo com o aumento do índice de refinamento ao máximo disponível para o novo índice pipe. O índice pipe com o índice de refinamento define o estado de probabilidade, mas para a seleção entre os fluxos parciais, o seletor meramente utiliza o índice pipe. O índice de refinamento meramente serve para rastrear a probabilidade mais próxima, ou em uma precisão mais detalhada.
[000255] A discussão acima também mostrou, entretanto, que uma escala de complexidade pode ser obtida independente do conceito de codificação de PIPE ou CABAC da Figura 7 - 17, utilizando um decodificador conforme mostrado na Figura 12. O decodificador da Figura 12 é para decodificar um fluxo de dados 601 no qual os dados de mídia são codificados, e compreende uma comutação do modo 600 configurada para ativar um modo de baixa complexidade ou um modo de alta eficiência dependendo do fluxo de dados 601, bem como um dessimbolizador 602 configurado para dessimbolizar uma sequência 603 de símbolos obtidos - tanto diretamente quanto pela decodificação de entropia, por exemplo - do fluxo de dados 601 para obter elementos de sintaxe com valor de número inteiro 604 utilizando uma função de mapeamento controlável por um parâmetro de controle, para mapeamento de um domínio de palavras da sequência de símbolo em um codomínio dos elementos de sintaxe com valor de número inteiro. Um reconstrutor 605 é configurado para reconstruir os dados de mídia 606 com base nos elementos de sintaxe com valor de número inteiro. O dessimbolizador 602 é configurado para realizar a dessimbolização de modo que o parâmetro de controle varia de acordo com o fluxo de dados em uma primeira taxa no caso do modo de alta eficiência ser ativado e p parâmetro de controle é constante independente do fluxo de dados ou muda dependendo do fluxo de dados, mas uma segunda taxa inferior à primeira taxa no caso do modo de baixa complexidade sendo ativado, como é ilustrado pela seta 607. Por exemplo, o parâmetro de controle pode variar de acordo com os símbolos previamente dessimbolizados.
[000256] Algumas das aplicações acima fizeram uso do aspecto da Figura 12. Os elementos de sintaxe coeff_abs_minus3 e MVD dentro da sequência 327 foram, por exemplo, binarizados no dessimbolizador 314 dependendo do modo selecionado conforme indicado por 407, e o reconstrutor 605 utilizou estes elementos de sintaxe para reconstrução. Obviamente, ambos os aspectos da Figura 11 e 12 são prontamente combináveis, mas o aspecto da Figura 12 também pode ser combinado com outros ambientes de codificação.
[000257] Veja, por exemplo, a codificação da diferença do vetor de movimento denotada acima. O dessimbolizador 602 pode ser configurado de modo que a função de mapeamento utilize um código unário truncado para realizar o mapeamento dentro de um primeiro intervalo do domínio de elementos de sintaxe com valor de número inteiro abaixo de um valor de corte e uma combinação de um prefixo na forma do código unário truncado para o valor de corte e um sufixo na forma de uma palavra código VLC dentro de um segundo intervalo do domínio de elementos de sintaxe com valor de número inteiro inclusivo e acima do valor de corte, caracterizado pelo decodificador poder compreender um decodificador de entropia 608 configurado para derivar um número de primeiras posições do código unário truncado do fluxo de dados 601 utilizando decodificação de entropia com estimativa de probabilidade variante e um número de segundas posições da palavra código VLC utilizando um modo de derivação de equiprobabilidade constante. No modo HE, a codificação de entropia pode ser mais complexa do que na codificação LC conforme ilustrado pela seta 609. Ou seja, adaptatividade por contexto e/ou adaptação de probabilidade pode ser aplicada no modo HE e suprimida no modo LC, ou a complexidade pode ser escalada em outros termos, conforme definido acima com relação às várias aplicações.
[000258] Um encaixe do codificador ao decodificador da Figura 11, para codificar dados de mídia em um fluxo de dados é mostrado na Figura 13. Pode compreender um insersor 500 configurado para sinalizar dentro do fluxo de dados 501 uma ativação de um modo de baixa complexidade ou um modo de alta eficiência, um construtor 504 configurado para proceder os dados de mídia 505 em uma sequência 506 de elementos de sintaxe, um simbolizador 507 configurado para simbolizar a sequência 506 de elementos de sintaxe em uma sequência 508 de símbolos, uma pluralidade de codificadores de entropia 310 cada um sendo configurado para converter sequências de símbolos parciais em palavras código do fluxo de dados, e um seletor 502 configurado para encaminhar cada símbolo da sequência 508 de símbolos a um selecionado da pluralidade de codificadores de entropia 310, caracterizado pelo seletor 502 ser configurado para realizar a seleção dependendo de um ativado do modo de baixa complexidade e o modo de alta eficiência conforme ilustrado pela seta 511. Um intercalador 510 pode ser opcionalmente fornecido para intercalar as palavras código dos codificadores 310.
[000259] Um encaixe do codificador ao decodificador da Figura 12, para codificar dados de mídia em um fluxo de dados é mostrado na Figura 14 como compreendendo um insersor 700 configurado para sinalizar dentro do fluxo de dados 701 uma ativação de um modo de baixa complexidade ou um modo de alta eficiência, um construtor 704 configurado para proceder os dados de mídia 705 em uma sequência 706 de elementos de sintaxe compreendendo um elemento de sintaxe com valor de número inteiro, e um simbolizador 707 configurado para simbolizar o elemento de sintaxe com valor de número inteiro utilizando uma função de mapeamento controlável por um parâmetro de controle, para mapeamento de um domínio de elementos de sintaxe com valor de número inteiro em um codomínio das palavras de sequência de símbolo, caracterizado pelo simbolizador 707 ser configurado para realizar a simbolização de modo que o parâmetro de controle varia de acordo com o fluxo de dados em uma primeira taxa no caso do modo de alta eficiência sendo ativado e o parâmetro de controle ser constante independente do fluxo de dados ou mudar dependendo do fluxo de dados, mas em uma segunda taxa menor do que a primeira taxa no caso do modo de baixa complexidade ser ativado conforme ilustrado pela seta 708. O resultado da simbolização é codificado no fluxo de dados 701.
[000260] Novamente, deve ser mencionado que a aplicação da Figura 14 é facilmente transferível na aplicação de co/decodificação aritmética adaptativa por contexto mencionado acima: seletor 509 e codificadores de entropia 310 condensariam em um codificador aritmético binário adaptativo por contexto que emitiria o fluxo de dados 401 diretamente e selecionaria o contexto para uma posição atualmente a ser derivada do fluxo de dados. Isso é especialmente verdadeiro para a adaptatividade de contexto e/ou adaptatividade de probabilidade. Ambas as funcionalidades/adaptatividades podem ser comutadas, ou desenhadas mais relaxadas, durante o modo de baixa complexidade.
[000261] Foi brevemente observado acima que a capacidade da comutação do modo explicado com relação a algumas das aplicações acima pode, de acordo com aplicações alternativas, ser deixada. Para tornar isso mais claro, a referência é feita à Figura 16, que resume a descrição acima na medida em que meramente a remoção da capacidade da comutação do modo diferencia a aplicação da Figura 16 das aplicações acima. Além disso, a seguinte descrição revelará as vantagens resultantes da inicialização das estimativas de probabilidade dos contextos utilizando parâmetros menos precisos para inclinação e compensação comparados, por exemplo, a H.264.
[000262] Em particular, a Figura 16 mostra um decodificador para decodificar um vídeo 405 de um fluxo de dados 401 no qual os componentes horizontais e verticais de diferenças do vetor de movimento são codificados utilizando as binarizações dos componentes horizontais e verticais, as binarizações equalizando um código unário truncado dos componentes horizontais e verticais, respectivamente, dentro de um primeiro intervalo do domínio dos componentes horizontais e verticais abaixo de um valor de corte, e uma combinação de um prefixo na forma do código unário truncado. O valor de corte e um sufixo na forma de um código Golom exponencial dos componentes horizontais e verticais, respectivamente, dentro de um segundo intervalo do domínio dos componentes horizontais e verticais inclusivos e acima do valor de corte, caracterizado pelo valor de corte ser 2 e o código Golom exponencial ter uma ordem de 1. O decodificador compreende um decodificador de entropia 409 configurado para, para os componentes horizontais e verticais das diferenças do vetor de movimento, derivar o código unário truncado do fluxo de dados utilizando a decodificação de entropia binária adaptativa por contexto com exatamente um contexto por localização da posição do código unário truncado, que é comum para os componentes horizontais e verticais das diferenças do vetor de movimento, e o código Golom exponencial utilizando um modo de derivação de equiprobabilidade constante para obter as binarizações das diferenças do vetor de movimento. Para ser mais preciso, conforme descrito acima o decodificador de entropia 409 pode ser configurado para derivar o número de posições 326 das binarizações do fluxo de dados 401 utilizando a decodificação de entropia binária como o esquema CABAC mencionado acima, ou decodificação PIPE binária, ou seja, utilizando a construção envolvendo vários decodificadores de entropia operacionais paralelos 322 com um respectivo seletor/atribuidor. Um dessimbolizador 314 debinariza as binarizações dos elementos de sintaxe da diferença do vetor de movimento para obter valores de número inteiro dos componentes horizontais e verticais das diferenças do vetor de movimento, e um reconstrutor 404 reconstrói o vídeo com base nos valores de número inteiro dos componentes horizontais e verticais das diferenças do vetor de movimento.
[000263] Para explicar isso em mais detalhes, uma referência é brevememte feita à Figura 18. 800 mostra de forma representativa uma diferença do vetor de movimento, ou seja, um vetor representando um residual de previsão entre um vetor de movimento previsto e um vetor de movimento real/reconstruído. Os componentes horizontais e verticais 802x e 802y são também ilustrados. Eles podem ser transmitidos em posições das unidades de pixel, ou seja, intensidade do pixel, ou posições sub-pel como a metade da intensidade do pixel ou um quarto deste ou semelhante. Os componentes horizontais e verticais 802x,y são valores de número inteiro. Seu domínio atinge de zero a infinito. O valor do sinal pode ser gerenciado separadamente e não é considerado aqui ainda. Em outras palavras, a descrição descrita aqui foca na magnitude das diferenças do vetor de movimento 802x, y. O domínio é ilustrado em 804. No lado direito do eixo do domínio 804, a Figura 19 ilustra, associado com os possíveis valores de componente 802x,y verticalmente dispostos entre si, as binarizações nas quais o respectivo possível valor é mapeado (binarizado). Como pode ser visto, abaixo do valor de corte de 2, meramente o código unário truncado 806 ocorre, onde uma binarização tem, como um sufixo, também o código de ordem Golomb exponencial 808 de possíveis valores iguais ou maiores do que o valor de corte de 2 para continuar uma binarização para o restante do valor de número inteiro acima do valor de corte menos 1. Para todas as posições, meramente dois contextos são fornecidos: um para uma primeira localização da posição de binarizações de componentes horizontais e verticais 802x,y, e outro para uma segunda localização da posição do código unário truncado 806 de ambos os componentes horizontais e verticais 802x,y. Para uma localização da posição do código Golom exponencial 808, o modo de derivação da equiprobabilidade é utilizado pelo decodificador de entropia 409. Ou seja, ambos os valores de posição são assumidos para ocorrer igualmente provável. Uma estimativa de probabilidade para estas posições é fixa. Comparada a ela, uma estimativa de probabilidade associada aos dois contextos agora mencionados das posições do código unário truncado 806 é adaptada continuamente durante a decodificação.
[000264] Antes de descrever em mais detalhes, como o decodificador de entropia 409 poderia, de acordo com a descrição acima, ser implementado para realizar as tarefas agora mencionadas, a descrição agora foca em uma possível implementação do reconstrutor 404 que utiliza as diferenças do vetor de movimento 800 e os valores de número inteiro deste conforme obtido pelo dessimbolizador 314 pela rebinarização das posições de códigos 106 e 108 com a rebinarização sendo ilustrada na Figura 18 utilizando um conjunto 810. Em particular, o reconstrutor 404 pode, conforme descrito acima, recuperar do fluxo de dados 401 a informação correspondente a uma subdivisão de uma figura atualmente reconstruída em blocos entre os quais pelo menos alguns são sujeitos à previsão compensada por movimento. A Figura 19 mostra uma figura a ser reconstruída de forma representativa em 820 e blocos da subdivisão agora mencionada da Figura 120, para a qual a previsão compensada por movimento é utilizada para prever o conteúdo da figura nela em 822. Conforme descrito com relação às Figuras 2A-2C, há diferentes possibilidades para a subdivisão e os tamanhos dos blocos 122. Para evitar uma transmissão para uma diferença do vetor de movimento 800 para cada um destes blocos 122, o reconstrutor 404 pode explorar um conceito de combinação de acordo com o qual o fluxo de dados adicionalmente transmite a informação de união além da informação de subdivisão ou, na ausência de informação de subdivisão, além do fato que a subdivisão é fixa. A informação de união sinaliza para o reconstrutor 404 quanto aos blocos 822 formarem um grupo de união. Por esta medida, é possível para o reconstrutor 404 aplicar uma determinada diferença do vetor de movimento 800 em um grupo de união de blocos inteiro 822. Naturalmente, no lado da codificação, a transmissão da informação de união está sujeita a um equilíbrio entre transmissão de subdivisão suspensa (se presente), a transmissão da informação de união suspensa e a transmissão da diferença do vetor de movimento suspensa que reduz com o tamanho crescente dos grupos de união. Por outro lado, aumentar o número de blocos por grupo de união reduz a adaptação da diferença do vetor de movimento para este grupo de união nas necessidades reais dos blocos individuais do respectivo grupo de união assim produzindo a previsão compensada por movimentos menos precisa das diferenças do vetor de movimento de estes blocos e necessitando de uma transmissão mais alta suspensa para transmitir o residual de previsão na forma de, por exemplo, nível de coeficiente de transformação. Certamente, um equilíbrio é encontrado no lado da codificação de forma apropriada. Em qualquer caso, entretanto, o conceito de combinação resulta nas diferenças do vetor de movimento para os grupos de união que mostram inter-correlação menos espacial. Veja, por exemplo, a Figura 19 que ilustra por sombreado um membro em um determinado grupo de união. Obviamente, o movimento real do conteúdo da figura nestes blocos foi tão semelhante que o lado da codificação decidiu unir os respectivos blocos. A correlação com o movimento do conteúdo da figura em outros grupos de união, entretanto, é baixa. Certamente, a restrição para utilizar meramente um contexto por posição do código unário truncado 806 não impacta negativamente a eficiência da codificação de entropia, pois o conceito de combinação já acomoda para a inter-correlação espacial entre o conteúdo próximo do movimento da figura suficientemente. O contexto pode meramente ser selecionado com base no fato de que a posição faz parte da binarização de uma diferença do componente do vetor de movimento 802x,y e a localização da posição que é tanto 1 quanto 2 devido ao valor de corte sendo dois. Certamente, outras posições já decodificadas/elementos de sintaxe/componentes mvd 802x,y não influenciam a seleção de contexto.
[000265] Assim, o reconstrutor 404 pode ser configurado para reduzir o conteúdo de informação a ser transferido na forma das diferenças do vetor de movimento (além da previsão espacial e/ou temporal de vetores de movimento) utilizando um conceito de previsão multi-hipótese de acordo com o qual, primeiramente, uma lista de indicadores do vetor de movimento é gerada para cada bloco ou grupo de união, com então, explicitamente ou implicitamente transmitindo dentro do fluxo de dados informação sobre o índice do indicador a ser realmente utilizado para prever a diferença do vetor de movimento. Veja, por exemplo, o bloco não sombreado 122 na Figura 20. O reconstrutor 404 pode fornecer diferentes indicadores para o vetor de movimento deste bloco como prevendo o vetor de movimento espacialmente como da esquerda, de cima, uma combinação de ambos e assim por diante, e temporariamente prever o vetor de movimento do vetor de movimento de uma parte colocalizada de uma figura de vídeo previamente codificada e mais combinações dos indicadores previamente mencionados. Estes indicadores são classificados pelo reconstrutor 404 de forma previsível no lado da codificação. Alguma informação é conduzida para esta finalidade dentro do fluxo de dados e utilizada pelo reconstrutor. Ou seja, alguma dica contida no fluxo de dados, na qual o indicador desta lista ordenada de indicadores deve ser realmente utilizado como um indicador para o vetor de movimento deste bloco. Este índice pode ser transmitido dentro do fluxo de dados para este bloco explicitamente. Entretanto, também é possível que o índice seja primeiramente previsto e então meramente uma previsão dele transmitida. Outras possibilidades existem também. Em qualquer caso, o esquema de previsão agora mencionado permite uma precisão muito rigorosa do vetor de movimento do bloco atual e certamente, a exigência do conteúdo de informação imposta na diferença do vetor de movimento é reduzida. Certamente, a restrição da codificação de entropia adaptativa por contexto meramente nas duas posições do código unário truncado e uma redução do valor de corte abaixo de 2 conforme descrito com relação à Figura 18, bem como a seleção da ordem do código Golom exponencial para ser 1, não afeta negativamente a eficiência da codificação desde que as diferenças do vetor de movimento mostrem, devido à alta eficiência da previsão, um histograma de frequência de acordo com o qual os valores mais altos das diferenças do componente do vetor de movimento 802x,y são menos frequentemente visitados. Mesmo a omissão de qualquer distinção entre os componentes horizontais e verticais encaixa na previsão eficiente, pois a previsão tende a operar igualmente bem em ambas as direções da precisão da previsão ser alta.
[000266] É essencial observar que na descrição acima, todos os detalhes fornecidos com as Figuras 1-15 são também transferíveis nas entidades mostradas na Figura 16 como, por exemplo, desde que a funcionalidade do dessimbolizador 314, do reconstrutor 404 e do decodificador de entropia 409 seja referida. Independente disso, para integralidade, alguns destes detalhes são novamente descritos abaixo.
[000267] Para um melhor entendimento do esquema de previsão agora mencionado, veja a Figura 20. Conforme descrito, o construtor 404 pode obter diferentes indicadores para um bloco atual 822 ou um grupo de união de blocos atual, com estes indicadores sendo mostrados pelos vetores de linha sólida 824. Os indicadores podem ser obtidos pela previsão espacial e/ou temporal caracterizado por, adicionalmente, operações médias aritméticas ou semelhantes poder ser utilizadas de modo que os indicadores individuais possam ter sido obtidos pelo reconstrutor 404 de modo que o mesmo correlacione entre si. Independente da forma que os vetores 826 foram obtidos, o reconstrutor 404 sequencia ou classifica estes indicadores 126 em uma lista ordenada. Isso é ilustrado por números de 1 a 4 na Figura 21. É preferido se o processo de classificação for unicamente determinável de modo que o codificador e decodificador possam operar sincronicamente. Então, o índice agora mencionado pode ser obtido pelo reconstrutor 404 para o bloco atual, ou grupo de união, do fluxo de dados, explicitamente ou implicitamente. Por exemplo, o segundo indicador “2” pode ter sido selecionado e o reconstrutor 404 adiciona a diferença do vetor de movimento 800 para este indicador selecionado 126, assim produzindo o vetor de movimento finalmente reconstruído 128 que é então utilizado para prever, pela previsão compensada por movimento, o conteúdo do bloco atual/grupo de união. No caso do grupo de união, seria possível que o reconstrutor 404 compreenda mais diferenças do vetor de movimento fornecidas para os blocos do grupo de união, para refinais mais o vetor de movimento 128 com relação aos blocos individuais do grupo de união.
[000268] Assim, continuando com a descrição das implementações das entidades mostradas na Figura 16, pode ser que o decodificador de entropia 409 seja configurado para derivar o código unário truncado 806 do fluxo de dados 401 utilizando a decodificação aritmética binária ou codificação PIPE binária. Ambos os conceitos foram descritos acima. Ainda, o decodificador de entropia 409 pode ser configurado para utilizar diferentes contextos para as duas localizações da posição do código unário truncado 806 ou, alternativamente, mesmo o mesmo contexto para ambas as posições. O decodificador de entropia 409 poderia ser configurado para realizar uma atualização do estado de probabilidade. O decodificador de entropia 409 poderia fazer isso, para uma posição atualmente derivada do código unário truncado 806, pela transição de um estado de probabilidade atual associado ao contexto selecionado para uma posição atualmente derivada, em um novo estado de probabilidade dependendo da posição atualmente derivada. Veja acima as tabelas Next_State_LPS e Next_State_MPS a tabela de visualização com relação à qual é realizada pelo decodificador de entropia além de outras etapas de 0 a 5 listadas acima. Na discussão acima, o estado de probabilidade atual foi mencionado por pState_current. É definido para o respectivo contexto de interesse. O decodificador de entropia 409 pode ser configurado para decodificação aritmeticamente binária da posição atualmente a ser derivada do código unário truncado 806 quantificando um valor de largura de intervalo de probabilidade atual, ou seja, R, representando um intervalo de probabilidade atual para obter um índice de intervalo de probabilidade, q_index, e realizando uma subdivisão de intervalo pelo índice de uma entrada da tabela entre as entradas da tabela utilizando o índice de intervalo de probabilidade e um índice do estado de probabilidade, ou seja, p_state, que, por sua vez, depende do estado de probabilidade atual associado ao contexto selecionado para uma posição atualmente a ser derivada, para obter uma subdivisão do intervalo de probabilidade atual em dois intervalos parciais. Nas aplicações descritas acima, estes intervalos parciais foram associados ao símbolo mais e menos provável. Conforme descrito acima, o decodificador de entropia 409 pode ser configurado para utilizar uma representação de oito bits para o valor de largura de intervalo de probabilidade atual R com remoção, por exemplo, de dois ou três, bits mais significativos de a representação de oito bits e quantificando o valor de largura de intervalo de probabilidade atual. O decodificador de entropia 409 pode ainda ser configurado para selecionar entre os dois intervalos parciais com base em um valor de estado de compensação de um interior do intervalo de probabilidade atual, a saber V, atualizar o valor de largura do intervalo de probabilidade R e o valor de estado de compensação, e deduzir um valor da posição atualmente a ser derivado, utilizando o intervalo parcial selecionado e realizar uma renormalização do valor de largura do intervalo de probabilidade atualizado R e o valor de estado de compensação V incluindo uma continuação de bits de leitura do fluxo de dados 401. O decodificador de entropia 409 pode, por exemplo, ser configurado para decodificação aritmética binária de uma posição do código Golom exponencial dividindo o valor de largura de intervalo de probabilidade atual para obter uma subdivisão do intervalo de probabilidade atual em dois intervalos parciais. A divisão corresponde a uma estimativa de probabilidade que é fixa e igual a 0,5. Pode ser implementada por uma simples mudança de bit. O decodificador de entropia pode ainda ser configurado para, para cada diferença do vetor de movimento, derivar o código unário truncado dos componentes horizontais e verticais da respectiva diferença do vetor de movimento do fluxo de dados 401, antes do código Golom exponencial dos componentes horizontais e verticais da respectiva diferença do vetor de movimento. Por esta medição, o decodificador de entropia 409 pode explorar que o número mais alto de posições juntas formam uma realização de posições na qual a estimativa de probabilidade é fixada, a saber, 0,5. Isso pode acelerar o procedimento de decodificação de entropia. Por outro lado, o decodificador de entropia 409 pode preferir manter a ordem entre as diferenças do vetor de movimento primeiramente derivando os componentes horizontais e verticais de uma diferença do vetor de movimento com meramente então procedendo com a derivação dos componentes horizontais e verticais da próxima diferença do vetor de movimento. Por esta medição, as exigências de memória impostas na entidade de decodificação, ou seja, decodificador da Figura 16, são reduzidas, pois o dessimbolizador 314 pode proceder com a desbinarização das diferenças do vetor de movimento imediatamente sem ter que esperar uma varredura de mais diferenças do vetor de movimento. Isso é permitido pela seleção de contexto: como meramente exatamente um contexto está disponível por localização da posição do código 806, nenhuma inter-relação espacial deve ser inspecionada.
[000269] O reconstrutor 404 pode, conforme descrito acima, espacialmente e/ou temporariamente prever os componentes horizontais e verticais de vetores de movimento para obter indicadores 126 para os componentes horizontais e verticais do vetor de movimento e reconstruir os componentes horizontais e verticais dos vetores de movimento aperfeiçoando os indicadores 826 utilizando os componentes horizontais e verticais das diferenças do vetor de movimento, como simplesmente adicionando a diferença do vetor de movimento no respectivo indicador.
[000270] Ainda, o reconstrutor 404 pode ser configurado para prever os componentes horizontais e verticais de vetores de movimento em diferentes formas para obter uma lista ordenada de indicadores para o componente horizontal e vertical de vetores de movimento, obter um índice da lista do fluxo de dados e reconstruir os componentes horizontais e verticais de vetores de movimento aperfeiçoando o indicador no qual um indicador da lista na qual o índice da lista aponta utilizando os componentes horizontais e verticais das diferenças do vetor de movimento.
[000271] Ainda, conforme foi descritos acima, o reconstrutor 404 pode ser configurado para reconstruir o vídeo utilizando a previsão compensada por movimento aplicando o componente horizontal e vertical 802x,y dos vetores de movimento em uma granularidade espacial definida por uma subdivisão das figuras do vídeo em blocos caracterizado pelo reconstrutor 404 poder utilizar os elementos de sintaxe de união presente no fluxo de dados 401 para agrupar os blocos em grupos de união e aplicar os valores de número inteiro dos componentes horizontais e verticais 802x,y das diferenças do vetor de movimento obtidas pelo binarizador 314, nas unidades de grupos de união.
[000272] O reconstrutor 404 pode derivar a subdivisão das figuras do vídeo em blocos de uma parte do fluxo de dados 401 que exclui os elementos de sintaxe de união. O reconstrutor 404 também pode adaptar os componentes horizontais e verticais do vetor de movimento predeterminado para todos os blocos de um grupo de união associado, ou refinar o mesmo pelos componentes horizontais e verticais das diferenças do vetor de movimento associados aos blocos do grupo de união.
[000273] Apenas para fins de integralidade, a Figura 17 mostra um encaixe do codificador ao decodificador da Figura 16. O codificador da Figura 17 compreende um construtor 504, um simbolizador 507 e um codificador de entropia 513. O codificador compreende um construtor 504 configurado para preditivamente codificar o vídeo 505 pela previsão compensada pelo movimento utilizando vetores de movimento e preditivamente codificar os vetores de movimento pela previsão dos vetores de movimento e definindo os valores de número inteiro 506 de componentes horizontais e verticais de diferenças do vetor de movimento para representar um erro de previsão dos vetores de movimento previstos; um simbolizador 507 configurado para binarizar os valores de número inteiro para obter binarizações 508 dos componentes horizontais e verticais das diferenças do vetor de movimento, as binarizações equalizando um código unário truncado dos componentes horizontais e verticais, respectivamente, dentro de um primeiro intervalo do domínio dos componentes horizontais e verticais abaixo de um valor de corte, e uma combinação de um prefixo na forma do código unário truncado para o valor de corte e um sufixo na forma de um código Exp-Golomb dos componentes horizontais e verticais, respectivamente, dentro de um segundo intervalo do domínio dos componentes horizontais e verticais inclusivos e acima do valor de corte, caracterizado pelo valor de corte ser dois e o código Exp-Golomb ter ordem um; e um codificador de entropia 513 configurado para, para os componentes horizontais e verticais das diferenças do vetor de movimento, codificar o código unário truncado no fluxo de dados utilizando codificação de entropia binária adaptativa por codificação com exatamente um contexto por localização da posição do código unário truncado, que é comum para os componentes horizontais e verticais das diferenças do vetor de movimento, e o código Exp-Golomb utilizando um modo de derivação de equiprobabilidade constante. Mais possíveis detalhes de implementação são diretamente transferíveis da descrição com relação ao decodificador da Figura 16 no codificador da Figura 17.
[000274] Embora alguns aspectos tenham sido descritos no contexto de um aparelho, fica claro que estes aspectos também representam uma descrição do método correspondente, onde um bloco ou dispositivo corresponde a uma etapa do método ou a uma função de uma etapa do método. De modo análogo, os aspectos descritos no contexto de uma etapa do método também representam uma descrição de um bloco correspondente ou item ou função de um aparelho correspondente. Algumas ou todas as etapas do método podem ser executadas por (ou utilizando) um aparelho de hardware, como, por exemplo, um microprocessador, um computador programável ou um circuito eletrônico. Em algumas aplicações, uma ou mais das etapas mais importantes do método podem ser executadas pelo referido aparelho.
[000275] O sinal decomposto inventivo pode ser armazenado em um meio de armazenamento digital ou pode ser transmitido por um médio de transmissão, tal como um meio de transmissão sem fio ou um meio de transmissão por fio, tal como a internet.
[000276] Dependendo de certas exigências de implantação, as aplicações da invenção podem ser implementadas em hardware ou em software. A implementação pode ser realizada utilizando um meio de armazenamento digital, por exemplo, um disquete, um DVD, um CD, uma memória ROM, uma PROM, uma EPROM, uma EEPROM ou uma memória FLASH, tendo sinais de controle legíveis eletronicamente armazenados nele, que cooperam (ou são capazes de cooperar) com um sistema de computador programável de modo que o respectivo método seja realizado. Portanto, um meio de armazenamento digital pode ser legível por computador.
[000277] Algumas aplicações de acordo com a invenção compreendem um suporte de dados tendo sinais de controle eletronicamente legíveis que são capazes de cooperar com um sistema de computador programável, de modo que um dos métodos descritos aqui seja realizado.
[000278] Geralmente, as aplicações da presente invenção podem ser implementadas como um produto de programa de computador com um código do produto, o código do produto sendo operativo para realizar um dos métodos quando o produto do programa de computador for executado em um computador. O código do produto pode, por exemplo, ser armazenado em um suporte legível por máquina.
[000279] Outras aplicações compreendem o programa de computador para realizar um dos métodos descritos aqui, armazenado em um suporte legível por máquina.
[000280] Em outras palavras, uma aplicação do método inventivo é, portanto, um programa de computador tendo um código do produto para realizar um dos métodos descritos aqui, quando o programa de computador é executado em um computador.
[000281] Outra aplicação do método inventivo é, portanto, um suporte de dados (ou um meio de armazenamento digital, ou um meio legível por computador) compreendendo, gravado nele, o programa de computador para realizar um dos métodos descritos aqui. O suporte de dados, o meio de armazenamento digital ou o meio gravador são tipicamente tangíveis e/ou não transitórios.
[000282] Outra aplicação do método inventivo é, portanto, um fluxo de dados ou uma sequência de sinais representando o programa de computador para realizar um dos métodos descritos aqui. O fluxo de dados ou a sequência de sinais pode, por exemplo, ser configurado para ser transferido através de uma conexão de comunicação de dados, por exemplo, através da Internet.
[000283] Uma aplicação adicional compreende um meio de processamento, por exemplo, um computador, ou um dispositivo lógico programável, configurado ou adaptado para realizar um dos métodos descritos aqui.
[000284] Uma aplicação adicional compreende um computador tendo instalado nele o programa de computador para realizar um dos métodos descritos aqui.
[000285] Um aplicação adicional de acordo com a invenção compreende um aparelho ou um sistema configurado para transferir (por exemplo, ótica ou eletronicamente) um programa de computador para realizar um dos métodos descritos aqui para um receptor. O receptor pode, por exemplo, ser um computador, um dispositivo móvel, um dispositivo de memória ou similar. O aparelho ou sistema pode, por exemplo, compreender um servidor de arquivos para transferir o programa de computador para um receptor.
[000286] Em algumas aplicações, um dispositivo lógico programável (por exemplo, um arranjo de portas lógicas programáveis) pode ser utilizado para realizar algumas ou todas as funcionalidades dos métodos descritos aqui. Em algumas aplicações, um arranjo de portas lógicas programáveis pode cooperar com um microprocessador para realizar um dos métodos descritos aqui. Geralmente, os métodos são preferivelmente realizados por qualquer aparelho de hardware.
[000287] As aplicações acima descritas são meramente ilustrativas para os princípios da presente invenção. Deve ser entendido que modificações e variações das disposições e detalhes descritos aqui serão evidentes a outros especialistas na técnica. É a intenção, portanto, serem limitadas apenas pelo escopo das reivindicações de patente pendente e não pelos detalhes específicos apresentados em forma de descrição e explicação das aplicações aqui contidas.

Claims (27)

1. Decodificador para decodificar um vídeo a partir de um fluxo de dados, em que o vídeo é decodificado de forma preditiva por predição compensada de movimento usando vetores de movimento e diferenças de vetor de movimento que representam um erro de predição em relação aos vetores de movimento, o decodificador caracterizado por compreender: um decodificador de entropia configurado para, para componentes horizontais e verticais de cada uma das diferenças do vetor de movimento, obter, a partir do fluxo de dados, um código unário truncado e um código Golomb exponencial, decodificar o código unário truncado usando a decodificação de entropia binária adaptável ao contexto com exatamente um contexto por posição bin do código unário truncado, em que o contexto é compartilhado pelos componentes horizontais e verticais da diferença do vetor de movimento, e decodificar o código Golomb exponencial usando um modo de desvio de equiprobabilidade constante, para obter as componentes horizontal e vertical da diferença do vetor de movimento; e um reconstrutor configurado para reconstruir o vídeo com base nos componentes horizontal e vertical das diferenças do vetor de movimento.
2. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o decodificador de entropia é configurado para usar contextos diferentes para as diferentes posições de bin do código unário truncado.
3. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o decodificador de entropia é configurado para realizar uma atualização de estado de probabilidade, para um bin atualmente derivado do código unário truncado, fazendo a transição de um estado de probabilidade atual associado ao contexto selecionado para o bin sendo atualmente derivado, para um novo estado de probabilidade dependendo do bin sendo atualmente derivado.
4. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o decodificador de entropia é configurado para decodificar aritmética binária um bin atualmente a ser derivado do código unário truncado quantizando um valor de largura de intervalo de probabilidade atual que representa um intervalo de probabilidade atual para adquirir um índice de intervalo de probabilidade e realização de uma subdivisão de intervalo indexando uma entrada de tabela entre as entradas de tabela usando o índice de intervalo de probabilidade e um índice de estado de probabilidade dependendo de um estado de probabilidade atual associado ao contexto selecionado para o bin atualmente a ser derivado, para adquirir um sub- divisão do intervalo de probabilidade atual em dois intervalos parciais.
5. Decodificador, de acordo com a reivindicação 4, caracterizado pelo fato de que o decodificador de entropia é configurado para usar uma representação de 8 bits para o valor da largura do intervalo de probabilidade atual e para obter 2 ou 3 bits mais significativos da representação de 8 bits na quantização do valor atual da largura do intervalo de probabilidade.
6. Decodificador, de acordo com a reivindicação 4, caracterizado pelo fato de que o decodificador de entropia é configurado para selecionar um intervalo parcial dos dois intervalos parciais com base em um valor de estado de deslocamento de um interior do intervalo de probabilidade atual, atualizar o valor da largura do intervalo de probabilidade e o valor do estado de deslocamento e inferir um valor do bin atualmente a ser derivado, usando o intervalo parcial selecionado e realizar uma renormalização do valor de largura do intervalo de probabilidade atualizado e o valor do estado de deslocamento compreendendo uma continuação de bits de leitura do fluxo de dados.
7. Decodificador, de acordo com a reivindicação 4, caracterizado pelo fato de que o decodificador de entropia é configurado para, no modo de desvio de equiprobabilidade constante, decodificar aritmética binária um bin fora do código Golomb exponencial reduzindo pela metade o valor da largura do intervalo de probabilidade atual para adquirir uma subdivisão do intervalo de probabilidade atual em dois intervalos parciais.
8. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o decodificador de entropia é configurado para, para cada diferença de vetor de movimento, derivar o código unário truncado dos componentes horizontal e vertical da respectiva diferença de vetor de movimento do fluxo de dados, antes de derivando o código Golomb exponencial das componentes horizontal e vertical da respectiva diferença do vetor de movimento.
9. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o reconstrutor é configurado para predizer espacial e / ou temporalmente os componentes horizontal e vertical dos vetores de movimento, de modo a adquirir preditores para os componentes horizontal e vertical dos vetores de movimento e reconstruir os componentes horizontal e vertical dos vetores de movimento refinando os preditores usando os componentes horizontal e vertical das diferenças do vetor de movimento.
10. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o reconstrutor é configurado para prever os componentes horizontal e vertical dos vetores de movimento de diferentes maneiras, de modo a obter uma lista ordenada de preditores para os componentes horizontal e vertical dos vetores de movimento, obter a partir do fluxo de dados, um índice de lista correspondente a um preditor na lista ordenada e reconstruir os componentes horizontal e vertical dos vetores de movimento refinando o preditor indicado pelo índice de lista usando os componentes horizontal e vertical das diferenças do vetor de movimento.
11. Decodificador de acordo com a reivindicação 9, caracterizado por o reconstrutor ser configurado para reconstruir o vídeo usando predição compensada por movimento pelo uso dos componentes horizontal e vertical dos vetores de movimento.
12. Decodificador, de acordo com a reivindicação 11, caracterizado pelo fato de que o reconstrutor é configurado para reconstruir o vídeo usando a predição compensada por movimento aplicando os componentes horizontal e vertical dos vetores de movimento em uma granularidade espacial definida por uma subdivisão do vídeo imagens em blocos, em que o reconstrutor usa elementos de sintaxe de fusão presentes no fluxo de dados de modo a agrupar os blocos em grupos de fusão e aplicar os componentes horizontais e verticais das diferenças do vetor de movimento, em unidades de grupos de fusão.
13. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o fluxo de dados compreende pelo menos uma porção associada a amostras de cores.
14. Decodificador, de acordo com a reivindicação 1, caracterizado pelo fato de que o fluxo de dados compreende pelo menos uma porção associada aos valores de profundidade relacionados a um mapa de profundidade.
15. Codificador para codificar um vídeo em um fluxo de dados, caracterizado por compreender: um construtor configurado para codificar preditivamente o vídeo por previsão compensada de movimento usando vetores de movimento e componentes horizontais e verticais de diferenças de vetores de movimento que representam um erro de previsão em relação aos vetores de movimento; e um codificador de entropia configurado para, para componentes horizontais e verticais de cada uma das diferenças do vetor de movimento, codificar, no fluxo de dados, um código unário truncado codificado usando a codificação de entropia binária adaptável ao contexto com exatamente um contexto por posição bin do código unário truncado, em que o contexto é compartilhado pelos componentes horizontais e verticais da diferença do vetor de movimento, e codificar, no fluxo de dados, um código Golomb exponencial codificado usando um modo de desvio de equiprobabilidade constante.
16. Codificador, de acordo com a reivindicação 15, caracterizado pelo fato de que o codificador de entropia é configurado para usar contextos diferentes para as diferentes posições de bin do código unário truncado.
17. Codificador, de acordo com a reivindicação 15, caracterizado pelo fato de que o codificador de entropia é configurado para realizar uma atualização de estado de probabilidade por, para um bin atualmente codificado fora do código unário truncado, a transição de um estado de probabilidade atual associado ao contexto selecionado para o bin atualmente codificado, para um novo estado de probabilidade dependendo do bin atualmente codificado.
18. Codificador, de acordo com a reivindicação 15, caracterizado pelo fato de que o codificador de entropia é configurado para codificar aritmética binária um bin atualmente a ser codificado fora do código unário truncado quantizando um valor de largura de intervalo de probabilidade atual que representa um intervalo de probabilidade atual para obter um índice de intervalo de probabilidade e realização de uma subdivisão de intervalo indexando uma entrada de tabela entre as entradas de tabelas usando o índice de intervalo de probabilidade e um índice de estado de probabilidade dependendo de um estado de probabilidade atual associado ao contexto selecionado para o bin atualmente a ser codificado, para obter um sub- divisão do intervalo de probabilidade atual em dois intervalos parciais.
19. Codificador, de acordo com a reivindicação 22, caracterizado pelo fato de que o codificador de entropia é configurado para selecionar entre os dois intervalos parciais com base no valor inteiro do bin atualmente a ser codificado, atualizar o valor da largura do intervalo de probabilidade e um deslocamento do intervalo de probabilidade usando o intervalo parcial selecionado e realizar uma renormalização do valor da largura do intervalo de probabilidade e o deslocamento do intervalo de probabilidade compreendendo uma continuação dos bits de gravação no fluxo de dados.
20. Codificador, de acordo com a reivindicação 15, caracterizado pelo fato de que o codificador de entropia é configurado para, para cada diferença de vetor de movimento, codificar o código unário truncado dos componentes horizontal e vertical da respectiva diferença de vetor de movimento no fluxo de dados, antes de codificar o código Golomb exponencial dos componentes horizontal e vertical da respectiva diferença do vetor de movimento.
21. Codificador, de acordo com a reivindicação 15, caracterizado pelo fato de que o construtor é configurado para prever espacialmente e / ou temporalmente os componentes horizontal e vertical dos vetores de movimento, de modo a obter preditores para os componentes horizontal e vertical dos vetores de movimento e determinar o componentes horizontal e vertical das diferenças do vetor de movimento, de modo a refinar os preditores em direção às componentes horizontal e vertical dos vetores de movimento.
22. Codificador, de acordo com a reivindicação 15, caracterizado pelo fato de que o construtor é configurado para prever os componentes horizontal e vertical dos vetores de movimento de diferentes maneiras, a fim de obter uma lista ordenada de preditores para os componentes horizontal e vertical dos vetores de movimento, obter a partir do fluxo de dados um índice de lista correspondente a um preditor na lista ordenada e determinar os componentes horizontais e verticais das diferenças do vetor de movimento de modo a refinar o preditor indicado pelo índice de lista em direção aos componentes horizontal e vertical de vetores de movimento.
23. Codificador, de acordo com a reivindicação 15, caracterizado pelo fato de que o construtor é configurado para codificar o vídeo usando a predição compensada por movimento aplicando os componentes horizontal e vertical dos vetores de movimento em uma granularidade espacial definida por uma subdivisão do vídeo imagens em blocos, em que o construtor é ainda configurado para determinar e inserir no fluxo de dados, mesclando elementos de sintaxe de modo a agrupar os blocos em grupos de mesclagem e aplicar os componentes horizontais e verticais das diferenças do vetor de movimento, em unidades de grupos de mesclagem.
24. Codificador, de acordo com a reivindicação 15, caracterizado pelo fato de que o fluxo de dados compreende pelo menos uma porção associada a amostras de cores.
25. Codificador, de acordo com a reivindicação 15, caracterizado pelo fato de que o fluxo de dados compreende pelo menos uma porção associada aos valores de profundidade relacionados a um mapa de profundidade.
26. Método para decodificar um vídeo de um fluxo de dados, em que o vídeo é codificado de forma preditiva por predição compensada de movimento usando vetores de movimento e diferenças de vetor de movimento que representam um erro de predição em relação aos vetores de movimento, o método caracterizado pelo fato de que compreende: para componentes horizontais e verticais de cada uma das diferenças do vetor de movimento, obter, a partir do fluxo de dados, um código unário truncado e um código Golomb exponencial, decodificar o código unário truncado usando decodificação de entropia binária adaptável ao contexto com exatamente um contexto por posição bin do código unário truncado, em que o contexto é compartilhado pelos componentes horizontais e verticais da diferença do vetor de movimento, e decodificar o código Golomb exponencial usando um modo de desvio de equiprobabilidade constante, para obter os componentes horizontal e vertical da diferença do vetor de movimento; e reconstruir o vídeo com base nos componentes horizontal e vertical das diferenças do vetor de movimento.
27. Meio legível não transitório para armazenar dados associados a um vídeo, compreendendo: um fluxo de dados armazenado no meio legível por computador não transitório, o fluxo de dados compreendendo componentes horizontais e verticais codificados de diferenças de vetor de movimento, em que o vídeo é codificado de forma preditiva por predição compensada de movimento usando vetores de movimento codificados no fluxo de dados e horizontal e componentes verticais das diferenças do vetor de movimento representam um erro de predição em relação aos vetores de movimento, caracterizado pelo fato de que, para componentes horizontais e verticais de cada uma das diferenças do vetor de movimento, um código unário truncado é codificado usando codificação de entropia binária adaptável ao contexto com exatamente um contexto por posição bin do código unário truncado, o contexto é compartilhado pelo horizontal e vertical componentes da diferença do vetor de movimento e um código Golomb exponencial é codificado usando um modo de desvio de equiprobabilidade constante.
BR122021000264-9A 2011-06-16 2012-06-18 Codificação de entropia das diferenças do vetor de movimento BR122021000264B1 (pt)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201161497794P 2011-06-16 2011-06-16
US61/497,794 2011-06-16
US201161508506P 2011-07-15 2011-07-15
US61/508,506 2011-07-15
PCT/EP2012/061613 WO2012172113A1 (en) 2011-06-16 2012-06-18 Entropy coding of motion vector differences
BR112013032333-7A BR112013032333B1 (pt) 2011-06-16 2012-06-18 Comutação de modo auxiliar para codificação por entropia

Publications (1)

Publication Number Publication Date
BR122021000264B1 true BR122021000264B1 (pt) 2022-02-22

Family

ID=46319135

Family Applications (4)

Application Number Title Priority Date Filing Date
BR122020024986-2A BR122020024986B1 (pt) 2011-06-16 2012-06-18 Codificação de entropia das diferenças do vetor de movimento
BR112013032333-7A BR112013032333B1 (pt) 2011-06-16 2012-06-18 Comutação de modo auxiliar para codificação por entropia
BR122021000264-9A BR122021000264B1 (pt) 2011-06-16 2012-06-18 Codificação de entropia das diferenças do vetor de movimento
BR112013032332-9A BR112013032332B1 (pt) 2011-06-16 2012-06-18 Inicialização de contexto em codificação de entropia

Family Applications Before (2)

Application Number Title Priority Date Filing Date
BR122020024986-2A BR122020024986B1 (pt) 2011-06-16 2012-06-18 Codificação de entropia das diferenças do vetor de movimento
BR112013032333-7A BR112013032333B1 (pt) 2011-06-16 2012-06-18 Comutação de modo auxiliar para codificação por entropia

Family Applications After (1)

Application Number Title Priority Date Filing Date
BR112013032332-9A BR112013032332B1 (pt) 2011-06-16 2012-06-18 Inicialização de contexto em codificação de entropia

Country Status (31)

Country Link
US (36) US9473170B2 (pt)
EP (9) EP2721822B1 (pt)
JP (12) JP6059212B2 (pt)
KR (13) KR102437504B1 (pt)
CN (26) CN103931194B (pt)
AP (3) AP4072A (pt)
AU (11) AU2012268951B2 (pt)
BR (4) BR122020024986B1 (pt)
CA (2) CA2839569C (pt)
CL (2) CL2013003603A1 (pt)
CO (2) CO6852031A2 (pt)
CY (1) CY1124687T1 (pt)
DK (5) DK3471415T3 (pt)
ES (5) ES2906869T3 (pt)
FI (2) FI2721819T3 (pt)
HK (17) HK1197128A1 (pt)
HR (1) HRP20220272T1 (pt)
HU (5) HUE057958T2 (pt)
IL (15) IL309379A (pt)
LT (4) LT3343781T (pt)
MX (7) MX2013014868A (pt)
MY (2) MY184473A (pt)
PH (15) PH12018500328B1 (pt)
PL (5) PL3343781T3 (pt)
PT (5) PT3343781T (pt)
RS (4) RS64604B1 (pt)
RU (7) RU2595934C2 (pt)
SI (4) SI2721819T1 (pt)
UA (2) UA123987C2 (pt)
WO (3) WO2012172115A1 (pt)
ZA (2) ZA201400029B (pt)

Families Citing this family (215)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
HUE025960T2 (en) 2010-04-13 2016-04-28 Ge Video Compression Llc Video coding using multi-tree subdivisions of images
KR101529842B1 (ko) 2010-04-13 2015-06-17 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 샘플 배열 멀티트리 세부분할에서 계승
CN106067983B (zh) 2010-04-13 2019-07-12 Ge视频压缩有限责任公司 解码数据流的方法、生成数据流的方法及解码器
TWI713356B (zh) 2010-04-13 2020-12-11 美商Ge影像壓縮有限公司 樣本區域合併技術
US9288089B2 (en) 2010-04-30 2016-03-15 Ecole Polytechnique Federale De Lausanne (Epfl) Orthogonal differential vector signaling
US9288082B1 (en) 2010-05-20 2016-03-15 Kandou Labs, S.A. Circuits for efficient detection of vector signaling codes for chip-to-chip communication using sums of differences
US8593305B1 (en) 2011-07-05 2013-11-26 Kandou Labs, S.A. Efficient processing and detection of balanced codes
US9077386B1 (en) 2010-05-20 2015-07-07 Kandou Labs, S.A. Methods and systems for selection of unions of vector signaling codes for power and pin efficient chip-to-chip communication
US9246713B2 (en) 2010-05-20 2016-01-26 Kandou Labs, S.A. Vector signaling with reduced receiver complexity
US9124557B2 (en) 2010-05-20 2015-09-01 Kandou Labs, S.A. Methods and systems for chip-to-chip communication with reduced simultaneous switching noise
US9985634B2 (en) 2010-05-20 2018-05-29 Kandou Labs, S.A. Data-driven voltage regulator
US9251873B1 (en) 2010-05-20 2016-02-02 Kandou Labs, S.A. Methods and systems for pin-efficient memory controller interface using vector signaling codes for chip-to-chip communications
US9667379B2 (en) 2010-06-04 2017-05-30 Ecole Polytechnique Federale De Lausanne (Epfl) Error control coding for orthogonal differential vector signaling
US20120182388A1 (en) * 2011-01-18 2012-07-19 Samsung Electronics Co., Ltd. Apparatus and method for processing depth image
RS64604B1 (sr) * 2011-06-16 2023-10-31 Ge Video Compression Llc Entropijsko kodiranje razlika vektora kretanja
EP4220966A1 (en) 2011-06-24 2023-08-02 Sun Patent Trust Image decoding device,
CN105554510B (zh) 2011-06-28 2019-06-28 三星电子株式会社 对视频进行解码的方法和设备
US11647197B2 (en) * 2011-06-30 2023-05-09 Velos Media, Llc Context initialization based on slice header flag and slice type
AU2012285851B2 (en) 2011-07-15 2015-11-12 Ge Video Compression, Llc Sample array coding for low-delay
UA114674C2 (uk) 2011-07-15 2017-07-10 ДЖ.І. ВІДІЕУ КЕМПРЕШН, ЛЛСі Ініціалізація контексту в ентропійному кодуванні
EP2988511A1 (en) 2011-08-04 2016-02-24 MediaTek Inc. Method and apparatus for reordered binarization of syntax elements in cabac
EP2740263B1 (en) * 2011-09-16 2019-02-27 HFI Innovation Inc. Method and apparatus for prediction mode and partition mode syntax coding for coding units in hevc
JP6130839B2 (ja) * 2011-10-06 2017-05-17 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン エントロピー符号化
US20130101047A1 (en) * 2011-10-19 2013-04-25 Sony Corporation Context reduction of significance map coding of 4x4 and 8x8 transform coefficient in hm4.0
US9871537B2 (en) * 2011-10-27 2018-01-16 Qualcomm Incorporated Mapping states in binary arithmetic coder for video coding
US9484952B2 (en) 2011-11-03 2016-11-01 Qualcomm Incorporated Context state and probability initialization for context adaptive entropy coding
MY167316A (en) * 2011-11-04 2018-08-16 Sharp Kk Arithmetic decoding device, image decoding device, arithmetic coding device, image coding device, and arithmetic decoding method
KR20130050403A (ko) * 2011-11-07 2013-05-16 오수미 인터 모드에서의 복원 블록 생성 방법
US9503717B2 (en) * 2012-01-09 2016-11-22 Texas Instruments Incorporated Context adaptive binary arithmetic coding (CABAC) with scalable throughput and coding efficiency
WO2013106987A1 (en) * 2012-01-16 2013-07-25 Mediatek Singapore Pte. Ltd. Methods and apparatuses of bypass coding and reducing contexts for some syntax elements
US20130188698A1 (en) * 2012-01-19 2013-07-25 Qualcomm Incorporated Coefficient level coding
US9866829B2 (en) * 2012-01-22 2018-01-09 Qualcomm Incorporated Coding of syntax elements that correspond to coefficients of a coefficient block in video coding
US11039138B1 (en) * 2012-03-08 2021-06-15 Google Llc Adaptive coding of prediction modes using probability distributions
JP6156723B2 (ja) * 2012-03-08 2017-07-05 サン パテント トラスト 画像符号化方法、画像復号化方法、画像符号化装置および画像復号化装置
US9237344B2 (en) * 2012-03-22 2016-01-12 Qualcomm Incorporated Deriving context for last position coding for 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
US9621921B2 (en) 2012-04-16 2017-04-11 Qualcomm Incorporated Coefficient groups and coefficient coding for coefficient scans
WO2013175698A1 (ja) 2012-05-25 2013-11-28 パナソニック株式会社 画像符号化方法、画像符号化装置、画像復号方法、画像復号装置および画像符号化復号装置
EP2858354B1 (en) 2012-05-25 2022-12-21 Sun Patent Trust Video image coding method, video image decoding method, video image coding device, video image decoding device, and video image coding-decoding device
WO2013175736A1 (ja) * 2012-05-25 2013-11-28 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置
JP6288423B2 (ja) 2012-06-04 2018-03-07 サン パテント トラスト 動画像符号化方法、動画像符号化装置、動画像復号方法、および、動画像復号装置
DE102012224060A1 (de) * 2012-12-20 2014-06-26 Robert Bosch Gmbh Verfahren zur Datenübertragung für ein Batteriemanagementsystem
WO2014124450A1 (en) 2013-02-11 2014-08-14 Kandou Labs, S.A. Methods and systems for high bandwidth chip-to-chip communications interface
CN104053007B (zh) * 2013-03-15 2019-05-07 乐金电子(中国)研究开发中心有限公司 深度图像帧内编码模式索引值配置方法及装置
GB2513111A (en) 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding
KR102241045B1 (ko) 2013-04-16 2021-04-19 칸도우 랩스 에스에이 고 대역폭 통신 인터페이스를 위한 방법 및 시스템
KR20160024975A (ko) 2013-06-25 2016-03-07 뉴메리 엘티디. 비디오의 멀티-레벨 공간적-시간적 레졸루션 증가
WO2014210074A1 (en) 2013-06-25 2014-12-31 Kandou Labs SA Vector signaling with reduced receiver complexity
US10021419B2 (en) * 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
US20150098504A1 (en) * 2013-10-09 2015-04-09 Qualcomm Incorporated Block vector coding for intra block copying
WO2015089623A1 (en) * 2013-12-16 2015-06-25 Mcafee, Inc. Process efficient preprocessing for an encryption standard
GB2521828A (en) 2013-12-23 2015-07-08 Sony Corp Data encoding and decoding
WO2015100522A1 (en) * 2013-12-30 2015-07-09 Mediatek Singapore Pte. Ltd. Methods for inter-component residual prediction
US9806761B1 (en) 2014-01-31 2017-10-31 Kandou Labs, S.A. Methods and systems for reduction of nearest-neighbor crosstalk
EP3100424B1 (en) 2014-02-02 2023-06-07 Kandou Labs S.A. Method and apparatus for low power chip-to-chip communications with constrained isi ratio
US9787799B2 (en) 2014-02-27 2017-10-10 Dropbox, Inc. Systems and methods for managing content items having multiple resolutions
US10885104B2 (en) * 2014-02-27 2021-01-05 Dropbox, Inc. Systems and methods for selecting content items to store and present locally on a user device
EP3672176B1 (en) 2014-02-28 2022-05-11 Kandou Labs, S.A. Clock-embedded vector signaling codes
US9509437B2 (en) 2014-05-13 2016-11-29 Kandou Labs, S.A. Vector signaling code with improved noise margin
US20150334425A1 (en) * 2014-05-14 2015-11-19 Blackberry Limited Adaptive context initialization
US9148087B1 (en) 2014-05-16 2015-09-29 Kandou Labs, S.A. Symmetric is linear equalization circuit with increased gain
CA2950180C (en) 2014-05-28 2020-04-21 Arris Enterprises Llc Acceleration of context adaptive binary arithmetic coding (cabac) in video codecs
US9337862B2 (en) * 2014-06-09 2016-05-10 Tidal Systems, Inc. VLSI efficient Huffman encoding apparatus and method
US9852806B2 (en) 2014-06-20 2017-12-26 Kandou Labs, S.A. System for generating a test pattern to detect and isolate stuck faults for an interface using transition coding
US9930341B2 (en) * 2014-06-20 2018-03-27 Qualcomm Incorporated Block vector coding for intra block copying
US9112550B1 (en) 2014-06-25 2015-08-18 Kandou Labs, SA Multilevel driver for high speed chip-to-chip communications
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
CN106797352B (zh) 2014-07-10 2020-04-07 康杜实验室公司 高信噪特性向量信令码
US9432082B2 (en) 2014-07-17 2016-08-30 Kandou Labs, S.A. Bus reversable orthogonal differential vector signaling codes
WO2016014423A1 (en) 2014-07-21 2016-01-28 Kandou Labs S.A. Multidrop data transfer
KR101949964B1 (ko) 2014-08-01 2019-02-20 칸도우 랩스 에스에이 임베딩된 클록을 갖는 직교 차동 벡터 시그널링 코드
US10283091B2 (en) * 2014-10-13 2019-05-07 Microsoft Technology Licensing, Llc Buffer optimization
CN105578180B (zh) * 2014-10-16 2019-01-15 联想(北京)有限公司 一种编码方法及装置
US9674014B2 (en) 2014-10-22 2017-06-06 Kandou Labs, S.A. Method and apparatus for high speed chip-to-chip communications
CN104392725A (zh) * 2014-12-02 2015-03-04 中科开元信息技术(北京)有限公司 多声道无损音频混合编解码方法及装置
US10097833B2 (en) * 2014-12-26 2018-10-09 Intel Corporation Method and system of entropy coding using look-up table based probability updating for video coding
US10057580B2 (en) * 2015-01-30 2018-08-21 Mediatek Inc. Method and apparatus for entropy coding of source samples with large alphabet
US9942551B2 (en) * 2015-01-30 2018-04-10 Qualcomm Incorporated Palette index grouping for video coding
EP3254465A1 (en) * 2015-02-05 2017-12-13 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Multi-view video codec supporting residual prediction
US9930378B2 (en) * 2015-02-11 2018-03-27 Qualcomm Incorporated Signaling of operation points for carriage of HEVC extensions
US10200711B2 (en) 2015-03-27 2019-02-05 Qualcomm Incorporated Motion vector derivation in video coding
CN112235575B (zh) 2015-04-08 2024-01-12 寰发股份有限公司 编码方法、编码装置和相应地计算机可读存储介质
WO2016178880A1 (en) * 2015-05-06 2016-11-10 NGCodec Inc. Intra prediction processor with reduced cost block partitioning and refined intra mode selection
EP3269141B1 (en) * 2015-05-19 2021-06-23 MediaTek Inc. Method and apparatus for multi-table based context adaptive binary arithmetic coding
KR102372931B1 (ko) 2015-06-26 2022-03-11 칸도우 랩스 에스에이 고속 통신 시스템
WO2017034113A1 (ko) * 2015-08-24 2017-03-02 엘지전자(주) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
WO2017041271A1 (en) * 2015-09-10 2017-03-16 Mediatek Singapore Pte. Ltd. Efficient context modeling for coding a block of data
ES2844525B1 (es) * 2015-09-11 2022-07-05 Kt Corp Metodo para decodificar un video
US10158874B2 (en) * 2015-09-30 2018-12-18 Apple Inc. Parallel bypass and regular bin coding
US10198355B2 (en) 2015-10-29 2019-02-05 Dropbox, Inc. Proving a dynamic digital content cache
US10440399B2 (en) * 2015-11-13 2019-10-08 Qualcomm Incorporated Coding sign information of video data
US10055372B2 (en) 2015-11-25 2018-08-21 Kandou Labs, S.A. Orthogonal differential vector signaling codes with embedded clock
US10003315B2 (en) 2016-01-25 2018-06-19 Kandou Labs S.A. Voltage sampler driver with enhanced high-frequency gain
FR3047379A1 (fr) * 2016-01-29 2017-08-04 Orange Procede de codage et decodage de donnees, dispositif de codage et decodage de donnees et programmes d'ordinateur correspondants
US10791097B2 (en) 2016-04-14 2020-09-29 Sophos Limited Portable encryption format
US10573324B2 (en) 2016-02-24 2020-02-25 Dolby International Ab Method and system for bit reservoir control in case of varying metadata
US10003454B2 (en) 2016-04-22 2018-06-19 Kandou Labs, S.A. Sampler with low input kickback
CN115085727A (zh) 2016-04-22 2022-09-20 康杜实验室公司 高性能锁相环
US10153591B2 (en) 2016-04-28 2018-12-11 Kandou Labs, S.A. Skew-resistant multi-wire channel
EP3449606A4 (en) 2016-04-28 2019-11-27 Kandou Labs S.A. LOW POWER MULTILAYER ATTACK CIRCUIT
WO2017189931A1 (en) 2016-04-28 2017-11-02 Kandou Labs, S.A. Vector signaling codes for densely-routed wire groups
US10708164B2 (en) * 2016-05-03 2020-07-07 Qualcomm Incorporated Binarizing secondary transform index
US10142652B2 (en) * 2016-05-05 2018-11-27 Google Llc Entropy coding motion vector residuals obtained using reference motion vectors
FR3054764B1 (fr) * 2016-07-28 2018-07-27 B<>Com Procede de decodage d'une image, procede de codage, dispositifs, equipement terminal et programmes d'ordinateurs associes
WO2018030293A1 (ja) * 2016-08-10 2018-02-15 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US9906358B1 (en) 2016-08-31 2018-02-27 Kandou Labs, S.A. Lock detector for phase lock loop
US10411922B2 (en) 2016-09-16 2019-09-10 Kandou Labs, S.A. Data-driven phase detector element for phase locked loops
US10419781B2 (en) * 2016-09-20 2019-09-17 Qualcomm Incorporated Storing and retrieving high bit depth image data
US10264264B2 (en) * 2016-09-24 2019-04-16 Apple Inc. Multi-bin decoding systems and methods
US11356693B2 (en) 2016-09-29 2022-06-07 Qualcomm Incorporated Motion vector coding for video coding
US10462462B2 (en) * 2016-09-29 2019-10-29 Qualcomm Incorporated Motion vector difference coding technique for video coding
CN106231318B (zh) * 2016-09-30 2020-04-28 浙江宇视科技有限公司 一种基于量化变换系数的视频加扰方法及装置
BR112019007359A2 (pt) * 2016-10-11 2019-07-16 Genomsys Sa método e sistema para acesso seletivo dos dados bioinformáticos armazenados ou transmitidos
US10200188B2 (en) 2016-10-21 2019-02-05 Kandou Labs, S.A. Quadrature and duty cycle error correction in matrix phase lock loop
US10200218B2 (en) 2016-10-24 2019-02-05 Kandou Labs, S.A. Multi-stage sampler with increased gain
US10372665B2 (en) 2016-10-24 2019-08-06 Kandou Labs, S.A. Multiphase data receiver with distributed DFE
US10805608B2 (en) * 2016-12-22 2020-10-13 Kt Corporation Method and apparatus for processing video signal
US11240526B2 (en) 2017-01-02 2022-02-01 Industry-University Cooperation Foundation Hanyang University Method and apparatus for decoding image using interpicture prediction
WO2018128222A1 (ko) * 2017-01-03 2018-07-12 엘지전자 주식회사 영상 코딩 시스템에서 영상 디코딩 방법 및 장치
US10757412B2 (en) * 2017-01-03 2020-08-25 Avago Technologies International Sales Pte. Limited Architecture flexible binary arithmetic coding system
KR20180087771A (ko) * 2017-01-25 2018-08-02 삼성전자주식회사 엔트로피 인코더 및 이를 포함하는 비디오 인코더
US10595033B2 (en) 2017-02-15 2020-03-17 Sony Corporation Variable length coding of header data for image compression
KR102450863B1 (ko) * 2017-03-22 2022-10-05 에스케이텔레콤 주식회사 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법
US10554988B2 (en) * 2017-03-22 2020-02-04 Qualcomm Incorporated Binary arithmetic coding with parameterized probability estimation finite state machines
US11240536B2 (en) * 2017-04-13 2022-02-01 Lg Electronics Inc. Method and device for entropy encoding, decoding video signal
WO2018191749A1 (en) 2017-04-14 2018-10-18 Kandou Labs, S.A. Pipelined forward error correction for vector signaling code channel
US10116468B1 (en) 2017-06-28 2018-10-30 Kandou Labs, S.A. Low power chip-to-chip bidirectional communications
US10686583B2 (en) 2017-07-04 2020-06-16 Kandou Labs, S.A. Method for measuring and correcting multi-wire skew
US10693587B2 (en) 2017-07-10 2020-06-23 Kandou Labs, S.A. Multi-wire permuted forward error correction
US11477492B2 (en) * 2017-08-04 2022-10-18 Google Inc. Adaptation for entropy coding of blocks of image data
US10203226B1 (en) 2017-08-11 2019-02-12 Kandou Labs, S.A. Phase interpolation circuit
US10791341B2 (en) * 2017-10-10 2020-09-29 Qualcomm Incorporated Binary arithmetic coding with progressive modification of adaptation parameters
US10484695B2 (en) 2017-10-23 2019-11-19 Google Llc Refined entropy coding for level maps
US11039143B2 (en) * 2017-11-20 2021-06-15 Qualcomm Incorporated Memory reduction for context initialization with temporal prediction
US11575922B2 (en) * 2017-12-06 2023-02-07 V-Nova International Limited Methods and apparatuses for hierarchically encoding and decoding a bytestream
US10609421B2 (en) * 2018-07-12 2020-03-31 Google Llc Context derivation for coefficient coding
US10326623B1 (en) 2017-12-08 2019-06-18 Kandou Labs, S.A. Methods and systems for providing multi-stage distributed decision feedback equalization
US10694205B2 (en) * 2017-12-18 2020-06-23 Google Llc Entropy coding of motion vectors using categories of transform blocks
US10602178B1 (en) * 2017-12-21 2020-03-24 Mozilla Corporation Systems and methods for frame context selection
EP3503557A1 (en) * 2017-12-22 2019-06-26 Thomson Licensing Method and apparatus for video encoding and decoding based on context switching
US10554380B2 (en) 2018-01-26 2020-02-04 Kandou Labs, S.A. Dynamically weighted exclusive or gate having weighted output segments for phase detection and phase interpolation
WO2019147403A1 (en) 2018-01-29 2019-08-01 Interdigital Vc Holdings, Inc. Encoding and decoding with refinement of the reconstructed picture
TWI799785B (zh) * 2018-03-29 2023-04-21 弗勞恩霍夫爾協會 視訊解碼器、視訊編碼器、用以解碼視訊內容之方法、用以編碼視訊內容之方法、電腦程式及視訊位元串流
CN117294838A (zh) * 2018-03-29 2023-12-26 弗劳恩霍夫应用研究促进协会 用于增强并行编码能力的构思
US10986354B2 (en) * 2018-04-16 2021-04-20 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
US10645381B2 (en) 2018-04-30 2020-05-05 Google Llc Intra-prediction for smooth blocks in image/video
US10630990B1 (en) * 2018-05-01 2020-04-21 Amazon Technologies, Inc. Encoder output responsive to quality metric information
CN108810553B (zh) * 2018-05-02 2021-01-12 上海大学 一种基于稀疏化处理的移动节点监测数据序列压缩方法
TWI675441B (zh) * 2018-05-14 2019-10-21 欣興電子股份有限公司 封裝載板結構及其製造方法
KR102559966B1 (ko) * 2018-05-25 2023-07-26 라인플러스 주식회사 복수의 채널을 이용하여 동적 비트레이트의 비디오를 송출 및 재생하는 방법 및 시스템
US10986340B2 (en) * 2018-06-01 2021-04-20 Qualcomm Incorporated Coding adaptive multiple transform information for video coding
US10939115B2 (en) * 2018-06-19 2021-03-02 Qualcomm Incorporated Efficient weighted probability estimation for binary arithmetic coding
CN108848380B (zh) * 2018-06-20 2021-11-30 腾讯科技(深圳)有限公司 视频编码和解码方法、装置、计算机设备及存储介质
WO2020008330A1 (en) * 2018-07-01 2020-01-09 Beijing Bytedance Network Technology Co., Ltd. Priority-based non-adjacent merge design
US11051025B2 (en) * 2018-07-13 2021-06-29 Tencent America LLC Method and apparatus for video coding
CN108989825B (zh) * 2018-07-18 2021-05-07 北京奇艺世纪科技有限公司 一种算术编码方法、装置及电子设备
US11218737B2 (en) 2018-07-23 2022-01-04 Google Llc Asymmetric probability model update and entropy coding precision
US10743029B2 (en) * 2018-07-30 2020-08-11 Tencent America LLC Constraints on coding unit partition
CN116095312A (zh) 2018-08-04 2023-05-09 北京字节跳动网络技术有限公司 视频处理方法、装置和计算机可读介质
US11336918B2 (en) 2018-09-05 2022-05-17 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
CN117676165A (zh) * 2018-09-10 2024-03-08 华为技术有限公司 视频解码方法及视频解码器
CN114143554B (zh) * 2018-09-13 2024-04-12 华为技术有限公司 一种预测运动信息的解码方法及装置
US11006150B2 (en) * 2018-09-24 2021-05-11 Tencent America LLC Method and apparatus for video coding
KR102473571B1 (ko) * 2018-10-05 2022-12-06 타이사 리서치 엘엘씨 변환 계수 코딩 방법 및 그 장치
WO2020070612A1 (en) 2018-10-06 2020-04-09 Beijing Bytedance Network Technology Co., Ltd. Improvement for temporal gradient calculating in bio
US20200143226A1 (en) * 2018-11-05 2020-05-07 Samsung Electronics Co., Ltd. Lossy compression of neural network activation maps
US10983677B2 (en) 2018-11-16 2021-04-20 Dropbox, Inc. Prefetching digital thumbnails from remote servers to client devices based on a dynamic determination of file display criteria
US10841595B2 (en) * 2018-11-27 2020-11-17 Semiconductor Components Industries, Llc Methods and apparatus for transform coefficient encoding and decoding
US10917636B2 (en) * 2018-12-03 2021-02-09 Tencent America LLC Method and apparatus for video coding
US10904548B2 (en) * 2018-12-06 2021-01-26 Qualcomm Incorporated Coefficient processing for video encoding and decoding
US11323748B2 (en) 2018-12-19 2022-05-03 Qualcomm Incorporated Tree-based transform unit (TU) partition for video coding
CN111355958B (zh) * 2018-12-21 2022-07-29 华为技术有限公司 视频解码方法及装置
CA3114341C (en) * 2018-12-29 2023-10-17 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods using compact mv storage
US11252431B2 (en) 2019-01-02 2022-02-15 Telefonaktiebolaget Lm Ericsson (Publ) Side motion refinement in video encoding/decoding systems
US11032560B2 (en) * 2019-01-17 2021-06-08 Tencent America LLC Method and apparatus for video coding without updating the HMVP table
CN111475424B (zh) * 2019-01-23 2023-07-28 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机可读存储介质
US11134273B2 (en) 2019-02-14 2021-09-28 Qualcomm Incorporated Regular coded bin reduction for coefficient coding
CN109946229A (zh) * 2019-02-25 2019-06-28 南京文易特电子科技有限公司 一种香烟条包智能数字双拉线检测系统及检测方法
US10652581B1 (en) * 2019-02-27 2020-05-12 Google Llc Entropy coding in image and video compression using machine learning
US10939107B2 (en) * 2019-03-01 2021-03-02 Sony Corporation Embedded codec circuitry for sub-block based allocation of refinement bits
WO2020180153A1 (ko) * 2019-03-06 2020-09-10 엘지전자 주식회사 인터 예측을 위한 비디오 신호의 처리 방법 및 장치
US11202100B2 (en) * 2019-03-11 2021-12-14 Qualcomm Incorporated Coefficient coding for transform skip mode
US11178399B2 (en) * 2019-03-12 2021-11-16 Qualcomm Incorporated Probability initialization for video coding
KR102223790B1 (ko) * 2019-03-15 2021-03-05 삼성전자주식회사 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치
CN109947398B (zh) * 2019-03-25 2020-12-25 武汉轻工大学 三重积分求解方法、装置、终端设备及可读存储介质
KR102647470B1 (ko) 2019-04-15 2024-03-14 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비선형 적응형 루프 필터링에서 파라미터의 시간적 예측
WO2020231140A1 (ko) 2019-05-14 2020-11-19 엘지전자 주식회사 적응적 루프 필터 기반 비디오 또는 영상 코딩
CN112135149B (zh) * 2019-06-24 2023-07-18 华为技术有限公司 语法元素的熵编码/解码方法、装置以及编解码器
US11184642B2 (en) 2019-08-02 2021-11-23 Mediatek Inc. Methods and apparatus for simplification of coding residual blocks
WO2021040492A1 (ko) * 2019-08-31 2021-03-04 엘지전자 주식회사 비디오/영상 코딩 시스템에서 변환 계수 코딩 방법 및 장치
WO2021058593A1 (en) * 2019-09-24 2021-04-01 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Coding concept for a sequence of information values
CN115361561B (zh) * 2019-10-01 2023-08-01 北京达佳互联信息技术有限公司 残差和系数编解码的方法和装置
CN112866181B (zh) * 2019-11-28 2023-05-26 上海商汤智能科技有限公司 数据解码装置、加速器、以及片上系统
US11468601B2 (en) 2020-01-13 2022-10-11 Samsung Display Co., Ltd. Systems and methods for scalable throughput entropy coder
US11822902B2 (en) * 2020-01-21 2023-11-21 California Institute Of Technology Systems and methods for performing lossless source coding
US20230042018A1 (en) * 2020-02-12 2023-02-09 Google Llc Multi-context entropy coding for compression of graphs
CN116018647A (zh) * 2020-07-10 2023-04-25 皇家飞利浦有限公司 通过基于可配置机器学习的算术编码进行的基因组信息压缩
US11362681B2 (en) 2020-08-21 2022-06-14 Seagate Technology Llc One-shot state transition probability encoder and decoder
CN112260699A (zh) * 2020-09-15 2021-01-22 深圳拓邦股份有限公司 属性通讯编解码方法、编码装置、解码装置及系统
FR3114717B1 (fr) * 2020-09-30 2023-10-13 Fond B Com Procédé et dispositif électronique de décodage d’un flux de données, programme d’ordinateur et flux de données associés
US11722672B2 (en) 2020-10-06 2023-08-08 Qualcomm Incorporated Adaptively deriving rice parameter values for high bit-depth video coding
CN114501036A (zh) * 2020-11-13 2022-05-13 联发科技股份有限公司 熵解码装置及相关熵解码方法
CN114727109B (zh) * 2021-01-05 2023-03-24 腾讯科技(深圳)有限公司 多媒体的量化处理方法、装置及编码、解码设备
US11356197B1 (en) 2021-03-19 2022-06-07 Kandou Labs SA Error-tolerant forward error correction ordered set message decoder
CN113079377B (zh) * 2021-04-01 2022-09-30 中国科学技术大学 一种深度图像/视频压缩网络的训练方法
WO2022217245A1 (en) * 2021-04-07 2022-10-13 Innopeak Technology, Inc. Remaining level binarization for video coding
CN113489979A (zh) * 2021-05-28 2021-10-08 杭州博雅鸿图视频技术有限公司 熵编码方法、装置、电子设备及存储介质
CN113422964A (zh) * 2021-06-04 2021-09-21 绍兴市北大信息技术科创中心 一种串长度参数编解码方法和装置
KR20240044497A (ko) * 2021-08-17 2024-04-04 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 블록 기반 비디오 코딩을 위한 부호 예측
US11871038B2 (en) * 2021-09-29 2024-01-09 Tencent America LLC Techniques for constraint flag signaling for range extension with residual rice coding extension
WO2023114468A1 (en) * 2021-12-16 2023-06-22 Beijing Dajia Internet Information Technology Co., Ltd. Sign prediction for block-based video coding
US20230291935A1 (en) * 2022-03-11 2023-09-14 Tencent America LLC Systems and methods for division-free probability regularization for arithmetic coding
US20230308651A1 (en) * 2022-03-22 2023-09-28 Tencent America LLC Systems and methods for regularization-free multi-hypothesis arithmetic coding
WO2023195643A1 (ko) * 2022-04-05 2023-10-12 삼성전자 주식회사 엔트로피 부호화 및 복호화 장치 및 그 방법
WO2024007090A1 (zh) * 2022-07-04 2024-01-11 嘉兴尚坤科技有限公司 一种超高清视频数据编码/解码处理方法及系统

Family Cites Families (128)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5925884B2 (ja) * 1980-12-24 1984-06-22 住友ゴム工業株式会社 ゴムロ−ラ
JPS5916569A (ja) * 1982-07-17 1984-01-27 Yoshida Kogyo Kk <Ykk> 金属部材のコ−ナ−部にストライプ模様を形成する方法
US6885864B2 (en) 1992-03-06 2005-04-26 Aircell, Inc. Virtual private network for cellular communications
US5717394A (en) 1993-02-10 1998-02-10 Ricoh Company Ltd. Method and apparatus for encoding and decoding data
US5381145A (en) 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data
JPH06334993A (ja) * 1993-03-26 1994-12-02 Sony Corp 動画像符号化又は復号化装置、並びに動きベクトルの可変長符号化及び復号化方法
KR970003102B1 (ko) * 1993-09-17 1997-03-14 대우전자 주식회사 영상 복호기에서의 하프 픽셀 움직임 보상 회로
US5847776A (en) 1996-06-24 1998-12-08 Vdonet Corporation Ltd. Method for entropy constrained motion estimation and coding of motion vectors with increased search range
JP2866616B2 (ja) 1996-06-24 1999-03-08 昇 大串 健康ベッド
JPH10151789A (ja) 1996-11-22 1998-06-09 Eiji Shiozaki 粉体飛翔式印字制御方法および印字装置
WO1998044479A1 (fr) * 1997-03-31 1998-10-08 Matsushita Electric Industrial Co., Ltd. Procede de visualisation du premier plan d'images et dispositif connexe
KR100255754B1 (ko) * 1997-08-30 2000-05-01 전주범 이진 형상 신호 부호화 방법
CN1146245C (zh) * 1997-12-22 2004-04-14 株式会社大宇电子 隔行二进制形状编码方法和装置
US6677868B2 (en) * 2001-03-16 2004-01-13 Sharp Laboratories Of America, Inc. Entropy coding with adaptive syntax to replace high probability symbols with lower probabilities symbols
US6865298B2 (en) * 2001-03-30 2005-03-08 Sharp Laboratories Of America, Inc. Compound document compression based upon neighboring pixels
JP4125565B2 (ja) * 2001-08-31 2008-07-30 松下電器産業株式会社 画像符号化方法、画像復号化方法及びその装置
US20030048808A1 (en) * 2001-09-12 2003-03-13 Stahl Thomas Anthony Method and apparatus for changing received streaming content channels
KR100765060B1 (ko) 2001-11-09 2007-10-09 주식회사 포스코 침전조의 워터배출 조정장치
US7435543B2 (en) * 2001-11-27 2008-10-14 Animal Technology Institute Of Taiwan Genetic markers for pig backfat thickness
KR100925968B1 (ko) * 2001-12-17 2009-11-09 마이크로소프트 코포레이션 컴퓨터 시스템에서 비디오 시퀀스의 복수의 비디오 화상을 처리하는 방법, 시스템 및 컴퓨터 판독가능 매체
US7003035B2 (en) * 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
CN1225904C (zh) * 2002-04-12 2005-11-02 精工爱普生株式会社 在压缩域视频处理中降低存储器要求和实施有效的逆运动补偿的方法和设备
JP2003319391A (ja) * 2002-04-26 2003-11-07 Sony Corp 符号化装置および方法、復号装置および方法、記録媒体、並びにプログラム
ATE421802T1 (de) * 2002-05-02 2009-02-15 Fraunhofer Ges Forschung Verfahren und anordnung zur arithmetischen enkodierung und dekodierung von binären zuständen sowie ein entsprechendes computerprogramm und ein entsprechendes computerlesbares speichermedium
DK1487113T3 (da) * 2002-05-02 2006-11-20 Fraunhofer Ges Forschung Kodning og afkodning af transformationskoefficienter i billede- eller videokodere
JP4230188B2 (ja) * 2002-06-06 2009-02-25 パナソニック株式会社 可変長符号化方法および可変長復号化方法
US6919105B2 (en) 2003-01-06 2005-07-19 Philip Morris Usa Inc. Continuous process for retaining solid adsorbent particles on shaped micro-cavity fibers
US6894628B2 (en) * 2003-07-17 2005-05-17 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Apparatus and methods for entropy-encoding or entropy-decoding using an initialization of context variables
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
US7499495B2 (en) * 2003-07-18 2009-03-03 Microsoft Corporation Extended range motion vectors
US20050013498A1 (en) * 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
US7233622B2 (en) * 2003-08-12 2007-06-19 Lsi Corporation Reduced complexity efficient binarization method and/or circuit for motion vector residuals
EP1513350A1 (en) * 2003-09-03 2005-03-09 Thomson Licensing S.A. Process and arrangement for encoding video pictures
US6771197B1 (en) 2003-09-26 2004-08-03 Mitsubishi Electric Research Laboratories, Inc. Quantizing signals using sparse generator factor graph codes
US7599435B2 (en) 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
JP4241417B2 (ja) * 2004-02-04 2009-03-18 日本ビクター株式会社 算術復号化装置、および算術復号化プログラム
JP4408766B2 (ja) 2004-07-30 2010-02-03 Ntn株式会社 Icタグ付き車輪用軸受装置
CN1589023A (zh) * 2004-08-06 2005-03-02 联合信源数字音视频技术(北京)有限公司 一种基于上下文的多码表变长编解码方法及编解码装置
US7609947B2 (en) 2004-09-10 2009-10-27 Panasonic Corporation Method and apparatus for coordinating playback from multiple video sources
CN101052972A (zh) * 2004-09-22 2007-10-10 液滴技术有限公司 多技术熵编码系统和方法
DE102004049156B4 (de) * 2004-10-08 2006-07-13 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Codierschema für einen ein zeitlich veränderliches Graphikmodell darstellenden Datenstrom
KR20060038189A (ko) * 2004-10-29 2006-05-03 삼성전자주식회사 컨텍스트 기반 적응형 이진 산술 복부호화 방법 및 장치
KR100636229B1 (ko) * 2005-01-14 2006-10-19 학교법인 성균관대학 신축형 부호화를 위한 적응적 엔트로피 부호화 및 복호화방법과 그 장치
KR100703760B1 (ko) 2005-03-18 2007-04-06 삼성전자주식회사 시간적 레벨간 모션 벡터 예측을 이용한 비디오인코딩/디코딩 방법 및 장치
AU2006201490B2 (en) * 2005-04-19 2008-05-22 Samsung Electronics Co., Ltd. Method and apparatus for adaptively selecting context model for entropy coding
RU2336661C2 (ru) * 2005-04-19 2008-10-20 Самсунг Электроникс Ко., Лтд. Способ и устройство адаптивного выбора контекстной модели для кодирования по энтропии
EP1727371A1 (en) * 2005-05-27 2006-11-29 Thomson Licensing Method for controlling the encoder output bit rate in a block-based video encoder, and corresponding video encoder apparatus
JP4856954B2 (ja) * 2005-06-08 2012-01-18 パナソニック株式会社 画像符号化装置
CN1878309A (zh) * 2005-06-08 2006-12-13 松下电器产业株式会社 视频编码装置
KR100683788B1 (ko) 2005-06-25 2007-02-20 삼성에스디아이 주식회사 복수의 층들의 전극 라인들이 형성된 교류형 방전디스플레이 패널
RU2371881C1 (ru) * 2005-07-08 2009-10-27 ЭлДжи ЭЛЕКТРОНИКС ИНК. Способ моделирования информации кодирования видеосигнала для компрессии/декомпрессии информации
CN101223780A (zh) * 2005-07-18 2008-07-16 三星电子株式会社 减少编码器和解码器之间的不匹配的视频编码方法和设备
CN100461863C (zh) * 2005-08-05 2009-02-11 上海富瀚微电子有限公司 基于上下文自适应二进制算术解码器
EP1755341A1 (en) * 2005-08-19 2007-02-21 Texas Instruments Incorporated Method of quantization of transform coefficients
US7221296B2 (en) * 2005-08-22 2007-05-22 Streaming Networks (Pvt.) Ltd. Method and system for fast context based adaptive binary arithmetic coding
KR100813963B1 (ko) * 2005-09-16 2008-03-14 세종대학교산학협력단 동영상의 무손실 부호화, 복호화 방법 및 장치
CN100403801C (zh) * 2005-09-23 2008-07-16 联合信源数字音视频技术(北京)有限公司 一种基于上下文的自适应熵编/解码方法
CN100466739C (zh) 2005-10-12 2009-03-04 华为技术有限公司 Cabac解码系统及方法
JP2009513290A (ja) 2005-10-31 2009-04-02 生立生物科技股▲分▼有限公司 強膜バックリングバンドとその製造方法
KR100873636B1 (ko) * 2005-11-14 2008-12-12 삼성전자주식회사 단일 부호화 모드를 이용하는 영상 부호화/복호화 방법 및장치
EA013890B1 (ru) 2005-11-25 2010-08-30 Грегор Зебиц Домашняя сеть, использующая проводные и беспроводные защищённые каналы связи
US7245242B2 (en) * 2005-11-28 2007-07-17 Conexant Systems, Inc. Decoding systems and methods
US7956930B2 (en) 2006-01-06 2011-06-07 Microsoft Corporation Resampling and picture resizing operations for multi-resolution video coding and decoding
JP4318050B2 (ja) 2006-01-24 2009-08-19 ソニー株式会社 ワイヤレスチャンネル決定選択方法およびアクセスポイント装置
KR100750165B1 (ko) * 2006-02-22 2007-08-17 삼성전자주식회사 압축률 향상을 위해 개선된 컨텍스트 모델 선택을 사용하는cabac 부호화 방법 및 장치, 그리고 cabac복호화 방법 및 장치
US20070217702A1 (en) * 2006-03-14 2007-09-20 Sung Chih-Ta S Method and apparatus for decoding digital video stream
US8848789B2 (en) 2006-03-27 2014-09-30 Qualcomm Incorporated Method and system for coding and decoding information associated with video compression
US7929608B2 (en) * 2006-03-28 2011-04-19 Sony Corporation Method of reducing computations in intra-prediction and mode decision processes in a digital video encoder
JP2007300455A (ja) * 2006-05-01 2007-11-15 Victor Co Of Japan Ltd 算術符号化装置、および算術符号化装置におけるコンテキストテーブル初期化方法
JP2007306370A (ja) * 2006-05-12 2007-11-22 Victor Co Of Japan Ltd 画像符号化記録装置
US8472527B2 (en) * 2006-09-13 2013-06-25 Texas Instruments Incorporated Hierarchical motion estimation using original frame for sub-sampled reference
CN101198051B (zh) * 2006-12-07 2011-10-05 深圳艾科创新微电子有限公司 基于h.264的熵解码器的实现方法及装置
US7573405B2 (en) 2006-12-29 2009-08-11 Texas Instruments Incorporated System updating accumulated statistics coding variable values after multiple encodings
US20080162432A1 (en) * 2006-12-29 2008-07-03 Wen-Shan Wang Search table for unary k-th order exp-golomb decoder
CN101005287A (zh) * 2007-01-26 2007-07-25 北京中星微电子有限公司 提高算术编码速度的方法、系统及编码装置
US20080225947A1 (en) * 2007-03-13 2008-09-18 Matthias Narroschke Quantization for hybrid video coding
CN101115200B (zh) * 2007-04-20 2010-05-19 西安交通大学 一种有效的运动矢量可伸缩编码方法
WO2008136828A1 (en) * 2007-05-04 2008-11-13 Qualcomm Incorporated Video coding mode selection using estimated coding costs
JP2008300455A (ja) 2007-05-29 2008-12-11 Sumitomo Electric Ind Ltd パワーモジュール
BRPI0813904B1 (pt) * 2007-06-29 2020-12-08 Velos Media International Limited dispositivo de codificação de imagem para codificar imagens de entrada e dispositivo de decodificação de imagem para decodificar dados de imagens codificados
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US8254455B2 (en) * 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
KR101408698B1 (ko) 2007-07-31 2014-06-18 삼성전자주식회사 가중치 예측을 이용한 영상 부호화, 복호화 방법 및 장치
US7839311B2 (en) * 2007-08-31 2010-11-23 Qualcomm Incorporated Architecture for multi-stage decoding of a CABAC bitstream
US7535387B1 (en) * 2007-09-10 2009-05-19 Xilinx, Inc. Methods and systems for implementing context adaptive binary arithmetic coding
CN101478672B (zh) * 2008-01-04 2012-12-19 华为技术有限公司 视频编码、解码方法及装置和视频处理系统
EP2077550B8 (en) * 2008-01-04 2012-03-14 Dolby International AB Audio encoder and decoder
JP4915350B2 (ja) * 2008-01-16 2012-04-11 日本電気株式会社 エントロピ符号化器、映像符号化装置、映像符号化方法および映像符号化プログラム
EP2245857B1 (en) 2008-01-22 2015-06-03 Dolby Laboratories Licensing Corporation Adaptive motion information cost estimation with dynamic look-up table updating
US20090201983A1 (en) 2008-02-07 2009-08-13 Motorola, Inc. Method and apparatus for estimating high-band energy in a bandwidth extension system
JP4479829B2 (ja) 2008-04-03 2010-06-09 ソニー株式会社 撮像装置及び撮像方法
US7656320B2 (en) 2008-04-10 2010-02-02 Red Hat, Inc. Difference coding adaptive context model using counting
JP4962400B2 (ja) 2008-04-30 2012-06-27 ソニー株式会社 算術復号装置
US8179974B2 (en) * 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
CN101267559A (zh) * 2008-05-08 2008-09-17 上海交通大学 视频解码器的通用熵解码方法及装置
US20090304071A1 (en) * 2008-06-06 2009-12-10 Apple Inc. Adaptive application of entropy coding methods
CN101304522A (zh) * 2008-06-20 2008-11-12 中国民航大学 一种以jpeg2000压缩图像为载体的大容量信息隐藏方法
US8699562B2 (en) * 2008-10-06 2014-04-15 Lg Electronics Inc. Method and an apparatus for processing a video signal with blocks in direct or skip mode
US9973739B2 (en) * 2008-10-17 2018-05-15 Nokia Technologies Oy Sharing of motion vector in 3D video coding
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
EP2182732A1 (en) * 2008-10-28 2010-05-05 Panasonic Corporation Switching between scans in image coding
US20100127904A1 (en) 2008-11-26 2010-05-27 Horizon Semiconductors Ltd. Implementation of a rapid arithmetic binary decoding system of a suffix length
KR101196792B1 (ko) * 2008-12-03 2012-11-05 노키아 코포레이션 Dct 계수 부호화 모드들 간의 전환
JP2010268094A (ja) * 2009-05-13 2010-11-25 Sony Corp 画像復号化装置および画像復号化方法
JP2010278668A (ja) 2009-05-27 2010-12-09 Sony Corp 符号化装置及び符号化方法、並びに復号装置及び復号方法
US9479812B2 (en) * 2009-06-05 2016-10-25 Time Warner Cable Enterprises Llc User selection of software components in a television set-top box
KR101678968B1 (ko) * 2009-08-21 2016-11-25 에스케이텔레콤 주식회사 참조 픽처 보간 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
KR101441874B1 (ko) * 2009-08-21 2014-09-25 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
CN102055483B (zh) * 2009-10-29 2013-05-08 鸿富锦精密工业(深圳)有限公司 熵解码装置
JP5409268B2 (ja) * 2009-10-30 2014-02-05 株式会社日立ソリューションズ 情報提示装置及び携帯端末
KR20110071047A (ko) * 2009-12-20 2011-06-28 엘지전자 주식회사 비디오 신호 디코딩 방법 및 장치
US9237355B2 (en) 2010-02-19 2016-01-12 Qualcomm Incorporated Adaptive motion resolution for video coding
US9973768B2 (en) 2010-03-16 2018-05-15 Texas Instruments Incorporated CABAC decoder with decoupled arithmetic decoding and inverse binarization
CN101841707B (zh) * 2010-03-19 2012-01-04 西安电子科技大学 基于jpeg2000标准的高速实时处理算术熵编码方法
JP5676744B2 (ja) * 2010-04-13 2015-02-25 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン エントロピー符号化
US20120014429A1 (en) * 2010-07-15 2012-01-19 Jie Zhao Methods and Systems for Parallel Video Encoding and Parallel Video Decoding
US9456015B2 (en) 2010-08-10 2016-09-27 Qualcomm Incorporated Representation groups for network streaming of coded multimedia data
CN101938654B (zh) * 2010-08-17 2013-04-10 浙江大学 一种变换系数的优化量化方法及装置
CN101951516B (zh) * 2010-09-25 2013-06-05 清华大学 基于h.264/avc中cabac的并行编码实现电路及编码方法
US8902988B2 (en) 2010-10-01 2014-12-02 Qualcomm Incorporated Zero-out of high frequency coefficients and entropy coding retained coefficients using a joint context model
US10327008B2 (en) * 2010-10-13 2019-06-18 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
JP5570437B2 (ja) * 2011-01-12 2014-08-13 三菱電機株式会社 エントロピー符号化装置、エントロピー復号装置、エントロピー符号化方法及びエントロピー復号方法
US9008181B2 (en) 2011-01-24 2015-04-14 Qualcomm Incorporated Single reference picture list utilization for interprediction video coding
ITTO20110414A1 (it) * 2011-05-11 2012-11-12 St Microelectronics Pvt Ltd Procedimento ed apparecchiatura per elaborare segnali video, prodotto informatico e segnale codificato relativi
RS64604B1 (sr) 2011-06-16 2023-10-31 Ge Video Compression Llc Entropijsko kodiranje razlika vektora kretanja
US9654772B2 (en) 2012-01-19 2017-05-16 Qualcomm Incorporated Context adaptive entropy coding with a reduced initialization value set
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
US10856009B2 (en) * 2014-09-04 2020-12-01 Mediatek Inc. Method of block vector clipping and coding for screen content coding and video coding

Also Published As

Publication number Publication date
CN107517384A (zh) 2017-12-26
PH12018500353A1 (en) 2018-08-13
CN107333141B (zh) 2020-04-07
PH12018500352B1 (en) 2018-08-13
AU2012268951B2 (en) 2015-07-30
AP2014007361A0 (en) 2014-01-31
AU2021209284A1 (en) 2021-08-19
AU2018200699A1 (en) 2018-02-22
KR101619333B1 (ko) 2016-05-18
JP2022123096A (ja) 2022-08-23
AP4072A (en) 2017-03-16
BR112013032333B1 (pt) 2022-07-26
RU2615681C2 (ru) 2017-04-06
US9743090B2 (en) 2017-08-22
JP6492047B2 (ja) 2019-03-27
PL3930330T3 (pl) 2023-10-23
JP2021108479A (ja) 2021-07-29
HUE063990T2 (hu) 2024-02-28
US20170302969A1 (en) 2017-10-19
AU2023203785A1 (en) 2023-07-13
RU2658883C1 (ru) 2018-06-25
JP2019050610A (ja) 2019-03-28
DK3930330T3 (da) 2023-08-28
AU2018200699B2 (en) 2018-10-25
US9686568B2 (en) 2017-06-20
RU2755020C2 (ru) 2021-09-09
US20180152708A1 (en) 2018-05-31
PH12018500350A1 (en) 2018-08-13
KR20190079689A (ko) 2019-07-05
JP2023075109A (ja) 2023-05-30
EP3471415B1 (en) 2021-08-04
IL265636A (en) 2019-05-30
RS64867B1 (sr) 2023-12-29
CN107333140B (zh) 2020-09-22
WO2012172113A1 (en) 2012-12-20
US20170302968A1 (en) 2017-10-19
JP6867334B2 (ja) 2021-04-28
KR20220122800A (ko) 2022-09-02
US20180152707A1 (en) 2018-05-31
KR20200138444A (ko) 2020-12-09
MX2023005265A (es) 2023-05-23
JP6560393B2 (ja) 2019-08-14
FI3930330T3 (fi) 2023-09-07
IL283649B (en) 2022-03-01
CN107347161A (zh) 2017-11-14
IL283649A (en) 2021-07-29
US20180109813A1 (en) 2018-04-19
AU2019203792A1 (en) 2019-06-20
US10425644B2 (en) 2019-09-24
PH12018500355A1 (en) 2018-08-13
IL297827B1 (en) 2023-09-01
CN107529704B (zh) 2019-08-09
IL252388B (en) 2022-08-01
PH12018500356B1 (en) 2018-08-13
US20230078680A1 (en) 2023-03-16
CO6852030A2 (es) 2014-01-30
CN107801025A (zh) 2018-03-13
HUE057958T2 (hu) 2022-06-28
IL230415A (en) 2017-01-31
KR20180006510A (ko) 2018-01-17
SI2721819T1 (sl) 2023-12-29
IL252388A0 (en) 2017-07-31
IL305221A (en) 2023-10-01
BR112013032333A2 (pt) 2016-12-20
JP6356723B2 (ja) 2018-07-11
AU2021209284B2 (en) 2022-06-23
DK3471415T3 (da) 2021-11-01
CN107333140A (zh) 2017-11-07
PH12018500351A1 (en) 2018-08-13
CN107465928B (zh) 2020-10-30
CN107360434B (zh) 2020-05-12
CN107360423A (zh) 2017-11-17
LT3471415T (lt) 2021-12-10
PH12019500790A1 (en) 2019-11-11
IL299953B1 (en) 2023-09-01
EP3930330B1 (en) 2023-06-07
JP5952900B2 (ja) 2016-07-13
AP2014007360A0 (en) 2014-01-31
WO2012172114A1 (en) 2012-12-20
US10057603B2 (en) 2018-08-21
KR102160647B1 (ko) 2020-09-28
US20240048708A1 (en) 2024-02-08
IL249644A0 (en) 2017-02-28
IL297827B2 (en) 2024-01-01
CA2839560A1 (en) 2012-12-20
CN107770559A (zh) 2018-03-06
HK1246541A1 (zh) 2018-09-07
RU2699677C2 (ru) 2019-09-09
US20200267389A1 (en) 2020-08-20
BR112013032332B1 (pt) 2022-08-16
US9918104B2 (en) 2018-03-13
CN103748886A (zh) 2014-04-23
CA2839569A1 (en) 2012-12-20
AP3686A (en) 2016-04-23
AU2016202638B2 (en) 2017-06-15
AU2017228613B2 (en) 2017-11-02
LT3930330T (lt) 2023-09-11
CL2013003603A1 (es) 2014-08-01
US20190191165A1 (en) 2019-06-20
US10298964B2 (en) 2019-05-21
AU2017228613A1 (en) 2017-10-05
CN107529709A (zh) 2018-01-02
EP3930330A1 (en) 2021-12-29
PH12018500349B1 (en) 2018-08-13
US20140140400A1 (en) 2014-05-22
HK1246543A1 (zh) 2018-09-07
SI3471415T1 (sl) 2021-12-31
EP2721822A1 (en) 2014-04-23
CN107360423B (zh) 2020-05-12
CN107333142B (zh) 2020-06-02
PH12018500331A1 (en) 2018-07-09
IL259768A (en) 2018-07-31
IL294454A (en) 2022-09-01
US10230954B2 (en) 2019-03-12
JP5925884B2 (ja) 2016-05-25
UA115186C2 (uk) 2017-09-25
US10148962B2 (en) 2018-12-04
EP3471415A1 (en) 2019-04-17
LT2721819T (lt) 2023-11-27
JP2018186527A (ja) 2018-11-22
MX336735B (es) 2016-01-29
KR20190136116A (ko) 2019-12-09
US9973761B2 (en) 2018-05-15
US20160360204A1 (en) 2016-12-08
CN107465927A (zh) 2017-12-12
US10432940B2 (en) 2019-10-01
CN107517384B (zh) 2020-06-30
US20160366447A1 (en) 2016-12-15
KR20140022957A (ko) 2014-02-25
CN103931194A (zh) 2014-07-16
AU2012268950A1 (en) 2014-01-30
KR20170047406A (ko) 2017-05-04
PL3343781T3 (pl) 2022-03-28
EP4033672A1 (en) 2022-07-27
US20140198841A1 (en) 2014-07-17
EP2721819A1 (en) 2014-04-23
US9936227B2 (en) 2018-04-03
CN103733622A (zh) 2014-04-16
PH12018500354A1 (en) 2018-08-13
US20160360238A1 (en) 2016-12-08
US20180295387A1 (en) 2018-10-11
RU2014101164A (ru) 2015-07-27
PT3343781T (pt) 2022-03-07
CN107529704A (zh) 2018-01-02
HUE042350T2 (hu) 2019-06-28
IL304856B1 (en) 2024-04-01
US20170302954A1 (en) 2017-10-19
PH12018500329A1 (en) 2018-07-09
PH12018500330A1 (en) 2018-07-09
US20170302953A1 (en) 2017-10-19
CN107465927B (zh) 2020-05-12
DK2721819T3 (da) 2023-11-13
ES2704627T3 (es) 2019-03-19
MX364201B (es) 2019-04-16
AU2016202638A1 (en) 2016-05-19
US11277614B2 (en) 2022-03-15
PH12018500352A1 (en) 2018-08-13
US20190158840A1 (en) 2019-05-23
JP7231594B2 (ja) 2023-03-01
US20180332290A1 (en) 2018-11-15
US20190141329A1 (en) 2019-05-09
HUE056273T2 (hu) 2022-02-28
US10630988B2 (en) 2020-04-21
CN107529709B (zh) 2019-05-07
CN107801041A (zh) 2018-03-13
KR101882848B1 (ko) 2018-07-27
CN107613307A (zh) 2018-01-19
RU2595934C2 (ru) 2016-08-27
AU2022235513B2 (en) 2023-04-13
AU2023203785B2 (en) 2023-12-21
AU2019203792B2 (en) 2021-04-29
PL3471415T3 (pl) 2022-01-03
KR101662136B1 (ko) 2016-10-04
RU2642373C1 (ru) 2018-01-24
US20180205953A1 (en) 2018-07-19
EP3343781B1 (en) 2021-12-01
CN107529706A (zh) 2018-01-02
DK3343781T3 (da) 2022-03-07
US20200169733A1 (en) 2020-05-28
PH12018500348A1 (en) 2018-08-13
HK1248434B (zh) 2020-04-24
JP2014518473A (ja) 2014-07-28
JP2014520451A (ja) 2014-08-21
IL299953B2 (en) 2024-01-01
US20170366810A1 (en) 2017-12-21
US11533485B2 (en) 2022-12-20
PH12018500354B1 (en) 2018-08-13
US10432939B2 (en) 2019-10-01
IL299953A (en) 2023-03-01
MX2013014868A (es) 2014-05-28
US10630987B2 (en) 2020-04-21
PH12018500356A1 (en) 2018-08-13
CN107529705A (zh) 2018-01-02
CN107465926B (zh) 2021-06-08
IL309379A (en) 2024-02-01
JP2014522613A (ja) 2014-09-04
HK1246545A1 (zh) 2018-09-07
JP7100836B2 (ja) 2022-07-14
IL265636B (en) 2021-06-30
JP6814780B2 (ja) 2021-01-20
RU2018100106A3 (pt) 2019-07-17
CN107465926A (zh) 2017-12-12
AU2019200328B2 (en) 2019-03-07
JP2021044809A (ja) 2021-03-18
CN107529707B (zh) 2019-10-01
CN107333141A (zh) 2017-11-07
US20170302952A1 (en) 2017-10-19
PH12018500329B1 (en) 2018-07-09
FI2721819T3 (fi) 2023-11-16
AU2019200328A1 (en) 2019-02-07
MX2023005264A (es) 2023-05-23
ES2953667T3 (es) 2023-11-15
US9930371B2 (en) 2018-03-27
JP2017085602A (ja) 2017-05-18
AU2022235513A1 (en) 2022-10-13
EP3703367A1 (en) 2020-09-02
CL2013003601A1 (es) 2014-07-25
CO6852031A2 (es) 2014-01-30
AP2016009618A0 (en) 2016-12-31
MX2013014867A (es) 2014-05-21
PH12018500330B1 (en) 2018-07-09
EP2721822B1 (en) 2018-10-31
CN103748886B (zh) 2017-11-10
PH12018500355B1 (en) 2018-08-13
US9729883B2 (en) 2017-08-08
US9628827B2 (en) 2017-04-18
CN107801041B (zh) 2019-08-13
US10440364B2 (en) 2019-10-08
US20140177707A1 (en) 2014-06-26
US9473170B2 (en) 2016-10-18
EP4277276A1 (en) 2023-11-15
HK1248951A1 (zh) 2018-10-19
HK1248948B (zh) 2020-02-21
IL230023A (en) 2017-06-29
ZA201400029B (en) 2015-04-29
RU2018120845A (ru) 2019-12-09
EP2721820A1 (en) 2014-04-23
DK2721822T3 (en) 2019-02-18
CN103931194B (zh) 2017-09-05
LT3343781T (lt) 2022-03-10
US10313672B2 (en) 2019-06-04
CA2839560C (en) 2016-10-04
MX2019004403A (es) 2021-10-07
KR102437504B1 (ko) 2022-08-29
AU2012268950B2 (en) 2016-02-04
EP2721819B1 (en) 2023-08-16
HK1197128A1 (en) 2015-01-02
JP2016174378A (ja) 2016-09-29
JP2018139415A (ja) 2018-09-06
KR20200064171A (ko) 2020-06-05
MY170940A (en) 2019-09-19
US10306232B2 (en) 2019-05-28
PT2721822T (pt) 2019-01-23
US20230188719A1 (en) 2023-06-15
US20190320178A1 (en) 2019-10-17
HK1246542A1 (zh) 2018-09-07
HK1247488A1 (zh) 2018-09-21
HK1248947A1 (zh) 2018-10-19
HRP20220272T1 (hr) 2022-05-13
PH12018500328A1 (en) 2018-07-09
SI3343781T1 (sl) 2022-04-29
ES2961663T3 (es) 2024-03-13
CN107517383A (zh) 2017-12-26
KR101730587B1 (ko) 2017-04-26
KR102187981B1 (ko) 2020-12-07
ES2906869T3 (es) 2022-04-20
CN107333142A (zh) 2017-11-07
RU2019127048A3 (pt) 2021-03-01
RU2014101166A (ru) 2015-07-27
US9596475B2 (en) 2017-03-14
US20200092560A1 (en) 2020-03-19
CN107770559B (zh) 2020-06-26
US9918090B2 (en) 2018-03-13
PT2721819T (pt) 2023-11-22
CA2839569C (en) 2017-01-03
IL254274A0 (en) 2017-10-31
RS62714B1 (sr) 2022-01-31
RU2019127048A (ru) 2021-03-01
US20190327474A1 (en) 2019-10-24
US20220224904A1 (en) 2022-07-14
IL290229B (en) 2022-12-01
US20170250709A1 (en) 2017-08-31
CN107801042A (zh) 2018-03-13
CN107360434A (zh) 2017-11-17
RU2018100106A (ru) 2019-07-09
US20180359476A1 (en) 2018-12-13
CN107529710A (zh) 2018-01-02
US9455744B2 (en) 2016-09-27
US11838511B2 (en) 2023-12-05
MX345195B (es) 2017-01-20
MY184473A (en) 2021-04-01
UA123987C2 (uk) 2021-07-07
JP6059212B2 (ja) 2017-01-11
US9930370B2 (en) 2018-03-27
CN107517383B (zh) 2020-07-14
WO2012172115A1 (en) 2012-12-20
US10819982B2 (en) 2020-10-27
US20170142416A1 (en) 2017-05-18
PH12018500351B1 (en) 2018-08-13
CN107529706B (zh) 2020-11-17
RU2018120845A3 (pt) 2021-04-05
AU2012268951A1 (en) 2014-01-16
HK1247487A1 (zh) 2018-09-21
CN107613307B (zh) 2021-04-06
HUE062605T2 (hu) 2023-11-28
PH12018500328B1 (en) 2018-07-09
CN107529705B (zh) 2021-02-12
CN107529708A (zh) 2018-01-02
PH12018500349A1 (en) 2018-08-13
BR112013032332A2 (pt) 2016-12-20
IL254274B (en) 2018-06-28
KR102052471B1 (ko) 2019-12-05
CN107465928A (zh) 2017-12-12
HK1247489A1 (zh) 2018-09-21
KR102254000B1 (ko) 2021-05-20
CN103733622B (zh) 2017-06-30
CN107529707A (zh) 2018-01-02
HK1248436A1 (zh) 2018-10-12
CN107347161B (zh) 2020-06-12
US10063858B2 (en) 2018-08-28
PT3930330T (pt) 2023-08-31
KR20140028106A (ko) 2014-03-07
KR20240017975A (ko) 2024-02-08
ES2897209T3 (es) 2022-02-28
CN107529708B (zh) 2019-05-07
RS64604B1 (sr) 2023-10-31
HK1248949A1 (zh) 2018-10-19
ES2704627T8 (es) 2021-01-25
PH12019500792A1 (en) 2020-12-02
RU2758981C2 (ru) 2021-11-03
HK1247490A1 (zh) 2018-09-21
CN107801042B (zh) 2020-06-19
PH12018500353B1 (en) 2018-08-13
EP3343781A1 (en) 2018-07-04
PH12018500348B1 (en) 2018-08-13
SI3930330T1 (sl) 2023-10-30
CN107529710B (zh) 2020-04-07
KR101818978B1 (ko) 2018-01-16
US9762913B2 (en) 2017-09-12
ZA201400030B (en) 2015-04-29
IL290229A (en) 2022-03-01
PT3471415T (pt) 2021-11-04
US20180324435A1 (en) 2018-11-08
AU2024201731A1 (en) 2024-04-04
JP7464768B2 (ja) 2024-04-09
HK1246540A1 (zh) 2018-09-07
US10021393B2 (en) 2018-07-10
PL2721819T3 (pl) 2024-02-19
PH12018500350B1 (en) 2018-08-13
KR20160018879A (ko) 2016-02-17
KR20180086522A (ko) 2018-07-31
IL297827A (en) 2023-01-01
IL294454B2 (en) 2023-06-01
BR122020024986B1 (pt) 2022-02-22
IL249644A (en) 2017-09-28
IL290229B2 (en) 2023-04-01
KR20160119254A (ko) 2016-10-12
US20160360223A1 (en) 2016-12-08
IL304856A (en) 2023-09-01
CY1124687T1 (el) 2022-07-22
PL2721822T3 (pl) 2019-04-30
US9768804B1 (en) 2017-09-19
KR101994869B1 (ko) 2019-07-01
US20170180733A1 (en) 2017-06-22
HK1249313B (zh) 2020-04-24
RS63053B1 (sr) 2022-04-29
KR102631388B1 (ko) 2024-01-31
CN107801025B (zh) 2020-07-14

Similar Documents

Publication Publication Date Title
US11277614B2 (en) Entropy coding supporting mode switching
US11516474B2 (en) Context initialization in entropy coding
AU2024201207A1 (en) Context initialization in entropy coding

Legal Events

Date Code Title Description
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 18/06/2012, OBSERVADAS AS CONDICOES LEGAIS.

B25G Requested change of headquarter approved

Owner name: GE VIDEO COMPRESSION, LLC. (US)