BRPI0614662A2 - compensação e estimativa de movimento usando um cache hierárquico - Google Patents

compensação e estimativa de movimento usando um cache hierárquico Download PDF

Info

Publication number
BRPI0614662A2
BRPI0614662A2 BRPI0614662-7A BRPI0614662A BRPI0614662A2 BR PI0614662 A2 BRPI0614662 A2 BR PI0614662A2 BR PI0614662 A BRPI0614662 A BR PI0614662A BR PI0614662 A2 BRPI0614662 A2 BR PI0614662A2
Authority
BR
Brazil
Prior art keywords
hierarchical cache
sample
levels
cache
hierarchical
Prior art date
Application number
BRPI0614662-7A
Other languages
English (en)
Inventor
Stephen John Brooks
Original Assignee
Thomson Licensing
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Thomson Licensing filed Critical Thomson Licensing
Publication of BRPI0614662A2 publication Critical patent/BRPI0614662A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • 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/53Multi-resolution motion estimation; Hierarchical motion estimation
    • 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

Landscapes

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

Abstract

COMPENSAçãO E ESTIMATIVA DE MOVIMENTO USANDO UM CACHE HIERáRQUICO. São providos método e aparelho para a otimização do processo de movimento de vídeo usando uma cache hierárquica. Um método de armazenamento para um processo de movimento de vídeo inclui configurar (622) uma cache hierárquica para ter um ou mais níveis, cada um dos níveis da cache hierárquica correspondendo com um respectivo de uma pluralidade de níveis de uma hierarquia de cálculo associada com o cálculo de valores de amostra para o processo de movimento de video. O método também inclui armazenar (655) um valor particular para uma amostra relacionada com o processo de movimento de video em um nível correspondente da cache hierárquica com base em a qual da pluralidade de níveis da hierarquia de cálculo o valor particular corresponde, quando o valor particular nào existe na cache hierárquica.

Description

