BR112020016133A2 - Cópia intra-bloco para codificação de vídeo - Google Patents

Cópia intra-bloco para codificação de vídeo Download PDF

Info

Publication number
BR112020016133A2
BR112020016133A2 BR112020016133-0A BR112020016133A BR112020016133A2 BR 112020016133 A2 BR112020016133 A2 BR 112020016133A2 BR 112020016133 A BR112020016133 A BR 112020016133A BR 112020016133 A2 BR112020016133 A2 BR 112020016133A2
Authority
BR
Brazil
Prior art keywords
block
color component
blocks
image
vectors
Prior art date
Application number
BR112020016133-0A
Other languages
English (en)
Inventor
Li Zhang
Kai Zhang
Wei-Jung Chien
Marta Karczewicz
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 BR112020016133A2 publication Critical patent/BR112020016133A2/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/64Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
    • H04N19/647Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission using significance based coding, e.g. Embedded Zerotrees of Wavelets [EZW] or Set Partitioning in Hierarchical Trees [SPIHT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • 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/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/186Methods 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 a colour or a chrominance component
    • 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
    • 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/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)

Abstract

esta revelação descreve exemplos de técnicas que um codificador de vídeo (como, por exemplo, codificador ou decodificador de vídeo) pode utilizar para determinar um vetor de bloco para um bloco croma em que as árvores de partição para o componente croma e o componente luma são diferentes (como, por exemplo, árvores de partição desacoplada).

Description

