BR112021002219A2 - lista de candidatos baseada em histórico com classificação - Google Patents

lista de candidatos baseada em histórico com classificação Download PDF

Info

Publication number
BR112021002219A2
BR112021002219A2 BR112021002219-8A BR112021002219A BR112021002219A2 BR 112021002219 A2 BR112021002219 A2 BR 112021002219A2 BR 112021002219 A BR112021002219 A BR 112021002219A BR 112021002219 A2 BR112021002219 A2 BR 112021002219A2
Authority
BR
Brazil
Prior art keywords
candidate list
history
subset
candidates
based candidate
Prior art date
Application number
BR112021002219-8A
Other languages
English (en)
Inventor
Wei-Jung Chien
Chun-Chi Chen
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 BR112021002219A2 publication Critical patent/BR112021002219A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

são descritas técnicas para operações de lista de candidatos baseada em histórico na codificação de vídeo para determinar informações de movimento para um bloco atual. em um exemplo, um dispositivo para decodificar dados de vídeo inclui uma memória configurada para armazenar uma lista de candidatos baseada em histórico e um decodificador de vídeo. o decodificador de vídeo é configurado para construir a lista de candidatos baseada em histórico ao armazenar, na memória, informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico, identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico, e reconstruir um bloco atual com base na lista de candidatos gerada.

Description