"COMPENSAÇÃO E ESTIMATIVA DE MOVIMENTO USANDO UMCACHE HIERÁRQUICO"
REFERÊNCIA CRUZADA COM PEDIDOS RELACIONADOS
Esse pedido reivindica o beneficio do Pedido Pro-visório U.S. 60/703.204, depositado em 28 de julho de 2005 eintitulado "METHOD AND APPARATUS FOR VIDEO MOTIONCOMPENSATION", que é incorporado por referência aqui na suaintegridade.
CAMPO DA INVENÇÃO
A presente invenção refere-se, de forma geral, acodificação e decodificação de video e, mais particularmen-te, a métodos e aparelhos para a otimização do processo demovimento de video usando uma cache de amostra hierárquica.
ANTECEDENTES DA INVENÇÃO
Para muitas aplicações de codifica-dor/decodificador de video, a estimativa e a compensação domovimento são o fator de retardo principal do desempenho.Estatisti camente, os cálculos usados para gerar amostras deluma ou croma resultantes podem ser redundantes devido àscorrelações de tempo-espaço nos algoritmos de compensa-ção/estimativa do movimento usados para selecionar uma amos-tra resultante. Em sistemas de video com recursos de memóriasuficientes, essas amostras podem ser colocadas em cache,dessa maneira evitando os cálculos redundantes e economizan-do tempo de execução.
Muito do esforço para otimizar a compensa-ção/estimativa do movimento está focalizado na otimização docódigo que calcula amostras necessárias. Essa prática nãoremove os cálculos redundantes do fluxo do programa.
Uma descrição será agora fornecida do processo deinterpolação da amostra de Iuma da Organização Internacionalpara o Grupo-4 de Especialistas de Imagem em Movimento(MPEG-4) da Comissão Eletrotécnica Internacio-nal/Padronização parte 10 da União de Telecomunicação Inter-nacional/padrão de Codificação de Video Avançado (AVC), Se-tor de Telecomunicação (ITU-T) padrão H.264 (a seguir o "pa-drão MPEG4/H.264" ou simplesmente o "padrão H.264"), parailustrar um pouco da redundância no processo de interpolaçãoda amostra de Iuma.
0 padrão H.264 utiliza um esquema de interpolaçãode um quarto de pixel (quarto-pel) . A Figura 1 mostra comoessas amostras são dispostas. Com referência à Figura 1, umdiagrama mostrando as posições da amostra de número inteiroe as posições da amostra fracionárias para a interpolação deIuma da amostra de um quarto de acordo com o padrão H.2 64 éindicado geralmente pelo numerai de referência 100. As posi-ções da amostra de número inteiro são indicadas pelos blocosque estão vazios ou que incluem letras maiúsculas, e as po-sições da amostra fracionária são indicadas pelos blocos queindicam que incluem letras minúsculas.
As amostras de sub-pixel (sub-pel) são calculadasa partir das amostras que se situam nas coordenadas de núme-ro inteiro como segue (tirado da seção 8.4.2.2.1 do padrãoH.264):Dadas as amostras de Iuma yA' a xU' . . . , as amos-tras de Iuma 'a' a ys' nas posições da amostra fracionáriasão derivadas pelas regras seguintes. Os valores de prediçãode Iuma em posições de metade da amostra devem ser derivadosaplicando um filtro de 6 derivações com valores de derivação(1, -5, 20, 20, -5, 1) . Os valores de predição de Iuma emposições de um quarto da amostra devem ser derivados fazendoa média das amostras nas posições de amostra completa e me-tade. 0 processo para cada posição fracionária é descritoabaixo.
- As amostras nas posições de metade da amostramarcadas b devem ser derivadas primeiro calculando os valo-res intermediários representados como bi pela aplicação dofiltro de 6 derivações para as amostras de posição de númerointeiro mais próximas na direção horizontal. As amostras nasposições de metade da amostra marcadas h devem ser derivadasprimeiro calculando os valores intermediários indicados comohi pela aplicação do filtro de 6 derivações nas amostras deposição de número inteiro mais próximas na direção vertical:
bi=(E-5*F + 20*G + 20*H-5*I + J)hi = (A-5*C+20*G+20*M-5*R+T)
Os valores de predição finais b e h dévem ser de-rivados usando:
b = Cliply((bi + 16) » 5)h = Cliply ( (hi + 16) » 5)
- As amostras na posição de metade da amostra mar-cadas como j devem ser derivadas primeiro calculando o valorintermediário representado como jx aplicando o filtro de 6derivações nos valores intermediários das posições de metadeda amostra mais próximas na direção horizontal ou na verti-cal porque essas produzem um resultado igual.
ji = cc - 5 * dd + 20 * hi + 20 * mi - 5 * ee + ff
ou
ji = aa - 5 * bb + 20 * bi + 20 * Si - 5 * gg + hh
onde valores intermediários representados como aa,bb, gg, Si e hh devem ser derivados aplicando o filtro de 6derivações horizontalmente da mesma maneira como a derivaçãode bi e valores intermediários representados como cc, dd,ee, mi e ff devem ser derivados aplicando o filtro de 6 de-rivações verticalmente na mesma maneira como a derivação dehi. O valor de predição final j deve ser derivado usando:
j = Cliply((j ι + 512) » 10)
- Os valores de predição finais sem devem serderivados de Si e mi na mesma maneira como a derivação de be h, como dado por:
s = Cliply((si + 16) » 5)m = Cliply ( (mi + 16) » 5)
- As amostras nas posições de um quarto de amostramarcadas como a, c, d, n, f, i, k e q devem ser derivadasfazendo a média com arredondamento ascendente das duas amos-tras mais próximas nas posições de amostra de número inteiroe metade usando:
a = (G + b + 1) » 1c= (H + b + 1) »1d = (G + h + 1) » 1η = (Μ + h + 1) »1f = (b + j + 1) »1
i = (h + j + 1) »1
k = (j + m + 1) »1
q = (j + s + 1) »1.
As amostras nas posições de um quarto de amostramarcadas como e, g, ρ e r devem ser derivadas fazendo a mé-dia com arredondamento ascendente das duas amostras maispróximas em posições de metade da amostra na direção diago-nal usando
e = (b + h + 1) » 1
g = (b + m + 1) »1
p = (h + s + 1) »1
r = (m + s + 1) »1.
Observem que CliplY é uma operação que firma umnúmero em 0, se menor do que 0, ou em 255, se maior do que255, de outra forma o número é passado inalterado.
SUMÁRIO DA INVENÇÃO
Esses e outros inconvenientes e desvantagens datécnica anterior são tratados pela presente invenção, que édirecionada para métodos e aparelhos para a otimização doprocesso de movimento de video usando uma cache de amostrahierárquica.
De acordo com um aspecto da presente invenção, éprovido um método de armazenamento para um processo de movi-mento de video. O método inclui configurar uma cache hierár-quica para ter um ou mais níveis, cada um dos níveis da ca-che hierárquica correspondendo com um respectivo de uma plu-ralidade de níveis de uma hierarquia de cálculo associadacom o cálculo de valores de amostra para o processo de movi-mento de vídeo. O método também inclui armazenar um valorparticular para uma amostra relacionado com o processo demovimento de vídeo em um nível correspondente da cache hie-rárquica com base em com qual da pluralidade de níveis dahierarquia de cálculo o valor particular corresponde, quandoo valor particular não existe na cache hierárquica.
De acordo com um outro aspecto da presente inven-ção, é provido um aparelho para suportar um processo de mo-vimento de vídeo. O aparelho inclui uma cache hierárquicaconfigurada para ter um ou mais níveis, cada um dos níveisda cache hierárquica correspondendo com um respectivo de umapluralidade de níveis de uma hierarquia de cálculo associadacom o cálculo de valores de amostra para o processo de movi-mento de vídeo. A cache hierárquica armazena um valor parti-cular para uma amostra relacionado com o processo de movi-mento de vídeo em um nível correspondente da cache hierár-quica com base em com qual da pluralidade de níveis da hie-rarquia de cálculo o valor particular corresponde, quando ovalor particular não existe na cache hierárquica.
Esses e outros aspectos, características e vanta-gens da presente invenção se tornarão evidentes a partir dadescrição detalhada seguinte das modalidades exemplares, queé para ser lida em conjunto com os desenhos acompanhantes.
BREVE DESCRIÇÃO DOS DESENHOS
A presente invenção pode ser entendida melhor deacordo com as Figuras exemplares seguintes, nas quais:A Figura 1 é um diagrama mostrando posições da a-mostra de número inteiro e posições da amostra fracionáriapara a interpolação de Iuma de um quarto de amostra, de a-cordo com o padrão H.2 64;
A Figura 2 é um diagrama de blocos para um codifi-cador de video exemplar no qual os princípios presentes po-dem ser aplicados, de acordo com uma modalidade dos presen-tes princípios;
A Figura 3 é um diagrama de blocos para um decodi-ficador de vídeo exemplar no qual os presentes princípiospodem ser aplicados, de acordo com uma modalidade dos pre-sentes princípios;
A Figura 4 é um diagrama para um bloco Ixl mos-trando as localizações de tipos de amostra de Iuma de umquarto-pel nele, de acordo com uma modalidade dos presentesprincípios;
A Figura 5 é um diagrama de blocos mostrando rela-ções de dependência entre tipos de amostra para o bloco Ixlmostrado na Figura 4 e
A Figura 6 é um diagrama de fluxo para um métodoexemplar para colocar em cache as amostras para um processode movimento de vídeo, de acordo com uma modalidade dos pre-sentes princípios.
DESCRIÇÃO DETALHADA
A presente invenção é direcionada a métodos e apa-relhos para a otimização do processo de movimento de vídeousando uma cache de amostra hierárquica. Vantajosamente, ométodo e o aparelho de acordo com os presentes princípioseliminam os cálculos redundantes executados durante um pro-cesso de movimento de vídeo tal como, por exemplo, um pro-cesso de compensação de movimento com base em bloco e/ou deestimativa de movimento com base em bloco.
E para ser verificado que a presente invenção nãoé limitada a qualquer tecnologia/padrão particular de codi-ficação/decodificação de vídeo e assim, qualquer tecnologi-a/padrão de codificação/decodificação de vídeo, como facil-mente determinado por alguém versado nessa técnica e técni-cas relacionadas, pode ser utilizada de acordo com os pre-sentes princípios, enquanto mantendo o escopo da presenteinvenção. É para ser também verificado que uma cache hierár-quica de acordo com os presentes princípios pode ser imple-mentada em hardware e/ou software. Além do mais, implementa-ções de uma cache hierárquica de acordo com os presentesprincípios podem envolver uma ou mais caches hierárquicas.
Essa descrição ilustra os princípios da presenteinvenção. Assim será verificado que aqueles versados na téc-nica serão capazes de planejar várias disposições que, embo-ra não explicitamente descritas ou mostradas aqui, personi-ficam os princípios da invenção e são incluídos dentro doseu espírito e escopo.
Todos os exemplos e linguagem condicional recita-dos aqui são planejados para finalidades pedagógicas paraauxiliar o leitor no entendimento dos princípios da invençãoe dos conceitos contribuídos pelo inventor para aperfeiçoara técnica, e devem ser interpretados como sendo sem limita-ção a tais exemplos e condições especificamente recitados.Além do mais, todas as declarações aqui recitandoprincípios, aspectos e modalidades da invenção, bem comoseus exemplos específicos, são planejadas para abranger am-bos os equivalentes estruturais e funcionais da mesma. Adi-cionalmente, é planejado que tais equivalentes incluam equi-valentes atualmente conhecidos bem como equivalentes desen-volvidos no futuro, isto é, quaisquer elementos desenvolvi-dos que executem a mesma função, a despeito da estrutura.
Assim, por exemplo, será verificado por aquelesversados na técnica que os diagramas de bloco apresentadosaqui representam vistas conceituais de conjunto de circuitoilustrativo personificando os princípios da invenção. Simi-larmente, será verificado que quaisquer fluxogramas, diagra-mas de fluxo, diagramas de transição de estado, pseudocódigoe semelhantes representam vários processos que podem sersubstancialmente representados em meios legíveis por compu-tador e assim executados por um computador ou processador,quer tal computador ou processador seja explicitamente mos-trado ou não.
As funções dos vários elementos mostrados nas Fi-guras podem ser providas através do uso de hardware dedica-do, bem como hardware capaz de executar software em associa-ção com software apropriado. Quando providas por um proces-sador, as funções podem ser providas por um processador de-dicado único, por um processador compartilhado único ou poruma pluralidade de processadores individuais, alguns dosquais podem ser compartilhados. Além do mais, o uso explíci-to do termo "processador" ou "controlador" não deve ser in-terpretado como se referindo exclusivamente ao hardware ca-paz de executar software, e pode implicitamente incluir, semlimitação, hardware de processador de sinal digital ("DSP"),memória somente de leitura ("ROM") para armazenar software,memória de acesso aleatório ("RAM") e armazenamento não vo-látil.
Outros hardwares, convencionais e/ou personaliza-dos, podem também ser incluídos. Similarmente, quaisquerchaves mostradas nas Figuras são conceituais somente. Suafunção pode ser executada através da alteração de lógica doprograma, através de lógica dedicada, através da interaçãode controle do programa e lógica dedicada ou até mesmo manu-almente, a técnica particular sendo selecionável pelo execu-tor como mais especificamente entendido a partir do contexto.
Nas reivindicações aqui contidas, qualquer elemen-to expresso como um modo para executar uma função especifi-cada é planejado para abranger qualquer maneira de desempe-nho dessa função incluindo, por exemplo, a) uma combinaçãode elementos de circuito que executa essa função ou b) soft-ware em qualquer forma, incluindo, portanto, firmware, mi-crocódigo ou semelhante, combinado com conjunto de circuitoapropriado para executar esse software para desempenhar afunção. A invenção como definida por tais reivindicações re-side no fato que as funcionalidades providas pelos váriosmodos recitados são combinadas e colocadas juntas na maneiraque as reivindicações solicitam. Assim, é considerado quequalquer modo que possa prover essas funcionalidades sejaequivalente a esses mostrados aqui.
Com referência à Figura 2, um codificador de videoexemplar é indicado geralmente pelo numerai de referência200. Uma entrada para o codificador de video 200 é conectadaem comunicação de sinal com uma entrada não inversora de umajunção de soma 210. A saida da junção de soma 210 é conecta-da em comunicação de sinal com um transformador/quantizador220. A saida do transformador/quantizador 220 é conectada emcomunicação de sinal com um codificador de entropia 240. Umasaida do codificador de entropia 240 fica disponível comouma saída do codificador 200.
A saída do transformador/quantizador 220 é aindaconectada em comunicação de sinal com um transforma-dor/quantizador inverso 250. Uma saída do transforma-dor/quantizador inverso 250 é conectada em comunicação desinal com uma entrada de um filtro de desblocar 2 60. Uma sa-ída do filtro de desblocar 260 é conectada em comunicação desinal com depósitos da imagem de referência 270. Uma primei-ra saída dos depósitos da imagem de referência 270 é conec-tada em comunicação de sinal com uma primeira entrada de umavaliador de movimento 280. A entrada para o codificador 200é ainda conectada em comunicação de sinal com uma segundaentrada do avaliador de movimento 280. A saída do avaliadorde movimento 280 é conectada em comunicação de sinal com umaprimeira entrada de um compensador de movimento 2 90. Uma se-gunda saída dos depósitos da imagem de referência 270 é co-nectada em comunicação de sinal com uma segunda entrada docompensador de movimento 290. A saída do compensador de mo-vimento 2 90 é conectada em comunicação de sinal com uma en-trada inversora da junção de soma 210.
De acordo com os princípios associados com a moda-lidade atual, uma cache hierárquica 277A é provida no com-pensador de movimento 290 e uma cache hierárquica 277B éprovida no avaliador de movimento 280. É para ser verificadoque embora caches separadas sejam mostradas incluídas nocompensador de movimento 2 90 e no avaliador de movimento280, em outras modalidades, uma única cache pode ser utili-zada por ambos o compensador de movimento 2 90 e o avaliadorde movimento 280, ou mais do que uma cache pode ser usada nocompensador de movimento 2 90 e/ou no avaliador de movimento290. Isto é, dado os ensinamentos da presente invenção pro-vidos aqui, alguém versado nessa técnica e em técnicas rela-cionadas considerará essas e várias outras configurações deum sistema de cache hierárquica para uso para processos deestimativa de movimento e/ou compensação de movimento combase em bloco, enquanto mantendo o escopo da presente invenção.
Com referência à Figura 3, um decodificador de ví-deo exemplar é indicado geralmente pelo numerai de referên-cia 300. O decodificador de vídeo 300 inclui um decodifica-dor de entropia 310 para receber uma seqüência de vídeo. Umaprimeira saída do decodificador de entropia 310 é conectadaem comunicação de sinal com uma entrada de um quantiza-dor/transformador inverso 320. Uma saída do quantiza-dor/transformador inverso 320 é conectada em comunicação desinal com uma primeira entrada de uma junção de soma 340.
A saida da junção de soma 340 é conectada em comu-nicação de sinal com um filtro de desblocar 390. Uma saidado filtro de desblocar 390 é conectada em comunicação de si-nal com o depósito da imagem de referência 350. O depósitoda imagem de referência 350 é conectado em comunicação desinal com uma primeira entrada de um compensador de movimen-to 360. Uma saida do compensador de movimento 360 é conecta-da em comunicação de sinal com uma segunda entrada da junçãode soma 340. Uma segunda saida do decodificador de entropia310 é conectada em comunicação de sinal com uma segunda en-trada do compensador de movimento 360. A saida do filtro dedesblocar 390 fica disponível como uma saída do decodifica-dor de vídeo 300.
De acordo com os princípios associados com a moda-lidade atual, uma cache hierárquica 377A é provida no com-pensador de movimento 360. É para ser verificado que emborauma única cache seja mostrada incluída no compensador de mo-vimento 360, em outras modalidades, mais do que uma cachepode ser incluída no compensador de movimento 360. Isto é,dado os ensinamentos da presente invenção providos aqui, al-guém versado nessa técnica e em técnicas relacionadas consi-derará essas e várias outras configurações de um sistema decache hierárquica para uso para processos de estimativa demovimento e/ou compensação de movimento com base em bloco,enquanto mantendo o escopo da presente invenção.Como mencionado acima, métodos e aparelhos sãoprovidos para otimização da estimativa/compensação de movi-mento de video com base em bloco usando uma cache de amostrahierárquica. Vantajosamente, o número de cálculos redundan-tes no tempo de execução em um processo de estimativa de mo-vimento e/ou compensação de movimento com base em bloco podeser reduzido de acordo com os ensinamentos dos presentesprincípios.
Como descrito acima, na compensação/estimativa domovimento com base em bloco, o cálculo de uma amostrainterpolada depende de outras amostras de fonte. Essasamostras de fonte podem ser intermediárias por natureza e,se afirmativo, elas seriam calculadas antes que a amostraresultante final possa ser calculada. Assim, existe umarelação hierárquica entre as amostras resultantes.
Por exemplo, no padrão de vídeo H.2 64, uma amostrade Iuma resultante pode ser calculada aplicando um filtro deResposta de Impulso Finito (FIR) de seis derivações em amos-tras de Iuma horizontal ou verticalmente adjacentes incluí-das em um quadro de referência. Com coeficientes de 1, -5,20, 20, -5 e 1, esse filtro FIR usa 4 operações de multipli-cação e 5 operações de adição. É para ser observado que essadescrição não considera o arredondamento e operações de tro-ca já que eles não são parte do filtro FIR próprio. Assim, ofiltro FIR é um mecanismo de interpolação relativamente com-plexo (oneroso). Dessa maneira, a eliminação do uso redun-dante desse filtro FIR melhoraria o desempenho. Adicional-mente, existem casos quando as entradas para esse filtro FIRsão as próprias amostras intermediárias, cada uma das entra-das para esse filtro FIR sendo a saida desse ou um outrofiltro FIR. Isso aumenta a complexidade por uma ordem demagnitude, filtrando as saídas de (possivelmente) seis apli-cações de filtros diferentes nas amostras. Se cada uma dasseis amostras alimentadas para esse filtro FIR final tivesseque ser calculada, existiria um total de 28 operações demultiplicação e 35 operações de adição. Assim, ganhos de de-sempenho até mesmo maiores seriam realizados removendo cál-culos redundantes envolvendo essa filtragem dupla.
Assim, com referência novamente à Figura 1, podeser observado que existe uma relação hierárquica entre asamostras de Iuma interpoladas. As amostras representadas porb e h (que incluem sem, respectivamente) , são dependentesdas amostras de Iuma em posições de número inteiro que vêmdo quadro de referência. As amostras representadas por j sãodependentes de (seis) amostras do tipo representado por b ou
h. As amostras representadas por a e c são dependentes dasamostras representadas por b e uma amostra posicionada denúmero inteiro. As amostras representadas por d e η são de-pendentes das amostras representadas por h e uma amostra deposição de número inteiro. As amostras representadas por f,
i, k e q são dependentes das amostras representadas por b,h, m, s, respectivamente, e amostras representadas por j.
Finalmente, as amostras representadas por e, g, ρ e r sãodependentes das amostras representadas por j e amostras po-sicionadas de número inteiro representadas por G, Η, M e N,respectivamente.Essas relações são filas de uma hierarquia. Comfinalidades de referência, essas filas devem ter nomes. Devolta para a Figura 4, o bloco Ixl mostrando as localizaçõesdos tipos de amostra de Iuma de um quarto-pel nela é indica-do geralmente pelo numerai de referência 400. A localizaçãomarcada alfa é a amostra posicionada de número inteiro en-contrada no quadro de referência. As porções de fração dascoordenadas de localizações estão em parênteses. As amostrasposicionadas de número inteiro (que vêm do quadro de refe-rência) são aqui citadas como amostras alfa. As amostras re-presentadas por b e h são citadas como amostras beta. As a-mostras representadas por a, c, d e η são citadas como amos-tras gama. As amostras representadas por e, g, ρ e r são ci-tadas como amostras delta. As amostras representadas por jsão citadas como amostras epsilon. Finalmente, as amostrasrepresentadas por f, i, k e q são citadas como amostras ze-ta. Um subnivel de cache pode ser nomeado pelo tipo de amos-tra que ele mantém, isto é, a subcache beta mantém amostrasbeta. O custo computacional relativo de cada nivel aumentadas amostras beta para as amostras zeta. É para ser verifi-cado que os termos "sub-cache" e "nivel" (como em um nivelna cache hierárquica) são usados de maneira permutável aqui.
Como pode ser deduzido do acima, uma amostra betaé derivada de duas amostras alfa, uma amostra gama é deriva-da de uma amostra alfa e uma amostra beta, uma amostra deltaé derivada de duas amostras beta, uma amostra epsilon é de-rivada de 6 amostras beta e uma amostra zeta é derivada deuma amostra epsilon e uma amostra beta. De volta para a Fi-gura 5, as relações de dependência entre tipos de amostrapara o bloco Ixl mostrado na Figura 4 são indicadas geral-mente pelo numerai de referência 500.
Uma interrupção adicional é usada dentro do esque-ma associado com a modalidade atual. A sub-cache beta (ounivel beta) tem dois elementos com coordenadas fracionáriasdiferentes. Da mesma maneira, os níveis gama, delta e zetatêm quatro amostras cada. Para distinguir entre amostras domesmo tipo, as coordenadas fracionárias são evocadas. Porexemplo, as amostras beta podem ser citadas como beta (.50,.00) e beta (.00, .50).
Uma cache hierárquica pode tirar vantagem dessasrelações armazenando resultados intermediários do processode interpolação para uma amostra particular e retornando es-ses resultados quando necessário, economizando o custo deter que executar novamente alguns dos cálculos necessáriospara calcular essa amostra. Por exemplo (novamente com refe-rência à Figura 1 acima), a amostra a, uma amostra gama(.25, .00), depende da amostra b, uma amostra beta (.50,.00), estar disponível (bem como um pixel do quadro de refe-rência) . Se a amostra a é necessária e não no nível gama dacache (.25, .00), a amostra a deve ser calculada e adiciona-da na cache. Como parte do cálculo de a, b é requerido. Se bestá na cache beta (.50, .00), então a cache beta (.50, .00)envia b, dessa maneira acelerando o cálculo de a. Se b nãoestá na cache beta (.50, .00), b é calculado e colocado nes-sa cache, a seguir enviado de modo que a pode ser calculada.Quando a é calculada, ela é colocada em cache no nível gama(.25, .00).
Uma descrição será agora dada com relação às ca-ches estática e dinâmica, de acordo com várias modalidadesexemplares dos presentes princípios.
Em uma modalidade dos presentes princípios envol-vendo o padrão H.264, existem 15 níveis totais (sub-caches)possíveis na cache: 2 níveis beta, 4 delta, 4 gama, 1 epsí-Ion e 4 zeta. Uma cache de amostra hierárquica pode ou nãoincluir todos os 15 níveis. Por exemplo, uma cache poderiater somente sub-caches beta e epsílon implementadas nela.Similarmente, uma cache pode não incluir todos os níveis deuma dada fila, isto é, uma cache pode somente ter sub-cacheszeta (.25, .50) e zeta (.50, .25) e não todos os quatro sub-tipos zeta. Desde que existem memória e carga extra de com-putação na utilização de uma cache de amostra, isso permiteque a utilização dos recursos de memória e computação sejautilizada mais eficientemente para um ambiente de decodifi-cação particular. Uma grande quantidade de memória disponí-vel poderia proporcionar o uso de mais sub-caches. Se a me-mória é valiosa, talvez somente uma ou duas sub-caches sejamusadas. Além do mais, é para ser verificado que o um ou maisdos 15 níveis podem ser implementados como caches indepen-dentes e não sub-caches. Essas e várias outras implementa-ções e configurações dos presentes princípios são facilmenteconsiderados por alguém versado nessa técnica e em técnicasrelacionadas, dado os ensinamentos dos presentes princípiosprovidos aqui.Uma cache estática de acordo com os presentesprincípios é uma na qual os níveis da hierarquia são fixa-dos. Se os recursos em um ambiente particular de codificaçãoe/ou decodificação disponíveis para caching da amostra per-manecem razoavelmente rígidos, a cache estática não colocacarga extra de gerenciamento da sub-cache adicional no sis-tema. Uma cache dinâmica de acordo com os presentes princí-pios é uma na qual sub-caches podem ser adicionadas ou remo-vidas. A adição e/ou remoção das sub-caches pode ser deter-minada por critérios avaliados fora da cache. Uma cache di-nâmica pode fazer uso de e se adaptar à disponibilidade va-riada de recursos. À medida que mais memória e/ou força decomputação fica disponível, uma sub-cache pode ser adiciona-da. Inversamente, à medida que esses recursos diminuem, sub-caches podem ser removidas, diminuindo a demanda da cache nogeral. Recursos não são os únicos critérios sobre os quaisas decisões de gerenciamento de sub-cache são tomadas. Porexemplo, um codificador e/ou decodificador de complexidadesuficiente pode verificar (ou ser informado) que toda inter-polação é executada em coordenadas de metade-pel. Isso sig-nificaria que somente amostras beta e epsílon seriam usadas,tornando as sub-caches beta e epsílon os únicos níveis prá-ticos para uso (com referência às localizações das amostrasbeta e epsílon na Figura 4).
Uma descrição será agora fornecida com relação aoconteúdo da cache, de acordo com uma modalidade exemplar dospresentes princípios.A cache é uma formação de amostras de Iuma inter-poladas a partir do conteúdo de referência via os mecanismosprescritos pelo processo de compensação de movimento com ba-se em bloco para uma especificação de decodificador de vídeoparticular. Essas operações são, de forma geral, relativa-mente caras. A cache mantém esses valores para evitar seucálculo redundante. A precisão na qual as amostras são arma-zenadas na cache pode não ser a precisão do resultado final.Por exemplo, na decodificação H.264 a cache da amostra man-tém o valor Iuma calculado aplicando um filtro de seis deri-vações em um conjunto de amostras de entrada. As amostras deluma em H.2 64 são freqüentemente de 8 bits. No cálculo daamostra epsílon, sete aplicações de filtro de seis deriva-ções são feitas. As primeiras seis são executadas em seisfileiras (ou colunas) de seis amostras alfa a partir do qua-dro de referência para produzir uma coluna (ou fileira) deamostras beta. Essas seis amostras beta de entrada não sãoarredondadas e reduzidas para precisão de 8 bits, mas sãopreferivelmente mantidas na sua precisão original quando asétima aplicação de seis derivações é executada nelas. 0 re-sultado dessa aplicação de filtro final é então arredondadoe reduzido para produzir a amostra epsílon. (Esse processo éindicado no excerto da especificação H.264 acima.) Uma sub-cache beta que mantém suas amostras nessa precisão interme-diária mais alta seria necessária desde que amostras arre-dondadas e reduzidas para a precisão final não podem ser u-sadas para calcular as amostras epsílon. Entretanto, se odecodificador pode saber que as amostras epsílon não sãonunca produzidas (assim não são as amostras zeta), então asub-cache beta não precisaria manter amostras de precisãointermediária; a sub-cache beta poderia manter amostras naprecisão final (menor), talvez diminuindo as exigências dememória.
Uma descrição será agora fornecida com relação aoacesso de cache, de acordo com uma modalidade exemplar dapresente invenção.
Na compensação do movimento com base no bloco, ve-tores de movimento descrevem a localização anterior de umbloco sendo decodificado em relação à localização atual des-se bloco. O. vetor de movimento é adicionado na posição dobloco atual para produzir a localização de referência para aamostra desejada. O acesso de cache é feito por essalocalização. Uma amostra em (X.x, Y.y) (onde XeYrepresentam a porção de número inteiro da coordenada e χ e ya porção fracionária) tem uma localização distinta na cacheda amostra. As porções fracionárias, χ e y, das coordenadasdeterminam qual sub-cache mantém a amostra (ver Figura 4).
Uma amostra na localização de referência (10.50, 8.00) é umaamostra do tipo beta (.50, .00) e estaria nessa sub-cache sedisponível. As porções de número inteiro, XeY, dascoordenadas fornecem a localização da amostra dentro da sub-cache. A qualquer momento que uma amostra seja requerida,sua localização de referência é dada para a cache e a cacheretorna o resultado ou indica que a amostra não está nacache. Parâmetros possíveis que podem ser afetados pelouso de uma cache de acordo com os presentes princípios in-cluem/envolvem: recursos de memória (em termos de uso dalargura de banda da memória principal, uso do tamanho da me-mória principal, tamanho de código e efeito nas caches doprocessador, se alguma) e a largura de banda computacional(tempo de CPU) consumida pelo código que implementa a cache.
É para ser verificado que nem todos os níveis da hierarquiaprecisam ser implementados para ver ganhos de desempenho demodo que o uso de memória exigido por uma aplicação que uti-liza uma tal cache pode ser estrangulado no tempo de execu-ção (dinâmico) ou no tempo da construção (estático). Além domais, múltiplas caches podem ser usadas por uma aplicaçãopara aumentar mais o desempenho, à custa do uso de recursoaumentado. Dados os ensinamentos da presente invenção provi-dos aqui, alguém versado nessa técnica e em técnicas rela-cionadas considerará essas e várias outras implementações econfigurações de uma cache hierárquica para compensa-ção/estimativa de movimento com base em bloco, enquanto man-tendo o escopo da presente invenção.
De volta para a Figura 6, um método para cachingamostras para um processo de movimento de vídeo é indicadogeralmente pelo numerai de referência 600. O processo de mo-vimento de vídeo pode ser, por exemplo, um processo decompensação de movimento com base em bloco e/ou um processode estimativa de movimento com base em bloco.
O método 600 inclui um bloco de partida 605 quepassa o controle para um bloco de decisão 610. 0 bloco dedecisão 610 determina se ou não uma seleção de nível hierár-quico dinâmico foi implementada. Se afirmativo, o controle épassado para um bloco de função 615. De outra forma, o con-trole é passado para um bloco de função 625.
O bloco de função 615 recebe uma ou mais entradasselecionando quais níveis da hierarquia da cache habilitar epassa o controle para um bloco de função 620. O bloco defunção 620 cria uma cache hierárquica tendo os níveis dina-micamente definidos pela uma ou mais entradas recebidas pelobloco de função 615 e passa o controle para um bloco de fun-ção 622.
O bloco de função 625 cria uma cache hierárquicaestaticamente definida e passa o controle para um bloco defunção 622.
O bloco de função 622 configura a cache hierárqui-ca para ter um ou mais níveis, cada um correspondendo com umrespectivo de uma pluralidade de níveis de uma hierarquia decálculo associada com o cálculo de valores de amostra para oprocesso de movimento de vídeo e passa o controle para umbloco de função 630. Isto é, a cache hierárquica é criada demodo que os níveis da cache referem-se à ou estão de outraforma correlacionados com os níveis na relação hierárquicaentre amostras resultantes do processo de movimento do ví-deo. É para ser verificado que embora a função de configura-ção executada pelo bloco de função 622 seja mostrada separa-da da função de criação dos blocos de função 620 e 625, afunção de configuração pode ser considerada como sendo parteda função de criação.O bloco de função 630 inicializa a cache para umestado vazio no qual nenhuma amostra foi armazenada e passao controle para um bloco de decisão 635.
O bloco de decisão 635 determina se uma amostraparticular é necessária ou não no processo de movimento devideo. Se afirmativo, então o controle é passado para umbloco de decisão 640. De outra forma, o controle é retornadopara o bloco de função 635.
O bloco de decisão 640 verifica o nivel apropriadoda cache para determinar se a amostra particular foi previa-mente calculada e colocada em cache ou não. Se afirmativo,então o controle é passado para um bloco de função 645. Deoutra forma, o controle é passado para um bloco de função650.
O bloco de função 645 recupera a amostra particu-lar da cache e passa o controle para um bloco de decisão660. É para ser verificado que a amostra particular pode serrecuperada da cache com base em uma porção de número inteiroe uma porção fracionária de uma localização correspondendocom um quadro de referência.
O bloco de função 650 calcula a amostra particular(que pode exigir calcular e caching uma ou mais amostras in-termediárias) e passa o controle para um bloco de função655. É para ser verificado que o bloco de função 650 podecache as amostras intermediárias em uma precisão mais altado que a amostra final correspondendo com ela. Por exemplo,as amostras intermediárias podem ser armazenadas em uma re-solução mais alta, uma taxa de quadro mais alta e/ou uma ta-xa de bits mais alta do que essa da amostra final. 0 blocode função 655 adiciona a amostra particular calculada pelobloco de função 650 na cache e passa o controle para o blocode decisão 660.
O bloco de decisão 660 determina se a cache é ounão (ainda) necessária. Se afirmativo, então o controle éretornado para o bloco de função 635. De outra forma, o con-trole é passado para um bloco de função 665. O bloco de fun-ção 665 destrói a cache (por exemplo, recursos de memóriaconsumidos/utilizados pela cache são liberados e assim pordiante), e passa o controle para um bloco final 670.
Ainda com respeito à correlação entre os níveis dacache hierárquica com a relação hierárquica entre as amos-tras resultantes do processo de compensação/estimativa demovimento com base em bloco, um exemplo será agora descritopara finalidades ilustrativas. Por exemplo, no padrão H.264,amostras requeridas que têm uma coordenada fracionária iguala 0,5 devem ser interpoladas das amostras que têm uma coor-denada fracionária de 0,0. Amostras requeridas que têm umacoordenada fracionária igual a 0,25 ou 0,75 devem ser inter-poladas de pelo menos uma amostra que tem uma coordenadafracionária de 0,5. A seção 8.4.2.2.1 do padrão H.264 des-creve a relação normativa. Dados os ensinamentos dos presen-tes princípios providos aqui, alguém versado nessa técnica etécnicas relacionadas considerará essas e outras maneirasnas quais os níveis da cache hierárquica são relacionados oude outra forma correlacionados com amostras resultantes deum processo de compensação/estimativa de movimento com baseem bloco, enquanto mantendo o escopo da presente invenção.
Ainda com respeito à configuração da cache, talconfiguração pode envolver configurar a estrutura hierárqui-ca da cache, configurar o próprio processo de compensaçãoe/ou estimativa do movimento com base em bloco, configurar ahierarquia da memória do sistema no qual os presentes prin-cípios são implementados para usar a cache para pelo menosalgumas operações do processo de compensação e/ou estimativade movimento e assim por diante. Tais detalhes são facilmen-te determinados por alguém versado nessa técnica e em técni-cas relacionadas e são, assim, omitidos aqui com o intuitode brevidade.
Uma descrição será agora fornecida de algumas dasmuitas vantagens/aspectos conseqüentes da presente invenção,alguns dos quais foram mencionados acima. Por exemplo, umavantagem/aspecto é um método de armazenamento para um pro-cesso de movimento de vídeo, onde o método de armazenamentoinclui configurar uma cache hierárquica para ter um ou maisníveis, cada um dos níveis da cache hierárquica correspon-dendo com um respectivo de uma pluralidade de níveis de umahierarquia de cálculo associada com o cálculo de valores deamostra para o processo de movimento de vídeo. O método dearmazenamento também inclui armazenar um valor particularpara uma amostra relacionada com o processo de movimento devídeo em um nível correspondente da cache hierárquica combase em a qual da pluralidade de níveis da hierarquia decálculo o valor particular corresponde, quando o valor par-ticular não existe na cache hierárquica. Uma outra vanta-gem/aspecto é o método de armazenamento como descrito acima,onde o processo de movimento do vídeo inclui um processo decompensação de movimento com base em bloco. Além do mais,uma outra vantagem/aspecto é o método de armazenamento comodescrito acima, onde o método também inclui recuperar o va-lor particular para a amostra do nível correspondente da ca-che hierárquica, quando a amostra particular existe na cachehierárquica. Além disso, uma outra vantagem/aspecto é o mé-todo de armazenamento como descrito acima, onde o métodotambém inclui armazenar um valor intermediário para a amos-tra para uso subseqüente no cálculo do valor particular paraa amostra em um nível correspondente da cache hierárquicacom base em a qual da pluralidade de níveis da hierarquia decálculo o valor intermediário corresponde, quando o valorintermediário não existe na cache hierárquica. Também, umaoutra vantagem/aspecto é o método de armazenamento que arma-zena um valor intermediário para a amostra como descrito a-cima, onde o valor particular é um valor final para a amos-tra e o valor intermediário é armazenado em uma precisãomais alta do que o valor particular. Adicionalmente, uma ou-tra vantagem/aspecto é o método de armazenamento que armaze-na um valor intermediário para a amostra onde o valor parti-cular é um valor final para a amostra como descrito acima, eonde a precisão mais alta se refere a pelo menos uma de umaresolução mais alta, uma taxa de quadro mais alta e uma taxade bits mais alta do que essa da amostra final. Além domais, uma outra vantagem/aspecto é o método de armazenamentocomo descrito acima, onde a etapa de configuração configuraa cache hierárquica para ter uma hierarquia estaticamentedefinida tal que o um ou mais níveis da cache hierárquicasão fixados. Além do que, uma outra vantagem/aspecto é o mé-todo de armazenamento como descrito acima, onde a etapa deconfiguração configura a cache hierárquica para ter uma hie-rarquia dinamicamente definida tal que qualquer um do um oumais níveis já existentes são capazes de serem removidos eum ou mais novos níveis são capazes de serem adicionados ne-la. Também, uma outra vantagem/aspecto é o método de armaze-namento que configura a cache hierárquica para ter uma hie-rarquia dinamicamente definida como descrito acima, onde ní-veis particulares da hierarquia dinamicamente definida sãodinamicamente habilitados em resposta às entradas do usuá-rio. Adicionalmente, uma outra vantagem/aspecto é o métodode armazenamento como descrito acima, onde o método tambéminclui receber uma ou mais entradas do usuário relacionadascom quais do um ou mais níveis da cache hierárquica devemser habilitados para uma execução atual do processo de movi-mento do vídeo. Além do mais, uma outra vantagem/aspecto é ométodo de armazenamento como descrito acima, onde o métodotambém inclui acessar a cache hierárquica com base em umaporção de número inteiro e uma porção fracionária de uma lo-calização correspondendo com um quadro de referência usadopara o processo de movimento do vídeo. Além do mais, uma ou-tra vantagem/aspecto é o método de armazenamento como des-crito acima, onde a cache hierárquica é implementada emsoftware.Esses e outros aspectos e vantagens da presenteinvenção podem ser facilmente verificados por alguém versadona técnica pertinente com base nos ensinamentos aqui. É paraser entendido que os ensinamentos da presente invenção podemser implementados em várias formas de hardware, software,firmware, processadores de uso especial ou combinações des-ses.
Mais preferivelmente, os ensinamentos da presenteinvenção são implementados como uma combinação de hardware esoftware. Além do mais, o software pode ser implementado co-mo um programa aplicativo personificado de maneira tangívelem uma unidade de armazenamento de programa. O programa a-plicativo pode ser transferido para, e executado por, umamáquina compreendendo qualquer arquitetura adequada. De pre-ferência, a máquina é implementada em uma plataforma de com-putador tendo hardware tal como uma ou mais unidades de pro-cessamento central ("CPU"), uma memória de acesso aleatório("RAM") e interfaces de entrada/saída ("I/O"). A plataformade computador pode também incluir um sistema operacional ecódigo de microinstrução. Os vários processos e funções des-critos aqui podem ser parte do código de microinstrução ouparte do programa aplicativo, ou qualquer combinação desses,que podem ser executados por uma CPU. Além disso, várias ou-tras unidades periféricas podem ser conectadas na plataformade computador tal como uma unidade de armazenamento de dadosadicional e uma unidade de impressão.
É também para ser entendido que, pelo fato de quealguns dos componentes do sistema constituinte e métodos re-presentados nos desenhos acompanhantes são preferivelmenteimplementados em software, as conexões reais entre os compo-nentes do sistema ou os blocos de função do processo podemdiferir dependendo da maneira na qual a presente invenção éprogramada. Dados os ensinamentos aqui, alguém versado natécnica pertinente será capaz de considerar essas implemen-tações ou configurações e similares da presente invenção.
Embora as modalidades ilustrativas tenham sidodescritas aqui com referência aos desenhos acompanhantes, épara ser entendido que a presente invenção não é limitada aessas modalidades precisas e que várias mudanças e modifica-ções podem ser efetuadas nela por alguém versado na técnicapertinente sem se afastar do escopo ou espirito da presenteinvenção. Todas tais mudanças e modificações são planejadaspara serem incluídas dentro do escopo da presente invençãocomo apresentado nas reivindicações anexas.

