BR112019025566A2 - Predição de vetor de movimento - Google Patents

Predição de vetor de movimento Download PDF

Info

Publication number
BR112019025566A2
BR112019025566A2 BR112019025566-4A BR112019025566A BR112019025566A2 BR 112019025566 A2 BR112019025566 A2 BR 112019025566A2 BR 112019025566 A BR112019025566 A BR 112019025566A BR 112019025566 A2 BR112019025566 A2 BR 112019025566A2
Authority
BR
Brazil
Prior art keywords
block
motion vector
adjacent
candidates
mvp
Prior art date
Application number
BR112019025566-4A
Other languages
English (en)
Inventor
Chen Yi-Wen
Yi-Wen Chen
Chien Wei-Jung
Marta Karczewicz
Sun Yu-Chen
Wei-Jung Chien
Zhang Li
Yu-Chen Sun
Lee Sungwon
Li Zhang
Li Xiang
Sungwon Lee
Chuang Hsiao-Chiang
Xiang Li
Chen Jianle
Hsiao-Chiang Chuang
Seregin Vadim
Jianle Chen
Karczewicz Marta
Vadim SEREGIN
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 BR112019025566A2 publication Critical patent/BR112019025566A2/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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Um codificador de vídeo pode determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo. O bloco não adjacente é não adjacente a um bloco atual da imagem atual. Adicionalmente, o codificador de vídeo determina, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual. O codificador de vídeo pode determinar um vetor de movimento do bloco atual. O codificador de vídeo pode determinar também um bloco preditivo com base no vetor de movimento do bloco atual.

Description