“LISTA DE CANDIDATOS BASEADA EM HISTÓRICO COM CLASSIFICAÇÃO”
[0001] Este pedido reivindica a prioridade do pedido nº U.S. 16/540.893, depositado em 14 de agosto de 2019, que reivindica o benefício do pedido provisório nº U.S. 62/764.851, depositado em 16 de agosto de 2018, cujo conteúdo total de ambos é incorporado a título de referência ao presente documento.
CAMPO DA TÉCNICA
[0002] Esta revelação se refere à encodificação de vídeo e à decodificação de vídeo.
ANTECEDENTES
[0003] Capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores do tipo laptop ou desktop, computadores do tipo tablet, leitores de e-book, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones celulares ou de rádio via satélite, assim chamados “telefones inteligentes”, dispositivos de teleconferência de vídeo, dispositivos de transmissão contínua de vídeo e similares. Os dispositivos de vídeo digital implementam técnicas de codificação de vídeo, tais como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), padrão de Codificação de Vídeo de Alta Eficiência (HEVC), ITU-T H.265/Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, encodificar, decodificar e/ou armazenar informações de vídeo digital de maneira mais eficiente implementando-se tais técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou remover redundância inerente às sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, uma imagem de vídeo ou uma porção de uma imagem de vídeo) pode ser particionada em blocos de vídeo, que também podem ser chamados de unidades de árvore de codificação (CTUs), unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são encodificados com o uso de predição espacial em relação às amostras de referência nos blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem pode usar predição espacial em relação às amostras de referência nos blocos vizinhos na mesma imagem ou predição temporal em relação às amostras de referência em outras imagens de referência. As imagens podem ser chamadas de quadros, e imagens de referência podem ser chamadas de quadros de referência.
SUMÁRIO
[0005] Em geral, esta revelação descreve técnicas relacionadas ao uso de listas de candidatos baseadas em histórico na geração de uma lista de candidatos (por exemplo, lista de mesclagem ou lista de predição de vetor de movimento avançada (AMVP)). Na construção de lista de candidatos baseada em histórico, um codificador de vídeo (por exemplo, encodificador de vídeo ou decodificador de vídeo) armazena informações de movimento de blocos reconstruídos (por exemplo, blocos reconstruídos pelo decodificador de vídeo ou blocos reconstruídos, reconstruídos como parte de um laço de decodificação em um encodificador de vídeo). Os blocos reconstruídos não necessariamente precisam ser blocos espacial ou temporalmente vizinhos. O codificador de vídeo então gera uma lista de candidatos com o uso da lista de candidatos baseada em histórico.
[0006] Esta revelação descreve técnicas exemplificativas para incluir seletivamente um subconjunto dos candidatos a partir da lista de candidatos baseada em histórico em uma lista de candidatos final (por exemplo, lista de candidatos de mesclagem final ou AMVP) que reduz as chances de candidatos redundantes na lista de candidatos. Dessa maneira, há diversidade nas informações de movimento que podem ser usadas para determinar um vetor de movimento de um bloco atual, que promove eficiência de largura de banda e aprimora o processo de codificação de vídeo total. As técnicas exemplificativas podem ser aplicadas a qualquer um dos codecs de vídeo existentes e em desenvolvimento, tais como HEVC (Codificação de Vídeo de Alta Eficiência), VVC (Codificação de Vídeo Versátil) ou ser uma ferramenta de codificação que corresponde a qualquer outro padrão de codificação de vídeo.
[0007] Em um exemplo, a revelação descreve um método para decodificar dados de vídeo, sendo que o método compreende construir uma lista de candidatos baseada em histórico ao armazenar informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico, identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico, e reconstruir um bloco atual com base na lista de candidatos gerada.
[0008] Em um exemplo, a revelação descreve um dispositivo para decodificar dados de vídeo, sendo que o dispositivo compreende uma memória configurada para armazenar uma lista de candidatos baseada em histórico e um processador. O processador é configurado para construir a lista de candidatos baseada em histórico ao armazenar, na memória, informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico, identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico, e reconstruir um bloco atual com base na lista de candidatos gerada.
[0009] Em um exemplo, a revelação descreve um método para encodificar dados de vídeo, sendo que o método compreende construir uma lista de candidatos baseada em histórico ao armazenar informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico, identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico, e sinalizar informações indicativas de um índice para a lista de candidatos gerada para identificar informações de movimento usadas para reconstruir um bloco atual.
[0010] Em um exemplo, a revelação descreve um dispositivo para encodificar dados de vídeo, sendo que o dispositivo compreende uma memória configurada para armazenar uma lista de candidatos baseada em histórico e um processador configurado para construir a lista de candidatos baseada em histórico ao armazenar, na memória, informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico, identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico, e sinalizar informações indicativas de um índice para a lista de candidatos gerada para identificar informações de movimento usadas para reconstruir um bloco atual.
[0011] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetivos e vantagens se tornarão evidentes a partir da descrição e dos desenhos.
BREVE DESCRIÇÃO DOS DESENHOS
[0012] A Figura 1 é um diagrama de blocos que ilustra um sistema de encodificação e decodificação de vídeo exemplificativo que pode realizar as técnicas desta revelação.
[0013] As Figuras 2A e 2B são diagramas conceituais que ilustram exemplos de candidatos de vetor de movimento vizinho espacial para modos de mesclagem e predição de vetor de movimento avançada (AMVP), respectivamente.
[0014] As Figuras 3A e 3B são diagramas conceituais que ilustram exemplos de um candidato preditor de vetor de movimento temporal (TMVP) e escalonamento de vetor de movimento para TMVP, respectivamente.
[0015] A Figura 4 é um diagrama conceitual que ilustra exemplos de busca de candidatos de mesclagem espacial não adjacentes.
[0016] A Figura 5 é um diagrama conceitual que ilustra exemplos de um particionamento de unidade de codificação (CU) em uma unidade de árvore de codificação (CTU), em que a ordem de codificação é A—B—C—D.
[0017] A Figura 6 é um diagrama conceitual que ilustra exemplos de divisão de uma lista em listas primeiro a entrar, primeiro a sair (FIFO) independentes.
[0018] A Figura 7 é um diagrama de blocos que ilustra um encodificador de vídeo exemplificativo que pode realizar as técnicas desta revelação.
[0019] A Figura 8 é um diagrama de blocos que ilustra um decodificador de vídeo exemplificativo que pode realizar as técnicas desta revelação.
[0020] A Figura 9 é um fluxograma que ilustra um método exemplificativo de encodificação de dados de vídeo.
[0021] A Figura 10 é um fluxograma que ilustra um método exemplificativo de decodificação de dados de vídeo.
DESCRIÇÃO DETALHADA
[0022] 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), incluindo suas extensões de Codificação de Vídeo Escalonável (SVC) e Codificação de Vídeo Multivistas (MVC).
[0023] Além disso, um padrão de codificação de vídeo, a saber Codificação de Vídeo de Alta Eficiência (HEVC) ou ITU-T H.265, incluindo sua extensão de faixa, extensão multivista (MVHEVC) e extensão escalonável (SHVC), foi desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (Joint Collaboration Team on Video Coding (JCT-VC)), assim como Equipe de Colaboração Conjunta em Desenvolvimento de Extensão de Codificação de Vídeo 3D (Joint Collaboration Team on 3D Video Coding Extension Development (JCT-3V)) do Grupo de Especialistas de Codificação de Vídeo da ITU-T (ITU-T Video Coding Experts Group(VCEG)) e Grupo de Especialistas em Imagens em Movimento da ISO/IEC (ISO/IEC Motion Picture Experts Group (MPEG)).
[0024] Um projeto de especificação HEVC, e denominado como HEVC WD doravante, está disponível em http://phenix.int- evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC- N1003-vl.zip. A citação para o padrão HEVC é: TU-T H.265, Series H: Audiovisual and Multimedia Systems, Infrastructure of audiovisual services - Coding of moving video, Advanced codificação de vídeo for generic audiovisual services, The International Telecommunication Union. abril de 2015, página 634
[0025] ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) estão estudando agora a necessidade potencial de padronização da tecnologia de codificação de vídeo futura com uma capacidade de compactação que excede significativamente aquela do padrão HEVC atual (incluindo suas extensões atuais e extensões de curto prazo para codificação de conteúdo de tela e codificação de alta faixa dinâmica). Os grupos estão trabalhando em conjunto nessa atividade de exploração em um esforço de colaboração conjunta conhecido como a Equipe de Especialistas em Vídeo Conjunta (Joint Video Experts Team (JVET)) para avaliar os projetos de tecnologia de compactação propostos por seus especialistas nessa área. A JVET se reuniu pela primeira vez durante 19 a 21 de outubro de 2015, e a versão mais recente do software de referência, isto é, Joint Exploration Model 7 (JEM7) está disponível, com acesso exigido,em: https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/H M-16.6-JEM-7.0/. A descrição de algoritmo de JEM7 poderia ser chamada de JVET-G1001.
[0026] JEM 7 também é chamado de ITU-T H.266 ou Codificação de Vídeo Versátil (VVC). Uma versão recente do padrão VVC é descrita em Bross, et al. “Versatile Video Coding (Draft 5)”, Joint Video Experts Team (JVET) do ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 14ª Reunião: Genebra, CH, 19 a 27 de março de 2019, JVET-N1001-v5 (doravante “VVC Versão 5”). As técnicas desta revelação,
entretanto, não se limitam a nenhum padrão de codificação particular.
[0027] Conforme descrito em mais detalhes abaixo, na codificação de vídeo (por exemplo, encodificação ou decodificação), um bloco atual é interpredito com base em um bloco de predição. Por exemplo, um encodificador de vídeo determina um residual (por exemplo, diferença) entre o bloco atual e o bloco de predição e sinaliza a diferença. Um decodificador de vídeo recebe o residual e adiciona o residual ao bloco de predição para reconstruir o bloco atual.
[0028] O codificador de vídeo (por exemplo, encodificador de vídeo ou decodificador de vídeo) identifica o bloco de predição com um vetor de movimento. Em alguns exemplos, o encodificador de vídeo pode sinalizar informações (por exemplo, valores x e y) do vetor de movimento para o decodificador de vídeo. Entretanto, para reduzir a quantidade de informações que é sinalizada, pode ser possível que o decodificador de vídeo determine o vetor de movimento para o bloco atual com base nas informações de movimento de blocos reconstruídos. Por exemplo, no modo de mesclagem ou modo de predição de vetor de movimento avançada (AMVP), um codificador de vídeo pode construir uma lista de candidatos de informações de movimento com base nas informações de movimento de blocos espacial e/ou temporalmente vizinhos ao bloco atual. O encodificador de vídeo sinaliza informações indicativas de um índice para a lista de candidatos, e o decodificador de vídeo recupera as informações de movimento a partir da lista de candidatos com base no índice e determina o vetor de movimento para o bloco atual com base nas informações de movimento recuperadas.
[0029] De acordo com um ou mais exemplos descritos nesta revelação, um codificador de vídeo pode construir uma lista de candidatos baseada em histórico. A lista de candidatos baseada em histórico inclui informações de movimento de blocos reconstruídos, porém não se limita aos blocos espacial e/ou temporalmente vizinhos do bloco atual. Em alguns exemplos, para construir a lista de candidatos final (por exemplo, lista de candidatos de mesclagem final ou AMVP), o codificador de vídeo adiciona a lista de candidatos baseada em histórico a uma lista de candidatos de mesclagem inicial ou AMVP.
[0030] Entretanto, pode ser possível alcançar o melhor desempenho de codificação de vídeo simplesmente não adicionando a lista de candidatos baseada em histórico à lista de candidatos de mesclagem inicial ou AMVP. Por exemplo, o tamanho da lista de candidatos (por exemplo, lista de candidatos de mesclagem ou AMVP) pode ser fixo. Portanto, certos candidatos da lista baseada em histórico podem ser descartados se a adição desses candidatos fizer com que o tamanho da lista de candidatos seja maior que seu tamanho fixo.
[0031] Entretanto, há uma chance de que alguns dos candidatos que são descartados poderiam realmente fornecer uma seleção de candidatos mais robusta para determinar o vetor de movimento para o bloco atual. Por exemplo, informações de movimento de blocos espacialmente próximos podem ser similares (por exemplo, um primeiro bloco e um segundo bloco que são espacialmente próximos, tais como vizinhos, podem ter vetores de movimento que são menos de 20% diferentes ou podem identificar a mesma imagem de referência, como exemplos não limitantes). Se a lista baseada em histórico incluiu informações de movimento de dois blocos espacialmente próximos, então há uma probabilidade mais alta de que as informações de movimento para os dois blocos espacialmente próximos sejam similares. Se as informações de movimento de ambos desses blocos espacialmente próximos forem incluídas na lista de candidatos final, pode não haver diversidade suficiente nas informações de movimento para assegurar que o candidato ideal seja selecionado, especialmente quando alguns dos outros candidatos da lista de candidatos baseada em histórico são descartados. Em outras palavras, pode não haver muitos, se houver, ganhos de codificação de vídeo ao incluir informações de movimento de ambos desses blocos espacialmente próximos na lista de candidatos final em comparação com a inclusão de informações de movimento apenas de um desses blocos espacialmente próximos, especialmente se outros candidatos da lista de candidatos baseada em histórico forem descartados da lista de candidatos final.
[0032] Como outro exemplo, há uma alta probabilidade de que as informações de movimento dos blocos mais recentemente reconstruídos já existam na lista de candidatos inicial (por exemplo, nas listas de candidatos de mesclagem inicial ou AMVP antes de incluir a lista de candidatos baseada em histórico). Portanto, a adição de informações de movimento de um ou mais dos blocos mais recentemente reconstruídos para gerar a lista de candidatos
(por exemplo, gerar a lista de candidatos final) pode não fornecer nenhum ganho de codificação de vídeo adicional, e pode impactar negativamente os ganhos de codificação de vídeo devido ao fato de que outros candidatos possivelmente melhores são descartados da lista de candidatos final.
[0033] Esta revelação descreve uma ou mais técnicas exemplificativas para gerar a lista de candidatos (por exemplo, lista de candidatos de mesclagem final ou AMVP) ao incluir um subconjunto dos candidatos na lista de candidatos baseada em histórico. Em alguns exemplos, o subconjunto dos candidatos na lista de candidatos baseada em histórico inclui um ou mais candidatos excluindo um ou mais candidatos que correspondem aos blocos recentemente reconstruídos. Os blocos recentemente reconstruídos se referem a um ou mais blocos que são imediatamente reconstruídos antes que o bloco atual seja encodificado ou decodificado. Em alguns exemplos, os blocos recentemente reconstruídos são os dois blocos que são imediatamente reconstruídos antes do bloco atual. O bloco mais recentemente reconstruído é o bloco que é imediatamente reconstruído antes do bloco atual. Desse modo, as técnicas podem excluir um ou mais candidatos que provavelmente já estão na lista de candidatos inicial.
[0034] Em alguns exemplos, o subconjunto de candidatos na lista de candidatos baseada em histórico inclui um ou mais candidatos que resultam da subamostragem da lista de candidatos baseada em histórico. Por exemplo, todo quarto candidato da lista de candidatos baseada em histórico é selecionado. Por meio da subamostragem da lista de candidatos baseada em histórico, informações de movimento de blocos reconstruídos espacialmente próximos (por exemplo, blocos reconstruídos três blocos uns dos outros nos exemplos em que todo quarto candidato é selecionado) podem não ser incluídas na lista de candidatos final. Como um exemplo, há cinco blocos reconstruídos (por exemplo, primeiro, segundo, terceiro, quarto e quinto blocos reconstruídos) que são reconstruídos nessa ordem. Uma vez que a codificação de bloco é realizada em uma ordem de varredura raster, o primeiro e o segundo blocos reconstruídos podem ser mais próximos uns dos outros que o primeiro e o quinto blocos reconstruídos. Devido ao fato de que o primeiro e o segundo blocos reconstruídos estão próximos, há uma probabilidade mais alta de que as informações de movimento para o primeiro e o segundo blocos reconstruídos sejam similares às informações de movimento para o primeiro e o quinto blocos reconstruídos que não estão tão próximos.
[0035] Em um ou mais exemplos, um codificador de vídeo pode selecionar as informações de movimento para o primeiro e o quinto blocos reconstruídos para inclusão na lista de candidatos (por exemplo, selecionar todo quarto candidato da lista de candidatos baseada em histórico), em vez do primeiro e do segundo blocos reconstruídos. isso pode ocorrer devido ao fato de que há pouco ganho de codificação de vídeo ter as informações de movimento tanto para o primeiro como o segundo blocos reconstruídos, uma vez que as informações de movimento são similares, em comparação com a garantia de que as informações de movimento para o primeiro e o quinto blocos reconstruídos estão presentes, uma vez que as informações de movimento podem não ser similares. Desse modo, há uma diversidade de informações de movimento que podem ser usadas para identificar o bloco de predição.
[0036] A Figura 1 é um diagrama de blocos que ilustra um sistema de encodificação e decodificação de vídeo exemplificativo 100 que pode realizar as técnicas desta revelação. As técnicas desta revelação são geralmente direcionadas à codificação (encodificaçã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. Desse modo, os dados de vídeo podem incluir vídeo bruto não codificado, vídeo encodificado, vídeo decodificado (por exemplo, reconstruído) e metadados de vídeo, tais como dados de sinalização.
[0037] Conforme mostrado na Figura 1, o sistema 100 inclui um dispositivo de origem 102 que fornece dados de vídeo encodificados a serem decodificados e exibidos por um dispositivo de destino 116, nesse exemplo. Em particular, o dispositivo de origem 102 fornece os dados de vídeo para o dispositivo de destino 116 através de um meio legível por computador 110. O dispositivo de origem 102 e o dispositivo de destino 116 podem ser qualquer um dentre uma ampla gama de dispositivos, incluindo computadores do tipo desktop, computadores do tipo notebook (isto é, computador do tipo laptop), computadores do tipo tablet, decodificadores de sinais, aparelhos de telefone, tais como telefones inteligentes, televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de jogos de vídeo, dispositivo de transmissão contínua de vídeo, dispositivo de exibição montados na cabeça (EIMD), dispositivos XR (por exemplo, dispositivos de realidade virtual, dispositivos de realidade aumentada e dispositivos de realidade mista) ou similares. Em alguns casos, o dispositivo de origem 102 e o dispositivo de destino 116 podem ser equipados para comunicação sem fio e, desse modo, podem ser denominados como dispositivo de comunicação sem fio.
[0038] No exemplo da Figura 1, o dispositivo de origem 102 inclui fonte de vídeo 104, memória 106, encodificador de vídeo 200 e interface de saída 108. O dispositivo de destino 116 inclui interface de entrada 122, decodificador de vídeo 300, memória 120 e dispositivo de exibição 118. De acordo com esta revelação, o encodificador 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 construir uma lista de mesclagem baseada em histórico ou de predição de vetor de movimento avançada (AMVP). Desse modo, o dispositivo de origem 102 representa um exemplo de um dispositivo de encodificaçã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. Igualmente, o dispositivo de destino 116 pode fazer interface com um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0039] O sistema 100, conforme mostrado na
Figura 1 é meramente um exemplo. Em geral, qualquer dispositivo de encodificação e/ou decodificação de vídeo digital pode realizar técnicas para construir uma lista de mesclagem baseada em histórico ou lista AMVP. O dispositivo de origem 102 e o dispositivo de destino 116 são meramente exemplos de tais dispositivos de codificação em que o dispositivo de origem 102 gera dados de vídeo codificados para transmissão para o dispositivo de destino 116. Esta revelação se refere a um dispositivo de “codificação” como um dispositivo que realiza codificação (encodificação e/ou decodificação) de dados. Desse modo, o encodificador de vídeo 200 e o decodificador de vídeo 300 representam exemplos de dispositivos de codificação, em particular, um encodificador de vídeo e um decodificador de vídeo, respectivamente. Em alguns exemplos, os dispositivos 102, 116 podem operar de uma maneira substancialmente simétrica, de modo que cada um dos dispositivos 102, 116 inclua componentes de encodificaçã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, por exemplo, para transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo ou videotelefonia.
[0040] Em geral, a fonte de vídeo 104 representa uma fonte de dados de vídeo (isto é, dados de vídeo brutos não codificados) e fornece uma série de imagens sequenciais (também denominada como “quadros”) dos dados de vídeo para o encodificador de vídeo 200, que encodifica 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 contendo vídeo bruto anteriormente capturado 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 uma alternativa adicional, a fonte de vídeo 104 pode gerar dados baseados em computação gráfica 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 encodificador de vídeo 200 encodifica os dados de vídeo capturados, pré- capturados ou gerados por computador. O encodificador de vídeo 200 pode reorganizar as imagens a partir da ordem recebida (algumas vezes denominada como “ordem de exibição”) em uma ordem de codificação para codificação. O encodificador de vídeo 200 pode gerar um fluxo de bits que inclui dados de vídeo encodificados. O dispositivo de origem 102 pode, então, emitir os dados de vídeo encodificados através da interface de saída 108 no meio legível por computador 110 para recepção e/ou recuperação, por exemplo, pela interface de entrada 122 do dispositivo de destino 116.
[0041] A memória 106 do dispositivo de origem 102 e a memória 120 do dispositivo de destino 116 representam memórias de propósito geral. Em alguns exemplos, as memórias 106, 120 podem armazenar dados de vídeo brutos, por exemplo, dados de vídeo brutos a partir da fonte de vídeo 104 e dados de vídeo brutos decodificados a partir do decodificador de vídeo 300. Adicional ou alternativamente, as memórias 106, 120 podem armazenar instruções de software executáveis, por exemplo, pelo encodificador de vídeo 200 e pelo decodificador de vídeo 300, respectivamente. Embora mostrado separadamente do encodificador de vídeo 200 e do decodificador de vídeo 300 nesse exemplo, deve-se compreender que o encodificador de vídeo 200 e o decodificador de vídeo 300 também podem incluir memórias internas para propósitos funcionalmente similares ou equivalentes. Além disso, as memórias 106, 120 podem armazenar dados de vídeo encodificados, por exemplo, emitidos a partir do encodificador de vídeo 200 e inseridos no decodificador de vídeo 300. Em alguns exemplos, as porções das memórias 106, 120 podem ser alocadas como um ou mais buffers de vídeo, por exemplo, para armazenar dados de vídeo brutos decodificados e/ou encodificados.
[0042] O meio legível por computador 110 pode representar qualquer tipo de meio ou dispositivo com capacidade de transportar os dados de vídeo encodificados a partir do dispositivo de origem 102 para o dispositivo de destino 116. Em um exemplo, o meio legível por computador 110 representa um meio de comunicação para permitir que o dispositivo de origem 102 transmita dados de vídeo encodificados diretamente para o dispositivo de destino 116 em tempo real, por exemplo, através de uma rede de radiofrequência ou rede baseada em computador. A interface de saída 108 pode modular um sinal de transmissão que inclui os dados de vídeo encodificados, 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 incluir um ou tanto um meio de comunicação sem fio como com fio, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão física. O meio de comunicação pode fazer parte de uma rede baseada em pacote,
tal como rede local, uma rede de longa distância 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 pode ser útil para facilitar a comunicação do dispositivo de origem 102 para o dispositivo de destino 116.
[0043] Em alguns exemplos, o dispositivo de origem 102 pode emitir os dados encodificados a partir da interface de saída 108 para o dispositivo de armazenamento
112. De modo similar, o dispositivo de destino 116 pode acessar os dados encodificados a partir do dispositivo de armazenamento 112 através da interface de entrada 122. O dispositivo de armazenamento 112 pode incluir qualquer uma dentre uma variedade de mídias de armazenamento de dados distribuídos ou localmente acessados, tal como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outra mídia de armazenamento digital adequada para armazenar dados de vídeo encodificados.
[0044] Em alguns exemplos, o dispositivo de origem 102 pode emitir os dados de vídeo encodificados para o servidor de arquivos 114 ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo encodificado 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 através de transmissão contínua ou download. O servidor de arquivos 114 pode ser qualquer tipo de dispositivo servidor com capacidade para armazenar dados de vídeo encodificados e transmitir esses dados de vídeo encodificados para o dispositivo de destino 116. O servidor de arquivos 114 pode representar um servidor da web (por exemplo, para um site da web), um servidor de Protocolo de Transferência de Arquivos (FTP), um dispositivo de rede de distribuição de conteúdo ou um dispositivo de armazenamento conectado à rede (NAS). O dispositivo de 116 pode acessar dados de vídeo encodificados a partir do servidor de arquivos 114 através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), um conexão com fio (por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambos que seja adequada para acessar dados de vídeo encodificados armazenados em um servidor de arquivos 114. O servidor de arquivos 114 e a interface de entrada 122 podem ser configurados para operar de acordo com um protocolo de transmissão contínua, um protocolo de transmissão por download ou uma combinação dos mesmos.
[0045] A interface de saída 108 e a interface de entrada 122 podem representar transmissores/receptores sem fio, modems, componentes de rede com fio (por exemplo, placas Ethernet), componentes de comunicação sem fio que operam de acordo com qualquer um dentre uma variedade de padrões IEEE 802.11 ou outros componentes físicos. Nos exemplos em que a interface de saída 108 e a interface de entrada 122 incluem componentes sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, tais como dados de vídeo encodificados, de acordo com um padrão de comunicação celular, tal como 4G, 4G-LTE (Evolução de Longo Prazo), LTE Avançada, 5G ou similares. Em alguns exemplos em que a interface de saída 108 inclui um transmissor sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, tais como dados de vídeo encodificados, de acordo com outros padrões sem fio, tal como uma especificação IEEE 802.11, uma especificação IEEE 802.15 (por exemplo, ZigBeeTM), um padrão BluetoothTM ou similares. Em alguns exemplos, o dispositivo de origem 102 e/ou dispositivo de destino 116 pode incluir os respectivos dispositivos de sistema em um chip (SoC). Por exemplo, o dispositivo de origem 102 pode incluir um dispositivo SoC para realizar a funcionalidade atribuída ao encodificador de vídeo 200 e/ou interface de saída 108, e o dispositivo de destino 116 pode incluir um dispositivo SoC para realizar a funcionalidade atribuída ao decodificador de vídeo 300 e/ou interface de entrada 122.
[0046] As técnicas desta revelação podem ser aplicadas à codificação de vídeo no suporte de qualquer uma dentre uma variedade de aplicações multimídia, tais como difusões de televisão over-the-air, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo por transmissão contínua na Internet, tal como transmissão contínua adaptável dinâmica através de HTTP (DASH), vídeo digital que é codificado em uma mídia de armazenamento de dados, decodificação de vídeo digital armazenado em uma mídia de armazenamento de dados ou outras aplicações.
[0047] A interface de entrada 122 do dispositivo de destino 116 recebe um fluxo de bits de vídeo encodificado a partir do meio legível por computador 110 (por exemplo, dispositivo de armazenamento 112, servidor de arquivos 114 ou similares). O meio legível por computador de fluxo de bits de vídeo encodificado 110 pode incluir informações de sinalização definidas pelo encodificador de vídeo 200, que também são usadas pelo decodificador de vídeo 300, tais como elementos de sintaxe que têm valores que descrevem as características e/ou processamento dos blocos de vídeo ou outras unidades codificadas (por exemplo, fatias, imagens, grupos de imagens, sequências ou similares). 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 dentre uma variedade de dispositivos de exibição, tal como um tubo de raios catódicos (CRT), uma tela de cristal líquido (LCD), uma tela de plasma, uma tela de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0048] Embora não seja mostrado na Figura 1, em alguns exemplos, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem ser, cada um, integrados a um encodificador de áudio e/ou decodificador de áudio, e podem incluir unidades MUX-DEMUX adequadas, ou outro hardware e/ou software, para manipular fluxos multiplexados que incluem tanto áudio como vídeo em um fluxo de dados comum. Se aplicável, as unidades MUX-DEMUX podem estar em conformidade com o protocolo de multiplexador ITU H.223, ou outros protocolos, tal como o protocolo de datagrama de usuário (UDP).
[0049] O encodificador de vídeo 200 e o decodificador de vídeo 300, cada um, podem ser implementados como qualquer um dentre uma variedade de conjuntos de circuitos de encodificador e/ou decodificador, tais como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são parcialmente implementadas em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitória adequado e executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas desta revelação. Cada um dentre o encodificador de vídeo 200 e o decodificador de vídeo 300 podem ser incluídos em um ou mais encodificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um encodificador/decodificador (CODEC) combinado em um respectivo dispositivo. Um dispositivo que inclui o encodificador de vídeo 200 e/ou decodificador de vídeo 300 pode incluir um circuito integrado, um microprocessador e/ou um dispositivo de comunicação sem fio dispositivo, tal como um telefone celular.
[0050] O encodificador de vídeo 200 e o decodificador de vídeo 300 podem operar, de acordo com um padrão de codificação de vídeo, tal como ITU-T H.265, também denominado como uma Codificação de Vídeo de Alta Eficiência (HEVC) ou extensões dessa, tais como as extensões de codificação de vídeo de visualização múltipla e/ou escalonável. Alternativamente, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com outros padrões proprietários ou da indústria,
tal como o Joint Exploration Test Model (JEM). As técnicas desta revelação, entretanto, não se limitam a nenhum padrão de codificação particular.
[0051] Em geral, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem realizar codificação de imagens baseada em bloco. O termo “bloco” geralmente se refere a uma estrutura que inclui os dados a serem processados (por exemplo, encodificados, decodificados ou, de outro modo, usados no processo de encodificação e/ou decodificação). Por exemplo, um bloco pode incluir uma matriz de amostras bidimensional de dados de luminância e/ou crominância. Em geral, o encodificador de vídeo 200 e o vídeo 300 podem codificar dados de vídeo representados em um formato YUV (por exemplo, Y, Cb, Cr). Ou seja, em vez de codificar os dados de vermelho, verde e azul (RGB) para amostras de uma imagem, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem codificar os componentes de luminância e crominância, em que os componentes de crominância podem incluir tanto componentes de crominância de matiz vermelho como de matiz azul. Em alguns exemplos, o encodificador de vídeo 200 converte os 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é e pós- processamento (não mostrado) podem realizar essas conversões.
[0052] Esta revelação pode se referir geralmente à codificação (por exemplo, encodificação e decodificação) de imagens para incluir o processo de encodificação ou decodificação de dados da imagem. De modo similar, esta revelação pode se referir à codificação de blocos de uma imagem para incluir o processo de encodificação ou decodificação de dados para os blocos, por exemplo, codificação de predição e/ou residual. Um fluxo de bits de vídeo encodificado geralmente inclui uma série de valores para elementos de sintaxe representativos de decisões de codificação (por exemplo, modos de codificação) e particionamento de imagens em blocos. Desse modo, as referências à codificação de uma imagem ou um bloco devem ser geralmente entendidas como valores de codificação para elementos de sintaxe que formam uma imagem ou bloco.
[0053] Como um exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para operar de acordo com HEVC. HEVC define vários blocos, incluindo unidades de codificação (CUs), unidades de predição (Pus) e unidades de transformação (TUs). De acordo com HEVC, um codificador de vídeo (tal como encodificador de vídeo 200) particiona uma unidade de árvore de codificação (CTU) em CUs de acordo com uma estrutura de árvore quaternária. Ou seja, o codificador de vídeo particiona CTUs e CUs em quatro quadrados não sobrepostos iguais, e cada nó da árvore quaternária tem zero ou quatro nós filhos. Os nós sem nós filhos podem ser chamados de “nós folha” e as CUs de tais nós folha podem incluir uma ou mais PUs e/ou uma ou mais TUs. O codificador de vídeo pode particionar adicionalmente as PUs e TUs. Por exemplo, em HEVC, uma árvore quaternária residual (RQT) representa o particionamento de TUs. Em HEVC, as PUs representam os dados de interpredição, enquanto as TUs representam os dados residuais. As CUs que são submetidas à intrapredição incluem informações de intrapredição, tal como uma indicação intramodo.
[0054] Como outro exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para operar de acordo com JEM. De acordo com JEM, um codificador de vídeo (tal como o encodificador de vídeo 200) particiona uma imagem em uma pluralidade de CTUs. O encodificador de vídeo 200 pode particionar uma CTU de acordo com uma estrutura de árvore, tal como uma estrutura de árvore quaternária-árvore binária (QTBT). A estrutura QTBT de JEM remove os conceitos de múltiplos tipos de partição, tal como a separação entre CUs, PUs e TUs da HEVC. A estrutura QTBT de JEM inclui dois níveis: um primeiro nível particionado de acordo com o particionamento de árvore quaternária, e um segundo nível particionado de acordo com o particionamento de árvore binária. Um nó raiz da estrutura QTBT corresponde a uma CTU. Os nós folha das árvores binárias correspondem às unidades de codificação (CUs). Em exemplos adicionais, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para operar de acordo com qualquer outro padrão de codificação, consistente com os exemplos descritos no presente documento.
[0055] Em alguns exemplos, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem usar uma única estrutura QTBT para representar cada um dos componentes de luminância e crominância, enquanto em outros exemplos, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem usar 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).
[0056] O encodificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para usar as estruturas de particionamento de árvore quaternária por HEVC, particionamento QTBT de acordo com JEM ou outras estruturas de particionamento. Para propósitos de explicação, a descrição das técnicas desta revelação é apresentada em relação ao particionamento QTBT. Entretanto, deve-se compreender que as técnicas desta revelação também podem ser aplicadas aos codificadores de vídeo configurados para usar particionamento de árvore quaternária, ou outros tipos de particionamento também.
[0057] Esta revelação pode usar “NxN” e “N por N” de forma 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, por exemplo, amostras 16x16 ou amostras 16 por 16. Em geral, uma CU 16x16 terá 16 amostras em uma direção vertical (y = 16) e 16 amostras em uma direção horizontal (x = 16). Igualmente, uma CU NxN tem geralmente N amostras em uma direção vertical e N amostras em uma direção horizontal, em que N representa um valor inteiro não negativo. As amostras em uma CU podem ser dispostas em fileiras e colunas. Além disso, as CUs não necessariamente precisam ter o mesmo número de amostras na direção horizontal que na direção vertical. Por exemplo, as CUs podem incluir amostras NxM, em que M não necessariamente é igual a N.
[0058] O encodificador de vídeo 200 encodifica os dados de vídeo para CUs que representam as informações de predição e/ou residuais, e outras informações. As informações de predição indicam como a CU deve ser prevista a fim de formar um bloco de predição para a CU. As informações residuais geralmente representam diferenças amostra por amostra entre as amostras da CU antes da encodificação e o bloco de predição.
[0059] Para predizer uma CU, o encodificador de vídeo 200 pode geralmente formar um bloco de predição para a CU através de interpredição ou intrapredição. A interpredição geralmente se refere à predição da CU a partir dos dados de uma imagem anteriormente codificada, enquanto que a intrapredição geralmente se refere à predição da CU a partir de dados anteriormente codificados da mesma imagem. Para realizar a interpredição, o encodificador de vídeo 200 pode gerar o bloco de predição com o uso de um ou mais vetores de movimento. O encodificador de vídeo 200 pode geralmente realizar uma pesquisa de movimento para identificar um bloco de referência que corresponde estritamente à CU, por exemplo, em termos de diferenças entre a CU e o bloco de referência. O encodificador de vídeo 200 pode calcular uma métrica de diferença com o uso de uma soma de diferença absoluta (SAD), soma de diferenças quadráticas (SSD), diferença absoluta média (MAD), diferenças médias quadráticas (MSD), ou outros tais cálculos de diferença para determinar se um bloco de referência corresponde estritamente à CU atual. Em alguns exemplos, o encodificador de vídeo 200 pode predizer a CU atual com o uso de predição unidirecional ou predição bidirecional.
[0060] JEM também fornece um modo de compensação de movimento afim, que pode ser considerado um modo de interpredição. No modo de compensação de movimento afim, o encodificador de vídeo 200 pode determinar dois ou mais vetores de movimento que representam o movimento não translacional, tal como ampliação ou redução, rotação, movimento em perspectiva ou outros tipos de movimento irregular.
[0061] Para realizar intrapredição, o encodificador de vídeo 200 pode selecionar um modo de intrapredição para gerar o bloco de predição. JEM fornece sessenta e sete modos de intrapredição, incluindo vários modos direcionais, assim como modo plano e modo DC. Em geral, o encodificador de vídeo 200 seleciona um modo de intrapredição que descreve amostras vizinhas para um bloco atual (por exemplo, um bloco de uma CU) a partir do qual se prediz as amostras do bloco atual. Tais amostras pode se situar geralmente acima, acima e à esquerda, ou à esquerda do bloco atual na mesma imagem que o bloco atual, supondo que o encodificador de vídeo 200 codifique as CTUs e CUs em ordem de varredura raster (da esquerda para a direita, de cima para baixo).
[0062] O encodificador de vídeo 200 encodifica dados que representam o modo de predição para um bloco atual. Por exemplo, para modos de interpredição, o encodificador de vídeo 200 pode encodificar dados que representam qual dos vários modos de interpredição disponíveis é usado, assim como as informações de movimento para o modo correspondente. Para interpredição unidirecional ou bidirecional, por exemplo, o encodificador de vídeo 200 pode encodificar vetores de movimento com o uso de predição de vetor de movimento avançada (AMVP) ou modo de mesclagem. O encodificador de vídeo 200 pode usar modos similares para encodificar vetores de movimento para o modo de compensação de movimento afim.
[0063] Após a predição, tal intrapredição ou interpredição de um bloco, o encodificador de vídeo 200 pode calcular dados residuais para o bloco. Os dados residuais, tal como um bloco residual, representam diferenças amostra por amostra entre o bloco e um bloco de predição para o bloco, formado com o uso do modo de predição correspondente. O encodificador de vídeo 200 pode aplicar uma ou mais transformadas ao bloco residual, para produzir dados transformados em um domínio de transformada em vez do domínio de amostra. Por exemplo, o encodificador de vídeo 200 pode aplicar uma transformada de cosseno discreta (DCT), uma transformada de número inteiro, uma transformada de ondaleta ou uma transformada conceitualmente similar aos dados de vídeo residuais. Adicionalmente, o encodificador de vídeo 200 pode aplicar uma transformada secundária após a 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 similares. O encodificador de vídeo 200 produz coeficientes de transformada após a aplicação de uma ou mais transformadas.
[0064] Conforme observado acima, após quaisquer transformadas para produzir coeficientes de transformada, o encodificador de vídeo 200 pode realizar a 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 reduzir possivelmente a quantidade de dados usados para representar os coeficientes, fornecendo compressão adicional. Ao realizar o processo de quantização, o encodificador de vídeo 200 pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes. Por exemplo, o encodificador de vídeo 200 pode arredondar um valor de n-bit para baixo até um valor de m-bit durante a quantização, em que n é maior que m. Em alguns exemplos, para realizar a quantização, o encodificador de vídeo 200 pode realizar um deslocamento à direita bit a bit do valor a ser quantizado.
[0065] Após a quantização, o encodificador de vídeo 200 pode realizar a varredura dos coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional incluindo os coeficientes de transformada quantizados. A varredura pode ser projetada para colocar os coeficientes de energia mais alta (e, portanto frequência mais baixa) na frente do vetor e colocar os coeficientes de transformada de energia mais baixa (e, portanto frequência mais alta) na parte posterior do vetor. Em alguns exemplos, o encodificador de vídeo 200 pode utilizar uma ordem de varredura predefinida para realizar a varredura dos coeficientes de transformada quantizados para produzir um vetor serializado e, então encodificar por entropia os coeficientes de transformada quantizados do vetor. Em outros exemplos, o encodificador de vídeo 200 pode realizar uma varredura adaptável. Após a varredura dos coeficientes de transformada quantizados para formar um vector unidimensional, o encodificador de vídeo 200 pode encodificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação aritmética binária adaptável ao contexto (CABAC). O encodificador de vídeo 200 também pode encodificar por entropia os valores para elementos de sintaxe que descrevem metadados associados aos dados de vídeo encodificados para uso pelo decodificador de vídeo 300 na decodificação dos dados de vídeo.
[0066] Para realizar CABAC, o encodificador de vídeo 200 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode se referir a , por exemplo, se os valores vizinhos do símbolo são valores iguais a zero ou não. A determinação de probabilidade pode se basear em um contexto atribuído ao símbolo.
[0067] O encodificador de vídeo 200 pode gerar adicionalmente dados de sintaxe, tais como dados de sintaxe baseados em bloco, dados de sintaxe baseados em imagem, e dados de sintaxe baseados em sequência, para o decodificador de vídeo 300, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia, ou outros dados de sintaxe, tal como um conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS) ou conjunto de parâmetros de vídeo (VPS). O decodificador de vídeo 300 pode decodificar igualmente tais dados de sintaxe para determinar como decodificar os dados de vídeo correspondentes.
[0068] Dessa maneira, o encodificador de vídeo 200 pode gerar um fluxo de bits incluindo dados de vídeo encodificados, por exemplo, elementos de sintaxe que descrevem o particionamento de uma imagem em blocos (por exemplo, CUs) e informações de predição e/ou residuais para os blocos. O decodificador de vídeo 300 pode receber o fluxo de bits e decodificar os dados de vídeo encodificados.
[0069] Em geral, o decodificador de vídeo 300 realiza um processo recíproco àquele realizado pelo encodificador de vídeo 200 para decodificar os dados de vídeo encodificados do fluxo de bits. Por exemplo, o decodificador de vídeo 300 pode decodificar valores para elementos de sintaxe do fluxo de bits com o uso de CABAC de uma maneira substancialmente similar, embora recíproca, ao processo de encodificação CABAC do encodificador de vídeo
200. Os elementos de sintaxe podem definir as 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 as CUs da CTU. Os elementos de sintaxe podem definir adicionalmente as informações de predição e residuais para os blocos (por exemplo, CUs) de dados de vídeo.
[0070] As informações residuais podem ser representadas, por exemplo, por coeficientes de transformada quantizados. O decodificador de vídeo 300 pode quantizar inversamente e transformar inversamente os coeficientes de transformada quantizados de um bloco para reproduzir um bloco residual para o bloco. O decodificador de vídeo 300 usa um modo de predição sinalizado (intra ou interpredição) e informações de predição relacionadas (por exemplo, informações de movimento para interpredição) para formar um bloco de predição para o bloco. O decodificador de vídeo 300 pode, então, combinar o bloco de predição e o bloco residual (em uma base amostra por amostra) para reproduzir o bloco original. O decodificador de vídeo 300 pode realizar processamento adicional, tal como realizar um processo de desblocagem para reduzir artefatos visuais ao longo dos limites do bloco.
[0071] Esta revelação pode se referir geralmente à “sinalização” de determinadas informações, tais como elementos de sintaxe. O termo “sinalização” pode se referir geralmente à comunicação de elementos de sintaxe de valores e/ou outros dados usados para decodificar os dados de vídeo encodificados. Ou seja, o encodificador de vídeo 200 pode sinalizar valores para os elementos de sintaxe no fluxo de bits. Em geral, a 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 não em tempo real, tal como pode ocorrer quando armazena elementos de sintaxe no dispositivo de armazenamento 112 para posterior recuperação pelo dispositivo de destino 116.
[0072] Conforme descrito acima, um modo exemplificativo no qual o encodificador de vídeo 200 e o decodificador de vídeo 300 podem encodificar ou decodificar, respectivamente, é usar o modo de mesclagem ou o modo AMVP. Tanto no modo de mesclagem como AMVP, o encodificador de vídeo 200 e o decodificador de vídeo 300 realizam uma operação para construir uma lista de candidatos (por exemplo, lista de mesclagem ou lista AMVP são dois exemplos da lista de candidatos). A lista de candidatos inclui informações de movimento de blocos espacial ou temporalmente vizinhos. Por exemplo, a lista de mesclagem inclui vetor de movimento e informações de lista de imagem de referência (por exemplo, se RefPicListO ou RefPicListl for usado) para blocos vizinhos. A lista AMVP inclui vetor de movimento e as informações de lista de imagem de referência e uma diferença de vetor de movimento (MVD) é sinalizada.
[0073] Devido ao fato de que o encodificador de vídeo 200 e o decodificador de vídeo 300 realizam as mesmas operações, a lista (ou listas) de candidatos é a mesma para o encodificador de vídeo 200 e o decodificador de vídeo 300. O encodificador de vídeo 200 pode identificar um candidato da lista de candidatos e sinalizar informações indicativas de um índice para a lista de candidatos. O decodificador de vídeo 300 pode determinar o índice para a lista de candidatos e determinar as informações de movimento para o bloco atual com base no candidato identificado pelo índice. As informações de movimento incluem um preditor de vetor de movimento. Para o modo de mesclagem, o vetor de movimento para o bloco atual é ajustado igual ao preditor de vetor de movimento. Para o modo AMVP, o encodificador de vídeo 200 pode sinalizar uma MVD entre o vetor de movimento para o bloco atual e o preditor de vetor de movimento. O decodificador de vídeo 300 adiciona a MVD ao preditor de vetor de movimento para determinar o vetor de movimento para o bloco atual.
[0074] Conforme descrito em mais detalhes abaixo, a predição de vetor de movimento baseada em histórico (HMVP) é agora uma parte da VVC. Na FIMVP, o encodificador de vídeo 200 e o decodificador de vídeo 300 mantêm uma lista de candidatos baseada em histórico que inclui informações de movimento de blocos reconstruídos. Um exemplo de um bloco reconstruído é um bloco reconstruído pelo decodificador de vídeo 300. O encodificador de vídeo 200 inclui um laço de reconstrução no qual o encodificador de vídeo 200 reconstrói um bloco encodificado. Outro exemplo de um bloco reconstruído é um bloco reconstruído pelo encodificador de vídeo 200 como parte do laço de reconstrução (também chamado de decodificação). Os blocos recentemente reconstruídos não precisam se limitar aos blocos espacial ou temporalmente vizinhos ao bloco atual.
[0075] Como parte da HMVP, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem adicionar a lista de candidatos baseada em histórico para gerar uma lista de candidatos. Por exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem gerar uma lista de candidatos inicial (por exemplo, lista de mesclagem ou AMVP). Então, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem adicionar a lista de candidatos baseada em histórico à lista de candidatos inicial para gerar a lista de candidatos final que é usada para o modo de mesclagem ou modo AMVP, como dois exemplos.
[0076] Entretanto, pode haver problemas técnicos se a lista de candidatos baseada em histórico for simplesmente adicionada à lista de candidatos inicial. O tamanho máximo da lista de candidatos pode ser definido. Consequentemente, em alguns casos, adicionar a lista de candidatos baseada em histórico à lista de candidatos inicial pode fazer com que a lista de candidatos final seja maior que o tamanho máximo. Em tais casos, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem descartar os candidatos da lista de candidatos baseada em histórico que fazem com que a lista de candidatos final seja maior que o tamanho máximo.
[0077] O descarte de candidatos da lista de candidatos baseada em histórico pode ser indesejável. Por exemplo, devido ao fato de que os blocos espacialmente vizinhos têm informações de movimento similares, se dois blocos na lista de candidatos baseada em histórico forem espacialmente vizinhos, a inclusão de informações de movimento para ambos os blocos na lista de candidatos final não forneceria diversidade de informações de movimento. Entretanto, a inclusão de informações de movimento para ambos os blocos na lista de candidatos final pode fazer com que alguns candidatos da lista de candidatos baseada em histórico que fornecem diversidade de informações de movimento sejam descartados.
[0078] Além disso, em alguns exemplos, alguns dos candidatos mais recentes na lista de candidatos baseada em histórico já podem estar presentes na lista de candidatos inicial. Consequentemente, a adição desses candidatos mais recentes na lista de candidatos baseada em histórico pode não fornecer nenhum benefício adicional.
[0079] De acordo com um ou mais exemplos descritos nesta revelação, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para construir uma lista de candidatos baseada em histórico ao armazenar informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico, identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, e gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico. O encodificador de vídeo 200 pode ser adicionalmente configurado para sinalizar informações indicativas de um índice para a lista de candidatos gerada para identificar informações de movimento usadas para reconstruir um bloco atual. O decodificador de vídeo 300 pode ser configurado para reconstruir um bloco atual com base na lista de candidatos gerada.
[0080] Dessa maneira, em vez de incluir toda a lista de candidatos baseada em histórico, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem incluir um subconjunto da lista de candidatos baseada em histórico. Em alguns exemplos, o subconjunto pode ser o resultado da subamostragem da lista de candidatos baseada em histórico, de modo que as informações de movimento dos blocos espacialmente vizinhos na lista de candidatos baseada em histórico não sejam incluídas na lista de candidatos gerada. Em alguns exemplos, o subconjunto pode ser o resultado da exclusão de informações de movimento do número N de blocos mais recentemente reconstruídos. O encodificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para identificar o subconjunto de candidatos com o uso de uma ou mais dentre subamostragem e exclusão de informações de movimento do número N de blocos mais recentemente reconstruídos.
[0081] Nos exemplos acima, a lista de candidatos que o encodificador de vídeo 200 e o decodificador de vídeo 300 geram pode ser a lista de mesclagem final ou lista AMVP (por exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 adicionam o subconjunto identificado de candidatos da lista de candidatos baseada em histórico à lista de mesclagem inicial ou lista AMVP). Em alguns exemplos, a lista de candidatos que o encodificador de vídeo 200 e o decodificador de vídeo 300 geram pode ser o subconjunto identificado de candidatos (por exemplo, o subconjunto identificado de candidatos não é adicionado à lista de mesclagem inicial ou lista AMVP, porém é sua própria lista autônoma). Em alguns exemplos, as técnicas descritas nesta revelação se estendem a outros tipos de listas de candidatos e não se limitam às listas de mesclagem e AMVP.
[0082] A seguir, analisa-se a estrutura CU e a predição de vetor de movimento na HEVC. Na HEVC, a maior unidade de codificação em uma fatia é chamada de um bloco de árvore de codificação (CTB) ou unidade de árvore de codificação (CTU). Um CTB contém uma árvore quaternária cujos nós são unidades de codificação.
[0083] O tamanho de um CTB pode se situar na faixa de 16x16 a 64x64 no perfil principal de HEVC (embora tecnicamente tamanhos de CTB 8x8 possam ser suportados). Uma unidade de codificação (CU) poderia ser do mesmo tamanho de um CTB até 8x8. Cada unidade de codificação é codificada com um modo, isto é inter ou intra. Quando uma CU é intercodificada, a mesma pode ser adicionalmente particionada em 2 ou 4 unidades de predição (PUs) ou se tornar apenas uma PU quando a partição adicional não se aplica. Quando duas PUs estão presentes em uma CU, elas podem ser retângulos com metade do tamanho ou dois retângulos com tamanho de 1/4 ou 3/4 da CU. Quando a CU é intercodificada, cada PU tem um conjunto de informações de movimento, que são derivadas de um modo de interpredição exclusivo.
[0084] A seguir, analisa-se a predição de vetor de movimento. No padrão HEVC, existem dois modos de interpredição, denominados modos de mesclagem (ignorar é considerado como um caso especial de mesclagem) e modos de predição de vetor de movimento avançada (AMVP), respectivamente, para uma unidade de predição (PU). No modo AMVP ou modo de mesclagem, uma lista de candidatos de vetor de movimento (MV) é mantida para múltiplos preditores de vetor de movimento. O vetor (ou vetores) de movimento, assim como índices de referência no modo de mesclagem, da PU atual são gerados obtendo-se um candidato da lista de candidatos MV. A lista de candidatos MV contém até 5 candidatos para o modo de mesclagem e apenas dois candidatos para o modo AMVP. Um candidato de mesclagem pode conter um conjunto de informações de movimento, por exemplo, vetores de movimento que correspondem a ambas as listas de imagem de referência (lista 0 e lista 1) e aos índices de referência. Se um candidato de mesclagem for identificado por um índice de mesclagem, as imagens de referência usadas para a predição dos blocos atuais, assim como os vetores de movimento associados são determinadas. Por outro lado, sob o modo AMVP para cada direção de predição potencial a partir da lista 0 ou lista 1, um índice de referência precisa ser explicitamente sinalizado,
em conjunto com um índice preditor MV (MVP) para a lista de candidatos MV uma vez que o candidato AMVP contém apenas um vetor de movimento. No modo AMVP, os vetores de movimento preditos podem ser adicionalmente refinados. Os candidatos para ambos os modos são similarmente derivados dos mesmos blocos vizinhos espaciais e temporais.
[0085] A seguir, analisa-se os candidatos vizinhos espaciais. Em alguns exemplos, os candidatos MV espaciais são derivados dos blocos vizinhos mostrados nas Figuras 2A e 2B para uma PU específica (PU0) 134, embora os métodos para gerar os candidatos dos blocos difiram para modos de mesclagem e AMVP. No modo de mesclagem, em alguns exemplos, até quatro candidatos MV espaciais podem ser derivados com as ordens mostradas na Figura 2A com números, e a ordem é a seguinte: esquerda (0, A1), acima (1, B1), acima à direita (2, B0), abaixo à esquerda (3, A0), e acima à esquerda (4, B2), conforme mostrado na Figura 2A. Por exemplo, para PU0 134, o bloco A1 é identificado como 0 se situa à esquerda da PU0 134, o bloco B1 é identificado como 1 e se situa acima da PU0 134, o bloco B0 é identificado como 2 e se situa à direta da PU0 134 e acima da PU1 136, o bloco A0 é identificado como 3 e se situa abaixo à esquerda da PU0 134, e o bloco B2 é identificado como 4 e se situa acima à esquerda da PU0 134.
[0086] No modo AMVP, em alguns exemplos, os blocos vizinhos são divididos em dois grupos: grupo à esquerda que inclui o bloco 0 e 1 que se situam abaixo à esquerda e à esquerda da PU0 138, respectivamente, e grupo acima que inclui os blocos 2, 3 e 4 que se situam acima à direita, acima, e acima à esquerda da PU01 138 conforme mostrado na Figura 2B. O bloco 2 se situa acima da PU1 140. Para cada grupo, o candidato potencial em um bloco vizinho que se refere à mesma imagem de referência que aquela indicada pelo índice de referência sinalizado tem a prioridade mais alta a ser escolhida para formar um candidato final do grupo. Todos os blocos vizinhos podem não conter um vetor de movimento apontando para a mesma imagem de referência. Portanto, se tal candidato não puder ser encontrado, o primeiro candidato disponível será escalonado para formar o candidato final, desse modo as diferenças de distância temporal podem ser compensadas.
[0087] A seguir, analisa-se a predição de vetor de movimento temporal. Em alguns exemplos, um candidato de preditor de vetor de movimento temporal (TMVP), se habilitado e disponível, é adicionado à lista de candidatos MV após os candidatos de vetor de movimento espacial. O processo de derivação de vetor de movimento para candidato TMVP é o mesmo tanto para o modos de mesclagem como AMVP, entretanto o índice de referência alvo para o candidato TMVP no modo de mesclagem sempre é definido como 0.
[0088] Em alguns exemplos, a localização de bloco primária para a derivação de candidato TMVP é bloco inferior à direita fora da PU colocalizada conforme mostrado na Figura 3A como um bloco T 140, para compensar a inclinação para os blocos acima e à esquerda usados para gerar candidatos vizinhos espaciais. Entretanto, se esse bloco for localizado fora da fileira CTB atual ou informações de movimento não estiverem disponíveis, o bloco é substituído por um bloco central da PU.
[0089] Um vetor de movimento 148 para candidato TMVP na imagem atual 150 é derivado da PU colocalizada da imagem colocalizada 146, indicada no nível de fatia. O vetor de movimento para a PU colocalizada é chamado de MV colocalizado 142. Similar ao modo direto temporal na AVC, para derivar o vetor de movimento de candidato TMVP, o MV colocalizado 142 pode ser escalonado para compensar as diferenças de distância temporal, conforme mostrado na Figura 3B. Por exemplo, a diferença temporal entre imagem colocalizada 146 e a imagem de referência colocalizada 144 e a diferença temporal entre a imagem atual 150 e a imagem de referência atual 152 é usada para escalonar o MV colocalizado 142 para gerar o vetor de movimento 148.
[0090] A seguir, analisa-se alguns outros aspectos da predição de movimento na HEVC. Vários aspectos de modos de mesclagem e AMVP valem a pena ser mencionados da seguinte forma.
[0091] Escalonamento de vetor de movimento: Supõe-se que o valor dos vetores de movimento seja proporcional à distância de imagens no momento de apresentação. Um vetor de movimento associa duas imagens, a imagem de referência e a imagem contendo o vetor de movimento (a saber a imagem contentora). quando um vetor de movimento é utilizado para predizer o outro vetor de movimento, a distância da imagem contentora e da imagem de referência é calculada com base nos valores de Contagem de Ordem de Imagem (POC).
[0092] Para um vetor de movimento a ser predito, tanto sua imagem contentora associada como imagem de referência podem ser diferentes. Portanto, uma nova distância (baseada na POC) é calculada. E o vetor de movimento é escalonado com base em duas distâncias POC. Para um candidato vizinho espacial, as imagens contentoras para os dois vetores de movimento são iguais, enquanto as imagens de referência são diferentes. Na HEVC, o escalonamento de vetor de movimento se aplica tanto à TMVP como à AMVP para candidatos vizinhos espaciais e temporais.
[0093] Geração de candidato de vetor de movimento artificial: Se uma lista de candidatos de vetor de movimento não estiver completa (por exemplo, menos candidatos do que um número predeterminado), os candidatos de vetor de movimento artificial são gerados e inseridos no final da lista até a mesma ter todos os candidatos. No modo de mesclagem, existem dois tipos de candidatos MV artificiais: um candidato combinado derivado apenas para fatias B e zero candidatos usados apenas para AMVP se o candidato combinado derivado apenas de fatias B não fornecer candidatos artificiais suficientes.
[0094] Para cada par de candidatos que já estão na lista de candidatos e têm informações de movimento necessárias, candidatos de vetor de movimento combinados bidirecionais são derivados de uma combinação do vetor de movimento do primeiro candidato referindo-se a uma imagem na lista 0 O e o vetor de movimento de um segundo candidato referindo-se a uma imagem na lista 1.
[0095] Processo de remoção para inserção de candidato: Candidatos de diferentes blocos podem ser os mesmos, o que diminui a eficiência de uma lista de candidatos de mesclagem/AMVP. Um processo de remoção é aplicado para solucionar esse problema. O mesmo compara um candidato com os outros na lista de candidatos atual para evitar a inserção de candidatos idênticos. Para reduzir a complexidade, um processo de remoção é aplicado um número limitado de vezes em vez de comparar cada candidato potencial com todos os outros candidatos existentes na lista.
[0096] A seguir, descreve-se a predição de vetor de movimento baseada em histórico. A predição de vetor de movimento baseada em histórico (HMVP), descrita em “CE-4 related: History-based motion vector prediction” JVET de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11 11ª reunião: Ljubljana, SI, 10 a 18 de julho de 2018, denominada como JVET-K0104, é um método baseado em histórico que permite que cada bloco encontre seu preditor MV a partir de uma lista de MVs decodificados a partir do passado além daqueles em campos de movimento vizinho causal imediatamente adjacentes. Uma tabela com múltiplos candidatos HMVP é mantido durante o processo de processo de encodificação/decodificação. A tabela é esvaziada quando uma nova fatia é encontrada. Sempre que houver um bloco intercodificado, as informações de movimento associadas são inseridas na tabela em um modo primeiro a entrar, primeiro a sair (FIFO) como um novo candidato HMVP. Então, uma regra de restrição FIFO pode ser aplicada. Ao inserir uma HMVP na tabela, a verificação de redundância é aplicada para encontrar descobrir se há uma HMVP idêntica na tabela. Se encontrada, essa HMVP particular é removida da tabela e todos os candidatos HMVP posteriormente são movidos. Conforme descrito em mais detalhes, em alguns exemplos, uma verificação de redundância pode não ser realizada.
[0097] Candidatos HMVP podem ser usados no processo de construção de lista de mesclagem. Todos os candidatos HMVP a partir da última entrada até a primeira entrada na tabela podem ser inseridos após o candidato TMVP. A remoção é aplicada nos candidatos HMVP. Uma vez que o número total de candidatos de mesclagem disponíveis atinge os candidatos de mesclagem sinalizados maximamente permitidos, o processo de construção de lista de mesclagem é terminado.
[0098] De modo similar, os candidatos HMVP também podem ser usados no processo de construção de lista de candidatos AMVP. Os vetores de movimento dos últimos K candidatos HMVP na tabela são inseridos após o candidato TMVP. Em alguns exemplos, apenas candidatos HMVP com a mesma imagem de referência que a imagem de referência alvo AMVP são usados para construir a lista de candidatos AMVP. A remoção é aplicada nos candidatos HMVP.
[0099] A seguir descreve-se candidatos de mesclagem espacial não adjacentes. A construção de candidatos de mesclagem espacial não adjacentes, descrita em “CE 4-2.1: Adding non-adjacent spatial merge candidates” JVET de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11 11ª reunião: Ljubljana, SI, 10 a 18 de julho de 2018, denominada como JVETK0228, envolve a derivação de novos candidatos espaciais a partir de duas posições vizinhas não adjacentes (isto é, a partir do bloco não adjacente mais próximo à esquerda/acima, conforme ilustrado na Figura 4). Por exemplo, a Figura 4 ilustra o bloco atual 154 com blocos vizinhos A0, A1, B2, B1 e B0. Em alguns exemplos, os candidatos de mesclagem espacial não adjacentes incluem informações de movimento do bloco HN e do bloco VN da Figura 4 que não são o bloco atual espacialmente vizinho
154.
[0100] Os blocos podem ser limitados a se situar dentro de uma distância máxima de 1 CTU até o bloco atual. O processo de busca de candidatos não adjacentes (por exemplo, blocos HN e VN) começa com o rastreamento dos blocos decodificados anteriores na direção vertical. O rastreamento inverso vertical para quando um interbloco é encontrado ou distância rastreada de volta atinge o tamanho de 1 CTU. O processo de busca então rastreia os blocos decodificados anteriores na direção horizontal. O critério para interromper o processo de busca horizontal depende se há um candidato vertical não adjacente sendo buscado de maneira bem sucedida ou não. Se nenhum candidato vertical não adjacente for buscado, o processo de busca horizontal para quando um bloco intercodificado é encontrado ou a distância rastreada de volta exceder um limite de tamanho de CTU. Se houver um candidato vertical não adjacente buscado, então o processo de busca horizontal para quando um bloco intercodificado que contém MV diferente do candidato vertical não adjacente é encontrado ou a distância rastreada de volta excede um limite de tamanho de CTU. Os candidatos vizinhos não adjacentes buscados são adicionados antes do candidato TMVP no candidato de mesclagem.
[0101] Algumas técnicas podem ter os seguintes problemas, e uma ou mais técnicas exemplificativas podem solucionar e superar os problemas.
Entretanto, não é um requisito que toda técnica exemplificativa sempre forneça todas as vantagens descritas nesta revelação.
[0102] Para acessar candidatos de mesclagem não adjacentes, o decodificador (por exemplo, decodificador de vídeo 300) pode aumentar o tamanho do buffer de linha para armazenar esses candidatos de movimento extra além dos adjacentes. Outras abordagens aliviam o problema de buffer ao usar uma tabela de pesquisa baseada em histórico que armazena MVs decodificados do passado. Ao contrário das abordagens de candidato de mesclagem anteriores, que atribuem sintaxes mais curtas aos candidatos mais prováveis, essas abordagens baseadas em histórico apenas misturavam tudo na tabela de pesquisa sem uma classificação adequada. Portanto, esta revelação descreve métodos de construção exemplificativos para a lista de mesclagem baseada em histórico ou lista AMVP que podem superar os problemas acima. O encodificador/decodificador (por exemplo, o encodificador de vídeo 200 ou decodificador de vídeo 300) tem a liberdade para escolher se uma determinada lista de candidatos (construída com base em um método de classificação) deve ser usada ou não.
[0103] A seguir descreve-se técnicas exemplificativas da revelação, tal como processo de construção da lista baseada em histórico, processo de remoção e construção de candidatos sintéticos. As técnicas exemplificativas podem ser usadas em conjunto ou separadamente.
[0104] Para a construção da lista de candidatos baseada em histórico, uma lista de candidatos baseada em histórico com uma memória de curto prazo (e uma de longo prazo) é descrita como um exemplo. O uso de memória de curto prazo e de longo prazo é meramente um exemplo. As técnicas exemplificativas não exigem o uso de memória de curto prazo ou de longo prazo e podem utilizar um tipo de memória.
[0105] A lista inicial é construída e preenchida com movimento zero (por exemplo, valores padrão) no início quando uma fileira CTU, uma fatia, um bloco, uma imagem, etc. está sendo encodificada/decodificada. Qual dentre uma fileira, fatia, bloco ou imagem CTU é escolhido pode depender da configuração do encodificador de vídeo 200 e do decodificador de vídeo 300. Após um bloco terminar a reconstrução no processo de encodificação/decodificação, as informações de movimento de blocos reconstruídos (se houver) são inseridas na lista de candidatos de curto prazo (isto é, chamada de lista de curto prazo) em um modo primeiro a entrar-primeiro a sair (FIFO). Uma vez que a lista de curto prazo está completa e um novo candidato chega, o candidato mais antigo é retirado e o mais recente é empurrado para a lista de curto prazo. Então, aquele retirado da lista de curto prazo é inserido na lista de candidatos de longo prazo baseada em FIFO (isto é, chamada de lista de longo prazo).
[0106] No exemplo acima, uma lista de curto prazo e de longo prazo é descrita. Entretanto, em alguns exemplos, pode haver uma única lista de candidatos (por exemplo, única lista de candidatos baseada em histórico), e informações de movimento de blocos reconstruídos são adicionadas à lista de candidatos baseada em histórico de um modo FIFO.
[0107] O tamanho de ambas as listas é configurável, com Ns e NL para a lista de curto e longo prazo, respectivamente. Em alguns exemplos, o tamanho da única lista de candidatos baseada em histórico é configurável. O codec (por exemplo, encodificador de vídeo 200 e/ou decodificador de vídeo 300) tem a flexibilidade de escolher qualquer uma das duas listas (ou uma combinação das mesmas) para formar a lista de mesclagem final em adição ou em substituição à lista de mesclagem original. Por exemplo, candidatos em qualquer uma ou tanto as listas de curto prazo como de longo prazo podem ser inseridos na lista de mesclagem final. Em alguns exemplos em que tanto as listas de curto prazo como de longo prazo são usadas, porém apenas uma é preenchida, a lista que é preenchida pode ser considerada como uma única lista de candidatos baseada em histórico. Em outras palavras, em alguns exemplos, a lista de curto prazo pode ser considerada como um exemplo da lista de candidatos baseada em histórico e a lista de longo prazo pode ser considerada como um exemplo da lista de candidatos baseada em histórico. Em alguns exemplos, pode não ser necessário que exista tanto uma lista de curto prazo como uma lista de longo prazo, em cujo caso, uma dentre a lista de curto prazo ou a lista de longo prazo se torna uma única lista de candidatos baseada em histórico.
[0108] A seguir são apresentados exemplos de quatro ordens de inserção:  apenas os candidatos de curto prazo são inseridos na lista de mesclagem final (por exemplo, os candidatos de curto prazo são a lista de candidatos baseada em histórico);  apenas os candidatos de longo prazo são inseridos na lista de mesclagem final (por exemplo, os candidatos de curto prazo são a lista de candidatos baseada em histórico);  os candidatos de curto prazo são inseridos na lista de mesclagem final primeiro, antes dos de longo prazo sequencialmente;  Os candidatos de curto e longo prazo são inseridos na lista de mesclagem final de uma maneira intercalada, em que a ordem de inserção é o 1º candidato de curto prazo, 1º candidato de longo prazo, 2º candidato de curto prazo, 2º candidato de longo prazo, e assim por diante.
[0109] A seguir, descreve-se técnicas de lista de curto prazo com atraso de tempo. As técnicas exemplificativas podem ser aplicadas geralmente onde há uma lista de candidatos baseada em histórico (por exemplo, lista de curto prazo, lista de longo prazo ou única lista que não é separada em curto prazo e longo prazo, tal como onde há apenas uma dentre uma lista de curto prazo ou uma lista de longo prazo). Uma lista de candidatos baseada em histórico variável (por exemplo, lista de curto prazo) é proposta com um recurso de atraso de tempo. No exemplo acima, a lista de candidatos baseada em histórico é atualizada sempre que um interbloco termina a encodificação/decodificação. Em um exemplo, a revelação descreve técnicas exemplificativas que introduzem um fator de atraso de tempo, Ts (em que Ts<Ns), em que o primeiro candidato Ts na lista de candidatos baseada em histórico (por exemplo, que pode ser a lista de curto prazo, lista de candidatos baseada em histórico única ou uma lista de longo prazo) está temporariamente indisponível. O atraso pode evitar conflito com a predição MV espacial (se houver) que obtém as informações de movimento do campo de movimento imediatamente vizinho como candidatos de mesclagem. Por exemplo, quando encodifica/decodifica um bloco D 162 na Figura 5, Ts pode ser 1, de modo que as informações de movimento do bloco C 160 na lista de curto prazo sejam temporariamente marcadas como indisponíveis, de modo que as mesmas (por exemplo, bloco C 160) não sejam inseridas na lista de mesclagem final. De modo similar, em outros exemplos, tal como Ts=2 (ou Ts=3), informações de movimento tanto do bloco B 158 como do bloco C 160 (ou informações de movimento de todos os bloco A 156, bloco B 158 e bloco C 160) na lista de curto prazo não serão inseridas na lista de mesclagem final.
[0110] Por exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento de blocos recentemente reconstruídos. Como um exemplo, a lista de candidatos baseada em histórico pode incluir informações de movimento para blocos A 156, B 158 e C 160. No exemplo da Figura 5, o bloco C 160 é o bloco mais recentemente reconstruído (por exemplo, o bloco reconstruído imediatamente antes do bloco D 162), o bloco B 158 é o bloco reconstruído antes do bloco C 160, e o bloco A 156 é o bloco reconstruído antes do bloco B 158. Nesse exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar um primeiro subconjunto que inclui um ou mais dos blocos A 156, B 158 e C 160. O bloco D 162 pode ser o bloco que é codificado.
[0111] Como um exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar dois candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento de dois blocos mais recentemente reconstruídos. Por exemplo, a lista de candidatos baseada em histórico incluiu informações de movimento dos blocos A 156, B 158 e C 160, cujos blocos B 158 e C 160 são os dois blocos mais recentemente reconstruídos. Nesse exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar blocos B 158 e C 160 como um primeiro subconjunto do um ou mais candidatos da lista de candidatos baseada em histórico.
[0112] O encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto. Como um exemplo, o segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico inclui o bloco A 156 devido ao fato de que o primeiro subconjunto, que inclui os blocos B 158 e C 160, é excluído.
[0113] Conforme descrito acima, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar um subconjunto de candidatos da lista de candidatos baseada em histórico. No exemplo acima, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar o segundo subconjunto do um ou mais candidatos da lista de candidatos baseada em histórico. Por exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar as informações de movimento do bloco A 156. O encodificador de vídeo 200 e o decodificador de vídeo 300 podem gerar uma lista de candidatos com base nas informações de movimento do bloco A 156 (por exemplo, adicionar as informações de movimento do bloco A 156 à lista de mesclagem inicial ou AMVP).
[0114] Um exemplo de um benefício potencial de identificação de um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento de blocos recentemente reconstruídos é que as informações de movimento de blocos recentemente reconstruídos já podem fazer parte da lista de mesclagem inicial ou AMVP. Portanto, ao excluir o primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico do segundo subconjunto, existe uma probabilidade mais alta de que os candidatos no segundo subconjunto não sejam duplicatas de candidatos que já estão na lista de mesclagem ou AMVP.
[0115] A seguir, descreve-se uma lista de candidatos subamostrada. A lista de candidatos baseada em histórico pode ser formada em uma taxa de amostragem inferior nos campos de movimento causal. Três técnicas exemplificativas são descritas: uma abordagem de subamostragem de lista, uma abordagem de subamostragem de bloco e uma abordagem de subamostragem de região. Ambas ou todas podem compartilhar o interesse comum para impedir que o encodificador/decodificador realize a amostragem de todas as informações de movimento codificadas/decodificadas do fluxo de bits para formar a lista de candidatos final (por exemplo, lista de mesclagem final ou AMVP), devido ao fato de que os MVs que estão espacialmente próximos uns dos outros podem ser similares (ou mesmo idênticos). Uma taxa de subamostragem, R, pode ser especificada para um ou mais dos exemplos.
[0116] De modo similar ao mencionado acima, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem construir uma lista de candidatos baseada em histórico ao armazenar informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico e identificar um subconjunto de candidatos da lista de candidatos baseada em histórico. Em um ou mais exemplos, para identificar o subconjunto de candidatos da lista de candidatos baseada em histórico, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem realizar a subamostragem da lista de candidatos baseada em histórico para identificar o subconjunto de candidatos.
[0117] Como um exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem realizar uma abordagem de subamostragem de lista. O encodificador de vídeo 200 e o decodificador de vídeo 300 podem atualizar a lista de candidatos baseada em histórico (por exemplo, a lista de curto prazo, a lista de longo prazo, ou a única lista de candidatos baseada em histórico) inserindo-se cada informação de movimento recentemente decodificada/encodificada na lista de candidatos baseada em histórico. Entretanto, em alguns exemplos, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem realizar a subamostragem periodicamente apenas no primeiro ou último de cada candidato R na lista de candidatos baseada em histórico e marcar os candidatos subamostrados como disponíveis para serem inseridos na lista de candidatos (por exemplo, lista de mesclagem final ou AMVP).
[0118] Esses candidatos disponíveis podem ser identificados a partir dessas posições de índice {0, R, 2R, …} ({1, R+1, 2R+1, …} {2, R+2, 2R+3, …} ou {R-1, 2R-1, 3R-1 …}) na lista de candidatos baseada em histórico. Por exemplo, quando Ns=16 e R=4, essas posições de índice podem ser {0, 4, 8, 12} (ou {3, 7, 11, 15}).
[0119] Por exemplo, a lista de candidatos baseada em histórico pode incluir 16 candidatos. Cada um dos 16 candidatos representa os 16 blocos mais recentemente reconstruídos e inclui respectivas informações de movimento (se houver) para os 16 blocos mais recentemente reconstruídos. Os candidatos na lista de candidatos baseada em histórico podem ser identificados por um valor de índice (por exemplo, índice 0 serve para a primeira entrada na lista de candidatos baseada em histórico e o índice 15 serve para a última entrada na lista de candidatos baseada em histórico). Em alguns exemplos, o índice 0 serve para o bloco mais recentemente reconstruído e o índice 15 serve para o bloco reconstruído mais antigo (por exemplo, bloco menos recentemente reconstruído). Em outras palavras, o índice 0 serve para o candidato recentemente adicionado na lista de candidatos baseada em histórico e o índice 15 serve para o candidato adicionado mais antigo na lista de candidatos baseada em histórico.
[0120] Em alguns exemplos, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar cada N-ésimo candidato na lista de candidatos baseada em histórico como um meio para realizar a subamostragem da lista de candidatos baseada em histórico para identificar um subconjunto de candidatos. Como um exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar cada quarto candidato na lista de candidatos baseada em histórico.
[0121] Além disso, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar cada N-ésimo candidato começando a partir do início da lista de candidatos baseada em histórico ou começando a partir do final da lista de candidatos baseada em histórico. Por exemplo, suponha que N seja igual a 4, se começa a partir do início da lista de candidatos baseada em histórico, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar os candidatos na lista de candidatos baseada em histórico indexada pelo valor de índice 0, 4, 8,
12. Por exemplo, quando N for igual 4, se começa a partir do final da lista de candidatos baseada em histórico, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar os candidatos na lista de candidatos baseada em histórico indexada pelo valor de índice 15, 11, 7, 3.
[0122] No exemplo em que o encodificador de vídeo 200 e o decodificador de vídeo 300 começam com o final da lista de candidatos baseada em histórico, valor de índice 15 se refere ao candidato adicionado mais antigo na lista de candidatos baseada em histórico. Consequentemente, em alguns exemplos, o encodificador de vídeo 200 e o decodificador de vídeo 300 pode realizar a subamostragem da lista de candidatos baseada em histórico começando a partir de um candidato adicionado mais antigo na lista de candidatos baseada em histórico. Entretanto, as técnicas exemplificativas não são limitadas. Em alguns exemplos, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem realizar a subamostragem da lista de candidatos baseada em histórico começando a partir de um último candidato adicionado na lista de candidatos baseada em histórico.
[0123] Uma abordagem de subamostragem de lista, conforme descrito acima, é um modo exemplificativo para realizar a subamostragem da lista de candidatos baseada em histórico. Como outro exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem utilizar uma abordagem de subamostragem de bloco. Na abordagem de subamostragem de bloco, a lista de candidatos baseada em histórico (por exemplo, lista de curto prazo) é atualizada uma vez ao inserir as primeiras (ou últimas) informações de movimento na lista de candidatos baseada em histórico a partir de cada R de informações de movimento recentemente decodificadas/encodificadas. Como outro exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem utilizar uma abordagem de subamostragem de região. Na abordagem de subamostragem de região, a lista de candidatos baseada em histórico (por exemplo, a lista de curto prazo) é atualizada apenas uma vez após o número acumulado de pixels encodificados/decodificados exceder R após a atualização anterior da lista de candidatos baseada em histórico. Quando o processo de atualização é invocado, o número acumulado de pixels é, então subtraído por R.
[0124] Conforme descrito acima, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem empregar pelo menos duas técnicas para identificar um subconjunto de candidatos da lista de candidatos baseada em histórico. Em uma primeira técnica, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem excluir candidatos que correspondem às o informações de movimento de blocos recentemente reconstruídos. Em uma segunda técnica, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem realizar a subamostragem da lista de candidatos baseada em histórico (por exemplo, usar abordagem baseada em lista, abordagem baseada em bloco ou abordagem baseada em região).
[0125] Em alguns exemplos, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem combinar a primeira e a segunda técnicas. Por exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento de blocos recentemente reconstruídos. Como um exemplo, para identificar o primeiro subconjunto, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar dois candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento de dois blocos mais recentemente reconstruídos (por exemplo, candidatos identificados pelos valores de índice 0 e 1).
[0126] O encodificador de vídeo 200 e o decodificador de vídeo 300 podem, então identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto (por exemplo, candidatos identificados pelos valores de índice 2 a 15). O encodificador de vídeo 200 e o decodificador de vídeo 300 pode identificar um subconjunto de candidatos a partir da lista de candidatos baseada em histórico por meio da subamostragem do segundo subconjunto. Como um exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem realizar a subamostragem da lista de candidatos baseada em histórico (por exemplo, identificar cada quarto candidato na lista de candidatos baseada em histórico) porém não incluir candidatos do primeiro subconjunto (por exemplo, candidatos identificados por valores de índice 0 e 1).
[0127] Com o uso das técnicas exemplificativas acima (por exemplo, uma primeira técnica de exclusão de candidatos que correspondem às informações de movimento de blocos recentemente reconstruídos, uma segunda técnica de subamostragem, ou uma combinação das mesmas), o encodificador de vídeo 200 e o decodificador de vídeo 300 podem identificar um subconjunto de candidatos da lista de candidatos baseada em histórico. O encodificador de vídeo 200 e o decodificador de vídeo 300 podem gerar uma lista de candidatos (por exemplo, lista de mesclagem final ou lista AMVP) com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico. Por exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem adicionar um ou mais candidatos a partir do subconjunto identificado de candidatos a uma lista de mesclagem inicial ou AMVP para gerar a lista de mesclagem final ou AMVP.
[0128] Desse modo, a lista de candidatos (por exemplo, lista de mesclagem final ou AMVP) inclui candidatos que fornecem uma seleção diversa de informações de movimento (por exemplo, informações de movimento que não são similares a outras informações de movimento na lista de candidatos). Novamente, conforme descrito acima, os blocos espacialmente vizinhos tendem a ter informações de movimento similares. Ao realizar a subamostragem e excluir informações de movimento para certos blocos, o subconjunto de candidatos da lista de candidatos baseada em histórico pode incluir informações de movimento de blocos não espacialmente vizinhos, o que aumenta a diversidade nas informações de movimento (por exemplo, informações de movimento para um bloco que não são iguais às informações de movimento para outro bloco).
[0129] Ter uma diversidade nas informações de movimento permite que o encodificador de vídeo 200 selecione um índice na lista de candidatos que provavelmente reduzirá a largura de banda de sinalização em relação a situações em que não há muita diversidade nas informações de movimento na lista de candidatos. Por exemplo, para o modo de mesclagem, o encodificador de vídeo 200 pode ser capaz de selecionar informações de movimento para o bloco atual que assegurem que o bloco de predição que é identificado pelas informações de movimento minimize o residual entre o bloco de predição e o bloco atual. Sem ter tal diversidade nas informações de movimento, a lista de candidatos pode não incluir informações de movimento que poderiam minimizar o residual.
[0130] A seguir descreve-se uma lista de candidatos restrita. A lista de candidatos baseada em histórico pode ser atualizada com o uso das informações de movimento a partir de blocos codificados por um modo de predição predefinido em um conjunto de restrições. Devido às características de movimento nas sequências de vídeo, algumas vezes, certos modos interpredição seriam mais eficientes que outros para representar o campo de movimento. Por exemplo, os candidatos MV espaciais seriam menos confiáveis do que os temporais quando a oclusão de objeto ocorre. Consequentemente, esta revelação descreve técnicas que podem oferecer a flexibilidade para o encodificador/decodificador atualizar uma lista de candidatos baseada em histórico (por exemplo, lista de curto prazo ou longo prazo) quando as informações de movimento inseridas são a partir de um bloco codificado com o uso de um dos modos de predição predefinidos. Por exemplo, se o conjunto de restrições for especificado com modos de predição de vetor de movimento espacial-temporal (STMVP) e TMVP, apenas as informações de movimento derivadas de STMVP e TMVP podem ser usadas para atualizar a lista de candidatos baseada em histórico (por exemplo, lista de curto prazo ou lista de longo prazo).
[0131] A seguir descreve-se o armazenamento de candidatos intercalado. Cada novo candidato de entrada pode ser empurrado para a lista de candidatos baseada em histórico de uma maneira intercalada Três técnicas exemplificativas são descritas abaixo. O encodificador (por exemplo, encodificador de vídeo 200) tem a liberdade de escolher qual dos seguintes métodos deve ser aplicado, e o decodificador (por exemplo, decodificador de vídeo 300) pode apenas seguir do mesmo modo que o encodificador.
[0132] A.) Abordagem baseada em modo de mesclagem: Dependendo do número de tipos de modos de mesclagem maximamente suportados no codec, a lista de candidatos baseada em histórico descrita acima pode ser dividida em múltiplas sublistas. Por exemplo, o software JEM suporta AMVP espacial, AMVP temporal, predição de vetor de movimento temporal alternativa (ATMVP) e STMVP. Desse modo, a lista de curto prazo e a lista de longo prazo podem ser ambas divididas em 4 grupos, conforme ilustrado na Figura 6. Por exemplo, primeiro a entrar, primeiro a sair (FIFO) 1 inclui faixas de índice de [0, NS1), representadas pelo número de referência 164. FIFO 2 inclui faixas de índice de [NS1, NS2), representadas pelo número de referência 166. FIFO 3 inclui faixas de índice de [NS2, NS3), representadas pelo número de referência 168. FIFO 4 inclui faixas de índice de [NS3, NS), representadas pelo número de referência 170. FIFO 1 a FIFO 4 incluindo as faixas de índice 164 a 170, formam a lista de curto prazo e são atribuídos aos 4 modos, respectivamente. De modo similar, [0, NL1), [NL1, NL2), [NL2, NL3), [NL3, na lista de longo prazo são atribuídos aos 4 modos, respectivamente. Conforme ilustrado, cada sublista é uma lista FIFO independente (por exemplo, FIFO 1 a FIFO 4 para a lista de curto prazo em que a primeira sublista inclui faixa de índice 164, a segunda sublista inclui faixa de índice 166,
a terceira sublista inclui faixa de índice 168 e a quarta sublista inclui faixa de índice 170). Qualquer sublista atualizada não afeta as outras listas. Após um interbloco ser encodificado/decodificado, suas informações de movimento são enviadas empurradas para uma das listas FIFO dependendo de seu modo de predição de movimento (por exemplo AMVP espacial, AMVP temporal, ATMVP e STMVP).
[0133] Quando um candidato em uma sublista da lista de curto prazo for retirado, o mesmo é então empurrado para uma sublista correspondente da lista de longo prazo. Por exemplo, se um candidato é retirado de FIFO 1 na lista de curto prazo, então o mesmo é empurrado para a lista de longo prazo em FIFO 1.
[0134] B.) Abordagem baseada em tamanho de bloco: Em vez de ou além do Método A: Abordagem baseada em modo de mesclagem, esse exemplo permite a divisão da lista de candidatos baseada em histórico em várias sublistas FIFO com base no número de pixels, NP, em um bloco. Esse exemplo predefine uma série de NPs na ordem crescente para determinar como cada bloco está associado a uma sublista FIFO. Por exemplo, esse exemplo pode dividir a lista de candidatos baseada em histórico em 4 sublistas FIFO (Figura 6), de modo que o valor de séries de NPs possa ser predefinido tal como {64, 128, 256}, e também possa ser exigido que {NS1, NS2, NS3} e {NL1, NL2, NL3} sejam predefinidos. Nesse exemplo, as informações de movimento de um bloco decodificado/encodificado são empurradas para FIFO 1, 2 ou 3 se o número de pixels em um bloco não exceder 64, 128 ou 256 pixels, e o restante é inserido em FIFO 4.
[0135] C.) Abordagem baseada em MV: Similar ao Método B: Abordagem baseada em tamanho de bloco, o mapeamento de sublista pode se basear no bloco MV em vez da contagem de pixel de bloco. Por exemplo, esse exemplo pode tomar o bit de sinal dos componentes x e y de um bloco MV encodificado/decodificado como referência para mapear as informações de movimento de bloco em uma sublista FIFO. Como a Figura 6, esse exemplo pode dividir a lista de candidatos baseada em histórico em 4 sublistas com uma função de mapeamento de (MVx<0?1:2)*(MVy<0?1:2) para unipredição ou (MVx(L0)*MVx(L1)<0?1:2)*(MVy(L0)*MVy(L1)<0?1:2) para bipredição. Quando a função emitida é 1, 2, 3, ou 4, FIFO 1, 2, 3, ou 4 é atribuído ao bloco.
[0136] Essa função de mapeamento pode ser predefinida por qualquer coisa que possa produzir o mesmo número de saídas que o número de sublistas. Por exemplo, a lista de candidatos baseada em histórico (por exemplo listas de curto prazo e longo prazo ou uma única lista de candidatos baseada em histórico) pode ser dividida em 2 sublistas (por exemplo FIFO 1 que varia de 0 a Ns1-1 e FIFO 2 que varia de NS1 a NS), e a função de mapeamento pode ser definida como (MVx+MVy<0?1:2) para unipredição ou (MVx(L0)+MVx(L1)+MVy(L0)+MVy(L1)<0? 1:2) para bipredição.
[0137] A seguir descreve-se o processo de remoção de candidato, começando com o processo de remoção responsivo. Antes de uma nova informação de movimento ser inserida na lista de curto prazo, um processo de remoção começa para verificar se quaisquer informações de movimento armazenadas na lista de curto prazo são idênticas às novas informações de movimento. Caso contrário, essa nova informação de movimento é inserida na lista de curto prazo do mesmo modo primeiro a entrar-primeiro a sair, conforme descrito acima. De outro modo, as informações de movimento repetidas na lista de curto prazo são removidas primeiro e, então as novas informações de movimento podem ser adicionadas na lista de curto prazo. Nota-se que as técnicas exemplificativas também podem aplicar o mesmo processo de remoção à lista de longo prazo.
[0138] A seguir, descreve-se o processo de remoção de atraso de tempo. Um processo de remoção de baixa complexidade para a lista de candidatos baseada em histórico (por exemplo, lista de curto prazo, lista de longo prazo ou uma única lista de candidatos baseada em histórico) é descrito com um recurso de atraso de tempo. Com o recurso de atraso de tempo, o processo de remoção não é invocado sempre que uma nova informação de movimento é adicionada à lista de candidatos baseada em histórico. Em vez disso, o processo de remoção é invocado uma vez para cada R nova informação de movimento recentemente decodificada/encodificada inserida na lista de candidatos baseada em histórico, em que R é um número inteiro positivo. Desse modo, essa abordagem pode reduzir eficazmente a complexidade do processo de remoção até certo ponto ao custo de perder a compactação da lista de candidatos baseada em histórico. Um caso extremo é que o processo de remoção nunca é invocado durante os processos de encodificação e decodificação quando R se aproxima do infinito. Nota-se que o encodificador/decodificador tem a flexibilidade de escolher se essa abordagem de atraso de tempo pode ser aplicada à lista de candidatos baseada em histórico ou não.
[0139] Por exemplo, à medida que o encodificador de vídeo 200 e o decodificador de vídeo 300 estão construindo a lista de candidatos baseada em histórico, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem não determinar se as informações de movimento de qualquer um dos candidatos na lista de candidatos baseada em histórico são duplicadas e podem não remover os candidatos que são duplicados. Em outras palavras, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem construir a lista de candidatos baseada em histórico sem remover a lista de candidatos baseada em histórico.
[0140] Uma razão exemplificativa porque o encodificador de vídeo 200 e o decodificador de vídeo 300 podem não ser removidos da lista de candidatos baseada em histórico é devido à subamostragem e à exclusão de determinados candidatos (por exemplo, dois blocos mais recentemente reconstruídos). Conforme descrito acima, a subamostragem e a exclusão de certos candidatos fornece uma probabilidade relativamente alta de que a duplicata ou informações de movimento similares seja removida da lista de candidatos baseada em histórico. Portanto, realizar a operação de remoção na lista de candidatos baseada em histórico pode não fornecer muito benefício, especialmente com a subamostragem e exclusão de certos candidatos, porém pode custar tempo de processamento.
[0141] Embora, em alguns exemplos, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem não realizar a remoção na lista de candidatos baseada em histórico, encodificador de vídeo 200 e decodificador de vídeo 300 pode realizar a operação de remoção na lista de candidatos final. Por exemplo, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico. Então, o encodificador de vídeo 200 e o decodificador de vídeo 300 podem remover a lista de candidatos.
[0142] A seguir, descreve-se a construção de candidatos de síntese. A lista de candidatos baseada em histórico nem sempre é preenchida com movimentos amostrados a partir dos campos de movimento real nos ciclos iniciais quando uma fileira, uma fatia, um bloco ou uma imagem CTU está sendo encodificado/decodificado. Conforme mencionado acima, cada posição de candidato vaga é preenchida com o uso de um valor padrão, ou seja, zero movimento. Em vez disso, um conjunto sintético de pares de movimento de bipredição é introduzido para fatias B. Cada par de movimento é formado tomando como referência dois candidatos disponíveis na lista de candidatos baseada em histórico, em que os vetores de movimento L0 e L1 em um par de movimento são do vetor de movimento L0 do primeiro candidato disponível e o vetor de movimento L1 é do vetor de movimento L1 do segundo candidato disponível, respectivamente. Supondo que o número de candidatos disponíveis na lista de candidatos baseada em histórico é M, uma sequência ordenada de índices de candidato da lista de candidatos baseada em histórico é definida da seguinte forma para formar os pares de movimento.
[0143] Por exemplo, quando M=4, a sequência de índices ordenada é {(0,1), (1,0)} { (0,2), (2,0), (1,2), (2,1)}u{(0,3), (3,0), (1,3), (3,1), (2,3), (3,2)}. Esses pares de movimento são inseridos na lista de mesclagem final sequencialmente como uma substituição para o movimento zero preenchido na lista de candidatos baseada em histórico até a lista de mesclagem final estar completa. Então, as posições de candidato vagas restantes na lista de mesclagem final são preenchidas com o uso de movimento zero e a primeira imagem de referência em cada lista de referência.
[0144] A Figura 7 é um diagrama de blocos que ilustra um encodificador de vídeo 200 exemplificativo que pode realizar as técnicas desta revelação. A Figura 7 é fornecida para propósitos de explicação e não deve ser considerada como limitação das técnicas, conforme amplamente exemplificado e descrito nesta revelação. Para propósitos de explicação, esta revelação descreve o encodificador de vídeo 200 no contexto de padrões de codificação de vídeo, tal como o padrão de codificação de vídeo HEVC e o padrão de codificação de vídeo H.266 (por exemplo VVC) em desenvolvimento. Entretanto, as técnicas desta revelação não se limitam a esses padrões de codificação de vídeo e são geralmente aplicáveis à encodificação e decodificação de vídeo.
[0145] No exemplo da Figura 7, o encodificador de vídeo 200 inclui a memória de dados de vídeo 230, unidade de seleção de modo 202, unidade de geração residual 204, unidade de processamento de transformada 206, unidade de quantização 208, unidade de quantização inversa 210, unidade de processamento de transformada inversa 212, unidade de reconstrução 214, unidade de filtro 216, buffer de imagem decodificada (DPB) 218 e unidade de encodificação de entropia 220.
[0146] A memória de dados de vídeo 230 pode armazenar dados de vídeo a serem encodificados pelos componentes do encodificador de vídeo 200. O encodificador de vídeo 200 pode receber os dados de vídeo armazenados na memória de dados de vídeo 230, por exemplo, a partir da fonte de vídeo 104 (Figura 1). O DPB 218 pode atuar como uma memória de imagem de referência que armazena dados de vídeo de referência para uso na predição de dados de vídeo subsequentes pelo encodificador de vídeo 200. A memória de dados de vídeo 230 e o DPB 218 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. Uma 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 vários exemplos, a memória de dados de vídeo 230 pode estar no chip com outros componentes do codificador de vídeo 200, conforme ilustrado, ou fora do chip em relação a esses componentes.
[0147] 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 ao encodificador de vídeo 200, a menos que especificamente descrito dessa forma, ou memória externa ao encodificador de vídeo 200, a menos que especificamente descrito dessa forma. De preferência, a referência à memória de dados de vídeo 230 deve ser entendida como memória de referência que armazena dados de vídeo que o encodificador de vídeo 200 recebe para encodificar (por exemplo, dados de vídeo para um bloco atual que deve ser encodidicado). A memória 106 da Figura 1 pode fornecer também armazenamento temporário de saídas das várias unidades do encodificador de vídeo 200.
[0148] As várias unidades da Figura 7 são ilustradas para ajudar no entendimento das operações realizadas pelo encodificador de vídeo 200. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação dos mesmos. Os circuitos de função fixa se referem a circuitos que fornecem funcionalidade particular e estão presentes nas operações que podem ser realizadas. Os circuitos programáveis se referem a circuitos que podem ser programados para realizar várias tarefas e fornecem funcionalidade flexível nas operações que podem ser realizadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que fazem com que os circuitos programáveis operem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), porém os tipos de operações que os circuitos de função fixa realizam são geralmente imutáveis. Em alguns exemplos, a uma ou mais unidades podem ser blocos de circuito distintos (de função fixa ou programável) e, em alguns exemplos, a uma ou mais unidades podem ser circuitos integrados.
[0149] O encodificador de vídeo 200 pode incluir unidades lógicas e aritméticas (ALUs), unidades de função elementar (EFUs), circuitos digitais, circuitos analógicos e/ou núcleos programáveis, formados a partir dos circuitos programáveis. Nos exemplos em que as operações do encodificador de vídeo 200 são realizadas com o uso do software executado pelos circuitos programáveis, a memória 106 (Figura 1) pode armazenar o código de objeto do software que o encodificador de vídeo 200 recebe e executa, ou outra memória dentro do encodificador de vídeo 200 (não mostrado) pode armazenar tais instruções.
[0150] A memória de dados de vídeo 230 é configurada para armazenar os dados de vídeo recebidos. O encodificador de vídeo 200 pode recuperar uma imagem dos dados de vídeo a partir 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 a 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 encodificados.
[0151] A unidade de seleção de modo 202 inclui uma unidade de estimação de movimento 222, unidade de compensação de movimento 224 e uma unidade de intrapredição 226. A unidade de seleção de modo 202 pode incluir unidades funcionais adicionais para realizar 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 intrabloco (que pode fazer 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 similares.
[0152] A unidade de seleção de modo 202 geralmente coordena múltiplas passagens de codificação para testes combinações de parâmetros de encodificação e valores de taxa de distorção resultantes para essas combinações. Os parâmetros de encodificação podem incluir particionamento de CTUs em CUs, modos de predição para as CUs, tipos de transformação 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 selecionar finalmente a combinação de parâmetros de encodificação que têm valores de taxa de distorção que são melhores que as outras combinações testadas.
[0153] O encodificador de vídeo 200 pode particionar uma imagem recuperada da memória de dados de vídeo 230 em uma série de CTUs e encapsular uma ou mais CTUs dentro de uma fatia. A unidade de seleção de modo 202 pode particionar uma CTU da imagem de acordo com uma estrutura de árvore, tal como a estrutura QTBT ou a estrutura de árvore quaternária da HEVC descrita acima. Conforme descrito acima, o encodificador de vídeo 200 pode formar uma ou mais CUs a partir do particionamento de uma CTU, de acordo com a estrutura de árvore. Tal CU também pode ser chamada geralmente de um “bloco de vídeo” ou “bloco”.
[0154] Em geral, a unidade de seleção de modo 202 também controla o componente da mesma (por exemplo, unidade de estimação de movimento 222, unidade de compensação de movimento 224 e unidade de intrapredição 226) para gerar um bloco de predição para um bloco atual (por exemplo, uma CU atual, ou em HEVC, a porção sobreposta de uma PU e uma TU). Para interpredição de um bloco atual, a unidade de estimação de movimento 222 pode realizar uma pesquisa de movimento para identificar um ou mais blocos de referência estritamente correspondentes em uma ou mais imagens de referência (por exemplo, uma ou mais imagens anteriormente codificadas armazenadas no DPB 218). Em particular, a unidade de estimação de movimento 222 pode calcular um valor representativo de quão similar um bloco de referência potencial é ao bloco atual, por exemplo, de acordo com a soma da diferença absoluta (SAD), soma de diferenças quadráticas (SSD), diferença absoluta média (MAD), diferenças médias quadráticas (MSD) ou similares. A unidade de estimação de movimento 222 geralmente pode realizar esses cálculos com o uso de diferenças 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 desses cálculos, que indica um bloco de referência que corresponde mais estritamente ao bloco atual.
[0155] 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 interpredição unidirecional, a unidade de estimação de movimento 222 pode fornecer um único vetor de movimento, enquanto que para a interprediçã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 com o uso dos vetores de movimento. Por exemplo, a unidade de compensação de movimento 224 pode recuperar dados dos bloco de referência com o uso do vetor de movimento. Como outro exemplo, se o vetor de movimento tiver precisão de amostra, a unidade de compensação de movimento 224 pode interpolar os valores para o bloco de predição de acordo com um ou mais filtros de interpolação. Além disso, para interpredição bidirecional, a unidade de compensação de movimento 224 pode recuperar dados para dois blocos de referência identificados pelos respectivos vetores de movimento e combinar os dados recuperados, por exemplo, através da média amostra por amostra ou média ponderada.
[0156] Como outro exemplo, para intrapredição, ou codificação de intrapredição, a unidade de intrapredição 226 pode gerar o bloco de predição a partir de amostras vizinhas ao bloco atual. Por exemplo, para modos direcionais, a unidade de intrapredição 226 pode geralmente combinar matematicamente valores de amostras vizinhas e preencher esses valores calculados na direção definida através do bloco atual para produzir o bloco de predição. Como outro exemplo, para o modo DC, a unidade de intrapredição 226 pode calcular uma média das amostras vizinhas ao bloco atual e gerar o bloco de predição para incluir essa média resultante para cada amostra do bloco de predição.
[0157] 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 bruta não codificada 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 amostra por amostra entre o bloco atual e o bloco de predição. As diferenças 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 as diferenças entre os valores de amostra no bloco residual para gerar um bloco residual com o uso de modulação de código de pulso diferencial residual (RDPCM). Em alguns exemplos, a unidade de geração residual 204 pode ser formada com o uso de um ou mais circuitos subtratores que realizam a subtração binária.
[0158] Nos exemplos em que a unidade de seleção de modo 202 particiona CUs em PUs, cada PU pode ser associada a uma unidade de predição de luma e unidades de predição de croma correspondentes. O encodificador de vídeo 200 e o decodificador de vídeo 300 podem suportar PUs tendo vários tamanhos. Conforme indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação de luma da CU e o tamanho de uma PU pode se referir ao tamanho de uma unidade de predição de luma da PU. Supondo que o tamanho de uma CU particular seja 2Nx2N, o encodificador de vídeo 200 pode suportar tamanho de PU de 2Nx2N ou NxN para intrapredição, e tamanhos de PU simétricos de 2Nx2N, 2NxN,
Nx2N, NxN, ou similar para a interpredição. O encodificador de vídeo 200 e o decodificador de vídeo 300 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para interpredição.
[0159] Nos exemplos em que 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 de luma e bloco de codificação de croma correspondente. Conforme acima, o tamanho de uma a CU pode se referir ao tamanho do bloco de codificação de luma da CU. O encodificador de vídeo 200 e o decodificador de vídeo 300 podem suportar tamanhos de CU de 2Nx2N, 2NxN ou Nx2N.
[0160] Para outras técnicas de codificação de vídeo, tal como uma codificação de modo de cópia intrabloco, uma codificação de modo afim e codificação de modo de modelo linear (LM), como alguns exemplos, a unidade de seleção de modo 202, através das respectivas unidades associadas às técnicas de codificação, gera um bloco de predição para o bloco atual que é codificado. Em alguns exemplos, tal como a codificação de modo de paleta, a unidade de seleção de modo 202 pode não gerar um bloco de predição e, em vez disso, gerar elementos de sintaxe que indicam a maneira na qual reconstruir 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 encodificação de entropia 220 a ser encodificada.
[0161] 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 as diferenças amostra por amostra entre o bloco de predição e o bloco atual.
[0162] A unidade de processamento de transformada 206 aplica uma ou mais transformadas ao bloco residual para gerar um bloco de coeficientes de transformada (denominado no presente documento como um “bloco de coeficiente de transformada”). A unidade de processamento de transformada 206 pode aplicar várias transformadas a um bloco residual para formar o bloco de coeficiente de transformada. Por exemplo, a unidade de processamento de transformada 206 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada direcional, uma transformada de Karhunen-Loeve (KLT) ou uma transformada conceitualmente similar ao bloco residual. Em alguns exemplos, a unidade de processamento de transformada 206 pode realizar múltiplas transformadas para um bloco residual, 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 aplicar transformadas a um bloco residual.
[0163] A unidade de quantização 208 pode quantizar os coeficientes de transformada em um bloco de coeficiente de transformada, para produzir um bloco de coeficiente de transformada quantizado. A unidade de quantização 208 pode quantizar os coeficientes de transformada de um bloco de coeficiente de transformada de acordo com um valor de parâmetro de quantização (QP)
associado ao bloco atual. O encodificador de vídeo 200 (por exemplo, através da unidade de seleção de modo 202) pode ajustar o grau de quantização aplicada aos blocos de coeficiente associados ao bloco atual ajustando-se o valor QP associado à CU. A quantização pode introduzir a perda de informações e, desse modo, os coeficientes de transformada quantizados podem ter precisão mais baixa que os coeficientes de transformada originais produzidos pela unidade de processamento de transformada 206.
[0164] 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 que corresponde ao bloco atual (embora potencialmente com algum grau de distorção) com base no bloco residual reconstruído e um bloco de predição gerado pela unidade de seleção de modo 202. Por exemplo, a unidade de reconstrução 214 pode adicionar amostras do bloco residual reconstruído as amostras correspondentes do bloco de predição gerado pela unidade de seleção de modo 202 para produzir o bloco reconstruído.
[0165] A unidade de filtro 216 pode realizar uma ou mais operações de filtro nos blocos reconstruídos. Por exemplo, a unidade de filtro 216 pode realizar operações de desblocagem para reduzir os artefatos de bloqueio ao longo das bordas de CUs. As operações de unidade de filtro 216 podem ser ignoradas, em alguns exemplos.
[0166] O encodificador de vídeo 200 armazena blocos reconstruídos no DPB 218. Por exemplo, nos exemplos em que as operações da unidade de filtro 216 não são necessárias, a unidade de reconstrução 214 pode armazenar blocos reconstruídos no DPB 218. 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 no DPB 218. A unidade de estimação de movimento 222 e a unidade de compensação de movimento 224 podem recuperar uma imagem de referência a partir do DPB 218, formada a partir dos blocos reconstruídos (e, potencialmente filtrados), para interpredizer os blocos de imagens subsequentemente encodificadas. Além disso, a unidade de intrapredição 226 pode usar blocos reconstruídos no DPB 218 de uma imagem atual para intrapredizer outros blocos na imagem atual.
[0167] Em geral, a unidade de encodificação de entropia 220 pode encodificar por entropia elementos de sintaxe recebidos a partir de outros componentes funcionais do encodificador de vídeo 200. Por exemplo, a unidade de encodificação de entropia 220 pode encodificar por entropia os blocos de coeficiente de transformada quantizados a partir da unidade de quantização 208. Como outro exemplo, a unidade de encodificação de entropia 220 pode encodificar por entropia elementos de sintaxe de predição (por exemplo, informações de movimento para interpredição ou informações intramodo para intrapredição) a partir da unidade de seleção de modo 202. A unidade de encodificação por entropia 220 pode realizar uma ou mais operações de encodificação por entropia nos elementos de sintaxe, que são outro exemplo de dados de vídeo, para gerar dados encodificados por entropia. Por exemplo, a unidade de encodificação de entropia 220 pode realizar uma operação de codificação de comprimento variável adaptável ao contexto (CAVLC), uma operação CABAC, uma operação de codificação de comprimento variável a variável (V2V), uma operação de codificação aritmética binária adaptável ao contexto baseada em sintaxe (SBAC), uma operação de codificação por Entropia de Particionamento de Intervalo de Probabilidade (PIPE), uma operação de encodificação Exponencial de Golomb, ou outro tipo de operação de encodificação por entropia nos dados. Em alguns exemplos, a unidade de encodificação de entropia 220 pode operar em modo de desvio onde os elementos de sintaxe não são encodificados por entropia.
[0168] O encodificador de vídeo 200 pode emitir um fluxo de bits que inclui os elementos de sintaxe encodificados por entropia necessários para reconstruir blocos de uma fatia ou imagem. Em particular, a unidade de codificação por entropia 220 pode emitir o fluxo de bits.
[0169] As operações descritas acima são descritas em relação a um bloco. Tal descrição deve ser compreendida como sendo operações para um bloco de codificação de luma e/ou bloco de codificação de croma. Conforme descrito acima, em alguns exemplos, o bloco de codificação de luma e o bloco de codificação de croma são componentes de luma e croma de uma CU. Em alguns exemplos, o bloco de codificação de luma e o bloco de codificação de croma são componentes de luma e croma de uma PU.
[0170] Em alguns exemplos, as operações realizadas em relação a um bloco de codificação de luma não precisam ser repetidas para o bloco de codificação de croma. Como um exemplo, as operações para identificar um vetor de movimento (MV) e a imagem de referência para um bloco de codificação de luma não precisam ser repetidas para identificar um MV e a imagem de referência para os blocos croma. De preferência, o MV para o bloco de codificação de luma pode ser dimensionado para determinar o MV para os blocos croma, e a imagem de referência pode ser a mesma. Como outro exemplo, o processo de intrapredição pode ser o mesmo para os blocos de codificação de luma e os bloco de codificação de croma.
[0171] O encodificador de vídeo 200 representa um exemplo de um dispositivo configurado para encodificar os dados de vídeo incluindo uma memória configurada para armazenar dados de vídeo, e uma ou mais unidades de processamento implementadas no conjunto de circuitos de função fixa e/ou programáveis e configuradas para realizar as técnicas exemplificativas descritas nesta revelação. Por exemplo, a unidade de seleção de modo 202 pode construir uma lista de candidatos baseada em histórico ao armazenar informações de movimento de blocos reconstruídos (por exemplo, informações de vetor de movimento para AMVP e informações de vetor de movimento e imagem de referência para a qual o vetor de movimento aponta para o modo de mesclagem) na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico. A memória de dados de vídeo 230 pode armazenar uma lista de candidatos baseada em histórico, e a unidade de seleção de modo 202 pode adicionar informações de movimento de um bloco reconstruído armazenado no DPB 218 na lista de candidatos baseada em histórico. Em alguns exemplos, a unidade de seleção de modo 202 pode construir a lista de candidatos baseada em histórico sem remover a lista de candidatos baseada em histórico.
[0172] A unidade de seleção de modo 202 pode ser configurado para identificar um subconjunto de candidatos da lista de candidatos baseada em histórico. Pode haver vários modos nos quais a unidade de seleção de modo 202 identifica um subconjunto de candidatos da lista de candidatos baseada em histórico. Como uma primeira técnica exemplificativa para identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, a unidade de seleção de modo 202 identifica um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que corresponde às informações de movimento de blocos recentemente reconstruídos (por exemplo, dois blocos mais recentemente reconstruídos). A unidade de seleção de modo 202 identifica um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto. Por exemplo, o segundo subconjunto inclui as informações de movimento dos blocos reconstruídos restantes na lista de candidatos baseada em histórico que exclui as informações de movimento dos dois blocos mais recentemente reconstruídos. Nesse exemplo, a unidade de seleção de modo 202 identifica o segundo subconjunto do um ou mais candidatos da lista de candidatos baseada em histórico como o subconjunto da lista de candidatos baseada em histórico.
[0173] Como uma segunda técnica exemplificativa para identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, a unidade de seleção de modo 202 realiza a subamostragem da lista de candidatos baseada em histórico para identificar o subconjunto de candidatos. Como um exemplo, a unidade de seleção de modo 202 identifica cada quarto candidato na lista de candidatos baseada em histórico. Como um exemplo, a unidade de seleção de modo 202 realiza subamostragem começando a partir de um candidato adicionado mais antigo na lista de candidatos baseada em histórico.
[0174] Como uma terceira técnica exemplificativa para identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, a unidade de seleção de modo 202 pode realizar uma combinação da primeira e da segunda técnicas exemplificativas. Por exemplo, a unidade de seleção de modo 202 identifica um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que corresponde às informações de movimento de blocos recentemente reconstruídos e identifica um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto. Para identificar o subconjunto de candidatos da lista de candidatos baseada em histórico, a unidade de seleção de modo 202 realiza a subamostragem do segundo subconjunto. Como um exemplo, a unidade de seleção de modo 202 realiza a subamostragem da lista de candidatos baseada em histórico, mas exclui o primeiro subconjunto. Como outro exemplo, a unidade de seleção de modo 202 realiza a subamostragem apenas do segundo subconjunto.
[0175] A unidade de seleção de modo 202 pode gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico. Por exemplo, a unidade de seleção de modo 202 pode adicionar o subconjunto identificado de candidatos a uma lista de mesclagem inicial ou lista AMVP para gerar uma lista de mesclagem final ou lista AMVP. Como outro exemplo, o subconjunto identificado de candidatos pode formar sua própria lista indexável independente (por exemplo, não precisa ser adicionado a uma lista de mesclagem ou AMVP).
[0176] A unidade de seleção de modo 202 pode sinalizar informações indicativas de um índice para a lista de candidatos gerada para identificar a unidade de informações de movimento para reconstruir o bloco atual. Por exemplo, o decodificador de vídeo 300 pode realizar operações similares para gerar uma lista de candidatos. O decodificador de vídeo 300 pode determinar o índice a partir das informações sinalizadas e determinar as informações de movimento identificadas pelo índice. O decodificador de vídeo 300 pode utilizar as informações de movimento para determinar um vetor de movimento para o bloco atual e reconstruir o bloco atual com o uso do vetor de movimento determinado. Por exemplo, o decodificador de vídeo 300 pode determinar um bloco de predição com base no vetor de movimento determinado.
[0177] O encodificador de vídeo 200 também pode sinalizar informações indicativas de um residual entre um bloco de predição identificado com base nas informações de movimento usadas para reconstruir o bloco atual. O decodificador de vídeo 300 pode adicionar o residual ao bloco de predição para reconstruir o bloco atual.
[0178] A Figura 8 é um diagrama de blocos que ilustra um decodificador de vídeo 300 exemplificativo que pode realizar as técnicas desta revelação. A Figura 8 é fornecida para propósitos de explicação e não de limitação das técnicas, conforme amplamente exemplificado e descrito nesta revelação. Para propósitos de explicação, esta revelação descreve o decodificador de vídeo 300 que é descrito de acordo com as técnicas de JEM, incluindo VVC e HEVC. Entretanto, as técnicas desta revelação podem ser realizadas por dispositivos de codificação de vídeo que são configurados para outros padrões de codificação de vídeo.
[0179] No exemplo da Figura 8, o decodificador de vídeo 300 inclui memória de buffer de imagem codificada (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 buffer de imagem decodificada (DPB) 314. A unidade de processamento de predição 304 inclui a unidade de compensação de movimento 316 e a unidade de intrapredição 318. A unidade de processamento de predição 304 pode incluir unidades de adição para realizar predição de acordo com outros modos de predição. Como exemplos, a unidade de processamento de predição 304 pode incluir uma unidade de paleta, uma unidade de cópia intrabloco (que pode fazer parte da unidade de compensação de movimento 316), uma unidade afim, uma unidade de modelo linear (LM) ou similares. Em outros exemplos, o decodificador de vídeo 300 pode incluir mais, menos, ou componentes funcionais diferentes.
[0180] A memória CPB 320 pode armazenar dados de vídeo, tal como um fluxo de bits de vídeo encodificado, a ser decodificado 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 legível por computador 110 (Figura 1). A memória CPB 320 pode incluir um CPB que armazena dados de vídeo encodificados (por exemplo, elementos de sintaxe) a partir de um fluxo de bits de vídeo encodificado. Além disso, a memória CPB 320 pode armazenar dados de vídeo diferentes dos elementos de sintaxe de uma imagem codificada, tais como dados temporários que representam saídas a partir das várias unidades de decodificador de vídeo 300. O DPB 314 geralmente armazena imagens decodificadas, cujo decodificador de vídeo 300 pode emitir e/ou usar como dados de vídeo de referência quando decodifica dados ou imagens subsequentes do fluxo de bits de vídeo encodificado. A memória CPB 320 e o DPB 314 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória CPB 320 e o DPB 314 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória CPB 320 pode estar no chip com outros componentes do decodificador de vídeo 300, ou fora do chip em relação a esses componentes.
[0181] Adicional ou alternativamente, em alguns exemplos, o decodificador de vídeo 300 pode recuperar os dados de vídeo codificados a partir da memória 120 (Figura 1). Ou seja, a memória 120 pode armazenar dados, conforme discutido acima na memória CPB 320. Igualmente, a memória 120 pode armazenar instruções a serem executadas pelo decodificador de vídeo 300, quando algumas ou todas as funcionalidades do decodificador de vídeo 300 são implementadas no software para serem executadas pelo conjunto de circuitos de processamento do decodificador de vídeo 300.
[0182] As várias unidades mostradas na Figura 8 são ilustradas para ajudar no entendimento das operações realizadas pelo decodificador de vídeo 300. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação dos mesmos. De modo similar à Figura 7, os circuitos de função fixa se referem a circuitos que fornecem funcionalidade particular e estão presentes nas operações que podem ser realizadas. Os circuitos programáveis se referem a circuitos que podem ser programados para realizar várias tarefas e fornecem funcionalidade flexível nas operações que podem ser realizadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que fazem com que os circuitos programáveis operem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), porém os tipos de operações que os circuitos de função fixa realizam são geralmente imutáveis. Em alguns exemplos, a uma ou mais unidades podem ser blocos de circuito distintos (de função fixa ou programável) e, em alguns exemplos, a uma ou mais unidades podem ser circuitos integrados.
[0183] O decodificador de vídeo 300 pode incluir ALUs, EFUs, circuitos digitais, circuitos analógicos e/ou núcleos programáveis formados de circuitos programáveis. Nos exemplos em que as operações do decodificador de vídeo 300 são realizadas pelo software que executa nos circuitos programáveis, a memória no chip ou fora do chip pode armazenar instruções (por exemplo, código de objeto) do software que o decodificador de vídeo 300 recebe e executa.
[0184] A unidade de decodificação por entropia 302 pode receber dados de vídeo encodificados a partir do CPB e decodificar por entropia os dados de vídeo para reproduzir os 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 do fluxo de bits.
[0185] Em geral, o decodificador de vídeo 300 reconstrói uma imagem em uma base bloco por bloco. O decodificador de vídeo 300 pode realizar uma operação de reconstrução em cada bloco individualmente (em que o bloco que é atualmente reconstruído, isto é, decodificado, pode ser denominado como um “bloco atual”).
[0186] A unidade de decodificação por entropia 302 pode decodificar por entropia os elementos de sintaxe que definem os coeficientes de transformada quantizados de um bloco de coeficiente de transformada quantizado, assim como informações de transformada, tal como um parâmetro de quantização (QP) e/ou indicação (ou indicações) de modo de transformada. A unidade de quantização inversa 306 pode usar o QP associado ao bloco de coeficiente de transformada quantizado para determinar um grau de quantização e, igualmente, um grau de quantização inversa para a unidade de quantização inversa 306 aplicar. A unidade de quantização inversa 306 pode, por exemplo, realizar uma operação de deslocamento à esquerda bit a bit para quantizar inversamente os coeficientes de transformada quantizados. A unidade de quantização inversa 306 pode, desse modo, formar um bloco de coeficiente de transformada que inclui coeficientes de transformada.
[0187] Após a unidade de quantização inversa 306 formar o bloco de coeficiente de transformada, a unidade de processamento de transformada inversa 308 pode aplicar uma ou mais transformadas inversas ao bloco de coeficiente de transformada para gerar um bloco residual associado ao bloco atual. Por exemplo, a unidade de processamento de transformada inversa 308 pode aplicar uma DCT inversa, uma transformada de número inteiro inversa, uma transformada de Karhunen-Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa, ou outra transformada inversa ao bloco de coeficiente.
[0188] Além disso, a unidade de processamento de predição 304 gera um bloco de predição de acordo com os elementos de sintaxe de informações de predição que foram decodificados por entropia pela unidade de decodificação por entropia 302. Por exemplo, se os elementos de sintaxe de informações de predição indicam que o bloco atual é interpredito, a unidade de compensação de movimento 316 pode gerar o bloco de predição. Nesse caso, os elementos de sintaxe de informações de predição podem indicar uma imagem de referência no DPB 314 a partir do qual recupera um bloco de referência, assim como um vetor de movimento que identifica uma localização do bloco de referência na imagem de referência em relação à localização do bloco atual na imagem atual. A unidade de compensação de movimento 316 pode realizar geralmente o processo de interpredição de uma maneira que seja substancialmente similar àquela descrita em relação à unidade de compensação de movimento 224 (Figura 7).
[0189] Como outro exemplo, se os elementos de sintaxe de informações de predição indicam que o bloco atual é intrapredito, a unidade de intrapredição 318 pode gerar o bloco de predição de acordo com um modo de intrapredição indicado pelos elementos de sintaxe de informações de predição. Novamente, a unidade de intrapredição 318 pode realizar geralmente o processo de intrapredição de uma maneira que seja substancialmente similar àquela descrita em relação à unidade de intrapredição 226 (Figura 7). A unidade de intrapredição 318 pode recuperar dados de amostras vizinhas para o bloco atual a partir do DPB 314.
[0190] A unidade de reconstrução 310 pode reconstruir o bloco atual com o uso do bloco de predição e do bloco residual. Por exemplo, a unidade de reconstrução 310 pode adicionar amostras do bloco residual às amostras do bloco de predição correspondentes para reconstruir o bloco atual.
[0191] A unidade de filtro 312 pode realizar uma ou mais operações de filtro nos blocos reconstruídos. Por exemplo, a unidade de filtro 312 pode realizar operações de desblocagem para reduzir os artefatos de bloqueio ao longo das bordas dos blocos reconstruídos. As operações da unidade de filtro 312 não são necessariamente realizadas em todos os exemplos.
[0192] O decodificador de vídeo 300 pode armazenar os blocos reconstruídos no DPB 314. Conforme discutido acima, DPB 314 pode fornecer informações de referência, tais como amostras de uma imagem atual para intrapredição e imagens anteriormente decodificadas para compensação de movimento subsequente, para a unidade de processamento de predição 304. Além disso, o decodificador de vídeo 300 pode emitir imagens decodificadas a partir do DPB para apresentação subsequente em um dispositivo de exibição, tal como o dispositivo de exibição 118 da Figura
1.
[0193] 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 no conjunto de circuitos de função fixa e/ou programável e configuradas para realizar as técnicas exemplificativas descritas nesta revelação. Por exemplo, a unidade de processamento de predição 304 pode construir uma lista de candidatos baseada em histórico ao armazenar informações de movimento de blocos reconstruídos
(por exemplo, informações de vetor de movimento para AMVP e informações de vetor de movimento e imagem de referência para a qual o vetor de movimento aponta para o modo de mesclagem) na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico. DPB 314 (ou possivelmente alguma outra memória) pode armazenar uma lista de candidatos baseada em histórico, e a unidade de processamento de predição 304 pode adicionar informações de movimento de um bloco reconstruído armazenado no DPB 314 na lista de candidatos baseada em histórico. Em alguns exemplos, a unidade de processamento de predição 304 pode construir a lista de candidatos baseada em histórico sem remover a lista de candidatos baseada em histórico.
[0194] A unidade de processamento de predição 304 pode ser configurada para identificar um subconjunto de candidatos da lista de candidatos baseada em histórico. Pode haver vários modos nos quais a unidade de processamento de predição 304 identifica um subconjunto de candidatos da lista de candidatos baseada em histórico. Como uma primeira técnica exemplificativa para identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, a unidade de processamento de predição 304 identifica um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que corresponde às informações de movimento de blocos recentemente reconstruídos (por exemplo, dois blocos mais recentemente reconstruídos). A unidade de processamento de predição 304 identifica um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto. Por exemplo, o segundo subconjunto inclui as informações de movimento dos blocos reconstruídos restantes na lista de candidatos baseada em histórico que exclui as informações de movimento dos dois blocos mais recentemente reconstruídos. Nesse exemplo, a unidade de processamento de predição 304 identifica o segundo subconjunto do um ou mais candidatos da lista de candidatos baseada em histórico como o subconjunto da lista de candidatos baseada em histórico.
[0195] Como uma segunda técnica exemplificativa para identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, a unidade de processamento de predição 304 realiza a subamostragem da lista de candidatos baseada em histórico para identificar o subconjunto de candidatos. Como um exemplo, a unidade de processamento de predição 304 identifica cada quarto candidato na lista de candidatos baseada em histórico. Como um exemplo, a unidade de processamento de predição 304 realiza a subamostragem começando a partir de um candidato adicionado mais antigo na lista de candidatos baseada em histórico.
[0196] Como uma terceira técnica exemplificativa para identificar um subconjunto de candidatos da lista de candidatos baseada em histórico, a unidade de processamento de predição 304 pode realizar uma combinação da primeira e da segunda técnicas exemplificativas. Por exemplo, a unidade de processamento de predição 304 identifica um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento de blocos recentemente reconstruídos e identifica um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto. Para identificar o subconjunto de candidatos da lista de candidatos baseada em histórico, a unidade de processamento de predição 304 realiza a subamostragem do segundo subconjunto. Como um exemplo, a unidade de processamento de predição 304 realiza a subamostragem da lista de candidatos baseada em histórico, mas exclui o primeiro subconjunto. Como outro exemplo, a unidade de processamento de predição 304 realiza a subamostragem apenas do segundo subconjunto.
[0197] A unidade de processamento de predição 304 pode gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico. Por exemplo, a unidade de processamento de predição 304 pode adicionar o subconjunto identificado de candidatos a uma lista de mesclagem inicial ou lista AMVP para gerar uma lista de mesclagem final ou AMVP. Como outro exemplo, o subconjunto identificado de candidatos pode formar sua própria lista indexável independente (por exemplo, não precisa ser adicionado a uma lista de mesclagem ou AMVP).
[0198] A unidade de processamento de predição 304 pode reconstruir um bloco atual com base na lista de candidatos gerada. Por exemplo, a unidade de processamento de predição 304 pode receber informações indicativas de um índice na lista de candidatos gerada e determinar informações de movimento para o bloco atual com base nas informações de movimento armazenadas na lista de candidatos gerada identificada pelo índice na lista de candidatos gerada. Por exemplo, no modo de mesclagem, a unidade de processamento de predição 304 pode definir o vetor de movimento das informações de movimento armazenadas na lista de candidatos gerada como o vetor de movimento para o bloco atual. No modo AMVP, a unidade de processamento de predição 304 pode receber uma diferença de vetor de movimento (MVD) e adicionar a MVD ao vetor de movimento das informações de movimento armazenadas na lista de candidatos gerada para determinar o vetor de movimento para o bloco atual. A unidade de processamento de predição 304 pode determinar um bloco de predição com base nas informações de movimento determinadas.
[0199] Além disso, a unidade de processamento de predição 304 pode receber informações indicativas de um residual entre o bloco de predição e o bloco atual. A unidade de reconstrução 310 pode reconstruir o bloco atual com base no residual e no bloco de predição (por exemplo, adicionar o residual ao bloco de predição).
[0200] A Figura 9 é um fluxograma que ilustra um método exemplificativo de encodificação de dados de vídeo. As técnicas exemplificativas são descritas em relação a um processador, tal como o encodificador de vídeo
200. Por exemplo, uma memória (por exemplo, memória de dados de vídeo 230 ou DPB 218) pode armazenar uma lista de candidatos baseada em histórico.
[0201] O processador (por exemplo, encodificador de vídeo 200) pode ser configurado para construir a lista de candidatos baseada em histórico ao armazenar informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico (400). Em alguns exemplos, o processador pode construir a lista de candidatos baseada em histórico sem remover a lista de candidatos baseada em histórico.
[0202] O processador pode identificar um subconjunto de candidatos da lista de candidatos baseada em histórico (402). Como um exemplo, o processador pode identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que corresponde às informações de movimento dos blocos recentemente reconstruídos e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto. Nesse exemplo, para identificar o subconjunto de candidatos da lista de candidatos baseada em histórico, o processador pode ser configurado para identificar o segundo subconjunto do um ou mais candidatos da lista de candidatos baseada em histórico. Em alguns exemplos, para identificar o primeiro subconjunto de um ou mais candidatos, o processador pode ser configurado para identificar dois candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento de dois blocos mais recentemente reconstruídos.
[0203] Como outro exemplo, para identificar o subconjunto de candidatos, o processador pode ser configurado para realizar a subamostragem da lista de candidatos baseada em histórico para identificar o subconjunto de candidatos. Por exemplo, para realizar a subamostragem da lista de candidatos baseada em histórico, o processador pode ser configurado para identificar cada quarto candidato na lista de candidatos baseada em histórico. Além disso, para realizar a subamostragem da lista de candidatos baseada em histórico, o processador pode ser configurado para realizar a subamostragem começando a partir de um candidato adicionado mais antigo na lista de candidatos baseada em histórico.
[0204] Como outro exemplo, o processador pode identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que corresponde às informações de movimento dos blocos recentemente reconstruídos e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto. Nesse exemplo, para identificar o subconjunto de candidatos da lista de candidatos baseada em histórico, o processador pode realizar a subamostragem do segundo subconjunto.
[0205] O processador pode gerar a lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico (404). A lista de candidatos pode ser uma dentre uma lista de mesclagem ou uma lista de predição de vetor de movimento avançada (AMVP). Por exemplo, o processador pode adicionar o subconjunto de candidatos a uma lista de mesclagem inicial ou AMVP para gerar uma lista de mesclagem final ou AMVP.
[0206] O processador pode sinalizar informações indicativas de um índice para a lista de candidatos gerada para identificar informações de movimento usadas para reconstruir um bloco atual (406). Por exemplo, com o índice para a lista de candidatos gerada, o decodificador de vídeo 300 pode determinar informações de movimento para o bloco atual. Com base nas informações de movimento para o bloco atual, o decodificador de vídeo 300 pode determinar um bloco de predição. O processador também pode sinalizar informações indicativas de um residual entre um residual entre um bloco de predição identificado com base nas informações de movimento usadas para reconstruir o bloco atual. O decodificador de vídeo 300 pode adicionar o residual ao bloco de predição para reconstruir o bloco atual.
[0207] A Figura 10 é um fluxograma que ilustra um método exemplificativo de decodificação de dados de vídeo. As técnicas exemplificativas são descritas em relação a um processador (por exemplo, decodificador de vídeo 300). Por exemplo, uma memória (por exemplo, DPB 314 ou alguma outra memória) pode armazenar uma lista de candidatos baseada em histórico.
[0208] O processador (por exemplo, decodificador de vídeo 300) pode ser configurado para construir a lista de candidatos baseada em histórico ao armazenar informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico (500). Em alguns exemplos, o processador pode construir a lista de candidatos baseada em histórico sem remover a lista de candidatos baseada em histórico.
[0209] O processador pode identificar um subconjunto de candidatos da lista de candidatos baseada em histórico (502). Como um exemplo, o processador pode identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que corresponde às informações de movimento dos blocos recentemente reconstruídos e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto. Nesse exemplo, para identificar o subconjunto de candidatos da lista de candidatos baseada em histórico, o processador pode ser configurado para identificar o segundo subconjunto do um ou mais candidatos da lista de candidatos baseada em histórico. Em alguns exemplos, para identificar o primeiro subconjunto de um ou mais candidatos, o processador pode ser configurado para identificar dois candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento de dois blocos mais recentemente reconstruídos.
[0210] Como outro exemplo, para identificar o subconjunto de candidatos, o processador pode ser configurado para realizar a subamostragem da lista de candidatos baseada em histórico para identificar o subconjunto de candidatos. Por exemplo, para realizar a subamostragem da lista de candidatos baseada em histórico, o processador pode ser configurado para identificar cada quarto candidato na lista de candidatos baseada em histórico. Além disso, para realizar a subamostragem da lista de candidatos baseada em histórico, o processador pode ser configurado para realizar a subamostragem começando a partir de um candidato adicionado mais antigo na lista de candidatos baseada em histórico.
[0211] Como outro exemplo, o processador pode identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que corresponde às informações de movimento dos blocos recentemente reconstruídos e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto. Nesse exemplo, para identificar o subconjunto de candidatos da lista de candidatos baseada em histórico, o processador pode realizar a subamostragem do segundo subconjunto.
[0212] O processador pode gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico (504). A lista de candidatos pode ser uma dentre uma lista de mesclagem ou uma lista de predição de vetor de movimento avançada (AMVP). Por exemplo, o processador pode adicionar o subconjunto de candidatos a uma lista de mesclagem inicial ou AMVP para gerar uma lista de mesclagem final ou AMVP.
[0213] O processador pode reconstruir um bloco atual com base na lista de candidatos gerada (506). Por exemplo, o processador pode receber informações indicativas de um índice na lista de candidatos gerada e determinar informações de movimento para o bloco atual com base nas informações de movimento armazenadas na lista de candidatos gerada identificada pelo índice na lista de candidatos gerada. O processador pode determinar um bloco de predição com base nas informações de movimento determinadas, receber informações indicativas de um residual entre o bloco de predição e o bloco atual, e reconstruir o bloco atual com base no residual e no bloco de predição.
[0214] Deve ser reconhecido que dependendo do exemplo, certas ações ou eventos de qualquer uma das técnicas descritas no presente documento podem ser realizados em uma sequência diferente, podem ser adicionados, mesclados ou excluídos completamente (por exemplo, nem todas as ações ou eventos descritos são necessários para a prática das técnicas). Além disso, em determinados exemplos, ações ou eventos podem ser realizados simultaneamente, por exemplo, através de processamento multi-threaded, processamento de interrupção ou múltiplos processadores, em vez de sequencialmente.
[0215] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Caso implementadas em software, as funções podem ser armazenadas em, ou transmitidas através de uma ou mais instruções ou código em uma mídia legível por computador e executadas por uma unidade de processamento baseada em hardware. Os meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível, tal como meio de armazenamento de dados ou meios de comunicação que incluam qualquer meio que facilite a transferência de um programa de computador de um local para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa maneira, as mídias legíveis por computador podem corresponder geralmente a (1) mídia legível por computador tangível que é não transitória ou (2) um meio de comunicação, tal como um sinal ou onda portadora. As mídias de armazenamento de dados podem ser quaisquer mídias disponíveis que possam ser acessadas por um ou mais computadores ou um ou mais processadores para recuperar instruções, estruturas de código e/ou dados para a implantação das técnicas descritas nessas revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0216] A título de exemplo e sem limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser usado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente denominada um meio legível por computador. Por exemplo, se instruções forem transmitidas a partir de um site da web, servidor ou outra fonte remota com o uso de um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio como infravermelho, rádio e micro-ondas, então, o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou as tecnologias sem fio como infravermelho, rádio e micro-ondas estão incluídos na definição de meio. Deve-se compreender, entretanto, que as mídias legíveis por computador e as mídias de armazenamento de dados não incluem conexões, ondas portadoras ou outros sinais, ou outras mídias transitórias, mas são, em vez disso, direcionadas às mídias de armazenamento tangíveis não transitórias. Disco magnético e disco óptico, conforme usado no presente documento, incluem disco compacto (CD), disco a laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, em que os discos magnéticos geralmente reproduzem dados magneticamente, enquanto os discos ópticos reproduzem dados opticamente com lasers. As combinações do supracitado também devem ser abrangidas pelo escopo de meios legíveis por computador.
[0217] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais DSPs, microprocessadores de propósito geral, ASICs, FPGAs, ou outro conjunto de circuitos lógico integrado ou discreto equivalente. Portanto, o termo “processador”, conforme usado no presente documento pode se referir a qualquer uma das estruturas anteriormente mencionadas ou qualquer outra estrutura adequada para a implementação das técnicas descritas no presente documento. Adicionalmente, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos dedicados de hardware e/ou software configurados para cifrar e decodificar ou incorporados em um codec combinado. Também, as técnicas podem ser totalmente implantadas em um ou mais circuitos ou elementos lógicos.
[0218] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivos e aparelhos, incluindo um fone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar os aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, porém não necessariamente exigem a realização por unidades de hardware diferentes. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequados.
[0219] Vários exemplos foram descritos. Esses e outros exemplos são abrangidos pelo escopo das seguintes reivindicações.