Claims (23)

1. Método de armazenamento para um processo de mo-vimento de vídeo, CARACTERIZADO pelo fato de que compreende:configurar (622) uma cache hierárquica para ter umou mais níveis, cada um dos níveis da cache hierárquica cor-respondendo com um respectivo de uma pluralidade de níveisde uma hierarquia de cálculo associada com o cálculo de va-lores de amostra para o processo de movimento de vídeo; earmazenar (655) um valor particular para uma amos-tra relacionada com o processo de movimento de vídeo em umnível correspondente da cache hierárquica com base em a qualda pluralidade de níveis da hierarquia de cálculo o valorparticular corresponde, quando o valor particular não existena cache hierárquica.
2. Método, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que o processo de movimento devídeo inclui um processo de compensação de movimento com ba-se em bloco.
3. Método, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que também compreende recuperar(645) o valor particular para a amostra a partir do nívelcorrespondente da cache hierárquica, quando a amostra parti-cular existe na cache hierárquica.
4. Método, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que também compreende armazenar(650) um valor intermediário para a amostra para uso subse-qüente no cálculo do valor particular para a amostra em umnível correspondente da cache hierárquica com base em a qualda pluralidade de níveis da hierarquia de cálculo o valorintermediário corresponde, quando o valor intermediário nãoexiste na cache hierárquica.
5. Método, de acordo com a reivindicação 4,CARACTERIZADO pelo fato de que o valor particular é um valorfinal para a amostra e o valor intermediário está armazenadoem uma precisão mais alta do que o valor particular (650).
6. Método, de acordo com a reivindicação 5,CARACTERIZADO pelo fato de que a precisão mais alta se refe-re a pelo menos uma de uma resolução mais alta, uma taxa dequadro mais alta e uma taxa de bits mais alta do que a amos-tra final.
7. Método, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que a dita etapa de configuraçãoconfigura a cache hierárquica para ter uma hierarquia esta-ticamente definida tal que o um ou mais níveis da cache hie-rárquica são fixados (625).
8. Método, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que a dita etapa de configuraçãoconfigura a cache hierárquica para ter uma hierarquia dina-micamente definida tal que qualquer um do um ou mais níveisjá existentes é capaz de ser removido e um ou mais novos ní-veis são capazes de serem adicionados nela (620).
9. Método, de acordo com a reivindicação 8,CARACTERIZADO pelo fato de que níveis particulares da hie-rarquia dinamicamente definida são dinamicamente habilitadosem resposta às entradas do usuário (620).
10. Método, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que também compreende receber(615) uma ou mais entradas do usuário relacionadas com quaisdo um ou mais niveis da cache hierárquica devem ser habili-tados para uma execução atual do processo de movimento devideo.
11. Método, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que também compreende acessar(645) a cache hierárquica com base em uma porção de númerointeiro e uma porção fracionária de uma localização corres-pondendo com um quadro de referência usado para o processode movimento de video.
12. Método, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que a cache hierárquica é imple-mentada em software.
13. Aparelho para sustentar um processo de movi-mento de video, CARACTERIZADO pelo fato de que compreende:uma cache hierárquica (277A, 277B, 377) configura-da para ter um ou mais niveis, cada um dos niveis da cachehierárquica correspondendo com um respectivo de uma plurali-dade de niveis de uma hierarquia de cálculo associada com ocálculo de valores de amostra para o processo de movimentode video, a cache hierárquica para armazenar um valor parti-cular para uma amostra relacionada com o processo de movi-mento de video em um nivel correspondente da cache hierár-quica com base em a qual da pluralidade de niveis da hierar-quia de cálculo o valor particular corresponde, quando o va-lor particular não existe na cache hierárquica.
14. Aparelho, de acordo com a reivindicação 13,CARACTERIZADO pelo fato de que o processo de movimento devideo inclui um processo de compensação de movimento com ba-se em bloco.
15. Aparelho, de acordo com a reivindicação 13,CARACTERIZADO pelo fato de que a dita cache hierárquica(277A, 277B, 377) recupera o valor particular para a amostrado nivel correspondente da cache hierárquica, quando a amos-tra particular existe na cache hierárquica.
16. Aparelho, de acordo com a reivindicação 13,CARACTERIZADO pelo fato de que a dita cache hierárquica(277A, 277B, 377) armazena um valor intermediário para a a-mostra para uso subseqüente no cálculo do valor particularpara a amostra em um nivel correspondente da cache hierár-quica com base em a qual da pluralidade de níveis da hierar-quia de cálculo o valor intermediário corresponde, quando ovalor intermediário não existe na cache hierárquica.
17. Aparelho, de acordo com a reivindicação 16,CARACTERIZADO pelo fato de que o valor particular é um valorfinal para a amostra e o valor intermediário é armazenado emuma precisão mais alta do que o valor particular (350) .
18. Aparelho, de acordo com a reivindicação 17,CARACTERIZADO pelo fato de que a precisão mais alta se refe-re a pelo menos uma de uma resolução mais alta, uma taxa dequadro mais alta e uma taxa de bit mais alta do que a amos-tra final.
19. Aparelho, de acordo com a reivindicação 13,CARACTERIZADO pelo fato de que a dita cache hierárquica(277Α, 277Β, 377) é configurada para ter uma hierarquia es-taticamente definida tal que o um ou mais níveis da cachehierárquica são fixados.
20. Aparelho, de acordo com a reivindicação 13,CARACTERIZADO pelo fato de que a dita cache hierárquica(277A, 277B, 377) é configurada para ter uma hierarquia di-namicamente definida tal que qualquer um do um ou mais ní-veis já existentes é capaz de ser removido e um ou mais no-vos níveis são capazes de serem adicionados nela.
21. Aparelho, de acordo com a reivindicação 20,CARACTERIZADO pelo fato de que níveis particulares da hie-rarquia dinamicamente definida são dinamicamente habilitadosem resposta às entradas do usuário.
22. Aparelho, de acordo com a reivindicação 13,CARACTERIZADO pelo fato de que a dita cache hierárquica(277A, 277B, 377) é configurada com base em uma ou mais en-tradas do usuário relacionadas com quais do um ou mais ní-veis da cache hierárquica devem ser habilitados para uma e-xecução atual do processo de movimento de vídeo.
23. Aparelho, de acordo com a reivindicação 13,CARACTERIZADO pelo fato de que a dita cache hierárquica(277A, 277B, 377) é acessada com base em uma porção de núme-ro inteiro e uma porção fracionária de uma localização cor-respondendo com um quadro de referência usado para o proces-so de movimento de vídeo.
BRPI0614662-7A 2005-07-28 2006-07-27 compensação e estimativa de movimento usando um cache hierárquico BRPI0614662A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US70320405P 2005-07-28 2005-07-28
US60/703.204 2005-07-28
PCT/US2006/029719 WO2007014378A2 (en) 2005-07-28 2006-07-27 Motion estimation and compensation using a hierarchical cache