“PREDIÇÃO DE VETOR DE MOVIMENTO”
[0001] Este pedido reivindica o benefício do pedido de patente provisório nº U.S. 62/519,007, depositado em 13 de junho de 2017, cujo conteúdo integral está incorporado a título de referência.
CAMPO DA TÉCNICA
[0002] Esta revelação refere-se a dispositivos configurados para realizar codificação de vídeo.
ANTECEDENTES
[0003] As capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes pessoais digitais (PDAs), computadores do tipo laptop ou de mesa, computador do tipo tablet, leitores e-book, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de videogame, consoles de videogame, telefones de rádio via satélite ou celular, os chamados “telefones inteligentes”, dispositivos de teleconferência de vídeo, dispositivos de transmissão contínua de vídeo e similares. Os dispositivos de vídeo digital implantam técnicas de compactação de vídeo, como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU- T H.264/MPEG-4, Parte 10, Codificação de vídeo avançada (AVC) ou 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 modo mais eficiente mediante a implantação de tais técnicas de compactação de vídeo.
[0004] As técnicas de compactação de vídeo podem realizar predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover redundância inerente em sequências de vídeo. Para codificação de vídeo à base de bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser particionada em blocos de vídeo, como blocos de codificação em árvore e blocos de codificação. A predição temporal ou espacial resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Para compactação adicional, os dados residuais podem ser transformados a partir do domínio de pixel em um domínio de transformada, resultando em coeficientes de transformada residuais, que podem, então, ser quantificados.
SUMÁRIO
[0005] Em geral, esta revelação descreve técnicas relacionadas à predição de vetor de movimento. As técnicas desta revelação podem ser aplicadas a qualquer um dos codecs de vídeo existentes, como HEVC (codificação de vídeo de alta eficiência) ou quaisquer padrões futuros de codificação de vídeo.
[0006] Em um exemplo, esta revelação descreve um método para decodificar dados de vídeo, sendo que o método compreende: determinar, por meio de um decodificador de vídeo, um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinar, por meio do decodificador de vídeo, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinar, por meio do decodificador de vídeo, com base no MVP para o bloco atual, um vetor de movimento do bloco atual; determinar, por meio do decodificador de vídeo, um bloco preditivo com base no vetor de movimento do bloco atual; reconstruir, por meio do decodificador de vídeo, com base no bloco preditivo, valores de amostra da imagem atual.
[0007] Em um outro exemplo, esta revelação descreve um método para codificar dados de vídeo, sendo que o método compreende: determinar, por meio de um codificador de vídeo, um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinar, por meio do codificador de vídeo, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinar, por meio do codificador de vídeo, um vetor de movimento do bloco atual, em que o vetor de movimento é igual a um vetor de movimento do MVP para o bloco atual ou é igual ao vetor de movimento do MVP para o bloco atual mais uma diferença de vetor de movimento (MVD) sinalizada em um fluxo de bits; determinar, por meio do codificador de vídeo, um bloco preditivo com base no vetor de movimento do bloco atual; e gerar, por meio do codificador de vídeo, com base no bloco preditivo, valores de amostra residuais.
[0008] Em um outro exemplo, esta revelação descreve um aparelho para decodificar dados de vídeo, sendo que o aparelho compreende: uma ou mais mídias de armazenamento configuradas para armazenar dados de vídeo; e um ou mais processadores configurados para: determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinar, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinar, com base no MVP para o bloco atual, um vetor de movimento do bloco atual; determinar um bloco preditivo com base no vetor de movimento do bloco atual; e reconstruir, com base no bloco preditivo, valores de amostra da imagem atual.
[0009] Em um outro exemplo, esta revelação descreve um aparelho para codificar dados de vídeo, sendo que o método compreende: determinar, por meio de um codificador de vídeo, um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinar, por meio do codificador de vídeo, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinar, por meio do codificador de vídeo, um vetor de movimento do bloco atual, em que o vetor de movimento é igual a um vetor de movimento do MVP para o bloco atual ou é igual ao vetor de movimento do MVP para o bloco atual mais uma diferença de vetor de movimento (MVD) sinalizada em um fluxo de bits; determinar, por meio do codificador de vídeo, um bloco preditivo com base no vetor de movimento do bloco atual; e gerar, por meio do codificador de vídeo, com base no bloco preditivo, valores de amostra residuais.
[0010] Em um outro exemplo, esta revelação descreve um aparelho para decodificar dados de vídeo, sendo que o aparelho compreende: meio para determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; meio para determinar, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; meio para determinar, com base no MVP para o bloco atual, um vetor de movimento do bloco atual; meio para determinar um bloco preditivo com base no vetor de movimento do bloco atual; e meio para reconstruir, com base no bloco preditivo, valores de amostra da imagem atual.
[0011] Em um outro exemplo, esta revelação descreve um aparelho para codificar dados de vídeo, sendo que o aparelho compreende: meio para determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; meio para determinar, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; meio para determinar um vetor de movimento do bloco atual, em que o vetor de movimento é igual a um vetor de movimento do MVP para o bloco atual ou é igual ao vetor de movimento do MVP para o bloco atual mais uma diferença de vetor de movimento (MVD) sinalizada em um fluxo de bits; meio para determinar um bloco preditivo com base no vetor de movimento do bloco atual; e meio para gerar, com base no bloco preditivo, valores de amostra residuais.
[0012] Em um outro exemplo, esta revelação descreve uma mídia de armazenamento legível por computador que armazena instruções que, quando executadas, fazem com que um ou mais processadores: determinem um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinar, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinar, com base no MVP para o bloco atual, um vetor de movimento do bloco atual; determinar um bloco preditivo com base no vetor de movimento do bloco atual; e reconstruir, com base no bloco preditivo, valores de amostra da imagem atual.
[0013] Em um outro exemplo, esta revelação descreve uma mídia de armazenamento legível por computador que armazena instruções que, quando executadas, fazem com que um ou mais processadores: determinem um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinem, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinem um vetor de movimento do bloco atual, em que o vetor de movimento é igual a um vetor de movimento do MVP para o bloco atual ou é igual ao vetor de movimento do MVP para o bloco atual mais uma diferença de vetor de movimento (MVD) sinalizada em um fluxo de bits; determinem um bloco preditivo com base no vetor de movimento do bloco atual; e gerem, com base no bloco preditivo, valores de amostra residuais.
[0014] Os detalhes de um ou mais aspectos da revelação são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetivos e vantagens das técnicas descritas nesta revelação ficarão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0015] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplificador que pode usar uma ou mais técnicas descritas nesta revelação.
[0016] A Figura 2 é um exemplo de candidatos de vetor de movimento vizinhos espacial e temporal para mesclar/ignorar modos.
[0017] A Figura 3 é um exemplo de correspondência bilateral.
[0018] A Figura 4 é um exemplo de correspondência de modelo.
[0019] A Figura 5 é um exemplo de estimação de movimento unilateral em conversão ascendente de taxa de quadro.
[0020] A Figura 6 é um exemplo de um refinamento de vetor de movimento de lado de decodificador com base na correspondência de modelo bilateral.
[0021] A Figura 7 é um exemplo de predição de movimento de predição de vetor de movimento temporal avançada para uma unidade de codificação.
[0022] A Figura 8 é um exemplo de uma unidade de codificação com quatro sub-blocos e seus blocos vizinhos.
[0023] A Figura 9 é um diagrama de blocos de um modelo de movimento afim simplificado exemplificador para um bloco afim atual.
[0024] A Figura 10 é um exemplo de um modelo de movimento afim simplificado para um bloco afim atual.
[0025] A Figura 11 é um exemplo de um campo de vetor de movimento de predição de compensação de movimento.
[0026] A Figura 12 é um exemplo de um campo de vetor de movimento armazenado.
[0027] A Figura 13 é um exemplo de predição de vetor de movimento para AF_INTER.
[0028] A Figura 14A é um diagrama de blocos que ilustra uma ordem de seleção para blocos candidatos para AF_MERGE.
[0029] A Figura 14B é um diagrama de blocos que ilustra candidatos para AF_MERGE se um bloco candidato inferior esquerdo for codificado no modo afim.
[0030] A Figura 15 é um diagrama de blocos que ilustra blocos não adjacentes exemplificadores, de acordo com uma técnica desta revelação.
[0031] A Figura 16 é um diagrama de blocos que ilustra um exemplo de uma seleção de blocos não adjacentes, de acordo com uma técnica desta revelação.
[0032] A Figura 17 é um diagrama de blocos que ilustra um exemplo de uma seleção de blocos não adjacentes com base em um bloco parental.
[0033] A Figura 18A é um diagrama de blocos que ilustra um exemplo de modificação de posição de um bloco não adjacente, de acordo com uma técnica desta revelação.
[0034] A Figura 18B é um diagrama de blocos que ilustra um exemplo de modificação de posição de um bloco não adjacente, de acordo com uma técnica desta revelação.
[0035] A Figura 19A é um diagrama de blocos que ilustra um exemplo de um limiar para modificar um bloco não adjacente, de acordo com uma técnica desta revelação.
[0036] A Figura 19B é um diagrama de blocos que ilustra um exemplo de um limiar para modificar um bloco não adjacente, de acordo com uma técnica desta revelação.
[0037] A Figura 20 é um diagrama de blocos que ilustra um exemplo de uma seleção de blocos não adjacentes, de acordo com uma técnica desta revelação.
[0038] A Figura 21 é um diagrama de blocos que ilustra um exemplo de uma seleção de blocos não adjacentes, de acordo com uma técnica desta revelação.
[0039] A Figura 22 é um diagrama de blocos que ilustra um exemplo de uma seleção de blocos não adjacentes, de acordo com uma técnica desta revelação.
[0040] A Figura 23 é um diagrama de blocos que ilustra um exemplo de uma seleção de blocos não adjacentes com base em um bloco parental, de acordo com uma técnica desta revelação.
[0041] A Figura 24 é um diagrama de blocos que ilustra um codificador de vídeo exemplificador que pode implantar uma ou mais técnicas descritas nesta revelação.
[0042] A Figura 25 é um diagrama de blocos que ilustra um decodificador de vídeo exemplificador que pode implantar uma ou mais técnicas descritas nesta revelação.
[0043] A Figura 26 é um fluxograma que ilustra uma operação exemplificadora de um codificador de vídeo para codificar dados de vídeo, de acordo com uma ou mais técnicas desta revelação.
[0044] A Figura 27 é um fluxograma que ilustra uma operação exemplificadora de um decodificador de vídeo para decodificar dados de vídeo de acordo com uma ou mais técnicas desta revelação.
[0045] A Figura 28 é um fluxograma que ilustra uma operação exemplificadora para determinar um NA- SMVP com o uso de candidatos de vetor de movimento de conversão ascendente de taxa de quadros (FRUC), de acordo com uma técnica desta revelação.
[0046] A Figura 29 é um fluxograma que ilustra uma operação exemplificadora de um codificador de vídeo que inclui candidatos sintéticos em uma lista de candidatos de MVP para um bloco atual, de acordo com uma ou mais técnicas desta revelação.
[0047] A Figura 30 é um fluxograma que ilustra uma operação exemplificadora de um decodificador de vídeo que inclui candidatos sintéticos em uma lista de candidatos de MVP para um bloco atual, de acordo com uma ou mais técnicas desta revelação.
[0048] A Figura 31 é um fluxograma que ilustra uma operação exemplificadora de um codificador de vídeo para codificar dados de vídeo, de acordo com uma técnica desta revelação.
[0049] A Figura 32 é um fluxograma que ilustra uma operação exemplificadora de um decodificador de vídeo para decodificar dados de vídeo, de acordo com uma técnica desta revelação.
[0050] A Figura 33 é um fluxograma que ilustra uma operação exemplificadora de um codificador de vídeo para codificar dados de vídeo, de acordo com uma técnica desta revelação.
[0051] A Figura 34 é um fluxograma que ilustra uma operação exemplificadora de um decodificador de vídeo para decodificar dados de vídeo, de acordo com uma técnica desta revelação.
[0052] A Figura 35 é um fluxograma que ilustra uma operação exemplificadora de um codificador de vídeo para codificar dados de vídeo, de acordo com uma técnica desta revelação.
[0053] A Figura 36 é um fluxograma que ilustra uma operação exemplificadora de um decodificador de vídeo para decodificar dados de vídeo, de acordo com uma técnica desta revelação.
DESCRIÇÃO DETALHADA
[0054] À medida que a compactação de vídeo tem aperfeiçoado, a proporção de dados codificados usados para representar vetores de movimento tem aumentado. Consequentemente, para obter uma maior compactação de vídeo, pode ser desejável aperfeiçoar a forma como os vetores de movimento são codificados. É desejável obter uma maior compactação de vídeo por vários motivos, como ter capacidade para enviar dados de vídeo de qualidade superior através da infraestrutura existente, reduzindo o congestionamento da rede e assim por diante. A predição de vetor de movimento é uma maneira comum de reduzir a quantidade de dados usada para codificar um vetor de movimento para um bloco. Na maioria dos sistemas de predição de vetor de movimento, um codificador de vídeo determina uma lista de preditores de vetor de movimento para o bloco, seleciona um preditor de vetor de movimento e, então, sinaliza uma posição na lista do vetor de movimento selecionado. Um decodificador de vídeo determina a mesma lista de preditores de vetor de movimento e determina o preditor de vetor de movimento selecionado com base nos dados sinalizados no fluxo de bits. O decodificador de vídeo pode, então, usar o preditor de vetor de movimento para determinar um ou mais vetores de movimento do bloco.
[0055] Esta revelação descreve técnicas que podem aperfeiçoar a predição de vetor de movimento, e assim, potencialmente aperfeiçoar a eficiência de compactação de vídeo, usando de forma mais completa as informações de vetor de movimento reconstruídas. Por exemplo, esta revelação descreve técnicas que usam preditores de vetor de movimento a partir de um ou mais blocos de uma imagem atual que não são espacialmente adjacentes a um bloco atual da imagem atual. Nesse exemplo, um codificador de vídeo (por exemplo, um codificador de vídeo ou um decodificador de vídeo) pode determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo. O bloco não adjacente é não adjacente a um bloco atual da imagem atual. Adicionalmente, nesse exemplo, o codificador de vídeo pode determinar, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual. O codificador de vídeo pode, então, determinar (por exemplo, com base no MVP para o bloco atual) um vetor de movimento do bloco atual. Adicionalmente, o codificador de vídeo pode determinar um bloco preditivo com base no vetor de movimento do bloco atual.
[0056] Adicionalmente, esta revelação descreve técnicas para gerar candidatos de vetor de movimento sintéticos. Esta revelação também descreve técnicas para gerar candidatos de preditor de vetor de movimento temporal adicionais. Além disso, esta revelação descreve técnicas que usam modos de intra-predição a partir de um ou mais blocos de uma imagem atual que não são espacialmente adjacentes a um bloco atual da imagem atual para determinar um ou mais modos de intra-predição mais prováveis em um conjunto de modos de intra-predição mais prováveis para o bloco atual. As técnicas desta revelação, ou subcombinações das mesmas, podem ser usadas em conjunto ou separadamente.
[0057] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplificador 10 que pode utilizar técnicas desta revelação. Conforme mostrado na Figura 1, o sistema 10 inclui um dispositivo de origem 12 que fornece dados de vídeo codificados a serem decodificados posteriormente por um dispositivo de destino 14. O dispositivo de origem 12 pode ser uma aparelho para codificar dados de vídeo e o dispositivo de destino 14 pode ser um aparelho para decodificar dados de vídeo. Em particular, o dispositivo de origem 12 fornece os dados de vídeo codificados para o dispositivo de destino 14 através de uma mídia legível por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla gama de dispositivos e aparelhos, incluindo computadores de mesa, computadores do tipo notebook (isto é, computadores do tipo laptop), computadores do tipo tablet, decodificadores de sinal, aparelhos de telefone como os chamados telefones “inteligentes”, computadores do tipo tablet, televisões, câmeras, dispositivos de exibição,
reprodutores de mídia digital, consoles de videogame, dispositivos de transmissão contínua de vídeo ou similares. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 são equipados para comunicação sem fio. Dessa forma, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser dispositivos de comunicação sem fio. As técnicas descritas nesta revelação podem ser aplicadas às aplicações com fio e/ou sem fio. O dispositivo de origem 12 é um dispositivo de codificação de vídeo exemplificador (isto é, um dispositivo para codificar dados de vídeo). O dispositivo de destino 14 é um dispositivo de decodificação de vídeo exemplificador (isto é, um dispositivo para decodificar dados de vídeo).
[0058] O sistema ilustrado 10 da Figura 1 é apenas um exemplo. As técnicas para o processamento de dados de vídeo podem ser realizada por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Em alguns exemplos, as técnicas podem ser realizada por um codificador/decodificador de vídeo, tipicamente denominado como um “CODEC”. O dispositivo de origem 12 e o dispositivo de destino 14 são exemplos de tais dispositivos de codificação em que o dispositivo de origem 12 gera dados de vídeo codificados para a transmissão para o dispositivo de destino 14. Em alguns exemplos, o dispositivo de origem 12 e o dispositivo de destino 14 operam de uma maneira substancialmente simétrica de modo que cada um dentre o dispositivo de origem 12 e o dispositivo de destino 14 inclua componentes de codificação e decodificação de vídeo. Por conseguinte, o sistema 10 pode suportar transmissão de vídeo unidirecional ou bidirecional entre o dispositivo de origem 12 e o dispositivo de destino 14, por exemplo, para a transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo ou telefonia de vídeo.
[0059] No exemplo da Figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, mídia de armazenamento 19 configurada para armazenar dados de vídeo, um codificador de vídeo 20 e uma interface de saída 22. O dispositivo de destino 14 inclui uma interface de entrada 26, mídias de armazenamento 28 configuradas para armazenar dados de vídeo codificados, um decodificador de vídeo 30 e um dispositivo de exibição 32. Em outros exemplos, o dispositivo de origem 12 e dispositivo de destino 14 incluem outros componentes ou disposições. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo a partir de uma fonte de vídeo externa, como uma câmera externa. De modo semelhante, o dispositivo de destino 14 pode fazer interface com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0060] A fonte de vídeo 18 é uma fonte de dados de vídeo. Os dados de vídeo podem compreender uma série de imagens. A fonte de vídeo 18 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo que contém vídeo capturado anteriormente e/ou uma interface de alimentação de vídeo para receber dados de vídeo a partir de um provedor de conteúdo de vídeo. Em alguns exemplos, a fonte de vídeo 18 gera dados de vídeo à base de gráficos de computador ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. As mídias de armazenamento 19 podem ser configuradas para armazenar os dados de vídeo. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20.
[0061] A interface de saída 22 pode emitir as informações de vídeo codificadas para uma mídia legível por computador 16. A interface de saída 22 pode compreender diversos tipos de componentes ou dispositivos. Por exemplo, a interface de saída 22 pode compreender um transmissor sem fio, um modem, um componente de rede com fio (por exemplo, um cartão de Ethernet) ou um outro componente físico. Nos exemplos em que a interface de saída 22 compreende um transmissor sem fio, a interface de saída 22 pode ser configurada para transmitir dados, como dados de vídeo codificados, modulados de acordo com um padrão de comunicação celular, como 4G, 4G-LTE, LTE avançada, 5G e similares. Em alguns exemplos em que a interface de saída 22 compreende um transmissor sem fio, a interface de saída 22 pode ser configurada para transmitir dados, como dados de vídeo codificados, modulados 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™ e similares. Em alguns exemplos, o conjunto de circuitos de interface de saída 22 é integrado ao conjunto de circuitos do codificador de vídeo 20 e/ou outros componentes do dispositivo de origem 12. Por exemplo, o codificador de vídeo 20 e a interface de saída 22 podem ser partes de um sistema em um chip (SoC). O SoC também pode incluir outros componentes, como um microprocessador de uso geral, uma unidade de processamento gráfico e assim por diante.
[0062] O dispositivo de destino 14 pode receber dados de vídeo codificados a serem decodificados através da mídia legível por computador 16. A mídia legível por computador 16 pode compreender qualquer tipo de mídia ou dispositivo com capacidade para mover os dados de vídeo codificados a partir do dispositivo de origem 12 para o dispositivo de destino 14. Em alguns exemplos, a mídia legível por computador 16 compreende uma mídia de comunicação para habilitar o dispositivo de origem 12 para transmitir dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. A mídia de comunicação pode compreender qualquer mídia de comunicação sem fio ou com fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. A mídia de comunicação pode formar parte de uma rede com base em pacote, como uma rede de área local, uma rede de área ampla ou uma rede global, como a Internet. A mídia de comunicação pode incluir roteadores, comutadores, estações-base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação a partir do dispositivo de origem 12 para o dispositivo de destino 14. O dispositivo de destino 14 pode compreender uma ou mais mídias de armazenamento de dados configuradas para armazenar dados de vídeo codificados e dados de vídeo decodificados.
[0063] Em alguns exemplos, a interface de saída 22 pode emitir dados, como dados de vídeo codificados, para um dispositivo intermediário, como um dispositivo de armazenamento. De modo similar, a interface de entrada 26 do dispositivo de destino 14 pode receber dados codificados do dispositivo intermediário. O dispositivo intermediário pode incluir qualquer uma dentre uma variedade de mídias de armazenamento de dados distribuídas ou acessadas localmente como um 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. Em alguns exemplos, o dispositivo intermediário corresponde a um servidor de arquivos. Os servidores de arquivos exemplificadores incluem servidores Web, servidores FTP, dispositivos de armazenamento fixados em rede (NAS) ou unidades de disco local.
[0064] O dispositivo de destino 14 pode acessar os dados de vídeo codificados através 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, DSL, modem a cabo, etc.), ou uma combinação de ambas que é adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento pode ser uma transmissão contínua, uma transmissão por download ou uma combinação das mesmas.
[0065] A mídia legível por computador 16 pode incluir mídia transitória, como uma transmissão de rede com fio ou difusão sem fio, ou mídias de armazenamento (isto é, mídias de armazenamento não transitórias), como um disco rígido, disco magnético, disco compacto, disco de vídeo digital, disco Blu-ray ou outras mídias legíveis por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados a partir do dispositivo de origem 12 e fornecer os dados de vídeo codificados para o dispositivo de destino 14, por exemplo, através da transmissão de rede. De modo similar, um dispositivo de computação de uma instalação de produção de meio, como uma instalação de estampagem de disco, pode receber dados de vídeo codificados a partir do dispositivo de origem 12 e produzir um disco que contém os dados de vídeo codificados. Portanto, a mídia legível por computador 16 pode ser compreendida como incluindo uma ou mais mídias legíveis por computador de diversas formas, em diversos exemplos.
[0066] A interface de entrada 26 do dispositivo de destino 14 recebe dados a partir da mídia legível por computador 16. A interface de entrada 26 pode compreender diversos tipos de componentes ou dispositivos. Por exemplo, a interface de entrada 26 pode compreender um receptor sem fio, um modem, um componente de rede com fio (por exemplo, um cartão de Ethernet) ou um outro componente físico. Nos exemplos em que a interface de entrada 26 compreende um receptor sem fio, a interface de entrada 26 pode ser configurada para receber dados, como o fluxo de bits, modulado de acordo com um padrão de comunicação celular, como 4G, 4G-LTE, LTE avançado, 5G e similares. Em alguns exemplos em que a interface de entrada 26 compreende um receptor sem fio, a interface de entrada 26 pode ser configurada para receber dados, como o fluxo de bits, modulado 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™ e similares. Em alguns exemplos, o conjunto de circuitos da interface de entrada 26 pode ser integrado ao conjunto de circuitos do decodificador de vídeo 30 e/ou outros componentes do dispositivo de destino 14. Por exemplo, o decodificador de vídeo 30 e a interface de entrada 26 podem ser partes de um SoC. O SoC também pode incluir outros componentes, como um microprocessador de uso geral, uma unidade de processamento gráfico e assim por diante.
[0067] A mídia de armazenamento 28 pode ser configurada para armazenar dados de vídeo codificados, como dados de vídeo codificados (por exemplo, um fluxo de bits) recebidos pela interface de entrada 26. O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário. O dispositivo de exibição 32 pode compreender qualquer um dentre uma variedade de dispositivos de exibição como um visor de cristal líquido (LCD), um visor de plasma, um visor de díodo de emissão de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0068] Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser implantado como qualquer um dentre uma variedade de conjuntos de circuitos adequados, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia legível por computador não transitória adequada e pode executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas desta revelação.
Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, em que qualquer um dos quais pode ser integrado como parte de um codificador/decodificador (CODEC) combinado em um respectivo dispositivo.
Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 codifica e decodifica dados de vídeo de acordo com uma especificação ou padrão de codificação de vídeo.
Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar e decodificar dados de vídeo de acordo com ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões codificação de vídeo escalável (SVC) e codificação de vídeo de visualização múltipla (MVC) ou outra especificação ou padrão de codificação de vídeo.
Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 codificam e decodificam dados de vídeo de acordo com a codificação de vídeo de alta eficiência (HEVC), que conforme conhecido ou ITU-T H.265, suas extensões de codificação de conteúdo de tela e alcance, sua extensão de codificação de vídeo 3D (3D-HEVC), sua extensão de visualização múltipla (MV-HEVC) ou sua extensão escalável (SHVC). HEVC, SHVC e 3D-HEVC foram desenvolvidos pela Joint Collaboration Team em codificação de vídeo (JCT-VC), bem como Joint Collaboration Team em desenvolvimento de extensão de codificação de vídeo 3D (JCT-3V) do grupo de especialistas de codificação de vídeo ITU-T (VCEG) e grupo de especialistas de imagem em movimento ISO/IEC (MPEG).
[0069] ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) estão estudando agora a necessidade potencial por padronização de tecnologia de codificação de vídeo futura com uma capacidade de compactação que significativamente excede aquela do padrão de HEVC atual (incluindo suas extensões atuais e extensões de curto prazo para codificação de conteúdo de tela e codificação de alta faixa dinâmica). Os grupos estão trabalhando em conjunto nessa atividade de exploração em um esforço de colaboração conjunta conhecida como o Joint Video Exploration Team (JVET) para avaliar projetos de tecnologia de compactação propostos por seus especialistas nessa área. O JVET se reuniu pela primeira vez em 19 a 21 de outubro de 2015. Chen et al., “Algorithm Description of Joint Exploration Test Model 5”, Joint Video Exploration Team (JVET) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 5a Reunião, Geneva, CH, 12 a 20 de janeiro de 2017, documento JVET E- 1001, é uma descrição de algoritmo do Joint Exploration Test Model 6 (JEM5). Chen et al., “Algorithm Description of Joint Exploration Test Model 6”, Joint Video Exploration Team (JVET) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 6a Reunião, Hobart, AU, 31 de março a 7 de abril de 2017, documento JVET F- 1001, é uma descrição de algoritmo do Joint Exploration Test Model 6 (JEM6). O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com o modelo de exploração conjunta ou o novo padrão de codificação de vídeo versátil (VVC - “Versatile Video Coding”) atualmente em desenvolvimento.
[0070] Esta revelação pode geralmente se referir à “sinalização” de certas informações, como elementos de sintaxe. O termo “sinalização” pode geralmente se referir à comunicação de elementos de sintaxe e/ou outros dados usados para decodificar os dados de vídeo codificados. Tal comunicação pode ocorrer em tempo real ou quase real. Alternativamente, tal comunicação pode ocorrer ao longo de um período de tempo, como poderia ocorrer mediante o armazenamento de elementos de sintaxe em uma mídia de armazenamento legível por computador em um fluxo de bits no momento da codificação, que pode, então, ser recuperado por um dispositivo de decodificação a qualquer momento após ser armazenado nessa mídia.
[0071] Em HEVC e outras especificações de codificação de vídeo, dados de vídeo incluem uma série de imagens. As imagens também podem ser mencionadas como “quadros”. Uma imagem pode incluir uma ou mais matrizes de amostra. Cada respectiva matriz de amostra de uma imagem pode compreender uma matriz de amostras para um respectivo componentes de cor. Uma imagem pode incluir três matrizes de amostra, denotadas SL, SCb e SCr. SL é uma matriz bidimensional (isto é, um bloco) de amostras luma. SCb é uma matriz bidimensional de amostras de croma Cb. SCr é uma matriz bidimensional de amostras de croma Cr. Em outros casos, uma imagem pode ser monocromática e pode incluir apenas uma matriz de amostras luma.
[0072] Como parte da codificação de dados de vídeo, o codificador de vídeo 20 pode codificar imagens dos dados de vídeo. Em outras palavras, o codificador de vídeo 20 pode gerar representações codificadas das imagens dos dados de vídeo. Uma representação codificada de uma imagem pode ser denominada no presente documento como “imagem convertida em código” ou uma “imagem codificada”.
[0073] Para gerar uma representação codificada de uma imagem, o codificador de vídeo 20 pode codificar blocos da imagem. O codificador de vídeo 20 pode incluir, em um fluxo de bits, uma representação codificada do bloco de vídeo. Em alguns exemplos, para codificar um bloco da imagem, o codificador de vídeo 20 realiza a intra-predição ou inter-predição para gerar um ou mais blocos preditivos. Adicionalmente, o codificador de vídeo 20 pode gerar dados residuais para o bloco. O bloco residual compreende amostras residuais. Cada amostra residual pode indicar uma diferença entre uma amostra de um dos blocos preditivos gerados e uma amostra correspondente do bloco. Dessa maneira, o codificador de vídeo 20 pode gerar, com base em um bloco preditivo, valores de amostra residuais. O codificador de vídeo 20 pode aplicar uma transformada a blocos de amostras residuais para gerar coeficientes de transformada. Adicionalmente, o codificador de vídeo 20 pode quantificar os coeficientes de transformada. Em alguns exemplos, o codificador de vídeo 20 pode gerar um ou mais elementos de sintaxe para representar um coeficiente de transformada. O codificador de vídeo 20 pode codificar por entropia um ou mais dos elementos de sintaxe que representam o coeficiente de transformada.
[0074] Mais especificamente, mediante a codificação de dados de vídeo de acordo com HEVC ou outras especificações de codificação de vídeo, para gerar uma representação codificada de uma imagem, o codificador de vídeo 20 pode particionar cada amostra de amostra da imagem em blocos de codificação em árvore (CTBs) e codificar os CTBs. Um CTB pode ser um bloco NxN de amostras em uma matriz de amostra de uma imagem. No perfil principal de HEVC, o tamanho de um CTB pode se situar na faixa de 16x16 a 64x64, embora tecnicamente os tamanhos de CTB de 8x8 possam ser suportados.
[0075] Uma unidade de árvore de codificação (CTU) de uma imagem pode compreender um ou mais CTBs e pode compreender estruturas de sintaxe usadas para codificar as amostras do um ou mais CTBs. Por exemplo, cada CTU pode compreender um CTB de amostras de luma, dois CTBs correspondentes de amostras de croma e estruturas de sintaxe usadas para codificar as amostras dos CTBs. Em imagens monocromáticas ou imagens que têm três planos de cores separados, uma CTU pode compreender um único CTB e estruturas de sintaxe usadas para codificar as amostras do CTB. Uma CTU também pode ser mencionada como um “bloco de árvore” ou uma “unidade de codificação maior” (LCU). Nesta revelação, uma “estrutura de sintaxe” pode ser definida como zero ou mais elementos de sintaxe presentes juntos em um fluxo de bits em uma ordem especificada. Em alguns codecs, uma imagem codificada é uma representação codificada que contém todas as CTUs da imagem.
[0076] Para codificar uma CTU de uma imagem, o codificador de vídeo 20 pode particionar os CTBs da CTU em um ou mais blocos de codificação. Um bloco de codificação é um bloco NxN de amostras. Em alguns codecs, para codificar uma CTU de uma imagem, o codificador de vídeo 20 pode realizar recursivamente a partição de quadtree nos blocos de codificação em árvore de uma CTU para particionar os
CTBs em blocos de codificação, daí o nome “unidades de árvore de codificação”. Uma unidade de codificação (CU) pode compreender um ou mais blocos de codificação e estruturas de sintaxe usadas para codificar amostras do um ou mais blocos de codificação. Por exemplo, uma CU pode compreender um bloco de codificação de amostras luma e dois blocos de codificação correspondentes de amostras croma de uma imagem que tem uma matriz de amostra luma, uma matriz de amostra Cb e uma matriz de amostra Cr, e estruturas de sintaxe usadas para codificar as amostras dos blocos de codificação. Em imagens monocromáticas ou imagens que têm três planos de cor separados, uma CU pode compreender um único bloco de codificação e estruturas de sintaxe usadas para codificar as amostras do bloco de codificação. Em HEVC, a maior unidade de codificação de uma fatia é chamada de bloco de codificação em árvore (CTB) ou unidade de árvore de codificação (CTU). Um CTB contém um quadtree cujos nós são CUs. O tamanho de um CTB pode se situar na faixa de 16x16 a 64x64 no perfil principal de HEVC (embora tecnicamente os tamanhos de CTB de 8x8 possam ser suportados). Uma unidade de codificação (CU) pode ter o mesmo tamanho de um CTB e pode ser tão pequena quanto 8x8. Cada unidade de codificação é codificada com um modo.
[0077] Adicionalmente, o codificador de vídeo 20 pode codificar CUs de uma imagem dos dados de vídeo. Em alguns codecs, como parte da codificação de uma CU, o codificador de vídeo 20 pode particionar um bloco de codificação da CU em um ou mais blocos de predição. Um bloco de predição é um bloco retangular (isto é, quadrado ou não quadrado) de amostras em que a mesma predição é aplicada. Uma unidade de predição (PU) de uma CU pode compreender um ou mais blocos de predição de uma CU e estruturas de sintaxe usadas para predizer o um ou mais blocos de predição. Por exemplo, uma PU pode compreender um bloco de predição de amostras luma, dois blocos de predição correspondentes de amostras croma e estruturas de sintaxe usadas para predizer os blocos de predição. Em imagens monocromáticas ou imagens que têm três planos de cor separados, uma PU pode compreender um único bloco de predição e estruturas de sintaxe usadas para predizer o bloco de predição.
[0078] O codificador de vídeo 20 pode gerar um bloco preditivo (por exemplo, um bloco preditivo de luma, Cb e Cr) para um bloco de predição (por exemplo, bloco de predição de luma, Cb e Cr) de uma PU de uma CU. O codificador de vídeo 20 pode usar intra-predição ou inter- predição para gerar um bloco preditivo. Se o codificador de vídeo 20 usar intra-predição para gerar um bloco preditivo, o codificador de vídeo 20 pode gerar o bloco preditivo com base em amostras decodificadas da imagem que inclui a CU. Se o codificador de vídeo 20 usar a inter-predição para gerar um bloco preditivo de uma PU de uma imagem atual, o codificador de vídeo 20 pode gerar o bloco preditivo da PU com base nas amostras decodificadas de uma imagem de referência (isto é, uma imagem além da imagem atual). Em HEVC, o codificador de vídeo 20 gera uma estrutura de sintaxe de “unidade de predição” dentro de uma estrutura de sintaxe de “unidade de codificação” para PUs inter- preditas, mas não gera uma estrutura de sintaxe de “unidade de predição” dentro de uma estrutura de sintaxe de “unidade de codificação” para PUs intra-preditas. Em vez disso, em HEVC, os elementos de sintaxe relacionados às PUs intra- preditas estão incluídos diretamente na estrutura de sintaxe de “unidade de codificação”. Quando uma CU é codificada, a CU pode ser adicionalmente particionada em 2 ou 4 PUs ou se tornar apenas uma PU quando não se aplicar partição adicional. Quando duas PUs estão presentes em uma CU, as mesmas podem ser retângulos de meio tamanho ou dois tamanhos de retângulo com 1⁄4 ou 3⁄4 de tamanho da CU. Quando a CU é inter-codificada, um conjunto de informações de movimento está presente para cada PU. Além disso, cada PU é codificada com um modo de inter-predição exclusivo para derivar o conjunto de informações de movimento. Nesta revelação, a terminologia “bloco” pode se referir a CU, PU ou quaisquer outras unidades de codificação usadas para fins de codificação de vídeo.
[0079] Um codificador de vídeo, como o codificador de vídeo 20 ou o decodificador de vídeo 30, pode realizar a intra-predição com o uso de um modo de intra-predição selecionado a partir de uma pluralidade de modos de intra-predição disponíveis. Os modos de intra- predição podem incluir modos de intra-predição direcionais, que também podem ser denominados de direções de intra- predição. Diferentes modos de intra-predição direcionais correspondem a diferentes ângulos. Em alguns exemplos, para determinar um valor de uma amostra atual de um bloco preditivo com o uso de um modo de intra-predição direcional, o codificador de vídeo pode determinar um ponto em que uma linha que passa através da amostra atual no ângulo que corresponde ao modo de intra-predição direcional cruza um conjunto de amostras de borda. As amostras de borda podem compreender amostras em uma coluna imediatamente à esquerda do bloco preditivo e amostras em uma fileira imediatamente acima do bloco preditivo. Se o ponto estiver entre duas das amostras de borda, o codificador de vídeo pode interpolar ou de outro modo determinar um valor que corresponde ao ponto. Se o ponto corresponder a uma única amostra dentre as amostras de borda, o codificador de vídeo pode determinar que o valor do ponto é igual à amostra de borda. O codificador de vídeo pode definir o valor da amostra atual do bloco preditivo igual ao valor determinado do ponto.
[0080] Em HEVC e em alguns outros codecs, o codificador de vídeo 20 codifica uma CU com o uso de apenas um modo de predição (isto é, intra-predição ou inter- predição). Dessa forma, em HEVC e em particular outros codecs, o codificador de vídeo 20 pode gerar blocos preditivos de cada PU de uma CU com o uso de intra-predição ou o codificador de vídeo 20 pode gerar blocos preditivos de cada PU da CU com o uso de inter-predição. Quando o codificador de vídeo 20 usa a inter-predição para codificar uma CU, o codificador de vídeo 20 pode particionar a CU em 2 ou 4 PUs, ou um PU corresponde à CU inteira. Quando duas PUs estão presentes em uma CU, as duas podem ser retângulos de meio tamanho ou dois tamanhos de retângulo com 1⁄4 ou 3⁄4 de tamanho da CU. Em HEVC, existem oito modos de partição para uma CU codificada com o modo inter-predição, isto é, PART_2Nx2N, PART 2NxN, PART Nx2N, PART NxN, PART_2NxnU, PART_2NxnD, PART_nLx2N e PART_nRx2N. Quando uma CU é intra-predita, 2Nx2N e NxN são os únicos formatos de
PU permissíveis, e dentro de cada PU um único modo de intra-predição é codificado (embora o modo de predição croma seja sinalizado no nível de CU).
[0081] O codificador de vídeo 20 pode gerar um ou mais blocos residuais para a CU. Por exemplo, o codificador de vídeo 20 pode gerar um bloco residual luma para a CU. Cada amostra no bloco residual luma da CU indica uma diferença entre uma amostra luma em um dentre os blocos luma preditivos da CU e uma amostra correspondente no bloco de codificação luma original da CU. Além disso, o codificador de vídeo 20 pode gerar um bloco residual Cb para a CU. Cada amostra no bloco residual Cb de uma CU pode indicar uma diferença entre uma amostra Cb em um dos blocos Cb preditivos da CU e uma amostra correspondente no bloco de codificação Cb original da CU. O codificador de vídeo 20 também pode gerar um bloco residual Cr para a CU. Cada amostra no bloco residual Cr da CU pode indicar uma diferença entre uma amostra Cr em um dentre os blocos Cr preditivos da CU e uma amostra correspondente no bloco de codificação Cr original da CU.
[0082] Adicionalmente, o codificador de vídeo 20 pode decompor os blocos residuais de uma CU em um ou mais blocos de transformada. Por exemplo, o codificador de vídeo 20 pode usar a partição de quadtree para decompor os blocos residuais de uma CU em um ou mais blocos de transformada. Um bloco de transformada é um bloco retangular (por exemplo, quadrado ou não quadrado) de amostras em que a mesma transformada é aplicada. Uma unidade de transformada (TU) de uma CU pode compreender um ou mais blocos de transformada. Por exemplo, uma TU pode compreender um bloco de transformada de amostras luma, dois blocos de transformada correspondentes de amostras croma e estruturas de sintaxe usadas para transformar as amostras de blocos de transformada. Dessa forma, cada TU de uma CU pode ter um bloco de transformada luma, um bloco de transformada Cb e um bloco de transformada Cr. O bloco de transformada luma da TU pode ser um sub-bloco do bloco residual luma da CU. O bloco de transformada Cb pode ser um sub-bloco do bloco residual Cb da CU. O bloco de transformada Cr pode ser um sub-bloco do bloco residual Cr da CU. Em imagens monocromáticas ou imagens que têm três planos de cor separados, uma TU pode compreender um único bloco de transformada e estruturas de sintaxe usadas para transformar as amostras do bloco de transformada.
[0083] O codificador de vídeo 20 pode aplicar uma ou mais transformadas em um bloco de transformada de uma TU para gerar um bloco de coeficiente para a TU. Um bloco de coeficiente pode ser uma matriz bidimensional de coeficientes de transformada. Um coeficiente de transformada pode ser uma quantidade escalar. Em alguns exemplos, a uma ou mais transformadas convertem o bloco de transformada de um domínio de pixel em um domínio de frequência. Dessa forma, em tais exemplos, um coeficiente de transformada pode ser uma quantidade escalar considerada em um domínio de frequência. Um nível de coeficiente de transformada é uma quantidade de número inteiro que representa um valor associado a um índice de frequência bidimensional particular em um processo de decodificação antes do escalonamento para a computação de um valor de coeficiente de transformada.
[0084] Em alguns exemplos, o codificador de vídeo 20 ignora a aplicação das transformadas no bloco de transformada. Em tais exemplos, o codificador de vídeo 20 pode tratar valores de amostra residuais da mesma maneira que os coeficientes de transformada. Dessa forma, nos exemplos em que o codificador de vídeo 20 ignora a aplicação das transformadas, a seguinte discussão de coeficientes de transformada e blocos de coeficiente pode ser aplicável a blocos de transformada de amostras residuais.
[0085] De acordo com JEM, um codificador de vídeo (como o codificador de vídeo 200) particiona uma imagem em uma pluralidade de unidades de codificação em árvore (CTUs). O codificador de vídeo 200 pode particionar uma CTU de acordo com uma estrutura em árvore, como uma estrutura em árvore quadtree-binária (QTBT). A estrutura QTBT de JEM remove os conceitos de vários tipos de partição, como a separação entre CUs, PUs e TUs de HEVC. Dessa forma, no contexto do JEM, o termo “PU” ou “TU” pode ser aplicado a uma CU. Uma estrutura QTBT de JEM inclui dois níveis: um primeiro nível particionado de acordo com a partição de quadtree e um segundo nível particionado de acordo com a partição de árvore binária. Um nó de raiz da estrutura QTBT corresponde a uma CTU. Os nós de folha das árvores binárias correspondem às unidades de codificação (CUs).
[0086] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar uma única estrutura QTBT 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 estruturas QTBT, como uma estrutura QTBT para o componente de luminância e outra estrutura QTBT para ambos os componentes de crominância (ou duas estruturas QTBT para os respectivos componentes de crominância).
[0087] Após a geração de um bloco de coeficiente, o codificador de vídeo 20 pode quantificar o bloco de coeficiente para possivelmente reduzir a quantidade de dados usados para representar o bloco de coeficiente, fornecendo potencialmente a compactação adicional. A quantificação geralmente se refere a um processo no qual uma faixa de valores é compactada em um único valor. Por exemplo, a quantificação pode ser feita mediante a divisão de um valor por uma constante e, então, arredondando para o número inteiro mais próximo. Para quantificar o bloco de coeficiente, o codificador de vídeo 20 pode quantificar os coeficientes de transformada do bloco de coeficiente. A quantificação pode reduzir a profundidade de bits associada a alguns ou a todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de n-bits pode ser arredondado para baixo para um coeficiente de transformada de m-bit durante a quantificação, em que n é maior que m. Em alguns exemplos, o codificador de vídeo 20 ignora a quantificação.
[0088] O codificador de vídeo 20 pode gerar elementos de sintaxe que indicam alguns ou todos os coeficientes de transformada potencialmente quantificados. O codificador de vídeo 20 pode codificar por entropia um ou mais dos elementos de sintaxe que indicam um coeficiente de transformada quantificado. Por exemplo, o codificador de vídeo 20 pode realizar a codificação aritmética binária adaptável ao contexto (CABAC) nos elementos de sintaxe que indicam os coeficientes de transformada quantificados. Dessa forma, um bloco codificado (por exemplo, uma CU codificada) pode incluir os elementos de sintaxe codificados por entropia que indicam os coeficientes de transformada quantificados.
[0089] O codificador de vídeo 20 pode emitir um fluxo de bits que inclui dados de vídeo codificados. Em outras palavras, o codificador de vídeo 20 pode emitir um fluxo de bits que inclui uma representação codificada de dados de vídeo. A representação codificada dos dados de vídeo pode incluir uma representação codificada de imagens dos dados de vídeo. Por exemplo, o fluxo de bits pode compreender uma sequência de bits que forma uma representação de imagens codificadas dos dados de vídeo e dados associados. Em alguns exemplos, uma representação de uma imagem codificada pode incluir representações codificadas de blocos da imagem.
[0090] O decodificador de vídeo 30 pode receber um fluxo de bits gerado pelo codificador de vídeo 20. Conforme observado acima, o fluxo de bits pode compreender uma representação codificada de dados de vídeo. O decodificador de vídeo 30 pode decodificar o fluxo de bits para reconstruir imagens dos dados de vídeo. Como parte da decodificação do fluxo de bits, o decodificador de vídeo 30 pode obter elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir imagens dos dados de vídeo com base, pelo menos em parte, nos elementos de sintaxe obtidos a partir do fluxo de bits. O processo para reconstruir imagens dos dados de vídeo pode ser geralmente recíproco ao processo realizado pelo codificador de vídeo 20 para codificar as imagens.
[0091] Por exemplo, como parte da decodificação de uma imagem dos dados de vídeo, o decodificador de vídeo 30 pode usar a inter-predição ou intra-predição para gerar blocos preditivos. Adicionalmente, o decodificador de vídeo 30 pode determinar coeficientes de transformada com base em elementos de sintaxe obtidos a partir do fluxo de bits. Em alguns exemplos, o decodificador de vídeo 30 quantifica de forma inversa os coeficientes de transformada determinados. A quantificação inversa mapeia o valor quantificado para um valor reconstruído. Por exemplo, o decodificador de vídeo 30 pode quantificar de forma inversa um valor mediante a determinação do valor multiplicado por um tamanho da etapa de quantificação. Adicionalmente, o decodificador de vídeo 30 pode aplicar uma transformada inversa nos coeficientes de transformada determinados para determinar valores de amostras residuais. O decodificador de vídeo 30 pode reconstruir um bloco da imagem com base nas amostras residuais e nas amostras correspondentes dos blocos preditivos gerados. Por exemplo, o decodificador de vídeo 30 pode adicionar amostras residuais às amostras correspondentes dos blocos preditivos gerados para determinar amostras reconstruídas do bloco.
[0092] Mais especificamente, em HEVC e outras especificações de codificação de vídeo, o decodificador de vídeo 30 pode usar a inter-predição ou intra-predição para gerar um ou mais blocos preditivos para cada PU de uma CU atual. Além disso, o decodificador de vídeo 30 pode quantificar de forma inversa os blocos de coeficiente de TUs da CU atual. O decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficiente para reconstruir blocos de transformada das TUs da CU atual. O decodificador de vídeo 30 pode reconstruir um bloco de codificação da CU atual com base em amostras dos blocos preditivos das PUs da CU atual e amostras residuais dos blocos de transformada das TUs da CU atual. Em alguns exemplos, o decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual, mediante a adição das amostras dos blocos preditivos para PUs da CU atual às amostras decodificadas correspondentes dos blocos de transformada das TUs da CU atual. Mediante a reconstrução dos blocos de codificação para cada CU de uma imagem, o decodificador de vídeo 30 pode reconstruir a imagem.
[0093] Uma fatia de uma imagem pode incluir um número inteiro de blocos da imagem. Por exemplo, em HEVC e outras especificações de codificação de vídeo, uma fatia de uma imagem pode incluir um número inteiro de CTUs da imagem. As CTUs de uma fatia podem ser ordenadas consecutivamente em uma ordem de varredura, como uma ordem de varredura raster. Em HEVC e potencialmente em outros codecs, uma fatia é definida como um número inteiro de CTUs contidas em um segmento de fatia independente e em todos os segmentos de fatia dependentes subsequentes (se houver) que precedem o próximo segmento de fatia independente (se houver) dentro da mesma unidade de acesso. Adicionalmente, em HEVC e potencialmente em outros codecs, um segmento de fatia é definido como um número inteiro de CTUs ordenadas consecutivamente na varredura em mosaico e contidas em uma única unidade NAL. Uma varredura em mosaico é uma ordenação sequencial específica de CTBs que particionam uma imagem na qual os CTBs são ordenados consecutivamente na varredura raster de CTB em um mosaico, enquanto que os mosaicos em uma imagem são ordenados consecutivamente em uma varredura raster dos mosaicos da imagem. Um bloco é uma região retangular de CTBs dentro de uma coluna de mosaico particular e de uma fileira de mosaico particular em uma imagem.
[0094] Conforme mencionado acima, um codificador de vídeo (por exemplo, codificador de vídeo 20 ou decodificador de vídeo 30) pode aplicar a inter-predição para gerar um bloco preditivo para um bloco de vídeo de uma imagem atual. Por exemplo, no contexto de HEVC e outras especificações de codificação de vídeo, o codificador de vídeo pode aplicar a inter-predição para gerar um bloco preditivo para um bloco preditivo de uma PU de uma CU do bloco atual. Se o codificador de vídeo aplicar a inter- predição para gerar um bloco preditivo, o codificador de vídeo pode gerar o bloco preditivo com base em amostras decodificadas de uma ou mais imagens de referência. As imagens de referência são imagens diferentes da imagem atual. O codificador de vídeo pode determinar uma ou mais listas de imagens de referência. Cada uma das listas de imagens de referência pode incluir zero ou mais imagens de referência. No contexto de HEVC e outras especificações de codificação de vídeo, uma das listas de imagens de referência pode ser denominada como Lista de imagens de referência 0 (isto é, RefPicList0 ou list0) e uma outra lista de imagens de referência pode ser denominada como
Lista de Imagens de Referência 1 (isto é, RefPicList1 ou list1).
[0095] O codificador de vídeo pode aplicar a inter-predição unidirecional ou inter-predição bidirecional para gerar um bloco preditivo. Quando o codificador de vídeo aplica a inter-predição unidirecional para gerar um bloco preditivo para um bloco de vídeo, o codificador de vídeo determina um único bloco de referência para o bloco de vídeo com base em amostras de uma única imagem de referência. Adicionalmente, quando o codificador de vídeo aplica a inter-predição unidirecional, o codificador de vídeo pode definir o bloco preditivo igual ao bloco de referência. Quando o codificador de vídeo aplica a inter- predição bidirecional para gerar um bloco preditivo para um bloco de vídeo, o codificador de vídeo determina dois blocos de referência para o bloco de vídeo. Em alguns exemplos, os dois blocos de referência estão em imagens de referência em diferentes listas de imagens de referência. Adicionalmente, quando o codificador de vídeo aplica a inter-predição bidirecional, o codificador de vídeo pode determinar o bloco preditivo com base nos dois blocos de referência. Por exemplo, o codificador de vídeo pode determinar o bloco preditivo de modo que cada amostra do bloco preditivo seja uma média ponderada das amostras correspondentes dos dois blocos de referência. Os indicadores da lista de referência podem ser usados para indicar quais dentre as listas de imagens de referência incluem imagens de referência usadas para determinar blocos de referência.
[0096] Conforme mencionado acima, um codificador de vídeo pode determinar um bloco de referência com base em amostras de uma imagem de referência. Em alguns exemplos, o codificador de vídeo pode determinar o bloco de referência de modo que cada amostra do bloco de referência seja igual a uma amostra da imagem de referência. Em alguns exemplos, como parte da determinação de um bloco de referência, o codificador de vídeo pode interpolar amostras do bloco de referência a partir de amostras da imagem de referência. Por exemplo, o codificador de vídeo pode determinar que uma amostra do bloco preditivo é uma média ponderada de duas ou mais amostras da imagem de referência.
[0097] Em alguns exemplos, quando o codificador de vídeo 20 realiza a inter-predição unidirecional, o codificador de vídeo 20 procura um bloco de referência dentro de uma ou mais imagens de referência em uma dentre as listas de imagens de referência. O bloco de referência pode ser um bloco de amostras que é similar ao bloco de predição. Em alguns exemplos, o codificador de vídeo 20 usa um erro quadrático médio para determinar a similaridade entre o bloco de referência e o bloco de predição. Adicionalmente, o codificador de vídeo 20 pode determinar informações de movimento para o bloco de predição. As informações de movimento (isto é, os parâmetros de movimento) para o bloco de predição podem incluir um vetor de movimento e um índice de referência. O vetor de movimento pode indicar um deslocamento espacial entre uma posição do bloco de vídeo particular dentro da imagem atual (isto é, a imagem que inclui o bloco de vídeo particular) e uma posição do bloco de referência dentro da imagem de referência. O índice de referência indica uma posição dentro da lista de imagens de referência do quadro de referência que contém a lista de imagens de referência. O bloco preditivo para o bloco de vídeo particular pode ser igual ao bloco de referência.
[0098] Quando o codificador de vídeo 20 realiza a inter-predição bidirecional para um bloco de vídeo particular, o codificador de vídeo 20 pode procurar um primeiro bloco de referência dentro de imagens de referência em uma primeira lista de imagens de referência (“lista 0”) e pode procurar um segundo bloco de referência dentro de imagens de referência em uma segunda lista de imagens de referência (“lista 1”). o codificador de vídeo 20 pode gerar, com base pelo menos em parte, no primeiro e no segundo blocos de referência, o bloco premeditado para o bloco de vídeo particular. Além disso, o codificador de vídeo 20 pode gerar um primeiro vetor de movimento que indica um deslocamento espacial entre o bloco de vídeo particular e o primeiro bloco de referência. o codificador de vídeo 20 também pode gerar um primeiro índice de referência que identifica um local dentro da primeira lista de imagens de referência da imagem de referência que contém o primeiro bloco de referência. Adicionalmente, o codificador de vídeo 20 pode gerar um segundo vetor de movimento que indica um deslocamento espacial entre o bloco de vídeo particular e o segundo bloco de referência. o codificador de vídeo 20 também pode gerar um segundo índice de referência que identifica um local dentro da segunda lista de imagens de referência da imagem de referência que inclui o segundo bloco de referência.
[0099] Quando o codificador de vídeo 20 realiza a inter-predição unidirecional em um bloco de vídeo particular, o decodificador de vídeo 30 pode usar as informações de movimento do bloco de vídeo particular para identificar o bloco de referência do bloco de vídeo particular. O decodificador de vídeo 30 pode, então, gerar o bloco preditivo do bloco de vídeo particular com base no bloco de referência. Quando o codificador de vídeo 20 realiza a inter-predição bidirecional para determinar um bloco preditivo para um bloco de vídeo particular, o decodificador de vídeo 30 pode usar as informações de movimento do bloco de vídeo particular para determinar dois blocos de referência. O decodificador de vídeo 30 pode gerar o bloco preditivo do bloco de vídeo particular com base nas duas amostras de referência do bloco de vídeo particular. Dessa forma, para a inter-predição unidirecional ou inter-predição bidirecional, o codificador de vídeo 20 e o decodificador de vídeo 30 podem determinar um bloco preditivo com base em um vetor de movimento de um bloco.
[0100] O codificador de vídeo 20 pode sinalizar informações de movimento de uma unidade de vídeo de várias maneiras. Essas informações de movimento podem incluir vetores de movimento, índices de referência, indicadores de lista de imagens de referência e/ou outros dados relacionados a movimento. Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem usar a predição de movimento para reduzir a quantidade de dados usados para sinalizar informações de movimento. A predição de movimento pode compreender a determinação de informações de movimento de uma unidade de vídeo (por exemplo, uma PU)
com base em informações de movimento de uma ou mais outras unidades de vídeo. Existem vários tipos de predição de movimento. Por exemplo, o modo de mesclagem e o modo de predição de vetor de movimento avançado (AMVP) são dois tipos de predição de movimento. Ou seja, no padrão HEVC, existem dois modos de inter-predição, chamados modo de mesclagem (ignorar é considerado um caso especial de mesclagem) e modo de predição de vetor de movimento avançado (AMVP), respectivamente, para uma unidade de predição (PU). No modo AMVP ou mesclagem, uma lista de candidatos de vetor de movimento (MV) é mantida para múltiplos preditores de vetor de movimento. Consultar J.-L. Lin, Y.-W. Chen, Y.-W. Huang e S.-M. Lei, “Motion vector coding in the HEVC standard”, Selected Topics in Signal Processing, IEEE Journal of, vol. 7, no. 6, páginas 957 a 968, 2013.
[0101] No modo de mesclagem, o codificador de vídeo 20 gera uma lista de candidatos. A lista de candidatos inclui um conjunto de candidatos que indicam as informações de movimento de uma ou mais unidades de vídeo de origem. As unidades de vídeo de origem podem espacial ou temporalmente vizinhas a uma unidade de vídeo atual. Adicionalmente, no modo de mesclagem, o codificador de vídeo 20 pode selecionar um candidato a partir da lista de candidatos e pode usar as informações de movimento indicadas pelo candidato selecionado como as informações de movimento da unidade de vídeo atual. O codificador de vídeo 20 pode sinalizar a posição na lista de candidatos do candidato selecionado. O decodificador de vídeo 30 pode determinar, com base em informações obtidas a partir de um fluxo de bits, o índice na lista de candidatos. Além disso, o decodificador de vídeo 30 pode gerar a mesma lista de candidatos e pode determinar, com base no índice, o candidato selecionado. O decodificador de vídeo 30 pode então usar as informações de movimento do candidato selecionado para gerar um bloco preditivo para a unidade de vídeo atual.
[0102] O modo de ignorar é similar ao modo de mesclagem. No modo ignorar, o codificador de vídeo 20 e o decodificador de vídeo 30 geram e usam uma lista de candidato da mesma maneira que o codificador de vídeo 20 e o decodificador de vídeo 30 usam a lista de candidato no modo de mesclagem. No entanto, quando o codificador de vídeo 20 sinaliza as informações de movimento de uma unidade de vídeo atual com o uso do modo de ignorar, o codificador de vídeo 20 não sinaliza quaisquer dados residuais para a unidade de vídeo atual. Por conseguinte, o decodificador de vídeo 30 pode determinar, sem o uso de dados residuais, um bloco preditivo para a unidade de vídeo com base em um ou mais blocos de referência indicados pelas informações de movimento de um candidato selecionado na lista de candidatos.
[0103] Para o modo de ignorar e o modo de mesclagem, um índice de mesclagem é sinalizado para indicar qual candidato na lista de candidatos de mesclagem é usado. Nenhum indicador de inter-predição, índice de referência ou diferença de vetor de movimento é transmitido. Dois ou mais tipos de candidatos de mesclagem são considerados no modo de mesclagem, incluindo: preditores de vetor de movimento espacial (SMVPs) e preditores de vetor de movimento temporal (TMVPs). Para a derivação de SMVP, um máximo de quatro candidatos de mesclagem é selecionado entre os candidatos que estão situados em posições conforme representado na Figura 2. A ordem de derivação é A1 → B1 → B0 → A0 → (B2). Em HEVC, a posição B2 é considerada apenas quando qualquer PU da posição A1, B1, B0, A0 não está disponível ou é intra-codificada ou o número total de candidatos, após a remoção, das posições A1, B1, B0, A0 é menor que quatro.
[0104] Na derivação de um TMVP, um vetor de movimento escalonado é derivado com base em uma PU co- localizada que pertence a uma das imagens de referência de uma imagem atual dentro de uma lista de imagens de referência sinalizada. A lista de imagens de referência usada para a derivação da PU co-localizada pode ser explicitamente sinalizada em um cabeçalho de fatia da imagem atual. O vetor de movimento escalonado para o candidato de mesclagem temporal pode ser obtido com o vetor de movimento escalonado da PU co-localizada com o uso das distâncias de POC, tb e td, em que tb é definido como sendo a diferença da POC entre a imagem de referência da imagem atual e a imagem atual e td é definida como sendo a diferença de POC entre a imagem de referência da imagem co- localizada e a imagem co-localizada. O índice da imagem de referência do candidato de mesclagem temporal é definido igual a zero. Uma realização prática do processo de escalonamento é descrita na especificação preliminar de HEVC, que está disponível em https://www.itu.int/rec/T-REC- H.265. Para uma fatia B, dois vetores de movimento, um para a lista de imagens de referência 0 e o outro para a lista de imagens de referência 1, são obtidos e combinados para fabricar o candidato de mesclagem bi-preditivo.
[0105] A posição da PU co-localizada é selecionada entre duas posições candidatas, C e H, conforme representado na Figura 2. Se a PU na posição H não estiver disponível, for intra-codificada ou estiver fora de uma fileira de CTU atual (isto é, uma fileira de CTU que contém a PU atual), a posição C é usada. De outro modo, a posição H é usada para a derivação do candidato de mesclagem temporal.
[0106] Além de SMVPs e TMVPs, pode existir dois tipos de candidatos de mesclagem sintética: (1) MVP bi- preditivo combinado e (2) MVP zero. Os MVPs bi-preditivos combinados são gerados com o uso de um SMVP e um TMVP. Em HEVC, os candidatos de mesclagem bi-preditiva combinados são usados apenas para fatias B. Por exemplo, dois candidatos na lista de candidatos de mesclagem original, que têm mvL0 e refldxL0 ou mvL1 e refldxL1, são usados para criar um candidato de mesclagem bi-preditivo combinado. Um MVP zero tem um ou mais vetores de movimento com magnitudes de 0.
[0107] No processo de seleção de candidatos, candidatos duplicados que têm os mesmos parâmetros de movimento que o candidato anterior na ordem de processamento podem ser removidos da lista de candidatos. Este processo é definido como um processo de remoção. Além disso, os candidatos dentro da mesma região de estimação de mesclagem (MER) não são considerados, a fim de ajudar no processamento de mesclagem paralelo. Os formatos de partição redundantes são evitados para não emular uma partição 2Nx2N virtual.
[0108] Entre cada etapa da geração de um candidato de mesclagem na lista de candidatos de mesclagem, o processo de derivação pode ser interrompido se o número de candidatos de mesclagem alcançar MaxNumMergeCand. Em HEVC e potencialmente em outros codecs, o MaxNumMergeCand é definido igual a cinco. À medida que o número de candidatos é constante, um índice de um melhor candidato de mesclagem pode ser codificado com o uso de binarização unária truncada.
[0109] O modo AMVP é similar ao modo de mesclagem pelo fato de que o codificador de vídeo 20 pode gerar uma lista de candidatos e pode selecionar um candidato a partir da lista de candidatos. No entanto, para cada respectivo bloco de referência usado na determinação de um bloco preditivo para um bloco atual (isto é, unidade de vídeo), o codificador de vídeo 20 pode sinalizar uma respectiva diferença de vetor de movimento (MVD) para o bloco atual, um respectivo índice de referência para o bloco atual e um respectivo índice de candidato que indica um candidato selecionado na lista de candidatos. Um MVD para um bloco pode indicar uma diferença entre um vetor de movimento do bloco e um vetor de movimento do candidato selecionado. O índice de referência para o bloco atual indica uma imagem de referência a partir da qual um bloco de referência é determinado.
[0110] Adicionalmente, quando o modo AMVP é usado, para cada respectivo bloco de referência usado na determinação de um bloco preditivo para o bloco atual, o decodificador de vídeo 30 pode determinar um MVD para o bloco atual, um índice de referência para o bloco atual e um índice de candidato e um sinalizador de predição de vetor de movimento (MVP). O decodificador de vídeo 30 pode gerar a mesma lista de candidatos e pode determinar, com base no índice de candidato, um candidato selecionado na lista de candidatos. Como antes, essa lista pode incluir vetores de movimento de blocos vizinhos que estão associados ao mesmo índice de referência, bem como um preditor de vetor de movimento temporal que é derivado com base nos parâmetros de movimento do bloco vizinho do bloco co-localizado em uma imagem de referência temporal. O decodificador de vídeo 30 pode recuperar um vetor de movimento da PU atual mediante a adição do MVD ao vetor de movimento indicado pelo candidato de AMVP selecionado. Isto é, o decodificador de vídeo 30 pode determinar, com base em um vetor de movimento indicado pelo candidato de AMVP selecionado e no MVD, o vetor de movimento da PU atual. O decodificador de vídeo 30 pode, então, usar o vetor de movimento recuperado ou vetores de movimento da PU atual para gerar blocos preditivos para a PU atual.
[0111] Quando um codificador de vídeo (por exemplo, codificador de vídeo 20 ou decodificador de vídeo 30) gera uma lista de candidatos de AMVP para uma PU atual, o codificador de vídeo pode derivar um ou mais candidatos de AMVP com base nas informações de movimento de PUs (isto é, PUs espacialmente vizinhas), que abrangem locais que são espacialmente vizinhos à PU atual e um ou mais candidatos a AMVP com base nas informações de movimento de PUs que são temporariamente vizinhas à PU atual. Nesta revelação, pode- se dizer que uma PU (ou outro tipo de unidade ou bloco de vídeo) “abrange” um local se um bloco de predição da PU (ou outro tipo de bloco de amostra da unidade de vídeo) incluir o local. A lista de candidatos pode incluir vetores de movimento de blocos vizinhos que estão associados ao mesmo índice de referência, bem como um preditor de vetor de movimento temporal que é derivado com base nos parâmetros de movimento (isto é, informações de movimento) do bloco vizinho do bloco co-localizado em uma imagem de referência temporal. Um candidato em uma lista de candidato de mesclagem ou uma lista de candidatos de AMVP que tem por base as informações de movimento de uma PU que é temporalmente vizinha a uma PU atual (isto é, uma PU que está em um instante de tempo diferente da PU atual) pode ser mencionado como um TMVP Um TMVP pode ser usado para aperfeiçoar a eficiência da codificação de HEVC e, diferente de outras ferramentas de codificação, um TMVP pode precisar acessar um vetor de movimento de um quadro em um armazenamento temporário de imagem decodificada, mais especificamente em uma lista de imagens de referência.
[0112] Para o modo AMVP, um indicador de inter- predição é transmitido para denotar a predição de lista 0, a predição de lista 1 ou a bi-predição. Em seguida, um ou dois índices de referência são transmitidos quando existem várias imagens de referência. Um índice é transmitido para cada direção de predição para selecionar um candidato de movimento a partir da lista de candidatos. Conforme mostrado na Figura 2, a lista de candidatos para o modo inter inclui dois candidatos de movimento espacial e um candidato de movimento temporal:
1. Candidato esquerdo (o primeiro disponível a partir de A0, A1)
2. Candidato superior (o primeiro disponível a partir de B0, B1, B2)
3. Candidato temporal (o primeiro disponível a partir de H e C)
[0113] Em HEVC, um codificador de vídeo procura o candidato de movimento espacial esquerdo a partir da esquerda abaixo para a esquerda (isto é, A0 e A1) e o codificador de vídeo seleciona o primeiro disponível como o candidato esquerdo. O codificador de vídeo procura o candidato de movimento espacial superior da direita acima para a esquerda acima (isto é, B0, B1 e B2) e o codificador de vídeo seleciona o primeiro disponível como o candidato superior. O codificador de vídeo pode selecionar um candidato de movimento temporal a partir de um bloco (H ou C) situado em uma imagem de referência, que é chamada de uma imagem co-localizada temporal. A imagem co-localizada temporal é indicada pela transmissão de um sinalizador em um cabeçalho de fatia para especificar qual lista de imagens de referência e um índice de referência no cabeçalho de fatia para indicar qual imagem de referência na lista de referência é usada como imagem de referência co-localizada. Em HEVC, depois que o índice é transmitido, uma ou duas diferenças de vetor de movimento (MVDs) correspondentes são transmitidas.
[0114] Além disso, em HEVC e potencialmente em outros codecs, um tamanho fixo de lista de candidatos é usado para desacoplar a construção de lista de candidatos e a análise do índice. Para compensar a perda de desempenho de codificação causada pelo tamanho fixo de lista,
candidatos adicionais são atribuídos às posições vazias na lista de candidatos. Nesse processo, o índice é codificado em códigos unários truncados de um comprimento máximo, em que o comprimento máximo é transmitido no cabeçalho de fatia para o modo de ignorar e modo de mesclagem e fixado em 2 para o modo inter. Conforme descrito acima, para o modo de ignorar e modo de mesclagem, após a derivação e remoção dos quatro candidatos de movimento espacial e de um candidato de movimento temporal, se o número de candidatos disponíveis for menor que o tamanho fixo de lista de candidatos, candidatos sintéticos adicionais são derivados e adicionados para preencher as posições vazias na lista de candidatos de mesclagem. Para o modo AMVP, um candidato de movimento de vetor zero é adicionado para preencher as posições vazias na lista de candidatos de AMVP após a derivação e remoção dos dois candidatos de movimento espacial e do um candidato de movimento temporal.
[0115] No software de referência JEM, existem várias ferramentas de inter-codificação que derivam e/ou refinam o vetor de movimento (MV) para um bloco atual no lado de decodificador ou usam um modelo de movimento afim. Essas novas abordagens de inter-predição são elaboradas abaixo.
[0116] O modo de derivação de vetor de movimento com correspondência de padrão (PMMVD) é um modo de mesclagem especial com base nas técnicas de conversão ascendente de taxa de quadros (FRUC). Com o modo PMMVD, as informações de movimento de um bloco não são sinalizadas, mas são, em vez disso, derivadas no lado do decodificador. Um sinalizador de FRUC é sinalizado para um bloco (por exemplo, CU) quando seu sinalizador de mesclagem é verdadeiro. Quando o sinalizador de FRUC é falso, um índice de mesclagem é sinalizado e o modo de mesclagem regular é usado. Quando o sinalizador de FRUC é verdadeiro, um sinalizador de modo FRUC adicional é sinalizado para indicar qual método (correspondência bilateral ou correspondência de modelo) deve ser usado para derivar informações de movimento para o bloco.
[0117] No lado do codificador, a decisão de usar o modo de mesclagem de FRUC para uma CU pode ter por base a seleção de custo de taxa/distorção (RD), conforme é feito para os candidatos de mesclagem normais. Ou seja, os dois modos de correspondência (correspondência bilateral e correspondência de modelo) podem ambos ser verificados quanto a uma CU com o uso de seleção de custo de RD. O modo que leva ao custo mínimo é adicionalmente comparado com outros modos de CU. Se um modo de correspondência de FRUC for o modo mais eficaz, o sinalizador de FRUC é definido como verdadeiro para a CU e o modo de correspondência relacionado é usado.
[0118] O processo de derivação de movimento no modo de mesclagem de FRUC inclui duas etapas. Uma pesquisa de movimento no nível de CU pode ser realizada primeiro, seguido de um refinamento de movimento no nível de sub-CU. No nível de CU, um vetor de movimento inicial (isto é, um MV inicial) é derivado para toda a CU com base na correspondência bilateral ou na correspondência de modelo. Primeiramente, é gerada uma lista de candidatos de MV (candidatos de MV de FRUC) e o candidato que leva ao custo de correspondência mínimo é selecionado como um ponto de partida para o refinamento de nível de CU adicional. Então, é realizada uma pesquisa local com base na correspondência bilateral ou na correspondência de modelo em torno do ponto de partida e o MV que resulta no custo mínimo de correspondência é tomado como o MV para toda a CU. Subsequentemente, as informações de movimento são adicionalmente refinadas no nível de sub-CU com os vetores de movimento de CU derivados como os pontos de partida.
[0119] Por exemplo, o seguinte processo de derivação pode ser realizado para uma derivação de informações de movimento W x H CU, em que W é largura e H é altura. No primeiro estágio, é derivado um MV para toda a W x H CU. No segundo estágio, a CU é adicionalmente dividida em M x M sub-CUs. O valor de M é calculado conforme na equação (1) abaixo, D é uma profundidade de divisão predefinida que é definida para 3 por padrão no JEM. Então, o MV para cada sub-CU é derivado.
[0120] Conforme mostrado na Figura 3, a correspondência bilateral é usada para derivar informações de movimento de uma CU atual, encontrando-se a melhor correspondência entre dois blocos ao longo da trajetória de movimento da CU atual em duas imagens de referência diferentes. Sob a suposição de trajetória de movimento contínuo, os vetores de movimento MV0 e MV1 que apontam para os dois blocos de referência são proporcionais às distâncias temporais, isto é, TD0 e TD1, entre a imagem atual e as duas imagens de referência. Como um caso especial, quando a imagem atual é temporalmente entre as duas imagens de referência e a distância temporal a partir da imagem atual até as duas imagens de referência é igual, a correspondência bilateral se torna MV bidirecional com base em espelho.
[0121] Conforme mostrado na Figura 4, a correspondência de modelo é usada para derivar informações de movimento da CU atual, encontrando-se a melhor correspondência entre um modelo (blocos vizinhos superiores e/ou esquerdos da CU atual) na imagem atual e um bloco (mesmo tamanho que o modelo) em uma imagem de referência. Exceto pelo modo de mesclagem de FRUC mencionado anteriormente, a correspondência de modelo também é aplicada ao modo AMVP. No JEM, como em HEVC, o AMVP tem dois candidatos. Com o método de correspondência de modelo, um novo candidato é derivado. Se o candidato recém-derivado por correspondência de modelo for diferente do primeiro candidato de AMVP existente, o candidato recém-derivado é inserido no início da lista de candidatos de AMVP e, então, o tamanho da lista é definido para dois (o que significa remover o segundo candidato de AMVP existente). Quando aplicada ao modo AMVP, apenas uma pesquisa no nível da CU é aplicada.
[0122] Em um conjunto de candidatos de MV de FRUC no nível de CU, o conjunto de candidatos de MV no nível de CU compreende ou consiste em: (i) Candidatos de AMVP originais se a CU atual estiver no modo AMVP (ii) todos os candidatos de mesclagem, (iii) vários MVs em um campo de MV interpolado, que são introduzidos em outro lugar nesta revelação (iv) vetores de movimento vizinhos superior e esquerdo
[0123] Mediante o uso da correspondência bilateral, cada MV válido de um candidato de mesclagem é usado como uma entrada para gerar um par de MV com a suposição de correspondência bilateral. Por exemplo, um MV válido de um candidato de mesclagem é (MVa, refa) na lista de referência A. Então, a imagem de referência refb de seu MV bilateral emparelhado é encontrada na outra lista de referência B, de modo que refa e refb estejam temporalmente em lados diferentes da imagem atual. Se tal refb não estiver disponível na lista de referência B, refb é determinado como uma referência que é diferente de refa e sua distância temporal para a imagem atual é a mínima na lista B. Depois que refb é determinado, MVb é derivado escalonando-se MVa com base na distância temporal entre a imagem atual e refa, refb.
[0124] Quatro MVs a partir do campo de MV interpolado também podem ser adicionados à lista de candidatos no nível da CU. Mais especificamente, os MVs interpolados na posição (0,0), (W/2, 0), (0, H/2) e (W/2, H/2) da CU atual podem ser adicionados. Quando FRUC é aplicado no modo AMVP, os candidatos de AMVP originais também podem ser adicionados ao conjunto de candidatos de MV no nível de CU. No nível de CU, até 15 MVs para CUs de AMVP e até 13 MVs para CUs de mesclagem são adicionados à lista de candidatos. Nesta revelação, uma CU de AMVP é uma CU em que as informações de movimento são preditas com o uso de um modo AMVP. Adicionalmente, nesta revelação, uma
CU de mesclagem é uma CU em que as informações de movimento são preditas com o uso do modo de mesclagem.
[0125] Em alguns exemplos, o conjunto de candidato de MV no nível de sub-CU consiste em: (i) um MV determinado a partir de uma pesquisa de nível de CU, (ii) MVs vizinhos superior, esquerdo, superior esquerdo e superior direito, (iii) versões escalonadas de MVs co-localizados a partir de imagens de referência, (iv) até 4 candidatos de predição de vetor de movimento temporal avançado (ATMVP), (v) até 4 candidatos de predição de vetor de movimento espaço-temporal (STMVP).
[0126] Os MVs escalonados das imagens de referência podem ser derivados conforme exposto a seguir. Todas as imagens de referência em ambas as listas são percorridas. Os MVs em uma posição co-localizada da sub-CU em uma imagem de referência são escalonados para a referência do MV inicial de nível de CU. Ou seja, similar a TMVPs em HEVC, os MVs na posição co-localizada podem ser escalonados de acordo com a distância de POC. Os candidatos de ATMVP e STMVP são limitados a até quatro candidatos de ATMV e STMVP. No nível de sub-CU, são adicionados até 17 MVs à lista de candidatos.
[0127] Conforme mencionado acima, em um conjunto de candidatos de MV de FRUC de nível de CU, o conjunto de candidato de MV no nível de CU pode incluir um ou mais MVs em um campo de MV interpolado. Antes de codificar um quadro, o campo de movimento interpolado (isto é, campo de
MV interpolado) é gerado para toda a imagem com base na estimação de movimento unilateral. O campo de movimento pode ser usado posteriormente como candidatos de MV de nível de CU ou nível de sub-CU. Primeiramente, o campo de movimento de cada imagem de referência em ambas as listas de referência pode ser percorrido em um nível de bloco 4x4. A Figura 5 é um exemplo de estimação de movimento unilateral em conversão ascendente de taxa de quadro. A imagem 500 na Figura 5 é uma imagem de referência para uma imagem atual. A imagem atual tem um tempo de saída que corresponde ao tempo de saída da imagem 502. A imagem 504 é uma imagem de referência para a imagem 500. Um codificador de vídeo usa vetores de movimento de blocos na imagem 500 que apontam para locais na imagem 504 para interpolar amostras da imagem atual. A imagem 502 contém as amostras interpoladas resultantes. Em alguns exemplos, para cada bloco 4x4 na imagem 500 da Figura 5, se ao movimento associado ao bloco 4x4 que passa através de um bloco 4x4 na imagem atual e ao bloco 4x4 não tiver sido atribuído qualquer movimento interpolado, o movimento do bloco de referência é escalonado para a imagem atual de acordo com a distância temporal TD0 e TD1 (da mesma maneira que o escalonamento de MV de TMVP em HEVC) e o movimento escalonado é atribuído ao bloco no quadro atual. Se nenhum MV escalonado for atribuído a um bloco 4x4 no quadro atual, o movimento do bloco no quadro atual será marcado como indisponível no campo de movimento interpolado. Em outros exemplos, outros tamanhos de bloco podem ser usados.
[0128] Quando um vetor de movimento aponta para uma posição de amostra fracionária, pode ser necessária a interpolação compensada por movimento. A interpolação com compensação de movimento pode interpolar valores de amostra para locais entre amostras reais de uma imagem de amostras reais da imagem. Para manter a complexidade da interpolação compensada por movimento baixa, a interpolação bi-linear em vez da interpolação HEVC regular de 8 derivações pode ser usada tanto para a correspondência bilateral como para a correspondência de modelo. O cálculo do custo de correspondência é diferente em diferentes etapas. Por exemplo, mediante a seleção do melhor candidato a partir do conjunto de candidatos no nível de CU, o custo de correspondência é a diferença de soma absoluta (SAD) de correspondência bilateral ou correspondência de modelo. Depois que o MV inicial é determinado, o custo de correspondência C pode ser calculado com o uso da equação (2) abaixo: Na equação (2), w é um fator de ponderação que é definido empiricamente para 4, MV e MVS indicam o MV atual e o MV inicial, respectivamente (MVX e 𝑀𝑉𝑋𝑆 sendo os componentes horizontais do MV atual e do MV inicial, respectivamente; MVY e 𝑀𝑉𝑌𝑆 sendo os componentes verticais do MV atual e do MV inicial, respectivamente) e |.| indica valor absoluto.
[0129] Em alguns exemplos, no modo FRUC, um MV é derivado com o uso de apenas amostras luma. Em tais exemplos, o movimento derivado pode ser usado tanto para luma como para croma para a inter-predição de compensação de movimento. Depois que o MV é derivado, uma compensação de movimento final é realizada com o uso de um filtro de interpolação de 8 derivações para luma e um filtro de interpolação de 4 derivações para croma.
[0130] O refinamento de MV pode incluir uma pesquisa de MV com base em padrão com o critério de custo de correspondência bilateral ou custo de correspondência de modelo. No JEM, dois padrões de pesquisa são suportados: (1) pesquisa irrestrita de diamante com desvio centralizado (UCBDS - Unrestricted Center-Biased Diamond Search) e (2) pesquisa cruzada adaptável para refinamento de MV no nível de CU e no nível de sub-CU, respectivamente. Para o refinamento de MV tanto de nível de CU como de sub-CU, o MV pode ser pesquisado diretamente com precisão de MV de amostra de luma de um quarto, que pode ser, então, seguido do refinamento de MV de amostra de luma de um oitavo. A faixa de pesquisa de refinamento de MV tanto para a etapa de CU como de sub-CU pode ser definida igual a 8 amostras de luma.
[0131] Um codificador de vídeo pode selecionar uma direção de predição no modo de mesclagem de FRUC de correspondência de modelo conforme exposto a seguir. No modo de mesclagem de correspondência bilateral, a bi- predição é sempre aplicada devido ao fato de que as informações de movimento de uma CU são derivadas com base na melhor correspondência entre dois blocos ao longo da trajetória de movimento da CU atual em duas imagens de referência diferentes. No JEM, não existe tal limitação para o modo de mesclagem de correspondência de modelo. No modo de mesclagem de correspondência de modelo, um codificador de vídeo pode selecionar entre uni-predição a partir de list0, uni-predição a partir de list0 ou bi-
predição para uma CU. A seleção pode ter por base um custo de correspondência de modelo conforme exposto a seguir: Sequência 1 Se costBi <= factor x min (cost0, cost1), bi-predição é usada; Senão SE cost0 <= cost1, uni-predição a partir de list0 é usada; Senão, uni-predição a partir de list1 é usada; No pseudocódigo da Sequência 1, acima, cost0 é a SAD da correspondência de modelo list0, cost1 é a SAD de correspondência de modelo list1 e costBi é a SAD de correspondência de modelo de bi-predição. O valor do factor é igual a 5/4, o que significa que o processo de seleção é inclinado para bi-predição. No JEM, a seleção da direção de inter-predição é aplicada apenas ao processo de correspondência de modelo de nível de CU.
[0132] Em uma operação de correspondência de modelo de bi-predição, para a predição de uma região de bloco, dois blocos de predição, formados com o uso de um MV de list0 e um MV de list1, respectivamente, são combinados para formar um único sinal de predição. No método de refinamento de vetor de movimento do lado de decodificador (DMVR), os dois vetores de movimento da bi-predição são adicionalmente refinados por um processo de correspondência de modelo bilateral. A correspondência de modelo bilateral pode ser aplicada no decodificador de vídeo 30 para realizar uma pesquisa à base de distorção entre um modelo bilateral e as amostras de reconstrução nas imagens de referência, a fim de obter um MV refinado sem transmissão de informações de movimento adicionais.
[0133] Em DMVR, um modelo bilateral é gerado como uma combinação ponderada (isto é, média) dos dois blocos de predição, a partir do MV0 inicial de list0 e MV1 de list1, respectivamente, conforme mostrado na Figura 6. A operação de correspondência de modelo pode incluir ou consistir em calcular medidas de custo entre o modelo bilateral gerado e a região de amostra (ao redor do bloco de predição inicial) na imagem de referência. Para cada uma dentre as duas imagens de referência, o MV que rende o custo de modelo mínimo pode ser considerado como o MV atualizado dessa lista para substituir aquele original. O custo de modelo pode ser calculado como a soma das diferenças absolutas (SAD) ou a soma das diferenças ao quadrado (SSD) entre o modelo atual e as amostras de referência. No JEM, nove candidatos de MV são pesquisados para cada lista. Os nove candidatos de MV incluem o MV original e 8 MV circundantes, com uma amostra de luma deslocada para o MV original na direção horizontal ou vertical, ou em ambas. Finalmente, os dois novos MVs, isto é, MV0’ e MV1’, conforme mostrado na Figura 6, são usados para gerar os resultados de bi- predição final. Uma SAD pode ser usada como a medida de custo. A Figura 6 é um DMVR proposto com base na correspondência de modelo bilateral.
[0134] Dessa forma, no exemplo da Figura 6, um bloco atual 600 em uma imagem atual 602 tem um primeiro vetor de movimento 604 (MV0) e um segundo vetor de movimento 606 (MV1). O vetor de movimento 604 aponta para um bloco de referência 608 em uma imagem de referência de list0 610. O vetor de movimento 606 aponta para um bloco de referência 612 em uma imagem de referência de list1 614. O bloco de referência 608 e o bloco de referência 612 também podem ser denominados no presente documento como blocos de predição. Após a identificação do bloco de referência 608 e do bloco de referência 612, um codificador de vídeo pode gerar um bloco preditivo 616 como uma média ponderada do bloco de referência 608 e do bloco de referência 612. O bloco preditivo 616 também pode ser denominado no presente documento como um modelo bilateral. Por conseguinte, no exemplo da Figura 6, o codificador de vídeo pode gerar um modelo bilateral a partir de blocos de predição mencionados por MV0 e MV1. Adicionalmente, o codificador de vídeo pode procurar na imagem de referência 610 por um bloco que melhor corresponda ao bloco preditivo 616. No exemplo da Figura 6, o codificador de vídeo identificou o bloco 618 da imagem de referência 610 como a melhor correspondência para o bloco preditivo 616. O codificador de vídeo também pode procurar na imagem de referência 614 por um bloco que melhor corresponda ao bloco preditivo 616. No exemplo da Figura 6, o codificador de vídeo identificou o bloco 620 como a melhor correspondência para o bloco preditivo 616. Um vetor de movimento 622 (MV0’) indica um deslocamento espacial entre o bloco atual 600 e o bloco 618. Um vetor de movimento 624 (MV1’) indica um deslocamento espacial entre o bloco atual 600 e o bloco 620.
[0135] O DMVR pode ser aplicado para o modo de mesclagem de bi-predição com um MV a partir de uma imagem de referência no passado e outro a partir de uma imagem de referência no futuro, sem a transmissão de elementos de sintaxe adicionais. EM JEM5, quando a compensação de iluminação local (LIC), candidato de mesclagem de sub-CU, FRUC ou movimento afim é habilitado para uma CU, o DMVR não é aplicado.
[0136] No JEM com QTBT, cada CU pode ter no máximo um conjunto de movimentos para cada direção de predição. Dois métodos de predição de vetor de movimento de nível de sub-CU são fornecidos mediante a divisão de uma CU grande em sub-CUs e derivando-se informações de movimento para todas as sub-CUs da CU grande. O método de predição de vetor de movimento temporal avançado (ATMVP) permite que cada CU busque múltiplos conjuntos de informações de movimento de múltiplos blocos menores que a CU atual na imagem de referência co-localizada. No método de predição de vetor de movimento espaço-temporal (STMVP), os vetores de movimento das sub-CUs são derivados recursivamente com o uso do preditor de vetor de movimento temporal e do vetor de movimento vizinho espacial. Para preservar um campo de movimento mais preciso para a predição de movimento de sub- CU, a compactação de movimento para os quadros de referência está atualmente desabilitada no JEM.
[0137] No método de predição de vetor de movimento temporal avançado (ATMVP), a predição de vetor de movimento temporal (TMVP) é aperfeiçoada permitindo-se que cada CU busque múltiplos conjuntos de informações de movimento (incluindo vetores de movimento e índices de referência) a partir de múltiplos blocos menores que a CU atual. Conforme mostrado na Figura 7, as sub-CUs são NxN blocos quadrados (N é definido como 4 por padrão).
[0138] O ATMVP prediz os vetores de movimento das sub-CUs dentro de uma CU em duas etapas. A primeira etapa é identificar o bloco correspondente em uma imagem de referência com o chamado vetor temporal. A imagem de referência é chamada de imagem de origem de movimento. A segunda etapa é dividir a CU atual em sub-CUs e obter os vetores de movimento, bem como os índices de referência de cada sub-CU a partir do bloco que corresponde a cada sub- CU, conforme mostrado na Figura 7.
[0139] A Figura 7 mostra a predição de movimento de ATMVP para uma CU atual 700 em uma imagem atual 702. Na primeira etapa, uma imagem de referência 704 e um bloco correspondente 706 são determinados pelas informações de movimento dos blocos vizinhos espaciais da CU atual 700. A imagem de referência 704 também pode ser denominada como a imagem de origem de movimento 704 devido ao fato de que um codificador de vídeo usa a imagem de origem de movimento 704 como uma origem de informações de movimento para a CU atual 700 na imagem atual 702. Para evitar o processo repetitivo de varredura de blocos vizinhos, as informações de movimento do primeiro candidato de mesclagem em uma lista de candidatos de mesclagem da CU atual 700 são usadas para determinar a imagem de referência 704 e o bloco correspondente 706. O primeiro vetor de movimento disponível, bem como seu índice de referência associado, é configurado para ser um vetor temporal 708 e o índice para a imagem de origem de movimento 704. Dessa maneira, em ATMVP, o bloco correspondente 706 pode ser identificado com mais precisão, em comparação com o TMVP, em que o bloco correspondente (às vezes chamado de bloco co-localizado) está sempre em uma posição inferior direita ou central em relação à CU atual 700.
[0140] Na segunda etapa, um bloco correspondente de uma sub-CU da CU atual 700 é identificado pelo vetor temporal 708 na imagem de origem de movimento 704, mediante a adição do vetor temporal 708 às coordenadas (x, y) da CU atual 700. Para cada sub-CU da CU atual 700, as informações de movimento de seu bloco correspondente (a menor grade de movimento que cobre o pixel central) são usadas para derivar as informações de movimento para a sub-CU. Depois que as informações de movimento de um bloco NxN correspondente são identificadas, as informações de movimento do bloco NxN correspondente são convertidas nos vetores de movimento e nos índices de referência da sub-CU atual, da mesma maneira que TMVP, em que se aplica o escalonamento de movimento e outros procedimentos. Por exemplo, o decodificador de vídeo 30 pode verificar se a condição de baixo atraso é cumprida e possivelmente usa o vetor de movimento MVX (o vetor de movimento que corresponde à lista de imagens de referência X) para predizer o vetor de movimento MVY (com X sendo igual a 0 ou 1 e Y sendo igual a 1-X) para cada sub-CU. Isso é feito da mesma maneira que para a predição de vetor de movimento temporal.
[0141] Na predição de vetor de movimento espaço- temporal, os vetores de movimento das sub-CUs são derivados recursivamente, seguindo a ordem de varredura raster. A Figura 8 ilustra esse conceito. Por exemplo, considere uma CU 8x8 (mostrada na Figura 8 como um quadrado com um contorno mais espesso) que contém quatro sub-CUs 4x4 A, B, C e D, conforme mostrado na Figura 8. Os blocos NxN vizinhos no quadro atual são rotulados como a, b, c e d na
Figura 8.
[0142] A derivação de movimento para sub-CU A começa mediante a identificação de seus dois vizinhos espaciais. O primeiro vizinho é um bloco NxN acima da sub- CU A (bloco c). Se o bloco c não estiver disponível ou for intra-codificado, os outros blocos NxN acima da sub-CU A são verificados (da esquerda para a direita, começando no bloco c). O segundo vizinho é um bloco à esquerda da sub-CU A(bloco b). Se o bloco b não estiver disponível ou for intra-codificado, outros blocos à esquerda da sub-CU A são verificados (de cima para baixo, começando no bloco b). As informações de movimento obtidas a partir dos blocos vizinhos para cada lista são escalonadas para o primeiro quadro de referência para uma determinada lista. Em seguida, um preditor de vetor de movimento temporal (TMVP) do sub-bloco A é derivado seguindo o mesmo procedimento de derivação de TMVP conforme especificado em HEVC e descrito nesta revelação acima. As informações de movimento do bloco co-localizado no local D são buscadas e escalonadas consequentemente. Por fim, após recuperar e escalonar as informações de movimento, todos os vetores de movimento disponíveis (até 3) são promediados separadamente para cada lista de referência. O vetor de movimento promediado é atribuído como o vetor de movimento da sub-CU atual.
[0143] Na sinalização de modo de predição de movimento de sub-CU, os modos de sub-CU são habilitados como candidatos de mesclagem adicionais e não há elemento de sintaxe adicional necessário para sinalizar os modos. Dois candidatos de mesclagem adicionais são adicionados à lista de candidatos de mesclagem de cada CU para representar o modo ATMVP e o modo STMVP. Até sete candidatos de mesclagem são usados, se o conjunto de parâmetros de sequência indicar que o ATMVP e o STMVP estão habilitados. Na lógica de codificação, os candidatos de mesclagem adicionais são iguais aos candidatos no modelo de teste HEVC (HM), o que significa que, para cada CU na fatia P ou B, são necessárias mais duas verificações de RD para os dois candidatos de mesclagem adicionais. Para aperfeiçoar a codificação de índice de mesclagem, no JEM, todos os compartimentos de um índice de mesclagem são codificados por contexto pelo CABAC. Enquanto em HEVC, apenas o primeiro compartimento é codificado por contexto e os compartimentos restantes são codificados por desvio de contexto.
[0144] Pode ser computacionalmente menos dispendioso realizar a codificação CABAC de desvio em um compartimento do que realizar a codificação CABAC regular no compartimento. Adicionalmente, a realização da codificação CABAC de desvio pode permitir um grau maior de paralelização e taxa de transferência. Os compartimentos codificados com o uso de codificação CABAC de desvio podem ser denominados como “compartimentos de desvio”. O agrupamento de compartimentos de desvio juntos pode aumentar a taxa de transferência do codificador de vídeo 20 e do decodificador de vídeo 30. O mecanismo de codificação CABAC de desvio pode ter capacidade para codificar vários compartimentos em um único ciclo, enquanto o mecanismo de codificação CABAC regular pode ter capacidade para codificar apenas um único compartimento em um ciclo. O mecanismo de codificação CABAC de desvio pode ser mais simples devido ao fato de que o mecanismo de codificação CABAC de desvio não seleciona contextos e pode presumir uma probabilidade de 1⁄2 para ambos os símbolos (0 e 1). Consequentemente, na codificação CABAC de desvio, os intervalos são divididos diretamente pela metade. No entanto, a eficiência de compactação pode ser diminuída.
[0145] Em HEVC, apenas um modelo de movimento de translação é aplicado para a predição de compensação de movimento (MCP). No mundo real, existem muitos tipos de movimento, por exemplo, aumentar ou diminuir o zoom, rotação, movimentos de perspectiva e outros movimentos irregulares. No JEM, uma predição de compensação de movimento de transformada afim é aplicada para aperfeiçoar a eficiência de codificação. Se um bloco seguir o modelo de movimento afim, o MV da posição (x, y) no bloco pode ser determinado pelo modelo de movimento afim: Na equação (3), a, b, c, d, e e f são parâmetros afins. Adicionalmente, na equação (3), vX é um componente horizontal do MV da posição (x, y) e vY é um componente vertical do MV da posição (x, y).
[0146] A Figura 9 é um diagrama de blocos de um modelo de movimento afim simplificado para um bloco afim atual 900. Conforme mostrado na Figura 9, o modelo de movimento afim de 6 parâmetros pode ser representado pelo vetor de movimento v0 de um ponto de controle superior esquerdo 902 (x0, y0), pelo vetor de movimento v1 de um ponto de controle superior direito 904 (x1, y1) e pelo vetor de movimento v2 de um ponto de controle inferior esquerdo 906 (x2, y2). Com a suposição de que o ponto de controle superior esquerdo 902 é a origem do sistema de coordenadas, o que significa que (x0, y0) = (0, 0), o MV da posição (x, y) no bloco afim atual 900 é descrito pela equação (4) abaixo: Na equação (4), (v0x, v0y) é o vetor de movimento do ponto de controle do canto superior esquerdo 902, (v1x, v1y) é um vetor de movimento do ponto de controle do canto superior direito 904, (v2x, V2y) é um vetor de movimento do ponto de controle do canto inferior esquerdo 906, w = (x1-x0) é a distância horizontal entre os pontos de controle superior esquerdo e superior direito 902, 904 e h = (y2-y0) é a distância vertical entre os pontos de controle superior esquerdo e inferior esquerdo 902, 906. Na equação (4), vX é um componente horizontal do MV da posição (x, y) e vY é um componente vertical do MV da posição (x, y).
[0147] No entanto, no JEM, o modelo de movimento afim é simplificado para um modelo de movimento afim de 4 parâmetros, presumindo-se a = e e b =-d na equação (3), resultando na expressão de vX e vY, conforme mostrado na equação (5) abaixo: O modelo de movimento afim de 4 parâmetros é então representado pelo vetor de movimento v0 do ponto de controle superior esquerdo 902 (x0, y0), que é presumido como o ponto de origem e pelo vetor de movimento v1 do ponto de controle superior direito 904 (x1, y1). Na equação (5), vX é um componente horizontal do MV da posição (x, y) e vY é um componente vertical do MV da posição (x, y). A Figura 10 é um exemplo de um modelo de movimento afim simplificado para um bloco afim atual 1000. Conforme mostrado na Figura 10, o campo de movimento afim do bloco é descrito por dois vetores de movimento de ponto de controle, v0 e v1. O campo de vetor de movimento (MVF) de um bloco é descrito pela equação (6): Na equação (6), (v0x, v0y) é um vetor de movimento do ponto de controle do canto superior esquerdo 1002, (y1x, v1y) é um vetor de movimento de um ponto de controle do canto superior direito 1004 e v = (x1-x0) é a distância horizontal entre os pontos de controle superior esquerdo e superior direito 1002, 1004. vx é um componente horizontal do MV da posição (x, y) e vy é um componente vertical do MV da posição (x, y).
[0148] A fim de simplificar ainda mais a predição de compensação de movimento, a predição de transformada afim à base de bloco pode ser aplicada. Para derivar um vetor de movimento de cada sub-bloco, o vetor de movimento de uma amostra central de cada sub-bloco, conforme mostrado na Figura 11, é calculado de acordo com a equação (6) e arredondado para a precisão de fração de 1/16. Um codificador de vídeo pode então aplicar filtros de interpolação de compensação de movimento para gerar a predição de cada sub-bloco com o vetor de movimento derivado. Os vetores de movimento interpolados para cada sub-bloco dentro do bloco afim são chamados de campo de vetor de movimento (MVF) de MCP no contexto a seguir. O tamanho de sub-bloco pode variar dependendo da diferença de MV entre os pontos de controle. A Figura 11 é um exemplo de campo de MV de MCP, em que o MV de cada sub-bloco (por exemplo, bloco 4x4) é interpolado pelos MVs dos pontos de controle; o MV é então usado para realizar a predição de compensação de movimento (MCP) para cada sub-bloco. O vetor de movimento de cada sub-bloco pode ser usado para identificar um bloco de referência correspondente, cuja combinação forma um bloco preditivo. Assim, dessa maneira, um codificador de vídeo pode gerar um bloco preditivo com base em um vetor de movimento de um bloco (por exemplo, um vetor de movimento de um ponto de controle do bloco).
[0149] Após a predição da compensação de movimento, o vetor de movimento de alta precisão de cada sub-bloco é arredondado e salvo com a mesma precisão que o vetor de movimento normal. No JEM e em HEVC, os vetores de movimento para cada CU ou PU de inter-predição são armazenados para a predição de MV dos outros inter-blocos.
A unidade de armazenamento para vetores de movimento é um bloco 4x4. Em outras palavras, no JEM, os MVs interpolados de um bloco afim são gerados e armazenados para cada bloco 4x4. No entanto, uma vez que os MVs dos pontos de controle podem ser usados para os seguintes blocos, os MVs armazenados para os blocos 4x4 de canto são os MVs dos pontos de controle, em vez dos MVs associados usados para MCP, conforme mostrado na Figura 12. Observe que, em JEM6, os MVs dos pontos de controle inferior esquerdo e inferior direito também são gerados pelos MVs dos pontos de controle superior esquerdo e superior direito.
[0150] Dessa forma, na Figura 12, uma CU 1200 inclui dezesseis sub-blocos. Para cada respectivo sub-bloco dos doze sub-blocos que não estão nos cantos da CU 1200, um codificador de vídeo armazena o vetor (ou vetores) de movimento para o ponto central do respectivo sub-bloco. Para cada respectivo sub-bloco em um canto da CU 1200, o codificador de vídeo armazena o vetor (ou vetores) de movimento para o canto externo do respectivo sub-bloco.
[0151] No JEM, existem dois modos de movimento afim: modo inter afim (AF_INTER) e modo de mesclagem afim (AF_MERGE). Para CUs tanto com largura como com altura maiores que 8, o modo AF_INTER pode ser aplicado. Um sinalizador afim no nível de CU é sinalizado no fluxo de bits para indicar se o modo AF_INTER é usado. Nesse modo, uma lista de candidatos com o conjunto de vetores de movimento {(MVP0, MVP1) | MVP0 = {vA,vB,vC}, ΜVΡ1 = {vD,vE}} é construída com o uso dos blocos vizinhos. Conforme mostrado na Figura 13, MVP0 é selecionado a partir dos vetores de movimento do bloco A, B ou C. A Figura 13 ilustra um exemplo de MVP para AF_INTER. O vetor de movimento do bloco vizinho é escalonado de acordo com a lista de referência e a relação entre a contagem de ordem de imagem (POC) da referência para o bloco vizinho, a POC da referência para a
CU atual e a POC da CU atual. A abordagem para selecionar MVP1 no bloco vizinho D e E é similar. No JEM, se o número de candidatos na lista de candidatos for menor que 2, a lista é preenchida pelo par de vetores de movimento composto mediante a duplicação de cada um dos candidatos de AMVP {AMVP0, AMVP0} e {AMVP1, AMVP1}.
[0152] Adicionalmente, no JEM, quando o número de candidatos na lista de candidatos é maior que 2, os candidatos são primeiramente classificados de acordo com a consistência dos vetores de movimento vizinhos (similaridade dos dois vetores de movimento em um candidato de par) e apenas os dois primeiros candidatos são mantidos conforme mostrado na parte direita da Figura 13. Um codificador de vídeo pode usar uma verificação de custo de distorção de taxa (RD) para determinar qual candidato de conjunto de vetores de movimento é selecionado como a predição de vetor de movimento de ponto de controle (CPMVP) da CU atual. Um índice que indica a posição do CPMVP na lista de candidatos é sinalizado no fluxo de bits. Depois que a CPMVP da CU afim atual é determinada, a estimação de movimento afim é aplicada e o vetor de movimento de ponto de controle (CPMV) é encontrado. A diferença entre o CPMV e o CPMVP pode então ser sinalizada no fluxo de bits.
[0153] Quando uma CU é aplicada no modo de mesclagem afim (AF_MERGE), a CU obtém o primeiro bloco codificado com o modo afim a partir dos blocos reconstruídos vizinhos válidos com base na ordem de visita: A1 → B1 → B0 → A0 → B2. A ordem de seleção para o bloco candidato é da esquerda, acima, direita superior, esquerda inferior e esquerda superior, conforme mostrado na Figura
14A. Se o bloco inferior esquerdo vizinho A for codificado no modo afim, conforme mostrado na Figura 14B, os vetores de movimento v2, v3 e v4 do canto superior esquerdo, canto direito superior e canto inferior esquerdo da CU que contém o bloco A são derivados. O vetor de movimento v0 do canto superior esquerdo na CU atual é extrapolado de acordo com v2, v3 e v4 com o uso da equação (7) abaixo, presumindo que (x2, y2) é o ponto de origem que significa (x2, y2) = (0, 0). Em segundo lugar, o vetor de movimento v1 da direita superior da CU atual é calculado de maneira similar. A equação (7) é mostrada abaixo.
Na equação (7), (v2x, V2y) é o vetor de movimento do ponto de controle de canto superior esquerdo (x2, y2), (v3x, V3y) é o vetor de movimento do ponto de controle de canto superior direito (x3, y3), (v4x, V4y) é o vetor de movimento do ponto de controle de canto inferior esquerdo (x4, y4) no bloco afim vizinho, v = (x3-x2) é a distância horizontal entre os pontos de controle superior esquerdo e superior direito, e A = (y4-y2) é a distância vertical entre os pontos de controle superior esquerdo e inferior esquerdo, vX é o componente horizontal do vetor de movimento para o local (x, y) e vY é o componente vertical do vetor de movimento para o local (x, y).
[0154] Depois que o CPMV da CU atual v0 e v1 é derivado, de acordo com a equação de modelo de movimento afim (6), o MVF da CU atual é gerado. Para identificar se a
CU atual é codificada com o modo AF_MERGE, um sinalizador afim é sinalizado no fluxo de bits quando há pelo menos um bloco vizinho codificado no modo afim.
[0155] Em HEVC, as diferenças de vetor de movimento (MVDs) (entre o vetor de movimento e o vetor de movimento predito de uma PU) são sinalizadas em unidade de amostra de luma de um quarto. No JEM, a resolução de vetor de movimento avançada (AMVR) é introduzida. Em JEM5, uma MVD pode ser codificada em unidades de amostras de luma de um quarto, amostras de luma inteira ou amostras de luma quatro. Em JEM5, a resolução MVD é controlada no nível de CU e os sinalizadores de resolução de MVD são condicionalmente sinalizados para cada CU que tem pelo menos um componente de MVD de não zero.
[0156] Para uma CU que tem pelo menos um componente de MVD de não zero, um primeiro sinalizador é sinalizado para indicar se a precisão de MV de amostra de luma de um quarto é usada na CU. Quando o primeiro sinalizador (igual a 1) indica que a precisão de MV de amostra de luma de um quarto não é usada, um outro sinalizador é sinalizado para indicar se a precisão de MV de amostra de luma inteira ou precisão de MV de amostras de luma quatro é usada.
[0157] Quando o primeiro sinalizador de resolução de MVD de uma CU é zero ou não é codificado para uma CU (o que significa que todas as MVDs na CU são zero), a resolução de MV de amostra de luma de um quarto é usada para a CU. Quando uma CU usa precisão de MV de amostra de luma inteira ou precisão de MV de amostra de luma quatro, as MVPs na lista de candidatos de AMVP para a CU são arredondados para a precisão correspondente.
[0158] No lado do codificador, o codificador de vídeo 20 pode usar verificações de RD de nível de CU para determinar qual resolução de MVD é usada para uma CU. Ou seja, a verificação de RD de nível de CU pode ser realizada três vezes, respectivamente, para cada resolução de MVD. Para acelerar a velocidade do codificador, os seguintes esquemas de codificação são aplicados no JEM: • Durante uma verificação de RD de uma CU com resolução de MVD de amostra de luma de um quarto normal, as informações de movimento da CU atual (precisão da amostra de luma inteira) são armazenadas. As informações de movimento armazenadas (após o arredondamento) são usadas como o ponto de partida para o refinamento de vetor de movimento de pequena faixa adicional durante a verificação de RD para a mesma CU com amostra de luma inteira e resolução de MVD de amostra de luma 4, de modo que o processo de estimação de movimento demorado não seja duplicado três vezes. • Uma verificação de RD de uma CU com resolução de MVD de amostra de luma 4 é invocada condicionalmente. Para uma CU, quando o custo de RD para a resolução de MVD de amostra de luma inteira é muito maior que aquele da resolução de MVD de amostra de luma de um quarto (por exemplo, a razão entre o custo de RD para a resolução de MVD de amostra de luma inteira e o custo de RD para a resolução de MVD de amostra de luma de um quarto é maior que um limiar), a verificação de RD da resolução de MVD de amostra de luma 4 para a CU é ignorada.
[0159] As informações de vetor de movimento reconstruído não são totalmente usadas nos esquemas existentes de predição de vetor de movimento no codec de vídeo existente, como HEVC/H.265, AVC/H.264 e o JEM.
[0160] Esta revelação descreve técnicas que podem aperfeiçoar dispositivos de computação que realizam a predição de vetor de movimento (MVP). As técnicas são elaboradas em vários aspectos diferentes descritos abaixo. As seguintes técnicas podem ser aplicadas individualmente. Alternativamente, qualquer combinação das técnicas pode ser aplicada.
[0161] De acordo com uma ou mais técnicas desta revelação, os codificadores de vídeo podem usar vetores de movimento de blocos que não são imediatamente adjacentes a um bloco atual, devido ao fato de que os vetores de movimento dos blocos não adjacentes podem aperfeiçoar ainda mais a eficiência de predição, especialmente quando a correlação entre os vetores de movimento espacial é forte o suficiente para que as informações de movimento do bloco atual sejam similares àquelas dos blocos não adjacentes. Dessa forma, as informações de movimento a partir dos blocos não adjacentes podem ser bons candidatos de MVP para o bloco atual. Nesta revelação, é proposto que um ou mais preditores de vetor de movimento espacial não adjacentes (NA-SMVPs) sejam usados para derivar o preditor de vetor de movimento para as informações de movimento de bloco atual; ou os NA-SMVPs podem ser diretamente reutilizados pelo bloco atual para realizar a inter-predição. Esta revelação descreve técnicas para incorporar de maneira adaptável os NA-SMVPs juntamente com os outros preditores de MV (por exemplo, SMVP regular, TMVP, MVPs sintéticos) para a predição de MV.
[0162] Dessa forma, de acordo com uma técnica desta revelação, o codificador de vídeo 20 pode determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo. O bloco não adjacente é não adjacente a um bloco atual da imagem atual. Adicionalmente, o codificador de vídeo 20 pode determinar, com base no vetor de movimento do bloco não adjacente, um MVP para o bloco atual. O codificador de vídeo 20 também pode determinar um vetor de movimento do bloco atual. O vetor de movimento pode ser igual a um vetor de movimento do MVP para o bloco atual ou pode ser igual ao vetor de movimento do MVP para o bloco atual mais uma diferença de vetor de movimento (MVD) sinalizada em um fluxo de bits. Adicionalmente, o codificador de vídeo 20 pode determinar um bloco preditivo com base no vetor de movimento do bloco atual. O codificador de vídeo 20 pode gerar, com base no bloco preditivo, valores de amostra residuais.
[0163] De modo similar, o decodificador de vídeo 30 pode determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo. O bloco não adjacente é não adjacente a um bloco atual da imagem atual. Adicionalmente, o decodificador de vídeo 30 pode determinar, com base no vetor de movimento do bloco não adjacente, um MVP para o bloco atual. Adicionalmente, o decodificador de vídeo 30 pode determinar, com base no MVP para o bloco atual, um vetor de movimento do bloco atual. O decodificador de vídeo 30 pode determinar também um bloco preditivo com base no vetor de movimento do bloco atual. O decodificador de vídeo 30 pode, então, reconstruir, com base no bloco preditivo, valores de amostra da imagem atual.
[0164] Em alguns exemplos, os preditores de vetor de movimento espacial não adjacentes (NA-SMVP) são derivados a partir das informações de movimento dos blocos espacialmente não adjacentes situados dentro da mesma imagem, fatia ou uma região predefinida na qual o bloco atual está situado. Devido ao fato de que as informações de movimento dos blocos não adjacentes podem ser reutilizadas como preditores de vetor de movimento para o bloco atual, apenas os blocos não adjacentes que têm informações de movimento reconstruídas são considerados para derivação de MVP não adjacente. Esta revelação propõe ainda adicionar uma restrição aos blocos NA para restringir uma distância entre os blocos NA e o bloco atual para estar dentro de uma faixa. A distância pode ser medida em distância de pixel no sentido L1 ou L2; ou a distância pode ser medida na distância de bloco no sentido L1 ou L2. A distância L1 entre dois pontos de coordenadas em um espaço de vetor real n-dimensional com um sistema de coordenadas cartesianas fixo é a soma dos comprimentos das projeções do segmento de linha entre os pontos nos eixos de coordenadas. No caso da distância de pixel L1, o comprimento de uma projeção é a altura ou largura de um pixel. No caso da distância de bloco L1, o comprimento de uma projeção é a largura ou altura de um bloco. A distância L2 é a distância euclidiana entre dois pontos. A distância pode ser medida entre os centros de bloco ou qualquer ponto designado dentro de cada bloco. Em alguns exemplos, outra restrição é adicionada aos blocos NA que restringe os blocos de NA a serem blocos que não são adjacentes ao bloco atual e não são adjacentes aos blocos que são imediatamente adjacentes ao bloco atual.
[0165] A Figura 15 é um diagrama de blocos que ilustra blocos não adjacentes exemplificadores, de acordo com uma técnica desta revelação. Conforme mostrado na Figura 15, os blocos não adjacentes 1500 são blocos reconstruídos que não são imediatamente adjacentes a um bloco atual 1502. O tamanho dos blocos não adjacentes pode ser definido como o menor bloco de unidade usado para armazenar as informações de movimento (por exemplo, bloco 4x4) ou a unidade básica para a inter-predição (por exemplo, PU em HEVC) ou o sub-bloco conforme usado no modo afim, modo FRUC no JEM ou qualquer outro tamanho de bloco especificado. A Figura 15 também mostra blocos não reconstruídos adjacentes 1504 e blocos não reconstruídos não adjacentes 1506.
[0166] A Figura 16 é o diagrama de blocos que ilustra um exemplo de uma seleção de blocos não adjacentes, de acordo com uma técnica desta revelação. A Figura 17 é um diagrama de blocos que ilustra um exemplo de uma seleção de blocos não adjacentes com base em um bloco parental, de acordo com uma técnica desta revelação. Embora potencialmente todos os blocos não adjacentes possam ser usados para a derivação de MVP, pode ser mais desejável (em termos de complexidade de implantação) selecionar apenas um número limitado de blocos não adjacentes (blocos NA) para a derivação de MVP. Várias maneiras de selecionar N (em que N é um número inteiro não negativo) blocos não adjacentes para a derivação de preditor de vetor de movimento (MVP) são elaboradas abaixo. Por exemplo, em um exemplo de seleção de N blocos não adjacentes para a derivação de MVP, padrões fixos de blocos não adjacentes são selecionados para derivação de NA-SMVP. Os padrões fixos são posicionados em relação à posição do bloco atual. Em um exemplo, conforme mostrado na Figura 16, além dos blocos adjacentes (por exemplo, A0, A1, B0, B1 e B2) usados para derivar os SMVPs regulares conforme usado em HEVC para um bloco atual 1600, um padrão fixo de 11 blocos NA (ΝΑ1,1, NA1,2, NA1,3, NA1,4, NA1,5, NA1,6, NA1,7, NA1,8, NA1,9, ΝΑ1,10, NA1,11) que circundam o bloco atual 1600 é usado para derivar os NA-SMVPs. A distância horizontal s1 e a distância vertical t1 são dois descritores desse padrão.
[0167] Em um outro exemplo, conforme mostrado na Figura 17. No exemplo da Figura 17, além dos blocos adjacentes usados para derivar os SMVPs regulares conforme usado em HEVC, um codificador de vídeo usa o bloco adjacente de um bloco parental 1700 que contém um bloco atual 1702 como os blocos NA para a derivação de MVP. Na Figura 17, os blocos adjacentes (ΝΑ1,1, NA1,2, NA1,3, NA1,4, NA1,5, NA1,6, NA1,7, NA1,8, NA1,9) do bloco parental 1700 são selecionados como os blocos não adjacentes para os blocos dentro do bloco parental 1700, incluindo o bloco atual
1702. O tamanho do bloco parental 1700 pode ser pré- determinado ou sinalizado nos fluxos de bits ou dependente do tamanho de bloco atual 1702 ou dependente do modo codificado (por exemplo, ignorar/mesclagem/AMVP) do bloco atual 1702. Os NA-SMVPs desta revelação podem ser derivados de, mas não limitados a, padrões revelados de blocos espaciais não adjacentes.
[0168] Os exemplos de blocos NA circundantes de múltiplos níveis são dados conforme exposto a seguir. É observado que para cada nível, o número de blocos NA pode ser diferente.
[0169] Padrão A1: Blocos NA circundantes de múltiplos níveis. Cada nível (nível i) é descrito pelos parâmetros de distância (si e ti). A Figura 20, a Figura 21 e a Figura 22 mostram exemplos de blocos NA circundantes de 2 níveis, mas o número de níveis pode ser qualquer número inteiro não negativo. Nos exemplos da Figura 20, Figura 21 e Figura 22, os quadrados pretos correspondem a blocos NA em um primeiro nível e os quadrados cinzas correspondem a blocos NA em um segundo nível, t1 denota uma distância vertical a partir de um bloco atual 2000, 2100 ou 2200 até o primeiro nível. t2 indica uma distância vertical a partir do bloco atual 2000, 2100 ou 2200 até o segundo nível, s1 denota uma distância horizontal a partir do bloco atual 2000, 2100 ou 2200 até o primeiro nível. s2 indica uma distância horizontal a partir do bloco atual 2000, 2100 ou 2200 até o segundo nível.
[0170] Padrão A2: Blocos NA circundantes de múltiplos níveis com base em um bloco parental. Cada nível (nível i) é descrito pelos parâmetros de distância (si e ti). O tamanho do bloco parental pode ser predeterminado ou sinalizado nos fluxos de bits. A Figura 23 mostram exemplos de blocos NA circundantes de 2 níveis, mas o número de níveis pode ser qualquer número inteiro não negativo.
[0171] Adicionalmente, em alguns exemplos, uma distância entre o bloco atual e o bloco não adjacente é definida por uma norma L1 (isto é, a distância L1) ou uma norma L2 (isto é, a distância euclidiana).
[0172] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 selecionam N blocos não adjacentes de acordo com a ordem de codificação reversa. Por exemplo, um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o decodificador de vídeo 30) pode selecionar blocos não adjacentes por meio da varredura de blocos de acordo com uma ordem que é oposta a uma ordem em que o codificador de vídeo codificou os blocos.
[0173] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 constroem uma lista de candidatos de MV global mediante a inserção de todos os MVs reconstruídos nessa lista de acordo com uma ordem predefinida. A lista de candidatos de MV global pode conter os MVs derivados dos blocos adjacentes, bem como os MVs derivados de blocos não adjacentes. O preditor de MV do bloco atual pode ser, então, derivado com o uso desses candidatos de MV globais. Dessa forma, em tais exemplos, um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o decodificador de vídeo 30) pode determinar uma lista de candidatos de vetor de movimento global que compreende candidatos de MVP que especificam um vetor de movimento para cada bloco que está na imagem atual e que é codificado antes do bloco atual. Adicionalmente, o codificador de vídeo pode determinar o vetor de movimento do bloco não adjacente a partir de um candidato de MVP na lista de candidatos de vetor de movimento global.
[0174] Em alguns exemplos, devido ao fato de que buscar diretamente candidatos de MV não adjacentes pode aumentar o tamanho do armazenamento temporário de linha, um codificador de vídeo aplica uma maneira alternativa de armazenar MVs reconstruídos. Por exemplo, o codificador de vídeo pode armazenar MVs reconstruídos em um armazenamento temporário de histórico de uma maneira de primeiro a entrar, primeiro a sair. Para imitar os candidatos de MV não adjacentes, apenas aqueles MVs antigos no armazenamento temporário de histórico são considerados como candidatos de MV não adjacentes. Os MVs antigos no armazenamento temporário de histórico podem ser definidos como aqueles próximos ao final do armazenamento temporário de histórico. Por exemplo, se o tamanho do armazenamento temporário de histórico for N, um limiar T (como T = N/4) pode ser sinalizado ou definido de modo que os MVs mais próximos a T da saída do armazenamento temporário de histórico sejam definidos como MVs antigos.
[0175] Em alguns exemplos, para reduzir o tamanho do armazenamento temporário de um armazenamento temporário usado para armazenar informações de movimento não adjacentes (isto é, informações de movimento de blocos não adjacentes), são adicionadas restrições para derivar preditores de vetor de movimento espacial não adjacentes. Se a distância entre um bloco não adjacente e o bloco atual (ou a CTU atual) for maior que um limiar, a posição do bloco não adjacente pode ser modificada. Em outras palavras, em vez de determinar um candidato de MV com base em um bloco NA em um primeiro local (por exemplo, um local especificado por um padrão fixo de blocos NA), um codificador de vídeo pode determinar uma segunda posição com base na primeira posição quando uma distância a partir da primeira posição até o bloco atual é maior do que um limiar. Em alguns exemplos, em vez de determinar um candidato de MV com base em um bloco NA em um primeiro local (por exemplo, um local especificado por um padrão fixo de blocos NA), um codificador de vídeo pode determinar que a primeira posição não é válida quando uma distância a partir da primeira posição até o bloco atual é maior do que um limiar. O limiar pode ser diferente para a distância horizontal e a distância vertical. Dessa forma, em alguns exemplos, antes de determinar o vetor de movimento do bloco não adjacente e com base em uma distância entre o bloco não adjacente e o bloco atual que é maior do que uma distância limiar, um codificador de vídeo pode modificar uma posição do bloco não adjacente. Em alguns exemplos, antes de determinar o vetor de movimento de um bloco não adjacente e com base em uma distância entre o bloco não adjacente e um bloco de árvore de codificação atual que é maior que uma distância limiar, o codificador de vídeo pode modificar uma posição do bloco não adjacente. Em tais exemplos, o bloco de árvore de codificação atual contém o bloco atual.
[0176] Um exemplo de modificação de posição pode ser arredondar a primeira posição para uma grade grossa, isto é, reduzir os movimentos não adjacentes armazenados. Dessa forma, nesse exemplo, um codificador de vídeo pode modificar a posição do bloco não adjacente pelo menos em parte, arredondando-se uma posição do bloco não adjacente para uma posição em uma primeira grade de blocos na imagem atual mais grossa do que uma segunda grade de blocos na imagem atual.
[0177] Um outro exemplo de modificação de posição pode ser recortar a primeira posição até o limiar, se a distância até a posição for maior do que o limiar. O recorte da posição até o limiar significa modificar a posição para estar no limiar se a posição estiver além do limiar. Dessa forma, nesse exemplo, o codificador de vídeo pode modificar a posição do bloco não adjacente pelo menos em parte mediante o recorte de uma posição do bloco não adjacente até o limiar de distância. Múltiplos métodos de modificação de posição com limiares diferentes podem ser combinados.
[0178] A Figura 18A e a Figura 18B são diagramas de blocos que ilustram um exemplo de modificação de posição de um bloco não adjacente de acordo com uma técnica desta revelação. A Figura 19A e a Figura 19B são diagramas de blocos que ilustram exemplos de limiares para modificar o bloco não adjacente de acordo com uma técnica desta revelação. Vários exemplos de modificação das posições são fornecidos abaixo. Nesses exemplos, presume-se que a posição de um bloco não adjacente seja (xNA, yNA), a posição modificada do bloco não adjacente seja (xΝΑ’, yNA’), a posição da grade superior esquerda de uma CTU atual 1800, 1900 seja (xCTU, yCTU) e a posição da CU atual seja (xCU, yCU). Os exemplos de restrições podem ser:
1. Se (yCTU - yNA) > (or>=)yThrd, yNA’ = yThrd. Se (xCTU - xNA) > (or>=)xThrd, xNA' = xThrd. yThrd pode ser menor do que xThrd. A Figura 18A mostra um exemplo com yThrd, em que Thrd é uma abreviação para limiar. Dessa forma, na
Figura 18A, uma CTU 1800 contém uma CU atual (curr) 1802. Se a diferença entre uma coordenada vertical de uma posição NA 1804 de um bloco não adjacente e uma coordenada vertical da CTU 1800 for maior que o limiar (yThrd), o codificador de vídeo recorta a coordenada vertical da posição NA 1804 até o limiar, resultando na posição NA’ 1806.
2. Se (yCTU - yNA) > (or>=)yThrd e (ou) (xCTU - xNA) > (or>=)xThrd, abs(xNA’, yNA’) = ((xNA>>CompressedLog2SizeX) << CompressedLog2SizeX, (yNA>>CompressedLog2SizeY) << CompressedLog2SizeY). CompressedLog2SizeX e CompressedLog2SizeY são valores para controlar o arredondamento de posição. Por exemplo, se (xNA, yNA) for (36, 18) e (CompressedLog2SizeX, CompressedLog2SizeY) for (4,4), a posição arredondada, (xΝΑ’, yNA’), será ((36>>4)<<4, (18>>4)<<4) = (32,16). Em outras palavras, se uma posição de um bloco não adjacente estiver longe do bloco atual, o codificador de vídeo pode arredondar a posição para uma grade mais grossa. Dessa forma, o armazenamento temporário de movimento pode armazenar apenas movimentos de bloco não adjacentes na grade mais grossa. A Figura 18B mostra um exemplo. Dessa forma, no exemplo da Figura 18B, uma CTU 1850 contém uma CU atual (curr) 1852. Se a diferença entre uma coordenada vertical (y) de uma posição NA 1854 e uma coordenada vertical de uma posição da CTU 1850 for maior do que um limiar vertical (yThrd) e/ou uma diferença entre uma coordenada horizontal (x) da posição NA 1854 for maior que um limiar horizontal (xThrd), o codificador de vídeo pode determinar uma coordenada horizontal de uma posição modificada NA’ 1856 para (xNA>>CompressedLog2SizeX)<<CompressedLog2Size X e uma coordenada vertical da posição modificada NA’ 1856 para (yNA>>CompressedLog2SizeY)<<CompressedLog2Size Y. Em alguns exemplos, xThrd é infinito negativo. Dessa forma, em tais exemplos, (xCTU - xNA) é sempre maior do que xThrd.
3. Em alguns exemplos, o limiar de modificação de um bloco não adjacente é: se (yCTU - yNA) > yThrd, o bloco não adjacente é modificado. A Figura 19A mostra um exemplo, e blocos sombreados são as posições de bloco não adjacentes que devem ser modificadas. Particularmente, no exemplo da Figura 19A, uma CTU 1900 inclui uma atual CU (curr) 1902. Se uma coordenada vertical de um bloco não adjacente se diferir de uma coordenada vertical da CTU 1900 em mais do que o limiar (yThrd), o codificador de vídeo pode modificar a posição do bloco não adjacente.
4. O limiar da modificação de um bloco não adjacente pode ser uma combinação de mais de uma regra.
Um exemplo pode ser o seguinte: (1) se (yCTU - yNA) > yThrd, o bloco não adjacente deve ser modificado. (2) se (yCTU - yNA) > 0 e (xCTU - xNA) > 0, o bloco não adjacente deve ser modificado.
A Figura 19B mostra o exemplo da combinação das duas regras, e blocos sombreados são as posições de bloco não adjacentes que devem ser modificadas.
Particularmente, no exemplo da Figura 19B, uma CTU 1950 inclui uma CU atual (curr) 1952. Se uma coordenada vertical de um bloco não adjacente se diferir de uma coordenada vertical da CTU 1950 em mais do que um limiar vertical (yThrd), o codificador de vídeo pode modificar a coordenada vertical do bloco não adjacente.
Além disso, se a diferença entre uma coordenada horizontal do bloco não adjacente e uma coordenada horizontal da CTU 1950 for maior do que 0 e a diferença entre uma coordenada vertical do bloco não adjacente e a coordenada vertical da CTU 1950 for maior do que 0, o codificador de vídeo pode modificar a coordenada horizontal do bloco não adjacente.
Em um exemplo, apenas os blocos não adjacentes que estão situados na mesma fileira de CTU que o bloco atual podem ser selecionados.
Em um outro exemplo, apenas os blocos não adjacentes que estão situados na mesma CTU que o bloco atual podem ser selecionados.
[0179] Depois que o codificador de vídeo determina que os N blocos não adjacentes são determinados, o codificador de vídeo pode derivar M (em que M < N) preditores de vetor de movimento espacial não adjacentes (NA-SMVP) a partir dos N blocos não adjacentes (blocos NA). Existem diferentes maneiras de usar os SMVPs não adjacentes, dependendo do mecanismo de inter-predição usado no codec de vídeo. Por exemplo, quando um mecanismo de candidato de movimento competitivo (por exemplo, o modo de mesclagem/ignorar em HEVC ou JEM) é usado, um ou mais MVPs espaciais não adjacentes (NA-SMVPs) são derivados e inseridos em uma lista de candidatos de acordo com uma ordem predefinida. Em um exemplo, conforme mostrado na Figura 16, os 11 MVPs não adjacentes são inseridos na lista de candidatos de mesclagem após os MVPs espaciais convencionais, MVPs temporais e antes dos candidatos combinados sintéticos, zero candidatos sintéticos.
[0180] Em alguns exemplos, um processo de remoção de movimento total pode ser aplicado aos NA-SMVPs e aos outros candidatos de mesclagem; ou uma remoção de movimento parcial pode ser aplicada aos NA-SMVPs e aos outros candidatos de mesclagem. O processo de remoção de movimento completo compara um candidato a todos os candidatos derivados anteriormente na lista de candidatos atual para evitar a inserção de candidatos idênticos até certo ponto. Para reduzir a complexidade, o processo de remoção de movimento parcial compara apenas números limitados de candidatos em vez de comparar cada candidato potencial com todos os outros candidatos existentes. Mais ordens de inserção de blocos não adjacentes são dadas na Sequência 2 a Sequência 5, abaixo. Os NA-SMVPs desta revelação podem ser inseridos na lista de candidatos que inclui, porém sem limitação, a ordem de inserção revelada. Sequência 2 Ordem de inserção para o modo de mesclagem:
1. SMVPs regulares (por exemplo, A1, B1, B0, A0, B2) → TMVP (por exemplo, H ou C) → NA-SMVPs → Candidatos sintéticos
2. SMVPs regulares (por exemplo, A1, B1, B0, A0, B2) → Candidatos de MV de sub-bloco (por exemplo, ATMVP, STMVP) → TMVP (por exemplo, H ou C) → NA-SMVPs → Candidatos sintéticos
3. SMVPs regulares (por exemplo, A1, B1, B0, A0, B2) → NA-SMVPs → TMVP (por exemplo, H ou C) → Candidatos sintéticos Sequência 3 Ordem de inserção para o modo AMVP (para a predição de MV List0 ou List1):
1. SMVPs esquerdos (por exemplo, A0, A1) → SMVPs esquerdos escalonados (por exemplo, A0, A1) → SMVPs acima (por exemplo, B0, B1, B2) → SMVPs acima escalonados (por exemplo, B0, B1, B2) → NA-SMVPs → NA-SMVPs escalonados → TMVP → Candidatos Sintéticos Sequência 4 Ordem de inserção para o modo de mesclagem afim:
1. SMVPs regulares (por exemplo, A1, B1, B0, A0, B2) → NA-SMVPs Sequência 5 Ordem de inserção para o modo AMVP afim:
1. MVP afim extrapolado → SMVPs esquerdos (por exemplo, A0, A1) → SMVPs esquerdos escalonados (por exemplo, A0, A1) → SMVPs acima (por exemplo, B0, B1, B2) → SMVPs acima escalonados (por exemplo, B0, B1, B2) → NA-SMVPs → NA-SMVPs escalonados → TMVP → Candidatos Sintéticos
[0181] Um esquema de candidato de movimento espaço-temporal competitivo pode incluir um sistema em que um preditor de movimento é selecionado a partir de um conjunto de preditores de movimento disponíveis. Quando um esquema de candidato de movimento espaço-temporal competitivo é usado, como o modo AMVP em HEVC ou JEM ou outros codecs de vídeo, os candidatos de MVP não adjacentes são derivados e inseridos na lista de candidatos de acordo com uma ordem predefinida. Em um exemplo, um codificador de vídeo insere os 11 MVPs não adjacentes da Figura 16 na lista de candidatos de AMVP após os MVPs espaciais convencionais, MVPs temporais e antes de qualquer zero candidato sintético. A derivação do NA-SMVP pode seguir as mesmas regras de derivação que HEVC ou quaisquer outras regras aplicadas ao SMVP derivado de blocos adjacentes.
[0182] A ordem de candidatos de NA-SMVP pode ser determinada por uma certa regra predefinida ou pode ser determinada de maneira adaptável. Por exemplo, o codificador de vídeo pode dispor M candidatos a partir de N blocos não adjacentes na mesma ordem em que os N blocos NA são selecionados de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação. Alternativamente, em um exemplo, o codificador de vídeo reordena os M candidatos de acordo com as frequências desses candidatos (isto é, o número de ocorrências dos candidatos entre todos os candidatos de MV) e/ou distâncias entre um bloco NA e o bloco atual. Dessa forma, nesse exemplo, o codificador de vídeo pode colocar candidatos mais frequentes e/ou candidatos a partir de blocos NA mais próximos ao bloco atual à frente em uma lista de candidatos de NA-SMVP (isto é, a lista de candidatos que inclui candidatos de NA-SMVP e possivelmente outros candidatos). Além disso, o codificador de vídeo pode inserir todos os candidatos de NA-SMVP em uma posição fixa na lista de candidatos, conforme descrito na Sequência 2 a Sequência 5, acima, que são permitidos a serem reordenados apenas entre os candidatos de NA-SMVP. Em um outro exemplo, o codificador de vídeo pode reordenar todos os candidatos na lista (incluindo NA-SMVP e outros candidatos) de acordo com certos critérios, como a frequência da informações de movimento (isto é, o número de ocorrências do vetor de movimento entre todos os candidatos de MV) ou qualquer estatística de movimento disponível a partir da imagem atual e/ou imagens codificadas anteriormente. A ordem dos NA-SMVPs em uma lista de candidatos pode ser diferente para certos modos de codificação, por exemplo, o modo de mesclagem e/ou AMVP e não está necessariamente limitada às ordens de candidatos reveladas. Por exemplo, um codificador de vídeo pode inserir candidatos de NA-SMVP em uma lista de candidatos de mesclagem de acordo com uma primeira ordem e pode inserir candidatos de NA-SMVP em uma lista de candidatos de AMVP de acordo com uma segunda ordem diferente da primeira ordem.
[0183] Em alguns exemplos, o processo de remoção é adaptável ao tamanho de bloco. Em um exemplo, um valor limiar pode ser usado para definir o que precisa ser removido. Por exemplo, se o tamanho de bloco for grande (isto é, maior do que um tamanho de bloco predefinido), então, o codificador de vídeo pode aumentar o valor do limite consequentemente. Considere dois candidatos com vetores de movimento MV0 (adicionados à lista anteriormente) e MV1, em um exemplo, se a norma L1 ou L2 da distância entre MV0 e MV1 for menor do que o valor limiar, o codificador de vídeo remove o candidato de MV1. O codificador de vídeo 20 pode sinalizar o valor limiar sinalizado através de um SPS, um PPS, um cabeçalho de fatia ou em uma outra estrutura de sintaxe.
[0184] Em outro exemplo, o valor limiar é adaptável com base no tamanho de bloco atual. Por exemplo, nesse exemplo, um primeiro valor limitar se aplica a blocos que têm tamanhos menores do que um tamanho de bloco predefinido e um segundo valor limiar diferente se aplica a blocos que têm tamanhos maiores do que o tamanho de bloco predefinido. Nesse exemplo, mediante a geração de uma lista de candidatos para um bloco que tem um tamanho menor do que o tamanho de bloco predefinido, o codificador de vídeo pode remover um candidato da lista se uma norma L1 ou L2 da distância entre o vetor de movimento do candidato e um vetor de movimento de um outro candidato na lista for menor do que o primeiro valor limiar. Nesse exemplo, mediante a geração de uma lista de candidatos para um bloco que tem um tamanho maior do que o tamanho de bloco predefinido, o codificador de vídeo pode remover um candidato da lista se uma norma L1 ou L2 da distância entre o vetor de movimento do candidato e um vetor de movimento de um outro candidato na lista for menor do que o segundo valor limiar.
[0185] Em um outro processo de remoção exemplificador, o valor limiar é adaptável com base em uma distância entre uma posição espacial do candidato e uma posição espacial do bloco atual. O codificador de vídeo pode usar um valor limiar se o candidato estiver situado mais longe do bloco atual. Por exemplo, mediante a geração de uma lista de candidatos para o bloco atual, um codificador de vídeo pode determinar um primeiro NA-SMVP com base em um bloco não adjacente particular. Nesse exemplo, o codificador de vídeo pode remover o primeiro candidato de NA-SMVP da lista se uma norma L1 ou L2 da distância entre um vetor de movimento do primeiro candidato de NA-SMVP e um vetor de movimento de um segundo candidato na lista for menor do que um limiar particular. Nesse exemplo, o limiar particular pode depender de uma distância entre o bloco não adjacente particular e o bloco atual.
[0186] Em alguns exemplos, a classificação de vetores de movimento pode ser feita com o uso de métodos que incluem, porém sem limitação, K-mean ou máquina de vetor de suporte, e apenas os primeiros Mc candidates de cada uma das classes Nc devem ser mantidos na lista de candidatos, onde Mc e o número de classes Nc podem ser predefinidos ou sinalizados na sintaxe de alto nível.
[0187] Em esquemas em que apenas um MVP é usado, como o modo de mesclagem afim no JEM, um codificador de vídeo (por exemplo, codificador de vídeo 20 ou decodificador de vídeo 30) também pode incluir um ou mais SMVPs não adjacentes (NA-SMVP) em um conjunto de candidatos juntamente com os outros MVPs. O MVP final é então selecionado como o primeiro MVP disponível, de acordo com uma ordem predefinida. Em um exemplo, quando uma CU é aplicada no modo de mesclagem afim (AF_MERGE), a mesma obtém o primeiro bloco codificado com o modo afim a partir dos blocos reconstruídos vizinhos válidos com base na ordem de visita: A1 → B1 → B0 → A0 → B2 → blocos NA. Dessa forma, nesse exemplo, se nenhum dos blocos A1, B1, B0, A0 ou B2 for codificado com o modo afim, o codificador de vídeo pode determinar que o MVP para a CU é um primeiro dos blocos não adjacentes que é codificado no modo afim.
[0188] Conforme discutido brevemente acima, o processo de derivação de movimento no modo de mesclagem FRUC inclui duas etapas. Em particular, uma pesquisa de movimento de nível de CU é realizada primeiramente, seguido do refinamento de movimento de nível de sub-CU. No nível de CU, um codificador de vídeo deriva um vetor de movimento inicial para toda a CU com base na correspondência bilateral ou na correspondência de modelo. Para derivar o vetor de movimento inicial para toda a CU, o codificador de vídeo pode primeiramente gerar uma lista de candidatos de MV (conjunto de candidatos de MV de nível de CU de FRUC) e o codificador de vídeo seleciona o candidato que leva ao custo de correspondência mínimo como o ponto de partida para o refinamento de nível de CU adicional. Então, o codificador de vídeo realiza uma pesquisa local com base na correspondência bilateral ou na correspondência de modelo ao redor do ponto de partida. O codificador de vídeo, então, toma o MV que resulta no custo de correspondência mínimo como o MV para toda a CU. Subsequentemente, o codificador de vídeo pode refinar ainda mais as informações de movimento no nível de sub-CU com um conjunto de candidatos de MV de nível de sub-CU de FRUC que contém os vetores de movimento de CU derivados.
[0189] Esta revelação propõe adicionar um ou mais NA-SMVPs ao conjunto de candidatos de MV de nível CU de FRUC, conjunto de candidatos de MV de nível de sub-CU de FRUC ou ambos. Dessa forma, um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o decodificador de vídeo 30) pode determinar um conjunto de candidatos de vetor de movimento de FRUC de nível de CU. De acordo com uma técnica desta revelação, o conjunto de candidatos de vetor de movimento de FRUC de nível de CU pode incluir um ou mais NA-SMVPs. Adicionalmente, o codificador de vídeo pode selecionar um candidato de vetor de movimento de FRUC de nível de CU a partir do conjunto de candidatos de vetor de movimento de FRUC de nível de CU. O codificador de vídeo pode então determinar um vetor de movimento de nível de CU pelo menos em parte mediante a realização de uma pesquisa local que se inicia a partir de um candidato de vetor de movimento de FRUC de nível de CU selecionado. O codificador de vídeo também pode refinar o vetor de movimento de nível de CU em um nível de sub-CU com um conjunto de candidatos de vetor de movimento de nível de sub-CU de FRUC. Nesse exemplo, pelo menos um dentre o conjunto de candidatos de vetor de movimento de FRUC de nível de CU e o conjunto de candidatos de vetor de movimento de nível de sub-CU de FRUC pode incluir um NA-SMVP que especifica um vetor de movimento de um bloco não adjacente. O NA-SMVP pode ser determinado de acordo com qualquer um dos exemplos fornecidos em outro lugar desta revelação.
[0190] A sintaxe de alto nível relacionada aos MVPs não adjacentes pode ser predeterminada ou sinalizada explicitamente nos fluxos de bits. A sintaxe de alto nível inclui, porém sem limitação, os seguintes parâmetros de controle:
1. O número de blocos adjacentes N. Em alguns exemplos, o número é adaptável de acordo com as informações de codificação, como tamanho de bloco. Em alguns exemplos, o número N depende do modo codificado (por exemplo, ignorar/mesclagem/AMVP) ou do número máximo permitido de candidatos para o modo de mesclagem/AMVP/ignorar.
2. A distância s/t (sinalizar múltiplos parâmetros s/t se existirem), em que s é o deslocamento horizontal e t é o deslocamento vertical para os blocos NA, conforme mostrado nas Figuras 20 a 23.
3. O tamanho do bloco parental para a determinação de blocos NA.
4. A habilitação/desabilitação dos MVPs não adjacentes.
5. O número de níveis para a localização de blocos NA conforme discutido acima em relação às Figuras 20 a 22.
[0191] Em HEVC, o tamanho da lista de candidatos de mesclagem se situa na faixa de 1 a 5, enquanto o tamanho da lista de candidatos de AMVP é fixado em 2. No JEM, o tamanho da lista de candidatos de mesclagem se situa na faixa de 1 a 7, enquanto o tamanho da lista de candidatos de AMVP é fixado em 2. Quando os NA-SMVPs são incluídos no MVP ou na lista de candidatos de mesclagem, o tamanho da lista de candidatos máximo pode ser aumentado consequentemente. Por exemplo, o tamanho da lista de candidatos de mesclagem pode ser aumentado para N (em que N é um número inteiro positivo e N > 7) quando um ou mais NA- SMVPs são inseridos no tamanho da lista de candidatos de mesclagem. Nesse exemplo, o tamanho da lista de candidatos de AMVP pode ser aumentado para M (M é um número inteiro positivo e > 2) quando um ou mais NA-SMVPs são inseridos no tamanho da lista de candidatos de mesclagem.
[0192] Esta revelação também propõe o uso de candidatos de MV sintéticos além daqueles fornecidos em HEVC. O uso dos candidatos de MV sintéticos adicionais também pode seguir os exemplos fornecidos em outro lugar desta revelação em relação ao uso de MVPs não adjacentes. Ou seja, os candidatos de MV sintéticos podem ser gerados com base em parâmetros de movimento de blocos não adjacentes, em que os blocos não adjacentes são determinados de acordo com qualquer um dos exemplos fornecidos acima.
[0193] Em alguns exemplos, um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o decodificador de vídeo 30) gera candidatos de uni-predição sintéticos mediante a divisão dos candidatos de MV de bi- predição disponíveis em dois candidatos de uni-predição separados de acordo com uma ordem predefinida, como A1, B1, B0, A0, B2 (consulte a Figura 2). O codificador de vídeo pode então inserir os candidatos de uni-predição sintéticos criados na lista de candidatos.
[0194] Adicionalmente, em alguns exemplos, quando a MVD inteira (isto é, uma MVD especificada para uma precisão de uma amostra de luma) ou MVD de quatro amostras de luma (isto é, uma MVD especificada para uma precisão de quatro amostras de luma) é habilitada, um codificador de vídeo pode gerar candidatos de MV inteiros sintéticos (isto é, candidatos de MV que têm vetores de movimento com uma precisão de uma amostra de luma) ou candidatos de MV de quatro amostras de luma (isto é, candidatos de MV que têm vetores de movimento com uma precisão de quatro amostras de luma) mediante o arredondamento ou truncamento dos candidatos de MV disponíveis em candidatos de MV de quatro amostras de luma ou MV inteiro. O codificador de vídeo pode então inserir os candidatos de MV inteiros sintéticos gerados ou candidatos de MV de 4 amostras de luma na lista de candidatos.
[0195] Essa revelação também propõe maneiras de incluir múltiplos candidatos de TMVP em uma lista de candidatos de mesclagem ou em uma lista de candidatos de AMVP. Em um exemplo, seguindo o projeto HEVC em que uma imagem co-localizada é sinalizada, um codificador de vídeo usa mais blocos vizinhos temporais para derivar mais candidatos de TMVP. Por exemplo, além de apenas verificar os blocos H e C (representados na Figura 2) em ordem e escolher um dos mesmos, o codificador de vídeo pode verificar mais blocos (por exemplo, os blocos co- localizados de blocos vizinhos espaciais do bloco atual). Em um exemplo, os blocos vizinhos espaciais verificados pelo codificador de vídeo podem incluir apenas blocos adjacentes, por exemplo A0, A1 , B0, B1 e B2, conforme mostrado na Figura 16. Dessa forma, nesse exemplo, o codificador de vídeo considera até cinco blocos co- localizados dos blocos adjacentes (incluindo ou além dos blocos H e C). Em outro exemplo, o codificador de vídeo também pode considerar blocos co-localizados de blocos NA (por exemplo, os 11 blocos NA (ΝΑ1,1, ΝΑ1,2, ΝΑ1,3, ΝΑ1,4, ΝΑ1,5, ΝΑ1,6, ΝΑ1,7, ΝΑ1,8, ΝΑ1,9, ΝΑ1,10, ΝΑ1,11) na Figura 16).
[0196] Em alguns exemplos, o codificador de vídeo considera blocos co-localizados no lado oposto do bloco atual. Por exemplo, para o bloco NA NA1,6 (localizado na posição (-4, -4)) na Figura 16, o codificador de vídeo pode selecionar o bloco NA-col correspondente (isto é, um bloco que é co-localizado com um bloco não adjacente e que é uma imagem de referência) como o bloco situado em (W + 3, H + 3), em que W e H são a largura e a altura do bloco atual em unidades básicas de tamanho de bloco de informações de movimento (por exemplo, 4x4). Isso cria um conjunto de blocos NA-col que se encontram nas posições inferior e direita do bloco atual. Em alguns exemplos, o codificador de vídeo adiciona esse conjunto de candidatos de MV (isto é, os candidatos de MV definidos a partir de blocos NA-col) de uma maneira intercalada ao NA-SMVP. Alternativamente, em alguns exemplos, o codificador de vídeo pode inserir esse conjunto de candidatos de MV como o conjunto de candidatos de TMVP como nos processos existentes de AMVP ou derivação de mesclagem descritos em outro lugar desta revelação.
[0197] Em alguns exemplos, o codificador de vídeo pode selecionar mais de uma imagem co-localizada. Em outras palavras, o codificador de vídeo pode selecionar mais de uma imagem de referência a partir da qual derivar candidatos de TMVP. Em tais exemplos, as imagens selecionadas podem ser definidas como todas as imagens de referência incluídas nas listas de imagens de referência ou as imagens selecionadas podem ser sinalizadas. Em um exemplo, para cada imagem de referência selecionada, o codificador de vídeo pode verificar os blocos H e C dentro da imagem de referência selecionada na mesma ordem que usado em HEVC (isto é, inferior direito, então, centro). Alternativamente, em um exemplo, para cada imagem selecionada, o codificador de vídeo verifica mais blocos (por exemplo, os blocos co-localizados de blocos NA e/ou espacialmente adjacentes do bloco atual).
[0198] Adicionalmente, quando o codificador de vídeo deriva múltiplos candidatos de TMVP, o codificador de vídeo pode aplicar um processo de remoção para remover aqueles idênticos entre os mesmos. Alternativamente, em alguns exemplos, o codificador de vídeo pode aplicar um processo de remoção limitado, o que significa que um dos candidatos de TMVP pode ser comparado apenas com um certo número de candidatos em vez de todos os outros. Em um exemplo, adicionalmente, o codificador de vídeo pode aplicar adicionalmente um processo de remoção entre um candidato de TMVP e outros candidatos (como candidatos de mesclagem espacial). As técnicas propostas para o uso de TMVPs adicionais podem ser aplicadas a certos modos de codificação, como o modo de mesclagem e/ou AMVP.
[0199] Conforme descrito em G. J. Sullivan, J.-R. Ohm, W.-J. Han e T. Wiegand, “Overview of the High Efficiency Video Coding (HEVC) Standard”, IEEE Transactions on Circuits and Systems for Video Technology, vol. 22, no. 12, páginas 1.649 a 1.668, dezembro de 2012, devido ao número aumentado de direções de intra-predição em comparação com H.264/MPEG-4 AVC, o HEVC considera três modos mais prováveis (MPMs) mediante a codificação do modo de intra-predição de luma de forma preditiva, em vez do modo mais provável considerado em H.264/MPEG-4 AVC. O MPM é derivado dos modos intra de blocos espacialmente adjacentes. No caso em que o modo de predição de luma atual é um dos três MPMs, apenas o índice de MPM é transmitido para o decodificador. De outro modo, o índice do modo de predição de luma atual, excluindo os três MPMs, é transmitido para o decodificador com o uso de um código de comprimento fixo de 5 bits. O JEM também segue os mesmos esquemas de predição de modo intra. No entanto, o JEM pode incluir mais de três MPMs.
[0200] Esta revelação propõe técnicas para usar os modos intra de blocos não adjacentes para derivar um ou mais MPMs para alcançar melhor eficiência de predição. As técnicas descritas nas seções anteriores podem ser aplicadas às derivações de MPM. Os exemplos de derivação de MPMs a partir de blocos não adjacentes são fornecidos em relação à Figura 35 e Figura 36, abaixo.
[0201] A Figura 24 é um diagrama de blocos que ilustra um codificador de vídeo exemplificador 20 que pode implantar as técnicas desta revelação. A Figura 24 é fornecida para propósitos de explicação e não deve ser considerada limitante das técnicas, conforme amplamente exemplificado e descrito nesta revelação. As técnicas desta revelação podem ser aplicáveis a diversos padrões ou métodos de codificação.
[0202] O conjunto de circuitos de processamento inclui o codificador de vídeo 20 e o codificador de vídeo 20 é configurado para realizar uma ou mais das técnicas exemplificadoras descritas nesta revelação. Por exemplo, o codificador de vídeo 20 inclui conjunto de circuitos integrado e as diversas unidades ilustradas na Figura 24 podem ser formadas como blocos de circuito de hardware que são interconectados com um barramento de circuito. Esses blocos de circuito de hardware podem ser blocos de circuito separados ou duas ou mais das unidades podem ser combinadas em um bloco de circuito de hardware comum. Os blocos de circuito de hardware podem ser formados como combinação de componentes elétricos que formam blocos de operação, como unidades lógicas aritméticas (ALUs), unidades de função elementar (EFUs), bem como blocos lógicos como AND, OR, NAND, NOR, XOR, XNOR e outros blocos lógicos similares.
[0203] Em alguns exemplos, uma ou mais das unidades ilustradas na Figura 24 podem ser unidades de software em execução no conjunto de circuitos de processamento. Em tais exemplos, o código do objeto para essas unidades de software é armazenado na memória. Um sistema operacional pode fazer com que o codificador de vídeo 20 recupere o código do objeto e execute o código do objeto, o que faz com que o codificador de vídeo 20 realize operações para implantar as técnicas exemplificadoras. Em alguns exemplos, as unidades de software podem ser firmware que o codificador de vídeo 20 executa na inicialização. Consequentemente, o codificador de vídeo 20 é um componente estrutural que tem hardware que realiza as técnicas exemplificadoras ou tem software/firmware em execução no hardware para especializar o hardware para realizar as técnicas exemplificadoras.
[0204] No exemplo da Figura 24, o codificador de vídeo 20 inclui uma unidade de processamento de predição 100, memória de dados de vídeo 101, uma unidade de geração residual 102, uma unidade de processamento de transformada 104, uma unidade de quantificação 106, uma unidade de quantificação inversa 108, uma unidade de processamento de transformada inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 114, um armazenamento temporário de imagem decodificada 116 e uma unidade de codificação de entropia 118. A unidade de processamento de predição 100 inclui uma unidade de processamento de inter-predição 120 e uma unidade de processamento intra-predição 126. A unidade de processamento de inter-predição 120 pode incluir uma unidade de estimação de movimento e uma unidade de compensação de movimento (não mostrada).
[0205] A memória de dados de vídeo 101 pode ser configurada para armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 101 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. O armazenamento temporário de imagem decodificada 116 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso na codificação de dados de vídeo pelo codificador de vídeo 20, por exemplo, nos modos de intra ou inter-codificação. A memória de dados de vídeo 101 e o armazenamento temporário de imagem decodificada 116 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, como memória dinâmica de acesso aleatório (DRAM), incluindo DRAM síncrona (SDRAM), memória RAM magneto-resistiva (MRAM), memória RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 101 e o armazenamento temporário de imagem decodificada 116 podem ser fornecidos pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em diversos exemplos, a memória de dados de vídeo 101 pode ser em chip com outros componentes de codificador de vídeo 20 ou fora de chip em relação àqueles componentes. A memória de dados de vídeo 101 pode ser a mesma ou parte da mídia de armazenamento 19 da Figura 1.
[0206] O codificador de vídeo 20 recebe dados de vídeo. O codificador de vídeo 20 pode codificar cada CTU em uma fatia de uma imagem dos dados de vídeo. Cada uma das CTUs pode estar associada a blocos de árvore de codificação de luma de tamanho igual (CTBs) e CTBs correspondentes da imagem. Como parte da codificação de uma CTU, a unidade de processamento de predição 100 pode realizar a partição para dividir os CTBs da CTU em blocos progressivamente menores. Os blocos menores podem ser blocos de codificação de CUs. Por exemplo, a unidade de processamento de predição 100 pode particionar um CTB associado a uma CTU de acordo com uma estrutura em árvore.
[0207] O codificador de vídeo 20 pode codificar CUs de uma CTU para gerar representações codificadas das CUs(isto é, CUs codificadas). Como parte da codificação de uma CU, a unidade de processamento de predição 100 pode particionar os blocos de codificação associados à CU entre uma ou mais PUs da CU. Dessa forma, cada PU pode ser associada a um bloco de predição de luma e blocos de predição de croma correspondentes. O codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar PUs que têm diversos tamanhos. Conforme indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação de luma da CU e o tamanho de uma PU pode se referir ao tamanho de um bloco de predição de luma da PU. Presumindo que o tamanho de uma CU particular seja 2Nx2N, o codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou NxN para a intra- predição e tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN ou similares para a inter-predição. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar a partição assimétrica para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para a inter-predição.
[0208] A unidade de processamento de inter- predição 120 pode gerar dados preditivos para uma PU. Como parte da geração dos dados preditivos para uma PU, a unidade de processamento de inter-predição 120 realiza a inter-predição na PU. Os dados preditivos para a PU podem incluir blocos preditivos da PU e informações de movimento para a PU. A unidade de processamento de inter-predição 120 pode realizar operações diferentes para uma PU de uma CU dependendo de se a PU está em uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intra- preditas. Por conseguinte, se a PU estiver em uma fatia I, a unidade de processamento de inter-predição 120 não realiza a inter-predição na PU. Dessa forma, para blocos codificados no modo I, o bloco predito é formado com o uso de predição espacial a partir de blocos vizinhos codificados anteriormente dentro do mesmo quadro. Se uma PU estiver em uma fatia P, a unidade de processamento de inter-predição 120 pode usar a inter-predição unidirecional para gerar um bloco preditivo da PU. Se uma PU estiver em uma fatia B, a unidade de processamento de inter-predição 120 pode usar a inter-predição unidirecional ou bidirecional para gerar um bloco preditivo da PU.
[0209] A unidade de processamento de inter- predição 120 pode realizar técnicas particulares desta revelação. Por exemplo, a unidade de processamento de inter-predição 120 pode determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual. Adicionalmente, a unidade de processamento de inter-predição 120 pode determinar, com base no vetor de movimento do bloco não adjacente, um MVP para o bloco atual. Adicionalmente, a unidade de processamento de inter-predição 120 pode determinar um vetor de movimento do bloco atual, em que o vetor de movimento é igual a um vetor de movimento do MVP para o bloco atual ou é igual ao vetor de movimento do MVP para o bloco atual mais uma MVD sinalizada em um fluxo de bits.
[0210] A unidade de processamento de intra- predição 126 pode gerar dados preditivos para uma PU mediante a realização de intra-predição na PU. Os dados preditivos para a PU podem incluir blocos preditivos da PU e diversos elementos de sintaxe. A unidade de processamento de intra-predição 126 pode realizar a intra-predição em PUs em fatias I, fatias P e fatias B.
[0211] Para realizar a intra-predição em uma PU, a unidade de processamento de intra-predição 126 pode usar múltiplos modos de intra-predição para gerar múltiplos conjuntos de dados preditivos para a PU. A unidade de processamento de intra-predição 126 pode usar amostras a partir de blocos de amostra de PUs vizinhas para gerar um bloco preditivo para uma PU. As PUs vizinhas podem estar acima, acima e à direita, acima e à esquerda ou à esquerda da PU, presumindo uma ordem de codificação da esquerda para a direita e de cima para baixo para PUs, CUs e CTUs. A unidade de processamento de intra-predição 126 pode usar diversos números de modos de intra-predição, por exemplo, 33 modos de intra-predição direcional. Em alguns exemplos, o número de modos de intra-predição pode depender do tamanho da região associada à PU.
[0212] A unidade de processamento de predição 100 pode selecionar os dados preditivos para PUs de uma CU dentre os dados preditivos gerados pela unidade de processamento de inter-predição 120 para as PUs ou os dados preditivos gerados pela unidade de processamento de intra- predição 126 para as Pus. Em alguns exemplos, a unidade de processamento de predição 100 seleciona os dados preditivos para as PUs da CU com base em métricas de taxa/distorção dos conjuntos de dados preditivos. Os blocos preditivos dos dados preditivos selecionados podem ser mencionados no presente documento como os blocos preditivos selecionados. A unidade de processamento de intra-predição 126 pode realizar as técnicas desta revelação relacionadas aos MPMs.
[0213] A unidade de geração residual 102 pode gerar, com base nos blocos de codificação (por exemplo,
blocos de codificação luma, Cb e Cr) para uma CU e nos blocos preditivos selecionados (por exemplo, blocos preditivos de luma, Cb e Cr) para as PUs da CU, blocos residuais (por exemplo, blocos residuais de luma, Cb e Cr) para a CU. Por exemplo, a unidade de geração residual 102 pode gerar os blocos residuais da CU, de modo que cada amostra nos blocos residuais tenha um valor igual a uma diferença entre uma amostra em um bloco de codificação da CU e uma amostra correspondente em um bloco preditivo selecionado correspondente de uma PU da CU.
[0214] A unidade de processamento de transformada 104 pode particionar os blocos residuais de uma CU em blocos de transformada de TUs da CU. Por exemplo, a unidade de processamento de transformada 104 pode realizar a partição em quadtree para particionar os blocos residuais da CU em blocos de transformada de TUs da CU. Dessa forma, uma TU pode ser associada a um bloco de transformada de luma e dois blocos de transformada de croma. Os tamanhos e posições dos blocos de transformada de luma e croma de TUs de uma CU podem ou não ter como base os tamanhos e as posições dos blocos de predição das PUs da CU. Uma estrutura quadtree conhecida como um “quadtree residual” (RQT) pode incluir nós associados a cada uma das regiões. As TUs de uma CU podem corresponder aos nós de folha do RQT.
[0215] A unidade de processamento de transformada 104 pode gerar blocos de coeficiente de transformada para cada TU de uma CU, mediante a aplicação de uma ou mais transformadas aos blocos de transformada da TU. A unidade de processamento de transformada 104 pode aplicar diversas transformadas a um bloco de transformada associado a uma TU. Por exemplo, a unidade de processamento de transformada 104 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada direcional ou uma transformada conceitualmente similar a um bloco de transformada. Em alguns exemplos, a unidade de processamento de transformada 104 não aplica transformadas a um bloco de transformada. Em tais exemplos, o bloco de transformada pode ser tratado como um bloco de coeficiente de transformada.
[0216] A unidade de quantificação 106 pode quantificar os coeficientes de transformada em um bloco de coeficiente. A unidade de quantificação 106 pode quantificar um bloco de coeficiente associado a uma TU de uma CU com base em um valor de parâmetro de quantificação (QP) associado à CU. O codificador de vídeo 20 pode ajustar o grau de quantificação aplicado aos blocos de coeficiente associados a uma CU mediante o ajuste do valor de QP associado à CU. A quantificação pode introduzir perda de informações. Dessa forma, os coeficientes de transformada quantificados podem ter precisão menor do que aqueles originais.
[0217] A unidade de quantificação inversa 108 e a unidade de processamento de transformada inversa 110 podem aplicar a quantificação inversa e transformadas inversas a um bloco de coeficiente, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficiente. A unidade de reconstrução 112 pode adicionar o bloco residual reconstruído a amostras correspondentes a partir de um ou mais blocos preditivos gerados pela unidade de processamento de predição 100 para produzir um bloco de transformada reconstruído associado a uma TU. Mediante a reconstrução de blocos de transformada para cada TU de uma CU dessa forma, o codificador de vídeo 20 pode reconstruir os blocos de codificação da CU.
[0218] A unidade de filtro 114 pode realizar uma ou mais operações de desblocagem para reduzir artefatos de blocagem nos blocos de codificação associados a uma CU. O armazenamento temporário de imagem decodificada 116 pode armazenar os blocos de codificação reconstruídos após a unidade de filtro 114 realizar a uma ou mais operações de desblocagem nos blocos de codificação reconstruídos. A unidade de processamento de inter-predição 120 pode usar uma imagem de referência que contém os blocos de codificação reconstruídos para realizar a inter-predição em PUs de outras imagens. Além disso, a unidade de processamento de intra-predição 126 pode usar blocos de codificação reconstruídos no armazenamento temporário de imagem decodificada 116 para realizar a intra-predição em outras PUs na mesma imagem que a CU.
[0219] A unidade de codificação de entropia 118 pode receber dados de outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação de entropia 118 pode receber blocos de coeficiente a partir da unidade de quantificação 106 e pode receber elementos de sintaxe a partir da unidade de processamento de predição 100. A unidade de codificação de entropia 118 pode realizar uma ou mais operações de codificação de entropia nos dados para gerar dados codificados por entropia. Por exemplo, a unidade de codificação de entropia 118 pode realizar uma operação
CABAC, uma operação de codificação de comprimento variável adaptável ao contexto (CAVLC), uma operação de codificação de comprimento variável para variável (V2V), uma operação de codificação aritmética binária adaptável ao contexto com base em sintaxe (SBAC), uma operação de codificação por entropia de partição de intervalo de probabilidade (PIPE), uma operação de codificação Exponencial-Golomb ou um outro tipo de operação de codificação por entropia nos dados. O codificador de vídeo 20 pode emitir um fluxo de bits que inclui dados codificados por entropia gerados pela unidade de codificação de entropia 118. Por exemplo, o fluxo de bits pode incluir dados que representam valores de coeficientes de transformada para uma CU.
[0220] A Figura 25 é um diagrama de blocos que ilustra um decodificador de vídeo exemplificador 30 que é configurado para implantar as técnicas desta revelação. A Figura 25 é fornecida para propósitos de explicação e não está limitando as técnicas ´conforme amplamente exemplificadas e descritas nesta revelação. Para propósitos de explicação, esta revelação descreve o decodificador de vídeo 30 no contexto da codificação HEVC. Entretanto, as técnicas da presente revelação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0221] O circuito de processamento inclui o decodificador de vídeo 30 e o decodificador de vídeo 30 é configurado para realizar uma ou mais das técnicas exemplificadoras descritas nesta revelação. Por exemplo, o decodificador de vídeo 30 inclui conjunto de circuitos integrado e as diversas unidades ilustradas na Figura 25 podem ser formadas como blocos de circuito de hardware que são interconectados com um barramento de circuito. Esses blocos de circuito de hardware podem ser blocos de circuito separados ou duas ou mais das unidades podem ser combinadas em um bloco de circuito de hardware comum. Os blocos de circuito de hardware podem ser formados como uma combinação de componentes eletrônicos que formam blocos de operação, como unidades lógicas aritméticas (ALUs), unidades de função elementar (EFUs), bem como blocos lógicos como AND, OR, NAND, NOR, XOR, XNOR e outros blocos lógicos similares.
[0222] Em alguns exemplos, uma ou mais das unidades ilustradas na Figura 25 podem ser unidades de software em execução no conjunto de circuitos de processamento. Em tais exemplos, o código do objeto para essas unidades de software é armazenado na memória. Um sistema operacional pode fazer com que o decodificador de vídeo 30 recupere o código de objeto e execute o código de objeto, que faz com que o decodificador de vídeo 30 realize operações para implantar as técnicas exemplificadoras. Em alguns exemplos, as unidades de software podem ser firmware que o decodificador de vídeo 30 executa na inicialização. Consequentemente, o decodificador de vídeo 30 é um componente estrutural que tem hardware que realiza as técnicas exemplificadoras ou tem software/firmware em execução no hardware para especializar o hardware para realizar as técnicas exemplificadoras.
[0223] No exemplo da Figura 25, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 150, memória de dados de vídeo 151, uma unidade de processamento de predição 152, uma unidade de quantificação inversa 154, uma unidade de processamento de transformada inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 160 e um armazenamento temporário de imagem decodificada 162. A unidade de processamento de predição 152 inclui uma unidade de compensação de movimento 164 e uma unidade de processamento de intra-predição 166. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais componentes funcionais, menos componentes funcionais ou componentes funcionais diferentes.
[0224] A memória de dados de vídeo 151 pode armazenar dados de vídeo codificados, como um fluxo de bits de vídeo codificado, a serem decodificados pelos componentes do decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 151 podem ser obtidos, por exemplo, a partir da mídia legível por computador 16, por exemplo, a partir de uma fonte de vídeo local, como uma câmera, através de comunicação de rede com ou sem fio de dados de vídeo ou acessando mídias de armazenamento de dados físicos. A memória de dados de vídeo 151 pode formar um armazenamento temporário de imagem codificada (CPB) que armazena dados de vídeo codificados a partir de um fluxo de bits de vídeo codificado. O armazenamento temporário de imagem decodificada 162 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso na decodificação de dados de vídeo pelo decodificador de vídeo 30, por exemplo, nos modos de intra ou inter-codificação, ou para saída. A memória de dados de vídeo 151 e o armazenamento temporário de imagem decodificada 162 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, como memória dinâmica de acesso aleatório (DRAM), incluindo DRAM síncrona (SDRAM), memória RAM magneto-resistiva (MRAM), memória RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 151 e o armazenamento temporário de imagem decodificada 162 podem ser fornecidos pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em diversos exemplos, a memória de dados de vídeo 151 pode ser em chip com outros componentes de decodificador de vídeo 30 ou fora de chip em relação àqueles componentes. A memória de dados de vídeo 151 pode ser a mesma ou parte da mídia de armazenamento 28 da Figura 1.
[0225] A memória de dados de vídeo 151 recebe e armazena dados de vídeo codificados (por exemplo, unidades NAL) de um fluxo de bits. A unidade de decodificação de entropia 150 pode receber dados de vídeo codificados (por exemplo, unidades NAL) a partir da memória de dados de vídeo 151 e pode analisar as unidades NAL para obter elementos de sintaxe. A unidade de decodificação de entropia 150 pode decodificar por entropia elementos de sintaxe codificados por entropia nas unidades NAL. A unidade de processamento de predição 152, a unidade de quantificação inversa 154, a unidade de processamento de transformada inversa 156, a unidade de reconstrução 158 e a unidade de filtro 160 podem gerar dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits. A unidade de decodificação de entropia 150 pode realizar um processo geralmente recíproco àquele da unidade de codificação de entropia 118.
[0226] Além de obter elementos de sintaxe a partir do fluxo de bits, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em uma CU não particionada. Para realizar a operação de reconstrução em uma CU, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Mediante a realização da operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir blocos residuais da CU.
[0227] Como parte da realização de uma operação de reconstrução em uma TU de uma CU, a unidade de quantificação inversa 154 pode quantificar de forma inversa, isto é, de-quantificar, blocos de coeficientes associados à TU. Depois que a unidade de quantificação inversa 154 quantifica de forma inversa um bloco de coeficiente, a unidade de processamento de transformada inversa 156 pode aplicar uma ou mais transformadas inversas ao bloco de coeficiente, a fim de gerar um bloco residual associado à TU. Por exemplo, a unidade de processamento de transformada inversa 156 pode aplicar uma DCT inversa, uma transformada de número inteiro inversa, uma transformada de Karhunen-Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa ou uma outra transformada inversa ao bloco de coeficiente.
[0228] Se uma PU for codificada com o uso da intra-predição, a unidade de processamento de intra- predição 166 pode realizar a intra-predição para gerar blocos preditivos da PU. A unidade de processamento de intra-predição 166 pode usar um modo de intra-predição para gerar os blocos preditivos da PU com base em amostras de blocos espacialmente vizinhos. A unidade de processamento de intra-predição 166 pode determinar o modo de intra-
predição para a PU com base em um ou mais elementos de sintaxe obtidos a partir do fluxo de bits. A unidade de processamento de intra-predição 166 pode realizar as técnicas desta revelação relacionadas aos MPMs.
[0229] Se uma PU for codificada usando de inter- predição, a unidade de decodificação de entropia 150 e/ou a unidade de compensação de movimento 164 podem determinar informações de movimento para a PU. A unidade de compensação de movimento 164 pode determinar, com base nas informações de movimento da PU, um ou mais blocos de referência. A unidade de compensação de movimento 164 pode gerar, com base no um ou mais blocos de referência, blocos preditivos (por exemplo, blocos preditivos de luma, Cb e Cr) para a PU.
[0230] De acordo com uma técnica desta revelação, a unidade de compensação de movimento 164 pode determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual. Adicionalmente, a unidade de compensação de movimento 164 pode determinar, com base no vetor de movimento do bloco não adjacente, um MVP de movimento para o bloco atual. A unidade de compensação de movimento 164 também pode determinar, com base no MVP para o bloco atual, um vetor de movimento do bloco atual.
[0231] A unidade de reconstrução 158 pode usar blocos de transformada (por exemplo, blocos de transformada de luma, Cb e Cr) para TUs de uma CU e os blocos preditivos (por exemplo, blocos de luma, Cb e Cr) das PUs da CU, isto é, dados de intra-predição ou dados de inter-predição,
conforme aplicável, para reconstruir os blocos de codificação (por exemplo, blocos de codificação de luma, Cb e Cr) para a CU. Por exemplo, a unidade de reconstrução 158 pode adicionar amostras dos blocos de transformada (por exemplo, blocos de transformada de luma, Cb e Cr) às amostras correspondentes dos blocos preditivos (por exemplo, blocos preditivos de luma, Cb e Cr) para reconstruir os blocos de codificação (por exemplo, blocos de codificação de luma, Cb e Cr) da CU.
[0232] A unidade de filtro 160 pode realizar uma operação de desblocagem para reduzir artefatos de blocagem associados aos blocos de codificação da CU. O decodificador de vídeo 30 pode armazenar os blocos de codificação da CU no armazenamento temporário de imagem decodificada 162. O armazenamento temporário de imagem decodificada 162 pode fornecer imagens de referência para compensação de movimento subsequente, intra-predição e apresentação em um dispositivo de exibição, como o dispositivo de exibição 32 da Figura 1. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos no armazenamento temporário de imagem decodificada 162, operações de intra-predição ou inter-predição para PUs de outras CUs.
[0233] Certos aspectos desta revelação foram descritos com relação a extensões do padrão HEVC para propósitos de ilustração. No entanto, as técnicas descritas nesta revelação podem ser úteis para outros processos de codificação de vídeo, incluindo outros processos de codificação de vídeo padrão ou proprietários ainda não desenvolvidos.
[0234] Um codificador de vídeo, conforme descrito nesta revelação, pode se referir a um codificador de vídeo ou um decodificador de vídeo. De modo similar, uma unidade de codificação de vídeo pode se referir a um codificador de vídeo ou um decodificador de vídeo. De modo semelhante, a codificação de vídeo pode se referir à codificação de vídeo ou decodificação de vídeo, conforme aplicável. Nesta revelação, a frase “com base em” pode indicar com base apenas em, com base pelo menos em parte em ou com base de alguma forma em. Esta revelação pode usar o termo “unidade de vídeo”, “bloco de vídeo” ou “bloco” para se referir a um ou mais blocos de amostra e estruturas de sintaxe usadas para codificar amostras do um ou mais blocos de amostras. Os tipos exemplificadores de unidades de vídeo podem incluir CTUs, CUs, PUs, unidades de transformada (TUs), macroblocos, partições de macrobloco e assim por diante. Em alguns contextos, a discussão de PUs pode ser intercambiada com a discussão de macroblocos ou partições de macrobloco. Os tipos exemplificadores de blocos de vídeo podem incluir blocos de árvore de codificação, blocos de codificação e outros tipos de blocos de dados de vídeo.
[0235] A Figura 26 é um fluxograma que ilustra uma operação exemplificadora de um codificador de vídeo para codificar dados de vídeo, de acordo com uma ou mais técnicas desta revelação. No exemplo da Figura 26, o codificador de vídeo 20 pode determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo (2600). O bloco não adjacente é não adjacente a um bloco atual da imagem atual.
[0236] Adicionalmente, o codificador de vídeo 20 pode determinar, com base no vetor de movimento do bloco não adjacente, um MVP para o bloco atual (2602). Em alguns exemplos, o MVP para o bloco atual está no modo afim. Em outras palavras, os vetores de movimento são especificados para pontos de controle no MVP. Em alguns exemplos, o bloco não adjacente é um bloco em um modelo que define um padrão fixo de blocos não adjacentes em relação a uma posição do bloco atual.
[0237] Em um exemplo, como parte da determinação do MVP para o bloco atual, o codificador de vídeo 20 pode gerar, com base em parte no vetor de movimento do bloco não adjacente, uma lista de candidatos de MVP. Nesse exemplo, a lista de candidatos de MVP inclui um candidato de MVP que especifica o vetor de movimento do bloco não adjacente. Adicionalmente, nesse exemplo, o codificador de vídeo 20 pode determinar, dentre os candidatos de MVP na lista de candidatos de MVP, o MVP para o bloco atual. Por exemplo, o codificador de vídeo 20 pode usar uma análise de custo RD para determinar o MVP para o bloco atual.
[0238] Em alguns exemplos, o codificador de vídeo 20 ordena uma pluralidade de candidatos de NA-SMVP na lista de candidatos de MVP. Em tais exemplos, para cada respectivo candidato de NA-SMVP da pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes e o respectivo NA-SMVP especifica um vetor de movimento do respectivo bloco não adjacente. A pluralidade de blocos não adjacentes inclui o primeiro bloco não adjacente. Adicionalmente, nesse exemplo, o codificador de vídeo 20 pode ordenar a pluralidade de candidatos de NA-SMVP na lista de acordo com a distância de blocos não adjacentes correspondentes a partir do bloco atual. A distância pode ser no sentido L1 ou L2.
[0239] Em alguns exemplos, o codificador de vídeo 20 determina uma primeira pluralidade de candidatos de NA- SMVP. Para cada respectivo candidato de NA-SMVP da primeira pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes. O respectivo NA-SMVP especifica um vetor de movimento do respectivo bloco não adjacente. A primeira pluralidade de blocos não adjacentes inclui o primeiro bloco não adjacente. Nesse exemplo, o codificador de vídeo 20 pode incluir uma segunda pluralidade de candidatos de NA-SMVP na lista, a segunda pluralidade de candidatos de NA-SMVP compreende candidatos de NA-SMVP não duplicados na primeira pluralidade de candidatos de NA-SMVP. Dessa maneira, o codificador de vídeo 20 pode realizar um processo de remoção que remove candidatos de NA-SMVP duplicados da lista. A segunda pluralidade de candidatos de NA-SMVP pode ser ordenada na lista de acordo com uma frequência com a qual os vetores de movimento especificados pelos candidatos de NA-SMVP na segunda pluralidade de candidatos de NA-SMVP são especificados por candidatos de NA-SMVP na primeira pluralidade de candidatos de NA-SMVP.
[0240] Em alguns exemplos, a lista de candidatos de MVP é uma lista de candidatos de vetor de movimento global. A lista de candidatos de vetor de movimento global compreende candidatos de MVP que especificam um vetor de movimento para cada bloco que está na imagem atual e que é codificado antes do bloco atual. Em tais exemplos, o codificador de vídeo pode determinar o vetor de movimento do bloco não adjacente a partir de um candidato de MVP na lista de candidatos de vetor de movimento global.
[0241] Adicionalmente, em alguns exemplos, o codificador de vídeo 20 armazena uma pluralidade de candidatos de MVP não adjacentes em um armazenamento temporário de PEPS. A pluralidade de candidatos de MVP não adjacentes inclui um candidato de MVP não adjacente que especifica o vetor de movimento do bloco não adjacente. Em tais exemplos, o codificador de vídeo 20 atualiza o armazenamento temporário de PEPS para remover um candidato de MVP não adjacente adicionado mais cedo a partir do armazenamento temporário de PEPS e adiciona um candidato de MVP ao armazenamento temporário de PEPS.
[0242] Em alguns exemplos, o codificador de vídeo 20 aplica um processo de remoção à lista. O processo de remoção é adaptável a um tamanho de bloco do bloco atual. Por exemplo, um processo de remoção de movimento total ou um processo de remoção de movimento parcial pode ser aplicado, conforme descrito em outro lugar nesta revelação.
[0243] O codificador de vídeo 20 também pode determinar um vetor de movimento do bloco atual (2604). Em alguns exemplos, como onde o modo de mesclagem é usado, o vetor de movimento do bloco atual é igual a um vetor de movimento do MVP. Em alguns exemplos, como quando o AMVP é usado, o vetor de movimento do bloco atual é igual ao vetor de movimento do MVP mais uma MVD que é sinalizada em um fluxo de bits.
[0244] Adicionalmente, o codificador de vídeo 20 pode determinar um bloco preditivo com base no vetor de movimento do bloco atual (2606). O codificador de vídeo 20 pode gerar, com base no bloco preditivo, valores de amostra residuais (2608). O codificador de vídeo 20 pode determinar o bloco preditivo e gerar os valores residuais de amostra de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação.
[0245] A Figura 27 é um fluxograma que ilustra uma operação exemplificadora do decodificador de vídeo 30 para decodificar dados de vídeo de acordo com uma ou mais técnicas desta revelação. No exemplo da Figura 27, o decodificador de vídeo 30 pode determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo (2700). O bloco não adjacente é não adjacente a um bloco atual da imagem atual. Em alguns exemplos, o bloco não adjacente é um bloco em um modelo que define um padrão fixo de blocos em relação a uma posição do bloco atual.
[0246] Em alguns exemplos, a lista de candidatos de MVP é uma lista de candidatos de vetor de movimento global. A lista de candidatos de vetor de movimento global compreende candidatos de MVP que especificam um vetor de movimento para cada bloco que está na imagem atual e que é codificado antes do bloco atual. Em tais exemplos, o codificador de vídeo pode determinar o vetor de movimento do bloco não adjacente a partir de um candidato de MVP na lista de candidatos de vetor de movimento global.
[0247] Adicionalmente, em alguns exemplos, o decodificador de vídeo 30 armazena uma pluralidade de candidatos de MVP não adjacentes em um armazenamento temporário de PEPS. A pluralidade de candidatos de MVP não adjacentes inclui um candidato de MVP não adjacente que especifica o vetor de movimento do bloco não adjacente. Em tais exemplos, o codificador de vídeo 20 atualiza o armazenamento temporário de PEPS para remover um candidato de MVP não adjacente adicionado mais cedo a partir do armazenamento temporário de PEPS e adiciona um candidato de MVP ao armazenamento temporário de PEPS.
[0248] Adicionalmente, o decodificador de vídeo 30 pode determinar, com base no vetor de movimento do bloco não adjacente, um MVP para o bloco atual (2702). Em alguns exemplos, o MVP para o bloco atual pode ser no modo afim, um modo não afim ou um outro modo de predição com compensação de movimento. Em um exemplo, como parte da determinação do MVP para o bloco atual, o decodificador de vídeo 30 pode gerar, com base em parte no vetor de movimento do bloco não adjacente, uma lista de candidatos de MVP. Nesse exemplo, a lista de candidatos de MVP inclui um candidato de MVP que especifica o vetor de movimento do bloco não adjacente. Adicionalmente, nesse exemplo, o decodificador de vídeo 30 pode determinar, dentre os candidatos de MVP na lista de candidatos de MVP, o MVP para o bloco atual. Por exemplo, o decodificador de vídeo 30 pode usar uma análise de distorção de taxa para identificar um MVP melhor na lista de candidatos de MVP.
[0249] Em alguns exemplos, o bloco não adjacente é um primeiro bloco não adjacente e o decodificador de vídeo 30 ordena uma pluralidade de candidatos de NA-SMVP na lista. Em outras palavras, o decodificador de vídeo 30 insere a pluralidade de candidatos de NA-SMVP na lista de acordo com uma ordem particular. Em tais exemplos, para cada respectivo candidato de NA-SMVP da pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes. O respectivo NA-SMVP especifica um vetor de movimento do respectivo bloco não adjacente. Em alguns exemplos, o decodificador de vídeo 30 ordena a pluralidade de candidatos de NA-SMVP na lista de acordo com a distância (por exemplo, em termos de L1 ou L2) dos blocos não adjacentes correspondentes a partir do bloco atual. Em alguns exemplos, o decodificador de vídeo 30 ordena a pluralidade de candidatos de NA-SMVP de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação.
[0250] Em alguns exemplos, o bloco não adjacente é um primeiro bloco não adjacente e o decodificador de vídeo 30 determina adicionalmente uma primeira pluralidade de candidatos de NA-SMVP. Por exemplo, em tais exemplos, para cada respectivo candidato de NA-SMVP da primeira pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes. O respectivo NA-SMVP especifica um vetor de movimento do respectivo bloco não adjacente. A primeira pluralidade de blocos não adjacentes inclui o primeiro bloco não adjacente. Adicionalmente, em tais exemplos, o decodificador de vídeo 30 pode ordenar uma segunda pluralidade de candidatos de NA-SMVP na lista. Em outras palavras, o decodificador de vídeo 30 pode incluir a segunda pluralidade de candidatos de NA-SMVP na lista de acordo com uma ordem particular. A segunda pluralidade de candidatos de NA-SMVP compreende candidatos de NA-SMVP não duplicados na primeira pluralidade de candidatos de NA- SMVP. Em alguns exemplos, a segunda pluralidade de candidatos de NA-SMVP é ordenada na lista de acordo com a frequência com a qual os vetores de movimento especificados pelo candidato de NA-SMVP na segunda pluralidade de candidatos de NA-SMVP são especificados pelos candidatos de NA-SMVP na primeira pluralidade de candidatos de NA-SMVP.
[0251] Em alguns exemplos, o decodificador de vídeo 30 pode aplicar um processo de remoção à lista. Em alguns tais exemplos, o processo de remoção é adaptável a um tamanho de bloco do bloco atual. Em alguns exemplos, o decodificador de vídeo 30 aplica um processo de remoção de movimento total aos NA-SMVPs e aos outros candidatos de mesclagem, conforme descrito em outro lugar nesta revelação. Em alguns exemplos, o decodificador de vídeo 30 aplica apenas um processo de remoção de movimento parcial aos NA-SMVPs e aos outros candidatos de mesclagem, conforme descrito em outro lugar nesta revelação.
[0252] Adicionalmente, o decodificador de vídeo 30 pode determinar, com base no MVP para o bloco atual, um vetor de movimento do bloco atual (2704). Em alguns exemplos, se a lista de candidatos de MVP for uma lista de candidatos de mesclagem, o decodificador de vídeo 30 pode determinar o MVP para o bloco atual de modo que o MVP para o bloco atual especifica um vetor de movimento de um candidato de MVP na lista de candidatos de MVP. Em alguns exemplos, se a lista de candidatos de MVP for uma lista de candidatos de AMVP, o decodificador de vídeo 30 pode determinar o MVP para o bloco atual de modo que um vetor de movimento do MVP para o bloco atual seja igual a um vetor de movimento de um candidato de MVP na lista de candidatos de MVP mais uma MVD.
[0253] O decodificador de vídeo 30 pode determinar também um bloco preditivo com base no vetor de movimento do bloco atual (2706). Por exemplo, o decodificador de vídeo 30 pode determinar o bloco preditivo com base em amostras de uma imagem de referência em um local indicado pelo vetor de movimento, conforme descrito em detalhes em outro lugar nesta revelação. O decodificador de vídeo 30 pode, então, reconstruir, com base no bloco preditivo, valores de amostra da imagem atual (2708). Por exemplo, o decodificador de vídeo 30 pode reconstruir valores de amostra da imagem atual mediante a adição de valores de amostra no bloco preditivo a valores de amostra residuais.
[0254] A Figura 28 é um fluxograma que ilustra uma operação exemplificadora para determinar um NA-SMVP com o uso de candidatos de vetor de movimento de FRUC, de acordo com uma técnica desta revelação. No exemplo da Figura 28, um codificador de vídeo (por exemplo, codificador de vídeo 20 ou decodificador de vídeo 30) pode determinar um conjunto de candidatos de vetor de movimento de conversão ascendente de taxa de quadro (FRUC) de nível de CU (2800). Adicionalmente, o codificador de vídeo pode selecionar um candidato de vetor de movimento de FRUC de nível de CU a partir do conjunto de candidatos de vetor de movimento de FRUC de nível de CU (2802). O codificador de vídeo pode determinar um vetor de movimento de nível de CU pelo menos em parte mediante a realização de uma pesquisa local que se inicia a partir de um candidato de vetor de movimento de FRUC de nível de CU selecionado (2804). Adicionalmente, o codificador de vídeo pode refinar o vetor de movimento de nível de CU em um nível de sub-CU com um conjunto de candidatos de vetor de movimento de FRUC de nível de sub-CU (2806). De acordo com uma técnica desta revelação, pelo menos um dentre o conjunto de candidatos de vetor de movimento de FRUC de nível de CU e o conjunto de candidatos de vetor de movimento de FRUC de nível de sub-CU inclui um NA-SMVP que especifica o vetor de movimento do bloco não adjacente de Figura 26 e Figura 27. O processo de FRUC pode ser, de outro modo, consistente com os exemplos fornecidos em outro lugar nesta revelação.
[0255] A Figura 29 é um fluxograma que ilustra uma operação exemplificadora do codificador de vídeo 20 que inclui candidatos sintéticos em uma lista de candidatos de MVP para um bloco atual, de acordo com uma ou mais técnicas desta revelação. No exemplo da Figura 29, o codificador de vídeo 20 pode determinar uma lista de candidatos de MVP para um bloco atual de uma imagem atual dos dados de vídeo (2900). A lista de candidatos de MVP inclui um candidato de MVP de bi-predição e um candidato de MVP de uni-predição sintético. Adicionalmente, no exemplo da Figura 29 e de acordo com uma técnica desta revelação, o codificador de vídeo 20 gera, como parte da determinação da lista de candidatos de MVP, o candidato de MVP de uni-predição sintético com base em um vetor de movimento especificado pelo candidato de MVP de bi-predição (2902). Em um exemplo, o codificador de vídeo 20 gera os candidatos de uni-
predição sintéticos mediante a divisão dos candidatos de MV de bi-predição disponíveis em dois candidatos de uni- predição separados de acordo com uma ordem predefinida. Nesse exemplo, o codificador de vídeo 20 pode então inserir os candidatos de uni-predição sintéticos criados na lista de candidatos. Em alguns exemplos, quando a MVD inteira ou MVD de quatro amostras de luma é habilitada, o codificador de vídeo 20 pode gerar candidatos de MV de quatro amostras de luma ou inteiro sintéticos mediante o arredondamento ou truncamento dos candidatos de MV disponíveis em candidatos de MV de quatro amostras de luma ou MV inteiro. Em tais exemplos, o codificador de vídeo 20 insere os candidatos de MV inteiro sintéticos ou candidatos de MV de 4 amostras de luma na lista de candidatos.
[0256] Adicionalmente, no exemplo da Figura 29, o codificador de vídeo 20 pode determinar, com base em um vetor de movimento de um candidato de MVP selecionado na lista de candidatos de MVP, um MVP para o bloco atual (2904). Adicionalmente, o codificador de vídeo 20 pode determinar um vetor de movimento do bloco atual (2906). Em alguns exemplos, como onde o modo de mesclagem é usado, o vetor de movimento do bloco atual é igual a um vetor de movimento do MVP. Em alguns exemplos, como quando o AMVP é usado, o vetor de movimento do bloco atual é igual ao vetor de movimento do MVP mais uma MVD que é sinalizada em um fluxo de bits.
[0257] O codificador de vídeo 20 também pode determinar um bloco preditivo com base no vetor de movimento do bloco atual (2908). Adicionalmente, o codificador de vídeo 20 pode gerar, com base no bloco preditivo, valores de amostra residuais (2910). O codificador de vídeo 20 pode determinar o bloco preditivo e gerar os valores residuais de amostra de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação.
[0258] A Figura 30 é um fluxograma que ilustra uma operação exemplificadora do decodificador de vídeo 30 que inclui candidatos sintéticos em uma lista de candidatos de MVP para um bloco atual, de acordo com uma ou mais técnicas desta revelação. No exemplo da Figura 30, o decodificador de vídeo 30 pode determinar uma lista de candidatos de MVP para um bloco atual de uma imagem atual dos dados de vídeo (3000). A lista de candidatos de MVP inclui um candidato de MVP de bi-predição e um candidato de MVP de uni-predição sintético. Adicionalmente, no exemplo da Figura 30 e de acordo com uma técnica desta revelação, o decodificador de vídeo 30 gera, como parte da determinação da lista de candidatos de MVP, o candidato de MVP de uni- predição sintético com base em um vetor de movimento especificado pelo candidato de MVP de bi-predição (3002). Em um exemplo, o decodificador de vídeo 30 gera os candidatos de uni-predição sintéticos mediante a divisão dos candidatos de MV de bi-predição disponíveis em dois candidatos de uni-predição separados de acordo com uma ordem predefinida. Nesse exemplo, o decodificador de vídeo 30 pode então inserir os candidatos de uni-predição sintéticos criados na lista de candidatos. Em alguns exemplos, quando a MVD inteira ou MVD de quatro amostras de luma é habilitada, o decodificador de vídeo 30 gera candidatos de MV de quatro amostras de luma ou inteiro sintéticos mediante o arredondamento ou truncamento dos candidatos de MV disponíveis em candidatos de MV de quatro amostras de luma ou MV inteiro. Em tais exemplos, o decodificador de vídeo 30 insere os candidatos de MV inteiro sintéticos ou candidatos de MV de 4 amostras de luma na lista de candidatos.
[0259] No exemplo da Figura 30, o decodificador de vídeo 30 pode, então, determinar, com base em um vetor de movimento de um candidato de MVP selecionado na lista de candidatos de MVP, um MVP para o bloco atual (3004). Adicionalmente, o decodificador de vídeo 30 determina, com base no MVP para o bloco atual, um vetor de movimento do bloco atual (3006). O decodificador de vídeo 30 pode determinar um bloco preditivo com base no vetor de movimento do bloco atual (3008). Adicionalmente, o decodificador de vídeo 30 pode reconstruir, com base no bloco preditivo, valores de amostra da imagem atual (3010). O decodificador de vídeo 30 pode selecionar o candidato de MVP, determinar o vetor de movimento, determinar o bloco preditivo e reconstruir os valores da imagem atual de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação.
[0260] A Figura 31 é um fluxograma que ilustra uma operação exemplificadora de um codificador de vídeo 20 para codificar dados de vídeo, de acordo com uma técnica desta revelação. No exemplo da Figura 31, o codificador de vídeo 20 determina uma lista de candidatos de MVP para um bloco atual de uma imagem atual dos dados de vídeo (3100). O codificador de vídeo 20 pode determinar a lista de candidatos de MVP de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação. Adicionalmente, de acordo com uma técnica desta revelação, o codificador de vídeo 20 determina um candidato de MVP sintético mediante o arredondamento ou truncamento de um candidato de MVP na lista para a resolução inteira ou resolução de 4 amostras de luma (3102). O codificador de vídeo 20 pode, então, inserir o candidato de MVP sintético na lista de candidato de MVP (3104).
[0261] O codificador de vídeo 20 pode, então, determinar, com base em um vetor de movimento de um candidato de MVP selecionado na lista de candidatos de MVP, um preditor de vetor de movimento (MVP) para o bloco atual (3106). Por exemplo, o codificador de vídeo 20 pode usar um teste de distorção de taxa para selecionar o MVP para o bloco atual. Adicionalmente, o codificador de vídeo 20 pode determinar um vetor de movimento do bloco atual (3108). Em alguns exemplos, como onde o modo de mesclagem é usado, o vetor de movimento do bloco atual é igual a um vetor de movimento do MVP. Em alguns exemplos, como quando o AMVP é usado, o vetor de movimento do bloco atual é igual ao vetor de movimento do MVP mais uma MVD que é sinalizada em um fluxo de bits.
[0262] O codificador de vídeo 20 pode determinar, um bloco preditivo com base no vetor de movimento do bloco atual (3110). Em seguida, o codificador de vídeo 20 pode gerar, com base no bloco preditivo, valores de amostra residuais (3112). O codificador de vídeo 20 pode determinar o bloco preditivo e gerar os valores residuais de amostra de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação.
[0263] A Figura 32 é um fluxograma que ilustra uma operação exemplificadora de decodificador de vídeo 30 para decodificar dados de vídeo, de acordo com uma técnica desta revelação. No exemplo da Figura 32, o decodificador de vídeo 30 determina uma lista de candidatos de MVP para um bloco atual de uma imagem atual dos dados de vídeo (3200). O decodificador de vídeo 30 pode determinar a lista de candidatos de MVP de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação. Adicionalmente, de acordo com uma técnica desta revelação, o decodificador de vídeo 30 pode determinar um candidato de MVP sintético mediante o arredondamento ou truncamento de um candidato de MVP na lista para a resolução inteira ou resolução de 4 amostras de luma (3202). O decodificador de vídeo 30 pode, então, inserir o candidato de MVP sintético na lista de candidatos de MVP (3204).
[0264] Subsequentemente, o decodificador de vídeo 30 pode determinar, com base em um vetor de movimento de um candidato de MVP selecionado na lista de candidatos de MVP, um MVP para o bloco atual (3206). Adicionalmente, o decodificador de vídeo 30 pode determinar, com base no MVP para o bloco atual, um vetor de movimento do bloco atual (3208). O decodificador de vídeo 30 pode determinar também um bloco preditivo com base no vetor de movimento do bloco atual (3210). Adicionalmente, o decodificador de vídeo 30 pode reconstruir, com base no bloco preditivo, valores de amostra da imagem atual (3212). O decodificador de vídeo 30 pode selecionar o candidato de MVP, determinar o vetor de movimento, determinar o bloco preditivo e reconstruir os valores da imagem atual de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação.
[0265] A Figura 33 é um fluxograma que ilustra uma operação exemplificadora de um codificador de vídeo 20 para codificar dados de vídeo, de acordo com uma técnica desta revelação. No exemplo da Figura 33, o codificador de vídeo 20 pode determinar uma lista de candidatos de MVP para um bloco atual de uma imagem atual dos dados de vídeo (3300). Em geral, o codificador de vídeo 20 pode determinar a lista de candidatos de MVP de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação. No entanto, de acordo com uma técnica desta revelação, a lista de candidatos de MVP inclui uma pluralidade de candidatos de TMVP. Cada respectivo candidato de MVP na lista de candidatos de MVP especifica um respectivo vetor de movimento. Os respectivos candidatos de TMVP da pluralidade de candidatos de TMVP especificam vetores de movimento de um ou mais blocos em uma ou mais imagens de referência (por exemplo, uma única imagem de referência, uma pluralidade de imagens de referência, etc.).
[0266] Em alguns exemplos, a pluralidade de candidatos de TMVP inclui dois ou mais candidatos de TMVP que especificam vetores de movimento de blocos de referência co-localizados com locais na imagem atual (por exemplo, locais adjacentes ao bloco atual, locais não adjacentes ao bloco atual). Em tais exemplos, os blocos de referência são blocos de uma ou mais imagens de referência.
[0267] Em alguns exemplos, o codificador de vídeo 20 aplica um processo de remoção à lista de candidatos de MVP. Por exemplo, o codificador de vídeo 20 pode aplicar um processo de remoção à lista de candidatos de MVP para remover todos ou alguns candidatos de MVP idênticos na lista de candidatos de MVP.
[0268] Adicionalmente, no exemplo da Figura 33, o codificador de vídeo 20 pode determinar, com base em um vetor de movimento de um candidato de MVP selecionado na lista de candidatos de MVP, um MVP para o bloco atual (3302). Por exemplo, o codificador de vídeo 20 pode usar um teste de distorção de taxa para determinar o MVP para o bloco atual. O codificador de vídeo 20 pode determinar também um vetor de movimento do bloco atual (3304). Em alguns exemplos, como onde o modo de mesclagem é usado, o vetor de movimento do bloco atual é igual a um vetor de movimento do MVP. Em alguns exemplos, como quando o AMVP é usado, o vetor de movimento do bloco atual é igual ao vetor de movimento do MVP mais uma MVD que é sinalizada em um fluxo de bits.
[0269] Adicionalmente, o codificador de vídeo 20 pode usar o vetor de movimento do bloco atual para determinar um bloco preditivo (3306). Adicionalmente, o codificador de vídeo 20 pode gerar, com base no bloco preditivo, valores de amostra residuais (3308). O codificador de vídeo 20 pode determinar o bloco preditivo e gerar os valores residuais de amostra de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação.
[0270] A Figura 34 é um fluxograma que ilustra uma operação exemplificadora do decodificador de vídeo 30 para decodificar dados de vídeo de acordo com um ou mais exemplos desta revelação. No exemplo da Figura 34, o decodificador de vídeo 30 pode determinar uma lista de candidatos de MVP para um bloco atual de uma imagem atual dos dados de vídeo (3400). Em geral, o decodificador de vídeo 30 pode determinar a lista de candidatos de MVP de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação. No entanto, de acordo com uma técnica desta revelação, a lista de candidatos de MVP inclui uma pluralidade de candidatos de TMVP. Cada respectivo candidato de MVP na lista de candidatos de MVP especifica um respectivo vetor de movimento. Os respectivos candidatos de TMVP da pluralidade de candidatos de TMVP especificam um vetor de movimento de um ou mais blocos em uma ou mais imagens de referência (por exemplo, uma única imagem de referência, uma pluralidade de imagens de referência, etc.).
[0271] Em um exemplo, a pluralidade de candidatos de TMVP inclui dois ou mais candidatos de TMVP que especificam vetores de movimento de blocos de referência co-localizados com locais na imagem atual. Nesse exemplo, os blocos de referência são blocos de uma ou mais imagens de referência (por exemplo, uma única imagem de referência, uma pluralidade de imagens de referência, etc.). Em alguns casos desse exemplo, os locais são adjacentes ao bloco atual. Em alguns casos desse exemplo, os locais não são adjacentes ao bloco atual.
[0272] Em alguns exemplos, o decodificador de vídeo 30 pode aplicar um processo de remoção à lista de candidatos de MVP. Por exemplo, o decodificador de vídeo 30 pode aplicar um processo de remoção à lista de candidatos de MVP para remover todos ou alguns candidatos de MVP idênticos na lista de candidatos de MVP.
[0273] Adicionalmente, no exemplo da Figura 34, o decodificador de vídeo 30 pode determinar, com base em um vetor de movimento de um candidato de MVP selecionado na lista de candidatos de MVP, um MVP para o bloco atual (3402). O decodificador de vídeo 30 pode determinar, com base no MVP para o bloco atual, um vetor de movimento do bloco atual (3404). Adicionalmente, o decodificador de vídeo 30 pode determinar um bloco preditivo com base no vetor de movimento do bloco atual (3406). O decodificador de vídeo 30 pode reconstruir, com base no bloco preditivo, valores de amostra da imagem atual (3408). O decodificador de vídeo 30 pode selecionar o candidato de MVP, determinar o vetor de movimento, determinar o bloco preditivo e reconstruir os valores da imagem atual de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação.
[0274] A Figura 35 é um fluxograma que ilustra uma operação exemplificadora de um codificador de vídeo 20 para codificar dados de vídeo, de acordo com uma técnica desta revelação. No exemplo da Figura 35, o codificador de vídeo 20 pode determinar uma pluralidade de modos mais prováveis (MPMs) (3500). Cada respectivo MPM da pluralidade de MPMs especifica um respectivo modo de intra-predição de um respectivo bloco. No exemplo da Figura 35, a pluralidade de MPMs inclui uma MPM particular que especifica um modo de intra-predição de um bloco não adjacente de uma imagem atual dos dados de vídeo. O bloco não adjacente é não adjacente a um bloco atual da imagem atual. Em alguns exemplos, o bloco não adjacente é um bloco em um modelo que define um padrão fixo de blocos não adjacentes em relação a uma posição do bloco atual. Em outros exemplos, os blocos não adjacentes são blocos que estão dentro de uma distância particular do bloco atual. O bloco não adjacente pode ser determinado de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação.
[0275] Em alguns exemplos, como parte da determinação da pluralidade de MPMs, o codificador de vídeo 20 pode determinar um lista ordenada dos MPMs. Em tais exemplos, os MPMs com base nos blocos não adjacentes são ordenados na lista de acordo com uma frequência com a qual os modos de intra-predição são especificados por blocos não adjacentes em uma pluralidade de blocos não adjacentes. Em outros exemplos, os MPMs com base nos blocos não adjacentes não são ordenados na lista de acordo com tal frequência.
[0276] Em alguns exemplos, para determinar a pluralidade de MPMs, o codificador de vídeo 20 pode determinar uma lista de MPM global que compreende MPMs que especificam informações de movimento para cada bloco que está na imagem atual e que é codificado antes do bloco atual. Em tais exemplos, o codificador de vídeo 20 pode determinar um MPM a partir dos MPMs na lista de candidatos de vetor de movimento global. Em alguns exemplos, o codificador de vídeo 20 pode armazenar uma pluralidade de MPMs não adjacentes em um armazenamento temporário de PEPS. Em tais exemplos, a pluralidade de MPMs não adjacentes inclui um MPM não adjacente que especifica o modo de intra- predição do bloco não adjacente. Adicionalmente, em tais exemplos, o codificador de vídeo 20 pode atualizar o armazenamento temporário de PEPS para remover um MPM não adjacente adicionado mais cedo a partir do armazenamento temporário de PEPS e pode adicionar um MPM ao armazenamento temporário de PEPS. A pluralidade de MPMs pode incluir os MPMs no armazenamento temporário de PEPS.
[0277] Adicionalmente, no exemplo da Figura 35, o codificador de vídeo 20 pode gerar um bloco preditivo com base em um modo de intra-predição especificado por um MPM dentre a pluralidade de MPMs (3502). Adicionalmente, o codificador de vídeo 20 pode gerar, com base no bloco preditivo, valores de amostra residuais (3504). O codificador de vídeo 20 pode determinar o bloco preditivo e gerar os valores residuais de amostra de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação.
[0278] A Figura 36 é um fluxograma que ilustra uma operação exemplificadora de decodificador de vídeo 30 para decodificar dados de vídeo, de acordo com uma técnica desta revelação. No exemplo da Figura 36, o decodificador de vídeo 30 pode determinar uma pluralidade de MPMs (3600). Cada respectivo MPM da pluralidade de MPMs especifica um respectivo modo de intra-predição de um respectivo bloco. De acordo com uma técnica desta revelação, a pluralidade de MPMs inclui um MPM particular que especifica um modo de intra-predição de um bloco não adjacente de uma imagem atual dos dados de vídeo. O bloco não adjacente é não adjacente a um bloco atual da imagem atual. Em alguns exemplos, o bloco não adjacente é um bloco em um modelo que define um padrão fixo de blocos não adjacentes em relação a uma posição do bloco atual. Em outros exemplos, o bloco não adjacente é uma distância fixa a partir do bloco atual. O bloco não adjacente pode ser determinado de acordo com qualquer um dos exemplos fornecidos em outro lugar nesta revelação.
[0279] Em alguns exemplos, como parte da determinação da pluralidade de MPMs, o decodificador de vídeo 30 pode determinar um lista ordenada dos MPMs. Em tais exemplos, os MPMs com base nos blocos não adjacentes são ordenados na lista de acordo com a frequência com a qual os modos de intra-predição são especificados por blocos não adjacentes em uma pluralidade de blocos não adjacentes. Em outros exemplos, os MPMs com base nos blocos não adjacentes não são ordenados na lista de acordo com tal frequência.
[0280] Em alguns exemplos, a pluralidade de MPMs é uma lista de MPM global que compreende MPMs que especificam informações de movimento para cada bloco que está na imagem atual e que é codificado antes do bloco atual. Em tais exemplos, o decodificador de vídeo 30 pode determinar um MPM a partir dos MPMs na lista de candidatos de vetor de movimento global. Em alguns exemplos, o decodificador de vídeo 30 pode armazenar uma pluralidade de MPMs não adjacentes em um primeiro armazenamento temporário de primeiro a entrar, primeiro a sair (PEPS). Em tais exemplos, a pluralidade de MPMs não adjacentes inclui um MPM não adjacente que especifica o modo de intra-predição do bloco não adjacente. Adicionalmente, em tais exemplos, o decodificador de vídeo 30 pode atualizar o armazenamento temporário de PEPS para remover um MPM não adjacente adicionado mais cedo a partir do armazenamento temporário de PEPS e adicionar um MPM ao armazenamento temporário de PEPS. A pluralidade de MPMs pode incluir os MPMs no armazenamento temporário de PEPS.
[0281] Adicionalmente, no exemplo da Figura 36, o decodificador de vídeo 30 pode gerar um bloco preditivo com base em um modo de intra-predição especificado por um MPM dentre a pluralidade de MPMs (3602). Adicionalmente, o decodificador de vídeo 30 pode reconstruir, com base no bloco preditivo, valores de amostra da imagem atual (3604). O decodificador de vídeo 30 pode gerar o bloco preditivo e reconstruir os valores de amostra de acordo com qualquer uma das técnicas fornecidas em outro lugar nesta revelação.
[0282] As técnicas desta revelação podem ser aplicadas à codificação de vídeo em suporte de qualquer uma dentre uma variedade de aplicações de multimídia, como difusões de televisão pelo ar, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões de vídeo de transmissão contínua via Internet, como transmissão contínua adaptativa dinâmica em HTTP (DASH), vídeo digital que é 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.
[0283] Nesta revelação, os termos ordinais como “primeiro”, “segundo”, “terceiro” e assim por diante, não são necessariamente indicadores de posições dentro de uma ordem, mas podem, de preferência, simplesmente ser usados para distinguir ocorrências diferentes da mesma coisa.
[0284] Deve-se reconhecer que, dependendo do exemplo, certas ações ou eventos de qualquer uma das técnicas descritas no presente documento podem ser realizadas em uma sequência diferente, podem ser adicionadas, mescladas ou excluídas completamente (por exemplo, nem todas as ações ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, ações ou eventos podem ser realizados concomitantemente, por exemplo, através de processamento multi-threaded, processamento de interrupção ou múltiplos processadores, em vez de sequencialmente.
[0285] Em um ou mais exemplos, as funções descritas podem ser implantadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se forem implantadas em software, as funções podem ser armazenadas em ou transmitidas sobre, como uma ou mais instruções ou código, uma mídia legível por computador e executadas por uma unidade de processamento à base de 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 como mídia de armazenamento de dados, ou mídia de comunicação que inclui qualquer meio que facilite a transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa maneira, a mídia legível por computador pode, em geral, 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 uma onda de portadora ou sinal. 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 circuitos de processamento para recuperar instruções, código e/ou estruturas de dados para implantação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um mídia legível por computador.
[0286] A título de exemplo, e não de limitação, tais mídias de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash, memória cache ou qualquer outra mídia que pode ser usada para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que podem ser acessadas por um computador.
Além disso, qualquer conexão é adequadamente denominada uma mídia legível por computador.
Por exemplo, se as instruções forem transmitidas a partir de um sítio da web, um servidor ou de outra fonte remota com o uso de um cabo coaxial, um cabo de fibra óptica, um par retorcido, uma linha de assinante digital (DSL) ou tecnologias sem fio como infravermelho, rádio e micro- ondas, então, o cabo coaxial, o cabo de fibra óptica, o par retorcido, a DSL ou as tecnologias sem fio como infravermelho, rádio e micro-ondas são incluídas na definição de meio.
Deve-se compreender, no entanto, que a mídia de armazenamento legível por computador e mídia de armazenamento de dados não incluem conexões, ondas de portadora, sinais, ou outras mídias transitórias, mas são, em vez disso, direcionadas a mídia de armazenamento tangível não transitória.
O disco magnético e o disco óptico, conforme usado no presente documento, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, em que os discos magnéticos normalmente reproduzem os dados de modo magnético, enquanto os discos ópticos reproduzem os dados de modo óptico com lasers.
As combinações do supracitado devem também ser incluídas no escopo de mídias legíveis por computador.
[0287] A funcionalidade descrita nesta revelação pode ser realizada por função fixa e/ou conjunto de circuitos de processamento programável. Por exemplo, as instruções podem ser executadas por função fixa e/ou conjunto de circuitos de processamento programável. Tal conjunto de circuitos de processamento podem incluir um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados de aplicação específica (ASICs), arranjos de lógicas programáveis em campo (FPGAs) ou outro conjunto de circuitos lógico discreto ou integrado equivalente. Consequentemente, o termo “processador”, conforme usado no presente documento, pode se referir a qualquer uma das estruturas supracitadas ou qualquer outra estrutura adequada para a implantação das técnicas descritas no presente documento. Adicionalmente, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos de software e/ou hardware dedicado configurado para codificar e decodificar, ou incorporado em um codec combinado. Além disso, as técnicas poderiam ser completamente implantadas em um ou mais circuitos ou elementos lógicos. Os circuitos de processamento podem ser acoplados a outros componentes de várias maneiras. Por exemplo, um circuito de processamento pode ser acoplado a outros componentes por meio de uma interconexão de dispositivo interno, uma conexão de rede com fio ou sem fio ou uma outra mídia de comunicação.
[0288] As técnicas desta revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritas na presente revelação para enfatizar os aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem, necessariamente, a realização por diferentes unidades de hardware. De preferência, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequado.
[0289] Diversos exemplos foram descritos. Esses e outros exemplos são abrangidos pelo escopo das reivindicações a seguir.

Claims (66)

REIVINDICAÇÕES
1. Método para decodificar dados de vídeo, sendo que o método compreende: determinar, por meio de um decodificador de vídeo, um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinar, por meio do decodificador de vídeo, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinar, por meio do decodificador de vídeo, com base no MVP para o bloco atual, um vetor de movimento do bloco atual; determinar, por meio do decodificador de vídeo, um bloco preditivo com base no vetor de movimento do bloco atual; e reconstruir, por meio do decodificador de vídeo, com base no bloco preditivo, valores de amostra da imagem atual.
2. Método, de acordo com a reivindicação 1, em que a determinação do MVP para o bloco atual compreende: gerar, por meio do decodificador de vídeo, com base, em parte, no vetor de movimento do bloco não adjacente, uma lista de candidatos de preditor de vetor de movimento (MVP), em que a lista de candidatos de MVP inclui um candidato de MVP que especifica o vetor de movimento do bloco não adjacente; e determinar, por meio do decodificador de vídeo, dentre os candidatos de MVP na lista de candidatos de MVP, o MVP para o bloco atual.
3. Método, de acordo com a reivindicação 2, em que o bloco não adjacente é um primeiro bloco não adjacente, sendo que o método compreende adicionalmente: ordenar, por meio do decodificador de vídeo, uma pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP) na lista, em que, para cada respectivo candidato de NA-SMVP da pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes, sendo que o respectivo NA-SMVP especifica um vetor de movimento do respectivo bloco não adjacente, em que a pluralidade de blocos não adjacentes inclui o primeiro bloco não adjacente, e em que a pluralidade de candidatos de NA-SMVP é ordenada na lista de acordo com a distância de blocos não adjacentes correspondentes a partir do bloco atual.
4. Método, de acordo com a reivindicação 2, em que o bloco não adjacente é um primeiro bloco não adjacente, sendo que o método compreende adicionalmente: determinar, por meio do decodificador de vídeo, uma primeira pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP), em que, para cada respectivo candidato de NA-SMVP da primeira pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes, sendo que o respectivo NA-SMVP especifica o vetor de movimento do respectivo bloco não adjacente, em que a primeira pluralidade de blocos não adjacentes inclui o primeiro bloco não adjacente; e ordenar, por meio do decodificador de vídeo, uma segunda pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP) na lista, sendo que a segunda pluralidade de candidatos de NA-SMVP compreende candidatos de NA-SMVP não duplicados na primeira pluralidade de candidatos de NA-SMVP, em que a segunda pluralidade de candidatos de NA- SMVP é ordenada na lista de acordo com uma frequência com a qual vetores de movimento especificados pelos candidatos de NA-SMVP na segunda pluralidade de candidatos de NA-SMVP são especificados por candidatos de NA-SMVP na primeira pluralidade de candidatos de NA-SMVP.
5. Método, de acordo com a reivindicação 2, que compreende adicionalmente aplicar, por meio do decodificador de vídeo, um processo de remoção à lista, em que o processo de remoção é adaptável a um tamanho de bloco do bloco atual.
6. Método, de acordo com a reivindicação 1, em que o MVP para o bloco atual está no modo afim.
7. Método, de acordo com a reivindicação 1, em que a determinação do vetor de movimento do bloco atual compreende: determinar, por meio do decodificador de vídeo, o vetor de movimento do bloco atual de modo que o vetor de movimento do bloco atual especifique um vetor de movimento do MVP para o bloco atual.
8. Método, de acordo com a reivindicação 1, em que a determinação do vetor de movimento do bloco atual compreende:
determinar, por meio do decodificador de vídeo, o vetor de movimento do bloco atual de modo que o vetor de movimento do bloco atual seja igual a um vetor de movimento de informações de movimento do MVP para o bloco atual mais uma diferença de vetor de movimento (MVD).
9. Método, de acordo com a reivindicação 1, em que o bloco não adjacente é um bloco em um modelo que define um padrão fixo de blocos em relação a uma posição do bloco atual.
10. Método, de acordo com a reivindicação 1, que compreende adicionalmente: determinar, por meio do decodificador de vídeo, uma lista de candidatos de vetor de movimento global que compreende candidatos de MVP que especificam um vetor de movimento para cada bloco que está na imagem atual e que é decodificado antes do bloco atual; e determinar, por meio do decodificador de vídeo, o vetor de movimento do bloco não adjacente a partir de um candidato de MVP na lista de candidatos de vetor de movimento global.
11. Método, de acordo com a reivindicação 1, que compreende adicionalmente: armazenar, por meio do decodificador de vídeo, uma pluralidade de candidatos de MVP não adjacentes em um armazenamento temporário de primeiro a entrar, primeiro a sair (PEPS), em que a pluralidade de candidatos de MVP não adjacentes inclui um candidato de MVP não adjacente que especifica o vetor de movimento do bloco não adjacente; e atualizar, por meio do decodificador de vídeo, o armazenamento temporário de PEPS para remover um candidato de MVP não adjacente adicionado mais anteriormente do armazenamento temporário de PEPS e adicionar um candidato de MVP ao armazenamento temporário de PEPS.
12. Método, de acordo com a reivindicação 1, que compreende adicionalmente: determinar, por meio do decodificador de vídeo, um conjunto de candidatos de vetor de movimento de conversão ascendente de taxa de quadro (FRUC) de nível de unidade de codificação (CU); selecionar, por meio do decodificador de vídeo, um candidato de vetor de movimento de FRUC de nível de CU a partir do conjunto de candidatos de vetor de movimento de FRUC de nível de CU; determinar, por meio do decodificador de vídeo, um vetor de movimento de nível de CU pelo menos em parte mediante a realização uma pesquisa local que se inicia a partir de um candidato de vetor de movimento de FRUC de nível de CU selecionado; e refinar, por meio do decodificador de vídeo, o vetor de movimento de nível de CU em um nível de sub-CU com um conjunto de candidatos de vetor de movimento de FRUC de nível de sub-CU, em que pelo menos um dentre o conjunto de candidatos de vetor de movimento de FRUC de nível de CU e o conjunto de candidatos de vetor de movimento de FRUC de nível de sub-CU inclui um preditor de vetor de movimento espacial não adjacente (NA-SMVP) que especifica o vetor de movimento do bloco não adjacente.
13. Método, de acordo com a reivindicação 1, que compreende adicionalmente: antes de determinar o vetor de movimento do bloco não adjacente e com base em uma distância entre o bloco não adjacente e o bloco atual que é maior do que uma distância limiar, modificar uma posição do bloco não adjacente.
14. Método, de acordo com a reivindicação 13, em que a modificação da posição do bloco não adjacente compreende arredondar uma posição do bloco não adjacente para uma posição em uma primeira grade de blocos na imagem atual mais grossa do que uma segunda grade de blocos na imagem atual.
15. Método, de acordo com a reivindicação 13, em que a modificação da posição do bloco não adjacente compreende recortar uma posição do bloco não adjacente até o limiar de distância.
16. Método, de acordo com a reivindicação 1, que compreende adicionalmente: antes de determinar o vetor de movimento do bloco não adjacente e com base em uma distância entre o bloco não adjacente e um bloco de codificação em árvore atual que é maior do que uma distância limiar, modificar uma posição do bloco não adjacente, sendo que o bloco de codificação em árvore atual contém o bloco atual.
17. Método para codificar dados de vídeo, sendo que o método compreende: determinar, por meio de um codificador de vídeo, um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinar, por meio do codificador de vídeo, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinar, por meio do codificador de vídeo, um vetor de movimento do bloco atual, em que o vetor de movimento é igual a um vetor de movimento do MVP para o bloco atual ou é igual ao vetor de movimento do MVP para o bloco atual mais uma diferença de vetor de movimento (MVD) sinalizada em um fluxo de bits; determinar, por meio do codificador de vídeo, um bloco preditivo com base no vetor de movimento do bloco atual; e gerar, por meio do codificador de vídeo, com base no bloco preditivo, valores de amostra residuais.
18. Método, de acordo com a reivindicação 17, em que a determinação do MVP para o bloco atual compreende: gerar, por meio do codificador de vídeo, com base, em parte, no vetor de movimento do bloco não adjacente, uma lista de candidatos de preditor de vetor de movimento (MVP), em que a lista de candidatos de MVP inclui um candidato de MVP que especifica o vetor de movimento do bloco não adjacente; e determinar, por meio do codificador de vídeo, dentre os candidatos de MVP na lista de candidatos de MVP, o MVP para o bloco atual.
19. Método, de acordo com a reivindicação 18, em que o bloco não adjacente é um primeiro bloco não adjacente, sendo que o método compreende adicionalmente: ordenar, por meio do codificador de vídeo, uma pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP) na lista,
em que, para cada respectivo candidato de NA-SMVP da pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes, sendo que o respectivo NA-SMVP especifica um vetor de movimento do respectivo bloco não adjacente, em que a pluralidade de blocos não adjacentes inclui o primeiro bloco não adjacente, e em que a pluralidade de candidatos de NA-SMVP é ordenada na lista de acordo com a distância de blocos não adjacentes correspondentes a partir do bloco atual.
20. Método, de acordo com a reivindicação 18, em que o bloco não adjacente é um primeiro bloco não adjacente, sendo que o método compreende adicionalmente: determinar, por meio do codificador de vídeo, uma primeira pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP), em que, para cada respectivo candidato de NA-SMVP da primeira pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes, sendo que o respectivo NA-SMVP especifica um vetor de movimento do respectivo bloco não adjacente, em que a primeira pluralidade de blocos não adjacentes inclui o primeiro bloco não adjacente; e incluir, por meio do codificador de vídeo, uma segunda pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP) na lista, sendo que a segunda pluralidade de candidatos de NA-SMVP compreende candidatos de NA-SMVP não duplicados na primeira pluralidade de candidatos de NA-SMVP, em que a segunda pluralidade de candidatos de NA- SMVP é ordenada na lista de acordo com uma frequência com a qual vetores de movimento especificados pelos candidatos de NA-SMVP na segunda pluralidade de candidatos de NA-SMVP são especificados por candidatos de NA-SMVP na primeira pluralidade de candidatos de NA-SMVP.
21. Método, de acordo com a reivindicação 18, que compreende adicionalmente aplicar, por meio do codificador de vídeo, um processo de remoção à lista, em que o processo de remoção é adaptável a um tamanho de bloco do bloco atual.
22. Método, de acordo com a reivindicação 17, em que o MVP para o bloco atual está no modo afim.
23. Método, de acordo com a reivindicação 17, em que o bloco não adjacente é um bloco em um modelo que define um padrão fixo de blocos em relação a uma posição do bloco atual.
24. Método, de acordo com a reivindicação 17, que compreende adicionalmente: determinar, por meio do codificador de vídeo, uma lista de candidatos de vetor de movimento global que compreende candidatos de MVP que especificam um vetor de movimento para cada bloco que está na imagem atual e que é codificado antes do bloco atual; e determinar, por meio do codificador de vídeo, o vetor de movimento do bloco não adjacente a partir de um candidato de MVP na lista de candidatos de vetor de movimento global.
25. Método, de acordo com a reivindicação 17, que compreende adicionalmente: armazenar, por meio do codificador de vídeo, uma pluralidade de candidatos de MVP não adjacentes em um armazenamento temporário de primeiro a entrar, primeiro a sair (PEPS), em que a pluralidade de candidatos de MVP não adjacentes inclui um candidato de MVP não adjacente que especifica o vetor de movimento do bloco não adjacente; e atualizar, por meio do codificador de vídeo, o armazenamento temporário de PEPS para remover um candidato de MVP não adjacente adicionado mais anteriormente do armazenamento temporário de PEPS e adicionar um candidato de MVP ao armazenamento temporário de PEPS.
26. Método, de acordo com a reivindicação 17, que compreende adicionalmente: determinar, por meio do codificador de vídeo, um conjunto de candidatos de vetor de movimento de conversão ascendente de taxa de quadro (FRUC) de nível de unidade de codificação (CU); selecionar, por meio do codificador de vídeo, um candidato de vetor de movimento de FRUC de nível de CU a partir do conjunto de candidatos de vetor de movimento de FRUC de nível de CU; determinar, por meio do codificador de vídeo, um vetor de movimento de nível de CU pelo menos em parte mediante a realização uma pesquisa local que se inicia a partir de um candidato de vetor de movimento de FRUC de nível de CU selecionado; e refinar, por meio do codificador de vídeo, o vetor de movimento de nível de CU em um nível de sub-CU com um conjunto de candidatos de vetor de movimento de FRUC de nível de sub-CU, em que pelo menos um dentre o conjunto de candidatos de vetor de movimento de FRUC de nível de CU e o conjunto de candidatos de vetor de movimento de FRUC de nível de sub-CU inclui um preditor de vetor de movimento espacial não adjacente (NA-SMVP) que especifica o vetor de movimento do bloco não adjacente.
27. Método, de acordo com a reivindicação 17, que compreende adicionalmente: antes de determinar o vetor de movimento do bloco não adjacente e com base em uma distância entre o bloco não adjacente e o bloco atual que é maior do que uma distância limiar, modificar uma posição do bloco não adjacente.
28. Método, de acordo com a reivindicação 27, em que a modificação da posição do bloco não adjacente compreende arredondar uma posição do bloco não adjacente para uma posição em uma primeira grade de blocos na imagem atual mais grossa do que uma segunda grade de blocos na imagem atual.
29. Método, de acordo com a reivindicação 27, em que a modificação da posição do bloco não adjacente compreende recortar uma posição do bloco não adjacente até o limiar de distância.
30. Método, de acordo com a reivindicação 17, que compreende adicionalmente: antes de determinar o vetor de movimento do bloco não adjacente e com base em uma distância entre o bloco não adjacente e um bloco de codificação em árvore atual que é maior do que uma distância limiar, modificar uma posição do bloco não adjacente, sendo que o bloco de codificação em árvore atual contém o bloco atual.
31. Aparelho para decodificar dados de vídeo, sendo que o aparelho compreende: uma ou mais mídias de armazenamento configuradas para armazenar dados de vídeo; e um ou mais processadores configurados para: determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinar, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinar, com base no MVP para o bloco atual, um vetor de movimento do bloco atual; determinar um bloco preditivo com base no vetor de movimento do bloco atual; e reconstruir, com base no bloco preditivo, valores de amostra da imagem atual.
32. Aparelho, de acordo com a reivindicação 31, em que o um ou mais processadores são configurados de modo que, como parte da determinação do MVP para o bloco atual, o um ou mais processadores: gerem, com base, em parte, no vetor de movimento do bloco não adjacente, uma lista de candidatos de preditor de vetor de movimento (MVP), em que a lista de candidatos de MVP inclui um candidato de MVP que especifica o vetor de movimento do bloco não adjacente; e determinem, dentre os candidatos de MVP na lista de candidatos de MVP, o MVP para o bloco atual.
33. Aparelho, de acordo com a reivindicação 32, em que o bloco não adjacente é um primeiro bloco não adjacente, o um ou mais processadores são adicionalmente configurados para: ordenar uma pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP) na lista, em que, para cada respectivo candidato de NA-SMVP da pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes, sendo que o respectivo NA-SMVP especifica um vetor de movimento do respectivo bloco não adjacente, em que a pluralidade de blocos não adjacentes inclui o primeiro bloco não adjacente, e em que a pluralidade de candidatos de NA-SMVP é ordenada na lista de acordo com a distância de blocos não adjacentes correspondentes a partir do bloco atual.
34. Aparelho, de acordo com a reivindicação 32, em que o bloco não adjacente é um primeiro bloco não adjacente, o um ou mais processadores são adicionalmente configurados para: determinar uma primeira pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP), em que, para cada respectivo candidato de NA-SMVP da primeira pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes, sendo que o respectivo NA-SMVP especifica o vetor de movimento do respectivo bloco não adjacente, em que a primeira pluralidade de blocos não adjacentes inclui o primeiro bloco não adjacente; e ordenar uma segunda pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP) na lista, sendo que a segunda pluralidade de candidatos de NA-SMVP compreende candidatos de NA-SMVP não duplicados na primeira pluralidade de candidatos de NA-SMVP, em que a segunda pluralidade de candidatos de NA- SMVP é ordenada na lista de acordo com uma frequência com a qual o vetor de movimento especificado pelos candidatos de NA-SMVP na segunda pluralidade de candidatos de NA-SMVP é especificado por candidatos de NA-SMVP na primeira pluralidade de candidatos de NA-SMVP.
35. Aparelho, de acordo com a reivindicação 32, em que o um ou mais processadores são adicionalmente configurados para aplicar um processo de remoção à lista, em que o processo de remoção é adaptável a um tamanho de bloco do bloco atual.
36. Aparelho, de acordo com a reivindicação 31, em que o MVP para o bloco atual está no modo afim.
37. Aparelho, de acordo com a reivindicação 31, em que o um ou mais processadores são configurados de modo que, como parte da determinação do vetor de movimento do bloco atual, o um ou mais processadores: determinar o vetor de movimento do bloco atual de modo que o vetor de movimento do bloco atual especifique um vetor de movimento do candidato de MVP para o bloco atual.
38. Aparelho, de acordo com a reivindicação 31, em que o um ou mais processadores são configurados de modo que, como parte da determinação do vetor de movimento do bloco atual, o um ou mais processadores:
determinar o vetor de movimento do bloco atual de modo que o vetor de movimento do bloco atual seja igual a um vetor de movimento de informações de movimento do MVP para o bloco atual.
39. Aparelho, de acordo com a reivindicação 31, em que o bloco não adjacente é um bloco em um modelo que define um padrão fixo de blocos em relação a uma posição do bloco atual.
40. Aparelho, de acordo com a reivindicação 31, em que o um ou mais processadores são adicionalmente configurados para: determinar uma lista de candidatos de vetor de movimento global que compreende candidatos de MVP especificar um vetor de movimento para cada bloco que está na imagem atual e que é decodificado antes do bloco atual; e determinar o vetor de movimento do bloco não adjacente a partir de um candidato de MVP na lista de candidatos de vetor de movimento global.
41. Aparelho, de acordo com a reivindicação 31, em que o um ou mais processadores são adicionalmente configurados para: armazenar uma pluralidade de candidatos de MVP não adjacentes em um armazenamento temporário de primeiro a entrar, primeiro a sair (PEPS), em que a pluralidade de candidatos de MVP não adjacentes inclui um candidato de MVP não adjacente que especifica o vetor de movimento do bloco não adjacente; e atualizar o armazenamento temporário de PEPS para remover um candidato de MVP não adjacente adicionado mais anteriormente do armazenamento temporário de PEPS e adicionar um candidato de MVP ao armazenamento temporário de PEPS.
42. Aparelho, de acordo com a reivindicação 31, em que o um ou mais processadores são adicionalmente configurados para: determinar um conjunto de candidatos de vetor de movimento de conversão ascendente de taxa de quadro (FRUC) de nível de unidade de codificação (CU); selecionar um candidato de vetor de movimento de FRUC de nível de CU a partir do conjunto de candidatos de vetor de movimento de FRUC de nível de CU; determinar um vetor de movimento de nível de CU pelo menos em parte mediante a realização de uma pesquisa local que se inicia a partir de um candidato de vetor de movimento de FRUC de nível de CU selecionado; e refinar o vetor de movimento de nível de CU em um nível de sub-CU com um conjunto de candidatos de vetor de movimento de FRUC de nível de sub-CU, em que pelo menos um dentre o conjunto de candidatos de vetor de movimento de FRUC de nível de CU e o conjunto de candidatos de vetor de movimento de FRUC de nível de sub-CU inclui um preditor de vetor de movimento espacial não adjacente (NA-SMVP) que especifica o vetor de movimento do bloco não adjacente.
43. Aparelho, de acordo com a reivindicação 31, em que o um ou mais processadores são configurados para: antes de determinar o vetor de movimento do bloco não adjacente e com base em uma distância entre o bloco não adjacente e o bloco atual que é maior do que uma distância limiar, modificar uma posição do bloco não adjacente.
44. Aparelho, de acordo com a reivindicação 43, em que o um ou mais processadores são configurados de modo que, como parte da modificação da posição do bloco não adjacente, o um ou mais processadores arredondem uma posição do bloco não adjacente para uma posição em uma primeira grade de blocos na imagem atual mais grossa do que uma segunda grade de blocos na imagem atual.
45. Aparelho, de acordo com a reivindicação 43, em que o um ou mais processadores são configurados de modo que, como parte da modificação da posição do bloco não adjacente, o um ou mais processadores recortam uma posição do bloco não adjacente até o limiar de distância.
46. Aparelho, de acordo com a reivindicação 31, em que o um ou mais processadores são configurados para: antes de determinar o vetor de movimento do bloco não adjacente e com base em uma distância entre o bloco não adjacente e um bloco de codificação em árvore atual que é maior do que uma distância limiar, modificar uma posição do bloco não adjacente, sendo que o bloco de codificação em árvore atual contém o bloco atual.
47. Aparelho, de acordo com a reivindicação 31, em que o aparelho compreende: um circuito integrado, um microprocessador, ou um dispositivo de comunicação sem fio.
48. Aparelho para codificar dados de vídeo, sendo que o aparelho compreende: uma ou mais mídias de armazenamento configuradas para armazenar dados de vídeo; e um ou mais processadores configurados para:
determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinar, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinar um vetor de movimento do bloco atual, em que o vetor de movimento é igual a um vetor de movimento do MVP para o bloco atual ou é igual ao vetor de movimento do MVP para o bloco atual mais uma diferença de vetor de movimento (MVD) sinalizada em um fluxo de bits; determinar um bloco preditivo com base no vetor de movimento do bloco atual; e gerar, com base no bloco preditivo, valores de amostra residuais.
49. Aparelho, de acordo com a reivindicação 48, em que o um ou mais processadores são configurados de modo que, como parte da determinação do MVP para o bloco atual, o um ou mais processadores: gerem, com base, em parte, no vetor de movimento do bloco não adjacente, uma lista de candidatos de preditor de vetor de movimento (MVP), em que a lista de candidatos de MVP inclui um candidato de MVP que especifica o vetor de movimento do bloco não adjacente; e determinem, dentre os candidatos de MVP na lista de candidatos de MVP, o MVP para o bloco atual.
50. Aparelho, de acordo com a reivindicação 49, em que o bloco não adjacente é um primeiro bloco não adjacente, o um ou mais processadores são adicionalmente configurados para: ordenar uma pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP) na lista, em que, para cada respectivo candidato de NA-SMVP da pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes, sendo que o respectivo NA-SMVP especifica um vetor de movimento do respectivo bloco não adjacente, em que a pluralidade de blocos não adjacentes inclui o primeiro bloco não adjacente, e em que a pluralidade de candidatos de NA-SMVP é ordenada na lista de acordo com a distância de blocos não adjacentes correspondentes a partir do bloco atual.
51. Aparelho, de acordo com a reivindicação 50, em que o bloco não adjacente é um primeiro bloco não adjacente, o um ou mais processadores são adicionalmente configurados para: determinar uma primeira pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP), em que, para cada respectivo candidato de NA-SMVP da primeira pluralidade de candidatos de NA-SMVP, o respectivo candidato de NA-SMVP corresponde a um respectivo bloco não adjacente de uma pluralidade de blocos não adjacentes, sendo que o respectivo NA-SMVP especifica um vetor de movimento do respectivo bloco não adjacente, em que a primeira pluralidade de blocos não adjacentes inclui o primeiro bloco não adjacente; e incluir uma segunda pluralidade de candidatos de MVP espacial não adjacente (NA-SMVP) na lista, sendo que a segunda pluralidade de candidatos de NA-SMVP compreende candidatos de NA-SMVP não duplicados na primeira pluralidade de candidatos de NA-SMVP, em que a segunda pluralidade de candidatos de NA- SMVP é ordenada na lista de acordo com uma frequência com a qual vetores de movimento especificados pelos candidatos de NA-SMVP na segunda pluralidade de candidatos de NA-SMVP são especificados por candidatos de NA-SMVP na primeira pluralidade de candidatos de NA-SMVP.
52. Aparelho, de acordo com a reivindicação 49, em que o um ou mais processadores são adicionalmente configurados para aplicar um processo de remoção à lista, em que o processo de remoção é adaptável a um tamanho de bloco do bloco atual.
53. Aparelho, de acordo com a reivindicação 48, em que o MVP para o bloco atual está no modo afim.
54. Aparelho, de acordo com a reivindicação 48, em que o bloco não adjacente é um bloco em um modelo que define um padrão fixo de blocos em relação a uma posição do bloco atual.
55. Aparelho, de acordo com a reivindicação 48, em que o um ou mais processadores são adicionalmente configurados para: determinar uma lista de candidatos de vetor de movimento global que compreende candidatos de MVP especificar um vetor de movimento para cada bloco que está na imagem atual e que é codificado antes do bloco atual; e determinar o vetor de movimento do bloco não adjacente a partir de um candidato de MVP na lista de candidatos de vetor de movimento global.
56. Aparelho, de acordo com a reivindicação 48, em que o um ou mais processadores são adicionalmente configurados para: armazenar uma pluralidade de candidatos de MVP não adjacentes em um armazenamento temporário de primeiro a entrar, primeiro a sair (PEPS), em que a pluralidade de candidatos de MVP não adjacentes inclui um candidato de MVP não adjacente que especifica o vetor de movimento do bloco não adjacente; e atualizar o armazenamento temporário de PEPS para remover um candidato de MVP não adjacente adicionado mais anteriormente do armazenamento temporário de PEPS e adicionar um candidato de MVP ao armazenamento temporário de PEPS.
57. Aparelho, de acordo com a reivindicação 48, em que o um ou mais processadores são adicionalmente configurados para: determinar um conjunto de candidatos de vetor de movimento de conversão ascendente de taxa de quadro (FRUC) de nível de unidade de codificação (CU); selecionar um candidato de vetor de movimento de FRUC de nível de CU a partir do conjunto de candidatos de vetor de movimento de FRUC de nível de CU; determinar um vetor de movimento de nível de CU pelo menos em parte mediante a realização de uma pesquisa local que se inicia a partir de um candidato de vetor de movimento de FRUC de nível de CU selecionado; e refinar o vetor de movimento de nível de CU em um nível de sub-CU com um conjunto de candidatos de vetor de movimento de FRUC de nível de sub-CU,
em que pelo menos um dentre o conjunto de candidatos de vetor de movimento de FRUC de nível de CU e o conjunto de candidatos de vetor de movimento de FRUC de nível de sub-CU inclui um preditor de vetor de movimento espacial não adjacente (NA-SMVP) que especifica o vetor de movimento do bloco não adjacente.
58. Aparelho, de acordo com a reivindicação 48, em que o um ou mais processadores são configurados para: antes de determinar o vetor de movimento do bloco não adjacente e com base em uma distância entre o bloco não adjacente e o bloco atual que é maior do que uma distância limiar, modificar uma posição do bloco não adjacente.
59. Aparelho, de acordo com a reivindicação 58, em que o um ou mais processadores são configurados de modo que, como parte da modificação da posição do bloco não adjacente, o um ou mais processadores arredondem uma posição do bloco não adjacente para uma posição em uma primeira grade de blocos na imagem atual mais grossa do que uma segunda grade de blocos na imagem atual.
60. Aparelho, de acordo com a reivindicação 58, em que o um ou mais processadores são configurados de modo que, como parte da modificação da posição do bloco não adjacente, o um ou mais processadores recortam uma posição do bloco não adjacente até o limiar de distância.
61. Aparelho, de acordo com a reivindicação 48, em que o um ou mais processadores são configurados para: antes de determinar o vetor de movimento do bloco não adjacente e com base em uma distância entre o bloco não adjacente e um bloco de codificação em árvore atual que é maior do que uma distância limiar, modificar uma posição do bloco não adjacente, sendo que o bloco de codificação em árvore atual contém o bloco atual.
62. Aparelho, de acordo com a reivindicação 48, em que o aparelho compreende: um circuito integrado, um microprocessador, ou um dispositivo de comunicação sem fio.
63. Aparelho para decodificar dados de vídeo, sendo que o aparelho compreende: meio para determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; meio para determinar, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; meio para determinar, com base no MVP para o bloco atual, um vetor de movimento do bloco atual; meio para determinar um bloco preditivo com base no vetor de movimento do bloco atual; e meio para reconstruir, com base no bloco preditivo, valores de amostra da imagem atual.
64. Aparelho para codificar dados de vídeo, sendo que o aparelho compreende: meio para determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; meio para determinar, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual;
meio para determinar um vetor de movimento do bloco atual, em que o vetor de movimento é igual a um vetor de movimento do MVP para o bloco atual ou é igual ao vetor de movimento do MVP para o bloco atual mais uma diferença de vetor de movimento (MVD) sinalizada em um fluxo de bits; meio para determinar um bloco preditivo com base no vetor de movimento do bloco atual; e meio para gerar, com base no bloco preditivo, valores de amostra residuais.
65. Mídia de armazenamento legível por computador que armazena instruções que, quando executadas, fazem com que um ou mais processadores: determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinar, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinar, com base no MVP para o bloco atual, um vetor de movimento do bloco atual; determinar um bloco preditivo com base no vetor de movimento do bloco atual; e reconstruir, com base no bloco preditivo, valores de amostra da imagem atual.
66. Mídia de armazenamento legível por computador que armazena instruções que, quando executadas, fazem com que um ou mais processadores: determinar um vetor de movimento de um bloco não adjacente de uma imagem atual dos dados de vídeo, sendo que o bloco não adjacente é não adjacente a um bloco atual da imagem atual; determinar, com base no vetor de movimento do bloco não adjacente, um preditor de vetor de movimento (MVP) para o bloco atual; determinar um vetor de movimento do bloco atual, em que o vetor de movimento é igual a um vetor de movimento do MVP para o bloco atual ou é igual ao vetor de movimento do MVP para o bloco atual mais uma diferença de vetor de movimento (MVD) sinalizada em um fluxo de bits; determinar um bloco preditivo com base no vetor de movimento do bloco atual; e gerar, com base no bloco preditivo, valores de amostra residuais.
BR112019025566-4A 2017-06-13 2018-06-11 Predição de vetor de movimento BR112019025566A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762519007P 2017-06-13 2017-06-13
US62/519,007 2017-06-13
US16/003,269 2018-06-08
US16/003,269 US10602180B2 (en) 2017-06-13 2018-06-08 Motion vector prediction
PCT/US2018/036883 WO2018231700A1 (en) 2017-06-13 2018-06-11 Motion vector prediction