“CÓPIA INTRA-BLOCO PARA CODIFICAÇÃO DE VÍDEO”
[0001] Este pedido reivindica prioridade para o Pedido dos E.U.A. N.º 16/269,349, depositado a 6 de fevereiro de 2019, e reivindica o benefício do Pedido Provisório dos E.U.A. N.º 62/628,101, depositado a 8 de fevereiro de 2018, os conteúdos inteiros de ambos os pedidos são aqui incorporados à guisa de referência.
CAMPO TÉCNICO
[0002] Esta revelação se refere à codificação e decodificação de vídeo.
ANTECEDENTES
[0003] Capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, que incluem televisões digitais, sistemas de broadcast direto digitais, sistemas de broadcast sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou de mesa, computadores tablet, leitoras de livros eletrônicos, câmeras digitais, dispositivos de gravação digitais, tocadores de meios digitais, dispositivos para jogos de vídeo, consoles para jogos de vídeo, telefones celulares ou de rádio-satélite, os chamados “telefones inteligentes”, dispositivos de teleconferência de vídeo, dispositivos de fluxo contínuo de vídeo e semelhante. Os dispositivos de vídeo digital implementam técnicas de compactação de vídeo, tais como as descritas nos padrões definidos pelo MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação Avançada de Vídeo (AVC), ITU-T H.265 Codificação de Vídeo de Alta Eficácia (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 maneira mais eficaz pela implementação de tais técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover a redundância inerente a sequências de vídeo. Para codificação de vídeos com base em blocos, uma fatia de vídeo (como, por exemplo, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser particionada em blocos de vídeo, e podem ser também referidos como unidades de árvores de codificação (CTUs), unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intra-codificada (I) de uma imagem são codificados utilizando-se predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia inter-codificada (P ou B) de uma imagem podem utilizar predição espacial com relação às amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e as imagens de referência podem ser referidas como quadros de referência.
SUMÁRIO
[0005] Em geral, esta revelação descreve técnicas para codificação de cópia intra-bloco (IBC). As técnicas exemplares podem ser aplicadas a codecs de vídeo existentes, tal como Codificação de Vídeo de Alta Eficácia (HEVC) ou podem ser uma ferramenta de codificação de vídeo eficiente para futuros padrões de codificação de vídeo. As técnicas exemplares podem se referir à utilização de IBC com diversas ferramentas relacionadas a movimento, bem como à utilização de IBC em árvores de partição desacoplada.
[0006] Por exemplo, em IBC, um bloco é codificado (como, por exemplo, codificado ou decodificado) com um vetor de bloco que aponta para um bloco de referência na mesma imagem como o bloco que é codificado. Em casos onde componentes luma e componentes croma são particionados da mesma maneira (como, por exemplo, onde há acoplamento de árvores de partição), o bloco luma e os blocos croma correspondentes podem utilizar o vetor de bloco com escalonamento de vetor de bloco potencial para os blocos croma. Contudo, em casos onde os componentes croma são particionados de modo diferente que os componentes luma (como, por exemplo, onde há desacoplamento de árvores de partição), pode haver problemas técnicos na codificação de vídeo porque os blocos croma são formados de modo diferente que os blocos luma, o que resulta em pouca correspondência entre blocos croma e blocos luma.
[0007] Esta revelação descreve exemplos de técnicas que um codificador de vídeo (como, por exemplo, codificador de vídeo ou decodificador de vídeo) pode utilizar para determinar um vetor de bloco para um bloco croma onde as árvores de partição para o componente croma e o componente luma são diferentes (como, por exemplo, árvores de partição desacoplada). Por exemplo, o codificador de vídeo pode adicionalmente particionar o bloco croma em uma pluralidade de sub-blocos, com base na árvore de partição utilizada para particionar o componente luma. Nesse exemplo, pode haver uma correspondência de um para um entre cada um dos sub-blocos do bloco croma e um bloco luma da pluralidade de blocos luma.
[0008] O codificador de vídeo pode determinar vetores de bloco para um ou mais dos sub-blocos do bloco croma com base em vetores de bloco de um ou mais da pluralidade de blocos luma que são preditos no modo IBC. Dessa maneira, embora exista desacoplamento da árvore de partição entre os componentes luma e croma, as técnicas exemplares permitem maneiras nas quais um bloco croma pode herdar vetores de bloco a partir de um bloco luma. Ao permitir que vetores de bloco de blocos luma sejam herdados por blocos croma, as técnicas exemplares podem reduzir largura de banda de sinalização, que de outro modo seria necessária, se os vetores de bloco para os blocos croma forem explicitamente sinalizados.
[0009] Em um exemplo, a revelação descreve um método de codificação de dados de vídeo, o método compreendendo determinar uma pluralidade de blocos de um primeiro componente de cor que corresponde a um bloco de um segundo componente de cor, em que a pluralidade de blocos do primeiro componente de cor é gerada a partir do particionamento de amostras do primeiro componente de cor de acordo com uma primeira árvore de partição, e o bloco do segundo componente de cor é gerado a partir do particionamento de amostras do segundo componente de cor de acordo com uma segunda árvore de partição, particionar o bloco do segundo componente de cor com base na primeira árvore de partição para gerar sub-blocos do segundo componente de cor em que cada um corresponde a um bloco da pluralidade de blocos do primeiro componente de cor, determinar um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor predito no modo de predição de cópia intra-bloco (IBC) com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor, e codificar bloco do segundo componente de cor com base em um ou mais vetores de bloco determinados.
[0010] Em um exemplo, a revelação descreve um dispositivo para codificar dados de vídeo, o dispositivo compreendendo uma memória configurada para armazenar amostras de um primeiro componente de cor e amostras de um segundo componente de cor dos dados de vídeo e um codificador de vídeo que compreende pelo menos um circuito de função fixa e programável. O codificador de vídeo é configurado para determinar uma pluralidade de blocos de um primeiro componente de cor que corresponde a um bloco de um segundo componente de cor, em que a pluralidade de blocos do primeiro componente de cor é gerada a partir do particionamento de amostras do primeiro componente de cor de acordo com uma primeira árvore de partição e o bloco do segundo componente de cor é gerado a partir do particionamento de amostras do segundo componente de cor de acordo com uma segunda árvore de partição, particionar o bloco do segundo componente de cor com base na primeira árvore de partição para gerar sub-blocos do segundo componente de cor, em que cada um corresponde a um bloco da pluralidade de blocos do primeiro componente de cor, determinar um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor que são preditos no modo de predição de cópia intra-bloco (IBC) com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor, e codificar o bloco do segundo componente de cor com base em um ou mais vetores de bloco determinados.
[0011] Em um exemplo, a revelação descreve um meio de armazenamento passível de leitura por computador que armazena instruções que, quando executadas, fazem com que um ou mais processadores determinem uma pluralidade de blocos de um primeiro componente de cor que corresponde a um bloco de um segundo componente de cor, em que a pluralidade de blocos do primeiro componente de cor é gerada a partir do particionamento de amostras do primeiro componente de cor de acordo com uma primeira árvore de partição e o bloco do segundo componente de cor é gerado a partir do particionamento de amostras do segundo componente de cor de acordo com uma segunda árvore de partição, particionem o bloco do segundo componente de cor com base na primeira árvore de partição para gerar sub-blocos do segundo componente de cor em que cada um corresponde a um bloco da pluralidade de blocos do primeiro componente de cor, determinem um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor preditos no modo de predição de cópia intra-bloco (IBC) com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor, e codifiquem o bloco do segundo componente de cor com base nos um ou mais vetores de bloco determinados.
[0012] Em um exemplo, a revelação descreve um dispositivo para codificar dados de vídeo, o dispositivo compreendendo meios para determinar uma pluralidade de blocos de um primeiro componente de cor que corresponde a um bloco de um segundo componente de cor, em que a pluralidade de blocos do primeiro componente de cor é gerada a partir do particionamento de amostras do primeiro componente de cor de acordo com uma primeira árvore de partição, e o bloco do segundo componente de cor é gerado a partir do particionamento de amostras do segundo componente de cor de acordo com uma segunda árvore de partição, meios para particionar o bloco do segundo componente de cor com base na primeira árvore de partição para gerar sub-blocos do segundo componente de cor em que cada um corresponde a um bloco da pluralidade de blocos do primeiro componente de cor, meios para determinar um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor que são preditos no modo de predição de cópia intra-bloco (IBC) com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor, e meios para codificar o bloco do segundo componente de cor com base em um ou mais vetores de bloco determinados.
[0013] Os detalhes de um ou mais aspecto das técnicas são apresentados nos desenhos anexos e na descrição que se segue. Outros recursos, objetos e vantagens destas técnicas serão evidentes a partir da descrição e dos desenhos e das reivindicações.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[0014] A Figura 1 é um diagrama de blocos que mostra um exemplo de sistema de codificação e decodificação de vídeo que pode efetuar as técnicas desta revelação.
[0015] As Figuras 2A e 2B são diagramas conceituais que mostram um exemplo de estrutura de árvore binária quadtree (QTBT) e uma unidade de árvore de codificação (CTU) correspondente.
[0016] A Figura 3 é um diagrama de blocos que mostra um exemplo de codificador de vídeo que pode efetuar as técnicas desta revelação.
[0017] A Figura 4 é um diagrama de blocos que mostra um exemplo de decodificador de vídeo que pode efetuar as técnicas desta revelação.
[0018] A Figura 5 é um diagrama conceitual que mostra candidatos de vetores de movimento (MV) vizinhos espaciais para mistura e predição de vetor de movimento avançada (AMVP).
[0019] A Figura 6A é um diagrama conceitual que mostra um candidato de preditor de vetor de movimento temporal (TMVP).
[0020] A Figura 6B é um diagrama conceitual que mostra o escalonamento do vetor de movimento (MV) para o candidato TMVP.
[0021] A Figura 7 é um diagrama conceitual que mostra um exemplo de codificação de cópia intra-bloco (IBC).
[0022] A Figura 8 é um diagrama conceitual que mostra um exemplo de predição de vetor de movimento temporal alternativa (ATMVP) para uma unidade de codificação (CU).
[0023] A Figura 9 é um diagrama conceitual que mostra um exemplo de correspondência bilateral de conversão ascendente de taxa de quadros (FRUC).
[0024] A Figura 10 é um diagrama conceitual que mostra um exemplo de correspondência de modelo FRUC.
[0025] As Figuras 11A e 11B são fluxogramas que mostram exemplos do modo de correspondência de modelo FRUC.
[0026] A Figura 12 é um diagrama conceitual que mostra uma derivação de vetor de movimento do lado do decodificador (DMVD) com base na correspondência de modelo bilateral.
[0027] A Figura 13 é um diagrama conceitual que mostra a trajetória de fluxo ótico.
[0028] A Figura 14 é um diagrama conceitual para ótica bidirecional (BIO) para bloco 8x4.
[0029] As Figuras 15A e 15B são diagramas conceituais que mostram sub-blocos onde se aplica a compensação de movimento de bloco sobreposta (OBMC).
[0030] As Figuras 16A-16D mostram exemplos de ponderação OBMC.
[0031] A Figura 17A é um exemplo de uma estrutura de partição CTU para uma estrutura QTBT luma.
[0032] A Figura 17B é um exemplo de uma estrutura de partição CTU para uma estrutura QTBT croma.
[0033] As Figuras 18A e 18B mostram um exemplo de partição de sub-bloco e herança de modo para a estrutura QTBT luma e a estrutura QTBT croma.
[0034] A Figura 19 é um fluxograma que mostra um método exemplar de codificação de dados de vídeo.
DESCRIÇÃO DETALHADA
[0035] Os padrões de codificação de vídeo incluem 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), que incluem suas extensões Codificação Escalonável de Vídeo (SVC) e Decodificação de Vídeo de Múltiplas Vistas (MVC).
[0036] O padrão de codificação de vídeo Codificação de Vídeo de Alta Eficácia (HEVC) foi promulgado pela Equipe de Colaboração Conjunta de Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo (VCEG) ITU-T e do Grupo de Especialistas em Imagens em Movimento (MPEG) ISO/IEC. A mais recente especificação HEVC: ITU-T H.265, Série H: Sistemas Audiovisual e Multimídia, Infra-estrutura de serviços audiovisuais - Codificação de vídeo em movimento, Codificação de vídeo avançada para serviços de audiovisual genéricos, União de Telecomunicações Internacional. Dezembro de 2016, e referido como HEVC WD a seguir, está disponível a partir de http://phenix.intevry.fr/jct/doc_end_user/documents/23_San% 20Diego/wg11/JCTVC-W1005-v4.zip
[0037] ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) estão agora estudando a necessidade potencial de padronização da tecnologia vindoura de codificação de vídeo com uma capacidade de compactação que excede significativamente a do padrão HEVC atual (que inclui suas extensões atuais e extensões de curto prazo para codificação de conteúdo da tela e codificação de faixa de dinâmica mais elevada). Os grupos estão trabalhando juntos nessa atividade de exploração em um esforço conjunto de colaboração conhecido como Equipe de Exploração de Vídeo Conjunta (JVET) para avaliar os desenhos de tecnologia de compactação propostos por seus especialistas nessa área. O
JVET foi realizado pela primeira vez entre 19 e 21 de outubro de 2015. A versão mais recente do software de referência, isto é, o Modelo de Exploração Conjunta 7 (JEM 7), pode ser baixada a partir de: https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/H M-16.6-JEM-7.0/. Uma descrição do algoritmo do Modelo de Teste de Exploração Conjunta 7 (JEM7) é referida em JVETG1001.
[0038] Um rascunho anterior do novo padrão de codificação de vídeo com base em JEM7, referido como o padrão H.266/Codificação Versátil de Vídeo (VVC), está disponível no documento JVET-J1001, “Codificação Versátil de Vídeo (Rascunho 1)”, de Benjamin Bross, e sua descrição do algoritmo está disponível no documento JVET-J1002, “Descrição de algoritmo para Codificação Versátil de Vídeo e Modelo de Teste 1 (VTM 1)” de Jianle Chen e Elena Alshina. As técnicas desta revelação, contudo, não são limitadas a qualquer padrão de codificação específico.
[0039] A VVC fornece um modo de predição de cópia intra-bloco (IBC) semelhante, mas não idêntico, ao modo de predição IBC utilizado como parte da codificação de conteúdo de tela (SCC) do HEVC. Na Cópia Intra-Bloco (IBC), um vetor de bloco para um bloco que é codificado (como, por exemplo, codificado ou decodificado) no modo IBC aponta para um bloco de referência na mesma imagem que o bloco que é codificado. Existem diferentes tipos de blocos. Por exemplo, uma imagem de dados de vídeo inclui um componente luma e componentes croma. O componente luma é particionado para formar uma pluralidade de blocos luma, e os componentes croma são particionados para formar uma pluralidade de blocos croma.
[0040] Na VVC, os componentes luma e os componentes croma podem ser particionados de maneiras diferentes. Por exemplo, os componentes luma podem ser particionados de acordo com uma primeira árvore de partição e os componentes croma podem ser particionados de acordo com uma segunda árvore de partição. Em alguns exemplos, para reduzir a quantidade de informações que é necessária para codificar um bloco croma, pode ser possível para um bloco croma predito no modo de predição IBC herdar informações de vetor de bloco de um bloco luma correspondente em vez de um codificador de vídeo que sinaliza explicitamente as informações de vetor de bloco para o bloco croma. Um bloco luma corresponde a um bloco croma e vice-versa se o bloco luma e o bloco croma fizerem parte da mesma unidade de codificação (CU), como um exemplo.
[0041] Contudo, se os blocos luma e os blocos croma são particionados de momo diferente, então, para um bloco croma, pode haver uma pluralidade de blocos luma diferentes particionados de modo diferente que o bloco croma que seria o bloco correspondente. Devido às diferentes partições dos blocos luma e blocos croma e havendo uma pluralidade de blocos luma que correspondam a um bloco croma, pode não estar claro a partir de qual bloco luma um bloco croma deve herdar o vetor de bloco.
[0042] De acordo com as técnicas descritas nesta revelação, um codificador de vídeo (como, por exemplo, codificador de vídeo ou decodificador de vídeo) pode ser configurado para particionar o bloco croma em uma pluralidade de sub-blocos do bloco croma, com base na maneira pela qual o componente luma foi particionado. Dessa maneira, existe uma correspondência de um para um entre cada sub-bloco do bloco croma e a pluralidade de blocos luma. O codificador de vídeo pode ser configurado para atribuir o vetor de bloco dos blocos luma que foram codificados no modo de predição IBC aos respectivos sub- blocos correspondentes do bloco croma.
[0043] A Figura 1 é um diagrama de blocos que mostra um exemplo de sistema de codificação e decodificação de vídeo 100 que pode efetuar as técnicas desta revelação. As técnicas desta revelação são geralmente direcionadas à codificação (codificação e/ou decodificação) de dados de vídeo. Em geral, os dados de vídeo incluem quaisquer dados para processar um vídeo. Assim, os dados de vídeo podem incluir vídeo bruto, não codificado, vídeo codificado, vídeo decodificado (como, por exemplo, reconstruído) e metadados de vídeo, tal como dados de sinalização.
[0044] Conforme mostrado na Figura 1, neste exemplo, o sistema 100 inclui um dispositivo de origem 102 que fornece dados de vídeo codificados a serem decodificados e exibidos por um dispositivo de destino 116. Em particular, o dispositivo de origem 102 fornece os dados de vídeo para o dispositivo de destino 116 por meio de um meio passível de leitura por computador 110. O dispositivo de origem 102 e o dispositivo de destino 116 podem compreender qualquer um de uma ampla faixa de dispositivos, que inclui computadores de mesa, computadores notebook (isto é, laptop), computadores tablet, set-top boxes, aparelhos telefônicos tal como telefones inteligentes,
televisões, câmeras, dispositivos de exibição, reprodutores de meios digitais, consoles de jogos de vídeo, dispositivo de transmissão contínua de vídeo ou semelhantes. Em alguns casos, o dispositivo de origem 102 e o dispositivo de destino 116 podem ser equipados para comunicação sem fio e, assim, podem ser referidos como dispositivos de comunicação sem fio.
[0045] No exemplo da Figura 1, o dispositivo de origem 102 inclui a fonte de vídeo 104, a memória 106, o codificador de vídeo 200 e a interface de saída 108. O dispositivo de destino 116 inclui a interface de entrada 122, o decodificador de vídeo 300, a memória 120 e o dispositivo de exibição 118. De acordo com esta revelação, o codificador de vídeo 200 do dispositivo de origem 102 e o decodificador de vídeo 300 do dispositivo de destino 116 podem ser configurados para aplicar as técnicas para cópia intra-bloco. Assim, o dispositivo de origem 102 representa um exemplo de um dispositivo de codificação de vídeo, enquanto o dispositivo de destino 116 representa um exemplo de um dispositivo de decodificação de vídeo. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo de origem 102 pode receber dados de vídeo a partir de uma fonte de vídeo externa, tal como uma câmera externa. De modo semelhante, o dispositivo de destino 116 pode efetuar interface com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0046] Conforme mostrado na Figura 1, o sistema 100 é meramente um exemplo. Em geral, qualquer dispositivo de codificação e/ou decodificação de vídeo digital pode efetuar técnicas para cópia intra-bloco (IBC). O dispositivo de origem 102 e o dispositivo de destino 116 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo de origem 102 gera dados de vídeo codificados para transmissão ao dispositivo de destino 116. Esta revelação se refere a um dispositivo de “codificação”, tal como um dispositivo que efetua codificação (codificação e/ou decodificação) de dados. Assim, o codificador de vídeo 200 e o decodificador de vídeo 300 representam exemplos de dispositivos de codificação, em particular, um codificador de vídeo e um decodificador de vídeo, respectivamente. Em alguns exemplos, os dispositivos 102, 116 podem funcionar de uma maneira substancialmente simétrica, de tal modo que cada um dos dispositivos 102, 116 inclua componentes de codificação e decodificação de vídeo. Portanto, o sistema 100 pode suportar transmissão de vídeo unidirecional ou bidirecional entre os dispositivos 102, 116, como, por exemplo, para transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo ou telefonia por vídeo.
[0047] Em geral, a fonte de vídeo 104 representa uma fonte de dados de vídeo (isto é, dados de vídeo brutos e não codificados) e fornece uma série sequencial de imagens (também conhecidas como “quadros”) dos dados de vídeo para o codificador de vídeo 200, que codifica os dados para as imagens. A fonte de vídeo 104 do dispositivo de origem 102 pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo que contém vídeo bruto capturado anteriormente e/ou uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo. Como alternativa adicional, a fonte de vídeo 104 pode gerar dados baseados em gráficos de computador como o vídeo de origem ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em cada caso, o codificador de vídeo 200 codifica os dados de vídeo capturados, pré- capturados ou gerados por computador. O codificador de vídeo 200 pode redispor as imagens a partir da ordem recebida (algumas vezes referida como “ordem de exibição”) em uma ordem de codificação para codificação. O codificador de vídeo 200 pode gerar um fluxo de bits que inclui dados de vídeo codificados. O dispositivo de origem 102 pode então transmitir dados de vídeo codificados por meio de interface de saída 108 para o meio passível de leitura por computador 110 para recepção e/ou recuperação pela, como, por exemplo, interface de entrada 122 do dispositivo de destino 116.
[0048] A Memória 106 do dispositivo de origem 102 e a memória 120 do dispositivo de destino 116 representam memórias de propósito geral. Em algum exemplo, as memórias 106, 120 podem armazenar dados brutos de vídeo, como, por exemplo, vídeo bruto a partir da fonte de vídeo 104 e dados de vídeo brutos e decodificados a partir do decodificador de vídeo 300. Além disso, ou alternativamente, as memórias 106, 120 podem armazenar instruções de software executáveis por, por exemplo, codificador de vídeo 200 e decodificador de vídeo 300, respectivamente. Embora mostrado separadamente do codificador de vídeo 200 e do decodificador de vídeo 300 neste exemplo, deve ficar entendido que o codificador de vídeo 200 e o decodificador de vídeo 300 também podem incluir memórias internas para finalidades funcionalmente semelhantes ou equivalentes. Além disso, as memórias 106, 120 podem armazenar dados de vídeo codificados, como, por exemplo, saída a partir do codificador de vídeo 200 e entrada para o decodificador de vídeo 300. Em alguns exemplos, partes das memórias 106, 120 podem ser alocadas como um ou mais armazenadores de vídeo, como, por exemplo, para armazenar dados de vídeo brutos, decodificados e/ou codificados.
[0049] O meio passível de leitura por computador 110 pode representar qualquer tipo de meio ou dispositivo capaz de transportar os dados de vídeo codificados a partir do dispositivo de origem 102 para o dispositivo de destino 116. Em um exemplo, o meio passível de leitura por computador 110 representa um meio de comunicação para permitir que o dispositivo de origem 102 transmita dados de vídeo codificados diretamente para o dispositivo de destino 116 em tempo real, como, por exemplo, por meio de uma rede de radiofrequência ou rede com base em computador. A interface de saída 108 pode modular um sinal de transmissão que inclui os dados de vídeo codificados, e a interface de entrada 122 pode modular o sinal de transmissão recebido, de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou cabeado, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede com base em pacotes, tal como uma rede de área local, uma rede de área estendida ou uma rede global, tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação a partir do dispositivo de origem 102 para o dispositivo de destino 116.
[0050] Em alguns exemplos, o dispositivo de origem 102 pode transmitir dados codificados da interface de saída 108 para o dispositivo de armazenamento 116. De modo semelhante, o dispositivo de destino 116 pode acessar dados codificados a partir do dispositivo de armazenamento 116 por meio de interface de entrada 122. O dispositivo de armazenamento 116 pode incluir qualquer um de diversos meios de armazenamento de dados distribuídos ou acessados localmente, tais como uma unidade de disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou qualquer outro meio de armazenamento digital adequado para armazenar dados de vídeo codificados.
[0051] Em alguns exemplos, o dispositivo de origem 102 pode transmitir dados de vídeo codificados para o servidor de arquivos 114 ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 102. O dispositivo de destino 116 pode acessar dados de vídeo armazenados a partir do servidor de arquivos 114 por meio de fluxo contínuo ou download. O servidor de arquivos 114 pode ser qualquer tipo de dispositivo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados para o dispositivo de destino 116. O servidor de arquivos 114 pode representar um servidor da web (como, por exemplo, para um sítio da Web), um Protocolo de Transferência de Arquivos (FTP), um dispositivo de rede de entrega de conteúdo ou um dispositivo de Armazenamento Anexado à Rede (NAS). O dispositivo de destino 116 pode acessar dados de vídeo codificados a partir do servidor de arquivos 114 através de qualquer conexão de dados padrão, inclusive uma conexão de Internet. Isso pode incluir um canal sem fio (como, por exemplo, uma conexão Wi-Fi), uma conexão cabeada (como, por exemplo, DSL, modem a cabo etc.) ou uma combinação de ambos que seja adequada para acessar os dados de vídeo codificados armazenados no servidor de arquivos 114. O servidor de arquivos 114 e a interface de entrada 122 podem ser configurados para funcionar de acordo com um protocolo de transmissão de fluxo contínuo, um protocolo de transmissão de download ou uma combinação deles.
[0052] A interface de saída 108 e a interface de entrada 122 podem representar transmissores/receptores sem fio, modems, componentes de rede cabeados (como, por exemplo, placas Ethernet), componentes de comunicação sem fio que funcionam de acordo com qualquer um dos diversos padrões IEEE 802.11 ou outros componentes físicos. Em exemplos onde a interface de saída 108 e a interface de entrada 122 compreendem componentes sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, tal como dados de vídeo codificados, de acordo com um padrão de comunicação celular, como o 4G, o 4G-LTE (Evolução de Longo Prazo), a LTE Avançada, o 5G ou semelhantes. Em alguns exemplos onde a interface de saída 108 compreende um transmissor sem fio,
a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, tal como dados de vídeo codificados, de acordo com outros padrões sem fio, tais como uma especificação IEEE 802.11, uma especificação IEEE 802.15 (como, por exemplo, ZigBeeTM), um padrão BluetoothTM ou semelhante. Em alguns exemplos, o dispositivo de origem 102 e/ou o dispositivo de destino 116 podem incluir os respectivos dispositivos de sistema em um chip (SoC). Por exemplo, o dispositivo de origem 102 pode incluir um dispositivo SoC para efetuar a funcionalidade atribuída ao decodificador de vídeo 300 e/ou interface de entrada 122
[0053] As técnicas desta revelação podem ser aplicadas à codificação de vídeo em suporte a qualquer uma de uma diversidade de aplicações multimídia, tais como broadcast de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo por fluxo contínuo de Internet, tal como fluxo contínuo adaptativo dinâmico através de 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 outros aplicativos.
[0054] A interface de entrada 122 do dispositivo de destino 116 recebe um fluxo de bits de vídeo codificado do meio passível de leitura por computador 110 (como, por exemplo, o dispositivo de armazenamento 112, o servidor de arquivos 114 ou semelhante). O meio passível de leitura por computador de fluxo de bits de vídeo codificado 110 pode incluir informações de sinalização definidas pelo codificador de vídeo 200, que também é utilizado pelo decodificador de vídeo 300, tal como elementos de sintaxe que têm valores que descrevem características e/ou processamento de blocos de vídeo ou outras unidades codificadas (como, por exemplo, fatias, figuras, grupos de figuras, sequências ou semelhantes). O dispositivo de exibição 118 exibe imagens decodificadas dos dados de vídeo decodificados para um usuário. O dispositivo de exibição 118 pode representar qualquer um de uma variedade de dispositivos de exibição, tal como um tubo de raios catódicos (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo emissor de luz orgânica (OLED) ou outro tipo de dispositivo de exibição.
[0055] Embora não mostrado na Figura 1, em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser integrados a um codificador de áudio e/ou decodificador de áudio e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e/ou software, para manipular fluxos contínuos multiplexados, que incluem tanto áudio quanto vídeo em um fluxo contínuo de dados comum. Se aplicável, as unidades MUX-DEMUX podem estar em conformidade com o protocolo multiplexador ITU H.223 ou com outros protocolos, tal como o protocolo de datagrama de usuário (UDP).
[0056] O codificador de vídeo 200 e o decodificador de vídeo 300, cada, podem ser implementados como qualquer um de uma variedade de circuitos adequados de codificador e/ou decodificador, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados específicos para aplicativo
(ASICs), arranjos de portas programáveis no campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação deles. Quando as técnicas são implementadas parcialmente no software, um dispositivo pode armazenar instruções para o software em um meio passível de leitura por computador não transitório adequado e executar as instruções no hardware utilizando um ou mais processadores para efetuar as técnicas desta revelação. Cada um dos codificadores de vídeo 200 e decodificadores de vídeo 300 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo. Um dispositivo que inclui codificador de vídeo 200 e/ou decodificador de vídeo 300 pode compreender um circuito integrado, um microprocessador e/ou um dispositivo de comunicação sem fio, como um telefone celular.
[0057] O codificador de vídeo 200 e o decodificador de vídeo 300 podem funcionar de acordo com um padrão de codificação de vídeo, como o ITU-T H.265, também conhecido como Codificação de Vídeo de Alta Eficácia (HEVC) ou extensivos a ele, tal como a visualização múltipla e/ou extensões de codificação de vídeo escalonáveis. Alternativamente, o codificador de vídeo 200 e o decodificador de vídeo 300 podem funcionar de acordo com outros padrões proprietários ou industriais, tal como o Modelo de Teste de Exploração Conjunta (JEM7) para o padrão de Codificação de Vídeo Versátil (VVC) atualmente sob desenvolvimento. As técnicas desta revelação, contudo, não são limitadas a qualquer padrão de codificação específico e podem ser aplicáveis aos padrões de codificação de vídeo sob desenvolvimento.
[0058] Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem efetuar a codificação de imagens baseada em bloco. O termo “bloco” geralmente se refere a uma estrutura que inclui dados a serem processados (como, por exemplo, codificados, decodificados ou utilizados de outra forma no processo de codificação e/ou decodificação). Por exemplo, um bloco pode incluir uma matriz bidimensional de amostras de dados de luminância e/ou crominância. Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar dados de vídeo representados no formato YUV (como, por exemplo, Y, Cb, Cr). Isto é, em vez de codificar dados vermelho, verde e azul (RGB) para amostras de uma imagem, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar os componentes de luminância (luma) e crominância (croma), onde os componentes de crominância podem incluir tanto componentes de crominância de matiz vermelha quanto de matiz azul. Em alguns exemplos, o codificador de vídeo 200 converte dados formatados RGB recebidos em uma representação YUV antes da codificação e o decodificador de vídeo 300 converte a representação YUV no formato RGB. Alternativamente, as unidades de pré-processamento e pós- processamento (não mostradas) podem efetuar essas conversões.
[0059] Esta revelação pode geralmente se referir à codificação (como, por exemplo, codificação e decodificação) de imagens para incluir o processo de codificação ou decodificação de dados da imagem. De modo semelhante, esta revelação pode se referir à codificação de blocos de uma imagem para incluir o processo de codificação ou decodificação de dados para os blocos, como, por exemplo, predição e/ou codificação residual. Um fluxo de bits de vídeo codificado geralmente inclui uma série de valores para elementos de sintaxe representativos de decisões de codificação (como, por exemplo, modos de codificação) e particionamento de imagens em blocos. Assim, as referências à codificação de uma figura ou bloco devem geralmente ser entendidas como valores de codificação para elementos de sintaxe que formam a figura ou bloco.
[0060] A HEVC define diversos blocos, que incluem unidades de codificação (CUs), unidades de predição (PUs) e unidades de transformação (TUs). De acordo com a HEVC, um codificador de vídeo (tal como o codificador de vídeo 200) particiona uma unidade de árvore de codificação (CTU) em CUs de acordo com uma estrutura quadtree. Isto é, o codificador de vídeo particiona CTUs e CUs em quatro quadrados iguais e não sobrepostos, e cada nó do quadtree tem ou zero ou quatro nós filhos. Os nós sem nós filhos podem ser referidos como “nós folhas” e as CUs de tais nós folhas podem incluir uma ou mais PUs e/ou uma ou mais UTs. O codificador de vídeo pode particionar adicionalmente PUs e TUs. O codificador de vídeo pode adicionalmente particionar PUs e TUs. Por exemplo, em HEVC, um quadtree residual (RQT) representa o particionamento de TUs. Em HEVC, as PUs representam dados de inter-predição, enquanto as TUs representam dados residuais. As CUs que são intra- preditas incluem informações de intra-predição, tal como uma indicação de modo intra.
[0061] Em HEVC, a maior unidade de codificação de uma fatia é chamada de codificação de bloco de árvore (CTB). Uma CTB contém uma quad-tree cujos nós são unidades de codificação. O tamanho de uma CTB pode variar de 16x16 a 64x64 no perfil principal da HEVC (embora tecnicamente os tamanhos da CTB de 8x8 possam ser suportados). Uma unidade de codificação (CU) pode ter o mesmo tamanho de uma CTB, embora seja tão pequena quanto 8x8. Cada unidade de codificação é codificada com um único modo. Quando uma CU é inter codificada, ela pode ser adicionalmente particionada em duas unidades de predição (PUs) ou tornar-se apenas uma PU quando adicionalmente a partição não se aplicar. Quando duas PUs estão presentes em uma CU, elas podem ser retângulos de meio tamanho ou dois tamanhos de retângulos com tamanho de ¼ ou ¾ da CU.
[0062] Quando a CU é codificada, um conjunto de informações de movimento está presente para cada PU. Além disso, cada PU é codificada com um único modo de inter-predição para derivar o conjunto de informações de movimento. Em HEVC, os menores tamanhos de PU são 8x4 e 4x8.
[0063] Como outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para funcionar de acordo com o JEM. De acordo com o JEM, um codificador de vídeo (tal como o codificador de vídeo 200) particiona uma imagem em uma pluralidade de unidades de árvore de codificação (CTUs). O codificador de vídeo 200 pode particionar uma CTU de acordo com uma estrutura de árvore, tal como uma estrutura em árvore binária quadtree (QTBT). A estrutura QTBT do JEM remove os conceitos de múltiplos tipos de partição, tal como a separação entre CUs, PUs e TUs da HEVC. Uma estrutura QTBT de JEM inclui dois níveis: um primeiro nível particionado de acordo com o particionamento quadtree e um segundo nível particionado de acordo com o particionamento de árvore binária. Um nó raiz da estrutura QTBT corresponde a uma CTU. Os nós folhas das árvores binárias correspondem às unidades de codificação (CUs).
[0064] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem utilizar 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 utilizar duas ou mais estruturas QTBT, tal 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).
[0065] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para utilizar o particionamento quadtree por particionamento HEVC, QTBT de acordo com JEM (como, por exemplo, VVC) ou outras estruturas de particionamento. Para finalidades de explicação, a descrição das técnicas desta revelação é apresentada com respeito ao particionamento QTBT. Contudo, deve ser compreendido que as técnicas desta revelação também podem ser aplicadas a codificadores de vídeo configurados para utilizar o particionamento quadtree, ou bem como outros tipos de particionamento.
[0066] Esta revelação pode utilizar “NxN” e “N por N” de modo intercambiável para se referir às dimensões da amostra de um bloco (tal como uma CU ou outro bloco de vídeo) em termos de dimensões verticais e horizontais, como, por exemplo, amostras 16x16 ou amostras 16 por 16. Em geral, uma CU 16x16 tem 16 amostras na direção vertical (y = 16) e 16 amostras na direção horizontal (x = 16). De modo semelhante, uma CU NxN geralmente tem N amostras na direção vertical e N amostras na direção horizontal, onde N representa um valor de número inteiro não negativo. As amostras em uma CU podem ser dispostas em linhas e colunas. Além disso, as CUs não necessariamente têm o mesmo número de amostras na direção horizontal que na direção vertical. Por exemplo, as CUs podem compreender amostras NxM, onde M não é necessariamente igual a N.
[0067] O codificador de vídeo 200 codifica dados de vídeo para CUs representando predição e/ou informações residuais e outras informações. As informações de predição indicam como a CU deve ser predita de modo a formar um bloco de predição para a CU. As informações residuais geralmente representam diferenças de amostra por amostra entre as amostras da CU anteriores à codificação e ao bloco de predição.
[0068] Para predizer uma CU, o codificador de vídeo 200 pode geralmente formar um bloco de predição para a CU através de inter-predição ou intra-predição. A inter- predição geralmente se refere à predição da CU a partir de dados de uma imagem anteriormente codificada, enquanto a intra-predição geralmente se refere à predição da CU a partir de dados anteriormente codificados da mesma imagem. Para efetuar inter-predição, o codificador de vídeo 200 pode gerar o bloco de predição utilizando um ou mais vetores de movimento. O codificador de vídeo 200 pode geralmente efetuar uma busca de movimento para identificar um bloco de referência que se corresponda com proximidade à CU, por exemplo, em termos de diferenças entre a CU e o bloco de referência. O codificador de vídeo 200 pode calcular uma métrica de diferença utilizando uma soma de diferença absoluta (SAD), uma soma de diferenças ao quadrado (SSD), diferença absoluta média (MAD), diferença ao quadrado média (MSD) ou outros cálculos de diferenças para determinar se um bloco de referência se corresponde com proximidade à CU atual. Em alguns exemplos, o codificador de vídeo 200 pode predizer a CU atual utilizando predição unidirecional ou predição bidirecional.
[0069] Para cada bloco, um conjunto de informações de movimento pode estar disponível. Um conjunto de informações de movimento contém informações de movimento para direções de predição para frente e para trás. Aqui, as direções de predição para frente e para trás são duas direções de predição de um modo de predição bidirecional e os termos “para frente” e “para trás” não têm necessariamente um significado geométrico; em vez disso, correspondem à lista de imagens de referência 0 (RefPicList0) e à lista de imagens de referência 1 (RefPicListl) de uma imagem atual. Quando apenas uma lista de imagens de referência está disponível para uma imagem ou fatia, apenas RefPicList0 está disponível e as informações de movimento de cada bloco de uma fatia estão sempre para frente.
[0070] Para cada direção de predição, as informações de movimento contêm um índice de referência e um vetor de movimento. Em alguns casos, para simplificar, um vetor de movimento em si pode ser referido de uma maneira que se pressupõe que ele tenha um índice de referência associado. Um índice de referência é utilizado para identificar uma imagem de referência na lista de imagens de referência atual (RefPicList0 ou RefPicListl). Um vetor de movimento tem um componente horizontal e um vertical.
[0071] A contagem de ordens de imagens (POC) é amplamente utilizada em padrões de codificação de vídeo para identificar uma ordem de exibição de uma imagem. Embora existam casos de duas imagens dentro de uma sequência de vídeo codificada que podem ter o mesmo valor de POC, isso tipicamente não ocorre dentro de uma sequência de vídeo codificada. Quando múltiplas sequências de vídeo codificadas estão presentes em um fluxo de bits, as imagens com o mesmo valor de POC podem estar próximas umas das outras em termos de ordem de decodificação. Os valores POC das imagens são tipicamente utilizados para a construção da lista de imagens de referência, derivação de imagem de referência configurada como em HEVC e escalonamento de vetor de movimento.
[0072] O JEM também fornece um modo de compensação de movimento afim, que pode ser considerado um modo de inter-predição. No modo de compensação de movimento afim, o codificador de vídeo 200 pode determinar dois ou mais vetores de movimento que representam movimento não translacional, tal como aumentar ou diminuir o zoom, rotação, movimento em perspectiva ou outros tipos de movimento irregular.
[0073] Para efetuar a intra-predição, o codificador de vídeo 200 pode selecionar um modo de intra- predição para gerar o bloco de predição. Em alguns exemplos, sessenta e sete modos de intra-predição estão disponíveis, inclusive diversos modos direcionais, bem como o modo planar e o modo DC. Em geral, o codificador de vídeo 200 seleciona um modo de intra-predição que descreve amostras vizinhas de um bloco atual (como, por exemplo, um bloco de uma CU) a partir do qual efetua predição de amostras do bloco atual. Tais amostras geralmente podem estar acima, acima e à esquerda ou à esquerda do bloco atual na mesma imagem que o bloco atual, presumindo-se o codificador de vídeo 200 que codifica CTUs e CUs em ordem de varredura raster (esquerda para a direita, de cima para baixo).
[0074] O codificador de vídeo 200 codifica dados que representam o modo de predição para um bloco atual. Por exemplo, para modos de inter-predições, o codificador de vídeo 200 pode codificar dados que representam qual dos diversos modos de inter-predições disponíveis são utilizados, bem como informações de movimento para o modo correspondente. Para inter-predição unidirecional ou bidirecional, por exemplo, o codificador de vídeo 200 pode codificar vetores de movimento utilizando a predição de vetor de movimento avançada (AMVP) ou o modo de mistura. O codificador de vídeo 200 pode utilizar modos semelhantes para codificar vetores de movimento para o modo de compensação de movimento afim.
[0075] No padrão HEVC, existem dois modos de inter-predição, denominados mistura (ignorar é considerado como um caso especial de mistura) e modos de predição de vetores de movimento avançados (AMVP), respectivamente, para uma unidade de predição (PU). Ou no modo AMVP ou de mistura, uma lista de candidatos de vetor de movimento (MV) é mantida para múltiplos preditores de vetor de movimento. Os vetores de movimento, bem como os índices de referência no modo de mistura da PU atual, são gerados pela tomada de um candidato a partir da lista de candidatos MV.
[0076] A lista de candidatos MV contém até 5 candidatos para o modo de mistura e apenas dois candidatos para o modo AMVP. Um candidato de mistura pode conter um conjunto de informações de movimento, como, por exemplo, vetores de movimento correspondentes a ambas as listas de imagens de referência (lista 0 e lista 1) e os índices de referência. Se um candidato de mistura é identificado por um índice de mistura, as imagens de referência são utilizadas para a predição dos blocos atuais, bem como os vetores de movimento associados são determinados. Contudo, sob o modo AMVP para cada direção de predição potencial a partir da lista 0 ou da lista 1, um índice de referência necessita ser sinalizado explicitamente, juntamente com um índice MVP para a lista de candidatos MV, desde que o candidato AMVP contenha apenas um vetor de movimento. No modo AMVP, os vetores de movimento preditos podem ser refinados adicionalmente.
[0077] Como pode ser visto acima, um candidato de mistura corresponde a um conjunto completo de informações de movimento, enquanto um candidato AMVP contém apenas um vetor de movimento para uma direção de predição e índice de referência específicos. Os candidatos para ambos os modos são derivados de modo semelhante a partir dos mesmos blocos vizinhos espaciais e temporais.
[0078] Para mistura e AMVP, os candidatos MV espaciais são derivados a partir dos blocos vizinhos mostrados na Figura 5, para uma PU específica (PU0), embora os métodos para gerar os candidatos a partir dos blocos sejam diferentes para os modos de mistura e AMVP. No modo de mistura, as posições de cinco candidatos MV espaciais são mostradas na Figura 5. Para cada posição de candidato, a disponibilidade é verificada de acordo com a ordem: {a1, b1, b0, a0, b2}.
[0079] No modo AMVP, os blocos vizinhos são divididos em dois grupos: grupo esquerdo, que inclui os blocos a0 e a1, e grupo acima, que inclui os blocos b0, b1 e b2, conforme mostrado na Figura 5. Para o grupo esquerdo, a disponibilidade é verificada de acordo com a ordem: {a0, a1}. Para o grupo acima, a disponibilidade é verificada de acordo com a ordem: {b0, b1, b2}. Para cada grupo, o candidato potencial em um bloco vizinho que se refere à mesma imagem de referência que a indicada pelo índice de referência sinalizado tem a prioridade mais elevada a ser escolhida para formar um candidato final do grupo. É possível que todos os blocos vizinhos não contenham um vetor de movimento que aponte para a mesma imagem de referência. Portanto, se esse candidato não puder ser encontrado, o primeiro candidato disponível será escalonado para formar o candidato final; assim, as diferenças de distância temporal podem ser compensadas.
[0080] Existem outros candidatos ao lado dos candidatos espaciais vizinhos para mistura e modo AMVP. No modo de mistura, após a validação dos candidatos espaciais, dois tipos de redundância são removidos. Se a posição candidata para a PU atual for referida à primeira PU dentro da mesma CU, a posição é excluída, pois a mesma mistura poderia ser alcançada por uma CU sem se dividir em partições de predição. Além disso, quaisquer entradas redundantes onde os candidatos tenham exatamente a mesma informação de movimento também serão excluídas. Após os candidatos vizinhos espaciais serem verificados, os candidatos temporais são validados. Para o candidato temporal, a posição inferior direita do lado de fora da PU colocada da imagem de referência é utilizada, se estiver disponível. Caso contrário, a posição central, ao invés disso, será utilizada. A maneira de escolher a PU colocada é semelhante à de padrões anteriores, mas a HEVC permite mais flexibilidade pela transmissão de um índice para especificar qual lista de imagens de referência é utilizada para a imagem de referência colocada. Um problema relacionado à utilização do candidato temporal é a quantidade de memória para armazenar as informações de movimento da imagem de referência. Isso é resolvido pela restrição da granularidade para armazenamento dos candidatos de movimentos temporais para apenas a resolução de uma grade luma de 16x 16, mesmo quando estruturas menores de PB (ou possivelmente PU) são utilizadas na localização correspondente na imagem de referência.
[0081] Além disso, um sinalizador de nível PPS (conjunto de parâmetros de imagem) permite que o codificador de vídeo 200 desabilite a utilização do candidato temporal, o que é útil para aplicativos com transmissão propensa a erros.
O número máximo de candidatos de mistura C é especificado no cabeçalho da fatia.
Se o número de candidatos de mistura encontrado (que inclui o candidato temporal) for maior que C, apenas os primeiros candidatos espaciais C-1 e o candidato temporal serão mantidos.
Caso contrário, se o número de candidatos de mistura identificados for menor que C, candidatos adicionais serão gerados até que o número seja igual a C.
Isso simplifica e torna mais robusto o parse, pois a capacidade de parse dos dados codificados não depende do candidato de mistura disponível.
Para fatias B, os candidatos de mistura adicionais são gerados pela escolha de dois candidatos existentes, de acordo com uma ordem predefinida para a lista de imagens de referência 0 e a lista 1. Por exemplo, o primeiro candidato gerado utiliza o primeiro candidato de mistura para a lista 0 e o segundo candidato de mistura para a lista 1. A HEVC especifica um total de 12 pares predefinidos de dois na seguinte ordem na lista de candidatos de mistura já construída como (0, 1), (1, 0), (0, 2), (2, 0), (1 , 2), (2, 1), (0, 3), (3, 0), (1, 3), (3, 1), (2, 3) e (3, 2). Dentre eles, até cinco candidatos podem ser incluídos após a remoção de entradas redundantes.
Quando o número de candidatos de mistura permanece menor que C, candidatos de mistura predefinidos, que incluem vetores de movimento predefinidos e os índices de referência correspondentes, são utilizados com zero vetores de movimento associados com índices de referência de zero ao número de imagens de referência menos um utilizado para preencher quaisquer entradas restantes na lista de candidatos de mistura.
[0082] No modo AMVP, a HEVC apenas permite que um número muito menor de candidatos seja utilizado no caso de processo de predição de vetor de movimento, uma vez que o codificador de vídeo 200 pode enviar uma diferença codificada da alteração no vetor de movimento (como, por exemplo, uma diferença de vetor de movimento (MVD)). Além disso, o codificador de vídeo 200 pode efetuar a estimação de movimento, que é uma das operações computacionais mais dispendiosas no codificador de vídeo 200, e a complexidade é reduzida pela permissão de um pequeno número de candidatos. Quando o índice de referência da PU vizinha não é igual ao da PU atual, uma versão escalonada do vetor de movimento é utilizada. O vetor de movimento vizinho é escalonado de acordo com as distâncias temporais entre a imagem atual e as imagens de referência indicadas pelos índices de referência da PU vizinha e da PU atual, respectivamente. Quando dois candidatos espaciais têm os mesmos componentes do vetor de movimento, um candidato espacial redundante é excluído. Quando o número de preditores do vetor de movimento não é igual a dois e a utilização da predição MV temporal não é explicitamente desabilitada, o candidato de predição MV temporal é incluído. Isso significa que o candidato temporal não é utilizado em tudo quando dois candidatos espaciais estão disponíveis. Finalmente, o vetor de movimento predefinido, que é um vetor de movimento zero, é incluído repetidamente até que o número de candidatos de predição de vetores de movimento seja igual a dois, o que garante que o número de preditores de vetor de movimento seja dois. Assim, apenas um sinalizador codificado é necessário para identificar qual predição de vetor de movimento é utilizada no caso do modo AMVP.
[0083] Um candidato a predição de vetor de movimento temporal (TMVP), se habilitado e disponível, é adicionado à lista de candidatos MV após candidatos de vetores de movimento espaciais. O processo de derivação de vetor de movimento para um candidato TMVP é o mesmo para ambos os modos de mistura e AMVP, contudo, o índice de referência de alvo para o candidato TMVP no modo de mistura é sempre configurado como 0.
[0084] A localização do bloco primário para derivação do candidato TMVP é o bloco inferior direito do lado de fora da PU colocada, conforme mostrado na Figura 6A como um bloco “T”, para compensar o viés dos blocos acima e esquerdo utilizados para gerar candidatos vizinhos espaciais. Contudo, se esse bloco estiver localizado do lado de fora da linha CTB atual ou as informações de movimento não estiverem disponíveis, o bloco é substituído por um bloco central da PU.
[0085] O vetor de movimento para o candidato TMVP é derivado a partir da PU co-localizada da imagem co- localizada, indicada no nível da fatia. O vetor de movimento para a PU co-localizada é chamado MV colocado. Semelhante ao modo direto temporal em AVC, para derivar o vetor de movimento candidato TMVP, o MV co-localizado pode ser escalonado para compensar as diferenças de distância temporal, conforme mostrado na Figura 6B.
[0086] Vários aspectos de modos de mistura e AMVP são merecedores de menção, conforme o seguinte:
[0087] Escalonamento de vetor de movimento: Presume-se que o valor de vetores de movimento seja proporcional à distância das imagens no tempo de apresentação. Um vetor de movimento associa duas figuras, a imagem de referência e a figura que contém o vetor de movimento (a saber, a imagem continente). Quando um vetor de movimento é utilizado para predizer o outro vetor de movimento, a distância da imagem continente e da imagem de referência é calculada com base nos valores de Contagem de Ordem de Imagem (POC).
[0088] Para que um vetor de movimento seja predito, tanto a sua imagem continente associada quanto a imagem de referência podem ser diferentes. Portanto, uma nova distância (com base em POC) é calculada e o vetor de movimento é escalonado com base nessas duas distâncias de POC. Para um candidato vizinho espacial, as imagens continentes para os dois vetores de movimento são as mesmas, enquanto as imagens de referência são diferentes. Em HEVC, o escalonamento do vetor de movimento se aplica tanto ao TMVP quanto ao AMVP para candidatos vizinhos espaciais e temporais.
[0089] Geração de candidato de vetor de movimento artificial: Se uma lista de candidatos de vetor de movimento não estiver completa, os candidatos de vetor de movimento artificial serão gerados e inseridos no final da lista até que a lista tenha todos os candidatos.
[0090] No modo de mistura, existem dois tipos de candidatos MV artificiais: o candidato combinado derivado apenas para fatias B e os candidatos zero, utilizados apenas para AMVP se o primeiro tipo não fornecer candidatos artificiais suficientes.
[0091] Para cada par de candidatos que já estão na lista de candidatos e têm informações de movimento necessárias, os candidatos de vetores de movimento combinados bidirecionais são derivados por uma combinação do vetor de movimento do primeiro candidato que se refere a uma imagem na lista 0 e ao vetor de movimento de um segundo candidato que se refere a uma figura da lista 1.
[0092] Processo de supressão para inserção de candidatos: Pode ocorrer que candidatos de diferentes blocos sejam os mesmos, o que diminui a eficiência de uma lista de candidatos de mistura/AMVP. Um processo de supressão é aplicado para resolver esse problema. Ele compara um candidato com os outros na lista de candidatos atual para evitar a inserção de candidatos idênticos em certa medida. Para reduzir a complexidade, apenas um número limitado de processos de supressão é aplicado em vez da comparação de cada candidato potencial com todos os outros existentes.
[0093] Processamento paralelo de mistura/nível em HEVC: Em HEVC, uma LCU pode ser dividida em regiões de estimação de movimento (MERs) paralelas e permitir que apenas essas PUs vizinhas que pertencem a MERs diferentes da PU atual sejam incluídas no misturar/ignorar do processo de construção de lista MVP. O tamanho da MER é sinalizado no parâmetro de imagem configurado como log2_parallel_merge_level_minus2. Quando o tamanho da MER é maior que NxN, em que 2Nx2N é o menor tamanho da CU, a MER resulta em um modo que um bloco vizinho espacial, se for interno na mesma MER que a PU atual, seja considerado indisponível.
[0094] O vetor de movimento utilizado para a codificação croma pode ser escalonado a partir do vetor de movimento utilizado para luma. O vetor de movimento é derivado para o componente luma de uma PU/CU atual. Antes de ser utilizado para a compensação de movimento croma, o vetor de movimento é escalonado, com base no formato de amostragem croma.
[0095] Além da intra-predição ou inter- predição de um bloco, outro modo de codificação inclui o modo de predição de cópia intra-bloco (IBC) e é incluído na extensão da codificação de conteúdo de tela (SCC) HEVC. No modo de predição IBC, uma CU/PU atual é predita a partir de um bloco já decodificado da imagem/fatia atual referido por um vetor de bloco da CU/PU atual, conforme mostrado na Figura 7. Observe-se que o sinal de predição é reconstruído, mas sem filtragem em loop, que inclui desbloqueio e Deslocamento Adaptativo da Amostra (SAO).
[0096] Na inter-predição, uma CU/PU atual é predita a partir de um bloco já decodificado, mas em uma imagem diferente, mas na cópia intra-bloco, o bloco já decodificado e o bloco atual estão na mesma imagem. Na intra-predição, uma CU/PU atual é predita a partir de amostras na imagem/fatia atual, mas não é referida por um vetor de bloco como na cópia intra-bloco. Em alguns exemplos, a cópia intra-bloco pode ser considerada como uma forma de inter-predição, onde a imagem atual é incluída na lista de imagens de referência.
[0097] Para compensação de bloco na cópia intra-bloco (BC), para o componente luma ou os componentes croma que são codificados com Intra BC, a compensação de bloco é feita com compensação de bloco de número inteiro, portanto, não é necessária interpolação. Além disso, o vetor de bloco é predito e sinalizado em nível de número inteiro. Na codificação de conteúdo da tela (SCC) atual, o preditor de vetor de bloco é configurado como (-w, 0) no começo de cada CTB, onde w é a largura da CU. Tal preditor de vetor de bloco é atualizado para ser um da CU/PU codificada mais recente, se for codificada com o modo Intra BC. Se uma CU/PU não for codificada com Intra BC, o preditor de vetor de bloco continuará (como, por exemplo, permanece) inalterado. Após a predição do vetor de bloco, a diferença do vetor de bloco é codificada utilizando-se o método de codificação de diferença (MVD) MV, que é HEVC. O Intra BC atual é habilitado tanto no nível CU quanto PU. Para o nível PU intra BC, a partição de PU de 2NxN e Nx2N é suportada para todos os tamanhos de CU. Além disso, quando a CU é a menor CU, a partição de PU NxN é suportada.
[0098] A seguir, é descrito maneiras nas quais a intra-BC é tratada de forma semelhante à inter-predição. Na Publicação de Patente dos E.U.A., N.º 2015/0271487, a imagem atual é utilizada como imagem de referência e adicionada à lista de referências. Então, a Intra-BC é tratada como modo Inter. Em Li B et alii, “Não-SCCEl: Unificação de intra-BC e modos inter”, 18, ENCONTRO DE JCT- VC; 30-6-2014 – 9-7-2014; SAPPORO; (EQUIPE DE COLABORAÇÃO CONJUNTA EM CODIFICAÇÃO DE VÍDEO DA ISO/IEC JTC1/SC29/WG11 E ITU-T SG.16); URL: http://wftp3.itu.int/av-arch/jctvc- site/, n.º JCTVC-R0100-v2, 29 de junho de 2014 (29-06- 2014), XP030116357 (daqui por diante, “JCTV-R0100”), é descrita a unificação de Inter e Intra-BC. A imagem atual é adicionada à lista de referência. É marcado como longo prazo antes da decodificação e marcado para curto prazo após a decodificação da imagem atual. Quando a Intra-BC é habilitada, o processo de parse de sintaxe e o processo de decodificação da fatia P é seguido pela fatia I.
[0099] Na Publicação de Patente dos E.U.A. N.º 2016/0057420, são propostas algumas soluções para resolver os problemas relacionados à derivação de predição de vetor de movimento temporal (TMVP), interação com intra-predição restrita, construção de lista de referência e assim por diante. Na Publicação de Patente dos E.U.A. N.º 2016/0100189, quando a Intra BC é tratada como modo Inter, são propostas algumas soluções para evitar a verificação extra de condições e resolver os problemas que existem para a interação entre TMVP, intra-predição restrita, precisão Intra BC MV e assim por diante.
[0100] Na HEVC SCC final, as informações das quais podem ser encontradas em “Cópia Intra-Bloco em Extensões de Conteúdo de Tela HEVC”, Jornal IEEE sobre Tópicos Emergentes e Selecionados em Circuitos e Sistemas (volume 6, edição 4), Dez. de 2016, por Xiaozhong Xu, Shan Liu, Tzu-Der Chuang, Yu-Wen Huang, Shaw-Min Lei, Krishnakanth Rapaka, Chao Pang, Vadim Seregin, Ye-Kui Wang e Marta Karczewicz, quando o modo IBC é habilitado no nível de imagem, a imagem reconstruída atual também é uma imagem de referência para decodificação da fatia atual. Para evitar o possível escalonamento do vetor de movimento para a predição do vetor de movimento temporal, esta imagem de referência é marcada como “utilizada para referência de longo prazo” durante a decodificação da imagem atual. Esta imagem de referência é colocada na lista de imagens de referência (RPL) da lista 0 e também na lista 1 para fatias B. Ela é situada na última posição da RPL inicial, após as imagens de referência de longo prazo (quando aplicável). A variável NumPicTotalCurr é aumentada por 1 em conformidade, quando a imagem reconstruída atual é adicionada à RPL inicial.
[0101] Em seguida à predição, tal como a intra-predição, a inter-predição ou predição IBC de um bloco, o codificador de vídeo 200 pode calcular dados residuais para o bloco. Os dados residuais, tal como um bloco residual, representam amostras por diferenças de amostras entre o bloco e um bloco de predição para o bloco, formado utilizando-se o modo de predição correspondente. O codificador de vídeo 200 pode aplicar uma ou mais transformadas ao bloco residual para produzir dados transformados em um domínio de transformada ao invés do domínio de amostra. Por exemplo, o codificador de vídeo 200 pode aplicar uma transformada de co-seno discreta (DCT), uma transformada de número inteiro, uma transformada de wavelet ou uma transformada conceitualmente semelhante aos dados de vídeo residuais. Além disso, o codificador de vídeo 200 pode aplicar uma transformada secundária em seguida à primeira transformada, tal como uma transformada secundária não separável dependente de modo (MDNSST), uma transformada dependente de sinal, uma transformada de Karhunen-Loeve (KLT), ou semelhante. O codificador de vídeo 200 produz coeficientes de transformada em seguida à aplicação de uma ou mais transformadas.
[0102] Conforme observado acima, em seguida a quaisquer transformadas para produção de coeficientes de transformada, o codificador de vídeo 200 pode efetuar quantização dos coeficientes de transformada. A quantização geralmente se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizados para representar os coeficientes, fornecendo compactação adicional. Ao efetuar o processo de quantização, o codificador de vídeo 200 pode reduzir a profundidade de bits associada com alguns ou todos os coeficientes. Por exemplo, o codificador de vídeo 200 pode arredondar um valor de n-bits para um valor de m- bits durante a quantização, onde n é maior que m. Em alguns exemplos, para efetuar a quantização, o codificador de vídeo 200 pode efetuar um deslocamento à direita bit a bit do valor a ser quantizado.
[0103] Em seguida à quantização, o codificador de vídeo 200 pode efetuar varredura dos coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional, que inclui os coeficientes de transformada quantizados. A varredura pode ser desenhada para colocar coeficientes de alta energia (e, portanto, frequência mais baixa) na frente do vetor e para colocar coeficientes de transformada de baixa energia (e, portanto, alta frequência) na retaguarda do vetor. Em alguns exemplos, o codificador de vídeo 200 pode utilizar uma ordem de varredura predefinida para efetuar varredura dos coeficientes de transformada quantizados para produzir um vetor serializado e, então, a codificação por entropia dos coeficientes de transformada quantizados do vetor. Em outros exemplos, o codificador de vídeo 200 pode efetuar uma varredura adaptativa. Após efetuar varredura dos coeficientes de transformada quantizados para formar o vetor unidimensional, o codificador de vídeo 200 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação aritmética binária adaptativa ao contexto (CABAC). O codificador de vídeo 200 também pode codificar por entropia os valores de codificação para elementos de sintaxe que descrevem metadados associados com os dados de vídeo codificados para utilização pelo decodificador de vídeo 300 na decodificação dos dados de vídeo.
[0104] Para efetuar CABAC, o codificador de vídeo 200 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode estar relacionado a, por exemplo, se valores vizinhos do símbolo são de valor zero ou não. A determinação da probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0105] O codificador de vídeo 200 pode adicionalmente gerar dados de sintaxe, tal como dados de sintaxe com base em bloco, dados de sintaxe com base em imagem e dados de sintaxe com base em sequência, para o decodificador de vídeo 300, como, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia ou outros dados de sintaxe, tais como um conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS) ou conjunto de parâmetros de vídeo (VPS). O decodificador de vídeo 300 também pode decodificar tais dados de sintaxe para determinar como decodificar os dados de vídeo correspondentes.
[0106] Dessa maneira, o codificador de vídeo 200 pode gerar um fluxo de bits que inclui dados de vídeo codificados, como, por exemplo, elementos de sintaxe que descrevem o particionamento de uma imagem em blocos (como, por exemplo, CUs) e predição e/ou informações residuais para os blocos. Por fim, o decodificador de vídeo 300 pode receber o fluxo de bits e decodificar os dados de vídeo codificados.
[0107] Em geral, o decodificador de vídeo 300 efetua um processo recíproco ao que foi efetuado pelo codificador de vídeo 200 para decodificar os dados de vídeo codificados do fluxo de bits. Por exemplo, o decodificador de vídeo 300 pode decodificar valores para os elementos de sintaxe do fluxo de bits utilizando CABAC de uma maneira substancialmente semelhante, embora recíproca, ao processo de codificação CABAC do codificador de vídeo 200. Os elementos de sintaxe podem definir informações de particionamento de uma imagem em CTUs, e o particionamento de cada CTU de acordo com uma estrutura de partição correspondente, tal como uma estrutura QTBT, para definir CUs da CTU. Os elementos de sintaxe podem definir adicionalmente informações de predição e residuais para blocos (como, por exemplo, CUs) de dados de vídeo.
[0108] A informação residual pode ser representada por, por exemplo, coeficientes de transformada quantizados. O decodificador de vídeo 300 pode efetuar quantização inversa e transformação inversa nos coeficientes de transformada quantizados de um bloco para reproduzir um bloco residual para o bloco. O decodificador de vídeo 300 utiliza um modo de predição sinalizado (intra ou inter-predição) e informações de predição relacionadas (como, por exemplo, informações de movimento para inter- predição) para formar um bloco de predição para o bloco. O decodificador de vídeo 300 pode então combinar o bloco de predição e o bloco residual (em uma base de amostra por amostra) para reproduzir o bloco original. O decodificador de vídeo 300 pode efetuar um processamento adicional, como efetuar um processo de desbloqueio para reduzir artefatos visuais ao longo dos limites do bloco.
[0109] Esta revelação pode geralmente se referir à “sinalização” de determinadas informações, tal como elementos de sintaxe. O termo “sinalização” pode geralmente se referir à comunicação de valores de elementos de sintaxe e/ou outros dados utilizados para decodificar dados de vídeo codificados. Isto é, o codificador de vídeo 200 pode sinalizar valores para elementos de sintaxe no fluxo de bits. Em geral, sinalização se refere à geração de um valor no fluxo de bits. Conforme observado acima, o dispositivo de origem 102 pode transportar o fluxo de bits para o dispositivo de destino 116 substancialmente em tempo real, ou em não tempo real, o que pode acontecer quando armazena elementos de sintaxe no dispositivo de armazenamento 112 para recuperação posterior pelo dispositivo de destino 116.
[0110] Conforme descrito acima, em alguns exemplos, os componentes luma e componentes croma podem ser particionados de maneiras diferentes. Por exemplo, um codificador de vídeo (como, por exemplo, codificador de vídeo 200 ou decodificador de vídeo 300) pode ser configurado para particionar amostras de um primeiro componente de cor (como, por exemplo, componente luma) de acordo com uma primeira árvore de partição e particionar amostras de um segundo componente de cor (como, por exemplo, componente croma) de acordo com uma segunda árvore de partição. O resultado da partição pode ser múltiplos blocos luma e blocos croma correspondentes. Um bloco croma e um bloco luma são blocos correspondentes se o bloco croma e o bloco luma pertencem à mesma CU. Por exemplo, conforme descrito acima, os dados de vídeo são representados no formato Y, Cb, Cr. Uma CU é um bloco da imagem e uma CU inclui um bloco luma e seus blocos croma correspondentes que juntos representam a cor na imagem para o bloco.
[0111] Em alguns exemplos, os componentes croma são sub-amostrados em relação aos componentes luma. Por exemplo, na sub-amostragem 4:2:2, as amostras 8x8 do componente luma correspondem às amostras 4x4 de cada um dos componentes do croma. Devido à sub-amostragem, cada bloco croma pode corresponder a uma pluralidade de blocos luma. Por exemplo, supõe-se que as amostras 8x8 do componente luma sejam divididas em quatro blocos luma 4x4 e as amostras 4x4 de um componente croma formam um bloco croma 4x4. Nesse exemplo, os quatro blocos luma correspondem a um bloco croma.
[0112] Para o modo de predição IBC, para reduzir a quantidade de informações que o codificador de vídeo 200 pode necessitar sinalizar ao decodificador de vídeo 300, ao invés de sinalizar informações indicativas do vetor de bloco para um bloco croma, pode ser possível ao bloco croma herdar o vetor de bloco do seu bloco luma correspondente com algum escalonamento para destinar a sub- amostragem. Em exemplos onde os componentes luma e componentes croma são particionados da mesma maneira, alguns problemas técnicos associados com a herança de vetores de bloco podem ser minimizados porque os blocos croma e os blocos luma são de tamanho e forma semelhantes (como, por exemplo, ambos são blocos quadrados de tamanho 4x4).
[0113] Contudo, em exemplos onde os componentes luma e os componentes croma são particionados de maneiras diferentes, pode haver problemas técnicos na codificação de vídeo. Por exemplo, devido aos diferentes esquemas de particionamento para componentes luma e croma, um bloco croma pode corresponder a uma pluralidade de blocos luma, onde dois ou mais blocos luma têm tamanho e formato diferentes do bloco croma. Em tais exemplos, pode não ser conhecido de qual bloco luma ou blocos luma o bloco croma deve herdar informações do vetor de bloco.
[0114] Em um ou mais exemplos, o codificador de vídeo pode ser configurado para determinar uma pluralidade de blocos do primeiro componente de cor (como, por exemplo, componente luma) que corresponde a um bloco do segundo componente de cor (como, por exemplo, bloco croma). O codificador de vídeo pode ser configurado para particionar o bloco do segundo componente de cor com base na primeira árvore de partição (como, por exemplo, com base na maneira pela qual o primeiro componente de cor é particionado) para gerar sub-blocos do bloco do segundo componente de cor. Nesse exemplo, como o bloco croma é particionado com base na primeira árvore de partição, pode haver um bloco luma correspondente para cada sub-bloco croma. Por exemplo, a pluralidade de blocos luma conjuntamente corresponde ao bloco croma. Após o particionamento do bloco croma em sub-blocos, cada um dos sub-blocos corresponde a um dentre a pluralidade de blocos luma.
[0115] O codificador de vídeo pode determinar um ou mais vetores de bloco para um ou mais sub-blocos do bloco do segundo componente de cor com base em um ou mais vetores de bloco da pluralidade de blocos do primeiro componente de cor que são preditos no modo de predição IBC. Por exemplo, da pluralidade de blocos luma, um subconjunto desses blocos luma pode ser predito no modo de predição IBC. Cada bloco luma no subconjunto corresponde a um sub- bloco do bloco croma, e os sub-blocos do bloco croma podem herdar o vetor do bloco luma a partir do subconjunto ao qual o sub-bloco corresponde.
[0116] Dessa maneira, para um bloco croma que é predito no modo IBC e onde diferentes árvores de partição são utilizadas para particionar componentes luma e croma, o codificador de vídeo 200 pode não necessitar sinalizar informações para o decodificador de vídeo 300 indicativo do vetor de bloco para o bloco croma. Ao invés disso, o codificador de vídeo 200 e o decodificador de vídeo 300 podem particionar o bloco croma em sub-blocos de maneira semelhante ao particionamento utilizado para o componente luma, de modo que haja uma correspondência de um para um entre os blocos luma e os sub-blocos do bloco croma. Em alguns exemplos, nem todos os blocos luma podem ser preditos no modo de predição IBC, e em tais exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem atribuir os vetores de bloco dos blocos luma que são preditos no modo de predição IBC a seus respectivos sub- blocos correspondentes do bloco croma, como uma maneira para os sub-blocos do bloco croma herdarem vetores de bloco a partir de blocos luma.
[0117] Além de atribuir vetores de bloco aos sub-blocos do bloco croma com base nos vetores de bloco da pluralidade de blocos luma, o codificador de vídeo 200 e o decodificador de vídeo 300 podem necessitar escalonar os vetores de bloco com base no formato de sub-amostragem. Por exemplo, se o formato de sub-amostragem 4:2:2 for utilizado, então o codificador de vídeo 200 e o decodificador de vídeo 300 podem dividir tanto os componentes x quanto y dos vetores de bloco por dois.
[0118] Nos exemplos acima, os sub-blocos croma são descritos como vetores de bloco herdados a partir dos blocos luma. Em alguns exemplos, o oposto pode ocorrer. Por exemplo, o codificador de vídeo 200 ou o decodificador de vídeo 300 pode determinar um vetor de bloco para um bloco croma e então particionar amostras de um componente luma com base na maneira pela qual as amostras do componente croma foram particionadas. O codificador de vídeo 200 e o decodificador de vídeo 300 podem então atribuir vetores de bloco aos blocos luma gerados a partir da partição. Para facilitar a descrição, as técnicas exemplares são descritas com relação aos sub-blocos croma que herdam (com escalonamento potencial) vetores de bloco a partir dos respectivos blocos luma correspondentes. Em alguns exemplos, os blocos luma correspondentes podem ser formados da mesma maneira (como, por exemplo, retângulos horizontais, retângulos verticais ou quadrados) que os sub- blocos do bloco croma.
[0119] Além de descrever técnicas para determinação de vetores de bloco para sub-blocos de um bloco croma para permitir que os sub-blocos herdem vetores de bloco, a revelação descreve técnicas relacionadas a outros problemas que podem estar presentes com o modo de predição IBC em VVC. Essas técnicas podem ser utilizadas em combinação com as técnicas para sub-blocos de um bloco croma que herdam vetores de bloco ou podem ser separadas das técnicas para sub-bloco de um bloco croma que herda vetores de bloco.
[0120] As Figuras 2A e 2B são diagramas conceituais que mostram um exemplo de estrutura de árvore binária quadtree (QTBT) 130 e uma unidade de árvore de codificação (CTU) correspondente 132. As linhas sólidas representam a divisão de quadtree e as linhas pontilhadas indicam a divisão de árvore binária. Em cada nó de divisão (isto é, não folha) da árvore binária, um sinalizador é sinalizado para indicar qual tipo de divisão (isto é, horizontal ou vertical) é utilizado, onde 0 indica divisão horizontal e 1 indica divisão vertical neste exemplo. Para a divisão de quadtree, não há necessidade de indicar o tipo de divisão, pois os nós quadtree dividem um bloco horizontalmente e verticalmente em quatro sub-blocos com tamanho igual. Por conseguinte, o codificador de vídeo 200 pode codificar e o decodificador de vídeo 300 pode decodificar elementos de sintaxe (tal como informações de divisão) para uma região de nível de árvore da estrutura
QTBT 130 (isto é, as linhas sólidas) e elementos de sintaxe (tal como informações de divisão) para um nível de árvore de predição da estrutura QTBT 130 (isto é, as linhas tracejadas). O codificador de vídeo 200 pode codificar e o decodificador de vídeo 300 pode decodificar dados de vídeo, tal como dados de predição e transformada, para CUs representadas por nós folhas terminais da estrutura QTBT
130.
[0121] Em geral, a CTU 132 da Figura 2B pode ser associada a parâmetros que definem tamanhos de blocos correspondentes aos nós da estrutura QTBT 130 nos primeiro e segundo níveis. Esses parâmetros podem incluir um tamanho de CTU (que representa um tamanho de CTU 132 em amostras), um tamanho de quadtree mínimo (MinQTSize, que representa um tamanho de nó folha de quadtree permitido mínimo), um tamanho máximo de árvore binária (MaxBTSize, que representa um tamanho de nó raiz de árvore quadtree permitido mínimo), uma profundidade de árvore binária máxima (MaxBTDepth, que representa uma profundidade de árvore binária permitida máxima) e um tamanho de árvore binária mínimo (MinBTSize, que representa o tamanho de nó folha de árvore binária permitido mínimo).
[0122] O nó raiz de uma estrutura QTBT que corresponde a uma CTU pode ter quatro nós filhos no primeiro nível da estrutura QTBT, cada um dos quais pode ser particionado de acordo com o particionamento quadtree. Isto é, os nós do primeiro nível são ou nós folha (sem nós filhos) ou têm quatro nós filhos. O exemplo de estrutura QTBT 130 representa tais nós como a inclusão do nó pai e dos nós filhos que têm linhas sólidas para ramificações. Se os nós do primeiro nível não forem maiores que o tamanho de nó raiz de árvore binária permitido máximo (MaxBTSize), eles podem ser particionados adicionalmente pelas respectivas árvores binárias. A divisão de árvore binária de um nó pode ser iterada até que os nós resultantes a partir da divisão atinjam o tamanho de nó de folha de árvore binária permitido mínimo (MinBTSize) ou a profundidade de árvore binária permitida máxima (MaxBTDepth). O exemplo de estrutura QTBT 130 representa tais nós com linhas tracejadas para ramificações. O nó folha de árvore binária é referido como uma unidade de codificação (CU), que é utilizada para predição (como, por exemplo, predição intra-imagem ou inter-imagem) e transformada, sem qualquer particionamento adicional. Conforme discutido acima, as CUs também podem ser referidas como “blocos de vídeo” ou “blocos”.
[0123] Em um exemplo da estrutura de particionamento QTBT, o tamanho da CTU é configurado como 128x128 (amostras luma e duas amostras croma 64x64 correspondentes), o MinQTSize é configurado como 16x16, o MaxBTSize é configurado como 64x64, o MinBTSize (para largura e altura) é configurado como 4, e MaxBTDepth é configurado como 4. O particionamento quadtree é aplicado primeiro à CTU para gerar nós folhas de quadtree. Os nós folhas de quadtree podem ter um tamanho de 16x16 (isto é, o MinQTSize) a 128x128 (isto é, o tamanho da CTU). Se o nó folha quadtree for de 128x128, ele não será dividido adicionalmente pela árvore binária, pois o tamanho excede o MaxBTSize (isto é, 64x64, neste exemplo). Caso contrário, o nó folha quadtree será adicionalmente particionado pela árvore binária. Portanto, o nó folha quadtree também é o nó raiz para a árvore binária e tem a profundidade da árvore binária como 0. Quando a profundidade da árvore binária atinge MaxBTDepth (4, neste exemplo), nenhuma divisão adicional é permitida. Quando o nó de árvore binária tem uma largura igual a MinBTSize (4, neste exemplo), isso implica que nenhuma outra divisão horizontal adicional é permitida. De modo semelhante, um nó de árvore binária que tem uma altura igual a MinBTSize implica que nenhuma divisão vertical adicional é permitida para esse nó de árvore binária. Conforme observado acima, os nós folhas da árvore binária são referidos como CUs e são processados adicionalmente de acordo com a predição e transformada sem particionamento adicional.
[0124] Na proposta VCEG COM16-C966: J. An, Y.- W. Chen, K. Zhang, H. Huang, Y.W. Huang e S. Lei., “Estrutura de particionamento de Blocos para codificação de vídeo de próxima geração”, União de Telecomunicação Internacional, COM16-C966, setembro de 2015, uma árvore binária quad-tree (QTBT) foi descrita para o padrão de codificação de vídeo vindouro além de HEVC. Simulações mostraram que a estrutura QTBT proposta é mais eficiente que a estrutura de quad-tree não HEVC utilizada.
[0125] Na estrutura QTBT, conforme descrito acima, uma CTB é particionada primeiramente por quad-tree, onde a divisão em quad-tree de um nó pode ser iterada até que o nó atinja o tamanho de nó folha quad-tree permitido mínimo (MinQTSize). Se o tamanho de nó folha quad-tree não for maior que o tamanho de nó raiz de árvore binária máximo permitido (MaxBTSize), ele pode ser particionado adicionalmente por uma árvore binária. A divisão de árvore binária de um nó pode ser iterada até que o nó atinja o tamanho de nó da folha da árvore binária permitido mínimo (MinBTSize) ou a profundidade de árvore binária máxima permitida (MaxBTDepth). O nó folha de árvore binária é nomeadamente a CU que será utilizada para predição (como, por exemplo, predição intra-imagem ou inter-imagem) e transformada sem qualquer particionamento adicional.
[0126] Existem dois tipos de divisão na divisão de árvore binária, divisão horizontal simétrica e divisão vertical simétrica. Em um exemplo da estrutura de particionamento QTBT, o tamanho da CTU é configurado como 128x128 (amostras luma e duas amostras croma correspondentes de 64x64), o MinQTSize é configurado como 16x16, o MaxBTSize é configurado como 64x64, o MinBTSize (para largura e altura) é configurado como 4 e MaxBTDepth é configurado como 4. O particionamento quadtree é aplicado primeiro à CTU para gerar nós folhas quad-tree.
[0127] Os nós folhas quad-tree podem ter um tamanho de 16x16 (isto é, o MinQTSize) a 128x128 (isto é, o tamanho da CTU). Se o nó folha quad-tree for de 128x128, ele não será dividido adicionalmente pela árvore binária, pois o tamanho excede o MaxBTSize (isto é, 64x64). Caso contrário, o nó folha quad-tree será particionado adicionalmente pela árvore binária. Portanto, o nó folha quad-tree também é o nó raiz para árvore binária e tem profundidade de árvore binária como 0. Quando a profundidade da árvore binária atinge MaxBTDepth (isto é, 4), isso implica que não há divisão adicional. Quando o nó de árvore binária tem largura igual a MinBTSize (isto é,
4), isso implica que não há divisão horizontal adicional. De modo semelhante, quando o nó de árvore binária tem altura igual a MinBTSize, isso não implica nenhuma divisão vertical adicional. Os nós folhas de árvore binária são nomeadamente as CUs adicionalmente processadas por predição e transformada sem qualquer particionamento adicional.
[0128] A Figura 2B mostra um exemplo de particionamento de blocos que utiliza QTBT, e a Figura 2A mostra a estrutura de árvore correspondente. As linhas sólidas indicam a divisão em quad-tree e as linhas pontilhadas indicam a divisão em árvore binária. Em cada nó de divisão (isto é, não folha) da árvore binária, um sinalizador é sinalizado para indicar qual tipo de divisão (isto é, horizontal ou vertical) é utilizado, onde 0 indica divisão horizontal e 1 indica divisão vertical. Para a divisão em quad-tree, não há necessidade de indicar o tipo de divisão, pois ele sempre divide um bloco horizontalmente e verticalmente em 4 sub-blocos com um tamanho igual.
[0129] Além disso, a estrutura de blocos QTBT suporta os recursos que luma e croma têm da estrutura QTBT separada. Atualmente, para fatias P e B, as CTUs luma e croma em uma CTU compartilham a mesma estrutura QTBT. Para fatia, a CTU luma é particionada em CUs por uma estrutura QTBT (como, por exemplo, primeira árvore de partição) e a CTU croma é particionada em CUs croma por outra estrutura de QTBT (como, por exemplo, segunda árvore de partição diferente). Isso significa que uma CU em uma fatia I inclui um bloco de codificação do componente luma ou blocos de codificação de dois componentes croma e uma CU na fatia P e B de uma CU inclui blocos de codificação de todos os três componentes de cor.
[0130] A seguir, são descritos os candidatos de vetores de movimento de sub-bloco, conforme mostrado na Figura 8. No JEM com QTBT, cada CU pode ter no muito um conjunto de parâmetros de movimento 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 considerados no codificador de vídeo 200 pela divisão de uma CU grande em sub-CUs e pela derivação de informações de movimento para todas as sub-CUs da CU grande. O método de predição de vetor de movimento temporal (ATMVP) alternativo permite que cada CU busque múltiplos conjuntos de informações de movimento a partir de múltiplos blocos menores da CU atual na imagem de referência colocada. No método de predição de vetores de movimento espaço-temporal (STMVP), os vetores de movimento das sub-CUs são derivados recursivamente utilizando-se o preditor de vetor de movimento temporal e o 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 é desativada atualmente.
[0131] Por exemplo, na Figura 8, o bloco 400 refere-se ao bloco para o qual a ATMVP deve ser efetuada e é mostrado como sendo dividido em sub-PUs NxN. O bloco 400 está co-localizado com o bloco 401 em uma imagem de origem de movimento. O bloco 401 é dividido em blocos correspondentes para os blocos divididos do bloco 400. O bloco 401 inclui os blocos divididos 402A-402D. O bloco 402D pode ser um bloco central representativo na ATMVP. Cada um dos blocos 402A a 402D pode incluir um vetor de movimento (como, por exemplo, MV0 que é um vetor de movimento que aponta para um bloco de uma imagem em uma primeira lista de imagens de referência, ou MV1 que é um vetor de movimento que aponta para um bloco de uma segunda lista de imagens de referência) ou dois vetores de movimento (como, por exemplo, MV0 e MV1). Na Figura 8, os vetores de movimento 404A, 404B e 404C são todos vetores de movimento que apontam para blocos em figuras em uma primeira lista de imagens de referência (como, por exemplo, são todos MV0s) e os vetores de movimento 406A, 406B e 406C são todos vetores de movimento que apontam para blocos em imagens em uma segunda lista de imagens de referência (como, por exemplo, são todos MV1s).
[0132] Para a resolução de vetor de movimento adaptativa, a compensação de movimento de sub-pixel é normalmente muito mais eficiente que a compensação de movimento de pixel de número inteiro. Contudo, para alguns conteúdos, tal como textura com frequência muito elevada ou conteúdo da tela, a compensação de movimento de sub-pixel não mostra desempenho melhor ou pior. Nesses casos, é melhor ter apenas MVs com precisão de pixels de número inteiro. Na Publicação de Patente dos E.U.A. N.º 2015/0195562, é proposto que as informações de precisão MV (ou pel de número inteiro ou ¼ pel) sejam sinalizadas para um bloco. No Pedido dos E.U.A. N.º de Série 15/724.044, depositado a 3 de outubro de 2017 (publicado como Publicação de Patente dos E.U.A. N.º 2018/0098089), é proposto se permitir mais precisão de MV, tais como 4-pel ou 8-pel.
[0133] Para derivação de vetor de movimento do lado do decodificador (DMVD) em JEM, no software de referência JEM, existem várias ferramentas de codificação que derivam ou refinam o vetor de movimento (MV) para um bloco atual no lado do decodificador (no decodificador de vídeo 300). Essas abordagens de derivação MV do lado do decodificador (DMVD) são descritas adicionalmente em mais detalhes abaixo.
[0134] O modo de derivação de vetor de movimento combinado padrão (PMMVD) é um modo de mistura 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 derivadas no lado do decodificador. Essa tecnologia foi incluída no JEM.
[0135] No modo PMMVD, um sinalizador FRUC é sinalizado para uma CU quando seu sinalizador de mistura for verdadeiro. Quando o sinalizador FRUC é falso, um índice de mistura é sinalizado e o modo de mistura regular é utilizado. Quando o sinalizador FRUC é verdadeiro, um sinalizador de modo FRUC adicional é sinalizado para indicar qual método (correspondência bilateral ou correspondência de modelo) deve ser utilizado para derivar informações de movimento para o bloco.
[0136] Durante o processo de derivação de movimento, um vetor de movimento inicial é primeiro derivado para toda a CU com base na correspondência bilateral ou na correspondência de modelo. Primeiro, a lista de mistura da CU, ou chamada de PMMVD gerada, é verificada e o candidato que leva ao custo de correspondência mínimo é selecionado como o ponto de partida. Então, uma busca local com base na correspondência bilateral ou na correspondência de modelos em torno do ponto de partida é efetuada e os resultados de MV no custo de correspondência mínimo são tomados como MV para toda a CU. Subsequentemente, as informações de movimento são refinadas adicionalmente em um nível de sub-bloco, com os vetores de movimento CU derivados como pontos de partida.
[0137] Conforme mostrado na Figura 9, a correspondência bilateral é utilizada para derivar informações de movimento do bloco atual, encontrando a melhor correspondência entre dois blocos de referência ao longo da trajetória de movimento do bloco atual em duas imagens de referência diferentes. Sob a suposição de trajetória de movimento contínua, os vetores de movimento MV0 506 e MV1 508 para o bloco atual na imagem atual 500 que aponta para os dois blocos de referência (como, por exemplo, MV0 aponta para o bloco de referência R0 502 e MV1 508 aponta para o bloco de referência R1 504) pode ser proporcional às distâncias temporais 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 para as duas imagens de referência é a mesma, a correspondência bilateral se torna MV bidirecional com base em espelhamento.
[0138] Conforme mostrado na Figura 10, a correspondência de modelo é utilizada para derivar informações de movimento do bloco atual pelo encontro da melhor correspondência entre um modelo (blocos vizinhos superiores e/ou esquerdos do bloco atual) na imagem atual e um bloco (de mesmo tamanho ao modelo) em uma imagem de referência.
[0139] No lado do codificador (como, por exemplo, o codificador de vídeo 200), a decisão sobre a utilização do modo de mistura FRUC para uma CU é baseada na seleção de custo RD (distorção de taxa), conforme feito para um candidato de mistura normal. Isto é, os dois modos de correspondência (correspondência bilateral e correspondência de modelo) são ambos verificados para uma CU utilizando-se a seleção de custo RD. O que leva ao custo mínimo é comparado adicionalmente com outros modos de CU. Se um modo de correspondência FRUC é o mais eficiente, um sinalizador FRUC é configurado como verdadeiro para a CU e o modo de correspondência relacionado é utilizado.
[0140] No quinto encontro do JVET, o JVET- E0035 descreveu adicionalmente técnicas para correspondência de modelos FRUC. Um fluxograma do modo de correspondência de modelo FRUC existente é mostrado na Figura 11A. Na primeira etapa, um modelo T0 (e suas informações de movimento correspondentes MV0) é encontrado para se corresponder ao modelo atual Tc do bloco atual a partir das imagens de referência da list0. Na segunda etapa, o modelo T1 (e suas informações de movimento correspondentes MV1) é encontrado a partir de imagens de referência da list1. As informações de movimento obtidas MV0 e MV1 são utilizadas para efetuar bi-predição para gerar um preditor do bloco atual.
[0141] O modo de correspondência de modelo FRUC existente pode ser aperfeiçoado pela introdução de correspondência de modelo bidirecional e seleção adaptativa entre uni-predição e bi-predição. As modificações são destacadas com itálico e sublinhado na Figura 11B em comparação com a Figura 11A.
[0142] A correspondência de modelo bidirecional é implementada com base na correspondência de modelo unidirecional existente. Conforme mostrado na Figura 11B, um modelo correspondido T0 é encontrado pela primeira vez na primeira etapa do modelo correspondente a partir das imagens de referência da list0 (observe-se que a list0 aqui é tomada apenas como um exemplo). De fato, se list0 ou list1 é utilizada na primeira etapa, é adaptativa ao custo de distorção inicial entre o modelo atual e o modelo inicial na imagem de referência correspondente. O modelo inicial pode ser determinado com informações de movimento iniciais do bloco atual que estão disponíveis antes da efetuação do primeiro modelo correspondente. A lista de imagens de referência correspondente ao custo de distorção de modelo inicial mínimo será utilizada na primeira etapa da correspondência de modelo. Por exemplo, se o custo de distorção de modelo inicial correspondente à list0 não for maior que o custo correspondente à list1, a list0 será utilizada na primeira etapa de correspondência de modelo e a list1 será utilizada na segunda etapa, então o modelo atual TC do bloco atual é atualizado conforme o seguinte: T’C = 2*TC – T0.
[0143] O modelo atual atualizado T’C, ao invés do modelo atual TC, é utilizado para encontrar outro modelo correspondente T1 a partir das imagens de referência da list1 no segundo modelo correspondente. Como resultado, o modelo correspondente T1 é fundado pela utilização conjunta de imagens de referência da list0 e list1. Esse processo de correspondência é chamado de correspondência de modelo bidirecional.
[0144] A seleção proposta entre uni-predição e bi-predição para predição de compensação de movimento (MCP) é baseada na distorção de correspondência de modelo. Conforme mostrado na Figura 11B, durante a correspondência de modelo, a distorção entre o modelo T0 e TC (o modelo atual) pode ser calculada como cost0, e a distorção entre o modelo T1 e T’C (o modelo atual atualizado) pode ser calculada como cost1. Se cost0 for menor que 0.5*cost1, a uni-predição com base em MV0 será aplicada ao modo de correspondência de modelo FRUC; caso contrário, a bi- predição com base em MV0 e MV1 é aplicada. Observe-se que cost0 é comparado a 0.5*cost1, pois cost1 indica uma diferença entre o modelo T1 e T’C (o modelo atual atualizado), que é 2 vezes a diferença entre TC (o modelo atual) e sua predição de 0.5*(T0 + T1). Note-se que os métodos propostos podem ser aplicados apenas ao refinamento de movimento no nível de PU. O refinamento de movimento no nível de sub-PU mantém-se inalterado.
[0145] A seguir, é descrita a correspondência de modelo bilateral. Um modelo bilateral é gerado como a combinação ponderada dos dois blocos de predição, a partir de MV0 inicial da list0 e MV1 da list1, respectivamente, conforme mostrado na Figura 12. A operação de correspondência de modelo inclui o cálculo de medidas de custo entre o modelo gerado e a região de amostra (em torno do bloco de predição inicial) na imagem de referência. Para cada uma das duas imagens de referência, o MV que gera o custo de modelo mínimo é considerado como o MV atualizado dessa lista para substituir o original. Finalmente, os dois novos MVs, isto é, MV0’ e MV1’, conforme mostrado na Figura 12, são utilizados para bi-predição regular. Como é comumente utilizado na estimação de movimento de correspondência de blocos, a soma das diferenças absolutas (SAD) é utilizada como medida de custo. A derivação proposta de vetor de movimento do lado do decodificador (DMVD) é aplicada para o modo de mistura de bi-predição com um da imagem de referência no passado e o outro da imagem de referência no futuro, sem a transmissão de um elemento de sintaxe adicional. No JEM4.0, quando o candidato de mistura LIC, afim, ATMVP ou STMVP ou FRUC é selecionado para uma CU, o DMVD não é aplicado.
[0146] A seguir, é descrito o fluxo ótico bidirecional no JEM. O fluxo ótico bidirecional (BIO) é um refinamento de movimento no sentido de pixel, que é efetuado sobre a compensação de movimento no sentido de bloco em um caso de bi-predição. Uma vez compensado, o movimento fino pode ser interno ao bloco, permitindo que o BIO resulte em ampliação de tamanho do bloco para compensação de movimento. O refinamento de movimento no nível da amostra não exige busca ou sinalização exaustivas, pois existe uma equação explícita que determina um vetor de movimento fino para cada amostra. Para facilitar a explicação, o exemplo é descrito com relação à Figura 13.
[0147] Seja I(k) o valor da luminância a partir da referência k(k = 0, 1) após o movimento do bloco de compensação e são componentes horizontais e verticais do gradiente I(k), respectivamente. Presumindo-se que o fluxo ótico é válido, o campo do vetor de movimento (vx, vx), mostrado na Figura 13, é dado pela equação . (1)
[0148] Combinando-se a equação de fluxo ótico com a interpolação Hermite para a trajetória de movimento de cada amostra, obtém-se um polinômio único de terceira ordem que corresponde tanto a valores de função I(k) quanto derivativos nas extremidades. O valor desse polinômio em t=0 é a predição de BIO (2)
[0149] Aqui τ0 (T0 na Figura 13) e τ1 (T1 na Figura 13) denotam a distância dos quadros de referência, conforme mostrado na Figura 13. As distâncias τ0 e τ1 são calculadas com base no valor da contagem de ordem de imagens (POC) para Ref0 e Ref1: τ0 = POC (atual) - POC (Ref0), τ1 = POC (Ref1) - POC (atual). Se ambas as predições vierem a partir da mesma direção de tempo (ambas a partir do passado ou ambas a partir do futuro), os sinais serão diferentes τ0·τ1 <0. Nesse caso, BIO será aplicado apenas se a predição não vier a partir do mesmo momento (τ0 ≠ τ1), ambas as regiões referenciadas têm movimento de não zero (MVx0, MVy0, MVx1, MVy1 ≠ 0) e os vetores de movimento de bloco são proporcionais à distância de tempo (MVx0/MVx1 = MVy0/MVy1 = - τ0/τ1).
[0150] O campo do vetor de movimento (vx, vx) é determinado minimizando-se a diferença Δ entre os valores nos pontos A e B (interseção de trajetória de movimento e planos de quadro de referência na Figura 13). O modelo utiliza apenas o primeiro termo linear da expansão local de Taylor para Δ: (3)
[0151] Todos os valores em (1) dependem da localização de amostra (i’, j’), que foi omitida até o momento. Supondo-se que o movimento seja consistente no ambiente local, minimiza-se Δ dentro da janela quadrada (2M + 1) x (2M + 1) Ω centralizada no ponto predito atual (i, j):
[0152] Para esse problema de otimização, utiliza-se uma solução simplificada, minimizando-se primeiro na vertical e depois na horizontal. Isso resulta em:
[0153] (5)
[0154] (6)
[0155] onde,
[0156]
[0157] De modo a evitar a divisão por valores zero ou muito pequenos, os parâmetros de regularização r e m são introduzidos nas equações (2), (3).
[0158] r = 500·4d - 8 (8)
[0159] m = 700·4d - 8 (9)
[0160] Aqui d é a profundidade de bits interna do vídeo de entrada.
[0161] Em alguns casos, o regimento MV de BIO pode não ser confiável devido a ruído ou movimento irregular. Portanto, em BIO, a magnitude do regimento MV é recortada para um determinado limite thBIO. O valor de limite é determinado com base em se todas as imagens de referência da imagem atual forem todas de uma só direção. Se todas as imagens de referência das imagens atuais da imagem atual forem de uma só direção, o valor do limite será configurado como 12 x 214-d, caso contrário, será definido como 12 x 213-d.
[0162] Os gradientes para BIO são calculados ao mesmo tempo com interpolação de compensação de movimento utilizando-se operações consistentes com o processo de compensação de movimento HEVC (FIR separável em 2D). A entrada para este FIR separável em 2D é a mesma amostra de quadro de referência que para o processo de compensação de movimento e posição fracionária (fracX, fracY) de acordo com a parte fracionária do vetor de movimento do bloco. No caso do primeiro sinal de gradiente horizontal interpolado verticalmente utilizando-se o BIOfilterS corresponder à posição fracionária fracY com deslocamento de desescalonamento d-8, é aplicado o filtro gradiente BIOfilterG na direção horizontal que corresponde à posição fracionária fracX com deslocamento de desescalonamento de 18-d. No caso do primeiro filtro gradiente de gradiente vertical aplicado verticalmente utilizando-se o BIOfilterG corresponder à posição fracionária fracY de deslocamento de desescalonamento d-8, é efetuada a substituição de sinal utilizando-se o BIOfilterS na direção horizontal correspondente à posição fracionária fracX com deslocamento de desescalonamento de 18-d. O comprimento do filtro de interpolação para o cálculo de gradientes BIOfilterG e o substituição do sinal BIOfilterF é mais curto (6 toques), de modo a manter uma complexidade razoável. A Tabela 1 mostra os filtros utilizados para o cálculo de gradientes para posições fracionárias diferentes do vetor de movimento do bloco em BIO. A Tabela 2 mostra os filtros de interpolação utilizados para geração de sinal de predição em BIO.
[0163] A Figura 14 mostra um exemplo do cálculo de gradiente para um bloco 8x4. Para um bloco 8x4, um codificador (como, por exemplo, o codificador de vídeo 200 ou o decodificador de vídeo 300) necessita buscar os preditores de compensação de movimento e calcular os gradientes HOR/VER de todos os pixels dentro do bloco atual, bem como as duas linhas externas de pixels, porque a resolução vx e vy para cada pixel necessita dos valores de gradiente HOR/VER e dos preditores compensados de movimento dos pixels dentro da janela Ω centrada em cada pixel, conforme mostrado na equação (4). Em JEM, o tamanho desta janela é configurado como 5x5. O codificador, portanto, necessita buscar os preditores compensados de movimento e calcular os gradientes para as duas linhas externas de pixels.
Tabela 1: Filtros para cálculo de gradiente em BIO Posição de pel Filtro de interpolação para gradiente fracionário (BIOfilterG) 0 { 8, -39, -3, 46, -17, 5} 1/16 { 8, -32, -13, 50, -18, 5} 1/8 { 7, -27, -20, 54, -19, 5} 3/16 { 6, -21, -29, 57, -18, 5} ¼ { 4, -17, -36, 60, -15, 4} 5/16 { 3, -9, -44, 61, -15, 4} 3/8 { 1, -4, -48, 61, -13, 3} 7/16 { 0, 1, -54, 60, -9, 2} 1/2 { 1, 4, -57, 57, -4, 1} Tabela 2: Filtros de interpolação para geração de sinal de predição em BIO Posição de pel Filtro de interpolação para sinal de fracionário predição (BIOfilterS) 0 { 0, 0, 64, 0, 0, 0} 1/16 { 1, -3, 64, 4, -2, 0} 1/8 { 1, -6, 62, 9, -3, 1} 3/16 { 2, -8, 60, 14, -5, 1} ¼ { 2, -9, 57, 19, -7, 2} 5/16 { 3, -10, 53, 24, -8, 2} 3/8 { 3, -11, 50, 29, -9, 2} 7/16 { 3, -11, 44, 35, -10, 3} 1/2 { 1, -7, 38, 38, -7, 1}
[0164] Em JEM, BIO é aplicado a todos os blocos preditos bidirecionais quando as duas predições são a partir de imagens de referência diferentes. Quando LIC (compensação de iluminação local) está ativada para uma CU, BIO fica desativado.
[0165] Em seguida, é descrita a compensação de movimento de blocos sobrepostos (OBMC) em JEM. A Compensação de Movimento de Blocos Sobrepostos (OBMC) foi utilizada pelas primeiras gerações de padrões de vídeo, por exemplo, como em H.263. Em JEM, a OBMC é efetuada para todos os limites de bloco Compensados por Movimento (MC), exceto os limites direito e inferior de uma CU. Além do mais, a OBMC é aplicada tanto aos componentes luma quanto croma. Em JEM, um bloco MC é correspondente a um bloco de codificação. Quando uma CU é codificada com o modo sub-CU (que inclui mistura de sub-CU, modo Afim e FRUC, descrito acima), cada sub-bloco da CU é um bloco MC. Para processar os limites da CU de modo uniforme, a OBMC é efetuada no nível de sub-bloco para todos os limites de bloco MC, onde o tamanho de sub-bloco é configurado igual a 4x4, conforme mostrado nas Figuras 15A e 15B.
[0166] Quando a OBMC se aplica ao sub-bloco atual, além dos vetores de movimento atuais, os vetores de movimento de quatro sub-blocos vizinhos conectados, se disponíveis e não idênticos ao vetor de movimento atual, também são utilizados para derivar o bloco de predição para o sub-bloco atual. Esses múltiplos blocos de predição com base em múltiplos vetores de movimento são combinados para gerar o sinal de predição final do sub-bloco atual.
[0167] Conforme mostrado nas Figuras 16A-16D, um bloco de predição com base em vetores de movimento de um sub-bloco vizinho é denotado como PN, com N indicando um índice para os sub-blocos vizinhos acima, abaixo, esquerdo e direito um bloco de predição com base em vetores de movimento do sub-bloco atual é indicado como PC. Quando PN é baseado nas informações de movimento de um sub-bloco vizinho que contém as mesmas informações de movimento do sub-bloco atual, a OBMC não é efetuada a partir de PN. Caso contrário, cada pixel de PN é adicionado ao mesmo pixel em PC, isto é, quatro linhas/colunas de PN são adicionadas a
PC. Os fatores de ponderação {1/4, 1/8, 1/16, 1/32} são utilizados para PN e os fatores de ponderação {3/4, 7/8, 15/16, 31/32} são utilizados para PC. As exceções são pequenos blocos MC, (isto é, quando a altura ou largura do bloco de codificação é igual a 4 ou uma CU é codificada com o modo sub-CU), para a qual apenas duas linhas/colunas de PN são adicionadas ao PC. Nesse caso, os fatores de ponderação {1/4, 1/8} são utilizados para PN e os fatores de ponderação {3/4, 7/8} são utilizados para PC. Para o PN gerado verticalmente (horizontalmente) com base em vetores de movimento de sub-bloco vizinho, os pixels na mesma linha (coluna) de PN são adicionados ao PC com o mesmo fator de ponderação. Note-se que BIO também é aplicado para a derivação do bloco de predição PN.
[0168] No JEM, para uma CU com tamanho menor que ou igual a 256 amostras luma, um sinalizador de nível de CU é sinalizado para indicar se a OBMC é aplicada ou não para a CU atual. Para as CUs com tamanho maior que 256 amostras luma ou não codificadas no modo AMVP, a OBMC é aplicada por predefinição. No codificador de vídeo 200, quando a OBMC é aplicada a uma CU, seu impacto é levado em consideração durante o estágio de estimação de movimento. O sinal de predição que utiliza informações de movimento do bloco vizinho superior e do bloco vizinho esquerdo é utilizado para compensar os limites superior e esquerdo do sinal original da CU atual e, em seguida, o processo normal de estimação de movimento é aplicado.
[0169] Pode haver alguns problemas técnicos com todas as novas ferramentas de codificação no JEM, tal como quando utilizadas com IBC. Abordar esses problemas técnicos com soluções técnicas que são feitas para operação IBC pode resultar em melhor codificação e decodificação de vídeo, tal como onde a operação do codificador de vídeo 200 e do decodificador de vídeo 300 pode ser melhor. Como um exemplo, a IBC em SCC HEVC 5CC utilizada para um bloco luma e dois blocos croma correspondentes, juntamente com o mesmo vetor de movimento (com escalonamento potencial para componentes croma). Como indicar/sinalizar os vetores de movimento para a IBC sob as árvores de partição desacoplada são um problema técnico relacionado à codificação de vídeo, e especificamente à codificação de vídeo IBC. Como outro exemplo, várias novas ferramentas relacionadas a movimento foram estudadas. Como combiná-las com a IBC é um problema técnico relacionado à codificação de vídeo, e especificamente à codificação de vídeo IBC.
[0170] A seguir, são descritos exemplos de soluções técnicas para os problemas técnicos. Essas soluções podem ser utilizadas juntas, separadamente ou em qualquer combinação delas.
[0171] Quando a árvore de partição é desacoplada para diferentes componentes de cores, a sinalização do modo IBC e/ou vetores de movimento da IBC para um bloco podem ser aplicados apenas a um componente de cor (como, por exemplo, componente luma). Alternativamente, além disso, o bloco de um componente (como, por exemplo, Cb ou Cr) que é codificado após um componente pré-codificado (como, por exemplo, Luma) sempre herda a utilização do modo IBC de um bloco correspondente desse componente pré- codificado.
[0172] Em um exemplo, pode ser utilizado o sinalizador ou índice do modo DM (derivado), conforme descrito no Pedido de Patente dos E.U.A. N.º 15/676.314 (Publicação de Patente dos E.U.A. N.º 2018/0048889) e N.º 15/676.345 (Publicação de Patente dos E.U.A. N.º 2018- 0063553). Se o bloco luma correspondente identificado pelo sinalizador ou índice DM for codificado com a IBC, o bloco croma atual será definido para ser codificado com a IBC. Em um exemplo, o bloco “correspondente” refere-se a qualquer mapeamento predefinido. Por exemplo, o bloco correspondente é o bloco 4x4 no centro do bloco atual, tal como C3 na Figura 17A. Alternativamente, blocos localizados em outras posições (como, por exemplo, C0, Cl, C2, BR, BL, TL, TR), conforme mostrado na Figura 17A, podem ser utilizados.
[0173] Quando o modo IBC herdado é ativado para um bloco, as informações de movimento do bloco inteiro atual podem ser herdadas ou derivadas a partir de um bloco correspondente da região do componente pré-codificado correspondente (tal como o componente luma) ou derivadas de vetores de movimento predefinidos.
[0174] Quando o modo IBC herdado é ativado para um bloco, as informações de movimento dos sub-blocos dentro do bloco inteiro atual podem ser herdadas ou derivadas a partir de múltiplos blocos correspondentes dentro da região do componente pré-codificado ou derivados a partir de vetores de movimento predefinidos. Por exemplo, conforme descrito em mais detalhes abaixo, presume-se que o componente pré-codificado seja o componente luma, o bloco Cb indicado como o bloco sombreado 706 na Figura 17B pode herdar informações de movimento e modo a partir das partições luma correspondentes. Se o bloco luma correspondente (como, por exemplo, a partição que cobre TL e a partição que cobre C2) é codificado com a IBC, os vetores de movimento associados podem ser adicionalmente escalonados em conformidade. Um exemplo é representado nas Figuras 18A e 18B.
[0175] Por exemplo, a Figura 17A mostra amostras luma 700, de um componente luma, que são particionadas de acordo com uma estrutura QTBT luma, que é semelhante à árvore de partição mostrada na Figura 2A. Por exemplo, o particionamento de amostras luma 700 na Figura 17A é o mesmo que o particionamento mostrado na Figura 2B. O particionamento de amostras luma 700 com base em uma primeira árvore de partição gera a partição luma 701 (mostrada na caixa em negrito) que inclui uma pluralidade de blocos, inclusive o bloco luma 704A e o bloco luma 704B como dois exemplos. O bloco luma 704A pode ser predito no modo de predição IBC e tem um vetor de bloco de <-8, -6>, e o bloco luma 704B pode ser predito no modo de predição IBC e possui um vetor de bloco de <-12, -4>.
[0176] A Figura 17B mostra amostras croma 702A de um componente croma que são particionadas de acordo com uma estrutura QTBT croma. As amostras croma 702A e as amostras luma 700 correspondem uma com a outra e são parte da mesma CU. No exemplo mostrado, as amostras croma 702A são particionadas com base em uma segunda árvore de partição que é diferente da primeira árvore de partição utilizada para particionar amostras luma 700. O particionamento de amostras croma 702A de acordo com a segunda árvore de partição resulta no bloco croma 706.
[0177] No exemplo das Figuras 17A e 17B, o bloco croma 706 corresponde à partição luma 701. Contudo, a partição luma 701 inclui dois blocos preditos utilizando o modo de predição IBC: o bloco 704A e o bloco 704B. Portanto, pode não estar claro qual vetor de bloco (como, por exemplo, o vetor de bloco do bloco 704A ou o vetor de bloco do bloco 704B) o bloco croma 706 deve herdar.
[0178] A Figura 18A é uma reprodução da Figura 17A. De acordo com as técnicas descritas nesta revelação e conforme mostrado na Figura 18B, o codificador de vídeo 200 e o decodificador de vídeo 300 podem particionar o bloco croma 706 com base na árvore de partição utilizada para as amostras luma 700, conforme mostrado com as amostras croma 702B de um componente croma. Por exemplo, o bloco croma 706 da Figura 17B é a partição croma 710 na Figura 18B, onde a partição croma 710 é particionada da mesma maneira que a partição luma 701.
[0179] O codificador de vídeo 200 e o decodificador de vídeo 300 podem particionar o bloco croma 706 para gerar os sub-blocos 708A e 708B. No exemplo mostrado na Figura 18B, o sub-bloco 708A corresponde ao bloco luma 704A e o sub-bloco 708B corresponde ao bloco luma 704B. Por exemplo, o sub-bloco croma 708A tem o mesmo formato que o bloco luma 704A e o sub-bloco croma 708A está na mesma posição relativa dentro da partição croma 710 na qual o bloco luma 704A está dentro da partição luma 701. Nesse caso, existe uma correspondência de um-para-um entre o sub-bloco croma 708A e o bloco luma 704A. Além disso, o sub-bloco croma 708B tem a mesma forma do bloco luma 704B e o sub-bloco croma 708B está na mesma posição relativa dentro da partição croma 710 na qual o bloco luma 704B está dentro da partição luma 701. Nesse caso, existe uma correspondência de um-para-um entre o sub-bloco croma 708B e o bloco luma 704B.
[0180] Em um ou mais exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem atribuir o sub-bloco croma 708A ao vetor de bloco do bloco luma 704A (como, por exemplo, o sub-bloco 708A herda o vetor de bloco do bloco luma 704A). O codificador de vídeo 200 e o decodificador de vídeo 300 podem atribuir ao sub-bloco 708B o vetor de bloco do bloco luma 708A (como, por exemplo, o sub-bloco 708B herda o vetor de bloco do bloco luma 704B). Além disso, o codificador de vídeo 200 e o decodificador de vídeo 300 podem efetuar o escalonamento dos vetores de bloco. Por exemplo, o vetor de bloco para o bloco luma 704A é <-8, -6> e o vetor de bloco para o bloco luma 704B é <- 12, -4>. Nesse exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem dividir o componente x e o componente y por dois porque as amostras luma 700 são 4x o tamanho das amostras croma 702A ou 702B (como, por exemplo, o formato de sub-amostragem 4:2:2). Conforme mostrado, o vetor de bloco do sub-bloco croma 708A é <-4, -3>, onde -4 é -8 dividido por 2 e -3 é -6 dividido por 2. O vetor de bloco do sub-bloco 708B é <-6, -2>, onde -6 é -12 dividido por e -2 é -4 dividido por 2.
[0181] Dessa maneira, um codificador de vídeo (como, por exemplo, codificador de vídeo 200 ou decodificador de vídeo 300) pode ser configurado para particionar amostras de um primeiro componente de cor (como, por exemplo, amostras luma 700 de um componente luma) de acordo com uma primeira árvore de partição (como,
por exemplo, estrutura QTBT luma, conforme mostrado nas figuras 17A e 18A), e particionar amostras de um segundo componente de cor (como, por exemplo, o componente croma) de acordo com uma segunda árvore de partição (como, por exemplo, a estrutura QTBT croma, conforme mostrado na figura 17B). A segunda árvore de partição é diferente da primeira e o segundo componente de cor é diferente do primeiro.
[0182] O codificador de vídeo pode determinar uma pluralidade de blocos do primeiro componente de cor que corresponde a um bloco do segundo componente de cor (como, por exemplo, os blocos da partição 701 correspondem ao bloco croma 706). A pluralidade de blocos do primeiro componente de cor é gerada a partir do particionamento de amostras do primeiro componente de cor de acordo com a primeira árvore de partição (como, por exemplo, as amostras luma 700 de um componente luma são particionadas para gerar a partição luma 701 que inclui a pluralidade de blocos) e o bloco do segundo componente de cor (como, por exemplo, bloco 706) é gerado a partir do particionamento de amostras do segundo componente de cor de acordo com a segunda árvore de partição.
[0183] Em um ou mais exemplos descritos nesta revelação, o codificador de vídeo pode particionar o bloco do segundo componente de cor com base na primeira árvore de partição para gerar sub-blocos do segundo componente de cor em que cada um corresponde a um bloco da pluralidade de blocos do primeiro componente de cor. Por exemplo, conforme mostrado na Figura 18B, a partição croma 710, que corresponde ao bloco croma 706, é particionada com base no
QTBT luma para gerar sub-blocos croma 708A e 708B. Os sub- blocos croma 708A e 708B correspondem, cada um, aos blocos luma 704A e 704B.
[0184] O codificador de vídeo pode determinar um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor que são preditos no modo de predição de cópia intra-bloco (IBC) com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor. Por exemplo, os sub-blocos croma 708A e 708B são preditos no modo de predição IBC, e o codificador de vídeo pode determinar os vetores de bloco para os sub-blocos croma 708A e 708B com base nos vetores de bloco dos blocos luma 704A e 704B.
[0185] O codificador de vídeo pode codificar o bloco do segundo componente de cor com base em um ou mais vetores de bloco determinados. Por exemplo, onde a codificação está codificando, para o sub-bloco croma 708A, o codificador de vídeo 200 pode determinar um bloco de predição com base no vetor de bloco do sub-bloco 708A, subtrair o bloco de predição a partir do sub-bloco 708A para gerar um bloco residual e informações de sinal indicativas do bloco residual. Onde a codificação está decodificando, para o sub-bloco croma 708A, o decodificador de vídeo 300 pode determinar um bloco de predição com base no vetor de bloco do sub-bloco 708A, determinar um bloco residual (como, por exemplo, com base em informações sinalizadas) para o sub-bloco 708A, e adicionar o bloco residual ao bloco de predição para reconstruir o sub-bloco 708 do bloco croma 706.
[0186] Alternativamente, para alguns sub- blocos (conjunto 0), as informações de movimento podem ser herdadas, enquanto para outros sub-blocos (conjunto 1), as informações de movimento podem ser derivadas a partir do conjunto 0 ou derivadas a partir de vetores de movimento predefinidos. Em um exemplo, além disso, um índice de modo para indicar a utilização do modo IBC herdado para cada um ou todos os componentes de cores restantes é sinalizado. Para cada componente de cor, ou para componentes luma e croma, respectivamente, um sinalizador pode ser sinalizado em SPS/VPS/PPS/Cabeçalho de fatia/Cabeçalho de telha para indicar se a IBC pode ser ativada ou desativada.
[0187] A seguir, são descritas as interações de cópia intra-bloco com a OBMC. Em um exemplo, a OBMC pode estar sempre desativada. Portanto, não há necessidade de sinalizar um sinalizador OBMC quando o bloco é codificado com IBC. Alternativamente, o sinalizador OBMC pode ser sinalizado antes da indicação do modo IBC (como, por exemplo, índice de referência que aponta para a imagem atual; ou um índice de modo que representa o modo IBC); nesse caso, a sinalização da indicação IBC é ignorada.
[0188] Em um exemplo, a OBMC também pode ser ativada, mas com a restrição do bloco vizinho a ser codificado no mesmo modo de codificação. Por exemplo, se um bloco atual é codificado com o modo IBC e existe um dos blocos vizinhos do bloco atual, mas o bloco vizinho não é codificado com o modo IBC, esse bloco vizinho é configurado como indisponível. Isto é, os parâmetros de movimento não são utilizados no processo OBMC para o bloco atual. Por exemplo, se o bloco atual estiver codificado com o modo não-IBC e um dos blocos vizinhos for existente, mas codificado com o modo IBC, esse bloco vizinho será configurado como indisponível. Isto é, os parâmetros de movimento não são utilizados no processo OBMC para o bloco atual.
[0189] Em um exemplo, a OBMC também pode ser ativada e todas as informações de movimento dos blocos vizinhos existentes podem ser utilizadas independentemente do modo codificado dos blocos vizinhos. Alternativamente, além disso, os fatores de ponderação podem depender adicionalmente do modo codificado do bloco atual. Alternativamente, além disso, os fatores de ponderação podem depender adicionalmente de se o bloco atual e o bloco vizinho compartilham o mesmo modo codificado.
[0190] A seguir, são descritos sub-blocos com cópia intra-bloco. A IBC de sub-bloco pode ser aplicada quando um bloco é codificado utilizando-se o modo IBC; contudo, para cada sub-bloco dentro do bloco, os vetores de movimento (como, por exemplo, vetores de bloco) podem ser diferentes. Por exemplo, o vetor de bloco para o sub-bloco 708A e o vetor de bloco para o sub-bloco 708B podem ser diferentes.
[0191] Em um exemplo, um vetor de movimento base pode ser sinalizado. O vetor de movimento do sub-bloco pode depender do vetor de movimento base. Em um exemplo, o vetor de movimento base pode ser sinalizado como a diferença entre o vetor de movimento ótimo menos um preditor de vetor de movimento. O preditor de vetor de movimento pode ser derivado a partir de vetores de movimento de blocos vizinhos espaciais e/ou temporais. Em um exemplo, o vetor de movimento base pode ser um preditor para sinalizar o vetor de movimento de fato associado a um sub-bloco. Em um exemplo, o vetor de movimento base pode ser o vetor de movimento associado a um dos múltiplos sub- blocos. Portanto, não há mais necessidade de sinalizar o vetor de movimento para o sub-bloco. Em um exemplo, o vetor de movimento base pode ser utilizado como ponto de partida e o vetor de movimento do sub-bloco pode ser derivado (ou refinado) em conformidade (como, por exemplo, utilizando-se o método de correspondência de modelo).
[0192] Em alguns exemplos, os índices de nível de fatia podem ser sinalizados para indicar a precisão dos vetores de movimento para os blocos codificados em IBC. Alternativamente, o índice pode ser sinalizado em nível de bloco/nível de região/telha/PPS/SPS/VPS. Em um exemplo, os candidatos à exatidão MV podem incluir, por exemplo, pel de número inteiro, quad-pel, semi-pel, dois-pel, quatro-pel. Em um exemplo, o conjunto de candidatos de precisões MV pode depender de informações codificadas, tais como tipo de fatia, índice da camada temporal, faixa do vetor de movimento.
[0193] A seguir, é descrita a interação da cópia intra-bloco com o movimento afim. Em um exemplo, o modo IBC não é sinalizado quando o bloco é codificado com o modo afim. Em um exemplo, o modo afim não é sinalizado quando o bloco é codificado com o modo IBC. Por exemplo, o codificador de vídeo pode determinar que um bloco é codificado no modo de predição IBC. O codificador de vídeo pode pelo menos evitar uma sinalização ou parse de informações indicativas de se o modo afim está ativado para o bloco com base na determinação de que o bloco está codificado no modo de predição IBC. Por exemplo, o codificador de vídeo 200 pode não sinalizar informações indicativas de se o modo afim está ativado para o bloco, e o decodificador de vídeo 300 pode não efetuar parse de informações indicativas de se o modo afim está habilitado para o bloco.
[0194] O movimento associado com os blocos codificados IBC pode ser tratado como movimento translacional convencional. Portanto, as técnicas exemplares descritas no Pedido dos E.U.A. N.º de Série 62/586.117, depositado a 14 de novembro de 2017, e no Pedido dos E.U.A. N.º de Série 16/188.774, depositado a 13 de novembro de 2018 ainda podem funcionar. Alternativamente, é definida uma terceira categoria de movimento (além do movimento translacional convencional e afins e existentes). E para o modo de mistura, se o índice de mistura decodificado indicar a utilização do modo IBC, apenas as informações de movimento pertencentes à terceira categoria a partir de blocos vizinhos poderão ser adicionadas à lista de candidatos de mistura.
[0195] Em alguns exemplos, pode ser exigido proibir-se a tomada do vetor de movimento IBC como o ponto de partida para o processo de derivação do ATMVP. Em um exemplo, a imagem a partir de onde o movimento é obtido não pode ser a imagem atual. Em um exemplo, como no desenho ATMVP atual, o ponto de partida para buscar informações de movimento é a partir do primeiro candidato de mistura espacial disponível. Com o método proposto, o primeiro movimento não-IBC disponível é utilizado como ponto de partida. Por exemplo, se o primeiro candidato de mistura espacial disponível estiver associado com as informações de movimento IBC e o segundo estiver associado com o movimento translacional convencional, o segundo candidato de mistura espacial disponível será utilizado como ponto de partida. Se um dos sub-blocos onde o movimento é buscado é codificado com o modo IBC, ele pode ser tratado como modo intra no processo ATMVP. Nesse caso, por exemplo, um movimento predefinido pode ser tratado como o movimento do sub-bloco. Alternativamente, o movimento a partir de um sub-bloco vizinho pode ser utilizado como o movimento do sub-bloco.
[0196] Como um exemplo, um codificador de vídeo pode determinar que um bloco do primeiro componente de cor ou do segundo componente de cor é predito utilizando ATMVP, determinar um ou mais blocos em uma imagem de referência utilizada para efetuar ATMVP no bloco, determinar que pelo menos um bloco de um ou mais blocos na imagem de referência é predito no modo de predição IBC e efetuar uma operação ATMVP para o bloco sem utilizar um vetor de bloco utilizado para pelo menos um bloco na imagem de referência predito no modo de predição IBC.
[0197] A seguir, é descrita a interação da cópia intra-bloco com a compensação de iluminação (IC). Em um exemplo, o modo IBC não é sinalizado quando o bloco é codificado com o modo IC. Em um exemplo, o modo IC não é sinalizado quando o bloco é codificado com o modo IBC.
[0198] Por exemplo, o codificador de vídeo pode determinar que um bloco é codificado no modo de predição IBC e pelo menos evitar a sinalização ou parse das informações indicativas de se o modo de compensação de iluminação (IC) está ativado para o bloco com base na determinação de que o bloco é codificado no modo de predição IBC. Por exemplo, o codificador de vídeo 200 pode não sinalizar informações indicativas de se o modo IC está ativado para o segundo bloco, e o decodificador de vídeo 300 pode não efetuar parse das informações indicativas se o modo IC está ativado para o segundo bloco.
[0199] Em um exemplo, o modo IC pode ser aplicado a um bloco codificado com IBC. Nesse caso, as amostras vizinhas do bloco de referência estão na mesma imagem do bloco atual.
[0200] A seguir, é descrita a interação de cópia intra-bloco com a Precisão de Vetor de Movimento Adaptativo. Em um exemplo, o modo IBC é sinalizado apenas quando o bloco é codificado com um subconjunto predefinido de precisão MV, tal como a precisão de movimento que está em um ou múltiplos escalonamentos de pixels de número inteiro. Em um exemplo, um subconjunto de precisão MV é sinalizado quando o bloco é codificado com o modo IBC. Em um exemplo, a precisão MV não é sinalizada quando o bloco é codificado com o modo IBC. A precisão pode ser definida em um nível superior, tal como em um cabeçalho de fatia.
[0201] Por exemplo, o codificador de vídeo pode determinar que um primeiro bloco do primeiro componente de cor ou do segundo componente de cor não é predito no modo de predição IBC e determinar um primeiro conjunto de precisões de vetores de movimento para o primeiro bloco. O codificador de vídeo pode determinar que um segundo bloco do primeiro componente de cor ou do segundo componente de cor é predito no modo de predição IBC e determinar um segundo conjunto de precisões de vetores de movimento para o segundo bloco. O segundo conjunto de precisões de vetores de movimento é um subconjunto do primeiro conjunto de precisões de vetores de movimento.
[0202] A seguir, é descrita a interação da cópia intra-bloco com o Fluxo Ótico Bidirecional (BIO). Em um exemplo, o BIO não é conduzido se pelo menos um dos dois vetores de movimento se referir à imagem atual, isto é, pelo menos um dos dois vetores de movimento for um vetor de bloco no IBC. Por exemplo, o codificador de vídeo pode determinar que um bloco é codificado com um vetor que se refere à imagem que inclui o bloco. Nesse exemplo, o codificador de vídeo pode evitar efetuar BIO no bloco com base no bloco que é codificado com um vetor que se refere à imagem que inclui o bloco.
[0203] Em outro exemplo, o BIO é conduzido se pelo menos um dos dois vetores de movimento se referir à imagem atual, isto é, pelo menos um dos dois vetores de movimento for um vetor de bloco no IBC. Nesse caso, a diferença de POC do quadro atual e do quadro de referência para a IBC, que também é de fato o quadro atual, é igual a zero. Um número fixo não igual a 0 pode ser utilizado para substituir a diferença de POC na derivação, tal como Eq(3)- Eq(7).
[0204] A seguir, é descrita a interação da cópia intra-bloco com a Conversão Ascendente de Taxa de Quadro (FRUC). Em um exemplo, a correspondência de modelo não pode ser conduzida se o vetor de movimento gerado se referir à imagem atual. Em um exemplo, a correspondência de modelo é conduzida com a imagem de referência idêntica à imagem atual se o vetor de movimento gerado se referir à imagem atual. Em um exemplo, a correspondência bi-literal não pode ser conduzida se pelo menos um dos dois vetores de movimento se referir à imagem atual, isto é, pelo menos um dos dois vetores de movimento é um vetor de bloco no IBC. Por exemplo, o codificador de vídeo pode determinar que um bloco é codificado com um vetor que se refere à imagem que inclui o bloco. O codificador de vídeo pode evitar a efetuação de correspondência bi-literal no bloco com base no bloco que é codificado com um vetor que se refere à imagem que inclui o bloco.
[0205] A Figura 3 é um diagrama de blocos que mostra um exemplo de codificador de vídeo 200 que pode efetuar as técnicas desta revelação. A Figura 3 é apresentada para finalidades de explicação e não deve ser considerada limitativa das técnicas, como amplamente exemplificado e descrito nesta revelação. Para finalidades de explicação, esta revelação descreve o codificador de vídeo 200 no contexto de padrões de codificação de vídeo, como o padrão de codificação de vídeo HEVC e o padrão de codificação de vídeo H.266 em desenvolvimento (como, por exemplo, VCC). Contudo, as técnicas desta revelação não se limitam a esses padrões de codificação de vídeo e são aplicáveis geralmente à codificação e decodificação de vídeo.
[0206] No exemplo da Figura 3, o codificador de vídeo 200 inclui memória de dados de vídeo 230, unidade de seleção de modo 202, unidade de geração residual 204, unidade de processamento de transformada 206, unidade de quantização 208, unidade de quantização inversa 210, unidade de processamento de transformada inversa 212, unidade de reconstrução 214, unidade de filtro 216, armazenador de imagem decodificada (DPB) 218 e unidade de codificação por entropia 220.
[0207] A memória de dados de vídeo 230 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 200. O codificador de vídeo 200 pode receber os dados de vídeo armazenados na memória de dados de vídeo 230 a partir da, por exemplo, fonte de vídeo 104 (Figura 1). O DPB 218 pode atuar como uma memória de imagem de referência que armazena dados de vídeo de referência para utilização na predição de dados de vídeo subsequentes pelo codificador de vídeo 200. A memória de dados de vídeo 230 e o DPB 218 podem ser formados por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), que inclui DRAM síncrona (SDRAM), RAM magneto-resistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 230 e o DPB 218 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em diversos exemplos, a memória de dados de vídeo 230 pode estar embutida em chip com outros componentes do codificador de vídeo 200, conforme mostrado, ou não embutida chip em relação a esses componentes.
[0208] Nesta revelação, a referência à memória de dados de vídeo 230 não deve ser interpretada como sendo limitada à memória interna do codificador de vídeo 200, a menos que especificamente descrita como tal, ou à memória externa do codificador de vídeo 200, a menos que especificamente descrita como tal. Em vez disso, a referência à memória de dados de vídeo 230 deve ser entendida como memória de referência que armazena os dados de vídeo que o codificador de vídeo 200 recebe para codificação (como, por exemplo, dados de vídeo para um bloco atual que deve ser codificado). A memória 106 da Figura 1 também pode fornecer armazenamento temporário de saídas de diversas unidades do codificador de vídeo 200.
[0209] As diversas unidades da Figura 3 são mostradas para auxiliar com entendimento as operações efetuadas pelo codificador de vídeo 200. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação deles. Os circuitos de função fixa se referem aos circuitos que fornecem funcionalidade específica e são pré-configurados nas operações que podem ser efetuadas. Circuitos programáveis referem-se a circuitos que podem ser programados para efetuar diversas tarefas e fornecem funcionalidade flexível nas operações que podem ser efetuadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que fazem com que os circuitos programáveis funcionem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (como, por exemplo, para receber parâmetros ou parâmetros de saída), mas os tipos de operações que os circuitos de função fixa efetuam são geralmente imutáveis. Em alguns exemplos, a uma ou mais unidades podem ser blocos de circuitos distintos (função fixa ou programável) e, em alguns exemplos, uma ou mais unidades podem ser circuitos integrados.
[0210] O codificador de vídeo 200 pode incluir unidades lógicas aritméticas (ALUs), unidades de função elementar (EFUs), circuitos digitais, circuitos analógicos e/ou núcleos programáveis, formados a partir de circuitos programáveis. Em exemplos onde as operações do codificador de vídeo 200 são efetuadas utilizando-se o software executado pelos circuitos programáveis, a memória 106 (Figura 1) pode armazenar o código de objeto do software que o codificador de vídeo 200 recebe e executa, ou outra memória no codificador de vídeo 200 (não mostrado) pode armazenar tais instruções.
[0211] A memória de dados de vídeo 230 é configurada para armazenar dados de vídeo recebidos. O codificador de vídeo 200 pode recuperar uma imagem a partir dos dados de vídeo da memória de dados de vídeo 230 e fornecer os dados de vídeo para a unidade de geração residual 204 e unidade de seleção de modo 202. Os dados de vídeo na memória de dados de vídeo 230 podem ser dados de vídeo brutos que devem ser codificados.
[0212] A unidade de seleção de modo 202 inclui uma unidade de estimação de movimento 222, uma unidade de compensação de movimento 224 e uma unidade intra-predição
226. A unidade de seleção de modo 202 pode incluir unidades funcionais adicionais para efetuar a predição de vídeo de acordo com outros modos de predição. Como exemplos, a unidade de seleção de modo 202 pode incluir uma unidade de paleta, uma unidade de cópia intra-bloco (que pode ser parte da unidade de estimação de movimento 222 e/ou unidade de compensação de movimento 224), uma unidade afim, uma unidade de modelo linear (LM), ou semelhante.
[0213] A unidade de seleção de modo 202 geralmente coordena múltiplas passagens de codificação para testar combinações de parâmetros de codificação e valores de distorção de taxa resultantes para tais combinações. Os parâmetros de codificação podem incluir o particionamento de CTUs em CUs, modos de predição para as CUs, tipos de transformada para dados residuais das CUs, parâmetros de quantização para dados residuais das CUs e assim por diante. A unidade de seleção de modo 202 pode por último selecionar a combinação de parâmetros de codificação que tem valores de distorção de taxa que são melhores do que as outras combinações testadas.
[0214] O codificador de vídeo 200 pode particionar uma imagem recuperada a partir da memória de dados de vídeo 230 em uma série de CTUs e encapsular uma ou mais CTUs dentro de uma fatia. A unidade de seleção de modo 202 pode particionar uma CTU da imagem de acordo com uma estrutura de árvore, como a estrutura QTBT ou a estrutura quad-tree da HEVC descrita acima. Conforme descrito acima, o codificador de vídeo 200 pode formar uma ou mais CUs a partir do particionamento de uma CTU de acordo com a estrutura de árvore. Essa CU também pode ser referida geralmente de “bloco de vídeo” ou “bloco”.
[0215] Em geral, a unidade de seleção de modo 202 também controla os seus componentes (como, por exemplo, unidade de estimação de movimento 222, unidade de compensação de movimento 224 e unidade de predição 226) para gerar um bloco de predição para um bloco atual (como, por exemplo, uma CU atual ou em HEVC, a parte sobreposta de uma PU e uma TU). Para inter-predição de um bloco atual, a unidade de estimação de movimento 222 pode efetuar uma busca de movimento para identificar um ou mais blocos de referência que se correspondam proximamente em uma ou mais imagens de referência (como, por exemplo, uma ou mais imagens anteriormente codificadas armazenadas em DPB 218). Em particular, a unidade de estimação de movimento 222 pode calcular um valor representativo de o quanto é semelhante um bloco de referência potencial com o bloco atual, por exemplo, de acordo com a soma da diferença absoluta (SAD), a soma das diferenças ao quadrado (SSD), a diferença absoluta média (MAD), a diferença ao quadrado média (MSD) ou semelhantes. A unidade de estimação de movimento 222 pode geralmente efetuar esses cálculos utilizando diferenças de amostra por amostra entre o bloco atual e o bloco de referência que é considerado. A unidade de estimação de movimento 222 pode identificar um bloco de referência que tem um valor mais baixo resultante a partir desses cálculos, indicando um bloco de referência que mais se corresponda com maior proximidade ao bloco atual.
[0216] A unidade de estimação de movimento 222 pode formar um ou mais vetores de movimento (MVs) que definem as posições dos blocos de referência nas imagens de referência em relação à posição do bloco atual em uma imagem atual. A unidade de estimação de movimento 222 pode então fornecer os vetores de movimento para a unidade de compensação de movimento 224. Por exemplo, para inter- predição unidirecional, a unidade de estimação de movimento 222 pode fornecer um único vetor de movimento, enquanto que para a inter-predição bidirecional, a unidade de estimação de movimento 222 pode fornecer dois vetores de movimento. A unidade de compensação de movimento 224 pode então gerar um bloco de predição utilizando os vetores de movimento. Por exemplo, a unidade de compensação de movimento 224 pode recuperar dados do bloco de referência utilizando o vetor de movimento. Como outro exemplo, se o vetor de movimento tiver precisão de amostra fracionária, a unidade de compensação de movimento 224 pode interpolar valores para o bloco de predição de acordo com um ou mais filtros de interpolação. Além disso, para inter-predição bidirecional, a unidade de compensação de movimento 224 pode recuperar dados para dois blocos de referência identificados pelos respectivos vetores de movimento e combinar os dados recuperados, como, por exemplo, através da média de amostra por amostra ou média ponderada.
[0217] Como outro exemplo, para intra- predição, ou codificação de intra-predição, a unidade 226 de intra-predição pode gerar o bloco de predição a partir de amostras vizinhas ao bloco atual. Por exemplo, para modos direcionais, a unidade de intra-predição 226 pode geralmente combinar matematicamente valores de amostras vizinhas e preencher esses valores calculados na direção definida através do bloco atual para produzir o bloco de predição. Como outro exemplo, para o modo DC, a unidade intra-predição 226 pode calcular uma média das amostras vizinhas no bloco atual e gerar o bloco de predição para incluir essa média resultante para cada amostra do bloco de predição.
[0218] A unidade de seleção de modo 202 fornece o bloco de predição para a unidade de geração residual 204. A unidade de geração residual 204 recebe uma versão não codificada, bruta, do bloco atual a partir da memória de dados de vídeo 230 e o bloco de predição a partir da unidade de seleção de modo 202. A unidade de geração residual 204 calcula diferenças de amostra por amostra entre o bloco atual e o bloco de predição. As diferenças de amostra por amostra resultantes definem um bloco residual para o bloco atual. Em alguns exemplos, a unidade de geração residual 204 também pode determinar diferenças entre os valores de amostra no bloco residual para gerar um bloco residual utilizando modulação por código de pulso diferencial residual (RDPCM). Em alguns exemplos, a unidade de geração residual 204 pode ser formada utilizando-se um ou mais circuitos subtratores que efetuam subtração binária.
[0219] Em exemplos onde a unidade de seleção de modo 202 particiona CUs em PUs, cada PU pode ser associado com uma unidade de predição luma e com as unidades de predição croma correspondentes. O codificador de vídeo 200 e o decodificador de vídeo 300 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 luma da CU e o tamanho de uma PU pode se referir ao tamanho de uma unidade de predição luma da PU. Presumindo-se que o tamanho de uma CU específica seja 2Nx2N, o codificador de vídeo 200 pode suportar tamanhos de PU de 2Nx2N ou NxN para predição intra e tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN ou semelhantes para predição inter. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para predição inter.
[0220] Em exemplos onde a unidade de seleção de modo 202 não particiona adicionalmente uma CU em PUs, cada CU pode ser associada a um bloco de codificação luma e aos blocos de codificação croma correspondentes. Conforme acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação luma da CU. O codificador de vídeo 200 e o decodificador de vídeo 300 podem suportar tamanhos de CU de 2Nx2N, 2NxN ou Nx2N.
[0221] Para outras técnicas de codificação de vídeo, tal como codificação no modo de cópia intra-bloco, a codificação no modo afim e codificação no modo de modelo linear (LM), tal como alguns exemplos, unidade de seleção de modo 202, por meio das respectivas unidades associadas com as técnicas de codificação, gera um bloco de predição para o bloco atual que é codificado. Em alguns exemplos, tal como codificação no modo de paleta, a unidade de seleção de modo 202 pode não gerar um bloco de predição e, ao invés disso, gerar elementos de sintaxe que indicam a maneira pela qual se reconstrói o bloco com base em uma paleta selecionada. Em tais modos, a unidade de seleção de modo 202 pode fornecer esses elementos de sintaxe para a unidade de codificação por entropia 220 a ser codificada.
[0222] Conforme descrito acima, a unidade de geração residual 204 recebe os dados de vídeo para o bloco atual e o bloco de predição correspondente. A unidade de geração residual 204 então gera um bloco residual para o bloco atual. Para gerar o bloco residual, a unidade de geração residual 204 calcula diferenças de amostra por amostra entre o bloco de predição e o bloco atual. Assim,
[0223] A unidade de processamento de transformada 206 aplica uma ou mais transformadas ao bloco residual para gerar um bloco de coeficientes de transformada (aqui referido como um “bloco de coeficiente de transformada”). A unidade de processamento de transformada 206 pode aplicar diversas transformadas a um bloco residual para formar o bloco de coeficiente de transformada. Por exemplo, a unidade de processamento de transformada 206 pode aplicar uma transformada discreta de co-seno (DCT), uma transformada direcional, uma transformada de Karhunen-Loeve (KLT) ou uma transformada conceitualmente semelhante a um bloco residual. Em alguns exemplos, a unidade de processamento de transformada 206 pode efetuar múltiplas transformadas em um bloco residual, como, por exemplo, uma transformada primária e uma transformada secundária, tal como uma transformada rotacional. Em alguns exemplos, a unidade de processamento de transformada 206 não aplica transformadas a um bloco residual.
[0224] A unidade de quantização 208 pode quantizar os coeficientes de transformada em um bloco de coeficiente de transformada, para produzir um bloco de coeficiente de transformada quantizado. A unidade de quantização 208 pode quantizar os coeficientes de transformada de um bloco de coeficiente de transformada de acordo com um valor de parâmetro de quantização (QP) associado com o bloco atual. O codificador de vídeo 200 (como, por exemplo, por meio da unidade de seleção de modo 202) pode ajustar o grau de quantização aplicado aos blocos de coeficientes associados com o bloco atual pelo ajuste do valor de QP associado com a CU. A quantização pode introduzir perda de informação e, assim, os coeficientes de transformada quantizados podem ter menor precisão do que os coeficientes de transformada originais produzidos pela unidade de processamento de transformada 206.
[0224] A unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212 podem aplicar quantização inversa e transformadas inversas a um bloco de coeficiente de transformada quantizado, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficiente de transformada. A unidade de reconstrução 214 pode produzir um bloco reconstruído correspondente ao bloco atual (embora potencialmente com algum grau de distorção) com base no bloco residual reconstruído e em um bloco de predição gerado pela unidade de seleção de modo 202. Por exemplo, a unidade de reconstrução 214 pode adicionar amostras do bloco residual reconstruído para amostras correspondentes a partir do bloco de predição gerado pela unidade de seleção de modo 202 para produzir o bloco reconstruído.
[0226] A unidade de filtro 216 pode efetuar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 216 pode efetuar operações de desbloqueio para reduzir artefatos de blocagem ao longo das bordas das CUs. Conforme mostrado por linhas tracejadas, as operações da unidade de filtro 216 podem ser ignoradas em alguns exemplos.
[0227] O codificador de vídeo 200 armazena blocos reconstruídos em DPB 218. Por exemplo, em exemplos onde as operações da unidade de filtro 216 não são necessárias, a unidade de reconstrução 214 pode armazenar blocos reconstruídos em DPB 218. Nos exemplos em que as operações da unidade de filtro 216 são necessárias, a unidade de filtro 216 pode armazenar os blocos reconstruídos filtrados em DPB 218. A unidade de estimação de movimento 222 e a unidade de compensação de movimento 224 podem recuperar uma imagem de referência a partir de DPB 218, formada a partir dos blocos reconstruídos (e potencialmente filtrados), para inter-predizer blocos de imagens codificadas subsequentemente. Além disso, a unidade de intra-predição 226 pode utilizar blocos reconstruídos em DPB 218 de uma imagem atual para predispor intra-predizer outros blocos na imagem atual.
[0228] Em geral, a unidade de codificação por entropia 220 pode codificar elementos de sintaxe recebidos a partir de outros componentes funcionais do codificador de vídeo 200. Por exemplo, a unidade de codificação por entropia 220 pode codificar por entropia blocos de coeficientes de transformada quantizados a partir da unidade de quantização 208. Como outro exemplo, unidade de codificação por entropia 220 pode codificar por entropia elementos de sintaxe de predição (como, por exemplo, informações de movimento para inter-predição ou informações intra-modo para intra-predição) a partir da unidade de seleção de modo 202. A unidade de codificação por entropia 220 pode efetuar uma ou mais operações de codificação de entropia nos elementos de sintaxe, que são outro exemplo de dados de vídeo, para gerar dados codificados por entropia. Por exemplo, a unidade de codificação por entropia 220 pode efetuar uma operação CABAC, uma operação de codificação de tamanho variável adaptativa ao contexto (CAVLC), uma operação de codificação de comprimento de variável para variável (V2V), uma operação de codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), uma operação de codificação por entropia com particionamento de intervalos de probabilidade (PIPE), uma operação de operação de codificação de Golomb Exponencial ou outro tipo de operação de codificação de entropia nos dados. Em alguns exemplos, a unidade de codificação por entropia 220 pode funcionar no modo de desvio, onde os elementos de sintaxe não são codificados por entropia.
[0229] O codificador de vídeo 200 pode transmitir um fluxo de bits que inclui os elementos de sintaxe codificados por entropia necessários para reconstruir os blocos de uma fatia ou imagem. Em particular, a unidade de codificação por entropia 220 pode transmitir o fluxo de bits.
[0230] As operações descritas acima são descritas com relação a um bloco. Tal descrição deve ser entendida como sendo operações para um bloco de codificação luma e/ou blocos de codificação croma. Conforme descrito acima, em alguns exemplos, o bloco de codificação luma e os blocos de codificação croma são componentes luma e croma de uma CU. Em alguns exemplos, o bloco de codificação luma e os blocos de codificação croma são componentes luma e croma de uma PU.
[0231] Em alguns exemplos, as operações efetuadas com relação a um bloco de codificação luma não necessitam ser repetidas para os blocos de codificação croma. Como exemplo, as operações para identificar um vetor de movimento (MV) e uma imagem de referência para um bloco de codificação luma não necessitam ser repetidas para identificar um MV e uma imagem de referência para os blocos croma. Ao invés disso, o MV para o bloco de codificação luma pode ser escalonado para determinar o MV para os blocos croma, e a imagem de referência pode ser a mesma. Como outro exemplo, o processo de intra-predição pode ser o mesmo para os blocos de codificação luma e os blocos de codificação croma.
[0232] O codificador de vídeo 200 representa um exemplo de um dispositivo configurado para codificar dados de vídeo, que inclui uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em circuitos e configuradas para efetuar as operações de codificação exemplares descritas nesta revelação, inclusive as operações para as diversas interações entre a cópia intra-bloco e os diferentes modos de codificação descritos acima.
[0233] A Figura 4 é um diagrama de blocos que mostra um exemplo de decodificador de vídeo 300 que pode efetuar as técnicas desta revelação. A Figura 4 é apresentada para finalidades de explicação e não é limitativa das técnicas, como amplamente exemplificadas e descritas nesta revelação. Para finalidades de explicação, esta revelação descreve o decodificador de vídeo 300, que é descrito de acordo com as técnicas de JEM e HEVC. Contudo, as técnicas desta revelação podem ser efetuadas por dispositivos de codificação de vídeo configurados para outros padrões de codificação de vídeo.
[0234] No exemplo da Figura 4, o decodificador de vídeo 300 inclui memória de armazenador de imagens codificadas (CPB) 320, unidade de decodificação por entropia 302, unidade de processamento de predição 304, unidade de quantização inversa 306, unidade de processamento de transformada inversa 308, unidade de reconstrução 310, unidade de filtro 312 e armazenador de imagens decodificadas (DPB) 314. A unidade de processamento de predição 304 inclui a unidade de compensação de movimento 316 e a unidade intra-predição 318. A unidade de processamento de predição 304 pode incluir unidades de adição para efetuar a predição de acordo com outros modos de predição. Como exemplos, a unidade de processamento de predição 304 pode incluir uma unidade de paleta, uma unidade de cópia intra-bloco (que pode ser parte da unidade de compensação de movimento 316), uma unidade afim, uma unidade de modelo linear (LM) ou semelhante. Em outros exemplos, o decodificador de vídeo 300 pode incluir muitos, poucos ou diferentes componentes funcionais.
[0235] A memória CPB 320 pode armazenar dados de vídeo, tal como um fluxo de bits de vídeo codificado, a serem decodificados pelos componentes do decodificador de vídeo 300. Os dados de vídeo armazenados na memória CPB 320 podem ser obtidos, por exemplo, a partir do meio passível de leitura por computador 110 (Figura 1). A memória CPB 320 pode incluir um CPB que armazena dados de vídeo codificados (como, por exemplo, elementos de sintaxe) a partir de um fluxo de bits de vídeo codificado. Além disso, a memória CPB 320 pode armazenar dados de vídeo outros que não elementos de sintaxe de uma imagem codificada, tal como dados temporários que representam saídas das diversas unidades do decodificador de vídeo 300. O DPB 314 geralmente armazena imagens decodificadas, as quais o decodificador de vídeo 300 pode enviar e/ou utilizar como dados de vídeo de referência quando decodifica dados ou imagens subsequentes do fluxo de bits de vídeo codificado. A memória CPB 320 e DPB 314 podem ser formadas por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), que inclui DRAM síncrona (SDRAM), RAM magneto-resistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória CPB 320 e DPB 314 podem ser fornecidas pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em diversos exemplos, a memória CPB 320 pode estar embutida em chip com outros componentes do decodificador de vídeo 300 ou não embutida chip em relação a esses componentes.
[0236] Adicionalmente ou alternativamente, em alguns exemplos, o decodificador de vídeo 300 pode recuperar dados de vídeo codificados a partir da memória 120 (Figura 1). Isto é, a memória 120 pode armazenar dados conforme discutido acima com a memória CPB 320. De modo semelhante, a memória 120 pode armazenar instruções a serem executadas pelo decodificador de vídeo 300, quando alguma ou toda a funcionalidade do decodificador de vídeo 300 é implementada em software para ser executada pelo circuito de processamento do decodificador de vídeo 300.
[0237] As diversas unidades mostradas na Figura 4 são mostradas para auxiliar com entendimento as operações efetuadas pelo decodificador de vídeo 300. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação deles. Semelhante à Figura 3, os circuitos de função fixa se referem a circuitos que fornecem funcionalidade específica e são pré-configurados nas operações que podem ser efetuadas. Circuitos programáveis se referem a circuitos que podem ser programados para efetuar diversas tarefas e fornecem funcionalidade flexível nas operações que podem ser efetuadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que fazem com que os circuitos programáveis funcionem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (como, por exemplo, para receber parâmetros ou parâmetros de saída), mas os tipos de operações que os circuitos de função fixa efetuam são geralmente imutáveis. Em alguns exemplos uma ou mais unidades podem ser blocos de circuitos distintos (de função fixa ou programável) e, em alguns exemplos, uma ou mais unidades podem ser circuitos integrados.
[0238] O decodificador de vídeo 300 pode incluir ALUs, EFUs, circuitos digitais, circuitos analógicos e/ou núcleos programáveis formados a partir de circuitos programáveis. Em exemplos onde as operações do decodificador de vídeo 300 são efetuadas por software em execução nos circuitos programáveis, a memória embutida em chip ou não embutida em chip pode armazenar instruções (como, por exemplo, código de objeto) do software que o decodificador de vídeo 300 recebe e executa.
[0239] A unidade de decodificação por entropia 302 pode receber dados de vídeo codificados a partir do CPB e decodificar por entropia os dados de vídeo para reproduzir elementos de sintaxe. A unidade de processamento de predição 304, a unidade de quantização inversa 306, a unidade de processamento de transformada inversa 308, a unidade de reconstrução 310 e a unidade de filtro 312 podem gerar dados de vídeo decodificados com base nos elementos de sintaxe extraídos a partir do fluxo de bits.
[0240] Em geral, o decodificador de vídeo 300 reconstrói uma imagem sobre uma base de bloco por bloco. O decodificador de vídeo 300 pode efetuar uma operação de reconstrução em cada bloco individualmente (onde o bloco que é atualmente reconstruído, isto é, decodificado, pode ser referido como um “bloco atual”).
[0241] A unidade de decodificação por entropia 302 pode decodificar por entropia elementos de sintaxe que definem coeficientes de transformada quantizados de um bloco de coeficiente de transformada quantizado, bem como informações de transformada, tal como um parâmetro de quantização (QP) e/ou indicações de modo de transformada. A unidade de quantização inversa 306 pode utilizar o QP associado com o bloco de coeficiente de transformada quantizado para determinar um grau de quantização e, de modo semelhante, aplicar um grau de quantização inversa para a unidade de quantização inversa 306. A unidade de quantização inversa 306 pode, por exemplo, efetuar uma operação de deslocamento à esquerda de bit a bit para quantizar inversamente os coeficientes de transformada quantizados. A unidade de quantização inversa 306 pode, desse modo, formar um bloco de coeficiente de transformada que inclui coeficientes de transformada.
[0242] Após a unidade de quantização inversa 306 formar o bloco de coeficiente de transformada, a unidade de processamento de transformada inversa 308 pode aplicar uma ou mais transformadas inversas ao bloco de coeficiente de transformada para gerar um bloco residual associado com o bloco atual. Por exemplo, a unidade de processamento de transformada inversa 308 pode aplicar uma DCT inversa, uma transformada de número inteiro inverso, uma transformada de Karhunen-Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa ou outra transformada inversa ao bloco de coeficiente.
[0243] Além disso, a unidade de processamento de predição 304 gera um bloco de predição de acordo com elementos de sintaxe das informações de predição que foram decodificados por entropia pela unidade de decodificação por entropia 302. Por exemplo, se elementos de sintaxe das informações de predição indicarem que o bloco atual é inter-predito, a unidade de compensação de movimento 316 pode gerar o bloco de predição. Nesse caso, os elementos de sintaxe das informações de predição podem indicar uma imagem de referência no DPB 314 a partir da qual recupera um bloco de referência, bem como um vetor de movimento que identifica uma localização do bloco de referência na imagem de referência com relação à localização do bloco atual na imagem atual. A unidade de compensação de movimento 316 pode geralmente efetuar o processo de inter-predição de uma maneira que é substancialmente semelhante que foi descrita com relação à unidade de compensação de movimento 224 (Figura 3).
[0244] Como outro exemplo, se os elementos de sintaxe das informações de predição indicarem que o bloco atual é intra-predito, a unidade de intra-predição 318 pode gerar o bloco de predição de acordo com um modo de intra- predição indicado pelos elementos de sintaxe das informações de predição. Novamente, a unidade de predição 318 pode geralmente efetuar o processo de predição de uma maneira substancialmente semelhante a que foi descrita com relação à unidade de predição 226 (Figura 3). A unidade intra-predição 318 pode recuperar dados de amostras vizinhas para o bloco atual a partir do DPB 314.
[0245] A unidade de reconstrução 310 pode reconstruir o bloco atual utilizando o bloco de predição e o bloco residual. Por exemplo, a unidade de reconstrução 310 pode adicionar amostras do bloco residual às amostras correspondentes do bloco de predição para reconstruir o bloco atual.
[0246] A unidade de filtro 312 pode efetuar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 312 pode efetuar operações de desbloqueio para reduzir artefatos de blocagem ao longo das bordas dos blocos reconstruídos. Conforme mostrado pelas linhas tracejadas na Figura 4, as operações da unidade de filtro 312 não são necessariamente efetuadas em todos os exemplos.
[0247] O decodificador de vídeo 300 pode armazenar os blocos reconstruídos no DPB 314. Conforme discutido acima, o DPB 314 pode fornecer informações de referência, tal como amostras de uma imagem atual para intra-predição e imagens decodificadas anteriormente para compensação de movimento subsequente, para a unidade de processamento de predição 304. Além disso, o decodificador de vídeo 300 pode transmitir imagens decodificadas do DPB para apresentação subsequente em um dispositivo de exibição, tal como o dispositivo de exibição 118 da Figura
1.
[0248] Dessa maneira, o decodificador de vídeo 300 representa um exemplo de um dispositivo de decodificação de vídeo que inclui uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em circuitos e configuradas para efetuar as operações de decodificação exemplares descritas nesta revelação, inclusive as operações para as diversas interações entre a cópia intra-bloco e os diferentes modos de codificação descritos acima.
[0249] A Figura 19 é um fluxograma que mostra um exemplo de método de codificação de dados de vídeo. Para facilitar a descrição, as técnicas exemplares são descritas com relação a um codificador de vídeo (como, por exemplo, o codificador de vídeo 200 ou o decodificador de vídeo 300) configurado para codificar (como, por exemplo, codificar ou decodificar). No exemplo mostrado na Figura 19, o codificador de vídeo pode recuperar dados de vídeo, tal como amostras de um primeiro componente de cor e um segundo componente de cor a partir da memória (como, por exemplo, memória de dados de vídeo 230, DPB 218 ou alguma outra memória de dados de vídeo para o codificador de vídeo 200 ou memória CPB 320, DPB 314 ou alguma outra memória de dados de vídeo para o decodificador de vídeo 300).
[0250] O codificador de vídeo 200 pode particionar amostras de um primeiro componente de cor de acordo com uma primeira árvore de partição e amostras de partição de um segundo componente de cor de acordo com uma segunda árvore de partição. O codificador de vídeo 200 pode sinalizar informações do decodificador de vídeo 300 indicativas da partição, de modo que o decodificador de vídeo 300 possa determinar quais blocos para os quais o decodificador de vídeo 300 está recebendo informações.
[0251] Nos exemplos descritos nesta revelação, a segunda árvore de partição é diferente da primeira árvore de partição e o segundo componente de cor é diferente do primeiro componente de cor. O primeiro componente de cor é um componente luma e o segundo componente de cor é um componente croma, ou vice-versa. Como um exemplo, o codificador de vídeo pode particionar amostras do primeiro componente de cor de acordo com a estrutura QTBT luma, conforme mostrado nas Figuras 2B, 17A e 18A. O codificador de vídeo pode particionar amostras do segundo componente de cor de acordo com a estrutura QTBT croma, conforme mostrado na Figura 17B.
[0252] O codificador de vídeo pode determinar uma pluralidade de blocos do primeiro componente de cor que corresponde a um bloco do segundo componente de cor (800). Conforme descrito acima, a pluralidade de blocos do primeiro componente de cor é gerada a partir do particionamento de amostras do primeiro componente de cor de acordo com uma primeira árvore de partição (como, por exemplo, estrutura QTBT luma das Figuras 2B, 17A e 18A) e o bloco do segundo componente de cor é gerado a partir do particionamento de amostras do segundo componente de cor de acordo com uma segunda árvore de partição (como, por exemplo, estrutura QTBT croma da Figura 17B). A pluralidade de blocos do primeiro componente de cor e o bloco do segundo componente de cor podem ser cada um parte de um mesmo bloco de codificação de uma imagem dos dados de vídeo.
[0253] Por exemplo, para determinar a pluralidade de blocos do primeiro componente de cor que corresponde a um bloco do segundo componente de cor, o codificador de vídeo pode determinar a localização da pluralidade de blocos do primeiro componente de cor e o bloco do segundo componente de cor, se os valores de amostra dos blocos do primeiro componente de cor e os valores de amostra do bloco do segundo componente de cor formarem juntos valores de amostra de amostras de um bloco de codificação e semelhantes. Como exemplo, a partição luma 701 que inclui uma pluralidade de blocos luma corresponde ao bloco croma 706. Os valores de amostras da partição luma 701 e do bloco croma 706 juntos formam valores de amostra das amostras de uma CU (como, por exemplo, uma primeira amostra da partição luma 701 e uma primeira amostra do bloco croma 706 juntas formam uma primeira amostra da CU, uma segunda amostra da partição luma 701 e uma segunda amostra do bloco croma 706 juntas formam uma segunda amostra da CU, e assim por diante).
[0254] O codificador de vídeo pode particionar o bloco do segundo componente de cor com base na primeira árvore de partição para gerar sub-blocos do segundo componente de cor, em que cada um corresponde a um bloco da pluralidade de blocos do primeiro componente de cor (802).
Por exemplo, conforme mostrado na Figura 18B, o codificador de vídeo pode particionar o bloco croma 706 na partição croma 710 que inclui os sub-blocos 708A e 708B. Os sub- blocos 708A e 708B do croma correspondem cada um ao bloco luma 704A e ao bloco luma 704B, respectivamente. Por exemplo, uma primeira amostra do bloco luma 704A e uma primeira amostra do sub-bloco croma 708A juntas formam uma primeira amostra da CU, uma segunda amostra do bloco luma 704A e uma segunda amostra do sub-bloco croma 708A juntas formam uma segunda amostra da CU, e assim por diante. De modo semelhante, uma primeira amostra do bloco luma 704B e uma primeira amostra do sub-bloco croma 708B formam juntas uma terceira amostra da CU, uma segunda amostra do bloco luma 704B e uma segunda amostra do sub-bloco 708B juntas formam uma quarta amostra da CU e assim por diante.
[0255] Em um ou mais exemplos, o codificador de vídeo pode determinar um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor que são preditos no modo de predição de cópia intra-bloco (IBC) com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor (804). Por exemplo, o codificador de vídeo pode determinar que o bloco do segundo componente de cor deve herdar um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor (como, por exemplo, com base em informações sinalizadas, tal como índice de referência em uma lista de imagens de referência).
[0256] Em resposta à determinação que o bloco do segundo componente de cor herda um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor, o codificador de vídeo pode determinar um ou mais vetores de bloco para um ou mais sub-blocos que são preditos no modo de predição IBC com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor. Por exemplo, o codificador de vídeo pode determinar que os sub-blocos croma 708A e 708B devem herdar os vetores de bloco dos blocos luma 704A e 704B e, em resposta, o codificador de vídeo pode determinar os vetores de bloco para os sub-blocos croma 708A e 708B com base nos vetores de bloco dos blocos luma 704A e 704B.
[0257] Em alguns exemplos, para determinar um ou mais vetores de bloco para um ou mais sub-blocos, o codificador de vídeo pode ser configurado para escalonar um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor com base em um formato de sub-amostragem do primeiro componente de cor e do segundo componente de cor. Por exemplo, nas Figuras 18A e 18B, o formato de sub- amostragem 4:2:2 é utilizado e, portanto, o codificador de vídeo divide os componentes x e y dos vetores de bloco dos blocos luma 704A e 704B para determinar os vetores de bloco para os sub-blocos 708A e 708B, respectivamente.
[0258] Além disso, em alguns exemplos, pelo menos um da pluralidade de vetores de bloco para um dos sub-blocos croma é diferente de outro da pluralidade de vetores de bloco para outro dos sub-blocos croma. Por exemplo, o vetor de bloco para o sub-bloco croma 708A é diferente do vetor de bloco dos sub-bloco croma 708B.
[0259] O codificador de vídeo pode ser configurado para codificar o bloco do segundo componente de cor com base em um ou mais vetores de bloco determinados (806). Nos exemplos em que o codificador de vídeo é o codificador de vídeo 200, o codificador de vídeo 200 pode ser configurado para codificar o bloco do segundo componente de cor com base em um ou mais vetores de bloco determinados. Por exemplo, o codificador de vídeo 200 pode ser configurado para determinar um ou mais blocos de predição com base em um ou mais vetores de bloco determinados para um ou mais sub-blocos, subtrair um ou mais blocos de predição dos respectivos um ou mais sub- blocos para gerar um ou mais blocos residuais e sinalizar informações indicativas de um ou mais blocos residuais.
[0260] Nos exemplos em que o codificador de vídeo é o decodificador de vídeo 300, o decodificador de vídeo 300 pode ser configurado para decodificar o bloco do segundo componente de cor com base em um ou mais vetores de bloco determinados. Por exemplo, o decodificador de vídeo 300 pode ser configurado para determinar um ou mais blocos de predição com base nos um ou mais vetores de bloco determinados para um ou mais sub-blocos, determinar um ou mais blocos residuais (como, por exemplo, com base em informações sinalizadas) para o um ou mais sub-blocos e adicione o um ou mais blocos residuais aos respectivos ou mais blocos de predição para reconstruir os sub-blocos do bloco do segundo componente de cor.
[0261] Conforme descrito acima, esta revelação descreve técnicas de aplicação do modo de predição IBC com técnicas de codificação de vídeo. Por exemplo, supõe-se que o bloco do segundo componente de cor da Figura 19 seja um primeiro bloco em uma primeira imagem. Em alguns exemplos, o codificador de vídeo pode ser configurado para determinar que um segundo bloco em uma segunda imagem do primeiro componente de cor ou do segundo componente de cor não é predito no modo de predição IBC, determinar um primeiro conjunto de precisões de vetores de movimento para o segundo bloco, determinar que um terceiro bloco do primeiro componente de cor ou do segundo componente de cor é predito no modo de predição IBC e determinar um segundo conjunto de precisões de vetores de movimento para o terceiro bloco, em que o segundo conjunto de precisões de vetores de movimento é um subconjunto do primeiro conjunto de precisões do vetor de movimento.
[0262] Como outro exemplo, supõe-se que o bloco do segundo componente de cor da Figura 19 seja um primeiro bloco em uma primeira imagem. Em alguns exemplos, o codificador de vídeo pode ser configurado para determinar que um segundo bloco em uma segunda imagem do primeiro componente de cor ou do segundo componente de cor é predito utilizando a predição de vetor de movimento temporal alternativa (ATMVP), determinar um ou mais blocos em uma imagem de referência utilizada para efetuar ATMVP no segundo bloco, determinar que pelo menos um bloco de um ou mais blocos na imagem de referência é predito no modo de predição IBC e efetuar uma operação ATMVP para o segundo bloco sem utilizar um vetor de bloco utilizado por pelo menos um bloco na imagem de referência que é predita no modo de predição IBC.
[0263] Como outro exemplo, supõe-se que o bloco do segundo componente de cor da Figura 19 seja um primeiro bloco em uma primeira imagem. Em alguns exemplos, o codificador de vídeo pode ser configurado para determinar que um segundo bloco em uma segunda imagem é codificado no modo de predição IBC e pelo menos evitar sinalização ou parse das informações indicativas de se o modo afim está ativado para o segundo bloco com base na determinação de que o segundo bloco é codificado no modo de predição IBC. Por exemplo, o codificador de vídeo 200 pode não sinalizar informações indicativas de que o modo afim está ativado para o segundo bloco, e o decodificador de vídeo 300 pode não efetuar parse das informações indicativas de se o modo afinado está habilitado para o segundo bloco.
[0264] Como outro exemplo, supõe-se que o bloco do segundo componente de cor da Figura 19 seja um primeiro bloco em uma primeira imagem. Em alguns exemplos, o codificador de vídeo pode ser configurado para determinar que um segundo bloco em uma segunda imagem é codificado no modo de predição IBC e pelo menos evitar sinalização ou parse de informações indicativas de se o modo de compensação de iluminação (IC) está ativado para o segundo bloco com base na determinação de se o segundo bloco é codificado no modo de predição IBC. Por exemplo, o codificador de vídeo 200 pode não sinalizar informações indicativas de se o modo IC está ativado para o segundo bloco, e o decodificador de vídeo 300 pode não efetuar parse de informações indicativas de se o modo IC está ativado para o segundo bloco.
[0265] Como outro exemplo, supõe-se que o bloco do segundo componente de cor da Figura 19 seja um primeiro bloco em uma primeira imagem. Em alguns exemplos, o codificador de vídeo pode ser configurado para determinar que um segundo bloco em uma segunda imagem é codificado com um vetor que se refere à segunda imagem e pode evitar a efetuação de fluxo ótico bidirecional (BIO) no segundo bloco com base no segundo bloco que é codificado com o vetor que se refere à segunda imagem.
[0266] Como outro exemplo, supõe-se que o bloco do segundo componente de cor da Figura 19 seja um primeiro bloco em uma primeira imagem. Em alguns exemplos, o codificador de vídeo pode ser configurado para determinar que um segundo bloco em uma segunda imagem é codificado com um vetor que se refere à segunda imagem e pode evitar a efetuação de correspondência bilateral no segundo bloco com base no segundo bloco que é codificado com o vetor que se refere à segunda imagem.
[0267] Deve-se reconhecer que, dependendo do exemplo, determinados atos ou eventos de qualquer uma das técnicas aqui descritas podem ser efetuados em uma sequência diferente, podem ser adicionados, fundidos ou deixados de fora completamente (como, por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além do mais, em determinado exemplos, os atos ou eventos, podem ser efetuados concomitantemente, como, por exemplo, através de processamento com múltiplos fluxos de execução, processamento com interrupções ou múltiplos processadores e não sequencialmente.
[0268] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software,
firmware ou em qualquer combinação deles. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em um meio passível de leitura por computador e executadas por uma unidade de processamento baseada em hardware. Os meios passíveis de leitura por computador podem incluir meios de armazenamento passíveis de leitura por computador que correspondem a um meio tangível tal como um meio de armazenamento de dados ou um meio de comunicação que inclui qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, de acordo com um protocolo de comunicação, por exemplo. Desta maneira, os meios passíveis de leitura por computador podem corresponder geralmente a (1) meios de armazenamento passíveis de leitura por computador tangíveis que são não transitórios ou (2) um meio de comunicação tal como um sinal ou onda portadora. Os meios de armazenamento de dados podem ser quaisquer meios disponíveis que possam ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio passível de leitura por computador.
[0269] A título de exemplo, e não de limitação, tais meios de armazenamento passíveis de leitura por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado sob a forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disto, qualquer conexão é apropriadamente denominada de meio passível de leitura por computador. Por exemplo, se as instruções forem transmitidas de um site da Web, servidor ou outra fonte remota utilizando-se um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (“DSL”), ou tecnologias sem fio tais como infravermelho, rádio e microonda, então o cabo coaxial, o cabo de fibra ótica, o par trançado a DSL ou tecnologias sem fio tais como infravermelho, rádio e microonda são incluídos na definição de meio. Deve ficar entendido, contudo, que os meios de armazenamento passíveis de leitura por computador e meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas, em vez disso são direcionadas para meios de armazenamento tangíveis não transitórios. Disco (disk e disc, no original) conforme aqui utilizado inclui disco compacto (“CD”), disco de laser, disco ótico, disco versátil digital (“DVD”), disco flexível e disco blu-ray, onde discos (disks) reproduzem usualmente dados magneticamente, enquanto discos (discs) reproduzem dados opticamente com lasers. Combinações desses elementos devem ser incluídas dentro do alcance dos meios passíveis de leitura por computador.
[0270] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados específicos de aplicativo (ASICs), arranjos lógicos programáveis no campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo “processador” aqui utilizado pode referir-se a qualquer uma das estruturas precedentes ou a qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disso, sob alguns aspectos, a funcionalidade aqui descrita pode ser apresentada dentro de módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um CODEC combinado. Além disso, as técnicas podem ser completamente implementadas em um ou mais circuitos ou elementos lógicos.
[0271] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivo ou aparelhos, inclusive um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (um conjunto de chips, por exemplo). Diversos componentes, módulos ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de dispositivos configurados para efetuar as técnicas reveladas, mas não exigem necessariamente a efetuação por unidades de hardware diferentes. Em vez disso, conforme descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware inter-operantes, que incluem um ou mais processadores descritos acima, em conjunto com software e/ou firmware adequado.
[0272] Foram descritos diversos exemplos. Estes e outros exemplos estão dentro do alcance das reivindicações seguintes.

Claims (30)

REIVINDICAÇÕES
1. Método para codificar dados de vídeo, que compreende: determinar uma pluralidade de blocos de um primeiro componente de cor que corresponde a um bloco de um segundo componente de cor, em que a pluralidade de blocos do primeiro componente de cor é gerada a partir do particionamento de amostras do primeiro componente de cor de acordo com uma primeira árvore de partição, e o bloco do segundo componente de cor é gerado a partir do particionamento de amostras do segundo componente de cor de acordo com uma segunda árvore de partição; particionar o bloco do segundo componente de cor com base na primeira árvore de partição para gerar sub- blocos do segundo componente de cor que correspondem cada um a um bloco da pluralidade de blocos do primeiro componente de cor; determinar um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor que são preditos no modo de predição de cópia intra-bloco (IBC) com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor; e codificar o bloco do segundo componente de cor com base em um ou mais vetores de bloco determinados.
2. Método, de acordo com a reivindicação 1, em que determinar um ou mais vetores de bloco para um ou mais sub-blocos compreende determinar uma pluralidade de vetores de bloco para uma pluralidade de sub-blocos e em que pelo menos um da pluralidade de vetores de bloco para um dos sub-blocos é diferente de outro da pluralidade de vetores de bloco para outro dos sub-blocos.
3. Método, de acordo com a reivindicação 1, em que determinar um ou mais vetores de bloco para um ou mais sub-blocos compreende escalonar um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor com base em um formato de sub-amostragem do primeiro componente de cor e do segundo componente de cor.
4. Método, de acordo com a reivindicação 1, em que o primeiro componente de cor compreende um componente luma e em que o segundo componente de cor compreende um componente croma.
5. Método, de acordo com a reivindicação 1, que compreende adicionalmente: determinar que o bloco do segundo componente de cor herda um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor, em que determinar um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor compreende, em resposta à determinação que o bloco do segundo componente de cor deve herdar um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor, determinar um ou mais vetores de bloco para um ou mais sub-blocos que são preditos no modo de predição IBC com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor.
6. Método, de acordo com a reivindicação 1, em que a pluralidade de blocos do primeiro componente de cor e o bloco do segundo componente de cor são cada um parte de um mesmo bloco de codificação de uma imagem dos dados de vídeo.
7. Método, de acordo com a reivindicação 1, em que o bloco do segundo componente de cor compreende um primeiro bloco em uma primeira imagem, o método compreendendo adicionalmente: determinar que um segundo bloco em uma segunda imagem do primeiro componente de cor ou do segundo componente de cor não é predito no modo de predição IBC; determinar um primeiro conjunto de precisões de vetores de movimento para o segundo bloco; determinar que um terceiro bloco do primeiro componente de cor ou do segundo componente de cor é predito no modo de predição IBC; e determinar um segundo conjunto de precisões de vetores de movimento para o terceiro bloco, em que o segundo conjunto de precisões de vetores de movimento é um subconjunto do primeiro conjunto de precisões de vetores de movimento.
8. Método, de acordo com a reivindicação 1, em que o bloco do segundo componente de cor compreende um primeiro bloco em uma primeira imagem, o método compreendendo adicionalmente: determinar que um segundo bloco em uma segunda imagem do primeiro componente de cor ou do segundo componente de cor é predito utilizando-se predição de vetor de movimento temporal alternativa (ATMVP); determinar um ou mais blocos em uma imagem de referência utilizada para efetuar ATMVP no segundo bloco; determinar que pelo menos um bloco de um ou mais blocos na imagem de referência é predito no modo de predição IBC; e efetuar uma operação ATMVP para o segundo bloco sem utilizar um vetor de bloco utilizado para pelo menos um bloco na imagem de referência que é predito no modo de predição IBC.
9. Método, de acordo com a reivindicação 1, em que o bloco do segundo componente de cor compreende um primeiro bloco em uma primeira imagem, o método compreendendo adicionalmente: determinar que um segundo bloco em uma segunda imagem é codificado no modo de predição IBC; e pelo menos evitar a sinalização ou parse de informações indicativas de se o modo afim está ativado para o segundo bloco com base na determinação de que o segundo bloco está codificado no modo de predição IBC.
10. Método, de acordo com a reivindicação 1, em que o bloco do segundo componente de cor compreende um primeiro bloco em uma primeira imagem, o método compreendendo adicionalmente: determinar que um segundo bloco em uma segunda imagem é codificado no modo de predição IBC; e pelo menos evitar a sinalização ou parse de informações indicativas de se o modo de compensação de iluminação (IC) está ativado para o segundo bloco com base na determinação de que o segundo bloco está codificado no modo de predição IBC.
11. Método, de acordo com a reivindicação 1, em que o bloco do segundo componente de cor compreende um primeiro bloco em uma primeira imagem, o método compreendendo adicionalmente: determinar que um segundo bloco em uma segunda imagem é codificado com um vetor que se refere à segunda imagem; e evitar efetuar fluxo ótico bidirecional (BIO) no segundo bloco com base no segundo bloco que é codificado com o vetor que se refere à segunda imagem.
12. Método, de acordo com a reivindicação 1, em que o bloco do segundo componente de cor compreende um primeiro bloco em uma primeira imagem, o método compreendendo adicionalmente: determinar que um segundo bloco em uma segunda imagem é codificado com um vetor que se refere à segunda imagem; e evitar efetuar a correspondência bi-literal no segundo bloco com base no segundo bloco que é codificado com o vetor que se refere à segunda imagem.
13. Método, de acordo com a reivindicação 1, em que codificar o bloco do segundo componente de cor compreende decodificar o bloco do segundo componente de cor e em que a decodificação do bloco do segundo componente de cor compreende: determinar um ou mais blocos de predição com base em um ou mais vetores de bloco determinados para um ou mais sub-blocos; determinar um ou mais blocos residuais para um ou mais sub-blocos; e adicionar um ou mais blocos residuais a um ou mais blocos de predição respectivos para reconstruir os sub-blocos do bloco do segundo componente de cor.
14. Método, de acordo com a reivindicação 1, em que a codificação do bloco do segundo componente de cor compreende codificar o bloco do segundo componente de cor e em que a codificação do bloco do segundo componente de cor compreende: determinar um ou mais blocos de predição com base em um ou mais vetores de bloco determinados para um ou mais sub-blocos; subtrair um ou mais blocos de predição dos respectivos blocos de um ou mais sub-blocos para gerar um ou mais blocos residuais; e sinalizar informações indicativas de um ou mais blocos residuais.
15. Dispositivo para codificação de dados de vídeo, que compreende: uma memória configurada para armazenar amostras de um primeiro componente de cor e amostras de um segundo componente de cor dos dados de vídeo; e um codificador de vídeo que compreende pelo menos um circuito de função fixa e programável, em que o codificador de vídeo é configurado para: determinar uma pluralidade de blocos de um primeiro componente de cor que corresponde a um bloco de um segundo componente de cor, em que a pluralidade de blocos do primeiro componente de cor é gerada a partir do particionamento de amostras do primeiro componente de cor de acordo com uma primeira árvore de partição, e o bloco do segundo componente de cor é gerado a partir do particionamento de amostras do segundo componente de cor de acordo com uma segunda árvore de partição; particionar o bloco do segundo componente de cor com base na primeira árvore de partição para gerar sub- blocos do segundo componente de cor que correspondem cada um a um bloco da pluralidade de blocos do primeiro componente de cor; determinar um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor que são preditos no modo de predição de cópia intra-bloco (IBC) com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor; e codificar o bloco do segundo componente de cor com base em um ou mais vetores de bloco determinados.
16. Dispositivo, de acordo com a reivindicação 15, em que para determinar um ou mais vetores de bloco para um ou mais sub-blocos, o codificador de vídeo é configurado para determinar uma pluralidade de vetores de bloco para uma pluralidade de sub-blocos e em que pelo menos um da pluralidade de vetores de bloco para um dos sub-blocos é diferente de outro da pluralidade de vetores de bloco para outro dos sub-blocos.
17. Dispositivo, de acordo com a reivindicação 15, em que para determinar um ou mais vetores de bloco para um ou mais sub-blocos, o codificador de vídeo é configurado para escalonar um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor com base em um formato de sub-amostragem do primeiro componente de cor e do segundo componente de cor.
18. Dispositivo, de acordo com a reivindicação 15, em que o primeiro componente de cor compreende um componente luma e em que o segundo componente de cor compreende um componente croma.
19. Dispositivo, de acordo com a reivindicação 15, em que o codificador de vídeo está configurado para: determinar que o bloco do segundo componente de cor herda um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor, em que determinar um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor compreende, em resposta à determinação que o bloco do segundo componente de cor deve herdar um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor, determinar um ou mais vetores de bloco para um ou mais sub-blocos que são preditos no modo de predição IBC com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor.
20. Dispositivo, de acordo com a reivindicação 15, em que a pluralidade de blocos do primeiro componente de cor e o bloco do segundo componente de cor são cada um parte de um mesmo bloco de codificação de uma imagem dos dados de vídeo.
21. Dispositivo, de acordo com a reivindicação 15, em que o bloco do segundo componente de cor compreende um primeiro bloco e em que o codificador de vídeo é configurado para:
determinar que um segundo bloco em uma segunda imagem do primeiro componente de cor ou do segundo componente de cor não é predito no modo de predição IBC; determinar um primeiro conjunto de precisões de vetores de movimento para o segundo bloco; determinar que um terceiro bloco do primeiro componente de cor ou do segundo componente de cor é predito no modo de predição IBC; e determinar um segundo conjunto de precisões de vetores de movimento para o terceiro bloco, em que o segundo conjunto de precisões de vetores de movimento é um subconjunto do primeiro conjunto de precisões de vetores de movimento.
22. Dispositivo, de acordo com a reivindicação 15, em que o bloco do segundo componente de cor compreende um primeiro bloco e em que o codificador de vídeo é configurado para: determinar que um segundo bloco em uma segunda imagem do primeiro componente de cor ou do segundo componente de cor é predito utilizando-se predição de vetor de movimento temporal alternativa (ATMVP); determinar um ou mais blocos em uma imagem de referência utilizada para efetuar ATMVP no segundo bloco; determinar que pelo menos um bloco de um ou mais blocos na imagem de referência é predito no modo de predição IBC; e efetuar uma operação ATMVP para o segundo bloco sem utilizar um vetor de bloco utilizado para pelo menos um bloco na imagem de referência que é predito no modo de predição IBC.
23. Dispositivo, de acordo com a reivindicação 15, em que o bloco do segundo componente de cor compreende um primeiro bloco em uma primeira imagem e em que o codificador de vídeo é configurado para: determinar que um segundo bloco em uma segunda imagem é codificado no modo de predição IBC; e pelo menos evitar a sinalização ou parse de informações indicativas de se o modo afim está ativado para o segundo bloco com base na determinação de que o segundo bloco está codificado no modo de predição IBC.
24. Dispositivo, de acordo com a reivindicação 15, em que o bloco do segundo componente de cor compreende um primeiro bloco em uma primeira imagem e em que o codificador de vídeo é configurado para: determinar que um segundo bloco em uma segunda imagem é codificado no modo de predição IBC; e pelo menos evitar a sinalização ou análise de informações indicativas de se o modo de compensação de iluminação (IC) está ativado para o segundo bloco com base na determinação de que o segundo bloco está codificado no modo de predição IBC.
25. Dispositivo, de acordo com a reivindicação 15, em que o bloco do segundo componente de cor compreende um primeiro bloco em uma primeira imagem e em que o codificador de vídeo é configurado para: determinar que um segundo bloco em uma segunda imagem é codificado com um vetor que se refere à segunda imagem; e evitar efetuar fluxo ótico bidirecional (BIO) no segundo bloco com base no segundo bloco que é codificado com o vetor que se refere à segunda imagem.
26. Dispositivo, de acordo com a reivindicação 15, em que o bloco do segundo componente de cor compreende um primeiro bloco em uma primeira imagem e em que o codificador de vídeo é configurado para: determinar que um segundo bloco em uma segunda imagem é codificado com um vetor que se refere à segunda imagem; e evitar efetuar a correspondência bi-literal no segundo bloco com base no segundo bloco que é codificado com o vetor que se refere à segunda imagem.
27. Dispositivo, de acordo com a reivindicação 15, em que o codificador de vídeo compreende um decodificador de vídeo, em que para codificar o bloco do segundo componente de cor, o decodificador de vídeo é configurado para decodificar o bloco do segundo componente de cor e em que para decodificar o bloco do segundo componente de cor, o decodificador de vídeo é configurado para: determinar um ou mais blocos de predição com base em um ou mais vetores de bloco determinados para um ou mais sub-blocos; determinar um ou mais blocos residuais para um ou mais sub-blocos; e adicionar um ou mais blocos residuais a um ou mais blocos de predição respectivos para reconstruir os sub-blocos do bloco do segundo componente de cor.
28. Dispositivo, de acordo com a reivindicação 15, em que o codificador de vídeo compreende um codificador de vídeo, em que para codificar o bloco do segundo componente de cor, o codificador de vídeo é configurado para codificar o bloco do segundo componente de cor e em que para codificar o bloco do segundo componente de cor, o codificador de vídeo é configurado para: determinar um ou mais blocos de predição com base em um ou mais vetores de bloco determinados para um ou mais sub-blocos; subtrair um ou mais blocos de predição dos respectivos blocos de um ou mais sub-blocos para gerar um ou mais blocos residuais; e sinalizar informações indicativas de um ou mais blocos residuais.
29. Meio de armazenamento passível de leitura por computador que armazena instruções que, quando executadas, fazem com que um ou mais processadores de um dispositivo para codificar dados de vídeo: determine uma pluralidade de blocos de um primeiro componente de cor que corresponde a um bloco de um segundo componente de cor, em que a pluralidade de blocos do primeiro componente de cor é gerada a partir do particionamento de amostras do primeiro componente de cor de acordo com uma primeira árvore de partição, e o bloco do segundo componente de cor é gerado a partir do particionamento de amostras do segundo componente de cor de acordo com uma segunda árvore de partição; particione o bloco do segundo componente de cor com base na primeira árvore de partição para gerar sub- blocos do segundo componente de cor que correspondem cada um a um bloco da pluralidade de blocos do primeiro componente de cor;
determine um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor que são preditos no modo de predição de cópia intra-bloco (IBC) com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor; e codifique o bloco do segundo componente de cor com base em um ou mais vetores de bloco determinados.
30. Dispositivo para codificar dados de vídeo, que compreende: meios para determinar uma pluralidade de blocos de um primeiro componente de cor que corresponde a um bloco de um segundo componente de cor, em que a pluralidade de blocos do primeiro componente de cor é gerada a partir do particionamento de amostras do primeiro componente de cor de acordo com uma primeira árvore de partição, e o bloco do segundo componente de cor é gerado a partir do particionamento de amostras do segundo componente de cor de acordo com uma segunda árvore de partição; meios para particionar o bloco do segundo componente de cor com base na primeira árvore de partição para gerar sub-blocos do segundo componente de cor que correspondem cada um a um bloco da pluralidade de blocos do primeiro componente de cor; meios para determinar um ou mais vetores de bloco para um ou mais dos sub-blocos do segundo componente de cor que são preditos no modo de predição de cópia intra-bloco (IBC) com base em um ou mais vetores de bloco de um ou mais blocos correspondentes da pluralidade de blocos do primeiro componente de cor; e meios para codificar o bloco do segundo componente de cor com base em um ou mais vetores de bloco determinados.
BR112020016133-0A 2018-02-08 2019-02-07 Cópia intra-bloco para codificação de vídeo BR112020016133A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862628101P 2018-02-08 2018-02-08
US62/628,101 2018-02-08
US16/269,349 US11012715B2 (en) 2018-02-08 2019-02-06 Intra block copy for video coding
US16/269,349 2019-02-06
PCT/US2019/017055 WO2019157186A1 (en) 2018-02-08 2019-02-07 Intra block copy for video coding

Publications (1)

Publication Number Publication Date
BR112020016133A2 true BR112020016133A2 (pt) 2020-12-08

Family

ID=67475818

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020016133-0A BR112020016133A2 (pt) 2018-02-08 2019-02-07 Cópia intra-bloco para codificação de vídeo

Country Status (8)

Country Link
US (1) US11012715B2 (pt)
EP (1) EP3750317A1 (pt)
KR (1) KR20200116462A (pt)
CN (1) CN111684806B (pt)
BR (1) BR112020016133A2 (pt)
SG (1) SG11202006301YA (pt)
TW (1) TW201941605A (pt)
WO (1) WO2019157186A1 (pt)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114615493A (zh) * 2016-03-24 2022-06-10 英迪股份有限公司 视频解码方法、视频编码方法和可读记录介质
US10687071B2 (en) 2018-02-05 2020-06-16 Tencent America LLC Method and apparatus for video coding
US20190273946A1 (en) * 2018-03-05 2019-09-05 Markus Helmut Flierl Methods and Arrangements for Sub-Pel Motion-Adaptive Image Processing
US10873748B2 (en) * 2018-05-12 2020-12-22 Qualcomm Incorporated Storage of high precision motion vectors in video coding
JP7104186B2 (ja) * 2018-06-05 2022-07-20 北京字節跳動網絡技術有限公司 Ibcとatmvpとの間でのインタラクション
WO2019234604A1 (en) 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Extended quad-tree with asymmetric sub-blocks
TWI746994B (zh) * 2018-06-19 2021-11-21 大陸商北京字節跳動網絡技術有限公司 用於不同參考列表的不同精確度
CN110636297B (zh) 2018-06-21 2021-05-14 北京字节跳动网络技术有限公司 分量相关的子块分割
CN110636298B (zh) 2018-06-21 2022-09-13 北京字节跳动网络技术有限公司 对于Merge仿射模式和非Merge仿射模式的统一约束
KR102631517B1 (ko) 2018-08-28 2024-01-30 후아웨이 테크놀러지 컴퍼니 리미티드 픽처 분할 방법 및 장치
TWI820196B (zh) 2018-08-28 2023-11-01 大陸商北京字節跳動網絡技術有限公司 用擴展四叉樹進行分割時的上下文編解碼
TWI815967B (zh) 2018-09-19 2023-09-21 大陸商北京字節跳動網絡技術有限公司 仿射模式編解碼的模式相關自適應調整運動矢量分辨率
WO2020065518A1 (en) 2018-09-24 2020-04-02 Beijing Bytedance Network Technology Co., Ltd. Bi-prediction with weights in video coding and decoding
US11140404B2 (en) * 2018-10-11 2021-10-05 Tencent America LLC Method and apparatus for video coding
WO2020089822A1 (en) 2018-10-31 2020-05-07 Beijing Bytedance Network Technology Co., Ltd. Overlapped block motion compensation with derived motion information from neighbors
CN112997480B (zh) 2018-11-10 2023-08-22 北京字节跳动网络技术有限公司 成对平均候选计算中的取整
CN117880493A (zh) 2018-11-13 2024-04-12 北京字节跳动网络技术有限公司 用于空域运动候选列表的构建方法
WO2020125798A1 (en) 2018-12-22 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Intra block copy mode with dual tree partition
WO2020133115A1 (zh) * 2018-12-27 2020-07-02 Oppo广东移动通信有限公司 编码预测方法、装置及计算机存储介质
US11800089B2 (en) * 2019-01-02 2023-10-24 Lg Electronics Inc. SbTMVP-based inter prediction method and apparatus
EP3907988A4 (en) * 2019-01-08 2022-06-29 Huawei Technologies Co., Ltd. Image prediction method, device, apparatus and system and storage medium
US11153590B2 (en) * 2019-01-11 2021-10-19 Tencent America LLC Method and apparatus for video coding
JP7235877B2 (ja) 2019-01-31 2023-03-08 北京字節跳動網絡技術有限公司 アフィンモード適応型動きベクトル解像度を符号化するためのコンテキスト
AU2020214083B2 (en) 2019-02-02 2023-06-01 Beijing Bytedance Network Technology Co., Ltd. Buffer management for intra block copy in video coding
KR20210123300A (ko) 2019-02-02 2021-10-13 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 관리
WO2020164627A1 (en) 2019-02-17 2020-08-20 Beijing Bytedance Network Technology Co., Ltd. Motion candidate list construction for intra block copy mode
KR102617439B1 (ko) * 2019-02-26 2023-12-26 애플 인크. 영상 신호 부호화/복호화 방법 및 이를 위한 장치
WO2020173483A1 (en) * 2019-02-27 2020-09-03 Beijing Bytedance Network Technology Co., Ltd. Improvement on adaptive motion vector difference resolution in intra block copy mode
CN117395439A (zh) 2019-03-01 2024-01-12 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的基于方向的预测
CN117640927A (zh) 2019-03-04 2024-03-01 北京字节跳动网络技术有限公司 视频编解码中的帧内块复制中的实施方式方面
KR20210127709A (ko) * 2019-03-07 2021-10-22 디지털인사이트 주식회사 영상 부호화/복호화 방법 및 장치
WO2020184977A1 (ko) * 2019-03-11 2020-09-17 한국전자통신연구원 화면 내 블록 복사 기반 부호화/복호화 방법, 장치 및 비트스트림 저장매체
JP2022525876A (ja) * 2019-03-17 2022-05-20 北京字節跳動網絡技術有限公司 オプティカルフローベースの予測精緻化の計算
WO2020254459A1 (en) * 2019-06-20 2020-12-24 Interdigital Vc Holdings France, Sas Motion vector processing for video encoding and decoding
CN114175645B (zh) 2019-07-06 2024-04-12 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的虚拟预测缓冲
CA3146391A1 (en) 2019-07-10 2021-01-14 Beijing Bytedance Network Technology Co., Ltd. Sample identification for intra block copy in video coding
EP3981146A4 (en) 2019-07-11 2022-08-03 Beijing Bytedance Network Technology Co., Ltd. BITSTREAM CONFORMITY RESTRICTIONS FOR INTRA-BLOCK COPY IN VIDEO ENCODING
AU2020316548A1 (en) 2019-07-25 2022-02-24 Beijing Bytedance Network Technology Co., Ltd. Mapping restriction for intra-block copy virtual buffer
CN117499659A (zh) 2019-07-25 2024-02-02 北京字节跳动网络技术有限公司 帧内块复制虚拟缓冲区的尺寸限制
KR20220042125A (ko) * 2019-08-10 2022-04-04 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 서브픽처 디코딩에서의 버퍼 관리
US11218718B2 (en) * 2019-08-26 2022-01-04 Tencent America LLC Adaptive motion vector resolution signaling
CN114342410A (zh) 2019-09-05 2022-04-12 北京字节跳动网络技术有限公司 帧内块复制模式下块矢量的范围约束
WO2021052492A1 (en) 2019-09-20 2021-03-25 Beijing Bytedance Network Technology Co., Ltd. Luma mapping with chroma scaling
WO2021057751A1 (en) 2019-09-23 2021-04-01 Beijing Bytedance Network Technology Co., Ltd. Setting intra-block copy virtual buffer based on virtual pipeline data unit
CN117676135A (zh) 2019-10-18 2024-03-08 北京字节跳动网络技术有限公司 子图片与环路滤波之间的相互影响
KR20210138114A (ko) * 2019-12-23 2021-11-18 텐센트 아메리카 엘엘씨 비디오 코딩 방법 및 장치
CN115152229A (zh) * 2020-02-07 2022-10-04 抖音视界有限公司 merge估计区域下IBC块的BV列表构建过程
EP4094437A4 (en) 2020-02-24 2023-03-29 ByteDance Inc. INTERACTION BETWEEN SUBPICTURE AND TILE ROW SIGNALING
WO2021178501A1 (en) 2020-03-03 2021-09-10 Bytedance Inc. Controlling a scaling process using slice header signaling
WO2021185306A1 (en) 2020-03-18 2021-09-23 Beijing Bytedance Network Technology Co., Ltd. Intra block copy buffer and palette predictor update
CN111669581B (zh) * 2020-06-09 2022-12-20 浙江大华技术股份有限公司 视频编码方法及其相关装置
KR20230002091A (ko) * 2021-06-29 2023-01-05 주식회사 케이티 화면내 예측 기반의 비디오 신호 부호화/복호화 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체
WO2023008888A1 (ko) * 2021-07-26 2023-02-02 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체
WO2023062614A1 (ko) * 2021-10-12 2023-04-20 엘지전자 주식회사 영상 디코딩 방법 및 그 장치
WO2023182698A1 (ko) * 2022-03-24 2023-09-28 현대자동차주식회사 복원 루마 정보 기반 크로마 성분 예측을 위한 방법
WO2024010377A1 (ko) * 2022-07-05 2024-01-11 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체
WO2024085656A1 (ko) * 2022-10-18 2024-04-25 주식회사 윌러스표준기술연구소 비디오 신호 처리 방법 및 이를 위한 장치

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
EP3033886B1 (en) 2013-11-27 2021-01-06 HFI Innovation Inc. Method of video coding using prediction based on intra picture block copy
US9883197B2 (en) * 2014-01-09 2018-01-30 Qualcomm Incorporated Intra prediction of chroma blocks using the same vector
US10531116B2 (en) 2014-01-09 2020-01-07 Qualcomm Incorporated Adaptive motion vector resolution signaling for video coding
US9860559B2 (en) * 2014-03-17 2018-01-02 Mediatek Singapore Pte. Ltd. Method of video coding using symmetric intra block copy
US10432928B2 (en) 2014-03-21 2019-10-01 Qualcomm Incorporated Using a current picture as a reference for video coding
US10477232B2 (en) * 2014-03-21 2019-11-12 Qualcomm Incorporated Search region determination for intra block copy in video coding
US10666968B2 (en) * 2014-05-06 2020-05-26 Hfi Innovation Inc. Method of block vector prediction for intra block copy mode coding
US10412387B2 (en) 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
JP2017532885A (ja) * 2014-09-26 2017-11-02 ヴィド スケール インコーポレイテッド 時間ブロックベクトル予測を用いたイントラブロックコピー符号化
US9918105B2 (en) 2014-10-07 2018-03-13 Qualcomm Incorporated Intra BC and inter unification
US9591325B2 (en) * 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
WO2016192678A1 (en) * 2015-06-03 2016-12-08 Mediatek Inc. Methods for palette coding of image and video data
US10306240B2 (en) * 2015-06-08 2019-05-28 Vid Scale, Inc. Intra block copy mode for screen content coding
US20160360205A1 (en) * 2015-06-08 2016-12-08 Industrial Technology Research Institute Video encoding methods and systems using adaptive color transform
US10368107B2 (en) 2016-08-15 2019-07-30 Qualcomm Incorporated Intra video coding using a decoupled tree structure
US10326986B2 (en) 2016-08-15 2019-06-18 Qualcomm Incorporated Intra video coding using a decoupled tree structure
US10979732B2 (en) 2016-10-04 2021-04-13 Qualcomm Incorporated Adaptive motion vector precision for video coding
EP3577898A4 (en) * 2017-01-31 2020-06-24 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR PARTITIONING A VIDEO BLOCK IMAGE FOR VIDEO CODING
US10820017B2 (en) * 2017-03-15 2020-10-27 Mediatek Inc. Method and apparatus of video coding
CN110495177B (zh) * 2017-04-13 2023-10-20 松下电器(美国)知识产权公司 解码装置、解码方法及存储介质
US10687071B2 (en) * 2018-02-05 2020-06-16 Tencent America LLC Method and apparatus for video coding

Also Published As

Publication number Publication date
EP3750317A1 (en) 2020-12-16
CN111684806A (zh) 2020-09-18
US11012715B2 (en) 2021-05-18
KR20200116462A (ko) 2020-10-12
CN111684806B (zh) 2024-03-15
TW201941605A (zh) 2019-10-16
WO2019157186A1 (en) 2019-08-15
SG11202006301YA (en) 2020-08-28
US20190246143A1 (en) 2019-08-08

Similar Documents

Publication Publication Date Title
BR112020016133A2 (pt) Cópia intra-bloco para codificação de vídeo
US11528500B2 (en) Partial/full pruning when adding a HMVP candidate to merge/AMVP
KR102261696B1 (ko) Fruc 를 위한 저 복잡도 설계
US11153557B2 (en) Which LUT to be updated or no updating
US20210377545A1 (en) Interaction between lut and shared merge list
US20230064498A1 (en) Interaction between lut and amvp
US20200404319A1 (en) Checking order of motion candidates in lut
BR112021009558A2 (pt) simplificação da predição de vetor de movimento baseada em histórico
BR112019013684A2 (pt) reconstruções de vetor de movimento para fluxo ótico bidirecional (bio)
BR112021005357A2 (pt) aprimoramentos em preditor de vetor de movimento baseado em histórico
EP3791587A1 (en) Resetting of look up table per slice/tile/lcu row
WO2020003267A1 (en) Restriction of merge candidates derivation
BR112020014522A2 (pt) Derivação aprimorada de vetor de movimento no lado de decodificador
WO2020065518A1 (en) Bi-prediction with weights in video coding and decoding
BR112021002967A2 (pt) predição de movimento afim
BR112020006588A2 (pt) predição afim em codificação de vídeo
WO2019147826A1 (en) Advanced motion vector prediction speedups for video coding
WO2018200960A1 (en) Gradient based matching for motion search and derivation
EP3738310A1 (en) Video coding using local illumination compensation
EP3756352A1 (en) Simplified local illumination compensation
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
BR112021009732A2 (pt) padrões de predição de vetor de movimento espaço-temporal para codificação de vídeo
BR112020025982A2 (pt) sinalização de preditor de vetor de movimento de unidade de subpredição
CN110719463A (zh) 用时间信息扩展基于查找表的运动矢量预测
CN110719465A (zh) 用时间信息扩展基于查找表的运动矢量预测

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]
B11A Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing
B11Y Definitive dismissal - extension of time limit for request of examination expired [chapter 11.1.1 patent gazette]