Publications (1)

Publication Number Publication Date
BRPI0614662A2 true BRPI0614662A2 (pt) 2011-04-12

Family

ID=37605745

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0614662-7A BRPI0614662A2 (pt) 2005-07-28 2006-07-27 compensação e estimativa de movimento usando um cache hierárquico

Country Status (8)

Country Link
US (1) US20090119454A1 (pt)
EP (1) EP1908295A2 (pt)
JP (1) JP5053275B2 (pt)
KR (1) KR101293078B1 (pt)
CN (1) CN101233758A (pt)
BR (1) BRPI0614662A2 (pt)
MX (1) MX2008001286A (pt)
WO (1) WO2007014378A2 (pt)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4917709B2 (ja) 2000-03-06 2012-04-18 ローム株式会社 半導体装置
US7272609B1 (en) * 2004-01-12 2007-09-18 Hyperion Solutions Corporation In a distributed hierarchical cache, using a dependency to determine if a version of the first member stored in a database matches the version of the first member returned
US8225043B1 (en) * 2010-01-15 2012-07-17 Ambarella, Inc. High performance caching for motion compensated video decoder
CN102663096B (zh) * 2012-04-11 2015-12-16 北京像素软件科技股份有限公司 一种基于数据缓存技术读取数据的方法
JP6232828B2 (ja) * 2013-08-13 2017-11-22 日本電気株式会社 静止画像提供装置
US10296458B2 (en) * 2017-05-31 2019-05-21 Dell Products L.P. Multi-level cache system in a software application
WO2025183928A1 (en) * 2024-02-26 2025-09-04 Google Llc Asymmetric interpolation of sub-pixels for motion compensation

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5444489A (en) * 1993-02-11 1995-08-22 Georgia Tech Research Corporation Vector quantization video encoder using hierarchical cache memory scheme
JP3846642B2 (ja) * 1994-01-31 2006-11-15 ソニー株式会社 動き量検出方法及び動き量検出装置
US6549575B1 (en) * 1996-11-07 2003-04-15 International Business Machines Corporation. Efficient, flexible motion estimation architecture for real time MPEG2 compliant encoding
JP4131026B2 (ja) * 1998-01-07 2008-08-13 ソニー株式会社 画像処理装置および画像処理方法
US6434196B1 (en) * 1998-04-03 2002-08-13 Sarnoff Corporation Method and apparatus for encoding video information
US6757330B1 (en) * 2000-06-01 2004-06-29 Hewlett-Packard Development Company, L.P. Efficient implementation of half-pixel motion prediction
US6813633B2 (en) * 2001-06-19 2004-11-02 Foedero Technologies, Inc. Dynamic multi-level cache manager
US6950469B2 (en) * 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
US7305034B2 (en) * 2002-04-10 2007-12-04 Microsoft Corporation Rounding control for multi-stage interpolation
US7620109B2 (en) * 2002-04-10 2009-11-17 Microsoft Corporation Sub-pixel interpolation in motion estimation and compensation
US8284835B2 (en) * 2004-04-21 2012-10-09 Panasonic Corporation Motion compensating apparatus
US20050286777A1 (en) * 2004-06-27 2005-12-29 Roger Kumar Encoding and decoding images
US7873776B2 (en) * 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US20060050976A1 (en) * 2004-09-09 2006-03-09 Stephen Molloy Caching method and apparatus for video motion compensation
US20060088104A1 (en) * 2004-10-27 2006-04-27 Stephen Molloy Non-integer pixel sharing for video encoding
WO2006124885A2 (en) * 2005-05-12 2006-11-23 Kylintv, Inc. Codec for iptv
US20060285597A1 (en) * 2005-06-20 2006-12-21 Flextronics International Usa, Inc. Reusing interpolated values in advanced video encoders
KR100842557B1 (ko) * 2006-10-20 2008-07-01 삼성전자주식회사 동영상 처리 장치에서 메모리 액세스 방법