Publications (1)

Publication Number Publication Date
BR112019025566A2 true BR112019025566A2 (pt) 2020-06-23

Family

ID=64563843

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019025566-4A BR112019025566A2 (pt) 2017-06-13 2018-06-11 Predição de vetor de movimento

Country Status (13)

Country Link
US (4) US10602180B2 (pt)
EP (2) EP4277279A3 (pt)
JP (2) JP7343398B2 (pt)
CN (1) CN110754086A (pt)
AU (2) AU2018283967B2 (pt)
BR (1) BR112019025566A2 (pt)
CA (1) CA3063173A1 (pt)
CL (1) CL2019003677A1 (pt)
CO (1) CO2019013930A2 (pt)
ES (1) ES2954447T3 (pt)
PL (1) PL3639519T3 (pt)
TW (3) TW202344060A (pt)
WO (1) WO2018231700A1 (pt)

Families Citing this family (175)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018205914A1 (en) * 2017-05-10 2018-11-15 Mediatek Inc. Method and apparatus of reordering motion vector prediction candidate set for video coding
US10602180B2 (en) 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
US20200014945A1 (en) * 2018-07-08 2020-01-09 Mellanox Technologies, Ltd. Application acceleration
US20200014918A1 (en) * 2018-07-08 2020-01-09 Mellanox Technologies, Ltd. Application accelerator
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
EP3451665A1 (en) * 2017-09-01 2019-03-06 Thomson Licensing Refinement of internal sub-blocks of a coding unit
EP3468194A1 (en) * 2017-10-05 2019-04-10 Thomson Licensing Decoupled mode inference and prediction
CN117354541A (zh) * 2017-10-27 2024-01-05 松下电器(美国)知识产权公司 编码装置、解码装置、生成装置、发送装置和存储介质
US11750832B2 (en) * 2017-11-02 2023-09-05 Hfi Innovation Inc. Method and apparatus for video coding
KR102180482B1 (ko) * 2017-11-09 2020-11-18 삼성전자주식회사 움직임 정보의 부호화 장치 및 방법, 및 복호화 장치 및 방법
US11057640B2 (en) * 2017-11-30 2021-07-06 Lg Electronics Inc. Image decoding method and apparatus based on inter-prediction in image coding system
CN109922336B (zh) * 2017-12-12 2023-07-18 华为技术有限公司 视频数据的帧间预测方法和装置
US11310526B2 (en) * 2018-01-26 2022-04-19 Mediatek Inc. Hardware friendly constrained motion vector refinement
US10812810B2 (en) * 2018-02-06 2020-10-20 Tencent America LLC Method and apparatus for video coding in merge mode
WO2019178721A1 (en) * 2018-03-19 2019-09-26 Qualcomm Incorporated Improvements to advanced temporal motion vector prediction
WO2019200366A1 (en) * 2018-04-12 2019-10-17 Arris Enterprises Llc Motion information storage for video coding and signaling
US10841575B2 (en) * 2018-04-15 2020-11-17 Arris Enterprises Llc Unequal weight planar motion vector derivation
EP3777157A4 (en) * 2018-04-20 2021-05-19 Huawei Technologies Co., Ltd. LINE BUFFER FOR PREDICTOR CANDIDATE FOR SPATIAL MOTION VECTORS
US10462486B1 (en) * 2018-05-07 2019-10-29 Tencent America, Llc Fast method for implementing discrete sine transform type VII (DST 7)
CN112204979A (zh) * 2018-05-28 2021-01-08 交互数字Vc控股公司 译码/解码中的数据依赖性
US10798407B2 (en) * 2018-06-01 2020-10-06 Tencent America LLC Methods and apparatus for inter prediction with a reduced above line buffer in video coding
US10587885B2 (en) * 2018-06-04 2020-03-10 Tencent America LLC Method and apparatus for merge mode with additional middle candidates in video coding
CN117956182A (zh) 2018-06-04 2024-04-30 华为技术有限公司 获取运动矢量的方法和装置
US10616574B2 (en) * 2018-06-04 2020-04-07 Tencent America LLC Methods and apparatus for extended merge mode with adaptive grid size in video coding
WO2019234673A1 (en) 2018-06-07 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Chroma dmvr
WO2019244051A1 (en) 2018-06-19 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Selected mvd precision without mvp truncation
JP7460617B2 (ja) * 2018-06-29 2024-04-02 北京字節跳動網絡技術有限公司 Lut更新条件
TWI719525B (zh) * 2018-06-29 2021-02-21 大陸商北京字節跳動網絡技術有限公司 Lut與amvp之間的交互
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
US10687081B2 (en) 2018-06-29 2020-06-16 Tencent America LLC Method, apparatus and medium for decoding or encoding
US10666981B2 (en) 2018-06-29 2020-05-26 Tencent America LLC Method, apparatus and medium for decoding or encoding
BR112020024142A2 (pt) * 2018-06-29 2021-03-02 Beijing Bytedance Network Technology Co., Ltd. método para processamento de vídeo, aparelho para codificação de dados de vídeo, meio de armazenamento e meio de gravação legíveis por computador não transitório
JP7295230B2 (ja) * 2018-06-29 2023-06-20 北京字節跳動網絡技術有限公司 スライス/タイル/lcuの行ごとのルックアップテーブルのリセット
CN117354506A (zh) * 2018-06-29 2024-01-05 英迪股份有限公司 对图像解码和编码的方法及非暂态计算机可读存储介质
EP3794825A1 (en) 2018-06-29 2021-03-24 Beijing Bytedance Network Technology Co. Ltd. Update of look up table: fifo, constrained fifo
CN110662065A (zh) * 2018-06-29 2020-01-07 财团法人工业技术研究院 图像数据解码方法及解码器、图像数据编码方法及编码器
EP4322533A3 (en) 2018-06-29 2024-03-06 Beijing Bytedance Network Technology Co., Ltd. Checking order of motion candidates in lut
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
TWI719524B (zh) * 2018-07-01 2021-02-21 大陸商北京字節跳動網絡技術有限公司 降低非相鄰Merge設計的複雜度
CN110677668B (zh) * 2018-07-01 2022-06-21 北京字节跳动网络技术有限公司 空间运动压缩
WO2020008334A1 (en) * 2018-07-01 2020-01-09 Beijing Bytedance Network Technology Co., Ltd. Efficient affine merge motion vector derivation
CN110876282B (zh) * 2018-07-02 2022-10-18 华为技术有限公司 运动矢量预测方法以及相关装置
US10531090B1 (en) * 2018-07-02 2020-01-07 Tencent America LLC Method and apparatus for video coding
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
TWI748202B (zh) 2018-07-02 2021-12-01 大陸商北京字節跳動網絡技術有限公司 Lamvr中取整和修剪的順序
US10638153B2 (en) * 2018-07-02 2020-04-28 Tencent America LLC For decoder side MV derivation and refinement
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
US11606575B2 (en) * 2018-07-10 2023-03-14 Qualcomm Incorporated Multiple history based non-adjacent MVPs for wavefront processing of video coding
US10462488B1 (en) * 2018-07-13 2019-10-29 Tencent America LLC Method and apparatus for video coding
US10805624B2 (en) * 2018-07-16 2020-10-13 Tencent America LLC Determination of parameters of an affine model
WO2020017423A1 (en) * 2018-07-17 2020-01-23 Panasonic Intellectual Property Corporation Of America Motion vector prediction for video coding
US10362330B1 (en) * 2018-07-30 2019-07-23 Tencent America LLC Combining history-based motion vector prediction and non-adjacent merge prediction
US10827195B2 (en) * 2018-08-03 2020-11-03 Tencent America LLC Method and apparatus for unifying adjacent merge candidates and non-adjacent merge candidates
WO2020035029A1 (en) * 2018-08-17 2020-02-20 Mediatek Inc. Method and apparatus of simplified sub-mode for video coding
WO2020044196A1 (en) 2018-08-26 2020-03-05 Beijing Bytedance Network Technology Co., Ltd. Combined history-based motion vector predictor and multi-motion model decoding
US10924731B2 (en) * 2018-08-28 2021-02-16 Tencent America LLC Complexity constraints on merge candidates list construction
WO2020048463A1 (en) * 2018-09-03 2020-03-12 Huawei Technologies Co., Ltd. Method and apparatus for intra prediction
CN116647695A (zh) * 2018-09-06 2023-08-25 Lg电子株式会社 图像解码设备、图像编码设备和数据发送设备
TW202017377A (zh) * 2018-09-08 2020-05-01 大陸商北京字節跳動網絡技術有限公司 視頻編碼和解碼中的仿射模式
CN111064961B (zh) 2018-09-12 2023-06-09 北京字节跳动网络技术有限公司 视频处理方法和装置
CN114143554B (zh) * 2018-09-13 2024-04-12 华为技术有限公司 一种预测运动信息的解码方法及装置
EP3850849A1 (en) * 2018-09-13 2021-07-21 InterDigital VC Holdings, Inc. Improved virtual temporal affine candidates
US11665365B2 (en) * 2018-09-14 2023-05-30 Google Llc Motion prediction coding with coframe motion vectors
EP4325859A3 (en) * 2018-09-19 2024-05-15 Beijing Bytedance Network Technology Co., Ltd. Syntax reuse for affine mode with adaptive motion vector resolution
EP3854096A1 (en) * 2018-09-21 2021-07-28 VID SCALE, Inc. Affine motion estimation for affine model-based video coding
TWI821408B (zh) * 2018-09-23 2023-11-11 大陸商北京字節跳動網絡技術有限公司 塊級別的運動向量平面模式
WO2020058955A1 (en) 2018-09-23 2020-03-26 Beijing Bytedance Network Technology Co., Ltd. Multiple-hypothesis affine mode
US11070796B2 (en) * 2018-09-28 2021-07-20 Qualcomm Incorporated Ultimate motion vector expression based pruning for video coding
WO2020084470A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Storage of motion parameters with clipping for affine mode
WO2020084512A1 (en) * 2018-10-23 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Affine motion information derivation from neighboring block
WO2020084554A1 (en) * 2018-10-24 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Searching based motion candidate derivation for sub-block motion vector prediction
WO2020094061A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Multi-models for intra prediction
US11212521B2 (en) * 2018-11-07 2021-12-28 Avago Technologies International Sales Pte. Limited Control of memory bandwidth consumption of affine mode in versatile video coding
WO2020098695A1 (en) * 2018-11-13 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Construction method for a single type motion candidate list
WO2020103936A1 (en) 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Pruning method for inter prediction with geometry partition
WO2020103944A1 (en) 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Sub-block based motion candidate selection and signaling
US11146810B2 (en) 2018-11-27 2021-10-12 Qualcomm Incorporated Decoder-side motion vector refinement
CN113170122B (zh) 2018-12-01 2023-06-27 北京字节跳动网络技术有限公司 帧内预测的参数推导
AU2019391197B2 (en) 2018-12-07 2023-05-25 Beijing Bytedance Network Technology Co., Ltd. Context-based intra prediction
CN111355961B (zh) 2018-12-24 2023-11-03 华为技术有限公司 一种帧间预测的方法和装置
EP3905691A4 (en) 2018-12-28 2022-12-21 Godo Kaisha IP Bridge 1 IMAGE DECODING DEVICE, IMAGE DECODING METHOD AND IMAGE DECODING PROGRAM
CN113455002A (zh) * 2018-12-28 2021-09-28 瑞典爱立信有限公司 生成运动向量预测器列表
WO2020135465A1 (en) * 2018-12-28 2020-07-02 Beijing Bytedance Network Technology Co., Ltd. Modified history based motion prediction
TWI829386B (zh) * 2018-12-28 2024-01-11 日商Jvc建伍股份有限公司 影像編碼裝置、影像編碼方法、影像編碼程式、影像解碼裝置、影像解碼方法及影像解碼程式
WO2020140908A1 (en) * 2018-12-31 2020-07-09 Beijing Bytedance Network Technology Co., Ltd. Mapping between distance index and distance in merge with mvd
WO2020141123A1 (en) * 2019-01-01 2020-07-09 Telefonaktiebolaget Lm Ericsson (Publ) History-based intra most probable mode derivation
WO2020140242A1 (zh) * 2019-01-03 2020-07-09 北京大学 视频处理方法和装置
WO2020141935A1 (ko) * 2019-01-03 2020-07-09 엘지전자 주식회사 인터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
KR20200085678A (ko) 2019-01-07 2020-07-15 한국전자통신연구원 프로젝션 포맷 변환에 따른 왜곡에 대한 움직임 정보 예측 보정 방법 및 장치
CN113273187A (zh) * 2019-01-10 2021-08-17 北京字节跳动网络技术有限公司 基于仿射的具有运动矢量差(MVD)的Merge
WO2020143741A1 (en) 2019-01-10 2020-07-16 Beijing Bytedance Network Technology Co., Ltd. Invoke of lut updating
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
US11153590B2 (en) 2019-01-11 2021-10-19 Tencent America LLC Method and apparatus for video coding
US10904550B2 (en) * 2019-01-12 2021-01-26 Tencent America LLC Method and apparatus for video coding
CN113383554B (zh) * 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
CN113302937A (zh) 2019-01-16 2021-08-24 北京字节跳动网络技术有限公司 运动候选推导
WO2020151765A1 (en) * 2019-01-27 2020-07-30 Beijing Bytedance Network Technology Co., Ltd. Interpolation for bi-prediction with cu-level weight
EP3895429A4 (en) 2019-01-31 2022-08-10 Beijing Bytedance Network Technology Co., Ltd. CONTEXT FOR CODE AN ADAPTIVE MOTION VECTOR RESOLUTION IN AFFINE MODE
MX2021008911A (es) * 2019-02-01 2021-08-24 Beijing Bytedance Network Tech Co Ltd Se?alizacion de informacion de reformacion en bucle utilizando conjuntos de parametros.
WO2020156528A1 (en) 2019-02-01 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Filtering processes based on in-loop reshaping
CN113475075B (zh) * 2019-02-13 2023-09-08 北京字节跳动网络技术有限公司 基于共享Merge列表的运动预测
CN113491114A (zh) * 2019-02-20 2021-10-08 北京达佳互联信息技术有限公司 用于帧间预测的运动向量舍入、截取和存储的方法和装置
MX2021009788A (es) * 2019-02-22 2021-09-08 Beijing Bytedance Network Tech Co Ltd Seleccion de muestra colindante para intraprediccion.
AU2020226566A1 (en) 2019-02-24 2021-08-19 Beijing Bytedance Network Technology Co., Ltd. Parameter derivation for intra prediction
WO2020171670A1 (ko) * 2019-02-24 2020-08-27 엘지전자 주식회사 인터 예측을 위한 비디오 신호의 처리 방법 및 장치
CN113508593A (zh) * 2019-02-27 2021-10-15 北京字节跳动网络技术有限公司 基于回退的运动矢量场的基于子块运动矢量推导
US11190797B2 (en) * 2019-03-01 2021-11-30 Qualcomm Incorporated Constraints on decoder-side motion vector refinement based on weights for bi-predicted prediction
US11166015B2 (en) * 2019-03-06 2021-11-02 Tencent America LLC Method and apparatus for video coding
CN113574890B (zh) * 2019-03-11 2024-04-12 北京字节跳动网络技术有限公司 基于指定的候选的成对运动候选列的构造
CN113597759B (zh) * 2019-03-11 2022-09-13 北京字节跳动网络技术有限公司 视频编解码中的运动矢量细化
WO2020184958A1 (ko) * 2019-03-11 2020-09-17 엘지전자 주식회사 인터 예측을 위한 비디오 신호의 처리 방법 및 장치
EP3939303A1 (en) * 2019-03-11 2022-01-19 VID SCALE, Inc. Symmetric merge mode motion vector coding
JP7256290B2 (ja) * 2019-03-12 2023-04-11 エルジー エレクトロニクス インコーポレイティド 双予測のための加重値インデックス情報を誘導するビデオ又は映像コーディング
KR20210114060A (ko) * 2019-03-13 2021-09-17 엘지전자 주식회사 Dmvr 기반의 인터 예측 방법 및 장치
CN111698515B (zh) * 2019-03-14 2023-02-14 华为技术有限公司 帧间预测的方法及相关装置
CN113574889B (zh) 2019-03-14 2024-01-12 北京字节跳动网络技术有限公司 环路整形信息的信令和语法
US10979716B2 (en) * 2019-03-15 2021-04-13 Tencent America LLC Methods of accessing affine history-based motion vector predictor buffer
EP3925220A4 (en) * 2019-03-17 2022-06-29 Beijing Bytedance Network Technology Co., Ltd. Calculation of prediction refinement based on optical flow
US11140409B2 (en) 2019-03-22 2021-10-05 Lg Electronics Inc. DMVR and BDOF based inter prediction method and apparatus thereof
WO2020192611A1 (en) 2019-03-22 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Interaction between merge list construction and other tools
WO2020197083A1 (ko) * 2019-03-22 2020-10-01 엘지전자 주식회사 Dmvr 및 bdof 기반의 인터 예측 방법 및 장치
EP3944623A4 (en) 2019-03-22 2022-06-08 LG Electronics Inc. METHOD AND DEVICE FOR DMVR-BASED INTERPREDICTION
CN113632469B (zh) 2019-03-23 2022-12-13 北京字节跳动网络技术有限公司 默认的环内整形参数
CN113767631B (zh) 2019-03-24 2023-12-15 北京字节跳动网络技术有限公司 用于帧内预测的参数推导中的条件
US20220174287A1 (en) * 2019-03-26 2022-06-02 Intellectual Discovery Co., Ltd. Image encoding/decoding method and apparatus
WO2020192747A1 (en) * 2019-03-27 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. Motion information precision alignment in affine advanced motion vector prediction
WO2020192726A1 (en) 2019-03-27 2020-10-01 Beijing Bytedance Network Technology Co., Ltd. History-based motion vector prediction
BR112021021344A2 (pt) 2019-04-25 2022-01-18 Op Solutions Llc Candidatos em quadros com movimento global
CN114128288A (zh) * 2019-04-25 2022-03-01 Op方案有限责任公司 运动矢量帧间预测的全局运动模型
CN114009038A (zh) * 2019-04-25 2022-02-01 Op方案有限责任公司 图像标头中全局运动矢量的信号发送
BR112021021356A2 (pt) 2019-04-25 2022-01-18 Op Solutions Llc Movimento global para candidatos de modo de mesclagem em interprevisão
SG11202111738RA (en) * 2019-04-25 2021-11-29 Op Solutions Llc Global motion constrained motion vector in inter prediction
KR20220002989A (ko) 2019-04-25 2022-01-07 오피 솔루션즈, 엘엘씨 픽처 헤더 내의 글로벌 모션 벡터의 시그널링
KR20220002991A (ko) * 2019-04-25 2022-01-07 오피 솔루션즈, 엘엘씨 글로벌 모션을 갖는 프레임들에서의 적응적 모션 벡터 예측 후보들
KR20210153129A (ko) 2019-04-25 2021-12-16 오피 솔루션즈, 엘엘씨 글로벌 모션을 갖는 프레임들에서의 선택적 모션 벡터 예측 후보들
CN114128260A (zh) * 2019-04-25 2022-03-01 Op方案有限责任公司 全局运动矢量的高效编码
EP3965420A4 (en) * 2019-04-30 2022-07-06 Wilus Institute of Standards and Technology Inc. VIDEO SIGNAL PROCESSING METHOD AND APPARATUS USING ADAPTIVE MOTION VECTOR RESOLUTION
JP7391109B2 (ja) 2019-05-11 2023-12-04 北京字節跳動網絡技術有限公司 ビデオ処理におけるコーディングツールの選択的使用
US20220053206A1 (en) * 2019-05-15 2022-02-17 Wilus Institute Of Standards And Technology Inc. Video signal processing method and apparatus using adaptive motion vector resolution
EP3977739A4 (en) * 2019-06-03 2022-07-20 OP Solutions, LLC REORGANIZATION OF MERGER CANDIDATES ACCORDING TO A GLOBAL MOTION VECTOR CROSS-REFERENCE TO RELATED APPLICATIONS
CN114270860A (zh) * 2019-06-04 2022-04-01 北京达佳互联信息技术有限公司 针对仿射模式的自适应运动矢量分辨率
CN115941970B (zh) * 2019-06-17 2024-02-20 北京达佳互联信息技术有限公司 用于视频编解码中的解码器侧运动矢量细化的方法和装置
CN113994684A (zh) 2019-06-21 2022-01-28 北京达佳互联信息技术有限公司 用于针对视频编解码的预测相关残差缩放的方法和设备
CN114041291B (zh) * 2019-06-21 2023-03-24 北京达佳互联信息技术有限公司 视频编解码中的运动矢量预测的方法、设备和存储介质
WO2020257484A1 (en) * 2019-06-21 2020-12-24 Vid Scale, Inc. Precision refinement for motion compensation with optical flow
KR20210006306A (ko) * 2019-07-08 2021-01-18 현대자동차주식회사 인터 예측을 이용하여 비디오를 부호화 및 복호화하는 방법 및 장치
CN114208184A (zh) 2019-08-13 2022-03-18 北京字节跳动网络技术有限公司 基于子块的帧间预测中的运动精度
CN112437312B (zh) * 2019-08-26 2022-05-27 腾讯科技(深圳)有限公司 视频解码方法、编码方法、装置、设备及存储介质
US11736720B2 (en) * 2019-09-03 2023-08-22 Tencent America LLC Motion vector refinement methods for video encoding
JP2022548351A (ja) * 2019-09-19 2022-11-18 アリババ グループ ホウルディング リミテッド マージ候補リストを構築するための方法
CN114762330A (zh) 2019-09-22 2022-07-15 北京字节跳动网络技术有限公司 视频的子图片编码和解码
WO2020251417A2 (en) * 2019-09-30 2020-12-17 Huawei Technologies Co., Ltd. Usage of dct based interpolation filter and enhanced bilinear interpolation filter in affine motion compensation
KR20220059549A (ko) 2019-09-30 2022-05-10 후아웨이 테크놀러지 컴퍼니 리미티드 향상된 보간 필터로써 하나의 블록 행의 처리 동안 페치되는 참조 라인의 수를 감소시키는 아핀 모션 모델 제약
CN114556916B (zh) * 2019-10-12 2023-11-17 北京字节跳动网络技术有限公司 视频编解码工具的高级语法
KR20220046656A (ko) 2019-10-31 2022-04-14 삼성전자주식회사 어파인 모델에 따른 인터 예측을 수행하는 비디오 복호화 방법 및 그 장치, 비디오 부호화 방법 및 그 장치
MX2022005622A (es) * 2019-11-11 2022-06-14 Hfi Innovation Inc Metodo y aparato de se?alizacion de resolucion de diferencia de vector de movimiento adaptable en codificacion de video.
US20210168354A1 (en) * 2019-12-03 2021-06-03 Mellanox Technologies, Ltd. Video Coding System
EP4082188A4 (en) 2020-03-19 2024-01-31 Fg innovation co ltd APPARATUS AND METHOD FOR ENCODING VIDEO DATA
WO2021249363A1 (en) * 2020-06-08 2021-12-16 Beijing Bytedance Network Technology Co., Ltd. Constraints on intra block copy using non-adjacent neighboring blocks
JP2023528775A (ja) * 2020-06-09 2023-07-06 フラウンホッファー-ゲゼルシャフト ツァ フェルダールング デァ アンゲヴァンテン フォアシュンク エー.ファオ 時間動きベクトル予測、インターレイヤ参照、及び時間サブレイヤ指示のビデオコーディングの態様
US11388421B1 (en) * 2021-01-13 2022-07-12 Lemon Inc. Usage of templates for decoder-side intra mode derivation
CN112911314B (zh) * 2021-01-14 2023-08-18 北京博雅慧视智能技术研究院有限公司 一种熵编码器的编码方法及熵编码器
US11895321B2 (en) 2021-03-29 2024-02-06 Qualcomm Incorporated Template matching based advanced motion vector predictor (AMVP) candidate list construction with non-adjacent candidates and AMVP index signaling
EP4315858A2 (en) * 2021-03-29 2024-02-07 Qualcomm Incorporated Template matching-based advanced motion vector predictor (amvp) candidate list construction with non-adjacent candidates and amvp index signaling
WO2022272025A1 (en) * 2021-06-25 2022-12-29 Qualcomm Incorporated Hybrid inter bi-prediction in video coding
CN117581542A (zh) * 2021-09-06 2024-02-20 北京达佳互联信息技术有限公司 视频编解码中针对仿射合并模式的候选导出
CN117981315A (zh) * 2021-09-24 2024-05-03 北京达佳互联信息技术有限公司 视频编码中仿射合并模式的候选推导
US20230104476A1 (en) * 2021-10-05 2023-04-06 Tencent America LLC Grouping based adaptive reordering of merge candidate
CN113873256B (zh) * 2021-10-22 2023-07-18 眸芯科技(上海)有限公司 Hevc中邻近块的运动矢量存储方法及系统
WO2023114362A1 (en) * 2021-12-16 2023-06-22 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for candidate derivation for affine merge mode in video coding
WO2023132631A1 (ko) * 2022-01-04 2023-07-13 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
US20230379452A1 (en) * 2022-05-17 2023-11-23 Tencent America LLC Adjacent spatial motion vector predictor candidates improvement
US20230388535A1 (en) * 2022-05-26 2023-11-30 Tencent America LLC Systems and methods for combining subblock motion compensation and overlapped block motion compensation
WO2024081629A1 (en) * 2022-10-10 2024-04-18 Tencent America LLC Method and apparatus for extended decoder side motion vector refinement

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925123B2 (en) * 2002-08-06 2005-08-02 Motorola, Inc. Method and apparatus for performing high quality fast predictive motion search
US20060153463A1 (en) 2003-01-20 2006-07-13 Youji Notoya Image encoding method
JP4213646B2 (ja) 2003-12-26 2009-01-21 株式会社エヌ・ティ・ティ・ドコモ 画像符号化装置、画像符号化方法、画像符号化プログラム、画像復号装置、画像復号方法、及び画像復号プログラム。
JP2008011455A (ja) 2006-06-30 2008-01-17 Sanyo Electric Co Ltd 符号化方法
JP4592656B2 (ja) 2006-08-17 2010-12-01 富士通セミコンダクター株式会社 動き予測処理装置、画像符号化装置および画像復号化装置
KR101279573B1 (ko) 2008-10-31 2013-06-27 에스케이텔레콤 주식회사 움직임 벡터 부호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
US9113168B2 (en) 2009-05-12 2015-08-18 Lg Electronics Inc. Method and apparatus of processing a video signal
WO2011021914A2 (ko) * 2009-08-21 2011-02-24 에스케이텔레콤 주식회사 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치
WO2011095260A1 (en) 2010-02-05 2011-08-11 Telefonaktiebolaget L M Ericsson (Publ) Managing predicted motion vector candidates
WO2012120870A1 (ja) 2011-03-08 2012-09-13 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム、並びに動画像復号装置、動画像復号方法及び動画像復号プログラム
KR101571947B1 (ko) 2011-03-08 2015-11-25 가부시키가이샤 제이브이씨 켄우드 동화상 부호화 장치, 동화상 부호화방법 및 동화상 부호화 프로그램, 및 동화상 복호 장치, 동화상 복호 방법 및 동화상 복호 프로그램
EP3627839B1 (en) * 2011-03-21 2021-10-20 LG Electronics Inc. Method for selecting motion vector predictor
SE1850140A2 (sv) 2011-09-23 2018-12-11 Kt Corp Förfarande för att utse ett kandidatblock för fusion samt en anordning för tillämpning av detta förfarande
EP2769544A4 (en) * 2011-10-21 2015-12-23 Nokia Technologies Oy VIDEO ENCODING METHOD AND APPARATUS
US9571833B2 (en) 2011-11-04 2017-02-14 Nokia Technologies Oy Method for coding and an apparatus
RU2589297C9 (ru) 2011-12-28 2017-01-23 ДжейВиСи КЕНВУД КОРПОРЕЙШН Устройство декодирования движущегося изображения и способ декодирования движущегося изображения
JP5835208B2 (ja) * 2011-12-28 2015-12-24 株式会社Jvcケンウッド 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム、並びに、送信装置、送信方法、及び送信プログラム
US9338451B2 (en) 2012-04-12 2016-05-10 Qualcomm Incorporated Common spatial candidate blocks for parallel motion estimation
US20130301727A1 (en) 2012-05-14 2013-11-14 Qualcomm Incorporated Programmable and scalable integer search for video encoding
US20130343459A1 (en) 2012-06-22 2013-12-26 Nokia Corporation Method and apparatus for video coding
EP3687173A1 (en) * 2012-09-03 2020-07-29 Sony Corporation Image processing device and method with inter-layer motion vector compression
US9485515B2 (en) 2013-08-23 2016-11-01 Google Inc. Video coding using reference motion vectors
CN102946536B (zh) 2012-10-09 2015-09-30 华为技术有限公司 候选矢量列表构建的方法及装置
US9648319B2 (en) 2012-12-12 2017-05-09 Qualcomm Incorporated Device and method for scalable coding of video information based on high efficiency video coding
US9270999B2 (en) 2013-09-25 2016-02-23 Apple Inc. Delayed chroma processing in block processing pipelines
CN115086652A (zh) * 2015-06-05 2022-09-20 杜比实验室特许公司 图像编码和解码方法和图像解码设备
WO2017082443A1 (ko) * 2015-11-13 2017-05-18 엘지전자 주식회사 영상 코딩 시스템에서 임계값을 이용한 적응적 영상 예측 방법 및 장치
WO2017147765A1 (en) * 2016-03-01 2017-09-08 Mediatek Inc. Methods for affine motion compensation
RU2696551C1 (ru) * 2016-03-15 2019-08-02 МедиаТек Инк. Способ и устройство для кодирования видео с компенсацией аффинного движения
AU2016231584A1 (en) * 2016-09-22 2018-04-05 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding video data
US20180109814A1 (en) * 2016-10-14 2018-04-19 Mediatek Inc. Method And Apparatus Of Coding Unit Information Inheritance
US10602180B2 (en) 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
WO2019107548A1 (ja) 2017-12-01 2019-06-06 株式会社Nttドコモ ユーザ端末及び無線通信方法