Claims (34)

REIVINDICAÇÕES
1. Método de decodificação de dados de vídeo, sendo que o método compreende: construir uma lista de candidatos baseada em histórico ao armazenar informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico; identificar um subconjunto de candidatos da lista de candidatos baseada em histórico; gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico; e reconstruir um bloco atual com base na lista de candidatos gerada.
2. Método, de acordo com a reivindicação 1, que compreende adicionalmente: identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento dos blocos recentemente reconstruídos; e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto, em que identificar o subconjunto de candidatos da lista de candidatos baseada em histórico compreende identificar o segundo subconjunto do um ou mais candidatos da lista de candidatos baseada em histórico.
3. Método, de acordo com a reivindicação 2, em que identificar o primeiro subconjunto de um ou mais candidatos compreende identificar dois candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento de dois blocos mais recentemente reconstruídos.
4. Método, de acordo com a reivindicação 1, em que identificar o subconjunto de candidatos compreende realizar a subamostragem da lista de candidatos baseada em histórico para identificar o subconjunto de candidatos.
5. Método, de acordo com a reivindicação 4, em que realizar a subamostragem da lista de candidatos baseada em histórico compreende identificar cada quarto candidato na lista de candidatos baseada em histórico.
6. Método, de acordo com a reivindicação 4, em que realizar a subamostragem da lista de candidatos baseada em histórico compreende realizar a subamostragem começando a partir de um candidato adicionado mais antigo na lista de candidatos baseada em histórico.
7. Método, de acordo com a reivindicação 1, em que construir a lista de candidatos baseada em histórico compreende construir a lista de candidatos baseada em histórico sem remover a lista de candidatos baseada em histórico.
8. Método, de acordo com a reivindicação 1, em que a lista de candidatos compreende uma dentre uma lista de mesclagem ou uma lista de predição de vetor de movimento avançada (AMVP).
9. Método, de acordo com a reivindicação 1, que compreende adicionalmente: identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento dos blocos recentemente reconstruídos; e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto, em que identificar o subconjunto de candidatos da lista de candidatos baseada em histórico compreende realizar a subamostragem do segundo subconjunto.
10. Método, de acordo com a reivindicação 1, em que reconstruir um bloco atual com base na lista de candidatos gerada compreende: receber informações indicativas de um índice na lista de candidatos gerada; determinar informações de movimento para o bloco atual com base nas informações de movimento armazenadas na lista de candidatos gerada identificada pelo índice na lista de candidatos gerada; determinar um bloco de predição com base nas informações de movimento determinadas; receber informações indicativas de um residual entre o bloco de predição e o bloco atual; e reconstruir o bloco atual com base no residual e no bloco de predição.
11. Dispositivo para decodificação de dados de vídeo, sendo que o dispositivo compreende: uma memória configurada para armazenar uma lista de candidatos baseada em histórico; e um processador configurado para: construir a lista de candidatos baseada em histórico ao armazenar, na memória, informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico; identificar um subconjunto de candidatos da lista de candidatos baseada em histórico; gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico; e reconstruir um bloco atual com base na lista de candidatos gerada.
12. Dispositivo, de acordo com a reivindicação 11, em que o processador é configurado para: identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada no histórico que corresponde às informações de movimento dos blocos recentemente reconstruídos; e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada no histórico que exclui o primeiro subconjunto, em que para identificar o subconjunto de candidatos da lista de candidatos baseada em histórico, o processador é configurado para identificar o segundo subconjunto do um ou mais candidatos da lista de candidatos baseada em histórico.
13. Dispositivo, de acordo com a reivindicação 12, em que para identificar o primeiro subconjunto de um ou mais candidatos, o processador é configurado para identificar dois candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento de dois blocos mais recentemente reconstruídos.
14. Dispositivo, de acordo com a reivindicação
12, em que para identificar o subconjunto de candidatos, o processador é configurado para realizar a subamostragem da lista de candidatos baseada em histórico para identificar o subconjunto de candidatos.
15. Dispositivo, de acordo com a reivindicação 14, em que para realizar a subamostragem da lista de candidatos baseada em histórico, o processador é configurado para identificar cada quarto candidato na lista de candidatos baseada em histórico.
16. Dispositivo, de acordo com a reivindicação 14, em que para realizar a subamostragem da lista de candidatos baseada em histórico, o processador é configurado para realizar subamostragem começando a partir de um candidato adicionado mais antigo na lista de candidatos baseada em histórico.
17. Dispositivo, de acordo com a reivindicação 14, em que para reconstruir a lista de candidatos baseada em histórico, o processador é configurado para construir a lista de candidatos baseada em histórico sem remover a lista de candidatos baseada em histórico.
18. Dispositivo, de acordo com a reivindicação 14, em que a lista de candidatos compreende uma dentre uma lista de mesclagem ou uma lista de predição de vetor de movimento avançada (AMVP).
19. Dispositivo, de acordo com a reivindicação 11, em que o processador é configurado para: identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada no histórico que corresponde às informações de movimento dos blocos recentemente reconstruídos; e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada no histórico que exclui o primeiro subconjunto, em que para identificar o subconjunto de candidatos da lista de candidatos baseada em histórico, o processador é configurado para realizar a subamostragem do segundo subconjunto.
20. Dispositivo, de acordo com a reivindicação 11, em que para reconstruir um bloco atual com base na lista de candidatos gerada, o processador é configurado para: receber informações indicativas de um índice na lista de candidatos gerada; determinar informações de movimento para o bloco atual com base nas informações de movimento armazenadas na lista de candidatos gerada identificada pelo índice na lista de candidatos gerada; determinar um bloco de predição com base nas informações de movimento determinadas; receber informações indicativas de um residual entre o bloco de predição e o bloco atual; e reconstruir o bloco atual com base no residual e no bloco de predição.
21. Dispositivo, de acordo com a reivindicação 11, em que o processador compreende um decodificador de vídeo que compreende pelo menos um dentre um conjunto de circuitos de função fixa ou programável.
22. Método de encodificação de dados de vídeo, sendo que o método compreende: construir uma lista de candidatos baseada em histórico ao armazenar informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico; identificar um subconjunto de candidatos da lista de candidatos baseada em histórico; gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico; e sinalizar informações indicativas de um índice para a lista de candidatos gerada para identificar informações de movimento usadas para reconstruir um bloco atual.
23. Método, de acordo com a reivindicação 22, que compreende adicionalmente: identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada no histórico que corresponde às informações de movimento dos blocos recentemente reconstruídos; e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto, em que identificar o subconjunto de candidatos da lista de candidatos baseada em histórico compreende identificar o segundo subconjunto do um ou mais candidatos da lista de candidatos baseada em histórico.
24. Método, de acordo com a reivindicação 22, em que identificar o subconjunto de candidatos compreende realizar a subamostragem da lista de candidatos baseada no histórico para identificar o subconjunto de candidatos.
25. Método, de acordo com a reivindicação 22, em que construir a lista de candidatos baseada no histórico compreende construir a lista de candidatos baseada no histórico sem remover a lista de candidatos baseada no histórico.
26. Método, de acordo com a reivindicação 22, que compreende adicionalmente: identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada no histórico que corresponde às informações de movimento dos blocos recentemente reconstruídos; e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto, em que identificar o subconjunto de candidatos da lista de candidatos baseada em histórico compreende realizar a subamostragem do segundo subconjunto.
27. Método, de acordo com a reivindicação 22, que compreende adicionalmente: sinalizar informações indicativas de um residual entre um bloco de predição identificado com base nas informações de movimento usadas para reconstruir o bloco atual.
28. Dispositivo para encodificação de dados de vídeo, sendo que o dispositivo compreende: uma memória configurada para armazenar uma lista de candidatos baseada em histórico; e um processador configurado para: construir a lista de candidatos baseada em histórico ao armazenar, na memória, informações de movimento de blocos reconstruídos na lista de candidatos baseada em histórico como candidatos da lista de candidatos baseada em histórico; identificar um subconjunto de candidatos da lista de candidatos baseada em histórico; gerar uma lista de candidatos com base no subconjunto identificado de candidatos da lista de candidatos baseada em histórico; e sinalizar informações indicativas de um índice para a lista de candidatos gerada para identificar informações de movimento usadas para reconstruir um bloco atual.
29. Dispositivo, de acordo com a reivindicação 28, em que o processador é configurado para: identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada no histórico que corresponde às informações de movimento dos blocos recentemente reconstruídos; e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que exclui o primeiro subconjunto, em que para identificar o subconjunto de candidatos da lista de candidatos baseada em histórico, o processador é configurado para identificar o segundo subconjunto do um ou mais candidatos da lista de candidatos baseada em histórico.
30. Dispositivo, de acordo com a reivindicação 28, em que para identificar o subconjunto de candidatos, o processador é configurado para realizar a subamostragem da lista de candidatos baseada em histórico para identificar o subconjunto de candidatos.
31. Dispositivo, de acordo com a reivindicação 28, em que para reconstruir a lista de candidatos baseada em histórico, o processador é configurado para construir a lista de candidatos baseada em histórico sem remover a lista de candidatos baseada em histórico.
32. Dispositivo, de acordo com a reivindicação 28, em que o processador é configurado para: identificar um primeiro subconjunto de um ou mais candidatos da lista de candidatos baseada em histórico que correspondem às informações de movimento de blocos recentemente reconstruídos, e identificar um segundo subconjunto de um ou mais candidatos da lista de candidatos baseada no histórico que exclui o primeiro subconjunto, em que para identificar o subconjunto de candidatos da lista de candidatos baseada em histórico, o processador é configurado para realizar a subamostragem do segundo subconjunto.
33. Dispositivo, de acordo com a reivindicação 28, em que o processador é configurado para: sinalizar informações indicativas de um residual entre um bloco de predição identificado com base nas informações de movimento usadas para reconstruir o bloco atual.
34. Dispositivo, de acordo com a reivindicação 28, em que o processador compreende um encodificador de vídeo que compreende pelo menos um dentre um conjunto de circuitos de função fixa ou programável.
BR112021002219-8A 2018-08-16 2019-08-15 lista de candidatos baseada em histórico com classificação BR112021002219A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862764851P 2018-08-16 2018-08-16
US62/764,851 2018-08-16
US16/540,893 2019-08-14
US16/540,893 US11336914B2 (en) 2018-08-16 2019-08-14 History-based candidate list with classification
PCT/US2019/046693 WO2020037144A1 (en) 2018-08-16 2019-08-15 History-based candidate list with classification