Also Published As

Publication number Publication date
KR20080030624A (ko) 2008-04-04
CN101233758A (zh) 2008-07-30
WO2007014378A2 (en) 2007-02-01
MX2008001286A (es) 2008-03-25
WO2007014378A3 (en) 2007-05-24
US20090119454A1 (en) 2009-05-07
KR101293078B1 (ko) 2013-08-16
EP1908295A2 (en) 2008-04-09
JP2009504035A (ja) 2009-01-29
JP5053275B2 (ja) 2012-10-17

Similar Documents

Publication Publication Date Title
JP7200470B2 (ja) 双予測動き補償に対するデコーダ側双予測オプティカルフローベースのピクセル単位補正を用いるデコーダ側の動きベクトルのリファインメントのためのハードウェアおよびソフトウェアフレンドリーシステムおよび方法
US10785498B2 (en) System and method of mapping multiple reference frame motion estimation on multi-core DSP architecture
US9106922B2 (en) Motion estimation engine for video encoding
US20090180539A1 (en) Interpolated Skip Mode Decision in Video Compression
BR122020002123A2 (pt) Decodificação de vídeo
KR101520027B1 (ko) 움직임 추정 방법 및 장치
CN113747165A (zh) 编解码方法、装置及设备
KR102822345B1 (ko) 크로마 인트라 예측 방법, 장치 및 컴퓨터 저장 매체
JP2010119084A (ja) 高速動き探索装置及びその方法
BRPI0614662A2 (pt) compensação e estimativa de movimento usando um cache hierárquico
US20070120867A1 (en) FIR-based interpolation in advanced video codecs on VLIW processor
JP2017129918A (ja) 画像処理装置、その制御方法、及びプログラム
Babionitakis et al. A real-time motion estimation FPGA architecture
Momcilovic et al. Exploiting task and data parallelism for advanced video coding on hybrid CPU+ GPU platforms
Xiao et al. A multi-grained parallel solution for HEVC encoding on heterogeneous platforms
US10593015B2 (en) Apparatus and method for efficient motion estimation
US20180329447A1 (en) Power series truncation using constant tables for function interpolation in transcendental functions
Kim et al. Merge mode estimation for a hardware-based HEVC encoder
Woo et al. A cache-aware motion estimation organization for a hardware-based H. 264 encoder
CN111200730A (zh) 带宽压缩中复杂纹理的多模式两级选择预测方法
CN110769256B (zh) 一种基于可重构阵列处理器的分数像素插值方法
Momcilovic et al. Development and evaluation of scalable video motion estimators on GPU
CN114760468B (zh) 一种角度模式下的预测像素值计算电路、方法及编码器
Choi et al. Memory Access Reduced Software Implementation of H. 264/AVC Sub-pixel Motion Estimation Using Differential Data Encoding
Ma et al. Fractional-pel motion compensation interpolation architecture based on parallel FIR systolic arrays for H. 264/AVC

Legal Events

Date Code Title Description
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 9A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: EM VIRTUDE DO ARQUIVAMENTO PUBLICADO NA RPI 2316 DE 26-05-2015 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDO O ARQUIVAMENTO DO PEDIDO DE PATENTE, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.

B15K Others concerning applications: alteration of classification

Ipc: H04N 19/523 (2014.01), H04N 19/433 (2014.01), H04N