Also Published As

Publication number Publication date
CO2019013930A2 (es) 2020-01-17
US11218723B2 (en) 2022-01-04
EP4277279A2 (en) 2023-11-15
TW202318875A (zh) 2023-05-01
US20180359483A1 (en) 2018-12-13
JP2020523853A (ja) 2020-08-06
ES2954447T3 (es) 2023-11-22
JP7343398B2 (ja) 2023-09-12
EP4277279A3 (en) 2024-01-17
EP3639519C0 (en) 2023-08-16
AU2018283967A1 (en) 2019-12-05
EP3639519B1 (en) 2023-08-16
JP2023166487A (ja) 2023-11-21
TWI791025B (zh) 2023-02-01
EP3639519A1 (en) 2020-04-22
KR20200017406A (ko) 2020-02-18
AU2023204311A1 (en) 2023-07-27
US20220070486A1 (en) 2022-03-03
PL3639519T3 (pl) 2023-11-27
US11689740B2 (en) 2023-06-27
TW201904299A (zh) 2019-01-16
CL2019003677A1 (es) 2020-07-10
TWI812564B (zh) 2023-08-11
AU2018283967B2 (en) 2023-04-06
US20230276069A1 (en) 2023-08-31
US20200221116A1 (en) 2020-07-09
TW202344060A (zh) 2023-11-01
CN110754086A (zh) 2020-02-04
WO2018231700A1 (en) 2018-12-20
CA3063173A1 (en) 2018-12-20
US10602180B2 (en) 2020-03-24

