BR112021000002A2 - Mvps não adjacentes baseados em múltiplos históricos para processamento de frente de onda de código de vídeo - Google Patents

Mvps não adjacentes baseados em múltiplos históricos para processamento de frente de onda de código de vídeo Download PDF

Info

Publication number
BR112021000002A2
BR112021000002A2 BR112021000002-0A BR112021000002A BR112021000002A2 BR 112021000002 A2 BR112021000002 A2 BR 112021000002A2 BR 112021000002 A BR112021000002 A BR 112021000002A BR 112021000002 A2 BR112021000002 A2 BR 112021000002A2
Authority
BR
Brazil
Prior art keywords
mvp
store
motion information
motion
history
Prior art date
Application number
BR112021000002-0A
Other languages
English (en)
Inventor
Luong Pham Van
Wei-Jung Chien
Vadim SEREGIN
Marta Karczewicz
Han Huang
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112021000002A2 publication Critical patent/BR112021000002A2/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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • 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/436Methods 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 using parallelised computational arrangements
    • 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/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting 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/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
    • H04N19/615Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding using motion compensated temporal filtering [MCTF]

Landscapes

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

Abstract

a invenção refere-se a um dispositivo exemplar para codificar dados de vídeo que inclui uma memória configurada para armazenar dados de vídeo; e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para: armazenar informações de movimento para uma primeira linha de unidade de árvore de codificação (ctu) de uma imagem em um primeiro armazenador temporário de preditor de vetor de movimento (mvp) de histórico da memória; redefinir um segundo armazenador temporário de mvp de histórico da memória; e após redefinir o segundo armazenador temporário de mvp de histórico, armazenar informações de movimento para uma segunda linha de ctu da imagem no segundo armazenador temporário de mvp de histórico, a segunda linha de ctu sendo diferente da primeira linha de ctu. tarefas separadas de um processo de codificação de vídeo executado por um ou mais processadores podem processar as respectivas linhas de ctu, em alguns exemplos.

Description