Publications (1)

Publication Number Publication Date
BR112021002219A2 true BR112021002219A2 (pt) 2021-05-04

Family

ID=69523673

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021002219-8A BR112021002219A2 (pt) 2018-08-16 2019-08-15 lista de candidatos baseada em histórico com classificação

Country Status (17)

Country Link
US (1) US11336914B2 (pt)
EP (1) EP3837840A1 (pt)
JP (1) JP2021534627A (pt)
KR (1) KR20210042103A (pt)
CN (1) CN112567748A (pt)
AR (1) AR115962A1 (pt)
AU (1) AU2019321565B2 (pt)
BR (1) BR112021002219A2 (pt)
CA (1) CA3106327A1 (pt)
CL (1) CL2021000390A1 (pt)
CO (1) CO2021001740A2 (pt)
IL (1) IL280040A (pt)
MX (1) MX2021001784A (pt)
PH (1) PH12021550079A1 (pt)
SG (1) SG11202100151QA (pt)
WO (1) WO2020037144A1 (pt)
ZA (1) ZA202101016B (pt)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7104186B2 (ja) 2018-06-05 2022-07-20 北京字節跳動網絡技術有限公司 Ibcとatmvpとの間でのインタラクション
TWI729422B (zh) 2018-06-21 2021-06-01 大陸商北京字節跳動網絡技術有限公司 色彩分量間的子區塊移動向量繼承
CN110636298B (zh) 2018-06-21 2022-09-13 北京字节跳动网络技术有限公司 对于Merge仿射模式和非Merge仿射模式的统一约束
BR112021000004A8 (pt) * 2018-07-06 2023-02-07 Mediatek Inc Informações de movimento herdadas para decodificar uma unidade de codificação atual em um sistema de codificação de vídeo
US11381833B2 (en) * 2018-07-19 2022-07-05 Tencent America LLC Method and apparatus for video coding
US10924731B2 (en) * 2018-08-28 2021-02-16 Tencent America LLC Complexity constraints on merge candidates list construction
US11089297B2 (en) * 2018-08-31 2021-08-10 Hulu, LLC Historical motion vector prediction with reset list
KR102616766B1 (ko) * 2018-09-22 2023-12-27 엘지전자 주식회사 인터 예측을 기반으로 비디오 신호를 처리하기 위한 방법 및 장치
GB2591906B (en) * 2018-09-24 2023-03-08 Beijing Bytedance Network Tech Co Ltd Bi-prediction with weights in video coding and decoding
US11290711B2 (en) * 2018-10-06 2022-03-29 Mediatek Inc. Method and apparatus of shared merge candidate list region for video coding
AU2019356644B2 (en) * 2018-10-10 2022-12-08 Huawei Technologies Co., Ltd. Inter prediction method and apparatus
CN112997480B (zh) 2018-11-10 2023-08-22 北京字节跳动网络技术有限公司 成对平均候选计算中的取整
CN112997493B (zh) 2018-11-13 2024-01-05 北京字节跳动网络技术有限公司 用于单一类型运动候选列表的构建方法
CN113170128B (zh) * 2018-12-03 2024-05-28 北京字节跳动网络技术有限公司 帧间预测的部分修剪方法
CN111771376B (zh) * 2018-12-12 2023-08-08 Lg电子株式会社 以基于历史的运动向量预测为基础处理视频信号的方法和设备
EP3868102A4 (en) * 2018-12-21 2021-12-15 Huawei Technologies Co., Ltd. CODERS, DECODERS AND RELATED METHODS USING HISTORY-BASED MOTION VECTOR PREDICTION
BR112021012418A2 (pt) 2018-12-28 2021-09-08 Jvckenwood Corporation Dispositivo de codificação de imagem, método de codificação de imagem, dispositivo de decodificação de imagem e método de decodificação de imagem
KR20210094082A (ko) * 2018-12-29 2021-07-28 에스지 디제이아이 테크놀러지 코., 엘티디 비디오 처리 방법 및 기기
JP2021513795A (ja) * 2019-01-01 2021-05-27 エルジー エレクトロニクス インコーポレイティド 履歴ベース動きベクトル予測に基づいてビデオ信号を処理するための方法及び装置
US11166015B2 (en) * 2019-03-06 2021-11-02 Tencent America LLC Method and apparatus for video coding
CN113711589B (zh) 2019-04-01 2022-10-25 北京字节跳动网络技术有限公司 帧间编解码模式中的二分之一像素插值滤波器
CN117354528A (zh) * 2019-05-22 2024-01-05 北京字节跳动网络技术有限公司 基于子块使用变换跳过模式
KR102635319B1 (ko) 2019-08-20 2024-02-07 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 프로세싱에서 대안적 보간 필터들의 선택적 사용
US11451809B2 (en) * 2019-08-28 2022-09-20 Tencent America LLC Method and apparatus for video coding
JP2023005871A (ja) * 2021-06-29 2023-01-18 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
WO2023113209A1 (ko) * 2021-12-15 2023-06-22 현대자동차주식회사 움직임벡터 예측자들의 후보 리스트를 이용하는 비디오 코딩을 위한 방법 및 장치

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010173B2 (en) * 2000-01-13 2006-03-07 At&T Corp. Video coder employing pixel transposition
KR101377527B1 (ko) * 2008-10-14 2014-03-25 에스케이 텔레콤주식회사 복수 개의 참조 픽처의 움직임 벡터 부호화/복호화 방법 및장치와 그를 이용한 영상 부호화/복호화 장치 및 방법
WO2011095260A1 (en) * 2010-02-05 2011-08-11 Telefonaktiebolaget L M Ericsson (Publ) Managing predicted motion vector candidates
US10171813B2 (en) 2011-02-24 2019-01-01 Qualcomm Incorporated Hierarchy of motion prediction video blocks
US20130114717A1 (en) * 2011-11-07 2013-05-09 Qualcomm Incorporated Generating additional merge candidates
CN102883163B (zh) * 2012-10-08 2014-05-28 华为技术有限公司 用于运动矢量预测的运动矢量列表建立的方法、装置
US20140192881A1 (en) * 2013-01-07 2014-07-10 Sony Corporation Video processing system with temporal prediction mechanism and method of operation thereof
US9756354B2 (en) * 2014-03-17 2017-09-05 Qualcomm Incorporated Block vector predictor for intra block copying
EP3198869A1 (en) * 2014-09-23 2017-08-02 Intel Corporation Intra-prediction complexity reduction using a reduced number of angular modes and subsequent refinement
US10230980B2 (en) * 2015-01-26 2019-03-12 Qualcomm Incorporated Overlapped motion compensation for video coding
US10958927B2 (en) * 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
CN109076241B (zh) * 2016-05-04 2023-06-23 微软技术许可有限责任公司 利用样本值的非相邻参考线进行帧内图片预测
US11606575B2 (en) 2018-07-10 2023-03-14 Qualcomm Incorporated Multiple history based non-adjacent MVPs for wavefront processing of video coding