Similar Documents

Publication Publication Date Title
BR112019025566A2 (pt) Predição de vetor de movimento
CA3035587C (en) Motion vector prediction for affine motion models in video coding
BR112020006875A2 (pt) projeto de baixa complexidade para fruc
BR112020006588A2 (pt) predição afim em codificação de vídeo
BR112020024142A2 (pt) método para processamento de vídeo, aparelho para codificação de dados de vídeo, meio de armazenamento e meio de gravação legíveis por computador não transitório
BR112021009558A2 (pt) simplificação da predição de vetor de movimento baseada em histórico
BR112020024202A2 (pt) método de processamento de dados de vídeo, aparelho de processamento de vídeo e meios de armazenamento e gravação legíveis por computador não transitório
BR112021005357A2 (pt) aprimoramentos em preditor de vetor de movimento baseado em histórico
BR112020024162A2 (pt) método de processamento de vídeo e aparelho para processar dados de vídeo, meios de armazenamento e de gravação legíveis por computador não transitórios, método para armazenar uma representação de fluxo de bits de um vídeo
WO2019147826A1 (en) Advanced motion vector prediction speedups for video coding
WO2020003282A1 (en) Managing motion vector predictors for video coding
BR112021002967A2 (pt) predição de movimento afim
JP2023065381A (ja) インター予測方法および装置
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
WO2020008330A1 (en) Priority-based non-adjacent merge design
BR112021009732A2 (pt) padrões de predição de vetor de movimento espaço-temporal para codificação de vídeo
WO2020008322A1 (en) Complexity reduction of non-adjacent merge design
WO2020016742A1 (en) Extension of look-up table based motion vector prediction with temporal information
KR102669354B1 (ko) 모션 벡터 예측
KR20240074911A (ko) 모션 벡터 예측
BR112017020627B1 (pt) Derivação de vetor de movimento em codificação de vídeo

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]
B154 Notification of filing of divisional application [chapter 15.50 patent gazette]

Free format text: O PEDIDO FOI DIVIDIDO NO BR122023019573-6 PROTOCOLO 870230084762 EM 25/09/2023 12:08.