“MVPS NÃO ADJACENTES BASEADOS EM MÚLTIPLOS HISTÓRICOS PARA PROCESSAMENTO DE FRENTE DE ONDA DE CÓDIGO DE VÍDEO”
[0001] Este pedido reivindica o benefício do Pedido Provisório U.S. No. 62/696.281, depositado em 10 de julho de 2018, do Pedido Provisório U.S. No. 62/713.944, depositado em 2 de agosto de 2018, e do Pedido U.S. No. 16/506.720 depositado em 9 de julho de 2019, todo o conteúdo de cada um dos quais é aqui incorporado por referência.
CAMPO TÉCNICO
[0002] Esta divulgação refere-se à codificação de vídeo, incluindo codificação de vídeo e decodificação de vídeo.
FUNDAMENTOS
[0003] As capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, incluindo televisores digitais, sistemas de radiodifusão digital direta, sistemas de radiodifusão sem fio, assistentes digitais pessoais (PDAs), computadores laptops ou desktops, tablets, leitores de e-book, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de videogames, consoles de videogames, telefones celulares ou de rádio por satélite, os chamados "smartphones", dispositivos de teleconferência por vídeo, dispositivos de fluxo contínuo de vídeo e semelhantes. Dispositivos de vídeo digital implementam técnicas de codificação de vídeo, como as descritas nos padrões definidos por MPEG-2, MPEG-4, ITEG-T H.263, ITEG-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência
(HEVC), ITU-T H.265/Codificação de Vídeo de Alta Eficiência (HEVC), e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de forma mais eficiente, implementando tais técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou remover a redundância inerente às sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, uma imagem de vídeo ou uma parte de uma imagem de vídeo) pode ser particionada em blocos de vídeo, que também podem ser referidos como unidades de árvore de codificação (CTUs), unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e imagens de referência podem ser referidas como quadros de referência.
SUMÁRIO
[0005] Em geral, esta divulgação descreve técnicas para codificar informações de movimento de blocos de dados de vídeo. Essas técnicas podem ser usadas durante o processamento paralelo de frente de onda (wavefront). As informações de movimento podem incluir vetores de movimento que são preditos a partir de preditores de vetor de movimento de histórico (HMVPs). Um candidato HMVP pode se referir a informações de movimento de um bloco codificado anteriormente. Um codificador de vídeo (codificador ou decodificador) pode manter uma tabela com múltiplos candidatos HMVP durante um processo de codificação (codificação ou decodificação). O codificador de vídeo pode esvaziar a tabela quando ocorre uma nova fatia. Quando há um bloco intercodificado, o codificador de vídeo pode anexar informações de movimento associadas ao bloco intercodificado à tabela.
[0006] Em um exemplo, um método de codificação (codificação ou decodificação) de dados de vídeo inclui o armazenamento de informações de movimento em uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário (buffer) de preditor de vetor de movimento (MVP) de histórico de uma memória; redefinir um segundo armazenador temporário de MVP de histórico da memória; e após redefinir o segundo armazenador temporário de MVP de histórico, armazenar informações de movimento para uma segunda linha de CTU da imagem no segundo armazenador temporário de MVP de histórico, a segunda linha de CTU sendo diferente da primeira linha de CTU. Em alguns exemplos, uma primeira tarefa de um processo de codificação de vídeo pode codificar a primeira linha de CTU e uma segunda tarefa do processo de codificação de vídeo, diferente da primeira tarefa, pode codificar a segunda linha de CTU.
[0007] Em outro exemplo, um dispositivo para codificar dados de vídeo inclui uma memória configurada para armazenar dados de vídeo; e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para: armazenar informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário de preditor de vetor de movimento (MVP) de histórico da memória; redefinir um segundo armazenador temporário de MVP de histórico da memória; e após redefinir o segundo armazenador temporário de MVP de histórico, armazenar informações de movimento para uma segunda linha de CTU da imagem no segundo armazenador temporário de MVP de histórico, a segunda linha de CTU sendo diferente da primeira linha de CTU.
[0008] Em outro exemplo, um meio de armazenamento legível por computador armazenou no mesmo instruções que, quando executadas, fazem com que um processador: armazene informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário de preditor de vetor de movimento (MVP) de histórico de uma memória; redefina um segundo armazenador temporário de MVP de histórico da memória; e após redefinir o segundo armazenador temporário de MVP de histórico, armazene informações de movimento para uma segunda linha de CTU da imagem no segundo armazenador temporário de MVP de histórico, a segunda linha de CTU sendo diferente da primeira linha de CTU.
[0009] Em outro exemplo, um dispositivo para codificar dados de vídeo inclui uma memória configurada para armazenar dados de vídeo; meios para armazenar informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário de preditor de vetor de movimento (MVP) de histórico da memória; meios para redefinir um segundo armazenador temporário de MVP de histórico da memória; e meios para armazenar informações de movimento para uma segunda linha de CTU da imagem no segundo armazenador temporário de MVP histórico após redefinir o segundo armazenador temporário de MVP histórico, a segunda linha de CTU sendo diferente da primeira linha de CTU.
[0010] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo. Outras características, objetos e vantagens serão evidentes a partir da descrição e dos desenhos e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0011] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplar que pode executar as técnicas desta divulgação.
[0012] As Figuras 2A e 2B são diagramas conceituais que ilustram uma estrutura de árvore binária quadtree (QTBT) exemplar, e uma unidade de árvore de codificação (CTU) correspondente.
[0013] A Figura 3 é um diagrama de fluxo que ilustra um processo exemplar para codificar informações de movimento usando preditores de vetor de movimento de histórico (HMVP).
[0014] A Figura 4 é um diagrama conceitual que ilustra um exemplo de atualização de uma tabela HMVP.
[0015] A Figura 5 é um diagrama conceitual que ilustra uma seleção exemplar de blocos não adjacentes para codificação de informações de movimento.
[0016] A Figura 6 é um diagrama conceitual que ilustra uma seleção exemplar de blocos não adjacentes com base em um bloco de origem.
[0017] A Figura 7 é um diagrama conceitual que ilustra um exemplo de um processamento de frente de onda desejado de unidades de árvore de codificação (CTUs).
[0018] A Figura 8 é um diagrama conceitual que ilustra um exemplo de informações de movimento usadas para HMVP.
[0019] A Figura 9 é um diagrama conceitual que ilustra um exemplo de uma imagem particionada em múltiplas linhas de unidades de árvore de codificação (CTUs).
[0020] As Figuras 10A e 10B são diagramas de blocos que ilustram exemplos de candidatos de vetor de movimento vizinho espacial para mesclagem e modos de predição de vetor de movimento avançado (AMVP).
[0021] As Figuras 11A e 11B são diagramas conceituais que ilustram candidatos predição de vetor de movimento temporal (TMPV).
[0022] A Figura 12 é um diagrama de blocos que ilustra um exemplo de uma unidade de árvore de codificação (CTU) e blocos vizinhos.
[0023] A Figura 13 é um diagrama de blocos que ilustra uma CU atual em uma CTU atual.
[0024] A Figura 14 é um diagrama de blocos que ilustra um codificador de vídeo exemplar que pode executar as técnicas desta divulgação.
[0025] A Figura 15 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar que pode executar as técnicas desta divulgação.
[0026] A Figura 16 é um fluxograma que ilustra um método exemplar para codificar um bloco atual de dados de vídeo de acordo com as técnicas desta divulgação.
[0027] A Figura 17 é um fluxograma que ilustra um método exemplar para decodificar um bloco atual de dados de vídeo de acordo com as técnicas desta divulgação.
[0028] A Figura 18 é um fluxograma que ilustra um método exemplar de codificação (codificação ou decodificação) de dados de vídeo de acordo com as técnicas desta divulgação.
DESCRIÇÃO DETALHADA
[0029] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplar 100 que pode executar as técnicas desta divulgação. As técnicas desta divulgação são geralmente direcionadas à codificação (codificação e/ou decodificação) de dados de vídeo. Em geral, os dados de vídeo incluem quaisquer dados para processamento de um vídeo. Assim, os dados de vídeo podem incluir vídeo bruto, vídeo não codificado, vídeo codificado, vídeo decodificado (por exemplo, reconstruído) e metadados de vídeo, como dados de sinalização.
[0030] Como mostrado na Figura 1, o sistema 100 inclui um dispositivo de origem 102 que provê dados de vídeo codificados para serem decodificados e exibidos por um dispositivo de destino 116, neste exemplo. Em particular, o dispositivo de origem 102 provê os dados de vídeo para o dispositivo de destino 116 através de um meio legível por computador 110. O dispositivo de origem 102 e o dispositivo de destino 116 podem compreender qualquer um de uma ampla faixa de dispositivos, incluindo computadores desktop, notebooks (ou seja, laptops), tablets, caixas set- top, aparelhos telefônicos, como smartphones, televisores, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de fluxo contínuo de vídeo ou semelhantes. Em alguns casos, o dispositivo de origem 102 e o dispositivo de destino 116 podem ser equipados para comunicação sem fio e, portanto, podem ser referidos como dispositivos de comunicação sem fio.
[0031] No exemplo da Figura 1, o dispositivo de origem 102 inclui fonte de vídeo 104, memória 106, codificador de vídeo 200 e interface de saída 108. O dispositivo de destino 116 inclui interface de entrada 122, decodificador de vídeo 300, memória 120 e dispositivo de exibição 118. De acordo com esta divulgação, codificador de vídeo 200 do dispositivo de origem 102 e o decodificador de vídeo 300 do dispositivo de destino 116 podem ser configurados para aplicar as técnicas para codificar informações de movimento. Assim, o dispositivo de origem 102 representa um exemplo de um dispositivo de codificação de vídeo, enquanto o dispositivo de destino 116 representa um exemplo de um dispositivo de decodificação de vídeo. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo de origem 102 pode receber dados de vídeo de uma fonte de vídeo externa, como uma câmera externa. Da mesma forma, o dispositivo de destino 116 pode interfacear com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0032] Sistema 100 como mostrado na Figura 1 é apenas um exemplo. Em geral, qualquer dispositivo de codificação e/ou decodificação de vídeo digital pode executar técnicas para codificar informações de movimento. O dispositivo de origem 102 e o dispositivo de destino 116 são meramente exemplos de tais dispositivos de codificação em que o dispositivo de origem 102 gera dados de vídeo codificados para transmissão para o dispositivo de destino
116. Esta divulgação refere-se a um dispositivo de "codificação" como um dispositivo que executa a codificação (codificação e/ou decodificação) de dados. Assim, o codificador de vídeo 200 e o decodificador de vídeo 300 representam exemplos de dispositivos de codificação, em particular, um codificador de vídeo e um decodificador de vídeo, respectivamente. Em alguns exemplos, o dispositivo de origem 102 e o dispositivo de destino 116 podem operar de uma maneira substancialmente simétrica, de modo que cada dispositivo de origem 102 e dispositivo de destino 116 inclua codificação de vídeo e componentes de decodificação. Consequentemente, o sistema 100 pode suportar a transmissão de vídeo unilateral ou bilateral entre o dispositivo de origem 102 e o dispositivo de destino 116, por exemplo, para fluxo contínuo de vídeo, reprodução de vídeo, radiodifusão de vídeo ou telefonia por vídeo.
[0033] Em geral, a fonte de vídeo 104 representa uma fonte de dados de vídeo (ou seja, dados de vídeo brutos e não codificados) e provê uma série sequencial de imagens
(também referida como "quadros") dos dados de vídeo para o codificador de vídeo 200, que codifica dados para as imagens. A fonte de vídeo 104 do dispositivo de origem 102 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo bruto capturado anteriormente e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Como outra alternativa, a fonte de vídeo 104 pode gerar dados baseados em gráficos de computador como o vídeo de origem, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em cada caso, o codificador de vídeo 200 codifica os dados de vídeo capturados, pré-capturados ou gerados por computador. O codificador de vídeo 200 pode reorganizar as imagens da ordem recebida (às vezes referida como “ordem de exibição”) em uma ordem de codificação para codificação. O codificador de vídeo 200 pode gerar um fluxo de bits incluindo dados de vídeo codificados. O dispositivo de origem 102 pode, então, emitir os dados de vídeo codificados através da interface de saída 108 no meio legível por computador 110 para recepção e/ou recuperação por, por exemplo, interface de entrada 122 do dispositivo de destino 116.
[0034] A memória 106 do dispositivo de origem 102 e a memória 120 do dispositivo de destino 116 representam memórias de propósito geral. Em alguns exemplos, as memórias 106, 120 podem armazenar dados de vídeo brutos, por exemplo, vídeo bruto da fonte de vídeo 104 e dados de vídeo decodificados brutos do decodificador de vídeo 300. Adicionalmente ou em alternativa, as memórias 106, 120 podem armazenar instruções de software executáveis por, por exemplo, codificador de vídeo 200 e decodificador de vídeo 300, respectivamente. Embora mostrado separadamente do codificador de vídeo 200 e decodificador de vídeo 300 neste exemplo, deve ser entendido que o codificador de vídeo 200 e o decodificador de vídeo 300 também podem incluir memórias internas para finalidades funcionalmente similares ou equivalentes. Além disso, as memórias 106, 120 podem armazenar dados de vídeo codificados, por exemplo, emitidos do codificador de vídeo 200 e inseridos no decodificador de vídeo 300. Em alguns exemplos, porções das memórias 106, 120 podem ser alocadas como um ou mais armazenadores temporários de vídeo, por exemplo, para armazenar dados de vídeo brutos, decodificados e/ou codificados.
[0035] O meio legível por computador 110 pode representar qualquer tipo de meio ou dispositivo capaz de transportar os dados de vídeo codificados do dispositivo de origem 102 para o dispositivo de destino 116. Em um exemplo, o meio legível por computador 110 representa um meio de comunicação para permitir que o dispositivo de origem 102 transmita dados de vídeo codificados diretamente para o dispositivo de destino 116 em tempo real, por exemplo, através de uma rede de radiofrequência ou rede baseada em computador. A interface de saída 108 pode modular um sinal de transmissão incluindo os dados de vídeo codificados e a interface de entrada 122 pode demodular o sinal de transmissão recebido, de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla ou uma rede global, tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 102 para o dispositivo de destino 116.
[0036] Em alguns exemplos, o dispositivo de origem 102 pode enviar dados codificados da interface de saída 108 para o dispositivo de armazenamento 112. Da mesma forma, o dispositivo de destino 116 pode acessar dados codificados do dispositivo de armazenamento 112 via interface de entrada 122. O dispositivo de armazenamento 112 pode incluir qualquer um de uma variedade de mídia de armazenamento de dados distribuída ou acessada localmente, como disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou qualquer outra mídia de armazenamento digital adequada para armazenar dados de vídeo codificados.
[0037] Em alguns exemplos, o dispositivo de origem 102 pode enviar dados de vídeo codificados para o servidor de arquivos 114 ou outro dispositivo de armazenamento intermediário que possa armazenar o vídeo codificado gerado pelo dispositivo de origem 102. O dispositivo de destino 116 pode acessar dados de vídeo armazenados do servidor de arquivos 114 via fluxo contínuo ou download. O servidor de arquivos 114 pode ser qualquer tipo de dispositivo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 116. O servidor de arquivos 114 pode representar um servidor da web (por exemplo, para um site), um servidor de Protocolo de Transferência de Arquivo (FTP), um dispositivo de rede de entrega de conteúdo ou um dispositivo de armazenamento anexado à rede (NAS). O dispositivo de destino 116 pode acessar dados de vídeo codificados do servidor de arquivos 114 por meio de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, linha de assinante digital (DSL), modem a cabo, etc.), ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados no servidor de arquivos 114. O servidor de arquivos 114 e a interface de entrada 122 podem ser configurados para operar de acordo com um protocolo de transmissão de fluxo contínuo, um protocolo de transmissão de download ou uma combinação dos mesmos.
[0038] A interface de saída 108 e a interface de entrada 122 podem representar transmissores/receptores, modems, componentes de rede com fio (por exemplo, placas Ethernet), componentes de comunicação sem fio que operam de acordo com uma variedade de padrões IEEE 802.11 ou outros componentes físicos. Em exemplos em que a interface de saída 108 e a interface de entrada 122 compreendem componentes sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, como dados de vídeo codificados, de acordo com um padrão de comunicação celular, como 4G, 4G-LTE (Evolução de Longo Prazo), LTE Avançado, 5G ou semelhante. Em alguns exemplos em que a interface de saída 108 compreende um transmissor sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, como dados de vídeo codificados, de acordo com outros padrões sem fio, como uma especificação IEEE 802.11, uma especificação IEEE 802.15 (por exemplo, ZigBee™), um padrão Bluetooth™ ou similar. Em alguns exemplos, o dispositivo de origem 102 e/ou o dispositivo de destino 116 podem incluir respectivos dispositivos sistema em chip (SoC). Por exemplo, o dispositivo de origem 102 pode incluir um dispositivo SoC para executar a funcionalidade atribuída ao codificador de vídeo 200 e/ou interface de saída 108, e o dispositivo de destino 116 pode incluir um dispositivo SoC para executar a funcionalidade atribuída ao decodificador de vídeo 300 e/ou interface de entrada 122.
[0039] As técnicas desta divulgação podem ser aplicadas à codificação de vídeo em suporte a qualquer uma de uma variedade de aplicações multimídia, tais como radiodifusões de televisão sem fio, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de fluxo contínuo de vídeo da Internet, tais como fluxo contínuo adaptativo dinâmico sobre HTTP (DASH), vídeo digital que seja codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações.
[0040] A interface de entrada 122 do dispositivo de destino 116 recebe um fluxo de bits de vídeo codificado do meio legível por computador 110 (por exemplo, dispositivo de armazenamento 112, servidor de arquivos 114 ou semelhantes). O fluxo de bits de vídeo codificado pode incluir informações de sinalização definidas pelo codificador de vídeo 200, que também são usadas pelo decodificador de vídeo 300, como elementos de sintaxe tendo valores que descrevem características e/ou processamento de blocos de vídeo ou outras unidades codificadas (por exemplo, fatias, imagens, grupos de imagens, sequências ou semelhantes). O dispositivo de exibição 118 exibe imagens decodificadas dos dados de vídeo decodificados para um usuário. O dispositivo de exibição 118 pode representar qualquer um de uma variedade de dispositivos de exibição, como um tubo de raios catódicos (CRT), um display de cristal líquido (LCD), um display de plasma, um display de diodo orgânico emissor de luz (OLED) ou outro tipo de dispositivo de exibição.
[0041] Embora não mostrado na Figura 1, em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem, cada um, ser integrados com um codificador de áudio e/ou decodificador de áudio e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e/ou software, para lidar com fluxos multiplexados incluindo ambos áudio e vídeo em um fluxo de dados comum. Se aplicável, as unidades MUX-DEMUX podem estar em conformidade com o protocolo do multiplexador ITU H.223 ou outros protocolos, como o protocolo de datagrama de usuário (UDP).
[0042] O codificador de vídeo 200 e o decodificador de vídeo 300, cada um pode ser implementado como qualquer um de uma variedade de codificadores e/ou conjunto de circuitos decodificadores adequados, como um ou mais microprocessadores, processadores de sinais digitais
(DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado e executar as instruções em hardware usando um ou mais processadores para executar as técnicas desta divulgação. Cada um dos codificadores de vídeo 200 e decodificadores de vídeo 300 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um respectivo dispositivo. Um dispositivo incluindo codificador de vídeo 200 e/ou decodificador de vídeo 300 pode compreender um circuito integrado, um microprocessador e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0043] O codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com um padrão de codificação de vídeo, como ITU-T H.265, também referido como Codificação de Vídeo de Alta Eficiência (HEVC) ou extensões do mesmo, tal como extensões multivista e/ou de codificação de vídeo escalonável. Alternativamente, o codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com outros padrões proprietários ou da indústria, como o Joint Exploration Test Model (JEM) ou ITU-T H.266, também conhecido como Versatile Video Coding (VVC). Um esboço recente do padrão VVC é descrito em Bross, et al. “Versatile Video Coding (Projecto 5),” Joint Video
Experts Team (JVET) da ITU-T SG 16 WP 3 e ISO/IEC JTC l/SC 29/WG 11, l4º Encontro: Genebra, CH, 19-27 de março de 2019, JVET-Nl00l-v3 (doravante “VVC Projeto 5”). As técnicas desta divulgação, no entanto, não estão limitadas a qualquer padrão de codificação particular.
[0044] Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem executar a codificação de imagens baseada em blocos. O termo "bloco" geralmente refere-se a uma estrutura incluindo dados a serem processados (por exemplo, codificados, decodificados ou usados de outra forma no processo de codificação e/ou decodificação). Por exemplo, um bloco pode incluir uma matriz bidimensional de amostras de dados de luminância e/ou crominância. Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar dados de vídeo representados em um formato YUV (por exemplo, Y, Cb, Cr). Ou seja, em vez de codificar dados de vermelho, verde e azul (RGB) para amostras de uma imagem, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar componentes de luminância e crominância, onde os componentes de crominância podem incluir componentes de crominância de matiz vermelho e azul. Em alguns exemplos, o codificador de vídeo 200 converte dados formatados RGB recebidos para uma representação YUV antes da codificação e o decodificador de vídeo 300 converte a representação YUV para o formato RGB. Alternativamente, unidades de pré e pós-processamento (não mostradas) podem executar essas conversões.
[0045] Esta divulgação pode geralmente referir-se à codificação (por exemplo, codificação e decodificação) de imagens para incluir o processo de codificação ou decodificação de dados da imagem. Da mesma forma, esta divulgação pode referir-se à codificação de blocos de uma imagem para incluir o processo de codificação ou decodificação de dados para os blocos, por exemplo, predição e/ou codificação residual. Um fluxo de bits de vídeo codificado geralmente inclui uma série de valores para elementos de sintaxe representativos de decisões de codificação (por exemplo, modos de codificação) e particionamento de imagens em blocos. Assim, as referências à codificação de uma imagem ou bloco devem geralmente ser entendidas como valores de codificação para os elementos de sintaxe que formam a imagem ou bloco.
[0046] HEVC define vários blocos, incluindo unidades de codificação (CUs), unidades de predição (PUs) e unidades de transformada (TUs). De acordo com HEVC, um codificador de vídeo (como o codificador de vídeo 200) particiona uma unidade de árvore de codificação (CTU) em CUs de acordo com uma estrutura quadtree. Ou seja, o codificador de vídeo divide CTUs e CUs em quatro quadrados iguais, não sobrepostos, e cada nó da quadtree tem zero ou quatro nós filhos. Os nós sem nós filhos podem ser referidos como "nós folha" e CUs de tais nós folha podem incluir uma ou mais PUs e/ou uma ou mais TUs. O codificador de vídeo pode ainda particionar PUs e TUs. Por exemplo, em HEVC, um quadtree residual (RQT) representa a partição de TUs. Em HEVC, PUs representam dados de interpredição, enquanto TUs representam dados residuais. CUs que são intrapreditas incluem informações de intrapredição, tal como indicação de intramodo.
[0047] Como outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para operar de acordo com JEM ou VVC. De acordo com JEM ou VVC, um codificador de vídeo (tal como codificador de vídeo 200) particiona uma imagem em uma pluralidade de unidades de árvore de codificação (CTUs). O codificador de vídeo 200 pode particionar uma CTU de acordo com uma estrutura de árvore, tal como uma estrutura de árvore binária quadtree (QTBT) ou uma estrutura de árvore multitipo (MTT). A estrutura QTBT remove os conceitos de múltiplos tipos de partição, como a separação entre CUs, PUs e TUs de HEVC. Uma estrutura QTBT pode incluir dois níveis: um primeiro nível particionado de acordo com o particionamento quadtree e um segundo nível particionado de acordo com o particionamento de árvore binária. Um nó raiz da estrutura QTBT corresponde a uma CTU. Os nós folha das árvores binárias correspondem às unidades de codificação (CUs).
[0048] Em uma estrutura de particionamento MTT, os blocos podem ser particionados usando uma partição quadtree (QT), uma partição de árvore binária (BT) e um ou mais tipos de partições de árvore tripla (TT). Uma partição de árvore tripla é uma partição onde um bloco é dividido em três sub-blocos. Em alguns exemplos, uma partição de árvore tripla divide um bloco em três sub-blocos sem dividir o bloco original pelo centro. Os tipos de particionamento em MTT (por exemplo, QT, BT e TT) podem ser simétricos ou assimétricos.
[0049] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar uma única estrutura QTBT ou MTT para representar cada um dos componentes de luminância e crominância, enquanto em outros exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar duas ou mais QTBT ou estruturas MTT, como uma estrutura QTBT ou MTT para o componente de luminância e outra estrutura QTBT ou MTT para ambos os componentes de crominância (ou duas estruturas QTBT ou MTT para os respectivos componentes de crominância).
[0050] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para usar particionamento quadtree por HEVC, particionamento QTBT de acordo com JEM ou outras estruturas de particionamento. Para fins de explicação, a descrição das técnicas desta divulgação é apresentada com relação ao particionamento QTBT. No entanto, deve ser entendido que as técnicas desta divulgação também podem ser aplicadas a codificadores de vídeo configurados para usar particionamento quadtree ou outros tipos de particionamento também.
[0051] Esta divulgação pode usar "NxN" e "N por N" de forma intercambiável para se referir às dimensões da amostra de um bloco (como uma CU ou outro bloco de vídeo) em termos de dimensões verticais e horizontais, por exemplo, amostras 16x16 ou amostras 16 por 16. Em geral, uma CU 16x16 terá 16 amostras na direção vertical (y = 16) e 16 amostras na direção horizontal (x = 16). Da mesma forma, uma CU NxN geralmente tem N amostras em uma direção vertical e N amostras em uma direção horizontal, onde N representa um valor inteiro não negativo. As amostras em uma CU podem ser organizadas em linhas e colunas. Além disso, as CUs não precisam necessariamente ter o mesmo número de amostras na direção horizontal que na direção vertical. Por exemplo, CUs podem compreender amostras NxM, onde M não é necessariamente igual a N.
[0052] O codificador de vídeo 200 codifica dados de vídeo para CUs que representam predição e/ou informações residuais e outras informações. A informação de predição indica como a CU deve ser predita para formar um bloco de predição para a CU. A informação residual geralmente representa diferenças de amostra a amostra entre amostras da CU antes da codificação e do bloco de predição.
[0053] Para predizer uma CU, o codificador de vídeo 200 pode geralmente formar um bloco de predição para a CU por meio de interpredição ou intrapredição. A interpredição geralmente refere-se à predição da CU a partir de dados de uma imagem previamente codificada, enquanto que a intrapredição geralmente refere-se à predição da CU a partir de dados previamente codificados da mesma imagem. Para executar a interpredição, o codificador de vídeo 200 pode gerar o bloco de predição usando um ou mais vetores de movimento. O codificador de vídeo 200 pode geralmente executar uma busca de movimento para identificar um bloco de referência que corresponda intimamente à CU, por exemplo, em termos de diferenças entre a CU e o bloco de referência. O codificador de vídeo 200 pode calcular uma diferença métrica usando uma soma da diferença absoluta (SAD), soma das diferenças quadradas (SSD), diferença média absoluta (MAD), diferenças médias quadradas (MSD) ou outros cálculos de diferença para determinar se um bloco de referência é muito parecido com a CU atual. Em alguns exemplos, o codificador de vídeo 200 pode predizer a CU atual usando predição unidirecional ou predição bidirecional.
[0054] JEM também provê um modo de compensação de movimento afim, que pode ser considerado um modo de interpredição. No modo de compensação de movimento afim, o codificador de vídeo 200 pode determinar dois ou mais vetores de movimento que representam movimento não translacional, como aumentar ou diminuir o zoom, rotação, movimento em perspectiva ou outros tipos de movimento irregular.
[0055] Para executar intrapredição, o codificador de vídeo 200 pode selecionar um modo de intrapredição para gerar o bloco de predição. JEM provê sessenta e sete modos de intrapredição, incluindo vários modos direcionais, bem como modo planar e modo DC. Em geral, o codificador de vídeo 200 seleciona um modo de intrapredição que descreve amostras vizinhas a um bloco atual (por exemplo, um bloco de uma CU) a partir do qual predizer as amostras do bloco atual. Essas amostras podem geralmente estar acima, acima e à esquerda ou à esquerda do bloco atual na mesma imagem do bloco atual, assumindo que o codificador de vídeo 200 codifica CTUs e CUs em ordem de varredura raster (da esquerda para a direita, de cima para baixo).
[0056] O codificador de vídeo 200 codifica dados que representam o modo de predição para um bloco atual. Por exemplo, para modos de interpredição, o codificador de vídeo 200 pode codificar dados que representam qual dos vários modos de interpredição disponíveis é usado, bem como informações de movimento para o modo correspondente. Para interpredição unidirecional ou bidirecional, por exemplo, o codificador de vídeo 200 pode codificar vetores de movimento usando predição de vetor de movimento avançada (AMVP) ou modo de mesclagem. O codificador de vídeo 200 pode usar modos semelhantes para codificar vetores de movimento para o modo de compensação de movimento afim.
[0057] Após a predição, tal como intrapredição ou interpredição de um bloco, o codificador de vídeo 200 pode calcular dados residuais para o bloco. Os dados residuais, como um bloco residual, representam diferenças de amostra por amostra entre o bloco e um bloco de predição para o bloco, formado usando o modo de predição correspondente. O codificador de vídeo 200 pode aplicar uma ou mais transformadas ao bloco residual, para produzir dados transformados em um domínio de transformada em vez do domínio de amostra. Por exemplo, o codificador de vídeo 200 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada de inteiro, uma transformada de wavelet ou uma transformada conceitualmente semelhante a dados de vídeo residuais. Além disso, o codificador de vídeo 200 pode aplicar uma transformada secundária após a primeira transformada, como uma transformada secundária não separável dependente de modo (MDNSST), uma transformada dependente de sinal, uma transformada de Karhunen-Loeve (KLT) ou semelhantes. O codificador de vídeo 200 produz coeficientes de transformada após a aplicação de uma ou mais transformadas.
[0058] Como observado acima, após quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 200 pode executar a quantização dos coeficientes de transformada. A quantização geralmente refere-se a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes, provendo compressão adicional. Ao executar o processo de quantização, o codificador de vídeo 200 pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. Por exemplo, o codificador de vídeo 200 pode arredondar um valor de n bits para um valor de m bits durante a quantização, onde n é maior do que m. Em alguns exemplos, para executar a quantização, o codificador de vídeo 200 pode executar um deslocamento para a direita bit a bit do valor a ser quantizado.
[0059] Após a quantização, o codificador de vídeo 200 pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional, incluindo os coeficientes de transformada quantizados. A varredura pode ser projetada para colocar coeficientes de transformada de energia mais alta (e, portanto, frequência mais baixa) na frente do vetor e para colocar coeficientes de transformada de energia mais baixa (e, portanto, frequência mais alta) na parte de trás do vetor. Em alguns exemplos, o codificador de vídeo 200 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantizados para produzir um vetor serializado e, em seguida, codificar por entropia os coeficientes de transformada quantizados do vetor. Em outros exemplos, o codificador de vídeo 200 pode executar uma varredura adaptativa. Depois de varrer os coeficientes de transformada quantizados para formar o vetor unidimensional, o codificador de vídeo 200 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com codificação aritmética binária adaptativa de contexto (CABAC). O codificador de vídeo 200 também pode codificar por entropia valores para elementos de sintaxe que descrevem metadados associados aos dados de vídeo codificados para uso pelo decodificador de vídeo 300 na decodificação dos dados de vídeo.
[0060] Para executar CABAC, o codificador de vídeo 200 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode estar relacionado a, por exemplo, se os valores vizinhos do símbolo têm valor zero ou não. A determinação da probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0061] O codificador de vídeo 200 pode adicionalmente gerar dados de sintaxe, como dados de sintaxe baseados em bloco, dados de sintaxe baseados em imagem e dados de sintaxe baseados em sequência, para o decodificador de vídeo 300, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia ou outros dados de sintaxe, como um conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS) ou conjunto de parâmetros de vídeo (VPS). O decodificador de vídeo 300 pode da mesma forma decodificar tais dados de sintaxe para determinar como decodificar os dados de vídeo correspondentes.
[0062] Desse modo, o codificador de vídeo 200 pode gerar um fluxo de bits incluindo dados de vídeo codificados, por exemplo, elementos de sintaxe que descrevem o particionamento de uma imagem em blocos (por exemplo, CUs) e predição e/ou informação residual para os blocos. Em última análise, o decodificador de vídeo 300 pode receber o fluxo de bits e decodificar os dados de vídeo codificados.
[0063] Em geral, o decodificador de vídeo 300 realiza um processo recíproco ao realizado pelo codificador de vídeo 200 para decodificar os dados de vídeo codificados do fluxo de bits. Por exemplo, o decodificador de vídeo 300 pode decodificar valores para elementos de sintaxe do fluxo de bits usando CABAC de uma maneira substancialmente semelhante, embora recíproca, ao processo de codificação CABAC do codificador de vídeo 200. Os elementos de sintaxe podem definir informações de particionamento de uma imagem em CTUs e particionamento de cada CTU de acordo com uma estrutura de partição correspondente, tal como uma estrutura QTBT, para definir CUs da CTU. Os elementos de sintaxe podem ainda definir predição e informações residuais para blocos (por exemplo, CUs) de dados de vídeo.
[0064] A informação residual pode ser representada por, por exemplo, coeficientes de transformada quantizados. O decodificador de vídeo 300 pode quantizar e transformar inversamente os coeficientes de transformada quantizados de um bloco para reproduzir um bloco residual para o bloco. O decodificador de vídeo 300 usa um modo de predição sinalizado (intra ou interpredição) e informações de predição relacionadas (por exemplo, informações de movimento para interpredição) para formar um bloco de predição para o bloco. O decodificador de vídeo 300 pode, então, combinar o bloco de predição e o bloco residual (amostra por amostra) para reproduzir o bloco original. O decodificador de vídeo 300 pode executar processamento adicional, como executar um processo de desbloqueio para reduzir artefatos visuais ao longo dos limites do bloco.
[0065] Esta divulgação pode geralmente se referir a "sinalizar" certas informações, como elementos de sintaxe. O termo "sinalização" pode geralmente se referir à comunicação de valores para elementos de sintaxe e/ou outros dados usados para decodificar dados de vídeo codificados. Ou seja, o codificador de vídeo 200 pode sinalizar valores para elementos de sintaxe no fluxo de bits. Em geral, a sinalização refere-se à geração de um valor no fluxo de bits. Como observado acima, o dispositivo de origem 102 pode transportar o fluxo de bits para o dispositivo de destino 116 substancialmente em tempo real, ou não em tempo real, como pode ocorrer ao armazenar elementos de sintaxe para o dispositivo de armazenamento 112 para recuperação posterior pelo dispositivo de destino
116.
[0066] De acordo com as técnicas desta divulgação, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para executar processamento paralelo de frente de onda ao codificar uma imagem de dados de vídeo. Em geral, o processamento paralelo de frente de onda pode envolver a codificação de linhas individuais de unidades de árvore de codificação (CTUs) usando tarefas de processamento separadas. Por exemplo, uma primeira tarefa executada pelo codificador de vídeo 200 ou decodificador de vídeo 300 pode processar uma primeira linha de CTUs, uma segunda tarefa pode processar uma segunda linha de CTUs e assim por diante. Codificar uma
CTU inclui, entre outras coisas, codificar informações de movimento para unidades de codificação de predição de movimento (CUs) da CTU, que podem se referir a informações de movimento dentro da mesma CTU ou uma CTU previamente codificada (por exemplo, uma CTU vizinha à esquerda e/ou acima). Essas informações de movimento podem ser armazenadas em um armazenador temporário de preditor de vetor de movimento (MVP). De acordo com as técnicas desta divulgação, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para redefinir um armazenador temporário de MVP para uma linha de CTU atual antes de codificar os dados de vídeo da linha de CTU atual. O armazenador temporário de MVP pode ser um armazenador temporário de MVP individual para a linha de CTU atual, ou um armazenador temporário de MVP comum pode ser usado para múltiplas linhas de CTUs.
[0067] Em alguns exemplos, ao armazenar informações de movimento em um armazenador temporário de MVP, o codificador de vídeo 200 e o decodificador de vídeo 300 podem armazenar apenas informações de movimento exclusivas dentro do armazenador temporário de MVP. Por exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar uma CU atual usando um vetor de movimento atual, determinar se o vetor de movimento está atualmente armazenado em um armazenador temporário de MVP para a CU atual e, em caso afirmativo, evitar o armazenamento do vetor de movimento no armazenador temporário de MVP, e se não, armazenar o vetor de movimento no armazenador temporário de MVP.
[0068] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar uma regra primeiro a entrar, primeiro a sair (first-in-first-out) (FIFO) para remover vetores de movimento do armazenador temporário de MVP quando o armazenador temporário de MVP fica cheio. Ou seja, a fim de adicionar um novo vetor de movimento ao armazenador temporário de MVP, o codificador de vídeo 200 e o decodificador de vídeo 300 podem remover um vetor de movimento inserido mais cedo do armazenador temporário de MVP e inserir o novo vetor de movimento no armazenador temporário de MVP. Desta forma, o armazenador temporário de MVP pode ter um comportamento semelhante a uma fila.
[0069] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem manter armazenadores temporários de MVP separados para cada um de uma variedade de tipos de modelos de movimento diferentes. Por exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem manter um armazenador temporário de MVP afim para o modelo de movimento afim, um armazenador temporário de MVP de cópia intrabloco para informações de movimento do modo de cópia intrabloco, um armazenador temporário de MVP de compensação de iluminação para informações de movimento de compensação de iluminação local, um armazenador temporário de MVP de sub-bloco para MVP de sub-bloco e/ou um armazenador temporário de MVP temporal para predição de movimento temporal.
[0070] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem gerar um MVP sintético de dois ou mais MVPs em um ou mais armazenadores temporários de MVP e inserir o MVP sintético em um dos armazenadores temporários de MVP. Os dois ou mais MVPs podem estar em conformidade com o mesmo ou diferentes modelos de movimento (ou seja, ter diferentes tipos de informações de movimento).
[0071] As Figuras 2A e 2B são diagramas conceituais que ilustram um exemplo de estrutura de árvore binária de quadtree (QTBT) 130, e uma unidade de árvore de codificação (CTU) 132. As linhas sólidas representam a divisão de quadtree e as linhas pontilhadas indicam a divisão de árvore binária. Em cada nó de divisão (ou seja, não folha) da árvore binária, um sinalizador é sinalizado para indicar qual tipo de divisão (ou seja, horizontal ou vertical) é usado, onde 0 indica divisão horizontal e 1 indica divisão vertical neste exemplo. Para a divisão quadtree, não há necessidade de indicar o tipo de divisão, pois os nós quadtree dividem um bloco horizontal e verticalmente em 4 sub-blocos de igual tamanho. Por conseguinte, o codificador de vídeo 200 pode codificar, e o decodificador de vídeo 300 pode decodificar elementos de sintaxe (tal como a informação de divisão) para um nível de árvore de região da estrutura QTBT 130 (ou seja, as linhas sólidas) e elementos de sintaxe (tal como informação de divisão) para um nível de árvore de predição da estrutura QTBT 130 (ou seja, as linhas pontilhadas). O codificador de vídeo 200 pode codificar, e o decodificador de vídeo 300 pode decodificar dados de vídeo, tais como dados de predição e transformada, para CUs representadas por nós folha terminais da estrutura QTBT 130.
[0072] Em geral, a CTU 132 da Figura 2B pode ser associada a parâmetros que definem tamanhos de blocos correspondentes a nós da estrutura QTBT 130 no primeiro e segundo níveis (por exemplo, nível de árvore de região e nível de árvore de predição). Esses parâmetros podem incluir um tamanho de CTU (representando um tamanho de CTU 132 em amostras), um tamanho mínimo de quadtree (MinQTSize, representando um tamanho de nó folha de quadtree mínimo permitido), um tamanho máximo de árvore binária (MaxBTSize, representando uma tamanho máximo permitido do nó de raiz de árvore binária), uma profundidade máxima da árvore binária (MaxBTDepth, representando a profundidade máxima permitida da árvore binária) e um tamanho mínimo da árvore binária (MinBTSize, representando o tamanho mínimo permitido do nó folha de árvore binária).
[0073] O nó raiz de uma estrutura QTBT correspondente a uma CTU pode ter quatro nós filho no primeiro nível da estrutura QTBT, cada um dos quais pode ser particionado de acordo com o particionamento quadtree. Ou seja, os nós do primeiro nível são nós folha (sem nós filhos) ou têm quatro nós filhos. O exemplo da estrutura QTBT 130 representa nós, incluindo o nó pai e nós filhos com linhas sólidas para ramificações. Se os nós do primeiro nível não forem maiores do que o tamanho máximo permitido do nó raiz da árvore binária (MaxBTSize), então os nós podem ser particionados posteriormente pelas respectivas árvores binárias. A divisão da árvore binária de um nó pode ser iterada até que os nós resultantes da divisão atinjam o tamanho mínimo permitido do nó folha da árvore binária (MinBTSize) ou a profundidade máxima permitida da árvore binária (MaxBTDepth). O exemplo da estrutura QTBT 130 representa tais nós como tendo linhas tracejadas para ramificações. O nó folha de árvore binária é referido como uma unidade de codificação (CU), que é usada para predição (por exemplo, predição intraimagens ou interimagens) e transformada, sem qualquer particionamento adicional. Conforme discutido acima, as CUs também podem ser referidas como "blocos de vídeo" ou "blocos".
[0074] Em um exemplo da estrutura de partição QTBT, o tamanho da CTU é definido como 128x128 (amostras de luma e duas amostras de croma de 64x64 correspondentes), o MinQTSize é definido como 16x16, o MaxBTSize é definido como 64x64, o MinBTSize (para largura e altura) é definido como 4 e MaxBTDepth é definido como 4. O particionamento quadtree é aplicado à CTU primeiramente para gerar nós folha quadtree. Os nós folha quadtree podem ter um tamanho de 16x16 (ou seja, o MinQTSize) a 128x128 (ou seja, o tamanho da CTU). Se o nó folha quadtree for 128x128, ele não será mais dividido pela árvore binária, uma vez que o tamanho excede o tamanho MaxBTS (ou seja, 64x64, neste exemplo). Caso contrário, o nó folha quadtree será posteriormente particionado pela árvore binária. Portanto, o nó folha quadtree também é o nó raiz para a árvore binária e tem a profundidade da árvore binária de 0. Quando a profundidade da árvore binária atinge MaxBTDepth (4, neste exemplo), nenhuma divisão adicional é permitida. Quando o nó da árvore binária tem largura igual a MinBTSize (4, neste exemplo), isso implica que nenhuma divisão vertical adicional é permitida. Da mesma forma, um nó de árvore binária com uma altura igual a MinBTSize implica que nenhuma divisão horizontal adicional é permitida para esse nó de árvore binária. Conforme observado acima, os nós folha de árvore binária são referidos como CUs e são posteriormente processados de acordo com a predição e a transformada sem particionamento adicional.
[0075] A Figura 3 é um diagrama de fluxo que ilustra um processo exemplar para codificar informações de movimento usando preditores de vetor de movimento de histórico (HMVP). Inicialmente, um codificador de vídeo, como o codificador de vídeo 200 ou o decodificador de vídeo 300, carrega uma tabela com candidatos HMVP (140). O codificador de vídeo então codifica um bloco de dados de vídeo usando os candidatos HMVP (142). O codificador de vídeo então atualiza a tabela com informações de movimento do bloco codificado (144).
[0076] A Figura 4 é um diagrama conceitual que ilustra um exemplo de atualização de uma tabela HMVP. Em JVET-K0104, o tamanho da tabela é definido para ser 16 e uma regra Primeiro a Entrar, Primeiro a Sair (FIFO) é aplicada. A Figura 4 representa um exemplo em que a regra FIFO é aplicada para remover um candidato HMVP e adicionar um novo à tabela usada nos exemplos das técnicas desta divulgação.
[0077] Um codificador de vídeo, como o codificador de vídeo 200 ou o decodificador de vídeo 300, pode inserir candidatos HMVP da última entrada para a primeira entrada na tabela após um candidato predição de vetor de movimento temporal (TMVP) em uma lista de candidatos. O codificador de vídeo pode aplicar remoção aos candidatos HMVP. O codificador de vídeo pode encerrar o processo de remoção quando o número total de candidatos de mesclagem disponíveis atingir um número máximo permitido sinalizado de candidatos de mesclagem.
[0078] No exemplo da Figura 4, a tabela antes da atualização inclui o histórico MVP0 (HMVP0) para o histórico MVPL-1 (HMVPL-1), onde os números subscritos de 0 a L1 representam uma ordem na qual os MVPs históricos são adicionados. CL-1 representa um novo MVP de histórico a ser adicionado à tabela. Assim, de acordo com a regra FIFO, HMVPo é removido da tabela antes de adicionar CL-1, neste exemplo.
[0079] A Figura 5 é um diagrama conceitual que ilustra uma seleção exemplar de blocos não adjacentes para codificação de informações de movimento. No exemplo da Figura 5, um bloco atual rotulado como "Curr" representa uma unidade de codificação atual (CU), para a qual as informações de movimento podem ser codificadas usando blocos vizinhos adjacentes e/ou não adjacentes rotulados Ai, Bj e NAk. A predição de vetor de movimento não adjacente é descrita, por exemplo, no Pedido US No. 16/003.269, depositado em 8 de junho de 2018. Um codificador de vídeo pode aplicar uma regra FIFO e um tamanho máximo de armazenador temporário de candidatos movimento para blocos não adjacentes.
[0080] A Figura 6 é um diagrama conceitual que ilustra uma seleção exemplar de blocos não adjacentes com base em um bloco de origem. Ou seja, o bloco de origem é um bloco particionado em sub-blocos, incluindo o bloco atual. Por exemplo, o bloco de origem pode ser uma CTU ou um sub- bloco no qual a CTU foi particionada. Semelhante à Figura
5, na Figura 6, uma CU atual é rotulada como "Curr" e os blocos não adjacentes a partir dos quais as informações de movimento podem ser recuperadas e usadas para predizer informações de movimento da CU atual são rotulados como "NAij".
[0081] Vetores de movimento de blocos espaciais adjacentes de um bloco colocalizado podem ser usados como candidatos predição de vetor de movimento (MVP) para o modo de mesclagem, além de vetores de movimento H e C (isto é, vetores de movimento no centro e parte inferior direita do bloco colocalizado).
[0082] As técnicas desta divulgação podem ser usadas para melhorar a predição do vetor de movimento, por exemplo, adicionando candidatos usados para AMVP e/ou modos de codificação de mesclagem, onde os candidatos adicionados podem ser retirados de blocos não adjacentes. Por exemplo, os candidatos adicionados podem corresponder a qualquer um de NA1,1 a NA1,9 da Figura 6.
[0083] A Figura 7 é um diagrama conceitual que ilustra um exemplo de um processamento de frente de onda desejado de unidades de árvore de codificação (CTUs). Como mostrado na Figura 7, várias tarefas podem ser atribuídas para processar diferentes linhas de CTUs. Ou seja, um codificador de vídeo, como o codificador de vídeo 200 ou o decodificador de vídeo 300, pode executar várias tarefas diferentes para, por exemplo, processamento paralelo de frente de onda (WPP) ao codificar diferentes linhas de CTU. Em alguns exemplos, certas probabilidades usadas para informações de movimento de codificação baseada em contexto (por exemplo, codificação CABAC) de blocos interpreditos não poderiam ser determinadas se as probabilidades fossem determinadas a partir de um último bloco de uma linha de CTU anterior, por exemplo, assumindo que o último bloco ainda não havia sido codificado. Assim, de acordo com as técnicas desta divulgação, o codificador de vídeo
[0084] A Figura 8 é um diagrama conceitual que ilustra um exemplo de informação de movimento usada para HMVP. Figura 8 ilustra como o uso de FIFO pode remover vetores de movimento de blocos mais próximos de um bloco atual de uma lista de candidatos, enquanto vetores de movimento de outros blocos podem ser considerados. Em particular, na Figura 8, X representa a informação de movimento atualmente sendo codificada e os MVs dos blocos sombreados estão no armazenador temporário de histórico. Esta divulgação reconhece que as técnicas convencionais de HMVP não utilizam totalmente vetores de movimento de blocos não adjacentes, pelo menos em parte devido ao uso da regra FIFO, como mostrado na Figura 8.
[0085] Em particular, quando o bloco X é codificado, as informações de movimento de blocos não adjacentes (TL0, TO, T1, TR0, TR1, TR2, TR3) da CTU superior esquerda, CTU superior e CTU superior direita foram removidas do armazenador temporário de histórico. Portanto, as informações de movimento desses blocos não são consideradas para adição à lista de candidatos, mesmo se os blocos não adjacentes estiverem mais próximos de X do que, por exemplo, CTU LL0, CTU LL1 e CTUs F0-F3, cujos vetores de movimento estão no armazenador temporário de histórico.
[0086] Esta divulgação também reconhece que um único armazenador temporário para HVMP não é aplicável para processamento paralelo de frente de onda. Se apenas um único armazenador temporário for usado, o tamanho do armazenador temporário seria muito alto, para conter os candidatos espaciais potenciais para blocos que estão sendo processados em cada tarefa (por exemplo, linha de CTU). Por exemplo, se quatro tarefas forem configuradas para rodar em paralelo, o tamanho do armazenador temporário pode chegar a
64. Como resultado, mais bits são necessários para sinalizar um índice do MVP para o decodificador de vídeo
300. Da mesma forma, entradas redundantes podem ocorrer. Ou seja, uma entrada no armazenador temporário de histórico pode ser potencialmente útil para um bloco nesta linha, mas pode não ser útil para blocos em outras linhas (por exemplo, X e F na Figura 8). Consequentemente, pode ser difícil encontrar o candidato ideal para um bloco.
[0087] Figura 9 é um diagrama conceitual que ilustra um exemplo de uma imagem particionada em múltiplas linhas de unidades de árvore de codificação (CTUs). Em particular, no exemplo da Figura 9, a imagem 150 inclui as linhas de CTU 152A-152E (linhas de CTU 152). Cada uma das linhas de CTU 152 inclui um respectivo conjunto de CTUs: a linha de CTU 152A inclui CTUs 154A-154J, a linha de CTU 152B inclui CTUs 156A-156J, a linha de CTU 152C inclui CTUs 158A-158J, a linha de CTU 152D inclui CTUs 160A-160J e CTU a linha 152E inclui CTUs 162A-162J.
[0088] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados de acordo com as técnicas desta divulgação para usar múltiplos armazenadores temporários para MVP baseado em histórico. Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem manter armazenadores temporários de MVP de histórico separados para cada uma das linhas de CTU 152 (cada uma das quais pode ser processada por uma tarefa de processamento respectiva separada), ou pode haver um único armazenador temporário que é redefinido no início de cada linha de CTU quando o processamento paralelo de frente de onda é aplicado.
[0089] Em um exemplo, CTU 158C pode representar uma CTU atual. As informações de movimento das CTUs 154A- 154F, 156A-156D, 158A e 158B (mostradas usando sombreado cinza na Figura 9) podem estar disponíveis em um ou mais respectivos armazenadores temporários de MVP de histórico para uso ao codificar informações de movimento da CTU 158C.
[0090] Adicionalmente ou em alternativa, o codificador de vídeo 200 e o decodificador de vídeo 300 podem executar a inicialização de um armazenador temporário de MVP de histórico usando qualquer uma ou todas as técnicas a seguir, sozinhas ou em combinação. O codificador de vídeo 200 e o decodificador de vídeo 300 podem redefinir o armazenador temporário de MVP de histórico de cada linha de CTU para ficar vazio. O codificador de vídeo 200 e o decodificador de vídeo 300 podem preencher previamente o armazenador temporário de MVP de histórico de cada linha de CTU com vetores de movimento zero com diferentes índices de quadro de referência e/ou direções de interpredição ou outras informações de movimento definidas previamente ou derivadas. O codificador de vídeo 200 e o decodificador de vídeo 300 podem preencher previamente o armazenador temporário de MVP do histórico de cada linha de CTU com informações de movimento dos quadros codificados (imagens)
na mesma camada temporal ou camadas temporais inferiores (imagens de referência que estão disponíveis para o quadro/imagem atual)
[0091] O codificador de vídeo 200 e o decodificador de vídeo 300 podem escalonar as informações de movimento, por exemplo, com base na distância temporal, ou processar/modificar as informações de movimento, por exemplo, combinar essas informações de movimento com outro MV. Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem combinar as informações de movimento com informações de movimento do armazenador temporário de MVP de histórico anterior nos quadros/imagens codificados ou informações de movimento da região colocalizada (pode ser CTU ou maior do que um certo tamanho de bloco, por exemplo, bloco 4x4) nos quadros/imagens codificados. O codificador de vídeo 200 e o decodificador de vídeo 300 podem preencher previamente o armazenador temporário de MVP do histórico de uma linha de CTU acima quando a CTU acima à direita da CTU atual é codificada. O codificador de vídeo 200 e o decodificador de vídeo 300 podem usar zero vetor de movimento com diferentes índices de quadro de referência e/ou direções de interpredição ou outras informações de movimento definidas previamente ou derivadas.
[0092] Adicionalmente ou em alternativa, o codificador de vídeo 200 e o decodificador de vídeo 300 podem, sempre que uma CTU de linhas de CTU for codificada (codificada ou decodificada), usar o armazenador temporário de MVP de histórico associado para inicializar ou modificar os armazenadores temporários de histórico da linha de CTU abaixo da linha de CTU atual.
[0093] Adicionalmente ou em alternativa, o codificador de vídeo 200 e o decodificador de vídeo 300 podem aplicar uma regra FIFO para remover uma entrada de um armazenador temporário de MVP de histórico associado.
[0094] Adicionalmente ou em alternativa, o codificador de vídeo 200 e o decodificador de vídeo 300 podem limpar um armazenador temporário de MVP de histórico quando a linha de CTU associada está completamente codificada/decodificada.
[0095] O codificador de vídeo 200 e o decodificador de vídeo 300 podem manter um tamanho de armazenador temporário de MVP que é maior do que AMVP/mesclar ou outras listas de candidatos modo. Qualquer MV ou MVs do armazenador temporário pode ser selecionado como candidato (s) de MV para a lista de candidatos usada em um determinado modo, por exemplo, AMPV, modo de mesclagem, afim ou qualquer outro intermodo. Uma regra pode ser definida como selecionar MVs do armazenador temporário, por exemplo, romar N últimos MVs adicionados ao armazenador temporário, ou tomar alguns do início do armazenador temporário, e/ou alguns do meio do armazenador temporário, e/ou alguns do final do armazenador temporário. Alternativamente, a sinalização pode ser aplicada para indicar quais MVs são selecionados (por exemplo, o codificador de vídeo 200 pode codificar dados sinalizados e o decodificador de vídeo 300 pode decodificar os dados sinalizados). O tamanho do armazenador temporário de MVP pode ser sinalizado em qualquer conjunto de parâmetros (por exemplo, conjunto de parâmetros de vídeo, conjunto de parâmetros de sequência, conjunto de parâmetros de imagem ou semelhantes), cabeçalho de fatia ou outro lugar. O armazenador temporário de MVP pode ser associado a uma fatia, imagem e/ou sequência de vídeo.
[0096] Quando o codificador de vídeo 200 e o decodificador de vídeo 300 processam um bloco codificado, os MVs usados no bloco podem ser adicionados ao armazenador temporário de MVP e apenas MVs exclusivos podem ser mantidos no armazenador temporário. Quando o armazenador temporário está cheio, MVs mais antigos podem ser removidos do armazenador temporário quando um novo MV é adicionado. Pode haver uma regra pela qual MVs podem ser adicionados ao armazenador temporário, por exemplo, apenas MV sinalizado, como no modo AMVP, pode ser adicionado, e se um bloco for codificado no modo mesclagem, o MV do bloco não é adicionado ao armazenador temporário.
[0097] O codificador de vídeo 200 e o decodificador de vídeo 300 podem anexar um MV ao MV ou MVs já existentes no armazenador temporário. Por exemplo, se os MVs já existentes no armazenador temporário forem unidirecionais, ao adicionar um novo MV, esses MVs existentes podem ser modificados para serem bidirecionais anexando o novo MV.
[0098] Algum processamento de MV pode ser aplicado ao adicionar um novo MV. Por exemplo, se um novo MV estiver próximo a MVs já existentes no armazenador temporário, esses MVs próximos podem ser removidos. Fechar pode significar fechar comparando os valores dos componentes MV (por exemplo, componentes x e y). Em alguns exemplos, apenas MVs que diferem de MVs já existentes no armazenador temporário por um limite podem ser adicionados ao armazenador temporário. O mesmo limite pode ser configurado para armazenadores temporários diferentes.
[0099] Os vetores de movimento no armazenador temporário podem ser unidirecionais (L0 ou L1), bidirecionais ou qualquer outro modelo de movimento MV.
[0100] As informações de modo podem ser associadas a um MV no armazenador temporário, e se um índice de um MV no armazenador temporário for sinalizado no bloco ou outra regra for aplicada sobre a obtenção de MV do armazenador temporário, então as informações de modo podem ser derivadas de dados associados a essas informações de MV. Por exemplo, se essa informação for modo de mesclagem, o bloco será codificado no modo de mesclagem com o MV indicado.
[0101] Esta divulgação reconhece ainda que os MVPs convencionais baseados em histórico apenas mantêm preditores de movimento regulares e são usados apenas para predição de movimento regular sem modificar as informações de movimento. De acordo com as técnicas desta divulgação, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar pelo menos um armazenador temporário de MVP de histórico que contém não apenas informações de movimento codificadas, mas também outros tipos de preditores de movimento, como para modelo de movimento afim, informações de movimento de intramodo de cópia de bloco, informações de movimento de compensação de iluminação local, MVP de sub- bloco ou preditor de movimento temporal.
[0102] Adicionalmente ou em alternativa, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar múltiplos armazenadores temporários de MVP de histórico para diferentes modelos de movimento, tais como modelo de movimento afim, informações de movimento do modo de cópia intrabloco, informações de movimento de compensação de iluminação local, MVP de sub-bloco, ou preditor de movimento temporal.
[0103] Adicionalmente ou em alternativa, o vetor de movimento sintético com base no MVP atual e outro preditor de movimento, como outro MVP espacial ou MVP temporal, também pode ser adicionado à lista de candidatos.
[0104] Adicionalmente ou em alternativa, o codificador de vídeo 200 e o decodificador de vídeo 300 podem gerar um MVP sintético a partir de dois ou mais MVPs no armazenador temporário de MVP de histórico ou um ou mais MVPs no armazenador temporário de MVP histórico com outro tipo de MVPs, como MVPs espaciais ou temporais.
[0105] O codificador de vídeo 200 e o decodificador de vídeo 300 podem implementar um esquema de particionamento de bloco. No HEVC, as imagens são divididas em uma sequência de unidades de árvore de codificação (CTUs). Para uma imagem com três arranjos de amostra, uma CTU inclui um bloco NxN de amostras de luma junto com dois blocos correspondentes de amostras de croma. Uma CTU é dividida em unidades de codificação (CUs) usando uma estrutura de árvore. Cada CU folha pode ser posteriormente dividida em uma, duas ou quatro unidades de predição (PUs) de acordo com o tipo de divisão de PU. Depois de obter o bloco residual aplicando o processo de predição com base no tipo de divisão de PU, uma CU folha pode ser particionada em unidades de transformada (TUs).
[0106] Em VVC, uma quadtree com árvore multitipo aninhada usando estrutura de segmentação de divisões binárias e ternárias substitui os conceitos de tipos de unidade de partição múltipla, ou seja, o particionamento de árvore multitipo aninhada remove a separação dos conceitos CU, PU e TU exceto quando necessário para CUs que têm um tamanho muito grande para o comprimento máximo de transformada e oferece mais flexibilidade para formatos de partição de CU. Na estrutura da árvore de codificação, uma CU pode ter uma forma quadrada ou retangular.
[0107] O codificador de vídeo 200 e o decodificador de vídeo 300 podem utilizar informações de movimento para predizer um bloco de dados de vídeo. Para cada bloco, um conjunto de informações de movimento pode estar disponível. O conjunto de informações de movimento contém informações de movimento para direções de predição para frente e para trás. Aqui, as direções de predição para frente e para trás são duas direções de predição correspondentes à lista de imagens de referência 0 (RefPicList0) e lista de imagens de referência 1 (RefPicList1) de uma imagem ou fatia atual. Os termos “para frente” e “para trás” não têm necessariamente um significado geométrico. Em vez disso, eles são usados para distinguir em qual lista de imagens de referência um vetor de movimento se baseia. A predição para a frente significa a predição formada com base na lista de referência 0, enquanto a predição para trás significa a predição formada com base na lista de referência 1. Nos casos em que a lista de referência 0 e a lista de referência 1 são usadas para formar uma predição para um determinado bloco, ela é chamada de predição bidirecional.
[0108] Para uma determinada imagem ou fatia, se apenas uma lista de imagens de referência for usada, cada bloco dentro da imagem ou fatia é predito para frente. Se ambas as listas de imagens de referência forem usadas para uma dada imagem ou fatia, um bloco dentro da imagem ou fatia pode ser predito para a frente ou para trás ou predito bidirecionalmente.
[0109] Para cada direção de predição, as informações de movimento contêm um índice de referência e um vetor de movimento. Um índice de referência é usado para identificar uma imagem de referência na lista de imagens de referência correspondente (por exemplo, RefPicList0 ou RefPicList1). Um vetor de movimento tem um componente horizontal e um vertical, com cada um indicando um valor de desvio ao longo das direções horizontal e vertical, respectivamente. Em algumas descrições, para simplificar, a palavra "vetor de movimento" pode ser usada alternadamente com informações de movimento, para indicar ambos o vetor de movimento e seu índice de referência associado.
[0110] A contagem de ordem de imagem (POC) é amplamente utilizada em padrões de codificação de vídeo para identificar uma ordem de exibição de uma imagem. Embora haja casos em que duas imagens em uma sequência de vídeo codificada possam ter o mesmo valor POC, isso normalmente não ocorre em uma sequência de vídeo codificada. Quando múltiplas sequências de vídeo codificadas estão presentes em um fluxo de bits, as imagens com o mesmo valor de POC podem estar mais próximas umas das outras em termos de ordem de decodificação.
[0111] Em HEVC, existem dois modos de interpredição, denominado modo de mesclagem (com o salto sendo considerado um caso especial de modo de mesclagem) e modo de predição de vetor de movimento avançado (AMVP), respectivamente para uma PU.
[0112] Em qualquer AMVP ou modo de mesclagem, uma lista de candidatos de vetor de movimento (MV) é mantida para vários preditores de vetor de movimento. O vetor (s) de movimento, bem como os índices de referência no modo de mesclagem, da PU atual são gerados tomando um candidato da lista de candidatos MV.
[0113] A lista de candidatos MV contém até 5 candidatos para o modo de mesclagem e apenas dois candidatos para o modo AMVP. Um candidato de mesclagem pode conter um conjunto de informações de movimento, por exemplo, vetores de movimento correspondentes às listas de imagens de referência (lista 0 e lista 1) e aos índices de referência. Se um candidato de mesclagem for identificado por um índice de mesclagem, as imagens de referência são usadas para a predição dos blocos atuais, bem como os vetores de movimento associados são determinados. No entanto, no modo AMVP para cada direção de predição potencial quer da lista 0 ou lista 1, um índice de referência é explicitamente sinalizado, juntamente com um índice MVP para a lista de candidatos MV, uma vez que o candidato AMVP contém apenas um vetor de movimento. No modo AMVP, os vetores de movimento preditos podem ser mais refinados.
[0114] Como pode ser visto acima, um candidato de mesclagem corresponde a um conjunto completo de informações de movimento, enquanto um candidato AMVP contém apenas um vetor de movimento para uma direção de predição específica e índice de referência. Os candidatos para ambos os modos podem ser derivados de forma semelhante dos mesmos blocos vizinhos espaciais e temporais.
[0115] As Figuras 10A e 10B são diagramas de blocos que ilustram exemplos de candidatos de vetor de movimento vizinho espacial para modos de mesclagem e de predição de vetor de movimento avançada (AMVP). A Figura 10A mostra um exemplo de candidatos MV vizinhos espaciais para o modo de mesclagem e a Figura 10B mostra um exemplo de candidatos MV vizinhos espaciais para o modo AMVP. Candidatos MV espaciais são derivados dos blocos vizinhos como mostrado nas Figuras 10A e 10B. Para uma PU (PU0) específica, os métodos para gerar os candidatos de partir dos blocos diferem para os modos de mesclagem e AMVP.
[0116] No modo de mesclagem, até quatro candidatos MV espaciais podem ser derivados com a ordem mostrada na Figura 10A. Especificamente, a ordem é a seguinte: esquerda (0), acima (1), acima à direita (2), abaixo à esquerda (3) e acima à esquerda (4), como mostrado na Figura 10A.
[0117] No modo AVMP, os blocos vizinhos são divididos em dois grupos. O primeiro grupo é um grupo esquerdo que inclui os blocos 0 e 1. O segundo grupo é um grupo acima que inclui os blocos 2, 3 e 4, como mostrado na Figura 10B. Para cada grupo, o candidato potencial em um bloco vizinho referindo-se à mesma imagem de referência que aquela indicada pelo índice de referência sinalizado tem a prioridade mais alta para ser escolhido para formar um candidato final do grupo. É possível que todos os blocos vizinhos não contenham um vetor de movimento apontando para a mesma imagem de referência. Portanto, se tal candidato não puder ser encontrado, o primeiro candidato disponível será escalonado para formar o candidato final, portanto, as diferenças de distância temporal podem ser compensadas.
[0118] As Figuras 1A e 11B são diagramas conceituais que ilustram candidatos de predição de vetor de movimento temporal (TMPV). A Figura 11 A mostra um exemplo de candidato TMVP. Um candidato TMVP, se ativado e disponível, é adicionado à lista de candidatos MV após os candidatos de vetor de movimento espacial. O processo de derivação do vetor de movimento para um candidato TMVP é o mesmo para os modos de mesclagem e AMVP, no entanto, o índice de referência de destino para o candidato TMVP no modo de mesclagem é sempre definido como 0.
[0119] A localização do bloco primário para derivação do candidato TMVP é o bloco inferior direito fora da PU colocalizado como mostrado na Figura 11 A como um bloco “T”, para compensar a polarização para os blocos acima e à esquerda usados para gerar candidatos de vizinhança espacial. No entanto, se esse bloco estiver localizado fora da fila CTB atual ou as informações de movimento não estiverem disponíveis, o bloco é substituído por um bloco central da PU.
[0120] Um vetor de movimento para um candidato TMVP é derivado da PU colocalizada da imagem colocalizada,
indicada no nível de fatia. O vetor de movimento para a PU colocalizada é denominada MV colocalizado.
[0121] A Figura 11B mostra um exemplo de escalonamento MV. Para derivar o vetor de movimento candidato TMVP, o MV colocalizado pode precisar ser escalonado para compensar as diferenças de distância temporal, como mostrado na Figura 11B.
[0122] Vários outros aspectos dos modos de mesclagem e AMVP valem a pena mencionar a seguir. Por exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem executar escalonamento de vetor de movimento. Assume-se que o valor dos vetores de movimento é proporcional à distância das imagens no tempo de apresentação. Um vetor de movimento associa duas imagens, a imagem de referência e a imagem contendo o vetor de movimento (ou seja, a imagem contendo). Quando um vetor de movimento é utilizado para predizer o outro vetor de movimento, a distância da imagem contendo e da imagem de referência é calculada com base nos valores de Contagem de Ordem de Imagens (POC).
[0123] Para que um vetor de movimento seja predito, tanto a imagem contendo associada quanto a imagem de referência podem ser diferentes. Portanto, uma nova distância (com base na POC) é calculada. E o vetor de movimento é escalonado com base nessas duas distâncias POC. Para um candidato vizinhança espacial, as imagens contendo para os dois vetores de movimento são as mesmas, enquanto as imagens de referência são diferentes. Em HEVC, a escala do vetor de movimento se aplica a TMVP e AMVP para candidatos de vizinhança espacial e temporal.
[0124] Como outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem executar geração de candidato de vetor de movimento artificial. Se uma lista de candidatos de vetor de movimento não estiver completa, os candidatos de vetor de movimento artificial são gerados e inseridos no final da lista até que todos os candidatos sejam encontrados.
[0125] No modo de mesclagem, existem dois tipos de candidatos MV artificiais: candidato combinado derivado apenas para fatias B e candidatos zero usados apenas para AMVP se o primeiro tipo não prover candidatos artificiais suficientes. Para cada par de candidatos que já estão na lista de candidatos e têm as informações de movimento necessárias, os candidatos de vetor de movimento combinados bidirecionais são derivados por uma combinação do vetor de movimento do primeiro candidato referindo-se a uma imagem na lista 0 e o vetor de movimento de um segundo candidato referindo-se a uma imagem na lista 1.
[0126] Como outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem executar um processo de exclusão para a inserção do candidato. Os candidatos de partir de blocos diferentes podem ser os mesmos, o que diminui a eficiência de uma lista de candidatos de mesclagem/AMVP. Um processo de exclusão é aplicado para resolver este problema. Ele compara um candidato com os outros na lista de candidatos atual para evitar a inserção de candidatos idênticos em certa medida. Para reduzir a complexidade, apenas um número limitado de processos de exclusão é aplicado em vez de comparar cada potencial com todos os outros existentes. Apenas as seguintes comparações são aplicadas, se aplicável: o candidato de mesclagem acima é comparado com o candidato de mesclagem à esquerda, o candidato de mesclagem à direita acima é comparado com o candidato de mesclagem acima, o candidato de mesclagem abaixo à esquerda é comparado com o candidato de mesclagem à esquerda, o candidato de mesclagem acima à esquerda é comparado com o candidato de mesclagem à esquerda e o candidato de mesclagem acima.
[0127] O codificador de vídeo 200 e o decodificador de vídeo 300 também podem usar outros métodos de predição de movimento. No desenvolvimento de Codificação de Vídeo Versátil (VVC), um método de predição de vetor de movimento baseado em histórico (HMVP) foi proposto em L. Zhang etc., “CE4-related: History-based Motion Vector Prediction”, Joint Video Experts Team Document: JVET-K0104 (doravante denominado “K0104”). O método HMVP permite que cada bloco encontre seu preditor de MV a partir de uma lista de MVs decodificados do passado, além daqueles campos de movimento vizinhos causais imediatamente adjacentes. Uma tabela com múltiplos candidatos HMVP é mantida durante o processo de codificação/decodificação. A tabela é esvaziada quando uma nova fatia é encontrada. Sempre que houver um bloco codificado, as informações de movimento associadas são inseridas na tabela em um estilo primeiro a entrar, primeiro a sair (FIFO) como um novo candidato HMVP. Em seguida, uma regra FIFO de restrição pode ser aplicada. Ao inserir um HMVP na tabela, uma verificação de redundância pode ser aplicada primeiramente para descobrir se há um HMVP idêntico na tabela. Se encontrado, esse HMVP particular pode ser removido da tabela, e todos os candidatos HMVP após ele são movidos.
[0128] Os candidatos HMVP podem ser usados no processo de construção da lista de candidatos de mesclagem. Por exemplo, todos os candidatos HMVP da última entrada à primeira entrada na tabela podem ser inseridos após o candidato TMVP. A exclusão pode ser aplicada nos candidatos HMVP. Uma vez que o número total de candidatos de mesclagem disponíveis atinge os candidatos máximos de mesclagem permitidos sinalizados, o processo de construção da lista de candidatos de mesclagem é encerrado.
[0129] Da mesma forma, os candidatos HMVP também podem ser usados no processo de construção da lista de candidatos AMVP. Os vetores de movimento dos últimos K candidatos HMVP na tabela podem ser inseridos após o candidato TMVP. Em alguns exemplos, apenas candidatos HMVP com a mesma imagem de referência que a imagem de referência de destino AMVP são usados para construir a lista de candidatos AMVP. A exclusão pode ser aplicada nos candidatos HMVP.
[0130] Em HEVC, a codificação de uma CTU atual pode depender apenas das CTUs à esquerda, acima à esquerda, acima e acima à direita. Assim, o processamento paralelo de frente de onda (WPP) pode ser suportado em HEVC. No entanto, o método HMVP em K0104 pode causar dependência entre um bloco atual e todas as CTUs previamente codificadas em uma fatia. Portanto, o WPP não pode ser aplicado se o método HMVP for usado. Esta divulgação descreve técnicas para usar HMVP com inicialização de CTU, nas quais as dependências permanecem as mesmas que em HEVC.
Esta divulgação também descreve técnicas para HMVP com inicialização de fila de CTU (redefinição).
[0131] De acordo com as técnicas desta divulgação, o codificador de vídeo 200 e o decodificador de vídeo 300 podem executar HMVP com inicialização de CTU. A tabela HMVP é inicializada no início de cada CTU. A inicialização pode adicionar MVs dos blocos codificados vizinhos imediatos da CTU atual na tabela HMVP. O bloco codificado vizinho imediato pode estar à esquerda, acima, acima à esquerda ou acima à direita da CTU atual como em HEVC. Se a predição de vetor de movimento temporal estiver habilitada, o bloco codificado vizinho imediato também pode ser o bloco colocado na imagem de referência.
[0132] A Figura 12 é um diagrama de blocos que ilustra um exemplo de uma unidade de árvore de codificação (CTU) e blocos vizinhos. Em um exemplo, apenas os candidatos de mesclagem espacial e temporal para o bloco CTU atual são usados para inicializar a tabela HMVP. Um exemplo de uso de candidatos de mesclagem espacial e temporal HEVC é mostrado na Figura 12 A ordem de inserção é a seguinte: esquerda (0), acima (1), acima à direita (2) e acima à esquerda (4). A localização do candidato de mesclagem temporal é indicada por “T”. Observe que o candidato de mesclagem temporal inferior à direita e o candidato abaixo à esquerda (3) não estão disponíveis, pois suas localizações estão abaixo da linha de CTU atual.
[0133] Em outro exemplo, o processo de derivação do candidato de mesclagem para o bloco CTU atual é usado para inicializar a tabela HMVP. Além dos candidatos de mesclagem espacial e temporal, outros candidatos de mesclagem (candidatos de vetor de movimento artificial, por exemplo) também podem ser usados para a inicialização.
[0134] A Figura 13 é um diagrama de blocos que ilustra uma CU atual em uma CTU atual. Em alguns exemplos, a tabela HMVP é inicializada como vazia no início da codificação da CTU atual. No entanto, após a primeira CU ser codificada, os candidatos de mesclagem espacial e temporal da primeira CU, como mostrado na Figura 13, são adicionados à tabela HMVP. E então, o MV da primeira CU também é adicionado se a CU for codificada por interpredição. Observe que se a primeira CU não for igual à CTU atual, podem ser adicionados dois candidatos de mesclagem temporal “T0” e “T1” na ordem. A Figura 13 mostra um exemplo de candidatos de mesclagem da primeira CU em uma CTU.
[0135] Em outro exemplo, a tabela HMVP é inicializada como vazia no início da codificação da CTU atual. No entanto, depois que a primeira CU é codificada, todos os candidatos de mesclagem da primeira CU são adicionados à tabela HMVP. E então o MV da primeira CU também é adicionado se for codificado por interpredição.
[0136] O codificador de vídeo 200 e o decodificador de vídeo 300 também podem executar HMVP com inicialização de linha de CTU. Em outro exemplo, a inicialização de CTU para HMVP descrita acima é aplicada apenas na primeira CTU em uma linha de CTU. Semelhante ao HMVP em K0104, o processo de exclusão pode ser aplicado à tabela inicializada para remover algumas ou todas as duplicatas. O processo de remoção também pode não ser aplicado à tabela inicializada para reduzir a complexidade.
[0137] A Figura 14 é um diagrama de blocos que ilustra um codificador de vídeo exemplar 200 que pode executar as técnicas desta divulgação. A Figura 14 é provida para fins de explicação e não deve ser considerada uma limitação das técnicas conforme amplamente exemplificado e descrito nesta divulgação. Para fins de explicação, esta divulgação descreve o codificador de vídeo 200 no contexto de padrões de codificação de vídeo, como o padrão de codificação de vídeo HEVC e o padrão de codificação de vídeo H.266 em desenvolvimento. No entanto, as técnicas desta divulgação não estão limitadas a esses padrões de codificação de vídeo e são geralmente aplicáveis à codificação e decodificação de vídeo.
[0138] No exemplo da Figura 14, o codificador de vídeo 200 inclui memória de dados de vídeo 230, unidade de seleção de modo 202, unidade de geração residual 204, unidade de processamento de transformada 206, unidade de quantização 208, unidade de quantização inversa 210, unidade de processamento de transformada inversa 212, unidade de reconstrução 214, unidade de filtro 216, armazenador temporário de imagem decodificada (DPB) 218 e unidade de codificação por entropia 220. Qualquer ou toda a memória de dados de vídeo 230, unidade de seleção de modo 202, unidade de geração residual 204, unidade de processamento de transformada 206, unidade de quantização 208, unidade de quantização inversa 210, unidade de processamento de transformada inversa 212, unidade de reconstrução 214, unidade de filtro 216, DPB 218 e unidade de codificação por entropia 220 podem ser implementadas em um ou mais processadores ou em conjunto de circuitos de processamento. Além disso, o codificador de vídeo 200 pode incluir processadores adicionais ou alternativos ou conjunto de circuitos de processamento para executar essas e outras funções.
[0139] A memória de dados de vídeo 230 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 200. O codificador de vídeo 200 pode receber os dados de vídeo armazenados na memória de dados de vídeo 230, por exemplo, a partir da fonte de vídeo 104 (Figura 1). O DPB 218 pode atuar como uma memória de imagem de referência que armazena dados de vídeo de referência para uso na predição de dados de vídeo subsequentes pelo codificador de vídeo 200. A memória de dados de vídeo 230 e DPB 218 podem ser formados por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatória dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 230 e DPB 218 podem ser providos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 230 pode estar em chip com outros componentes do codificador de vídeo 200, conforme ilustrado, ou fora do chip em relação a esses componentes.
[0140] Nesta divulgação, referência à memória de dados de vídeo 230 não deve ser interpretada como sendo limitada à memória interna para o codificador de vídeo 200, a menos que especificamente descrito como tal, ou memória externa para o codificador de vídeo 200, a menos que especificamente descrito como tal. Em vez disso, referência à memória de dados de vídeo 230 deve ser entendida como memória de referência que armazena dados de vídeo que o codificador de vídeo 200 recebe para codificação (por exemplo, dados de vídeo para um bloco atual que deve ser codificado). Memória 106 da Figura 1 também pode prover armazenamento temporário de saídas das várias unidades do codificador de vídeo 200.
[0141] As várias unidades da Figura 14 são ilustradas para auxiliar na compreensão das operações executadas pelo codificador de vídeo 200. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação dos mesmos. Os circuitos de função fixa referem-se a circuitos que proveem uma funcionalidade específica e são predefinidos nas operações que podem ser executadas. Os circuitos programáveis referem-se a circuitos que podem ser programados para executar várias tarefas e proveem funcionalidade flexível nas operações que podem ser executadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que faz com que os circuitos programáveis operem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), mas os tipos de operações que os circuitos de função fixa executam são geralmente imutáveis. Em alguns exemplos, uma ou mais das unidades podem ser blocos de circuitos distintos (função fixa ou programável) e, em alguns exemplos, uma ou mais unidades podem ser circuitos integrados.
[0142] O codificador de vídeo 200 pode incluir unidades lógicas aritméticas (ALUs), unidades de função elementar (EFUs), circuitos digitais, circuitos analógicos e/ou núcleos programáveis, formados a partir de circuitos programáveis. Em exemplos em que as operações do codificador de vídeo 200 são executadas usando software executado pelos circuitos programáveis, a memória 106 (Figura 1) pode armazenar o código objeto do software que o codificador de vídeo 200 recebe e executa, ou outra memória dentro do codificador de vídeo 200 (não mostrada) pode armazenar tais instruções.
[0143] A memória de dados de vídeo 230 está configurada para armazenar dados de vídeo recebidos. O codificador de vídeo 200 pode recuperar uma imagem dos dados de vídeo da memória de dados de vídeo 230 e prover os dados de vídeo para a unidade de geração residual 204 e unidade de seleção de modo 202. Os dados de vídeo na memória de dados de vídeo 230 podem ser dados de vídeo brutos que devem ser codificados.
[0144] A unidade de seleção de modo 202 inclui uma unidade de estimação de movimento 222, unidade de compensação de movimento 224 e uma unidade de intrapredição
226. A unidade de seleção de modo 202 pode incluir unidades funcionais adicionais para executar predição de vídeo de acordo com outros modos de predição. Como exemplos, a unidade de seleção de modo 202 pode incluir uma unidade de paleta, uma unidade de cópia intrabloco (que pode ser parte da unidade de estimação de movimento 222 e/ou unidade de compensação de movimento 224), uma unidade afim, uma unidade de modelo linear (LM), ou semelhante.
[0145] A unidade de seleção de modo 202 geralmente coordena múltiplas passagens de codificação para testar combinações de parâmetros de codificação e valores de distorção de taxa resultantes para tais combinações. Os parâmetros de codificação podem incluir o particionamento de CTUs em CUs, modos de predição para as CUs, tipos de transformada para dados residuais das CUs, parâmetros de quantização para dados residuais das CUs e assim por diante. A unidade de seleção de modo 202 pode, em última análise, selecionar a combinação de parâmetros de codificação com valores de taxa de distorção que são melhores do que as outras combinações testadas.
[0146] O codificador de vídeo 200 pode particionar uma imagem recuperada da memória de dados de vídeo 230 em uma série de CTUs e encapsular uma ou mais CTUs dentro de uma fatia. A unidade de seleção de modo 202 pode particionar uma CTU da imagem de acordo com uma estrutura de árvore, tal como a estrutura QTBT ou a estrutura quadtree de HEVC descrita acima. Conforme descrito acima, o codificador de vídeo 200 pode formar uma ou mais CUs a partir do particionamento de uma CTU de acordo com a estrutura de árvore. Tal uma CU também pode ser geralmente referida como um "bloco de vídeo" ou "bloco".
[0147] Em geral, a unidade de seleção de modo 202 também controla os seus componentes (por exemplo, unidade de estimação de movimento 222, unidade de compensação de movimento 224 e unidade de intrapredição 226) para gerar um bloco de predição para um bloco atual (por exemplo, uma CU atual, ou em HEVC, a porção sobreposta de uma PU e uma TU).
Para interpredição de um bloco atual, a unidade de estimação de movimento 222 pode executar uma busca de movimento para identificar um ou mais blocos de referência próximos em uma ou mais imagens de referência (por exemplo, uma ou mais imagens previamente codificadas armazenadas em DPB 218). Em particular, a unidade de estimação de movimento 222 pode calcular um valor representativo de quão semelhante um bloco de referência potencial é para o bloco atual, por exemplo, de acordo com a soma da diferença absoluta (SAD), soma das diferenças quadradas (SSD), diferença absoluta média (MAD), diferenças quadradas médias (MSD), ou semelhante. A unidade de estimação de movimento 222 pode geralmente executar esses cálculos usando diferenças de amostra a amostra entre o bloco atual e o bloco de referência sendo considerado. A unidade de estimação de movimento 222 pode identificar um bloco de referência com um valor mais baixo resultante desses cálculos, indicando um bloco de referência que mais se aproxima do bloco atual.
[0148] A unidade de estimação de movimento 222 pode formar um ou mais vetores de movimento (MVs) que definem as posições dos blocos de referência nas imagens de referência em relação à posição do bloco atual em uma imagem atual. A unidade de estimação de movimento 222 pode então prover os vetores de movimento para a unidade de compensação de movimento 224. Por exemplo, para interpredição unidirecional, a unidade de estimação de movimento 222 pode prover um único vetor de movimento, enquanto que para a interpredição bidirecional, unidade de estimação de movimento 222 pode prover dois vetores de movimento. A unidade de compensação de movimento 224 pode, então, gerar um bloco de predição usando os vetores de movimento. Por exemplo, a unidade de compensação de movimento 224 pode recuperar dados do bloco de referência usando o vetor de movimento. Como outro exemplo, se o vetor de movimento tiver precisão de amostra fracionária, a unidade de compensação de movimento 224 pode interpolar valores para o bloco de predição de acordo com um ou mais filtros de interpolação. Além disso, para a interpredição bidirecional, a unidade de compensação de movimento 224 pode recuperar dados para dois blocos de referência identificados pelos respectivos vetores de movimento e combinar os dados recuperados, por exemplo, por meio de média amostra por amostra ou média ponderada.
[0149] De acordo com as técnicas desta divulgação, o armazenador temporário de imagem decodificada 218 pode incluir um ou mais armazenadores temporários de MVP de histórico para linhas de CTUs. Ou seja, cada linha de CTU pode ser alocada para seu próprio armazenador temporário de MVP, ou um único armazenador temporário de MVP pode ser usado para uma pluralidade de linhas de CTU. Em qualquer caso, o codificador de vídeo 200 pode redefinir um armazenador temporário de MVP para uma linha de CTU no início da decodificação de dados de vídeo da linha de CTU. A unidade de compensação de movimento 224 ou outra unidade do codificador de vídeo 200 pode ser configurada para armazenar apenas vetores de movimento exclusivos no armazenador temporário de MVP. Como discutido acima, a unidade de compensação de movimento 224 ou outra unidade do codificador de vídeo 200 pode ser configurada para usar uma regra FIFO para gerenciar informações de movimento armazenadas no armazenador temporário de MVP, de modo que ao adicionar um vetor de movimento ao armazenador temporário de MVP, se o armazenador temporário de MVP estiver cheio, a unidade de compensação de movimento 224 pode remover um vetor de movimento adicionado mais cedo do armazenador temporário de MVP. Em alguns exemplos, o codificador de vídeo 200 pode manter diferentes armazenadores temporários de MVP respectivos para cada um de uma variedade de modelos de movimento, tais como, por exemplo, modelo de movimento afim, informações de movimento do modo de cópia intrabloco, informações de movimento de compensação de iluminação local, sub-bloco MVP e predição de movimento temporal.
[0150] Como outro exemplo, para intrapredição ou codificação intrapredição, a unidade intrapredição 226 pode gerar o bloco de predição a partir de amostras vizinhas ao bloco atual. Por exemplo, para modos direcionais, a unidade de intrapredição 226 pode geralmente combinar matematicamente valores de amostras vizinhas e preencher esses valores calculados na direção definida através do bloco atual para produzir o bloco de predição. Como outro exemplo, para o modo DC, a unidade de intrapredição 226 pode calcular uma média das amostras vizinhas ao bloco atual e gerar o bloco de predição para incluir esta média resultante para cada amostra do bloco de predição.
[0151] A unidade de seleção de modo 202 provê o bloco de predição para a unidade de geração residual 204. A unidade de geração residual 204 recebe uma versão bruta e não codificada do bloco atual da memória de dados de vídeo
230 e o bloco de predição da unidade de seleção de modo
202. Unidade de geração residual 204 calcula diferenças de amostra a amostra entre o bloco atual e o bloco de predição. As diferenças de amostra a amostra resultantes definem um bloco residual para o bloco atual. Em alguns exemplos, a unidade de geração residual 204 também pode determinar diferenças entre os valores de amostra no bloco residual para gerar um bloco residual usando modulação de código de pulso diferencial residual (RDPCM). Em alguns exemplos, a unidade de geração residual 204 pode ser formada usando um ou mais circuitos subtratores que realizam a subtração binária.
[0152] Em exemplos em que a unidade de seleção de modo 202 particiona CUs em PUs, cada PU pode ser associada a uma unidade de predição de luma e unidades de predição de croma correspondentes. O codificador de vídeo 200 e o decodificador de vídeo 300 podem suportar PUs com vários tamanhos. Conforme indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação luma da CU e o tamanho de uma PU pode se referir ao tamanho de uma unidade de predição luma da PU. Assumindo que o tamanho de uma CU específica seja 2Nx2N, o codificador de vídeo 200 pode suportar tamanhos de PU de 2Nx2N ou NxN para intrapredição e tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN ou semelhante para interpredição. O codificador de vídeo 200 e o decodificador de vídeo 300 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para interpredição.
[0153] Em exemplos em que a unidade de seleção de modo não particiona ainda mais uma CU em PUs, cada CU pode ser associada a um bloco de codificação luma e blocos de codificação croma correspondentes. Como acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação luma da CU. O codificador de vídeo 200 e o decodificador de vídeo 120 podem suportar tamanhos de CU de 2Nx2N, 2NxN ou Nx2N.
[0154] Para outras técnicas de codificação de vídeo, como uma codificação de modo de cópia intrabloco, uma codificação de modo afim e codificação de modo de modelo linear (LM), como alguns exemplos, a unidade de seleção de modo 202, por meio das respectivas unidades associadas às técnicas de codificação, gera um bloco de predição para o bloco atual sendo codificado. Em alguns exemplos, tal como codificação de modo de paleta, a unidade de seleção de modo 202 pode não gerar um bloco de predição e, em vez disso, gerar elementos de sintaxe que indicam a maneira pela qual reconstruir o bloco com base em uma paleta selecionada. Em tais modos, a unidade de seleção de modo 202 pode prover esses elementos de sintaxe para a unidade de codificação de entropia 220 para serem codificados.
[0155] Conforme descrito acima, a unidade de geração residual 204 recebe os dados de vídeo para o bloco atual e o bloco de predição correspondente. A unidade de geração residual 204, então, gera um bloco residual para o bloco atual. Para gerar o bloco residual, a unidade de geração residual 204 calcula diferenças de amostra a amostra entre o bloco de predição e o bloco atual.
[0156] A unidade de processamento de transformada 206 aplica uma ou mais transformadas ao bloco residual para gerar um bloco de coeficientes de transformada (referido neste documento como um "bloco de coeficiente de transformada"). A unidade de processamento de transformada 206 pode aplicar várias transformadas a um bloco residual para formar o bloco de coeficiente de transformada. Por exemplo, a unidade de processamento de transformada 206 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada direcional, uma transformada de Karhunen- Loeve (KLT) ou uma transformada conceitualmente semelhante a um bloco residual. Em alguns exemplos, a unidade de processamento de transformada 206 pode executar múltiplas transformadas em um bloco residual, por exemplo, uma transformada primária e uma transformada secundária, como uma transformada rotacional. Em alguns exemplos, a unidade de processamento de transformada 206 não aplica transformadas a um bloco residual.
[0157] A unidade de quantização 208 pode quantizar os coeficientes de transformada em um bloco de coeficiente de transformada, para produzir um bloco de coeficiente de transformada quantizado. A unidade de quantização 208 pode quantizar os coeficientes de transformada de um bloco de coeficiente de transformada de acordo com um valor de parâmetro de quantização (QP) associado ao bloco atual. O codificador de vídeo 200 (por exemplo, através da unidade de seleção de modo 202) pode ajustar o grau de quantização aplicado aos blocos de coeficiente de transformada associados ao bloco atual, ajustando o valor QP associado à CU. A quantização pode introduzir perda de informação e, assim, os coeficientes de transformada quantizados podem ter menor precisão do que os coeficientes de transformada originais produzidos pela unidade de processamento de transformada 206.
[0158] A unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212 podem aplicar quantização inversa e transformadas inversas a um bloco de coeficiente de transformada quantizado, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficiente de transformada. A unidade de reconstrução 214 pode produzir um bloco reconstruído correspondente ao bloco atual (embora potencialmente com algum grau de distorção) com base no bloco residual reconstruído e um bloco de predição gerado pela unidade de seleção de modo 202. Por exemplo, a unidade de reconstrução 214 pode adicionar amostras do bloco residual reconstruído a amostras correspondentes do bloco de predição gerado pela unidade de seleção de modo 202 para produzir o bloco reconstruído.
[0159] A unidade de filtro 216 pode executar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 216 pode executar operações de desbloqueio para reduzir artefatos de bloqueio ao longo das bordas de CUs. As operações da unidade de filtro 216 podem ser ignoradas, em alguns exemplos.
[0160] O codificador de vídeo 200 armazena blocos reconstruídos no DPB 218. Por exemplo, em exemplos onde as operações da unidade de filtro 216 não são necessárias, a unidade de reconstrução 214 pode armazenar blocos reconstruídos no DPB 218. Em exemplos onde as operações da unidade de filtro 216 são necessárias, a unidade de filtro 216 pode armazenar os blocos reconstruídos filtrados no DPB
218. A unidade de estimação de movimento 222 e a unidade de compensação de movimento 224 podem recuperar uma imagem de referência do DPB 218, formada a partir dos blocos reconstruídos (e potencialmente filtrados), para interpredizer blocos de imagens subsequentemente codificadas. Além disso, a unidade de intrapredição 226 pode usar blocos reconstruídos no DPB 218 de uma imagem atual para intrapredizer outros blocos na imagem atual.
[0161] Em geral, a unidade de codificação de entropia 220 pode codificar por entropia elementos de sintaxe recebidos de outros componentes funcionais do codificador de vídeo 200. Por exemplo, a unidade de codificação de entropia 220 pode codificar por entropia blocos de coeficiente de transformada quantizado da unidade de quantização 208. Como outro exemplo, a unidade de codificação de entropia 220 pode codificar por entropia elementos de sintaxe de predição (por exemplo, informação de movimento para interpredição ou informação intramodo para intrapredição) a partir da unidade de seleção de modo
202. A unidade de codificação de entropia 220 pode executar uma ou mais operações de codificação de entropia nos elementos de sintaxe, que são outro exemplo de dados de vídeo, para gerar dados codificados por entropia. Por exemplo, a unidade de codificação de entropia 220 pode executar uma operação de codificação de comprimento variável adaptativa de contexto (CAVLC), uma operação CABAC, uma operação de codificação de comprimento variável a variável (V2V), uma operação de codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), uma operação de codificação de Entropia de Particionamento de Intervalo de Probabilidade (PIPE), uma operação de codificação Exponencial-Golomb ou outro tipo de operação de codificação de entropia nos dados. Em alguns exemplos, a unidade de codificação de entropia 220 pode operar em modo de bypassagem, onde os elementos de sintaxe não são codificados por entropia.
[0162] O codificador de vídeo 200 pode emitir um fluxo de bits que inclui os elementos de sintaxe codificados por entropia necessários para reconstruir blocos de uma fatia ou imagem. Em particular, a unidade de codificação de entropia 220 pode enviar o fluxo de bits.
[0163] As operações descritas acima são descritas em relação a um bloco. Tal descrição deve ser entendida como sendo operações para um bloco de codificação luma e/ou blocos de codificação croma. Conforme descrito acima, em alguns exemplos, o bloco de codificação luma e os blocos de codificação croma são componentes de luma e croma de uma CU. Em alguns exemplos, o bloco de codificação luma e os blocos de codificação croma são componentes de luma e croma de uma PU.
[0164] Em alguns exemplos, as operações executadas em relação a um bloco de codificação luma não precisam ser repetidas para os blocos de codificação croma. Como um exemplo, as operações para identificar um vetor de movimento (MV) e imagem de referência para um bloco de codificação luma não precisam ser repetidas para identificar um MV e imagem de referência para os blocos de croma. Em vez disso, o MV para o bloco de codificação luma pode ser escalonado para determinar o MV para os blocos de croma e a imagem de referência pode ser a mesma. Como outro exemplo, o processo de intrapredição pode ser o mesmo para o bloco de codificação luma e os blocos de codificação croma.
[0165] O codificador de vídeo 200 representa um exemplo de um dispositivo configurado para codificar dados de vídeo, incluindo uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para armazenar informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) em um primeiro armazenador temporário de preditor de vetor de movimento (MVP) de histórico da memória, e armazenar informações de movimento para uma segunda linha de CTU em um segundo armazenador temporário de MVP de histórico da memória, a segunda linha de CTU sendo diferente da primeira linha de CTU.
[0166] O codificador de vídeo 200 também representa um exemplo de um dispositivo configurado para codificar dados de vídeo, incluindo uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para armazenar informações de movimento codificadas para um preditor de vetor de movimento (MVP) de histórico, armazenar um tipo diferente de informação de movimento no armazenador temporário de MVP de histórico e codificar as informações de movimento de um bloco de dados de vídeo usando informações de movimento do armazenador temporário de MVP de histórico.
[0167] O codificador de vídeo 200 também representa um exemplo de um dispositivo configurado para codificar dados de vídeo, incluindo uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para armazenar uma pluralidade de diferentes tipos de informações de movimento nos respectivos armazenadores temporários de preditor de vetor de movimento (MVP) de histórico.
[0168] A Figura 15 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar 300 que pode executar as técnicas desta divulgação. A Figura 15 é provida para fins de explicação e não é limitante nas técnicas conforme amplamente exemplificadas e descritas nesta divulgação. Para fins de explicação, esta divulgação descreve o decodificador de vídeo 300 de acordo com as técnicas de JEM e HEVC. No entanto, as técnicas desta divulgação podem ser executadas por dispositivos de codificação de vídeo que são configurados de acordo com outros padrões de codificação de vídeo.
[0169] No exemplo da Figura 15, o decodificador de vídeo 300 inclui memória de armazenador temporário de imagem codificada (CPB) 320, unidade de decodificação de entropia 302, unidade de processamento de predição 304, unidade de quantização inversa 306, unidade de processamento de transformada inversa 308, unidade de reconstrução 310, unidade de filtro 312 e armazenador temporário de imagem decodificada (DPB) 314. Qualquer ou toda a memória CPB 320, unidade de decodificação de entropia 302, unidade de processamento de predição 304, unidade de quantização inversa 306, unidade de processamento de transformada inversa 308, unidade de reconstrução 310, unidade de filtro 312 e DPB 314 podem ser implementadas em um ou mais processadores ou em conjunto de circuitos de processamento. Além disso, o decodificador de vídeo 300 pode incluir processadores adicionais ou alternativos ou conjunto de circuitos de processamento para executar essas e outras funções.
[0170] A unidade de processamento de predição 304 inclui unidade de compensação de movimento 316 e unidade de intrapredição 318. A unidade de processamento de predição 304 pode incluir unidades de adição para executar predição de acordo com outros modos de predição. Como exemplos, a unidade de processamento de predição 304 pode incluir uma unidade de paleta, uma unidade de cópia intrabloco (que pode fazer parte da unidade de compensação de movimento 316), uma unidade afim, uma unidade de modelo linear (LM) ou semelhante. Em outros exemplos, o decodificador de vídeo 300 pode incluir mais, menos ou diferentes componentes funcionais.
[0171] A memória CPB 320 pode armazenar dados de vídeo, como um fluxo de bits de vídeo codificado, para serem decodificados pelos componentes do decodificador de vídeo 300. Os dados de vídeo armazenados na memória CPB 320 podem ser obtidos, por exemplo, a partir de meio legível por computador 110 (Figura 1). A memória CPB 320 pode incluir um CPB que armazena dados de vídeo codificados (por exemplo, elementos de sintaxe) a partir de um fluxo de bits de vídeo codificado. Além disso, a memória CPB 320 pode armazenar dados de vídeo que não sejam elementos de sintaxe de uma imagem codificada, como dados temporários que representam saídas das várias unidades do decodificador de vídeo 300. DPB 314 geralmente armazena imagens decodificadas, cujo decodificador de vídeo 300 pode produzir e/ou usar como dados de vídeo de referência ao decodificar dados ou imagens subsequentes do fluxo de bits de vídeo codificado. A memória CPB 320 e DPB 314 pode ser formada por qualquer um de uma variedade de dispositivos de memória, como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória CPB 320 e DPB 314 podem ser providos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória CPB 320 pode estar no chip com outros componentes do decodificador de vídeo 300 ou fora do chip em relação a esses componentes.
[0172] Adicionalmente ou em alternativa, em alguns exemplos, o decodificador de vídeo 300 pode recuperar dados de vídeo codificados da memória 120 (Figura 1). Isto é, a memória 120 pode armazenar dados conforme discutido acima com a memória CPB 320. Da mesma forma, a memória 120 pode armazenar instruções a serem executadas pelo decodificador de vídeo 300, quando algumas ou todas as funcionalidades do decodificador de vídeo 300 são implementadas no software a ser executado pelo conjunto de circuitos de processamento do decodificador de vídeo 300.
[0173] As várias unidades mostradas na Figura 15 são ilustradas para auxiliar na compreensão das operações executadas pelo decodificador de vídeo 300. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação dos mesmos.
Semelhante à Figura 14, os circuitos de função fixa referem-se a conjunto de circuitos que proveem funcionalidade particular e são predefinidos nas operações que podem ser executadas. Os circuitos programáveis referem-se a conjunto de circuitos que podem ser programados para executar várias tarefas e proveem funcionalidade flexível nas operações que podem ser executadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que faz com que os circuitos programáveis operem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), mas os tipos de operações que os circuitos de função fixa executam são geralmente imutáveis. Em alguns exemplos, uma ou mais das unidades podem ser blocos de circuitos distintos (função fixa ou programável) e, em alguns exemplos, uma ou mais unidades podem ser circuitos integrados.
[0174] O decodificador de vídeo 300 pode incluir ALUs, EFUs, circuitos digitais, circuitos analógicos e/ou núcleos programáveis formados a partir de circuitos programáveis. Nos exemplos em que as operações do decodificador de vídeo 300 são executadas por software em execução nos circuitos programáveis, memória em chip ou fora de chip pode armazenar instruções (por exemplo, código objeto) do software que o decodificador de vídeo 300 recebe e executa.
[0175] A unidade de decodificação de entropia 302 pode receber dados de vídeo codificados do CPB e decodificar por entropia os dados de vídeo para reproduzir elementos de sintaxe. A unidade de processamento de predição 304, unidade de quantização inversa 306, unidade de processamento de transformada inversa 308, unidade de reconstrução 310 e unidade de filtro 312 podem gerar dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[0176] Em geral, o decodificador de vídeo 300 reconstrói uma imagem bloco a bloco. O decodificador de vídeo 300 pode executar uma operação de reconstrução em cada bloco individualmente (onde o bloco atualmente sendo reconstruído, isto é, decodificado, pode ser referido como um "bloco atual").
[0177] A unidade de decodificação de entropia 302 pode decodificar elementos de sintaxe de entropia definindo coeficientes de transformada quantizados de um bloco de coeficiente de transformada quantizado, bem como informações de transformada, tais como um parâmetro de quantização (QP) e/ou indicação (s) de modo de transformada. A unidade de quantização inversa 306 pode usar o QP associado ao bloco de coeficiente de transformada quantizada para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa para a unidade de quantização inversa 306 aplicar. A unidade de quantização inversa 306 pode, por exemplo, executar uma operação de deslocamento à esquerda bit a bit para quantizar inversamente os coeficientes de transformada quantizados. A unidade de quantização inversa 306 pode, desse modo, formar um bloco de coeficiente de transformada incluindo coeficientes de transformada.
[0178] Após a unidade de quantização inversa 306 formar o bloco de coeficiente de transformada, a unidade de processamento de transformada inversa 308 pode aplicar uma ou mais transformadas inversas ao bloco de coeficiente de transformada para gerar um bloco residual associado ao bloco atual. Por exemplo, a unidade de processamento de transformada inversa 308 pode aplicar uma DCT inversa, uma transformada de inteiro inversa, uma transformada Karhunen- Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa ou outra transformada inversa ao bloco de coeficiente.
[0179] Além disso, a unidade de processamento de predição 304 gera um bloco de predição de acordo com elementos de sintaxe de informação de predição que foram decodificados por entropia pela unidade de decodificação de entropia 302. Por exemplo, se os elementos de sintaxe de informação de predição indicam que o bloco atual é interpredito, a unidade de compensação de movimento 316 pode gerar o bloco de predição. Neste caso, os elementos de sintaxe de informações de predição podem indicar uma imagem de referência no DPB 314 a partir da qual recuperar um bloco de referência, bem como um vetor de movimento que identifica uma localização do bloco de referência na imagem de referência em relação à localização do bloco atual na imagem atual. A unidade de compensação de movimento 316 pode geralmente executar o processo de interpredição de uma maneira que é substancialmente semelhante àquela descrita em relação à unidade de compensação de movimento 224 (Figura 14).
[0180] De acordo com as técnicas desta divulgação, o armazenador temporário de imagem decodificada 314 pode incluir um ou mais armazenadores temporários de MVP de histórico para linhas de CTUs.
Ou seja, cada linha de CTU pode ser alocada a seu próprio armazenador temporário de MVP, ou um único armazenador temporário de MVP pode ser usado para uma pluralidade de linhas de CTU.
Em qualquer caso, o decodificador de vídeo 300 pode redefinir um armazenador temporário de MVP para uma linha de CTU no início da codificação de dados de vídeo da linha de CTU.
A unidade de compensação de movimento 316 ou outra unidade de decodificador de vídeo 300 pode ser configurada para armazenar apenas vetores de movimento exclusivos no armazenador temporário de MVP.
Conforme discutido acima, a unidade de compensação de movimento 316 ou outra unidade de decodificador de vídeo 300 pode ser configurada para usar uma regra FIFO para gerenciar informações de movimento armazenadas no armazenador temporário de MVP, de modo que ao adicionar um vetor de movimento ao armazenador temporário de MVP, se o armazenador temporário de MVP estiver completo, a unidade de compensação de movimento 316 pode remover um vetor de movimento adicionado mais cedo do armazenador temporário de MVP.
Em alguns exemplos, o decodificador de vídeo 300 pode manter diferentes armazenadores temporários de MVP respectivos para cada um de uma variedade de modelos de movimento, tais como, por exemplo, modelo de movimento afim, informações de movimento do modo de cópia intrabloco, informações de movimento de compensação de iluminação local, sub-bloco MVP e predição de movimento temporal.
[0181] Como outro exemplo, se os elementos de sintaxe de informação de predição indicam que o bloco atual é intrapredito, a unidade de intrapredição 318 pode gerar o bloco de predição de acordo com um modo de intrapredição indicado pelos elementos de sintaxe de informação de predição. Mais uma vez, a unidade de intrapredição 318 pode geralmente executar o processo de intrapredição de uma maneira que é substancialmente semelhante à descrita em relação à unidade de intrapredição 226 (Figura 14). A unidade intrapredição 318 pode recuperar dados de amostras vizinhas para o bloco atual a partir do DPB 314.
[0182] A unidade de reconstrução 310 pode reconstruir o bloco atual usando o bloco de predição e o bloco residual. Por exemplo, a unidade de reconstrução 310 pode adicionar amostras do bloco residual às amostras correspondentes do bloco de predição para reconstruir o bloco atual.
[0183] A unidade de filtro 312 pode executar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 312 pode executar operações de desbloqueio para reduzir artefatos de bloqueio ao longo das bordas dos blocos reconstruídos. As operações da unidade de filtro 312 não são necessariamente executadas em todos os exemplos.
[0184] O decodificador de vídeo 300 pode armazenar os blocos reconstruídos no DPB 314. Por exemplo, em exemplos onde as operações da unidade de filtro 312 não são necessárias, a unidade de reconstrução 310 pode armazenar os blocos reconstruídos no DPB 314. Em exemplos onde as operações da unidade de filtro 312 são necessárias,
a unidade de filtro 312 pode armazenar os blocos reconstruídos filtrados no DPB 314. Como discutido acima, o DPB 314 pode prover informações de referência, tais como amostras de uma imagem atual para intrapredição e imagens previamente decodificadas para compensação de movimento subsequente, para a unidade de processamento de predição
304. Além disso, o decodificador de vídeo 300 pode produzir imagens decodificadas a partir do DPB 314 para apresentação subsequente em um dispositivo de exibição, como o dispositivo de exibição 118 da Figura 1.
[0185] O decodificador de vídeo 300 representa um exemplo de um dispositivo configurado para decodificar dados de vídeo, incluindo uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para armazenar informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) (que pode ser processada por uma primeira tarefa de um processo de codificação de vídeo) em um primeiro armazenador temporário de preditor de vetor de movimento (MVP) de histórico da memória, e armazenar informações de movimento para uma segunda linha de CTU (que pode ser processada por uma segunda linha do processo de codificação de vídeo) em um segundo armazenador temporário de MVP de histórico da memória, a segunda linha de CTU sendo diferente da primeira linha de CTU. O segundo tarefa pode ser diferente da primeira tarefa.
[0186] O decodificador de vídeo 300 também representa um exemplo de um dispositivo configurado para decodificar dados de vídeo, incluindo uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para armazenar informações de movimento codificadas para um histórico armazenador temporário de preditor de vetor de movimento (MVP), armazenar um tipo diferente de informação de movimento no armazenador temporário de MVP de histórico, e codificar as informações de movimento de um bloco de dados de vídeo usando informações de movimento do armazenador temporário de MVP de histórico.
[0187] O decodificador de vídeo 300 também representa um exemplo de um dispositivo configurado para decodificar dados de vídeo, incluindo uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para armazenar uma pluralidade de diferentes tipos de informações de movimento nos respectivos, diferentes armazenadores temporários de preditor de vetor de movimento (MVP) de histórico.
[0188] A Figura 16 é um fluxograma que ilustra um método exemplar para codificar um bloco atual de acordo com as técnicas desta divulgação. O bloco atual pode compreender uma CU atual. Embora descrito em relação ao codificador de vídeo 200 (Figuras 1 e 14), deve ser entendido que outros dispositivos podem ser configurados para executar um método semelhante ao da Figura 16.
[0189] Neste exemplo, o codificador de vídeo 200 prediz inicialmente o bloco atual usando informações de movimento (350). Por exemplo, o codificador de vídeo 200 pode formar um bloco de predição para o bloco atual usando as informações de movimento. O codificador de vídeo 200 pode então calcular um bloco residual para o bloco atual (352). Para calcular o bloco residual, o codificador de vídeo 200 pode calcular uma diferença entre o bloco original não codificado e o bloco de predição para o bloco atual. O codificador de vídeo 200 pode então transformar e quantizar os coeficientes do bloco residual (354). Em seguida, o codificador de vídeo 200 pode varrer os coeficientes de transformada quantizados do bloco residual (356). Durante a varredura, ou após a varredura, o codificador de vídeo 200 pode codificar por entropia os coeficientes e as informações de movimento (358) usando as técnicas desta divulgação.
[0190] O codificador de vídeo 200 pode construir uma lista de candidatos informações de movimento incluindo, por exemplo, candidatos HMVP, de acordo com qualquer uma ou todas as técnicas desta divulgação, selecionar um índice de candidato que representa um preditor para as informações de movimento do bloco e codificar por entropia o índice de candidato. De acordo com as técnicas desta divulgação, o codificador de vídeo 200 pode redefinir um armazenador temporário de MVP antes de usar o armazenador temporário de MVP para armazenar informações de movimento de uma linha de CTU correspondente. Em alguns exemplos, cada linha de CTU pode ter seu próprio armazenador temporário de MVP ou um armazenador temporário de MVP pode ser usado para múltiplas linhas de CTU. Além disso, o codificador de vídeo 200 pode armazenar múltiplos tipos de informações de movimento em armazenadores temporários de MVP, por exemplo, o mesmo armazenador temporário ou diferentes armazenadores temporários de modelo de movimento respectivos. O codificador de vídeo 200 pode codificar informações de movimento de um bloco atual usando preditores de vetor de movimento selecionados a partir de dados do armazenador temporário de MVP. O codificador de vídeo 200 pode então emitir os dados codificados de entropia do bloco (360), por exemplo, incluindo os dados para os coeficientes e as informações de movimento, tal como o índice de candidato.
[0191] Desta forma, o método da Figura 16 representa um exemplo de um método incluindo armazenar informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário de memória de preditor de vetor de movimento (MVP) histórico; redefinir um segundo armazenador temporário de MVP de histórico da memória; e após redefinir o segundo armazenador temporário de MVP de histórico, armazenar informações de movimento para uma segunda linha de CTU da imagem no segundo armazenador temporário de MVP de histórico, a segunda linha de CTU sendo diferente da primeira linha de CTU.
[0192] O método da Figura 16 também representa um exemplo de um método incluindo armazenar informações de movimento em um armazenador temporário de histórico de preditor de vetor de movimento (MVP); armazenar um tipo diferente de informação de movimento no armazenador temporário de MVP de histórico; e codificar informações de movimento de um bloco de dados de vídeo usando informações de movimento do armazenador temporário de MVP de histórico.
[0193] O método da Figura 16 também representa um exemplo de um método incluindo armazenar uma pluralidade de diferentes tipos de informações de movimento nos respectivos armazenadores temporários de preditor de vetor de movimento (MVP) de histórico.
[0194] Figura 17 é um fluxograma que ilustra um método exemplar para decodificar um bloco atual de dados de vídeo de acordo com as técnicas desta divulgação. O bloco atual pode compreender uma CU atual. Embora descritos em relação ao decodificador de vídeo 300 (Figuras 1 e 15), deve ser entendido que outros dispositivos podem ser configurados para executar um método semelhante ao da Figura 17.
[0195] O decodificador de vídeo 300 pode receber dados codificados por entropia para o bloco atual, como informações de predição codificadas por entropia e dados codificados por entropia para coeficientes de um bloco residual correspondente ao bloco atual (370). Conforme discutido acima, as informações de predição codificadas por entropia podem incluir, por exemplo, um índice de candidato em uma lista de candidatos, que pode incluir candidatos HMVP de acordo com as técnicas desta divulgação. O decodificador de vídeo 300 pode decodificar por entropia os dados codificados por entropia para determinar as informações de predição para o bloco atual e para reproduzir os coeficientes do bloco residual (372). O decodificador de vídeo 300 pode predizer o bloco atual (374), por exemplo, usando o modo de interpredição conforme indicado pela informação de predição para o bloco atual, para calcular um bloco de predição para o bloco atual.
[0196] Em particular, o decodificador de vídeo 300 pode construir uma lista de candidatos incluindo os candidatos HMVP conforme discutido acima e, em seguida, determinar um candidato da lista de candidatos para usar como um preditor de vetor de movimento para o bloco atual usando o índice de candidato decodificado. De acordo com as técnicas desta divulgação, o decodificador de vídeo 300 pode redefinir um armazenador temporário de MVP antes de usar o armazenador temporário de MVP para armazenar informações de movimento de uma linha de CTU correspondente. Em alguns exemplos, cada linha de CTU pode ter seu próprio armazenador temporário de MVP ou um armazenador temporário de MVP pode ser usado para múltiplas linhas de CTU. Além disso, o decodificador de vídeo 300 pode armazenar múltiplos tipos de informações de movimento em armazenadores temporários de MVP, por exemplo, o mesmo armazenador temporário ou diferentes armazenadores temporários de modelo de movimento respectivos. O decodificador de vídeo 300 pode selecionar usando preditores de vetor de movimento a partir de dados do armazenador temporário de MVP.
[0197] O decodificador de vídeo 300 pode então reconstruir um vetor de movimento para o bloco atual usando o preditor de vetor de movimento e, em seguida, predizer o bloco atual usando o vetor de movimento para gerar um bloco de predição. O decodificador de vídeo 300 pode, então, inverter a varredura dos coeficientes reproduzidos (376), para criar um bloco de coeficientes de transformada quantizados. O decodificador de vídeo 300 pode, então, quantizar e transformar inversamente os coeficientes para produzir um bloco residual (378). O decodificador de vídeo
300 pode, finalmente, decodificar o bloco atual combinando o bloco de predição e o bloco residual (380).
[0198] Desta forma, o método da Figura 17 representa um exemplo de um método incluindo armazenar informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário de memória de preditor de vetor de movimento (MVP) histórico; redefinir um segundo armazenador temporário de MVP de histórico da memória; e após redefinir o segundo armazenador temporário de MVP de histórico, armazenar informações de movimento para uma segunda linha de CTU da imagem no segundo armazenador temporário de MVP de histórico, a segunda linha de CTU sendo diferente da primeira linha de CTU.
[0199] O método da Figura 17 também representa um exemplo de um método incluindo armazenar informações de movimento em um armazenador temporário de histórico de preditor de vetor de movimento (MVP); armazenar um tipo diferente de informação de movimento no armazenador temporário de MVP de histórico; e codificar informações de movimento de um bloco de dados de vídeo usando informações de movimento do armazenador temporário de MVP de histórico.
[0200] O método da Figura 17 também representa um exemplo de um método incluindo armazenar uma pluralidade de diferentes tipos de informações de movimento nos respectivos armazenadores temporários de preditor de vetor de movimento (MVP) de histórico.
[0201] A Figura 18 é um fluxograma que ilustra um método exemplar de codificação (codificação ou decodificação) de dados de vídeo de acordo com as técnicas desta divulgação. Por exemplo, o método da Figura 18 pode ser realizado durante a etapa 350 da Figura 16 ou etapa 374 da Figura 17. Para fins de exemplo e explicação, o método da Figura 18 é explicado em relação ao decodificador de vídeo 300, embora o codificador de vídeo 200 também possa executar este ou um método semelhante.
[0202] O decodificador de vídeo 300 pode codificar blocos de uma primeira linha de CTU de uma imagem (390), por exemplo, usando intra ou interpredição. O decodificador de vídeo 300 armazena informações de movimento de uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário (392), por exemplo, de DPB 314. O decodificador de vídeo 300 pode usar as informações de movimento do primeiro armazenador temporário para codificar as informações de movimento usadas durante a codificação interpredição. Em alguns exemplos, um primeiro segmento de um processo de codificação de vídeo realizado pelo decodificador de vídeo 300 pode codificar a primeira linha de CTU.
[0203] O decodificador de vídeo 300 também pode redefinir um segundo armazenador temporário (394), por exemplo, do DPB 314. O segundo armazenador temporário pode ser o mesmo que o primeiro armazenador temporário ou um armazenador temporário diferente. O decodificador de vídeo 300 também pode codificar blocos de uma segunda linha de CTU (396). O decodificador de vídeo 300 pode armazenar informações de movimento da segunda linha de CTU no segundo armazenador temporário (398). Em alguns exemplos, uma segunda tarefa do processo de codificação de vídeo realizado pelo decodificador de vídeo 300 pode codificar a segunda linha de CTU, em que a segunda tarefa é diferente da primeira tarefa.
[0204] Desta forma, o método da Figura 18 representa um exemplo de um método incluindo armazenar informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário de memória de preditor de vetor de movimento (MVP) histórico; redefinir um segundo armazenador temporário de MVP de histórico da memória; e após redefinir o segundo armazenador temporário de MVP de histórico, armazenar informações de movimento para uma segunda linha de CTU da imagem no segundo armazenador temporário de MVP de histórico, a segunda linha de CTU sendo diferente da primeira linha de CTU.
[0205] Deve-se reconhecer que, dependendo do exemplo, certos atos ou eventos de qualquer uma das técnicas aqui descritas podem ser realizados em uma sequência diferente, podem ser adicionados, mesclados ou deixados de fora completamente (por exemplo, nem todos os atos descritos ou eventos são necessários para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, por meio de processamento multitarefa, processamento de interrupção ou múltiplos processadores, em vez de sequencialmente.
[0206] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. A mídia legível por computador pode incluir mídia de armazenamento legível por computador, que corresponde a um meio tangível, tal como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta forma, a mídia legível por computador geralmente pode corresponder a (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) um meio de comunicação, como um sinal ou onda de portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[0207] A título de exemplo, e não como limitação, tal mídia de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser usado para armazenar o código do programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada meio legível por computador. Por exemplo, se as instruções são transmitidas de um site, servidor ou outra fonte remota usando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, estão incluídos na definição de meio. Deve ser entendido, no entanto, que os meios de armazenamento legíveis por computador e os meios de armazenamento de dados não incluem conexões, ondas de portadora, sinais ou outros meios transitórios, mas em vez disso são direcionados para meios de armazenamento tangíveis não transitórios. Disco e disquete, conforme usado aqui, inclui disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disco flexível e disco Blu-ray, onde disquetes geralmente reproduzem dados magneticamente, enquanto discos reproduzem dados opticamente com lasers. As combinações dos itens acima também devem ser incluídas no escopo da mídia legível por computador.
[0208] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs) ou outro equivalente integrado ou conjunto de circuitos de lógica discreta. Consequentemente, os termos "processador" e "conjunto de circuitos de processamento", conforme usados neste documento, podem se referir a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser provida em módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos de lógica.
[0209] As técnicas desta divulgação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar os aspectos funcionais dos dispositivos configurados para executar as técnicas divulgadas, mas não necessariamente requerem a realização por diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou providas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com software e/ou firmware adequados.
[0210] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das seguintes reivindicações.