Also Published As

Publication number Publication date
CL2021000390A1 (es) 2021-08-27
AR115962A1 (es) 2021-03-17
US20200059658A1 (en) 2020-02-20
AU2019321565B2 (en) 2022-12-01
SG11202100151QA (en) 2021-02-25
IL280040A (en) 2021-03-01
ZA202101016B (en) 2022-07-27
CO2021001740A2 (es) 2021-04-08
KR20210042103A (ko) 2021-04-16
CN112567748A (zh) 2021-03-26
EP3837840A1 (en) 2021-06-23
US11336914B2 (en) 2022-05-17
PH12021550079A1 (en) 2021-10-25
WO2020037144A1 (en) 2020-02-20
AU2019321565A1 (en) 2021-02-11
CA3106327A1 (en) 2020-02-20
JP2021534627A (ja) 2021-12-09
MX2021001784A (es) 2021-07-15

Similar Documents

Publication Publication Date Title
BR112021002219A2 (pt) lista de candidatos baseada em histórico com classificação
AU2019302660B2 (en) Multiple history based non-adjacent MVPs for wavefront processing of video coding
BR112021009558A2 (pt) simplificação da predição de vetor de movimento baseada em histórico
KR20200116462A (ko) 비디오 코딩을 위한 인트라-블록 카피
BR112021002967A2 (pt) predição de movimento afim
JP2020523853A (ja) 動きベクトル予測
BR112017015890B1 (pt) Predição avançada do vetor de movimento temporal com base em unidade de subpredição
WO2020069329A1 (en) Ultimate motion vector expression with adaptive directional information set
BR112021009721A2 (pt) informação de movimento triangular para codificação de vídeo
WO2019164674A1 (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
BR112014006185B1 (pt) Método e aparelho para decodificar dados de vídeo, método e aparelho para codificar dados de vídeo, e memória legível por computador
AU2019288269B2 (en) Signaling sub-prediction unit motion vector predictor
WO2019136220A1 (en) Multiple-model local illumination compensation
TW202021354A (zh) 運動向量預測器清單產生
BR112021009732A2 (pt) padrões de predição de vetor de movimento espaço-temporal para codificação de vídeo
BR112021000640A2 (pt) Arredondamento de vetores de movimento para resolução de diferença de vetor de movimento adaptativa e precisão de armazenamento de vetor de movimento aumentada em codificação de vídeo
BR112021003869A2 (pt) predição temporal de parâmetros de filtro de loop adaptativo com consumo reduzido de memória para codificação de vídeo
EP3850838A1 (en) Vector predictor list generation
BR112017020627B1 (pt) Derivação de vetor de movimento em codificação de vídeo