Claims (50)

REIVINDICAÇÕES
1. Método de codificação de dados de vídeo, o método compreendendo: armazenar informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário de preditor de vetor de movimento (MVP) de histórico de uma memória; redefinir um segundo armazenador temporário de MVP de histórico da memória; e após redefinir o segundo armazenador temporário de MVP de histórico, armazenar informações de movimento para uma segunda linha de CTU da imagem no segundo armazenador temporário de MVP de histórico, a segunda linha de CTU sendo diferente da primeira linha de CTU.
2. Método, de acordo com a reivindicação 1, em que o segundo armazenador temporário de MVP de histórico é diferente do primeiro armazenador temporário de MVP de histórico, em que armazenar as informações de movimento para a primeira linha de CTU compreende armazenar, por uma primeira tarefa de um processo de codificação de vídeo, as informações de movimento para a primeira linha de CTU, e em que armazenar as informações de movimento para a segunda linha de CTU compreende armazenar, por uma segunda tarefa do processo de codificação de vídeo, as informações de movimento para a segunda linha de CTU, a primeira linha sendo diferente da segunda linha.
3. Método, de acordo com a reivindicação 1, em que o segundo armazenador temporário de MVP de histórico é o mesmo que o primeiro armazenador temporário de MVP de histórico, e em que redefinir o segundo armazenador temporário de MVP de histórico compreende redefinir o segundo armazenador temporário de MVP de histórico em resposta ao processamento de um início da segunda linha de CTU durante o processamento paralelo de frente de onda.
4. Método, de acordo com a reivindicação 1, em que armazenar as informações de movimento para a primeira linha de CTU compreende armazenar apenas vetores de movimento exclusivos dentro do primeiro armazenador temporário de MVP de histórico para o primeiro armazenador temporário de MVP de histórico, e em que armazenar as informações de movimento para a segunda linha de CTU compreende armazenar apenas vetores de movimento exclusivos dentro do segundo armazenador temporário de MVP de histórico para o segundo armazenador temporário de MVP de histórico.
5. Método, de acordo com a reivindicação 1, que adicionalmente compreende: quando o primeiro armazenador temporário de MVP de histórico ficar cheio, remover um ou mais vetores de movimento inseridos mais antigos do primeiro armazenador temporário de MVP de histórico de acordo com uma regra de primeiro a entrar, primeiro a sair (FIFO); e quando o segundo armazenador temporário de MVP de histórico ficar cheio, remover um ou mais vetores de movimento mais antigos inseridos do segundo armazenador temporário de MVP de histórico de acordo com a regra FIFO.
6. Método, de acordo com a reivindicação 1, em que armazenar informações de movimento para a primeira linha de CTU compreende armazenar informações de movimento para cada um de uma pluralidade de diferentes tipos de modelos de movimento para respectivos armazenadores temporários de MVP de histórico diferentes de uma primeira pluralidade de armazenadores temporários de MVP de histórico, incluindo o primeiro armazenador temporário de MVP de histórico; e em que armazenar as informações de movimento para a segunda linha de CTU compreende armazenar informações de movimento para cada um da pluralidade de diferentes tipos de modelos de movimento para respectivos armazenadores temporários de MVP de histórico diferentes de uma segunda pluralidade de armazenadores temporários de MVP de histórico, incluindo o segundo armazenador temporário de MVP de histórico.
7. Método, de acordo com a reivindicação 6, em que a pluralidade de diferentes tipos de modelos de movimento compreende um ou mais de modelos de movimento afins, informações de movimento de modo de cópia intrabloco, informações de movimento de compensação de iluminação local, predição de vetor de movimento de sub- bloco (MVP), ou predição de movimento temporal.
8. Método, de acordo com a reivindicação 1, que adicionalmente compreende gerar um MVP sintético a partir de dois ou mais MVPs em um ou mais armazenadores temporários de MVP de histórico.
9. Método, de acordo com a reivindicação 8, em que os dois ou mais MVPs têm diferentes tipos de informação de movimento compreendendo dois ou mais de informação de movimento codificado, informação de movimento de modelo de movimento afim, informação de movimento de modo de cópia intrabloco, informação de movimento de compensação de iluminação local, informações de movimento de MVP de sub- bloco, informações de movimento de preditor de movimento temporal, informações de vetor de movimento sintético com base em uma informação de movimento de MVP, informações de movimento de MVP espacial ou informações de movimento de MVP temporal.
10. Método, de acordo com a reivindicação 1, em que armazenar as informações de movimento para a primeira linha de CTU adicionalmente compreende preencher previamente o primeiro armazenador temporário de MVP de histórico com a primeira informação de movimento definidas previamente, em que a primeira informação de movimento definidas previamente compreendem um primeiro vetor de movimento zero com um primeiro índice de quadro de referência e primeira direção de interpredição, e em que armazenar as informações de movimento para a segunda linha de CTU adicionalmente compreende preencher previamente o segundo armazenador temporário de MVP de histórico com a segunda informação de movimento definida previamente, em que a segunda informação de movimento definida previamente compreende um segundo vetor de movimento zero com um segundo índice de quadro de referência e segunda direção de interpredição.
11. Método, de acordo com a reivindicação 1, em que uma imagem incluindo a primeira linha de CTU e a segunda linha de CTU está em uma primeira camada temporal, em que armazenar as informações de movimento para a primeira linha de CTU adicionalmente compreende preencher previamente o primeiro armazenador temporário de MVP de histórico com a primeira informação de movimento de uma ou mais imagens codificadas na primeira camada temporal ou uma ou mais camadas temporais abaixo da primeira camada temporal, e em que armazenar as informações de movimento para a segunda linha de CTU adicionalmente compreende preencher previamente o segundo armazenador temporário de MVP de histórico com as segundas informações de movimento da segunda uma ou mais imagens codificadas na primeira camada temporal ou uma ou mais camadas temporais abaixo da primeira camada temporal, o método adicionalmente compreende escalonar pelo menos uma da primeira informação de movimento ou as segundas informações de movimento de acordo com diferenças temporais.
12. Método, de acordo com a reivindicação 1, que adicionalmente compreende: inicializar o primeiro armazenador temporário de MVP de histórico com um primeiro vetor de movimento zero tendo um primeiro índice de quadro de referência e uma primeira direção de interpredição; e inicializar o segundo armazenador temporário de MVP de histórico com um segundo vetor de movimento zero tendo um segundo índice de quadro de referência e uma segunda direção de interpredição.
13. Método, de acordo com a reivindicação 1, em que a segunda linha de CTU está diretamente abaixo da primeira linha de CTU, o método adicionalmente compreendendo inicializar ou modificar o segundo armazenador temporário de MVP de histórico usando o primeiro armazenador temporário de MVP de histórico.
14. Método, de acordo com a reivindicação 1, que adicionalmente compreende: unidades de codificação de decodificação (CUs) de CTUs da primeira linha de CTU usando o primeiro armazenador temporário de MVP de histórico; e decodificar CUs de CTUs da segunda linha de CTU usando o segundo armazenador temporário de MVP de histórico.
15. Método, de acordo com a reivindicação 1, que adicionalmente compreende: Codificar unidades de codificação (CUs) de CTUs da primeira linha de CTU usando o primeiro armazenador temporário de MVP de histórico; e codificar CUs de CTUs da segunda linha de CTU usando o segundo armazenador temporário de MVP de histórico.
16. Método, de acordo com a reivindicação 1, que adicionalmente compreende: codificar a primeira informação de movimento de unidades de codificação (CUs) de CTUs da primeira linha de CTU usando o primeiro armazenador temporário de MVP de histórico, em que codificar a primeira informação de movimento compreende codificar a primeira informação de movimento usando AMVP, mesclagem ou modo afim; e codificar a segunda informação de movimento de CUs de CTUs da segunda linha de CTU usando o segundo armazenador temporário de MVP de histórico, em que codificar a segunda informação de movimento compreende codificar a segunda informação de movimento usando AMVP, mesclagem ou modo afim.
17. Método, de acordo com a reivindicação 1, que adicionalmente compreende: adicionar um ou mais vetores de movimento a um ou mais vetores de movimento da primeira informação de movimento unidirecional no primeiro armazenador temporário de MVP de histórico para converter a primeira informação de movimento unidirecional em primeiras informações de movimento bidirecional, e adicionar um ou mais vetores de movimento ao segundo um ou mais vetores de movimento da segunda informação de movimento unidirecional no segundo armazenador temporário de MVP de histórico para converter a segunda informação de movimento unidirecional em segunda informação de movimento bidirecional.
18. Método, de acordo com a reivindicação 1, em que armazenar as informações de movimento para a primeira linha de CTU compreende armazenar apenas vetores de movimento que diferem de outros vetores de movimento dentro do primeiro armazenador temporário de MVP de histórico por um limite para o primeiro armazenador temporário de MVP de histórico, e em que armazenar as informações de movimento para a primeira linha de CTU compreende armazenar apenas vetores de movimento que diferem de outros vetores de movimento dentro do segundo armazenador temporário de MVP de histórico pelo limite para o segundo armazenador temporário de MVP de histórico.
19. Método, de acordo com a reivindicação 1,
em que armazenar as informações de movimento para a primeira linha de CTU compreende armazenar dados que indicam se os vetores de movimento das informações de movimento para a primeira linha de CTU estão associados a unidades de codificação (CUs) codificadas de modo de mesclagem ou CUs codificadas por AMVP, e em que armazenar as informações de movimento para a primeira linha de CTU compreende armazenar dados indicando se os vetores de movimento das informações de movimento para a segunda linha de CTU estão associados a CUs codificadas em modo de mesclagem ou CUs codificadas por AMVP.
20. Dispositivo para codificação de dados de vídeo, o dispositivo compreendendo: uma memória configurada para armazenar dados de vídeo; e uma ou mais unidades de processamento implementadas em conjunto de circuitos e configuradas para: armazenar informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário de preditor de vetor de movimento (MVP) de histórico da memória; redefinir um segundo armazenador temporário de MVP de histórico da memória; e após redefinir o segundo armazenador temporário de MVP de histórico, armazene as informações de movimento para uma segunda linha de CTU da imagem no segundo armazenador temporário de MVP de histórico, a segunda linha de CTU sendo diferente da primeira linha de CTU.
21. Dispositivo, de acordo com a reivindicação 20, em que o segundo armazenador temporário de MVP de histórico é diferente do primeiro armazenador temporário de MVP de histórico, em que um ou mais processadores executam uma primeira tarefa de um processo de codificação de vídeo para armazenar as informações de movimento para a primeira linha de CTU, e em que um ou mais processadores executam uma segunda tarefa do processo de codificação de vídeo para armazenar as informações de movimento para a segunda linha de CTU, a primeira tarefa sendo diferente da segunda tarefa.
22. Dispositivo, de acordo com a reivindicação 20, em que o segundo armazenador temporário de MVP de histórico é o mesmo que o primeiro armazenador temporário de MVP de histórico, e em que para redefinir o segundo armazenador temporário de MVP de histórico, uma ou mais unidades de processamento são configuradas para redefinir o segundo armazenador temporário de MVP de histórico em resposta ao processamento de um início da segunda linha de CTU durante o processamento paralelo de frente de onda.
23. Dispositivo, de acordo com a reivindicação 20, em que uma ou mais unidades de processamento são configuradas para armazenar apenas vetores de movimento exclusivos dentro do primeiro armazenador temporário de MVP de histórico para o primeiro armazenador temporário de MVP de histórico, e em que uma ou mais unidades de processamento são configuradas para armazenar apenas vetores de movimento exclusivos dentro do segundo armazenador temporário de MVP de histórico para o segundo armazenador temporário de MVP de histórico.
24. Dispositivo, de acordo com a reivindicação 20, em que uma ou mais unidades de processamento são adicionalmente configuradas para: quando o primeiro armazenador temporário de MVP de histórico ficar cheio, remover um ou mais vetores de movimento inseridos mais antigos do primeiro armazenador temporário de MVP de histórico de acordo com uma regra primeiro a entrar, primeiro a sair (FIFO); e quando o segundo armazenador temporário de MVP de histórico ficar cheio, remover um ou mais vetores de movimento mais antigos inseridos do segundo armazenador temporário de MVP de histórico de acordo com a regra FIFO.
25. Dispositivo, de acordo com a reivindicação 20, em que uma ou mais unidades de processamento são configuradas para armazenar informações de movimento para cada um de uma pluralidade de diferentes tipos de modelos de movimento para respectivos armazenadores temporários de MVP de histórico diferentes de uma primeira pluralidade de armazenadores temporários de MVP de histórico incluindo o primeiro armazenador temporário de MVP de histórico; e em que uma ou mais unidades de processamento são configuradas para armazenar informações de movimento para cada um da pluralidade de diferentes tipos de modelos de movimento para respectivos armazenadores temporários de MVP de histórico diferentes de uma segunda pluralidade de armazenadores temporários de MVP de histórico incluindo o segundo armazenador temporário de MVP de histórico.
26. Dispositivo, de acordo com a reivindicação 25, em que a pluralidade de diferentes tipos de modelos de movimento compreende um ou mais de modelos de movimento afins, informações de movimento do modo de cópia intrabloco, informações de movimento de compensação de iluminação local, predição de vetor de movimento de sub- bloco (MVP), ou predição de movimento temporal.
27. Dispositivo, de acordo com a reivindicação 20, em que uma ou mais unidades de processamento são adicionalmente configuradas para gerar um MVP sintético a partir de dois ou mais MVPs em um ou mais armazenadores temporários de MVP de histórico.
28. Dispositivo, de acordo com a reivindicação 27, em que os dois ou mais MVPs têm diferentes tipos de informações de movimento compreendendo duas ou mais de informações de movimento codificadas, informações de movimento do modelo de movimento afim, informações de movimento do modo de cópia intrabloco, informações de movimento de compensação de iluminação local, informações de movimento de MVP de sub-bloco, informações de movimento de preditor de movimento temporal, informações de vetor de movimento sintético com base em uma informação de movimento de MVP, informações de movimento de MVP espacial ou informações de movimento de MVP temporal.
29. Dispositivo, de acordo com a reivindicação 20, que adicionalmente compreende um display configurado para exibir os dados de vídeo.
30. Dispositivo, de acordo com a reivindicação 20, que adicionalmente compreende uma câmera configurada para capturar os dados de vídeo.
31. Dispositivo, de acordo com a reivindicação 20, em que o dispositivo compreende um ou mais dentre uma câmera, um computador, um dispositivo móvel, um dispositivo de receptor de transmissão ou um decodificador.
32. Dispositivo, de acordo com a reivindicação 20, em que o dispositivo compreende pelo menos um de: um circuito integrado; um microprocessador; ou um dispositivo de comunicação sem fio.
33. Meio de armazenamento legível por computador tendo instruções armazenadas no mesmo que, quando executadas, fazem com que um processador: armazene informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário de preditor de vetor de movimento (MVP) de histórico de uma memória; redefina um segundo armazenador temporário de MVP de histórico da memória; e após redefinir o segundo armazenador temporário de MVP de histórico, armazene as informações de movimento para uma segunda linha de CTU da imagem no segundo armazenador temporário de MVP de histórico, a segunda linha de CTU sendo diferente da primeira linha de CTU.
34. Meio de armazenamento legível por computador, de acordo com a reivindicação 33, em que o segundo armazenador temporário de MVP de histórico é diferente do primeiro armazenador temporário de MVP de histórico, em que as instruções que fazem com que o processador armazene as informações de movimento para a primeira linha de CTU compreendem instruções que fazem com que o processador execute uma primeira tarefa de um processo de codificação de vídeo para armazenar as informações de movimento para a primeira linha de CTU, e em que as instruções que fazem com que o processador armazene as informações de movimento para a segunda linha de CTU compreendem instruções que fazem com que o processador execute uma segunda tarefa do processo de codificação de vídeo para armazenar as informações de movimento para a segunda linha de CTU, a primeira linha sendo diferente da segunda linha.
35. Meio de armazenamento legível por computador, de acordo com a reivindicação 33, em que o segundo armazenador temporário de MVP de histórico é o mesmo que o primeiro armazenador temporário de MVP de histórico e em que as instruções que fazem com que o processador reinicie o segundo armazenador temporário de MVP de histórico compreendem instruções que fazem com que o processador redefina o segundo armazenador temporário de MVP de histórico em resposta ao processamento de um início da segunda linha de CTU durante o processamento paralelo de frente de onda.
36. Meio de armazenamento legível por computador, de acordo com a reivindicação 33, em que as instruções que fazem com que o processador armazene as informações de movimento para a primeira linha de CTU compreendem instruções que fazem com que o processador armazene apenas vetores de movimento exclusivos dentro do primeiro armazenador temporário de MVP de histórico para o primeiro armazenador temporário de MVP de histórico, e em que as instruções que fazem com que o processador para armazenar a informação de movimento para a segunda linha de CTU compreendem instruções que fazem com que o processador armazene apenas vetores de movimento exclusivos dentro do segundo armazenador temporário de MVP de histórico para o segundo armazenador temporário de MVP de histórico.
37. Meio de armazenamento legível por computador, de acordo com a reivindicação 33, que adicionalmente compreende instruções que fazem com que o processador: quando o primeiro armazenador temporário de MVP de histórico ficar cheio, remova um ou mais vetores de movimento inseridos mais antigos do primeiro armazenador temporário de MVP de histórico de acordo com uma regra primeiro a entrar, primeiro a sair (FIFO); e quando o segundo armazenador temporário de MVP de histórico ficar cheio, remova um ou mais vetores de movimento mais antigos inseridos do segundo armazenador temporário de MVP de histórico de acordo com a regra FIFO.
38. Meio de armazenamento legível por computador, de acordo com a reivindicação 33, em que as instruções que fazem com que o processador armazene as informações de movimento para a primeira linha de CTU compreendem instruções que fazem com que o processador armazene informações de movimento para cada um de uma pluralidade de diferentes tipos de modelos de movimento para respectivos armazenadores temporários de MVP de histórico diferentes de uma primeira pluralidade de armazenadores temporários de histórico de MVP, incluindo o primeiro armazenador temporário de histórico de MVP; e em que as instruções que fazem com que o processador armazene as informações de movimento para a segunda linha de CTU compreendem instruções que fazem com que o processador armazene informações de movimento para cada um da pluralidade de diferentes tipos de modelos de movimento para respectivos armazenadores temporários de MVP de histórico diferentes de uma segunda pluralidade de armazenadores temporários de histórico de MVP incluindo o segundo armazenador temporário de histórico de MVP.
39. Meio de armazenamento legível por computador, de acordo com a reivindicação 38, em que a pluralidade de diferentes tipos de modelos de movimento compreende um ou mais de modelo de movimento afim, informações de movimento do modo de cópia intrabloco, informações de movimento de compensação de iluminação local, predição de vetor de movimento de sub-bloco (MVP) ou predição de movimento temporal.
40. Meio de armazenamento legível por computador, de acordo com a reivindicação 33, que adicionalmente compreende instruções que fazem com que o processador gere um MVP sintético de dois ou mais MVPs em um ou mais armazenadores temporários de MVP de histórico.
41. Meio de armazenamento legível por computador, de acordo com a reivindicação 40, em que os dois ou mais MVPs têm diferentes tipos de informações de movimento que compreendem duas ou mais de informações de movimento codificadas, informações de movimento de modelo de movimento afim, informações de movimento do modo de cópia intrabloco, informações de movimento de compensação de iluminação local, informações de movimento de MVP de sub-
bloco, informações de movimento de preditor de movimento temporal, informações de vetor de movimento sintético baseadas em uma informação de movimento de MVP, informações de movimento de MVP espacial ou informações de movimento de MVP temporal.
42. Dispositivo para codificação de dados de vídeo, o dispositivo compreendendo: uma memória configurada para armazenar dados de vídeo; meios para armazenar informações de movimento para uma primeira linha de unidade de árvore de codificação (CTU) de uma imagem em um primeiro armazenador temporário de preditor de vetor de movimento (MVP) de histórico da memória; meios para redefinir um segundo armazenador temporário de MVP de histórico da memória; e meios para armazenar informações de movimento para uma segunda linha de CTU da imagem no segundo armazenador temporário de MVP histórico após redefinir o segundo armazenador temporário de MVP histórico, a segunda linha de CTU sendo diferente da primeira linha de CTU.
43. Dispositivo, de acordo com a reivindicação 42, em que o segundo armazenador temporário de MVP de histórico é diferente do primeiro armazenador temporário de MVP de histórico, em que os meios para armazenar as informações de movimento para a primeira linha de CTU compreendem um primeiro segmento de um processo de codificação de vídeo, e em que os meios para armazenar as informações de movimento para a segunda linha de CTU compreendem uma segunda tarefa do processo de codificação de vídeo.
44. Dispositivo, de acordo com a reivindicação 42, em que o segundo armazenador temporário de MVP de histórico é o mesmo que o primeiro armazenador temporário de MVP de histórico, e em que os meios para redefinir o segundo armazenador temporário de MVP de histórico compreendem meios para redefinir o segundo armazenador temporário de MVP de histórico em resposta ao processamento de um início da segunda linha de CTU durante o processamento paralelo de frente de onda.
45. Dispositivo, de acordo com a reivindicação 42, em que os meios para armazenar as informações de movimento para a primeira linha de CTU compreendem meios para armazenar apenas vetores de movimento exclusivos dentro do primeiro armazenador temporário de MVP de histórico para o primeiro armazenador temporário de MVP de histórico, e em que os meios para armazenar as informações de movimento para a segunda linha de CTU compreendem meios para armazenar apenas vetores de movimento exclusivos dentro do segundo armazenador temporário de MVP de histórico para o segundo armazenador temporário de MVP de histórico.
46. Dispositivo, de acordo com a reivindicação 42, que adicionalmente compreende: meios para remover, quando o primeiro armazenador temporário de MVP de histórico ficar cheio, um ou mais vetores de movimento inseridos mais antigos do primeiro armazenador temporário de MVP de histórico de acordo com uma regra primeiro a entrar, primeiro a sair (FIFO); e meios para remover, quando o segundo armazenador temporário de MVP de histórico ficar cheio, um ou mais vetores de movimento mais antigos inseridos do segundo armazenador temporário de MVP de histórico de acordo com a regra FIFO.
47. Dispositivo, de acordo com a reivindicação 42, em que os meios para armazenar as informações de movimento para a primeira linha de CTU compreendem meios para armazenar informações de movimento para cada um de uma pluralidade de diferentes tipos de modelos de movimento para respectivos armazenadores temporários de MVP de histórico diferentes de uma primeira pluralidade de armazenadores temporários de MVP de histórico, incluindo o primeiro MVP de histórico amortecedor; e em que os meios para armazenar as informações de movimento para a segunda linha de CTU compreendem meios para armazenar informações de movimento para cada um da pluralidade de diferentes tipos de modelos de movimento para respectivos armazenadores temporários de MVP de histórico diferentes de uma segunda pluralidade de armazenadores temporários de MVP de histórico, incluindo o segundo MVP de histórico amortecedor.
48. Dispositivo, de acordo com a reivindicação 47, em que a pluralidade de diferentes tipos de modelos de movimento compreende um ou mais de modelos de movimento afins, informações de movimento do modo de cópia intrabloco, informações de movimento de compensação de iluminação local, predição de vetor de movimento de sub- bloco (MVP), ou predição de movimento temporal.
49. Dispositivo, de acordo com a reivindicação 42, que adicionalmente compreende meios para gerar um MVP sintético a partir de dois ou mais MVPs em um ou mais armazenadores temporários de MVP de histórico.
50. Dispositivo, de acordo com a reivindicação 49, em que os dois ou mais MVPs têm diferentes tipos de informações de movimento compreendendo duas ou mais de informações de movimento codificadas, informações de movimento do modelo de movimento afim, informações de movimento do modo de cópia intrabloco, informações de movimento de compensação de iluminação local, informações de movimento de MVP de sub-bloco, informações de movimento do preditor de movimento temporal, informações de vetor de movimento sintético com base em uma informação de movimento de MVP, informações de movimento de MVP espacial ou informações de movimento de MVP temporal.
BR112021000002-0A 2018-07-10 2019-07-10 Mvps não adjacentes baseados em múltiplos históricos para processamento de frente de onda de código de vídeo BR112021000002A2 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201862696281P 2018-07-10 2018-07-10
US62/696,281 2018-07-10
US201862713944P 2018-08-02 2018-08-02
US62/713,944 2018-08-02
US16/506,720 US11606575B2 (en) 2018-07-10 2019-07-09 Multiple history based non-adjacent MVPs for wavefront processing of video coding
US16/506,720 2019-07-09
PCT/US2019/041241 WO2020014389A1 (en) 2018-07-10 2019-07-10 MULTIPLE HISTORY BASED NON-ADJACENT MVPs FOR WAVEFRONT PROCESSING OF VIDEO CODING

Publications (1)

Publication Number Publication Date
BR112021000002A2 true BR112021000002A2 (pt) 2021-03-30

Family

ID=69138582

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021000002-0A BR112021000002A2 (pt) 2018-07-10 2019-07-10 Mvps não adjacentes baseados em múltiplos históricos para processamento de frente de onda de código de vídeo

Country Status (17)

Country Link
US (2) US11606575B2 (pt)
EP (1) EP3821604A1 (pt)
JP (2) JP7314248B2 (pt)
KR (1) KR20210027363A (pt)
CN (2) CN112369031B (pt)
AU (2) AU2019302660B2 (pt)
BR (1) BR112021000002A2 (pt)
CA (1) CA3105379A1 (pt)
CL (1) CL2021000026A1 (pt)
CO (1) CO2021000057A2 (pt)
IL (2) IL279538B2 (pt)
MX (1) MX2021000073A (pt)
PH (1) PH12020552224A1 (pt)
SG (1) SG11202012683VA (pt)
TW (1) TWI823968B (pt)
WO (1) WO2020014389A1 (pt)
ZA (1) ZA202100877B (pt)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7104186B2 (ja) 2018-06-05 2022-07-20 北京字節跳動網絡技術有限公司 Ibcとatmvpとの間でのインタラクション
CN110636298B (zh) 2018-06-21 2022-09-13 北京字节跳动网络技术有限公司 对于Merge仿射模式和非Merge仿射模式的统一约束
EP4307671A3 (en) 2018-06-21 2024-02-07 Beijing Bytedance Network Technology Co., Ltd. Sub-block mv inheritance between color components
CN114900694A (zh) 2018-06-29 2022-08-12 抖音视界(北京)有限公司 哪个查找表需要更新或不更新
WO2020003282A1 (en) 2018-06-29 2020-01-02 Beijing Bytedance Network Technology Co., Ltd. Managing motion vector predictors for video coding
EP3791586A1 (en) * 2018-06-29 2021-03-17 Beijing Bytedance Network Technology Co. Ltd. Concept of using one or multiple look up tables to store motion information of previously coded in order and use them to code following blocks
JP7460617B2 (ja) 2018-06-29 2024-04-02 北京字節跳動網絡技術有限公司 Lut更新条件
EP3794825A1 (en) 2018-06-29 2021-03-24 Beijing Bytedance Network Technology Co. Ltd. Update of look up table: fifo, constrained fifo
BR112021000004A8 (pt) * 2018-07-06 2023-02-07 Mediatek Inc Informações de movimento herdadas para decodificar uma unidade de codificação atual em um sistema de codificação de vídeo
US10440378B1 (en) * 2018-07-17 2019-10-08 Tencent America LLC Method and apparatus for history-based motion vector prediction with parallel processing
KR102286460B1 (ko) * 2018-07-18 2021-08-04 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치
KR102542433B1 (ko) * 2018-08-10 2023-06-13 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 처리 방법, 비디오 처리 장치, 인코더, 디코더, 매체 및 컴퓨터 프로그램
MX2021001670A (es) 2018-08-13 2021-04-19 Lg Electronics Inc Metodo de inter-prediccion basado en el vector de movimiento basado en el historial, y dispositivo para el mismo.
US11336914B2 (en) 2018-08-16 2022-05-17 Qualcomm Incorporated History-based candidate list with classification
AU2018217336A1 (en) * 2018-08-17 2020-03-05 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a transformed block of video samples
KR20200030018A (ko) * 2018-09-11 2020-03-19 김기백 인터 예측을 이용한 영상 부호화/복호화 방법 및 장치
US11057636B2 (en) 2018-09-17 2021-07-06 Qualcomm Incorporated Affine motion prediction
WO2020065518A1 (en) * 2018-09-24 2020-04-02 Beijing Bytedance Network Technology Co., Ltd. Bi-prediction with weights in video coding and decoding
CN112997495B (zh) 2018-11-10 2024-02-20 北京字节跳动网络技术有限公司 当前图片参考中的取整
CN118042114A (zh) 2018-12-07 2024-05-14 松下电器(美国)知识产权公司 编码装置、解码装置、编码方法、解码方法和计算机可读取介质
CN112954364A (zh) 2018-12-28 2021-06-11 Jvc建伍株式会社 图像编码装置和方法、图像解码装置和方法
JP7137744B2 (ja) * 2018-12-28 2022-09-15 株式会社Jvcケンウッド 画像復号装置、画像復号方法及び画像復号プログラム
KR102443965B1 (ko) * 2019-01-01 2022-09-19 엘지전자 주식회사 히스토리 기반 모션 벡터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
US11025935B2 (en) * 2019-01-10 2021-06-01 Tencent America LLC Method and apparatus for history based motion information buffer update with parallel processing capability
CN113383554B (zh) 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
CN113302937A (zh) 2019-01-16 2021-08-24 北京字节跳动网络技术有限公司 运动候选推导
KR20220002989A (ko) * 2019-04-25 2022-01-07 오피 솔루션즈, 엘엘씨 픽처 헤더 내의 글로벌 모션 벡터의 시그널링
CN113994682A (zh) * 2019-06-08 2022-01-28 北京字节跳动网络技术有限公司 具有默认参数的基于历史的运动矢量预测
US11394957B2 (en) * 2019-09-23 2022-07-19 Tencent America LLC Constraints on reference sample locations in the dedicated buffer for intra picture block compensation
US11722692B2 (en) * 2019-12-31 2023-08-08 Qualcomm Incorporated History-based motion vector predictor constraint for merge estimation region
US11595694B2 (en) * 2020-04-01 2023-02-28 Tencent America LLC Method and apparatus for video coding
WO2024012045A1 (en) * 2022-07-14 2024-01-18 Mediatek Inc. Methods and apparatus for video coding using ctu-based history-based motion vector prediction tables

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5379070A (en) * 1992-10-02 1995-01-03 Zoran Corporation Parallel encoding/decoding of DCT compression/decompression algorithms
US8204104B2 (en) 2006-03-09 2012-06-19 Sony Corporation Frame rate conversion system, method of converting frame rate, transmitter, and receiver
US9699456B2 (en) 2011-07-20 2017-07-04 Qualcomm Incorporated Buffering prediction data in video coding
CN103959774B (zh) 2011-11-18 2017-11-24 谷歌技术控股有限责任公司 用于高效视频编码的运动信息的有效存储
US8964845B2 (en) * 2011-12-28 2015-02-24 Microsoft Corporation Merge mode for motion information prediction
US20130336405A1 (en) * 2012-06-15 2013-12-19 Qualcomm Incorporated Disparity vector selection in video coding
KR102238567B1 (ko) 2012-09-19 2021-04-08 퀄컴 인코포레이티드 디스패리티 벡터 유도를 위한 화상들의 선택
US20150016503A1 (en) 2013-07-15 2015-01-15 Qualcomm Incorporated Tiles and wavefront processing in multi-layer context
EP3092806A4 (en) 2014-01-07 2017-08-23 Nokia Technologies Oy Method and apparatus for video coding and decoding
US9918098B2 (en) 2014-01-23 2018-03-13 Nvidia Corporation Memory management of motion vectors in high efficiency video coding motion vector prediction
CA2885501C (en) 2014-03-20 2023-12-19 Nanjing Yuyan Information Technology Ltd. Efficient software for transcoding to hevc on multi-core processors
US10291940B2 (en) 2014-05-23 2019-05-14 Qualcomm Incorporated Coding runs with escape in palette-based video coding
JP2017535145A (ja) 2014-09-30 2017-11-24 マイクロソフト テクノロジー ライセンシング,エルエルシー 波面並列処理が可能にされた場合のピクチャ内予測モードに関する規則
US10187653B2 (en) 2015-05-18 2019-01-22 Avago Technologies International Sales Pte. Limited Motor vector prediction using co-located prediction units
US10819997B2 (en) 2016-01-20 2020-10-27 Arris Enterprises Llc Encoding video data according to target decoding device decoding complexity
RU2696551C1 (ru) * 2016-03-15 2019-08-02 МедиаТек Инк. Способ и устройство для кодирования видео с компенсацией аффинного движения
US10560718B2 (en) 2016-05-13 2020-02-11 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding
US20180020228A1 (en) * 2016-07-12 2018-01-18 Mediatek Inc. Video processing system with multiple syntax parsing circuits and/or multiple post decoding circuits
US10511853B2 (en) 2016-11-24 2019-12-17 Ecole De Technologie Superieure Method and system for parallel rate-constrained motion estimation in video coding
US10602180B2 (en) 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
US11451816B2 (en) * 2018-04-24 2022-09-20 Mediatek Inc. Storage of motion vectors for affine prediction
US11095909B2 (en) 2018-06-25 2021-08-17 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
BR112021000004A8 (pt) * 2018-07-06 2023-02-07 Mediatek Inc Informações de movimento herdadas para decodificar uma unidade de codificação atual em um sistema de codificação de vídeo
US10645380B2 (en) * 2018-07-09 2020-05-05 Tencent America LLC Method and apparatus for video coding
US10491902B1 (en) 2018-07-16 2019-11-26 Tencent America LLC Method and apparatus for history-based motion vector prediction
KR102286460B1 (ko) 2018-07-18 2021-08-04 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치

Also Published As

Publication number Publication date
EP3821604A1 (en) 2021-05-19
AU2019302660B2 (en) 2023-07-06
IL279538B1 (en) 2023-09-01
IL279538B2 (en) 2024-01-01
CA3105379A1 (en) 2020-01-16
CO2021000057A2 (es) 2021-04-08
MX2021000073A (es) 2021-03-25
AU2019302660A1 (en) 2021-01-21
JP2023145518A (ja) 2023-10-11
US20220329844A1 (en) 2022-10-13
JP2021530904A (ja) 2021-11-11
TWI823968B (zh) 2023-12-01
PH12020552224A1 (en) 2021-06-28
AU2023236294A1 (en) 2023-10-12
TW202032994A (zh) 2020-09-01
JP7314248B2 (ja) 2023-07-25
SG11202012683VA (en) 2021-01-28
WO2020014389A1 (en) 2020-01-16
IL279538A (en) 2021-01-31
CN112369031B (zh) 2022-12-02
CL2021000026A1 (es) 2021-07-19
US11606575B2 (en) 2023-03-14
CN112369031A (zh) 2021-02-12
CN115811619A (zh) 2023-03-17
IL304948A (en) 2023-10-01
KR20210027363A (ko) 2021-03-10
US20200021839A1 (en) 2020-01-16
ZA202100877B (en) 2022-07-27

Similar Documents

Publication Publication Date Title
BR112021000002A2 (pt) Mvps não adjacentes baseados em múltiplos históricos para processamento de frente de onda de código de vídeo
US11212550B2 (en) History-based motion vector prediction for affine mode
BR112021002219A2 (pt) lista de candidatos baseada em histórico com classificação
BR112021009558A2 (pt) simplificação da predição de vetor de movimento baseada em histórico
BR112021002967A2 (pt) predição de movimento afim
BR112020006588A2 (pt) predição afim em codificação de vídeo
BR112021009606A2 (pt) refinamento de vetor de movimento no lado do decodificador
BR112021009721A2 (pt) informação de movimento triangular para codificação de vídeo
WO2020069329A1 (en) Ultimate motion vector expression with adaptive directional information set
BR112021014603A2 (pt) Geração de lista de preditores de vetor de movimento para modo de cópia de intrabloco em codificação de vídeo
WO2019136220A1 (en) Multiple-model local illumination compensation
BR112021000640A2 (pt) Arredondamento de vetores de movimento para resolução de diferença de vetor de movimento adaptativa e precisão de armazenamento de vetor de movimento aumentada em codificação de vídeo
BR112021009732A2 (pt) padrões de predição de vetor de movimento espaço-temporal para codificação de vídeo
US10958932B2 (en) Inter-prediction coding of video data using generated motion vector predictor list including non-adjacent blocks
BR112020025982A2 (pt) sinalização de preditor de vetor de movimento de unidade de subpredição
BR112021014879A2 (pt) Modo de inter-intraprevisão para dados de vídeo
BR112021009714A2 (pt) redução de bin codificado regular para decodificação de coeficiente usando limite e parâmetro rice
BR112021005354A2 (pt) restrições afins para redução da largura de banda de pior caso na codificação de vídeo
BR112021003869A2 (pt) predição temporal de parâmetros de filtro de loop adaptativo com consumo reduzido de memória para codificação de vídeo
TW202245477A (zh) 幀間預測模式中的模板匹配細化
BR112021004475A2 (pt) restrições para a redução de larlgura de banda no pior caso em codificação de vídeo
RU2800009C2 (ru) Множество основанных на истории несмежных mvp для обработки волнового фронта кодирования видео
TW202410697A (zh) 用於視訊寫碼之波前處理的以多重歷史為基礎的非鄰接之運動向量預測器