BR112021014879A2 - Modo de inter-intraprevisão para dados de vídeo - Google Patents

Modo de inter-intraprevisão para dados de vídeo Download PDF

Info

Publication number
BR112021014879A2
BR112021014879A2 BR112021014879-5A BR112021014879A BR112021014879A2 BR 112021014879 A2 BR112021014879 A2 BR 112021014879A2 BR 112021014879 A BR112021014879 A BR 112021014879A BR 112021014879 A2 BR112021014879 A2 BR 112021014879A2
Authority
BR
Brazil
Prior art keywords
block
weight
current chrominance
video
prediction
Prior art date
Application number
BR112021014879-5A
Other languages
English (en)
Inventor
Luong Pham Van
Geert Van der Auwera
Adarsh Krishnan Ramasubramonian
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 BR112021014879A2 publication Critical patent/BR112021014879A2/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/1883Methods 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 relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

modo de inter-intraprevisão para dados de vídeo. um dispositivo exemplificativo para codificação (codificar ou decodificar) de dados de vídeo inclui uma memória para armazenar dados de vídeo e um ou mais processadores implantados em circuitos e configurados para formar um bloco de interprevisão para um bloco de crominância atual dos dados de vídeo; formar um bloco de intraprevisão para o bloco de crominância atual dos dados de vídeo; determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; aplicar o primeiro peso ao bloco de interprevisão e o segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e codificar o bloco de crominância atual usando o bloco de previsão.

Description

“MODO DE INTER-INTRAPREVISÃO PARA DADOS DE VÍDEO ”
[0001] Este pedido reivindica prioridade ao o Pedido sob n U.S. 16/781.751, depositado em 4 de fevereiro de 2020 e ao Pedido Provisório sob no U.S. 62/802.515, depositado em 7 de fevereiro de 2019, cujo todo o conteúdo de cada um é incorporado pelo mesmo a título de referência.
CAMPO DA TÉCNICA
[0002] Esta revelação se refere a codificação de vídeo incluindo codificação de vídeo e decodificação de vídeo.
ANTECEDENTES
[0003] As capacidades de vídeo digital podem ser incorporadas em uma grande variedade de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistema 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 eletrônicos, consoles de jogos eletrônicos, telefones de rádio via satélite ou celular, os chamados de "telefones inteligentes", dispositivos de teleconferência por vídeo, dispositivos de transmissão contínua de vídeo e similares. Os dispositivos de vídeo digital implantam técnicas de codificação de vídeo como aqueles descritos 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), ITU-T H.265/Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de maneira mais eficiente implantando-se tais técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem previsão espacial (intraimagem) e/ou previsão temporal (interimagem) para reduzir ou remover a redundância inerente em sequências de vídeo. Para a codificação de vídeo com base 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 particionado em blocos de vídeo, que também podem ser referidos como unidades de árvore de codificação (CTUs, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados com o uso de previsão espacial em relação às amostras de referência em blocos próximos na mesma imagem. Os blocos de vídeo em uma fatia inter-convertida em código (P ou B) de uma imagem podem usar previsão espacial em relação a amostras de referência em blocos próximos na mesma imagem ou previsão temporal em relação às amostras de referência em outras figurações de referência. As figurações podem ser referidas como quadros e as figurações de referência podem ser referidas como quadros de referência.
SUMÁRIO
[0005] Em geral, esta revelação descreve técnicas para realizar inter-intraprevisão combinada. Isto é, na codificação de vídeo, um codificador de vídeo (por exemplo, um codificador de vídeo ou um decodificador de vídeo) pode realizar a codificação com base em blocos de imagens formando uma sequência de vídeo. O codificador de vídeo pode codificar blocos da imagem formando um bloco de previsão e codificando um bloco residual que representa diferenças amostra por amostra entre o bloco de previsão e o bloco real a ser codificado. A interprevisão representa a previsão de um bloco de referência de uma imagem previamente codificada, enquanto a intraprevisão representa a previsão a partir de dados de referência codificados anteriormente da imagem atual. A inter-intraprevisão combinada representa a previsão usando tanto interprevisão quanto intraprevisão. Em particular, esta revelação descreve técnicas aprimoradas para realizar inter- intraprevisão combinada. As técnicas desta revelação podem ser usadas em, por exemplo, Codificação de Vídeo Versátil (VVC) ou outros padrões de codificação de vídeo que suportam inter-intraprevisão combinada.
[0006] Em um exemplo, um método para codificar dados de vídeo inclui formar um bloco de interprevisão para um bloco de crominância atual dos dados de vídeo; formar um bloco de intraprevisão para o bloco de crominância atual dos dados de vídeo; determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; aplicar o primeiro peso ao bloco de interprevisão e o segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e codificar o bloco de crominância atual usando o bloco de previsão.
[0007] Em outro exemplo, um dispositivo para codificar dados de vídeo inclui uma memória para armazenar dados de vídeo e um ou mais processadores implantados em circuitos e configurados para formar um bloco de interprevisão para um bloco de crominância atual dos dados de vídeo; formar um bloco de intraprevisão para o bloco de crominância atual dos dados de vídeo; determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; aplicar o primeiro peso ao bloco de interprevisão e o segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e codificar o bloco de crominância atual usando o bloco de previsão.
[0008] Em outro exemplo, uma mídia de armazenamento legível por computador tem armazenado na mesma, instruções que, quando executadas, fazem com que um processador forme um bloco de interprevisão para um bloco de crominância atual dos dados de vídeo; formar um bloco de intraprevisão para o bloco de crominância atual dos dados de vídeo; determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; aplicar o primeiro peso ao bloco de interprevisão e o segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e codificar o bloco de crominância atual usando o bloco de previsão.
[0009] Em outro exemplo, um dispositivo para codificar dados de vídeo inclui meios para formar um bloco de interprevisão para um bloco de crominância atual de dados de vídeo; meios para formar um bloco intraprevisão para o bloco de crominância atual dos dados de vídeo; meios para determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; meios para determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; meios para aplicar o primeiro peso ao bloco de interprevisão e o segundo peso ao bloco de intraprevisão; meios para combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e meios para codificar o bloco de crominância atual usando o bloco de previsão.
[0010] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetivos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0011] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplificativo que pode executar as técnicas desta revelação.
[0012] As Figuras 2A e 2B são diagramas conceituais que ilustram uma estrutura de árvore binária de árvore quadrática (QTBT) exemplificativa e uma unidade de árvore de codificação (CTU) correspondente.
[0013] As Figuras 3 A-3F são diagramas conceituais que ilustram localizações exemplificativo de blocos vizinhos aos blocos atuais.
[0014] A Figura 4 é um diagrama de blocos que ilustra um codificador de vídeo exemplificativo que pode realizar as técnicas desta revelação.
[0015] A Figura 5 é um diagrama de blocos que ilustra um decodificador de vídeo exemplificativo que pode realizar as técnicas desta revelação.
[0016] A Figura 6 é um fluxograma que ilustra um método exemplificativo para codificar um bloco atual de acordo com as técnicas desta revelação.
[0017] A Figura 7 é um fluxograma que ilustra um método exemplificativo para decodificar um bloco atual de acordo com as técnicas desta revelação.
[0018] A Figura 8 é um fluxograma que ilustra um método exemplificativo de codificação (codificar ou decodificar) dados de vídeo de acordo com as técnicas desta revelação.
DESCRIÇÃO DETALHADA
[0019] 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 chamado de ISO/IEC MPEG-4 AVC), incluindo suas extensões de Codificação de Vídeo
Escalonável (SVC) e de Codificação de Vídeo de Múltiplas Vistas (MVC).
[0020] A codificação de vídeo de alta eficiência (HEVC) foi finalizada pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas de Codificação de Vídeo de ITU-T (VCEG) e do Grupo de Especialistas de Imagem em Movimento ISO/IEC (MPEG) em abril de 2013.
[0021] A Equipe de Especialistas em Vídeo Conjunto (JVET), uma equipe colaborativa formada pelo VCEG do Grupo de Estudo de MPEG e ITU-T 16 está trabalhando recentemente em um novo padrão de codificação de vídeo a ser conhecido como Codificação de Vídeo Versátil (VVC). O objetivo primário da VVC é fornecer uma melhoria significativa no desempenho de compactação em relação ao padrão HEVC existente, auxiliando na implantação de serviços de vídeo de alta qualidade e aplicativos emergentes como multimídia omnidirecional imersiva 360° e vídeo de alta faixa dinâmica (HDR).
[0022] Esta revelação descreve técnicas que podem melhorar o modo de inter-intraprevisão combinado para previsão de dados de vídeo. O modo intra multi-hipótese (MHI) foi mostrado para melhorar modo de junção através da combinação de um intraprevisão e uma intercalação previsão 12º indexado, e foi adoptado, no encontro JVET Macau: M.-S. Chiang, C.-W. Hsu, Y.-W. Huang, S.-M. Lei “CE10.1.1: Multi- hypothesis prediction for improving AMVP mode, skip or merge mode, and intra mode,” em JVET-L0100, outubro de
2018. De acordo com MHI, os candidatos em um conjunto de 4 modos intra, incluindo previsões planar, DC, horizontal e vertical, são avaliados para selecionar o melhor para combinar com uma previsão indexada por fusão. No processo de combinação estabelecido no exemplo acima, se o modo planar ou DC for selecionado, ou o tamanho do bloco for menor que 4, pesos iguais são implantados. Caso contrário, os pesos para amostras intra e interprevistas (wIntra, wInter) são diferentes com base na região das amostras dentro do bloco de codificação.
[0023] Esta revelação reconhece que nas técnicas de previsão inter-intra descritas em JVET-L0100, as informações de codificação de blocos vizinhos não foram utilizadas para melhorar o desempenho de codificação dessas ferramentas. Além disso, o peso com base na região é empregado para os modos de previsão horizontal e vertical, o que pode causar artefatos ao longo dos limites da região.
[0024] As técnicas desta revelação podem melhorar o desempenho da codificação intra-intra. Essas melhorias podem resultar de um esquema de peso independentemente da posição dessas técnicas. De acordo com as técnicas desta revelação, os pesos para amostras de previsão inter e intra podem ser determinados adaptativamente usando informações de codificação, por exemplo, o número de blocos vizinhos intracodificados, número de previsão inter dos blocos indexados por fusão (uni- ou bi previsão) e/ou o tamanho do bloco atual.
[0025] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificaçã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 (codificação e/ou decodificação)
de dados de vídeo. Em geral, os dados de vídeo incluem quaisquer dados para processamento de um vídeo. Assim, os dados de vídeo podem incluir vídeo bruto, não codificado, vídeo codificado, vídeo decodificado (por exemplo, reconstruído) e metadados de vídeo, como dados de sinalização.
[0026] Como mostrado na Figura 1, o sistema 100 inclui um dispositivo de origem 102 que fornece dados de vídeo codificados para serem decodificados e exibidos por um dispositivo de destino 116, neste exemplo. Em particular, o dispositivo-fonte 102 fornece os dados de vídeo para o dispositivo de destino 116 por meio de uma mídia legível por computador 110. O dispositivo-fonte 102 e o dispositivo de destino 116 podem compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores do tipo desktop, computadores do tipo notebook (isto é, computadores do tipo laptop), computadores do tipo tablet, decodificadores de sinais, aparelhos de telefone, como, telefones inteligentes, computadores do tipo tablet, televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de transmissão contínua de vídeo, ou semelhantes. Em alguns casos, o dispositivo de origem 102 e o dispositivo de destino 116 podem ser equipados para comunicação sem fio e, portanto, podem ser referidos como dispositivos de comunicação sem fio.
[0027] No exemplo da Figura 1, o dispositivo de origem 102 inclui a fonte de vídeo 104, memória 106, codificador de vídeo 200 e interface de saída 108. O dispositivo de destino 116 inclui uma interface de entrada
122, um decodificador de vídeo 300, memória 120 e um dispositivo de exibição 118. De acordo com esta revelação, o codificador de vídeo 200 do dispositivo de origem 102 e o decodificador de vídeo 300 do dispositivo de destino 116 podem ser configurados para aplicar as técnicas de codificação intra-intra. Assim, o dispositivo de origem 102 representa um exemplo de um dispositivo de codificação de vídeo, enquanto o dispositivo de destino 116 representa um exemplo de um dispositivo de decodificação de vídeo. Em outros exemplos, um dispositivo-fonte e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo-fonte 102 pode receber dados de vídeo a partir de uma fonte de vídeo externa, como uma câmera externa. Da mesma forma, o dispositivo de destino 116 pode fazer interface com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado.
[0028] Sistema 100, como mostrado na Figura 1 é apenas um exemplo. Em geral, qualquer dispositivo de codificação e/ou decodificação de vídeo digital pode executar técnicas para codificação intra-intra. O dispositivo-fonte 102 e o dispositivo de destino 116 são meramente exemplos de tais dispositivos de conversão em código em que o dispositivo-fonte 102 gera dados de vídeo convertidos em código 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 a codificação (codificação e/ou decodificação) de dados. Assim, o codificador de vídeo 200 e o decodificador de vídeo 300 representam exemplos de dispositivos de codificação, em particular, um codificador de vídeo e um decodificador de vídeo, respectivamente. Em alguns exemplos, os dispositivos 102, 116 podem operar de modo substancialmente simétrico de modo que cada um dos dispositivos 102, 116 incluem componentes de codificação e decodificação de vídeo. Por conseguinte, o sistema 100 pode suportar transmissão de vídeo unidirecional ou bidirecional entre os dispositivos de vídeo 102, 116, por exemplo, para a transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo ou telefonia por vídeo.
[0029] Em geral, a fonte de vídeo 104 representa uma fonte de dados de vídeo (ou seja, dados de vídeo brutos e não codificados) e fornece uma série sequencial de imagens (também referida como "quadros") dos dados de vídeo para o codificador de vídeo 200, que codifica dados para as fotos. A fonte de vídeo 104 do dispositivo-fonte 102 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo que contém um 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 com base em gráficos de computador como o vídeo de fonte ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em cada caso, o codificador de vídeo 200 codifica os dados de vídeo capturados, pré- capturados ou gerados por computador. O codificador de vídeo 200 pode reorganizar as imagens da ordem recebida (às vezes referida como “ordem de exibição”) em uma ordem de codificação para codificação. O codificador de vídeo 200 pode gerar um fluxo de bits incluindo dados de vídeo codificados. O dispositivo de origem 102 pode, então, emitir os dados de vídeo codificados através da interface de saída 108 no meio legível por computador 110 para recepção e/ou recuperação por, por exemplo, interface de entrada 122 do dispositivo de destino 116.
[0030] A memória 106 do dispositivo de origem 102 e a memória 120 do dispositivo de destino 116 representam memórias de uso geral. Em alguns exemplos, as memórias 106, 120 podem armazenar dados de vídeo brutos, por exemplo, vídeo bruto da fonte de vídeo 104 e dados de vídeo decodificados brutos do decodificador de vídeo 300. Adicionalmente ou alternativamente, as memórias 106, 120 podem armazenar instruções de software executáveis por, por exemplo, codificador de vídeo 200 e decodificador de vídeo 300, respectivamente. Embora mostrado separadamente do codificador de vídeo 200 e do decodificador de vídeo 300 neste exemplo, deve ser entendido que o codificador de vídeo 200 e o decodificador de vídeo 300 também podem incluir memórias internas para finalidades funcionalmente semelhantes ou equivalentes. Além disso, as memórias 106, 120 podem armazenar dados de vídeo codificados, por exemplo, saída do codificador de vídeo 200 e entrada para o decodificador de vídeo 300. Em alguns exemplos, porções de 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 codificados.
[0031] A mídia legível por computador 110 pode representar qualquer tipo de mídia ou dispositivo com capacidade para transportar os dados de vídeo codificados a partir do dispositivo-fonte 102 ao dispositivo de destino
116. Em um exemplo, meio legível por computador 110 representa um meio de comunicação para permitir que o dispositivo de origem 102 transmita dados de vídeo codificados diretamente para o dispositivo de destino 116 em tempo real, por exemplo, através de uma rede de radiofrequência ou rede com base em computador. A interface de saída 108 pode modular um sinal de transmissão incluindo os dados de vídeo codificados e a interface de entrada 122 pode demodular o sinal de transmissão recebido, de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio. A mídia de comunicação pode compreender qualquer mídia de comunicação sem fio ou com fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. A mídia de comunicação pode fazer parte de uma rede com base em pacote, como uma rede de área local, uma rede de área ampla ou uma rede global como a Internet. A mídia de comunicação pode incluir roteadores, comutadores, estações-base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação a partir do dispositivo-fonte 102 para o dispositivo de destino 116.
[0032] Em alguns exemplos, o dispositivo de origem 102 pode enviar dados codificados da interface de saída 108 para o dispositivo de armazenamento 112. Da mesma forma, o dispositivo de destino 116 pode acessar dados codificados do dispositivo de armazenamento 112 por meio da interface de entrada 122. O dispositivo de armazenamento 112 pode incluir qualquer um dentre uma variedade de mídias de armazenamento de dados acessados localmente ou distribuídos como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou quaisquer outras mídias de armazenamento digital adequadas para armazenar dados de vídeo codificados.
[0033] Em alguns exemplos, o dispositivo de origem 102 pode enviar dados de vídeo codificados para o servidor de arquivos 114 ou outro dispositivo de armazenamento intermediário que pode armazenar os dados de vídeo codificados gerados pelo dispositivo de origem 102. O dispositivo de destino 116 pode acessar dados de vídeo armazenados a partir do servidor de arquivos 114 por meio de transmissão contínua ou transferência por download. O servidor de arquivos 114 pode ser qualquer tipo de dispositivo de servidor com capacidade para armazenar dados de vídeo codificados e transmitir aqueles dados de vídeo codificados para o dispositivo de destino 116. O servidor de arquivos 114 pode representar um servidor da web (por exemplo, para um site), um servidor de protocolo de transferência de arquivos (FTP), um dispositivo de rede de distribuição de conteúdo ou um dispositivo de armazenamento conectado à rede (NAS). O dispositivo de destino 116 pode acessar dados de vídeo codificados do servidor de arquivos 114 por meio de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, linha de assinante digital (DSL), modem de cabo, etc.) ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados 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 de streaming, um protocolo de transmissão de download ou uma combinação dos mesmos.
[0034] 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 de uma variedade de padrões IEEE 802.11 ou outros componentes físicos. Em exemplos em que a interface de saída 108 e a interface de entrada 122 compreendem componentes sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, como dados de vídeo codificados, de acordo com um padrão de comunicação celular, como 4G, 4G-LTE (Evolução de Longo Prazo), LTE Avançada, 5G ou semelhante. Em alguns exemplos em que a interface de saída 108 compreende um transmissor sem fio, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, como dados de vídeo codificados, de acordo com outros padrões sem fio, como uma especificação IEEE 802.11, uma especificação IEEE 802.15 ( por exemplo, ZigBee ™), um padrão Bluetooth ™ ou semelhante. Em alguns exemplos, o dispositivo de origem 102 e/ou dispositivo de destino 116 pode incluir respectivos dispositivos sistema em um chip (SoC). Por exemplo, o dispositivo de origem 102 pode incluir um dispositivo SoC para executar a funcionalidade atribuída ao codificador de vídeo 200 e/ou interface de saída 108, e o dispositivo de destino 116 pode incluir um dispositivo SoC para executar a funcionalidade atribuída ao decodificador de vídeo 300 e/ou interface de entrada 122
[0035] As técnicas desta revelação podem ser aplicadas à codificação de vídeo visando o suporte a qualquer uma dentre uma variedade de aplicativos de multimídia, tais como difusões de televisão pelo ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões contínuas de vídeo pela Internet, tais como transmissão contínua adaptativa 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 outros aplicativos.
[0036] A interface de entrada 122 do dispositivo de destino 116 recebe um fluxo de bits de vídeo codificado do meio legível por computador 110 (por exemplo, dispositivo de armazenamento 112, servidor de arquivo 114 ou semelhante). O fluxo de bits de vídeo codificado pode incluir informações de sinalização definidas pelo codificador de vídeo 200, que também é usado pelo decodificador de vídeo 300, como elementos de sintaxe com valores que descrevem características e/ou processamento de blocos de vídeo ou outras unidades codificadas (por exemplo, fatias, imagens, grupos de imagens, sequências ou semelhantes). O dispositivo de exibição 118 exibe imagens decodificadas do dados de vídeo decodificados a um usuário. O dispositivo de exibição 118 pode representar qualquer um dentre uma variedade de dispositivos de exibição como um tubo de raio catódico (CRT), um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED), ou outro tipo de dispositivo de exibição.
[0037] Embora não mostrado na Figura 1, em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem, cada um, ser integrados com um codificador de áudio e/ou decodificador de áudio e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e/ou software, para lidar com fluxos multiplexados incluindo ambos áudio e vídeo em um fluxo de dados comum. Caso aplicável, as unidades MUX-DEMUX podem se conformar ao protocolo multiplexador ITU H.223, ou outros protocolos como protocolo de datagrama de usuário (UDP).
[0038] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser implantados como qualquer um dentre uma variedade de conjuntos de circuitos de codificador e/ou decodificador adequados, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos para aplicação (ASICs), matrizes de porta programável em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas foram implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em uma mídia legível por computador não transitória adequada e executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas desta revelação. Cada um dentre o codificador de vídeo 200 e o decodificador de vídeo 300 pode estar incluído em um ou mais codificadores ou decodificadores, um dos quais pode ser integrado como parte de um codificador/decodificador (CODEC) combinado em um respectivo dispositivo. Um dispositivo incluindo codificador de vídeo 200 e/ou decodificador de vídeo 300 pode compreender um circuito integrado, um microprocessador e/ou um dispositivo de comunicação sem fio, como um telefone celular.
[0039] O codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com um padrão de codificação de vídeo, como ITU-T H.265, também conhecido como Codificação de Vídeo de Alta Eficiência (HEVC) ou extensões deste, como multivistas e/ou escalável extensões de codificação de vídeo. Alternativamente, o codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com outros padrões proprietários ou da indústria, como o Modelo de Teste de Exploração Conjunta (JEM) ou ITU-T H.266, também conhecido como Codificação de Vídeo Versátil (VVC). Entretanto, as técnicas desta revelação não são limitadas a qualquer padrão de codificação particular.
[0040] Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem realizar a codificação de imagens com base em blocos. O termo "bloco" geralmente se refere a uma estrutura incluindo dados a serem processados (por exemplo, codificados, decodificados ou de outra forma usados no processo de codificação e/ou decodificação). Por exemplo, um bloco pode incluir uma matriz bidimensional de amostras de dados de luminância e/ou crominância. Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar dados de vídeo representados em um formato YUV (por exemplo, Y, Cb, Cr). Isto é, em vez de codificar dados de vermelho, verde e azul (RGB) para amostras de uma imagem, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar componentes de luminância e crominância, onde os componentes de crominância podem incluir componentes de crominância de matiz vermelho e azul . Em alguns exemplos, o codificador de vídeo 200 converte dados formatados RGB recebidos em uma representação YUV antes da codificação e o decodificador de vídeo 300 converte a representação YUV para o formato RGB. Alternativamente, unidades de pré e pós-processamento (não mostradas) podem realizar essas conversões.
[0041] Esta revelação pode geralmente se referir à codificação (por exemplo, codificação e decodificação) de imagens para incluir o processo de codificação ou decodificação de dados da imagem. Da mesma forma, esta revelação pode se referir à codificação de blocos de uma imagem para incluir o processo de codificação ou decodificação de dados para os blocos, por exemplo, previsão e/ou codificação residual. Um fluxo de bits de vídeo codificado geralmente inclui uma série de valores para elementos de sintaxe representativos de decisões de codificação (por exemplo, modos de codificação) e particionamento de imagens em blocos. Assim, as referências à codificação de uma imagem ou bloco devem geralmente ser entendidas como valores de codificação para elementos de sintaxe que formam a imagem ou bloco.
[0042] HEVC define vários blocos, incluindo unidades de codificação (CUs), unidades de previsão (PUs) e unidades de transformação (TUs). De acordo com HEVC, um codificador de vídeo (como o codificador de vídeo 200) particiona uma unidade de árvore de codificação (CTU) em UCs de acordo com uma estrutura árvore quadrática. Isto é,
o codificador de vídeo divide CTUs e CUs em quatro quadrados iguais e não sobrepostos, e cada nó da árvore quadrática tem zero ou quatro nós filhos. Os nós sem nós filhos podem ser referidos como "nós folha" e CUs de tais nós folha podem incluir um ou mais PUs e/ou um ou mais TUs. O codificador de vídeo pode particionar ainda mais PUs e TUs. Por exemplo, em HEVC, uma árvore quadrática residual (RQT) representa a partição de TUs. Em HEVC, PUs representam dados de interprevisão, enquanto TUs representam dados residuais. As UCs que são intraprevistas incluem informações intraprevisão, como uma indicação intramodo.
[0043] Como outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para operar de acordo com JEM ou VVC. De acordo com JEM ou VVC, um codificador de vídeo (como o codificador de vídeo 200) divide uma imagem em uma pluralidade de unidades de árvore de codificação (CTUs). O codificador de vídeo 200 pode particionar uma CTU de acordo com uma estrutura de árvore, tal como uma estrutura de árvore binária árvore quadrática (QTBT) ou estrutura de árvore multi-tipo (MTT). A estrutura QTBT remove os conceitos de vários tipos de partição, como a separação entre CUs, PUs e TUs de HEVC. Uma estrutura QTBT inclui dois níveis: um primeiro nível particionado de acordo com o particionamento de árvore quadrática 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 (UCs).
[0044] Em uma estrutura de particionamento MTT, os blocos podem ser particionados usando uma partição árvore quadrática (QT), uma partição de árvore binária (BT) e um ou mais tipos de partições de árvore tripla (TT). Uma partição de árvore tripla é uma partição em que um bloco é dividido em três sub-blocos. Em alguns exemplos, uma partição de árvore tripla divide um bloco em três sub- blocos sem dividir o bloco original pelo centro. Os tipos de particionamento em MTT (por exemplo, QT, BT e TT) podem ser simétricos ou assimétricos.
[0045] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar uma única estrutura QTBT ou MTT para representar cada um dos componentes de luminância e crominância, enquanto em outros exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar duas ou mais estruturas QTBT ou MTT , como uma estrutura QTBT/MTT para o componente de luminância e outra estrutura QTBT/MTT para ambos os componentes de crominância (ou duas estruturas QTBT/MTT para os respectivos componentes de crominância).
[0046] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para usar particionamento de árvore quadrática por HEVC, particionamento QTBT, particionamento MTT ou outras estruturas de particionamento. Para fins de explicação, a descrição das técnicas desta revelação é apresentada com relação ao particionamento QTBT. No entanto, deve ser entendido que as técnicas desta revelação também podem ser aplicadas a codificadores de vídeo configurados para usar particionamento de árvore quadrática ou outros tipos de particionamento também.
[0047] Esta revelação pode usar "NxN" e "N por N" alternadamente para se referir às dimensões da amostra de um bloco (como um CU ou outro bloco de vídeo) em termos de dimensões verticais e horizontais, por exemplo, amostras de 16x16 ou 16 por 16 amostras . Em geral, uma CU de 16x16 terá 16 amostras em uma direção vertical (y = 16) e 16 amostras em uma direção horizontal (x = 16). De modo semelhante, uma CU de NxN geralmente tem N amostras em uma direção vertical e N amostras em uma direção horizontal, em que N representa um valor de número inteiro não negativo. As amostras em uma CU podem ser dispostas em fileiras e colunas. Além disso, as UCs não precisam necessariamente ter o mesmo número de amostras na direção horizontal que na direção vertical. Por exemplo, CUs podem compreender amostras NxM, onde M não é necessariamente igual a N.
[0048] O codificador de vídeo 200 codifica dados de vídeo para UCs que representam previsão e/ou informações residuais e outras informações. A informação de previsão indica como o CU deve ser previsto a fim de formar um bloco de previsão para o CU. A informação residual geralmente representa diferenças amostra por amostra entre as amostras do CU antes da codificação e do bloco de previsão.
[0049] Para prever um CU, o codificador de vídeo 200 pode geralmente formar um bloco de previsão para o CU por meio de interprevisão ou intraprevisão. A interprevisão geralmente se refere à previsão do CU a partir de dados de uma imagem previamente codificada, enquanto a intraprevisão geralmente se refere à previsão do
CU a partir de dados previamente codificados da mesma imagem. Para realizar a interprevisão, o codificador de vídeo 200 pode gerar o bloco de previsão usando um ou mais vetores de movimento. O codificador de vídeo 200 pode geralmente realizar uma pesquisa de movimento para identificar um bloco de referência que corresponda intimamente ao CU, por exemplo, em termos de diferenças entre o CU e o bloco de referência. O codificador de vídeo 200 pode calcular uma diferença métrica usando uma soma da diferença absoluta (SAD), soma das diferenças quadradas (SSD), diferença absoluta média (MAD), diferenças quadradas médias (MSD) ou outros cálculos de diferença para determinar se uma referência bloco é muito parecido com o CU atual. Em alguns exemplos, o codificador de vídeo 200 pode predizer o CU atual usando previsão unidirecional ou previsão bidirecional.
[0050] Alguns exemplos de JEM e VVC também fornecem um modo de compensação de movimento afim, que pode ser considerado um modo de interprevisão. No modo de compensação de movimento afim, o codificador de vídeo 200 pode determinar dois ou mais vetores de movimento que representam movimento não translacional, como aumentar ou diminuir o zoom, rotação, movimento em perspectiva ou outros tipos de movimento irregular.
[0051] Para realizar intraprevisão, o codificador de vídeo 200 pode selecionar um modo intraprevisão para gerar o bloco de previsão. Alguns exemplos de JEM e VVC fornecem sessenta e sete modos de previsão intra, incluindo vários modos direcionais, bem como modo planar e modo DC. Em geral, o codificador de vídeo 200 seleciona um modo intraprevisão que descreve amostras vizinhas a um bloco atual (por exemplo, um bloco de um CU) a partir do qual prever amostras do bloco atual. Essas amostras podem geralmente estar acima, acima e à esquerda ou à esquerda do bloco atual na mesma imagem do bloco atual, assumindo que o codificador de vídeo 200 codifica CTUs e CUs em ordem de varredura raster (da esquerda para a direita, de cima para baixo )
[0052] De acordo com as técnicas desta revelação, o codificador de vídeo 200 pode realizar previsão intra-intra de blocos de dados de vídeo (por exemplo, CUs). Isto é, o codificador de vídeo 200 pode formar um bloco de previsão usando um bloco de interprevisão e um bloco de intraprevisão. O codificador de vídeo 200 pode formar o bloco de previsão final para um bloco atual, realizando uma combinação ponderada de amostras do bloco de interprevisão e do bloco de intraprevisão. Quando um bloco atual é um bloco de crominância, o codificador de vídeo 200 pode determinar os pesos de acordo com um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que é codificado intraprevisão (e/ou um número de blocos que são inter -previsão codificada). Isto é, em vez de determinar os pesos de acordo com os blocos vizinhos ao bloco de crominância atual, o codificador de vídeo 200 pode determinar o número de blocos intra e/ou interprevistos vizinhos ao bloco de luminância correspondente ao bloco de crominância atual e, em seguida, determinar os pesos com base em o número de blocos intra e/ou interprevistos vizinhos ao bloco de luminância.
[0053] Como um exemplo, o codificador de vídeo 200 pode determinar se um bloco vizinho acima e/ou um bloco vizinho à esquerda para o bloco de luminância correspondente são interprevistos. Quando nenhum desses blocos vizinhos é interprevisto, o codificador de vídeo 200 pode determinar um peso de 3 a ser aplicado ao bloco de intraprevisão e um peso de 1 a ser aplicado ao bloco de interprevisão. Quando ambos os blocos vizinhos são interprevistos, o codificador de vídeo 200 pode determinar um peso de 3 a ser aplicado ao bloco de interprevisão e um peso de 1 a ser aplicado ao bloco de intraprevisão. Quando um desses blocos vizinhos é interprevisto e o outro é intraprevisto, o codificador de vídeo 200 pode determinar pesos de 2 a serem aplicados tanto ao bloco interprevisão quanto ao bloco intraprevisão. Em alguns exemplos, o codificador de vídeo 200 pode contar blocos vizinhos preditos usando previsão intra-intra e/ou cópia intrabloco como blocos codificados de interprevisão. O decodificador de vídeo 300 pode realizar substancialmente o mesmo processo para determinar os pesos a serem aplicados aos blocos de inter e intraprevisão para um bloco de crominância atual com base nos modos de previsão para blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual.
[0054] O codificador de vídeo 200 codifica dados que representam o modo de previsão para um bloco atual. Por exemplo, para modos de interprevisão, codificador de vídeo 200 pode codificar dados que representam qual dos vários modos de interprevisão disponíveis é usado, bem como informações de movimento para o modo correspondente. Para interprevisão unidirecional ou bidirecional, por exemplo, o codificador de vídeo 200 pode codificar vetores de movimento usando previsão de vetor de movimento avançada (AMVP) ou modo de mesclagem. O codificador de vídeo 200 pode usar modos semelhantes para codificar vetores de movimento para o modo de compensação de movimento afim.
[0055] Após a previsão, como intraprevisão ou interprevisão de um bloco, o codificador de vídeo 200 pode calcular dados residuais para o bloco. Os dados residuais, como um bloco residual, representam diferenças de amostra por amostra entre o bloco e um bloco de previsão para o bloco, formado usando o modo de previsão correspondente. O codificador de vídeo 200 pode aplicar uma ou mais transformadas ao bloco residual, para produzir dados transformados em um domínio de transformação em vez do domínio de amostra. Por exemplo, o codificador de vídeo 200 pode aplicar uma transformação discreta de cosseno (DCT), uma transformação de inteiro, uma transformação de onduleta ou uma transformação conceitualmente semelhante a dados de vídeo residuais. Além disso, o codificador de vídeo 200 pode aplicar uma transformação secundária após a primeira transformação, como uma transformação secundária não separável dependente de modo (MDNSST), uma transformação dependente de sinal, uma transformação de Karhunen-Loeve (KLT) ou semelhantes. O codificador de vídeo 200 produz coeficientes de transformada após a aplicação de uma ou mais transformadas.
[0056] Conforme observado acima, após quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 200 pode realizar a quantização dos coeficientes de transformada. Em geral, a quantização se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes, o que fornece uma compactação adicional. Ao realizar o processo de quantização, o codificador de vídeo 200 pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. Por exemplo, o codificador de vídeo 200 pode arredondar um valor de bit zz para um valor de bit m durante a quantização, onde n é maior que m. Em alguns exemplos, para realizar a quantização, o codificador de vídeo 200 pode realizar um deslocamento para a direita bit a bit do valor a ser quantizado.
[0057] Após a quantização, o codificador de vídeo 200 pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional, incluindo os coeficientes de transformada quantizados. A varredura pode ser projetada para colocar coeficientes de transformada de energia mais alta (e, portanto, frequência mais baixa) na frente do vetor e para colocar coeficientes de transformada de energia mais baixa (e, portanto, frequência mais alta) na parte de trás do vetor. Em alguns exemplos, o codificador de vídeo 200 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantizados para produzir um vetor serializado e, em seguida, codificar entropia os coeficientes de transformada quantizados do vetor. Em outros exemplos, o codificador de vídeo 200 pode realizar uma varredura adaptativa. Depois de varrer os coeficientes de transformada quantizados para formar o vetor unidimensional, o codificador de vídeo 200 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação aritmética binária adaptável ao contexto (CABAC). O codificador de vídeo 200 também pode codificar por entropia valores para elementos de sintaxe que descrevem metadados associados aos dados de vídeo codificados para uso pelo decodificador de vídeo 300 na decodificação dos dados de vídeo.
[0058] Para realizar CABAC, o codificador de vídeo 200 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode estar relacionado, por exemplo, se os valores vizinhos do símbolo têm valor zero ou não. A determinação da probabilidade pode ser com base em um contexto atribuído ao símbolo.
[0059] O codificador de vídeo 200 pode ainda gerar dados de sintaxe, como dados de sintaxe com base em bloco, dados de sintaxe com base em imagem e dados de sintaxe com base em sequência, para o decodificador de vídeo 300, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia, ou outros dados de sintaxe, como um conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS) ou conjunto de parâmetros de vídeo (VPS). O decodificador de vídeo 300 pode, da mesma forma, decodificar tais dados de sintaxe para determinar como decodificar os dados de vídeo correspondentes.
[0060] Desta forma, o codificador de vídeo 200 pode gerar um fluxo de bits incluindo dados de vídeo codificados, por exemplo, elementos de sintaxe que descrevem o particionamento de uma imagem em blocos (por exemplo, CUs) e previsão e/ou informação residual para os blocos. Em última análise, o decodificador de vídeo 300 pode receber o fluxo de bits e decodificar os dados de vídeo codificados.
[0061] Em geral, o decodificador de vídeo 300 executa um processo recíproco ao executado pelo codificador de vídeo 200 para decodificar os dados de vídeo codificados do fluxo de bits. Por exemplo, o decodificador de vídeo 300 pode decodificar valores para elementos de sintaxe do fluxo de bits usando CABAC de uma maneira substancialmente semelhante, embora recíproca, ao processo de codificação CABAC do codificador de vídeo 200. Os elementos de sintaxe podem definir informações de particionamento de uma imagem em CTUs e particionamento de cada CTU de acordo com uma estrutura de partição correspondente, como uma estrutura QTBT, para definir CUs da CTU. Os elementos de sintaxe podem ainda definir previsão e informações residuais para blocos (por exemplo, CUs) de dados de vídeo.
[0062] A informação residual pode ser representada por, por exemplo, coeficientes de transformada quantizados. O decodificador de vídeo 300 pode quantizar e transformar inversamente os coeficientes de transformada quantizados de um bloco para reproduzir um bloco residual para o bloco. O decodificador de vídeo 300 usa um modo de previsão sinalizado (intra ou interprevisão) e informações de previsão relacionadas (por exemplo, informações de movimento para interprevisão) para formar um bloco de previsão para o bloco. O decodificador de vídeo 300 pode,
então, combinar o bloco de previsão e o bloco residual (amostra por amostra) para reproduzir o bloco original. O decodificador de vídeo 300 pode realizar processamento adicional, como realizar um processo de desbloqueio para reduzir artefatos visuais ao longo dos limites do bloco.
[0063] De acordo com as técnicas desta revelação, o codificador de vídeo 200 e/ou o decodificador de vídeo 300 podem ser configurados para realizar a codificação intra-intra. Isto é, o codificador de vídeo 200 e/ou o decodificador de vídeo 300 podem prever um bloco de dados de vídeo usando inter-intraprevisão combinada de acordo com qualquer ou todas as técnicas aqui descritas.
[0064] Por exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar adaptativamente pesos a serem aplicados a amostras de uma interprevisão e a uma intraprevisão com base em um esquema de peso independente de posição. Por exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar de forma adaptativa os pesos de acordo com (por exemplo, em função de) informações de codificação, tais como o número de blocos vizinhos intra e/ou intercodificados, número de inter previsão do blocos indexados de mesclagem (uni ou biprevisão), o tamanho do bloco atual. Sejam (wInter, wIntra) os pesos para as amostras de previsão inter e intra na descrição abaixo. Isto é, o wInter representa um valor de peso aplicado a amostras de um bloco de interprevisão e wIntra representa um valor de peso aplicado a amostras de um bloco de intraprevisão. Em alguns exemplos, wInter + wIntra = 1, em que wInter e wIntra são valores racionais entre 0 e 1.
[0065] Esta revelação pode geralmente se referir a "sinalizar" certas informações, como elementos de sintaxe. O termo “sinalizar” pode se referir, de modo geral, à comunicação de elementos de sintaxe e/ou outros dados usados para decodificar os dados de vídeo codificados. Isto é, o codificador de vídeo 200 pode sinalizar valores para elementos de sintaxe no fluxo de bits. Em geral, a sinalização se refere à geração de um valor no fluxo de bits. Como observado acima, o dispositivo de origem 102 pode transportar o fluxo de bits para o dispositivo de destino 116 substancialmente em tempo real, ou não em tempo real, como pode ocorrer ao armazenar elementos de sintaxe para o dispositivo de armazenamento 112 para recuperação posterior pelo dispositivo de destino
116.
[0066] Figuras 2A e 2B são diagramas conceituais que ilustram um exemplo de estrutura de árvore binária de árvore quadrática (QTBT) 130 e uma unidade de árvore de codificação (CTU) 132 correspondente. As linhas sólidas representam a divisão da árvore quadrática e as linhas pontilhadas indicam a divisão da árvore binária. Em cada nó de divisão (ou seja, não folha) da árvore binária, um sinalizador é sinalizado para indicar qual tipo de divisão (ou seja, horizontal ou vertical) é usado, onde 0 indica divisão horizontal e 1 indica divisão vertical neste exemplo. Para a divisão árvore quadrática, não há necessidade de indicar o tipo de divisão, pois os nós árvore quadrática dividem um bloco horizontal e verticalmente em 4 sub-blocos de igual tamanho. Consequentemente, o codificador de vídeo 200 pode codificar, e o decodificador de vídeo 300 pode decodificar, elementos de sintaxe (como dividir informações) para um nível de árvore de região da estrutura QTBT 130 (ou seja, as linhas sólidas) e elementos de sintaxe (como dividir informações) para um nível da árvore de previsão da estrutura QTBT 130 (ou seja, as linhas tracejadas). O codificador de vídeo 200 pode codificar, e o decodificador de vídeo 300 pode decodificar, dados de vídeo, como dados de previsão e transformação, para CUs representados por nós de folha terminal da estrutura QTBT 130.
[0067] Em geral, CTU 132 da Figura 2B pode ser associado a parâmetros que definem tamanhos de blocos correspondentes a nós da estrutura QTBT 130 no primeiro e segundo níveis. Esses parâmetros podem incluir um tamanho de CTU (representando um tamanho de CTU 132 em amostras), um tamanho mínimo de árvore quadrática (MinQTSize, representando um tamanho de nó folha de árvore quadrática mínimo permitido), um tamanho máximo de árvore binária (MaxBTSize, representando uma raiz de árvore binária máxima permitida tamanho do nó), uma profundidade máxima da árvore binária (MaxBTDepth, representando a profundidade máxima da árvore binária permitida) e um tamanho mínimo da árvore binária (MinBTSize, representando o tamanho mínimo permitido do nó da folha da árvore).
[0068] O nó raiz de uma estrutura QTBT correspondente a uma CTU pode ter quatro nós filho no primeiro nível da estrutura QTBT, cada um dos quais pode ser particionado de acordo com o particionamento de árvore quadrática. Isto é, os nós do primeiro nível são nós folha (sem nós filhos) ou têm quatro nós filhos. O exemplo da estrutura QTBT 130 representa os nós, incluindo o nó pai e os nós filhos com linhas sólidas para ramificações. Se os nós do primeiro nível não forem maiores do que o tamanho máximo permitido do nó raiz da árvore binária (MaxBTSize), eles podem ser particionados posteriormente pelas respectivas árvores binárias. A divisão da árvore binária de um nó pode ser iterada até que os nós resultantes da divisão atinjam o tamanho mínimo permitido do nó da folha da árvore binária (MinBTSize) ou a profundidade máxima permitida da árvore binária (MaxBTDepth). O exemplo da estrutura QTBT 130 representa tais nós como tendo linhas tracejadas para ramificações. O nó folha binário da árvore é referido como uma unidade de codificação (CU), que é usada para previsão (por exemplo, previsão intra-imagens ou inter-imagens) e transformação, sem qualquer particionamento adicional. Conforme discutido acima, as UCs também podem ser referidas como "blocos de vídeo" ou "blocos".
[0069] Em um exemplo da estrutura de particionamento de QTBT, o tamanho de CTU é definido como 128x128 (amostras de luma e duas amostras de croma 64x64 correspondentes), o MinQTSize é definido como 16x16, o MaxBTSize é definido como 64x64 MinBTSize (tanto para largura e altura) é definido como 4, e o MaxBTDepth é definido como 4. O particionamento de árvore quadrática é aplicado à CTU primeiro para gerar nós folha de árvore quadrática. Os nós folha de árvore quadrática podem ter um tamanho de 16x16 (isto é, o MinQTSize) a 128x128 (isto é, o tamanho de CTU). Se o nó folha de árvore quadrática for 128x128, ele não será mais dividido pela árvore binária,
uma vez que o tamanho excede o MaxBTSize (ou seja, 64x64, neste exemplo). Caso contrário, o nó folha de árvore quadrática será posteriormente particionado pela árvore binária. Portanto, o nó folha de árvore quadrática também é o nó raiz da árvore binária e tem a profundidade da árvore binária como 0. Quando a profundidade da árvore binária atinge MaxBTDepth (4, neste exemplo), nenhuma divisão adicional é permitida. Quando o nó da árvore binária tem largura igual a MinBTSize (4, neste exemplo), isso implica que nenhuma divisão horizontal adicional é permitida. Da mesma forma, um nó de árvore binária com uma altura igual a MinBTSize implica que nenhuma divisão vertical adicional é permitida para esse nó de árvore binária. Conforme observado acima, os nós folha da árvore binária são referidos como CUs e são posteriormente processados de acordo com a previsão e a transformação sem particionamento adicional.
[0070] As Figuras 3 A-3F são diagramas conceituais que ilustram localizações exemplificativo de blocos vizinhos aos blocos atuais. Em particular, a Figura 3A representa um exemplo de bloco atual 140 tendo bloco vizinho superior 142 e bloco vizinho esquerdo 144, Figura 3B representa um exemplo de bloco atual 146 tendo bloco vizinho superior direito 148 e bloco vizinho inferior esquerdo 150, Figura 3C representa um exemplo de bloco atual 152 tendo bloco vizinho superior 154, bloco vizinho esquerdo 156 e bloco vizinho superior esquerdo (topo-1) 158, Figura 3D representa um exemplo de bloco atual 160 tendo bloco vizinho superior direito 162, bloco vizinho inferior esquerdo (inferior esquerdo) 164 e bloco vizinho superior esquerdo 166, Figura 3E representa um exemplo de bloco atual 168 tendo bloco vizinho superior 170, bloco vizinho superior direito 72, bloco vizinho esquerdo 174 e bloco vizinho inferior esquerdo 176 e Figura 3F representa um exemplo de bloco atual 178 tendo bloco vizinho superior 180, bloco vizinho superior direito 182, bloco vizinho esquerdo 184, bloco vizinho inferior esquerdo 186 e bloco vizinho superior esquerdo 188.
[0071] De acordo com as técnicas desta revelação, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar adaptativamente pesos para intra e inter-amostras com base em um número de blocos vizinhos intra e/ou intercodificados, por exemplo, como discutido no Pedido dos EUA No. 16/684.379, depositado em 14 de novembro de 2019, todo o conteúdo do qual é aqui incorporado por referência. No entanto, de acordo com as técnicas desta revelação, o codificador de vídeo 200 e o decodificador de vídeo 300 podem combinar apenas amostras inter e intra previsão, sem combinação de previsão intra dependente da posição (PDPC). O codificador de vídeo 200 e o decodificador de vídeo 300 podem usar blocos vizinhos de referência para determinar os pesos, onde os blocos vizinhos de referência podem ser qualquer combinação de blocos vizinhos superior, superior direito, superior esquerdo, esquerdo ou inferior esquerdo, por exemplo, como mostrado em os vários exemplos das Figuras 3A-3F.
[0072] Em um exemplo, por exemplo, como mostrado na Figura 3A, o codificador de vídeo 200 e o decodificador de vídeo 300 usam o bloco vizinho superior 142 e o bloco vizinho esquerdo 144 para determinar os pesos a serem aplicados às amostras intra e interprevisão para previsão inter-intra do bloco atual 140. Isto é, o bloco vizinho superior 142 e o bloco vizinho esquerdo 144 são usados para verificação intracodificada de vizinho para o bloco atual 140, neste exemplo.
[0073] Em outro exemplo, por exemplo, como mostrado na Figura 3B, o codificador de vídeo 200 e o decodificador de vídeo 300 usam o bloco vizinho superior direito 148 e o bloco vizinho inferior esquerdo 150 para determinar os pesos a serem aplicados às amostras intra e interprevisão para previsão inter-intra do bloco atual 146. Isto é, o bloco vizinho superior direito 148 e o bloco vizinho inferior esquerdo 150 são usados para verificação intracodificada de vizinho para o bloco atual 146, neste exemplo.
[0074] Em outro exemplo, por exemplo, como mostrado na Figura 3C, bloco vizinho superior 154, bloco vizinho esquerdo 156 e bloco vizinho superior esquerdo 158 são usados para verificação intracodificada de vizinho para o bloco atual 152.
[0075] Em outro exemplo, por exemplo, como mostrado na Figura 3D, bloco vizinho superior direito 162, bloco vizinho inferior esquerdo 164 e bloco vizinho superior esquerdo 166 são usados para verificação intracodificada de vizinho para o bloco atual 160.
[0076] Em outro exemplo, por exemplo, como mostrado na Figura 3E, bloco vizinho superior 170, bloco vizinho superior direito 172, bloco vizinho esquerdo 174 e bloco vizinho inferior esquerdo 176 são usados para verificação intracodificada de vizinho para o bloco atual
168.
[0077] Em outro exemplo, por exemplo, como mostrado na Figura 3F, bloco vizinho superior 180, bloco vizinho superior direito 182, bloco vizinho esquerdo 184, bloco vizinho inferior esquerdo 186 e bloco vizinho superior esquerdo 188 são usados para verificação intracodificada de vizinho para o bloco atual 178.
[0078] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 selecionam blocos vizinhos de referência de acordo com o tamanho do bloco do bloco atual (por exemplo, blkWidth e blkHeight). Por exemplo, se blkWidth e blkHeight forem idênticos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar a combinação da Figura 3D, Figura 3E ou Figura 3F. Em outro exemplo, se blkWidth e blkHeight forem diferentes, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar superior direito e inferior esquerdo, por exemplo, como mostrado na Figura 3B.
[0079] Em outro exemplo, se blkWidth e blkHeight são idênticos, então o codificador de vídeo 200 e o decodificador de vídeo 300 podem selecionar as posições do bloco vizinho simetricamente ao longo das dimensões de largura e altura do bloco atual, por exemplo, de acordo com os exemplos das Figuras 3A-3F. Por outro lado, se blkWidth e blkHeight forem diferentes, o codificador de vídeo 200 e o decodificador de vídeo 300 podem selecionar as posições de bloco vizinhas assimetricamente ao longo das dimensões de largura e altura do bloco atual. Por exemplo, se blkWidth for maior que blkHeight, o codificador de vídeo 200 e o decodificador de vídeo 300 podem selecionar os blocos vizinhos como sendo superior direito e à esquerda, enquanto se blkWidth for menor que blkHeight, o codificador de vídeo 200 e o decodificador de vídeo 300 podem selecionar os blocos vizinhos como sendo inferior esquerdo e superior.
[0080] Em alguns exemplos, se o bloco vizinho verificado é codificado por IBC/CPR (cópia intrabloco/referência de imagem atual), o bloco vizinho pode ser considerado como um bloco intercodificado.
[0081] Em alguns exemplos, se o bloco vizinho verificado for codificado por IBC/CPR, o bloco vizinho pode ser considerado um bloco intracodificado.
[0082] Em alguns exemplos, quando um bloco vizinho verificado é um bloco intra-inter combinado, o bloco vizinho pode ser considerado como um bloco intercodificado.
[0083] Em alguns exemplos, quando um bloco vizinho verificado é um bloco intra-inter combinado, o bloco vizinho pode ser considerado como um bloco intracodificado.
[0084] Em alguns exemplos, quando uma única árvore de codificação de luma-croma ou árvores de codificação de luma-croma duplas (separadas) são ativadas, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar os pesos para a combinação dos blocos de croma de acordo com a intra-verificação do correspondente bloco luma ou os blocos vizinhos do bloco luma correspondente.
[0085] Em alguns exemplos, quando a codificação de árvore dupla está ativada, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar os pesos para a combinação dos blocos de croma de acordo com a intra verificação dos blocos de croma vizinhos.
[0086] O codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar pesos com base em uma intra-verificação. Sejam wInter e wIntra os pesos para amostras inter e intra na mistura inter-intra. Os n pesos podem ser normalizados por 2 com n sendo um número inteiro, que é igual à soma dos pesos. Em outras palavras, esses pesos podem ser normalizados por 4, 8, 16, ..., o que é implementável com uma operação simples de deslocamento para a direita.
[0087] Em alguns exemplos, se todos os blocos vizinhos verificados são intracodificados, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar que o peso para amostras intra é maior do que para amostras inter (por exemplo, (wInter, wIntra) = (1,3 ) ou (wInter, wIntra) = (3, 5)) -
[0088] Em alguns exemplos, se todos os blocos vizinhos verificados não forem intracodificados, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar que o peso para amostras intra é menor do que para amostras inter (por exemplo, (wInter, wIntra) = (3, 1) ou (wInter, wIntra) = (5, 3)).
[0089] Em alguns exemplos, se apenas um dos blocos vizinhos verificados for intracodificado, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar que os pesos para amostras intra e inter são idênticos.
[0090] Em alguns exemplos, se os blocos vizinhos superior esquerdo, superior r e esquerdo b forem todos intracodificados, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar que os pesos (wInter, wIntra) são (1, 3) ou ( 3, 5). Em outro exemplo, se pelo menos um dos blocos vizinhos superior esquerdo, superior r ou esquerdo b for intracodificado, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser definidos (wInter, wIntra) igual a (2, 2) ou (4, 4). Em ainda outro exemplo, se todos os blocos vizinhos superior esquerdo, superior direito e inferior esquerdo não forem intracodificados, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser definidos (wInter, wIntra) igual a (3, 1) ou (5 , 3).
[0091] Em alguns exemplos, se pelo menos um dos blocos verificados é um bloco codificado por MHI (intra-multi-hipóteses), o codificador de vídeo 200 e o decodificador de vídeo 300 podem copiar o peso para o bloco atual do peso de um dos blocos verificados.
[0092] Em alguns exemplos, se apenas um desses blocos verificados for intracodificado, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar que o peso para amostras intra é maior do que para amostras inter (por exemplo, (wInter, wIntra) = (1, 3) ou (wInter, wIntra) = (3, 5)) -
[0093] Em alguns exemplos, se apenas um desses blocos verificados for intracodificado, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar que o peso para amostras intra é inferior ao das amostras inter (por exemplo, (wInter, wIntra) = (3, 1) ou (wInter, wIntra) = (5, 3)) -
[0094] Em alguns exemplos, se todos esses blocos verificados não forem intracodificados, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar que o peso para amostras intra é maior do que para amostras inter (por exemplo, (wInter, wIntra) = (1, 3 ) ou (wInter, wIntra) = (3, 5)).
[0095] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar (wInter, wIntra) de acordo com o modo de previsão intra dos blocos vizinhos verificados. Em um exemplo, se houver pelo menos um bloco vizinho sendo codificado usando modo intra ou plano DC, o peso para amostras intra pode ser maior do que para amostras inter (por exemplo, (wInter, wIntra) = (1, 3) ou (wInter, wIntra) = (3, 5)).
[0096] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar (wInter, wIntra) com base no número de inter previsão do bloco indexado por mesclagem, isto é, se o bloco de índice de mesclagem é previsto usando previsão unidirecional ou bidirecional .
[0097] Em alguns exemplos, se o bloco indexado por mesclagem for bi-previsão, o codificador de vídeo 200 e o decodificador de vídeo 300 podem definir o wInter mais alto do que wIntra (por exemplo, (wInter, wIntra) = (3, 1) ou (wInter, wIntra) = (5 , 3)).
[0098] Em alguns exemplos, se o bloco indexado por mesclagem for uniprevisão, o codificador de vídeo 200 e o decodificador de vídeo 300 podem definir o wInter mais alto do que wIntra (por exemplo, (wInter, wIntra) = (3, 1) ou (wInter, wIntra) = (5 , 3)).
[0099] Em alguns exemplos, se o bloco indexado por mesclagem for bi-previsão, o codificador de vídeo 200 e o decodificador de vídeo 300 podem definir o wInter mais alto do que wIntra (por exemplo, (wInter, wIntra) = (3, 1) ou (wInter, wIntra) = (5 , 3)). Enquanto isso, para um bloco indexado por mesclagem com uniprevisão, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar (wInter, wIntra) usando o número de intra e/ou inter-blocos vizinhos, por exemplo, como discutido acima.
[0100] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar (wInter, wIntra) de acordo com o tamanho do bloco atual. O tamanho (SIZEblk) do bloco atual é baseado em sua largura e altura.
[0101] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar o tamanho do bloco atual como o valor mínimo de largura e altura do bloco atual. Em outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar o tamanho do bloco atual como o valor máximo de largura e altura do bloco atual. Em ainda outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar o tamanho do bloco atual pela multiplicação (isto é, o produto) de largura e altura do bloco atual. Em ainda outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar o tamanho do bloco atual pela soma da largura e altura do bloco atual.
[0102] Em alguns exemplos, se SIZEblk for maior do que um limite predefinido, o codificador de vídeo
200 e o decodificador de vídeo 300 podem definir o wInter mais alto ou mais baixo do que wIntra (por exemplo, (wInter, wIntra) = (3, 1) ou (wInter, wIntra) = ( 5, 3)).
[0103] Em alguns exemplos, se SIZEblk for inferior a um limite predefinido, o codificador de vídeo 200 e o decodificador de vídeo 300 podem definir o wInter mais alto ou mais baixo do que wIntra (por exemplo, (wInter, wIntra) = (3, 1) ou (wInter, wIntra) = ( 5, 3)).
[0104] Em alguns exemplos, se o bloco indexado por mesclagem for bi-previsão, o codificador de vídeo 200 e o decodificador de vídeo 300 podem definir o wInter mais alto ou mais baixo do que wIntra (por exemplo, (wInter, wIntra) = (3, 1) ou (wInter, wIntra) = (5, 3)). Enquanto isso, para o bloco indexado por mesclagem com uni-previsão, o codificador de vídeo 200 e o decodificador de vídeo 300 podem determinar (wInter, wIntra) de forma adaptativa de acordo com o tamanho do bloco atual.
[0105] Em alguns exemplos, um conjunto de pares de peso (wInter, wIntra) pode ser predefinido. O conjunto de pares de pesos pode ser sinalizado no cabeçalho do fluxo de bits ou no conjunto de parâmetros de sequência (SPS). Isto é, o codificador de vídeo 200 pode codificar o conjunto de pares de peso, enquanto o decodificador de vídeo 300 pode decodificar o conjunto de pares de peso. Durante o processo de codificação de um bloco MHI, o codificador de vídeo 200 pode determinar o melhor peso usando avaliação de distorção de taxa (RD). Neste exemplo, o codificador de vídeo 200 pode derivar custos RD de todos os elementos no par de pesos. O codificador de vídeo 200 pode selecionar o par com o custo RD mínimo para codificar o bloco atual e sinalizar o índice deste par no fluxo de bits. O codificador de vídeo 200 pode codificar o índice usando um algoritmo CABAC usando desvio ou codificação de entropia baseada no contexto. O decodificador de vídeo 300 pode realizar um processo de decodificação para obter o índice para determinar os pesos (por exemplo, o par de pesos) para aplicar para um bloco atual.
[0106] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar uma lista de pesos em um conjunto de parâmetros (como um SPS, um conjunto de parâmetros de imagem (PPS), um conjunto de parâmetros de vídeo (VPS), um conjunto de parâmetros de adaptação (APS) , ou semelhantes) ou cabeçalhos (blocos, fatias, unidades de codificação ou semelhantes) correspondentes aos casos descritos nas técnicas acima que são baseadas na verificação de modos de blocos vizinhos, tamanhos de blocos, etc.
[0107] A Figura 4 é um diagrama de blocos que ilustra um codificador de vídeo exemplificativo 200 que pode realizar as técnicas desta revelação. A Figura 4 é fornecida para propósitos explicativos e não deveria ser considerada como limitante das técnicas conforme amplamente exemplificado e descrito nesta revelação. Para fins de explicação, esta revelação descreve o codificador de vídeo 200 no contexto de padrões de codificação de vídeo, como o padrão de codificação de vídeo HEVC e o padrão de codificação de vídeo H.266 em desenvolvimento. No entanto, as técnicas desta revelação não estão limitadas a esses padrões de codificação de vídeo e são geralmente aplicáveis à codificação e decodificação de vídeo.
[0108] No exemplo da Figura 4, o codificador de vídeo 200 inclui memória de dados de vídeo 230, unidade de seleção de modo 202, unidade de geração de resíduo 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 decodificado (DPB) 218, e unidade de codificação por entropia 220. Qualquer ou toda a memória de dados de vídeo 230, unidade de seleção de modo 202, unidade de geração residual 204, unidade de processamento de transformação 206, unidade de quantização 208, unidade de quantização inversa 210, unidade de processamento de transformação inversa 212, unidade de reconstrução 214, unidade de filtro 216, DPB 218, e a unidade de codificação de entropia 220 pode ser implementada em um ou mais processadores ou em circuitos de processamento. Além disso, o codificador de vídeo 200 pode incluir processadores adicionais ou alternativos ou circuitos de processamento para executar estas e outras funções.
[0109] A memória de dados de vídeo 230 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 200. O codificador de vídeo 200 pode receber os dados de vídeo armazenados na memória de dados de vídeo 230, por exemplo, da fonte de vídeo 104 (Figura 1). 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 previsão de dados de vídeo subsequentes pelo codificador de vídeo 200. A memória de dados de vídeo 230 e o armazenamento temporário de imagem decodificada 218 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória dinâmica de acesso aleatório (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 230 e o armazenamento temporário de imagem decodificada 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 de codificador de vídeo 200, como ilustrado, ou fora do chip em relação àqueles componentes.
[0110] 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 para o codificador de vídeo 200, a menos que especificamente descrito como tal, ou memória externa para o codificador de vídeo 200, a menos que especificamente descrito como tal. Em vez disso, 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 codificador de vídeo 200 recebe para codificação (por exemplo, dados de vídeo para um bloco atual que deve ser codificado). Memória 106 da Figura 1 também pode fornecer armazenamento temporário de saídas das várias unidades do codificador de vídeo 200.
[0111] As várias unidades da Figura 4 são ilustrados para ajudar a compreender as operações realizadas pelo codificador de vídeo 200. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação dos mesmos. Os circuitos de função fixa referem-se a circuitos que fornecem uma funcionalidade específica e são predefinidos nas operações que podem ser executadas. Os circuitos programáveis referem-se a circuitos que podem ser programados para 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 faz com que os circuitos programáveis operem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou parâmetros de saída), mas os tipos de operações que os circuitos de função fixa realizam são geralmente imutáveis. Em alguns exemplos, uma ou mais das unidades podem ser blocos de circuitos distintos (função fixa ou programáveis) e, em alguns exemplos, uma ou mais unidades podem ser circuitos integrados.
[0112] O codificador de vídeo 200 pode incluir unidades lógicas aritméticas (ALUs), unidades de função elementar (EFUs), circuitos digitais, circuitos analógicos e/ou núcleos programáveis, formados a partir de circuitos programáveis. Em exemplos em que as operações do codificador de vídeo 200 são realizadas usando software executado pelos circuitos programáveis, a memória 106 (Figura 1) pode armazenar o código-objeto do software que o codificador de vídeo 200 recebe e executa, ou outra memória dentro do codificador de vídeo 200 ( não mostrado) pode armazenar tais instruções.
[0113] A memória de dados de vídeo 230 é configurada para armazenar dados de vídeo recebidos. O codificador de vídeo 200 pode recuperar uma imagem dos dados de vídeo da memória de dados de vídeo 230 e fornecer os dados de vídeo para a unidade de geração residual 204 e 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 codificados.
[0114] A unidade de seleção de modo 202 inclui uma unidade de estimativa de movimento 222 uma unidade de compensação de movimento 224 e uma unidade de intraprevisão
226. A unidade de seleção de modo 202 pode incluir unidades funcionais adicionais para realizar previsão de vídeo de acordo com outros modos de previsão. Como exemplos, a unidade de seleção de modo 202 pode incluir uma unidade de paleta, uma unidade de cópia intrabloco (que pode ser parte da unidade de estimativa de movimento 222 e/ou unidade de compensação de movimento 224), uma unidade afim, uma unidade de modelo linear (LM), ou semelhante.
[0115] A unidade de seleção de modo 202 geralmente coordena várias passagens de codificação para testar combinações de parâmetros de codificação e valores de distorção de taxa resultantes para tais combinações. Os parâmetros de codificação podem incluir particionamento de CTUs em CUs, modos de previsão para CUs, tipos de transformação para dados residuais de CUs, parâmetros de quantização para dados residuais de CUs e assim por diante. A unidade de seleção de modo 202 pode, em última análise, selecionar a combinação de parâmetros de codificação com valores de taxa de distorção que são melhores do que as outras combinações testadas.
[0116] O codificador de vídeo 200 pode particionar uma imagem recuperada da memória de dados de vídeo 230 em uma série de CTUs e encapsular uma ou mais CTUs dentro de uma fatia. A unidade de seleção de modo 202 pode particionar uma CTU da imagem de acordo com uma estrutura de árvore, tal como a estrutura QTBT ou a estrutura de árvore quádrupla de HEVC descrita acima. Conforme descrito acima, o codificador de vídeo 200 pode formar uma ou mais UCs a partir do particionamento de uma CTU de acordo com a estrutura em árvore. Tal UC também pode ser referido geralmente como um "bloco de vídeo" ou "bloco".
[0117] Em geral, a unidade de seleção de modo 202 também controla os componentes do mesmo (por exemplo, unidade de estimativa de movimento 222, unidade de compensação de movimento 224 e unidade de intraprevisão 226) para gerar um bloco de previsão para um bloco atual (por exemplo, um CU atual, ou em HEVC, a parte sobreposta de uma PU e uma TU). Para interprevisão de um bloco atual, a unidade de estimativa de movimento 222 pode realizar uma pesquisa de movimento para identificar um ou mais blocos de referência próximos em uma ou mais imagens de referência (por exemplo, uma ou mais imagens previamente codificadas armazenadas em DPB 218). Em particular, a unidade de estimativa de movimento 222 pode calcular um valor representativo de quão semelhante um bloco de referência potencial é ao bloco atual, por exemplo, de acordo com a soma da diferença absoluta (SAD), soma das diferenças quadradas (SSD), diferença absoluta média (MAD ), diferenças quadradas médias (MSD) ou semelhantes. A unidade de estimativa de movimento 222 pode geralmente realizar esses cálculos usando diferenças amostra por amostra entre o bloco atual e o bloco de referência sendo considerado. A unidade de estimativa de movimento 222 pode identificar um bloco de referência com um valor mais baixo resultante desses cálculos, indicando um bloco de referência que mais se aproxima do bloco atual.
[0118] A unidade de estimativa 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 estimativa de movimento 222 pode, então, fornecer os vetores de movimento para a unidade de compensação de movimento 224. Por exemplo, para interprevisão unidirecional, a unidade de estimativa de movimento 222 pode fornecer um único vetor de movimento, enquanto para a interprevisão bidirecional, a unidade de estimativa de movimento 222 pode fornecer dois vetores de movimento. A unidade de compensação de movimento 224 pode, então, gerar um bloco de previsão usando os vetores de movimento. Por exemplo, a unidade de compensação de movimento 224 pode recuperar dados do bloco de referência usando o vetor de movimento. Como outro exemplo, se o vetor de movimento tem precisão de amostra fracionada, a unidade de compensação de movimento 224 pode interpolar valores para o bloco de previsão de acordo com um ou mais filtros de interpolação. Além disso, para interprevisão bidirecional, a unidade de compensação de movimento 224 pode recuperar dados para dois blocos de referência identificados pelos respectivos vetores de movimento e combinar os dados recuperados, por exemplo, por meio de média de amostra por amostra ou média ponderada.
[0119] Como outro exemplo, para intraprevisão ou codificação intraprevisão, a unidade de intraprevisão 226 pode gerar o bloco de previsão a partir de amostras vizinhas ao bloco atual. Por exemplo, para modos direcionais, a unidade de intraprevisã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 previsão. Como outro exemplo, para o modo DC, a unidade de intraprevisão 226 pode calcular uma média das amostras vizinhas ao bloco atual e gerar o bloco de previsão para incluir esta média resultante para cada amostra do bloco de previsão.
[0120] De acordo com as técnicas desta revelação, a unidade de seleção de modo 202 pode realizar previsão intra-intra de blocos de dados de vídeo (por exemplo, CUs). Isto é, a unidade de seleção de modo 202 pode formar um bloco de previsão fazendo com que a unidade de estimativa de movimento 222 e a unidade de compensação de movimento 224 formem um bloco de interprevisão e a unidade de intraprevisão 226 para formar um bloco de intraprevisão. A unidade de seleção de modo 202 pode formar o bloco de previsão final para um bloco atual realizando uma combinação ponderada de amostras do bloco de interprevisão e do bloco de intraprevisão. Quando um bloco de corrente é um bloco de crominância, a unidade de seleção de modo 202 pode determinar pesos para realizar a previsão ponderada de acordo com uma série de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados intra e/ou interprevisão. Isto é, em vez de determinar os pesos de acordo com os blocos vizinhos ao bloco de crominância atual, a unidade de seleção de modo 202 pode determinar o número de blocos interprevistos vizinhos ao bloco de luminância correspondente ao bloco de crominância atual e, em seguida, determinar os pesos com base no número de blocos interprevistos vizinhos ao bloco de luminância.
[0121] Como um exemplo, a unidade de seleção de modo 202 pode determinar se um bloco vizinho acima e/ou um bloco vizinho à esquerda para o bloco de luminância correspondente são interprevistos. Quando nenhum desses blocos vizinhos é interprevisto, a unidade de seleção de modo 202 pode determinar um peso de 3 a ser aplicado ao bloco de intraprevisão e um peso de 1 a ser aplicado ao bloco de interprevisão. Quando ambos os blocos vizinhos são interprevistos, a unidade de seleção de modo 202 pode determinar um peso de 3 a ser aplicado ao bloco de interprevisão e um peso de 1 a ser aplicado ao bloco de intraprevisão. Quando um desses blocos vizinhos é interprevisto e o outro é intraprevisto, a unidade de seleção de modo 202 pode determinar pesos de 2 a serem aplicados tanto ao bloco de interprevisão quanto ao bloco de intraprevisão. Em alguns exemplos, a unidade de seleção de modo 202 pode contar blocos vizinhos preditos usando previsão intra-intra e/ou cópia intrabloco como blocos codificados de interprevisão.
[0122] A unidade de seleção de modo 202 fornece o bloco de previsã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 da memória de dados de vídeo 230 e o bloco de previsão 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 previsã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 diferenças entre os valores de amostra no bloco residual para gerar um bloco residual usando modulação de código de pulso diferencial residual (RDPCM). Em alguns exemplos, a unidade de geração residual 204 pode ser formada usando um ou mais circuitos subtratores que realizam a subtração binária.
[0123] Em exemplos em que a unidade de seleção de modo 202 particiona CUs em PUs, cada PU pode ser associado a uma unidade de previsão luma e unidades de previsão de croma correspondentes. O codificador de vídeo 200 e o decodificador de vídeo 300 podem suportar as PUs que têm 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 previsão em luma da PU. Presumindo-se que o tamanho de uma CU particular seja 2Nx2N, o codificador de vídeo 200 podem suportar tamanhos de PU de 2Nx2N ou NxN para intraprevisão e tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, NxN ou similar para interprevisão. O codificador de vídeo 200 e o decodificador de vídeo 300 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para interprevisão.
[0124] Em exemplos onde a unidade de seleção de modo não particiona ainda mais uma CU em PUs, cada CU pode ser associada a um bloco de codificação luma e blocos de codificação de croma correspondentes. Como acima, o tamanho de uma UC pode se referir ao tamanho do bloco de codificação luma da UC. O codificador de vídeo 200 e o decodificador de vídeo 300 podem suportar tamanhos de CU de 2Nx2N, 2NxN ou Nx2N.
[0125] Para outras técnicas de codificação de vídeo, como uma codificação de modo de cópia intrabloco, uma codificação de modo afim e codificação de modo de modelo linear (LM), como alguns exemplos, a unidade de seleção de modo 202, por meio das respectivas unidades associadas às técnicas de codificação, gera um bloco de previsão para o bloco atual sendo codificado. Em alguns exemplos, como a codificação de modo de paleta, a unidade de seleção de modo 202 pode não gerar um bloco de previsão e, em vez disso, gera elementos de sintaxe que indicam a maneira pela qual reconstruir o bloco com base em uma paleta selecionada. Em tais modos, a unidade de seleção de modo 202 pode fornecer esses elementos de sintaxe para a unidade de codificação de entropia 220 para serem codificados.
[0126] Em alguns exemplos, a unidade de seleção de modo 202 pode selecionar um modo de previsão intra-intra. Em tais exemplos, a unidade de seleção de modo 202 pode ponderar um bloco de interprevisão gerado pela unidade de compensação de movimento 224 e um bloco de intraprevisão gerado pela unidade de intraprevisão 226 de acordo com qualquer uma das várias técnicas desta revelação. A unidade de seleção de modo 202 pode gerar um bloco de previsão a partir dos blocos de inter e intra previsão ponderados e emitir o bloco de previsão gerado.
[0127] Conforme descrito acima, a unidade de geração residual 204 recebe os dados de vídeo para o bloco atual e o bloco de previsão correspondente. A unidade de geração residual 204, então, gera um bloco residual para o bloco atual. Para gerar o bloco residual, a unidade de geração residual 204 calcula diferenças amostra por amostra entre o bloco de previsão e o bloco atual.
[0128] A unidade de processamento de transformação 206 aplica uma ou mais transformadas ao bloco residual para gerar um bloco de coeficientes de transformada (referido neste documento como um "bloco de coeficiente de transformação"). A unidade de processamento de transformação 206 pode aplicar várias transformadas a um bloco residual para formar o bloco de coeficiente de transformação. Por exemplo, uma unidade de processamento de transformada 206 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada direcional, uma transformada de Karhunen-Loeve (KLT) ou uma transformada conceitualmente semelhante a um bloco residual. Em alguns exemplos, a unidade de processamento de transformação 206 pode realizar múltiplas transformadas em um bloco residual, por exemplo, uma transformação primária e uma transformação secundária, como uma transformação rotacional. Em alguns exemplos, a unidade de processamento de transformada 206 não aplica transformadas a um bloco residual.
[0129] A unidade de quantização 208 pode quantizar os coeficientes de transformada em um bloco de coeficiente de transformação, para produzir um bloco de coeficiente de transformação quantizado. A unidade de quantização 208 pode quantizar coeficientes de transformada de um bloco de coeficiente de transformação de acordo com um valor de parâmetro de quantização (QP) associado ao bloco atual. O codificador de vídeo 200 (por exemplo, através da unidade de seleção de modo 202) pode ajustar o grau de quantização aplicado aos blocos de coeficiente associados ao bloco atual, ajustando o valor QP associado ao CU. A quantização pode introduzir perda de informação e, assim, os coeficientes de transformada quantizados podem ter menor precisão do que os coeficientes de transformada originais produzidos pela unidade de processamento de transformada 206.
[0130] 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 quantizada, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficiente de transformada. A unidade de reconstrução 214 pode produzir um bloco reconstruído correspondente ao bloco atual (embora potencialmente com algum grau de distorção) com base no bloco residual reconstruído e um bloco de previsã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 às amostras correspondentes do bloco de previsão gerado pela unidade de seleção de modo 202 para produzir o bloco reconstruído.
[0131] A unidade de filtro 216 pode realizar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 216 pode realizar operações de desbloqueio para reduzir artefatos de bloqueio ao longo das bordas de CUs. As operações da unidade de filtro 216 podem ser ignoradas, em alguns exemplos.
[0132] O codificador de vídeo 200 armazena blocos reconstruídos no DPB 218. Por exemplo, em exemplos onde as operações da unidade de filtro 216 não são necessárias, a unidade de reconstrução 214 pode armazenar blocos reconstruídos no DPB 218. Em exemplos onde as operações da unidade de filtro 216 são necessárias, a unidade de filtro 216 pode armazenar os blocos reconstruídos filtrados no DPB 218. A unidade de estimativa de movimento 222 e a unidade de compensação de movimento 224 podem recuperar uma imagem de referência do DPB 218, formada a partir dos blocos reconstruídos (e potencialmente filtrados), para prever blocos de imagens subsequentemente codificadas. Além disso, a unidade de intraprevisão 226 pode usar blocos reconstruídos no DPB 218 de uma imagem atual para intra-prever outros blocos na imagem atual.
[0133] Em geral, a unidade de codificação de entropia 220 pode codificar com entropia elementos de sintaxe recebidos de outros componentes funcionais do codificador de vídeo 200. Por exemplo, a unidade de codificação de entropia 220 pode codificar entropia blocos de coeficiente de transformação quantizada da unidade de quantização 208. Como outro exemplo, a unidade de codificação de entropia 220 pode codificar entropia elementos de sintaxe de previsão (por exemplo, informação de movimento para interprevisão ou informação intra-modo para intraprevisão) da unidade de seleção de modo 202. A unidade de codificação de entropia 220 pode executar uma ou mais operações de codificação de entropia nos elementos de sintaxe, que são outro exemplo de dados de vídeo, para gerar dados codificados por entropia. Por exemplo, a unidade de criptação por entropia 220 pode realizar uma operação de codificação de comprimento variável adaptativa ao contexto (CAVLC), uma operação de CABAC, uma operação de codificação de comprimento de variável para variável (V2V), uma operação de codificação aritmética binária adaptativa a contexto com base em sintaxe (SBAC), uma operação de codificação de Particionamento por Entropia com Intervalo de Probabilidade (PIPE), uma operação de criptação de Exponencial de Golomb ou um outro tipo de operação de criptação por entropia nos dados. Em alguns exemplos, a unidade de codificação de entropia 220 pode operar em modo de desvio, onde os elementos de sintaxe não são codificados por entropia.
[0134] O codificador de vídeo 200 pode emitir um fluxo de bits que inclui os elementos de sintaxe codificados por entropia necessários para reconstruir blocos de uma fatia ou imagem. Em particular, a unidade de codificação de entropia 220 pode enviar o fluxo de bits.
[0135] As operações descritas acima são descritas em relação a um bloco. Tal descrição deve ser entendida como sendo operações para um bloco de codificação luma e/ou blocos de codificação croma. Conforme descrito acima, em alguns exemplos, o bloco de codificação de luma e os blocos de codificação de croma são componentes de luma e croma de uma CU. Em alguns exemplos, o bloco de codificação luma e os blocos de codificação de croma são componentes de luma e croma de um PU.
[0136] Em alguns exemplos, as operações realizadas em relação a um bloco de codificação luma não precisam ser repetidas para os blocos de codificação de croma. Como um exemplo, as operações para identificar um vetor de movimento (MV) e imagem de referência para um bloco de codificação luma não precisam ser repetidas para identificar um MV e imagem de referência para os blocos de croma. Em vez disso, o MV para o bloco de codificação luma pode ser escalado para determinar o MV para os blocos de croma e a imagem de referência pode ser a mesma. Como outro exemplo, o processo de intraprevisão pode ser o mesmo para os blocos de codificação de luma e os blocos de codificação de croma.
[0137] O codificador de vídeo 200 da Figura 4 representa um exemplo de um dispositivo para codificação de dados de vídeo compreendendo um ou mais processadores configurados para formar um bloco de interprevisão para um bloco atual de dados de vídeo; formar um bloco intraprevisão para o bloco atual de dados de vídeo; aplicar um primeiro peso ao bloco de interprevisão e um segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco atual; e codifique (ou seja, codifique, neste exemplo) o bloco atual usando o bloco de previsão.
[0138] O codificador de vídeo 200 também representa um exemplo de um dispositivo para codificar dados de vídeo compreendendo um ou mais processadores configurados para formar um bloco de interprevisão para um bloco de crominância atual de dados de vídeo; formar um bloco de intraprevisão para o bloco de crominância atual dos dados de vídeo; determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; aplicar o primeiro peso ao bloco de interpretação e o segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e codifique o bloco de crominância atual usando o bloco de previsão.
[0139] A Figura 5 é um diagrama de blocos que ilustra um decodificador de vídeo exemplificativo 300 que pode realizar as técnicas desta revelação. A Figura 5 é fornecida para propósitos explicativos e não é considerada como limitante das técnicas conforme amplamente exemplificado e descrito nesta revelação. Para fins de explicação, esta revelação descreve o decodificador de vídeo 300 de acordo com as técnicas de JEM, VVC e HEVC. No entanto, 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.
[0140] No exemplo da Figura 5, o decodificador de vídeo 300 inclui memória de buffer de imagem codificada (CPB) 320, unidade de decodificação de entropia 302, unidade de processamento de previsão 304, unidade de quantização inversa 306, unidade de processamento de transformação inversa 308, unidade de reconstrução 310, unidade de filtro 312 e buffer de imagem decodificada (DPB ) 314. Qualquer ou toda a memória CPB 320, unidade de decodificação de entropia 302, unidade de processamento de previsão 304, unidade de quantização inversa 306, unidade de processamento de transformação inversa 308, unidade de reconstrução 310, unidade de filtro 312 e DPB 314 podem ser implantados em um ou mais processadores ou em circuitos de processamento.
[0141] Além disso, o decodificador de vídeo 300 pode incluir processadores adicionais ou alternativos ou circuitos de processamento para executar estas e outras funções.
[0142] A unidade de processamento de previsão 304 inclui uma unidade de compensação de movimento 316 e uma unidade de intraprevisão 318. A unidade de processamento de previsão 304 pode incluir unidades de adição para realizar a previsão de acordo com outros modos de previsão. Como exemplos, a unidade de processamento de previsão 304 pode incluir uma unidade de paleta, uma unidade de cópia intrabloco (que pode fazer parte da unidade de compensação de movimento 316), uma unidade afim, uma unidade de modelo linear (LM) ou semelhante. Em outros exemplos, o decodificador de vídeo 300 pode incluir mais, menos ou diferentes componentes funcionais.
[0143] Em alguns exemplos, a unidade de processamento de previsão 304 pode selecionar um modo de previsão intra-intra. Em tais exemplos, a unidade de processamento de previsão 304 pode ponderar um bloco de interpretação gerado pela unidade de compensação de movimento 316 e um bloco de intraprevisão gerado pela unidade de intraprevisão 318 de acordo com qualquer uma das várias técnicas desta revelação. A unidade de processamento de previsão 304 pode gerar um bloco de previsão a partir dos blocos de inter e intra previsão ponderados e enviar o bloco de previsão gerado.
[0144] De acordo com as técnicas desta revelação, a unidade de processamento de previsão 304 pode realizar previsão intra-intra de blocos de dados de vídeo (por exemplo, CUs). Isto é, a unidade de processamento de previsão 304 pode formar um bloco de previsão fazendo com que a unidade de compensação de movimento 316 forme um bloco de interprevisão e a unidade de intraprevisão 318 para formar um bloco de intraprevisão. A unidade de processamento de previsão 304 pode formar o bloco de previsão final para um bloco atual realizando uma combinação ponderada de amostras do bloco de interprevisão e do bloco de intraprevisão. Quando um bloco atual é um bloco de crominância, a unidade de processamento de previsão 304 pode determinar pesos para realizar a previsão ponderada de acordo com um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados intraprevisão. Isto é, em vez de determinar os pesos de acordo com os blocos vizinhos ao bloco de crominância atual, a unidade de processamento de previsão 304 pode determinar o número de blocos intraprevistos vizinhos ao bloco de luminância correspondente ao bloco de crominância atual e, em seguida, determinar os pesos com base no número de blocos intraprevistos vizinhos ao bloco de luminância.
[0145] Como um exemplo, a unidade de processamento de previsão 304 pode determinar se um bloco vizinho acima e/ou um bloco vizinho à esquerda para o bloco de luminância correspondente são interprevistos. Quando nenhum desses blocos vizinhos é interprevisto, a unidade de processamento de previsão 304 pode determinar um peso de 3 a ser aplicado ao bloco de intraprevisão e um peso de 1 a ser aplicado ao bloco de interprevisão. Quando esses dois blocos vizinhos são interprevistos, a unidade de processamento de previsão 304 pode determinar um peso de 3 a ser aplicado ao bloco de interprevisão e um peso de 1 a ser aplicado ao bloco de intraprevisão. Quando um desses blocos vizinhos é interpretado e o outro é intraprevisto, a unidade de processamento de previsão 304 pode determinar pesos de 2 a serem aplicados tanto ao bloco de interprevisão quanto ao bloco de intraprevisão. Em alguns exemplos, a unidade de processamento de previsão 304 pode contar blocos vizinhos preditos usando previsão intra-intra e/ou cópia intrabloco como blocos codificados de interprevisão.
[0146] A memória de CPB 320 pode armazenar dados de vídeo, tal como um fluxo de bits de vídeo codificado, a ser decodificado pelos componentes de decodificador de vídeo 300. Os dados de vídeo armazenados na memória CPB 320 podem ser obtidos, por exemplo, a partir de meio legível por computador 110 (Figura 1). A memória CPB 320 pode incluir um CPB que armazena dados de vídeo codificados (por exemplo, elementos de sintaxe) de um fluxo de bits de vídeo codificado. Além disso, a memória CPB 320 pode armazenar dados de vídeo que não sejam elementos de sintaxe de uma imagem codificada, como dados temporários que representam saídas de várias unidades do decodificador de vídeo 300. O DPB 314 geralmente armazena imagens decodificadas, cujo decodificador de vídeo 300 pode produzir e/ou usar como dados de vídeo de referência ao decodificar dados ou imagens subsequentes do fluxo de bits de vídeo codificado. A memória de dados de vídeo 320 e o armazenamento temporário de imagem decodificada 314 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória dinâmica de acesso aleatório (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória CPB 320 e DPB 314 podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de CPB 320 pode estar no chip com outros componentes de decodificador de vídeo 300, ou fora do chip em relação àqueles componentes.
[0147] 0146] Adicionalmente ou alternativamente, em alguns exemplos, o decodificador de vídeo 300 pode recuperar dados de vídeo codificados da memória 120 (Figura 1). Isto é, a memória 120 pode armazenar dados conforme discutido acima com a memória CPB
320. Da mesma forma, a memória 120 pode armazenar instruções a serem executadas pelo decodificador de vídeo 300, quando algumas ou todas as funcionalidades do decodificador de vídeo 300 são implementadas no software a ser executado pelo circuito de processamento do decodificador de vídeo 300.
[0148] As várias unidades mostradas na Figura 5 são ilustrados para ajudar a compreender as 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. Semelhante à Figura 4, os circuitos de função fixa referem- se a circuitos que fornecem uma funcionalidade particular e são predefinidos nas operações que podem ser realizadas. Os circuitos programáveis referem-se 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 faz com que os circuitos programáveis operem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou parâmetros de saída), mas os tipos de operações que os circuitos de função fixa realizam são geralmente imutáveis. Em alguns exemplos, uma ou mais das unidades podem ser blocos de circuitos distintos (função fixa ou programáveis) e, em alguns exemplos, uma ou mais unidades podem ser circuitos integrados.
[0149] O decodificador de vídeo 300 pode incluir ALUs, EFUs, circuitos digitais, circuitos analógicos e/ou núcleos programáveis formados a partir de circuitos programáveis. Em exemplos em que as operações do decodificador de vídeo 300 são realizadas por software em execução nos circuitos programáveis, a memória em 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.
[0150] A unidade de decodificação de entropia 302 pode receber dados de vídeo codificados do CPB e decodificar por entropia os dados de vídeo para reproduzir elementos de sintaxe. A unidade de processamento de previsã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 em elementos de sintaxe extraídos do fluxo de bits.
[0151] Em geral, o decodificador de vídeo 300 reconstrói uma imagem bloco a bloco. O decodificador de vídeo 300 pode realizar uma operação de reconstrução em cada bloco individualmente (onde o bloco atualmente sendo reconstruído, isto é, decodificado, pode ser referido como um "bloco atual").
[0152] A unidade de decodificação de entropia 302 pode decodificar elementos de sintaxe de entropia definindo coeficientes de transformada quantizados de um bloco de coeficiente de transformada quantizado, bem como informações de transformação, como um parâmetro de quantização (QP) e/ou indicação (ões) de modo de transformação. A unidade de quantização inversa 306 pode usar QP associado bloco de coeficiente de transformada quantizada para determinar um grau de quantização e, de modo similar, para aplicar um grau de quantização inversa à unidade de quantização inversa 306. 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, assim, formar um bloco de coeficiente de transformação incluindo coeficientes de transformada.
[0153] Após a unidade de quantização inversa 306 formar o bloco de coeficiente de transformação, a unidade de processamento de transformação inversa 308 pode aplicar uma ou mais transformadas inversas ao bloco de coeficiente de transformação 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 uma outra transformada inversa ao bloco de coeficiente.
[0154] Além disso, a unidade de processamento de previsão 304 gera um bloco de previsão de acordo com elementos de sintaxe de informação de previsão que foram decodificados por entropia pela unidade de decodificação de entropia 302. Por exemplo, se os elementos de sintaxe de informação de previsão indicam que o bloco atual é interprevisto, a unidade de compensação de movimento 316 pode gerar o bloco de previsão. Neste caso, os elementos de sintaxe de informações de previsão podem indicar uma imagem de referência no DPB 314 a partir da qual recuperar um bloco de referência, bem como um vetor de movimento que identifica uma localização do bloco de referência na imagem de referência em relação à localização do bloco atual na imagem atual. A unidade de compensação de movimento 316 pode geralmente executar o processo de interprevisão de uma maneira que é substancialmente semelhante àquela descrita em relação à unidade de compensação de movimento 224 (Figura 4).
[0155] Como outro exemplo, se os elementos de sintaxe de informação de previsão indicam que o bloco atual é intraprevisto, a unidade de intraprevisão 318 pode gerar o bloco de previsão de acordo com um modo de intraprevisão indicado pelos elementos de sintaxe de informação de previsão. Novamente, a unidade de intraprevisão 318 pode geralmente executar o processo de intraprevisão de uma maneira que é substancialmente semelhante àquela descrita em relação à unidade de intraprevisão 226 (Figura 4). A unidade intraprevisão 318 pode recuperar dados de amostras vizinhas ao bloco atual do DPB 314.
[0156] A unidade de reconstrução 310 pode reconstruir o bloco atual usando o bloco de previsão e o bloco residual. Por exemplo, a unidade de reconstrução 310 pode adicionar amostras do bloco residual às amostras correspondentes do bloco de previsão para reconstruir o bloco atual.
[0157] A unidade de filtro 312 pode realizar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 312 pode realizar operações de desbloqueio para reduzir artefatos de bloqueio ao longo das bordas dos blocos reconstruídos. As operações da unidade de filtro 312 não são necessariamente realizadas em todos os exemplos.
[0158] O decodificador de vídeo 300 pode armazenar os blocos reconstruídos no DPB 314. Como discutido acima, DPB 314 pode fornecer informações de referência, como amostras de uma imagem atual para intraprevisão e imagens previamente decodificadas para compensação de movimento subsequente, para a unidade de processamento de previsão 304. Além disso, o decodificador de vídeo 300 pode produzir imagens decodificadas do DPB para apresentação subsequente em um dispositivo de exibição, como o dispositivo de exibição 118 da Figura 1
[0159] Decodificador de vídeo 300 da Figura 5 representa um exemplo de um dispositivo para codificação de dados de vídeo compreendendo um ou mais processadores configurados para formar um bloco de interprevisão para um bloco atual de dados de vídeo; formar um bloco intraprevisão para o bloco atual de dados de vídeo; aplicar um primeiro peso ao bloco de interprevisão e um segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco atual; e codifique (ou seja, decodifique, neste exemplo) o bloco atual usando o bloco de previsão.
[0160] O decodificador de vídeo 300 também representa um exemplo de um dispositivo para codificar dados de vídeo compreendendo um ou mais processadores configurados para formar um bloco de interprevisão para um bloco de crominância atual de dados de vídeo; formar um bloco de intraprevisão para o bloco de crominância atual dos dados de vídeo; determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; aplicar o primeiro peso ao bloco de interpretação e o segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e codifique o bloco de crominância atual usando o bloco de previsão.
[0161] A Figura 6 é um fluxograma que ilustra um método exemplificativo para codificar um bloco atual de acordo com as técnicas desta revelação. O bloco atual pode compreender uma UC atual. Embora descrito em relação ao codificador de vídeo 200 (Figuras 1 e 4), deveria ser compreendido que outros dispositivos podem ser configurados para realizar um método semelhante àquele da Figura 6.
[0162] Neste exemplo, o codificador de vídeo 200 prevê inicialmente o bloco atual (350). Por exemplo, o codificador de vídeo 200 pode formar um bloco de previsão para o bloco atual usando previsão intra-intra de acordo com as técnicas desta revelação. O codificador de vídeo 200 pode, então, calcular um bloco residual para o bloco atual (352). Para calcular o bloco residual, o codificador de vídeo 200 pode calcular uma diferença entre o bloco original, o bloco não codificado e o bloco de previsão para o bloco atual. O codificador de vídeo 200 pode, então, transformar e quantizar coeficientes do bloco residual (354). Em seguida, o codificador de vídeo 200 pode realizar a varredura dos coeficientes de transformada quantizados do bloco residual (356). Durante ou após a varredura, o codificador de vídeo 200 pode codificar por entropia os coeficientes (358). Por exemplo, o codificador de vídeo 200 pode criptografar os coeficientes com o uso de CAVLC ou CABAC. O codificador de vídeo 200 pode, então, emitir os dados codificados por entropia do bloco (360).
[0163] Desta forma, o método da Figura 6 representa um exemplo de um método incluindo a formação de um bloco de interprevisão para um bloco atual de dados de vídeo; formar um bloco intraprevisão para o bloco atual de dados de vídeo; aplicar um primeiro peso ao bloco de interprevisão e um segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco atual; e codificação (ou seja, codificação) do bloco atual usando o bloco de previsão.
[0164] A Figura 7 é um fluxograma que ilustra um método exemplificativo para decodificar um bloco atual de acordo com as técnicas desta revelação. O bloco atual pode compreender uma UC atual. Embora descrito em relação ao decodificador de vídeo 300 (Figuras 1 e 5), deveria ser compreendido que outros dispositivos podem ser configurados para realizar um método semelhante àquele da Figura 7.
[0165] O decodificador de vídeo 300 pode receber dados codificados por entropia para o bloco atual, como informações de previsão codificadas por entropia e dados codificados por entropia para coeficientes de um bloco residual correspondente ao bloco atual (370). O decodificador de vídeo 300 pode decodificar por entropia os dados codificados por entropia para determinar a informação de previsão para o bloco atual e para reproduzir os coeficientes do bloco residual (372). O decodificador de vídeo 300 pode predizer o bloco atual (374), por exemplo, usando o modo de previsão inter-intra pelas técnicas desta revelação, conforme indicado pela informação de previsão para o bloco atual, para calcular um bloco de previsão para o bloco atual. O decodificador de vídeo 300, então, pode realizar a varredura inversa dos coeficientes reproduzidos (376), para criar um bloco de coeficientes de transformada quantizados. O decodificador de vídeo 300, então, pode, quantizar inversamente e transformar inversamente os coeficientes para produzir um bloco residual (378). O decodificador de vídeo 300, por fim, pode decodificar o bloco atual combinando-se o bloco de previsão e o bloco residual (380).
[0166] Desta forma, o método da Figura 7 representa um exemplo de um método incluindo a formação de um bloco de interprevisão para um bloco atual de dados de vídeo; formar um bloco intraprevisão para o bloco atual de dados de vídeo; aplicar um primeiro peso ao bloco de interprevisão e um segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco atual; e codificação (ou seja, decodificação) o bloco atual usando o bloco de previsão.
[0167] A Figura 8 é um fluxograma que ilustra um método exemplificativo de codificação (codificar ou decodificar) dados de vídeo de acordo com as técnicas desta revelação. Para fins exemplificativo e explicação, o método da Figura 8 é explicado em relação ao decodificador de vídeo 300 das Figuras 1 e 5, embora o codificador de vídeo
200 das Figuras 1 e 4 ou outros dispositivos de codificação de vídeo podem executar este ou um método semelhante. O método da Figura 8 pode ser realizado pelo codificador de vídeo 200 ao prever um bloco de crominância atual, por exemplo, na etapa 350 do método da Figura 6, ou pelo decodificador de vídeo 300 ao prever um bloco de crominância atual, por exemplo, na etapa 374 da Figura 7
[0168] Inicialmente, o decodificador de vídeo 300 forma um bloco de interprevisão para um bloco de crominância atual (400). O decodificador de vídeo 300 também pode formar um bloco de intraprevisão para o bloco de crominância atual (402). O decodificador de vídeo 300 pode então determinar um bloco de luminância correspondente ao bloco de crominância (404), por exemplo, um bloco de luminância que está colocalizado com o bloco de crominância em uma matriz de luminância.
[0169] O decodificador de vídeo 300 pode então determinar os modos de previsão de blocos vizinhos ao bloco de luminância (406). Por exemplo, o decodificador de vídeo 300 pode determinar os modos de previsão do bloco vizinho superior 142 e do bloco vizinho esquerdo 144 da Figura 3A, bloco vizinho superior direito 148 e bloco vizinho inferior esquerdo 150 da Figura 3B, ou semelhantes para outros exemplos de blocos vizinhos, como mostrado nas Figuras 3A- 3F. O decodificador de vídeo 300 também pode determinar um número de blocos vizinhos intraprevistos para o bloco de luminância (408). Alternativamente, o decodificador de vídeo 300 pode determinar um número de blocos vizinhos interprevistos para o bloco de luminância.
[0170] O decodificador de vídeo 300 também pode determinar os pesos a serem aplicados ao bloco de interpretação e ao bloco de intraprevisão de acordo com o número de blocos vizinhos intraprevistos para o bloco de luminância (410). Se houver mais blocos interprevistos do que blocos intraprevistos, o decodificador de vídeo 300 pode determinar que o peso a ser aplicado ao bloco de interprevisão é maior do que o peso a ser aplicado ao bloco de intraprevisão. Por exemplo, o peso a ser aplicado ao bloco de interpretação pode ser 3 e o peso a ser aplicado ao bloco de intraprevisão pode ser 1. Se o número de blocos de intraprevisão for maior do que o número de blocos de interpretação, o decodificador de vídeo 300 pode determinar que o peso a ser aplicado ao bloco de intraprevisão é maior do que o peso a ser aplicado ao bloco de interprevisão. Por exemplo, o peso a ser aplicado ao bloco de interprevisão pode ser 3 e o peso a ser aplicado ao bloco de interprevisão pode ser 1. Se os números de blocos intra e interprevisão forem iguais, os pesos podem ser iguais, por exemplo, 2 para cada.
[0171] O decodificador de vídeo 300 pode, então, combinar o bloco de interprevisão e o bloco de intraprevisão usando os pesos para formar um bloco de previsão para o bloco de crominância atual (412). O decodificador de vídeo 300 pode, então, codificar o bloco de crominância atual usando o bloco de previsão (414).
[0172] Desta forma, o método da Figura 8 representa um exemplo de um método de codificação de dados de vídeo, o método compreendendo a formação de um bloco de interprevisão para um bloco de crominância atual de dados de vídeo; formar um bloco de intraprevisão para o bloco de crominância atual dos dados de vídeo; determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; aplicar o primeiro peso ao bloco de interprevisão e o segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e codificar o bloco de crominância atual usando o bloco de previsão.
[0173] Certas técnicas desta revelação são resumidas nos seguintes exemplos: Exemplo 1: Um método para codificar dados de vídeo, o método em que compreende: formar um bloco de interprevisão para um bloco atual de dados de vídeo; formar um bloco intraprevisão para o bloco atual de dados de vídeo; aplicar um primeiro peso ao bloco de interprevisão e um segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco atual; e codificar o bloco atual usando o bloco de previsão.
[0174] Exemplo 2: O método do exemplo 1, em que codificar o bloco atual compreende decodificar o bloco atual, compreendendo: decodificar um bloco residual para o bloco atual; e combinar amostras do bloco residual com amostras do bloco de previsão.
[0175] Exemplo 3: O método de qualquer um dos exemplos 1 e 2, em que codificar o bloco atual compreende codificar o bloco atual, compreendendo: subtrair amostras do bloco de previsão de amostras do bloco atual para formar um bloco residual; e codificar o bloco residual.
[0176] Exemplo 4: O método de qualquer um dos exemplos 1-3, que compreende adicionalmente determinar o primeiro peso e o segundo peso de acordo com uma série de blocos vizinhos intracodificados para o bloco atual.
[0177] Exemplo 5: O método do exemplo 4, em que os blocos vizinhos incluem um bloco vizinho superior.
[0178] Exemplo 6: O método de qualquer um dos exemplos 4 e 5, em que os blocos vizinhos incluem um bloco vizinho esquerdo.
[0179] Exemplo 7: O método de qualquer um dos exemplos 4 a 6, em que os blocos vizinhos incluem um bloco vizinho superior direito.
[0180] Exemplo 8: O método de qualquer um dos exemplos 4 a 7, em que os blocos vizinhos incluem um bloco vizinho inferior esquerdo.
[0181] Exemplo 9: O método de qualquer um dos exemplos 4-8, em que os blocos vizinhos incluem um bloco vizinho superior esquerdo.
[0182] Exemplo 10: O método de qualquer um dos exemplos 4-9, que compreende adicionalmente determinar os blocos vizinhos de acordo com uma altura do bloco atual e uma largura do bloco atual.
[0183] Exemplo 11: O método do exemplo 10, em que quando a altura e a largura são iguais, os blocos vizinhos incluem um bloco vizinho superior direito e um bloco vizinho inferior esquerdo.
[0184] Exemplo 12: O método do exemplo 11, em que os blocos vizinhos incluem adicionalmente um bloco vizinho superior e um bloco vizinho esquerdo.
[0185] Exemplo 13: O método do exemplo 12, em que os blocos vizinhos incluem adicionalmente um bloco vizinho superior esquerdo.
[0186] Exemplo 14: O método de qualquer um dos exemplos 10 a 13, em que quando a altura e a largura são diferentes, os blocos vizinhos incluem um bloco vizinho superior direito e um bloco vizinho inferior esquerdo.
[0187] Exemplo 15: O método do exemplo 10, em que quando a altura e a largura são iguais, os blocos vizinhos são simétricos ao longo das dimensões de largura e altura do bloco atual, e quando a altura e a largura não são iguais, os blocos vizinhos são assimétricos ao longo da largura e dimensões de altura do bloco atual.
[0188] Exemplo 16: O método do exemplo 15, em que quando a largura é maior do que a altura, os blocos vizinhos incluem um bloco vizinho superior direito e um bloco vizinho esquerdo, e quando a altura é maior que a largura, os blocos vizinhos incluem um bloco vizinho superior e um bloco vizinho inferior esquerdo.
[0189] Exemplo 17: O método de qualquer um dos exemplos 4 a 16, que compreende adicionalmente determinar que um dos blocos vizinhos que é uma cópia intrabloco codificada ou a imagem atual codificada com referência é um bloco intercodificado.
[0190] Exemplo 18: O método de qualquer um dos exemplos 4 a 16, que compreende adicionalmente determinar que um dos blocos vizinhos que é codificado por cópia intrabloco ou referenciação de imagem atual é um bloco codificado intra.
[0191] Exemplo 19: O método de qualquer um dos exemplos 4 a 18, que compreende adicionalmente determinar que um dos blocos vizinhos que é codificado inter-intra é um bloco codificado inter
[0192] Exemplo 20: O método de qualquer um dos exemplos 4 a 18, que compreende adicionalmente determinar que um dos blocos vizinhos que é codificado entre intra é um bloco codificado intra.
[0193] Exemplo 21: O método de qualquer um dos exemplos 4 a 20, em que a determinação do primeiro peso e do segundo peso compreende selecionar o segundo peso para ser maior do que o primeiro peso quando todos os blocos vizinhos são intracodificados.
[0194] Exemplo 22: O método de qualquer um dos exemplos 4 a 21, em que a determinação do primeiro peso e do segundo peso compreende selecionar o primeiro peso para ser maior do que o segundo peso quando pelo menos um dos blocos vizinhos não é intracodificado.
[0195] Exemplo 23: O método de qualquer um dos exemplos 4 a 22, em que determinar o primeiro peso e o segundo peso compreende selecionar o primeiro peso para igualar o segundo peso quando apenas um dos blocos vizinhos é intracodificado.
[0196] Exemplo 24: O método de qualquer um dos exemplos 4 a 23, em que determinar o primeiro peso e o segundo peso compreende selecionar o primeiro peso como 1 e o segundo peso como 3 quando um bloco vizinho superior esquerdo, um bloco vizinho superior direito e um bloco vizinho inferior esquerdo ao bloco atual são intracodificados.
[0197] Exemplo 25: O método de qualquer um dos exemplos 4 a 23, em que determinar o primeiro peso e o segundo peso compreende selecionar o primeiro peso como 3 e o segundo peso como 5 quando um bloco vizinho superior esquerdo, um bloco vizinho superior direito e um bloco vizinho inferior esquerdo ao bloco atual é intracodificado.
[0198] Exemplo 26: O método de qualquer um dos exemplos 4 a 25, em que determinar o primeiro peso e o segundo peso compreende selecionar o primeiro peso como 2 e o segundo peso como 2 quando pelo menos um de um bloco vizinho superior esquerdo, um superior direito bloco vizinho, ou um bloco vizinho inferior esquerdo para o bloco atual é intracodificado.
[0199] Exemplo 27: O método de qualquer um dos exemplos 4 a 25, em que determinar o primeiro peso e o segundo peso compreende selecionar o primeiro peso como 4 e o segundo peso como 4 quando pelo menos um de um bloco vizinho superior esquerdo, bloco vizinho, ou um bloco vizinho inferior esquerdo para o bloco atual é intracodificado.
[0200] Exemplo 28: O método de qualquer um dos exemplos 4 a 27, em que determinar o primeiro peso e o segundo peso compreende selecionar o primeiro peso como 3 e o segundo peso como 1 quando nenhum de um bloco vizinho superior esquerdo, um bloco vizinho superior direito , e um bloco vizinho inferior esquerdo ao bloco atual é intracodificado.
[0201] Exemplo 29: O método de qualquer um dos exemplos 4 a 27, em que determinar o primeiro peso e o segundo peso compreende selecionar o primeiro peso como 5 e o segundo peso como 3 quando nenhum de um bloco vizinho superior esquerdo, um bloco vizinho superior direito , e um bloco vizinho inferior esquerdo ao bloco atual é intracodificado.
[0202] Exemplo 30: O método de qualquer um dos exemplos 4 a 29, em que a determinação do primeiro peso e do segundo peso compreende copiar o primeiro peso e o segundo peso de um dos blocos vizinhos que é multi- hipóteses intracodificadas.
[0203] Exemplo 31: O método de qualquer um dos exemplos 4 a 30, em que a determinação do primeiro peso e do segundo peso compreende selecionar o segundo peso para ser maior do que a primeira taxa quando apenas um dos blocos vizinhos é intracodificado.
[0204] Exemplo 32: O método do exemplo 31, em que o segundo peso é 3 e o primeiro peso é 1.
[0205] Exemplo 33: O método do exemplo 31, em que o segundo peso é 5 e o primeiro peso é 3.
[0206] Exemplo 34: O método de qualquer um dos exemplos 4-30, em que determinar o primeiro peso e o segundo peso compreende selecionar o primeiro peso para ser maior do que a segunda taxa quando apenas um dos blocos vizinhos é intracodificado.
[0207] Exemplo 35: O método do exemplo 34, em que o primeiro peso é 3 e o segundo peso é 1.
[0208] Exemplo 36: O método do exemplo 34, em que o primeiro peso é 5 e o segundo peso é 3.
[0209] Exemplo 37: O método de qualquer um dos exemplos 4-30, em que a determinação do primeiro peso e do segundo peso compreende selecionar o segundo peso para ser maior do que a primeira taxa quando nenhum dos blocos vizinhos é intracodificado.
[0210] Exemplo 38: O método do exemplo 37, em que o segundo peso é 3 e o primeiro peso é 1.
[0211] Exemplo 39: O método do exemplo 37, em que o segundo peso é 5 e o primeiro peso é 3.
[0212] Exemplo 40: O método de qualquer um dos exemplos 4-30, em que determinar o primeiro peso e o segundo peso compreende selecionar o segundo peso para ser maior do que a primeira taxa quando pelo menos um dos blocos vizinhos é previsto usando modo intra DC ou modo plano.
[0213] Exemplo 41: O método do exemplo 40, em que o segundo peso é 3 e o primeiro peso é 1.
[0214] Exemplo 42: O método do exemplo 40, em que o segundo peso é 5 e o primeiro peso é 3.
[0215] Exemplo 43: O método de qualquer um dos exemplos 1 a 42, que compreende adicionalmente determinar o primeiro peso e o segundo peso de acordo com um bloco luma de um dos blocos vizinhos quando um dos blocos vizinhos tem uma árvore de codificação única luma-croma ou dupla luma- croma árvore de codificação ativada.
[0216] Exemplo 44: O método de qualquer um dos exemplos 1 a 43, que compreende adicionalmente determinar o primeiro peso e o segundo peso de acordo com um bloco de croma de um dos blocos vizinhos quando um dos blocos vizinhos tem árvore de codificação de luma-croma duplo ativada.
[0217] Exemplo 45: O método de qualquer um dos exemplos 1 a 44, que compreende adicionalmente determinar o primeiro peso e o segundo peso de acordo com uma série de interprevisão de um bloco indexado por mesclagem.
[0218] Exemplo 46: O método do exemplo 45, em que a determinação do primeiro peso e do segundo peso compreende definir o primeiro peso mais alto do que o segundo peso quando o bloco indexado por mesclagem é bi- previsão.
[0219] Exemplo 47: O método do exemplo 46, em que o primeiro peso é 3 e o segundo peso é 1.
[0220] Exemplo 48: O método do exemplo 46, em que o primeiro peso é 5 e o segundo peso é 3.
[0221] Exemplo 49: O método de qualquer um dos exemplos 46 a 48, em que a determinação do primeiro peso e do segundo peso compreende a determinação do primeiro peso e do segundo peso de acordo com um dos exemplos 4-42 quando o bloco indexado por mesclagem é uniprevisão.
[0222] Exemplo 50: O método do exemplo 45, em que a determinação do primeiro peso e do segundo peso compreende definir o primeiro peso mais alto do que o segundo peso quando o bloco indexado por mesclagem é uni- previsão.
[0223] Exemplo 51: O método do exemplo 50, em que o primeiro peso é 3 e o segundo peso é 1.
[0224] Exemplo 52: O método do exemplo 50, em que o primeiro peso é 5 e o segundo peso é 3.
[0225] Exemplo 53: O método de qualquer um dos exemplos 1-52, que compreende adicionalmente determinar o primeiro peso e o segundo peso de acordo com um tamanho do bloco atual.
[0226] Exemplo 54: O método do exemplo 53, em que o tamanho do bloco atual compreende um mínimo de uma largura do bloco atual e uma altura do bloco atual.
[0227] Exemplo 55: O método do exemplo 53, em que o tamanho do bloco atual compreende um máximo de uma largura do bloco atual e uma altura do bloco atual.
[0228] Exemplo 56: O método do exemplo 53, em que o tamanho do bloco atual compreende um produto de uma largura do bloco atual por uma altura do bloco atual.
[0229] Exemplo 57: O método do exemplo 53, em que o tamanho do bloco atual compreende a soma de uma largura do bloco atual com a altura do bloco atual.
[0230] Exemplo 58: O método de qualquer um dos exemplos 53-57, em que a determinação do primeiro peso e do segundo peso compreende definir o primeiro peso mais alto do que o segundo peso quando o tamanho do bloco é mais alto do que um limite predefinido.
[0231] Exemplo 59: O método do exemplo 58, em que o primeiro peso é 3 e o segundo peso é 1.
[0232] Exemplo 60: O método do exemplo 58, em que o primeiro peso é 5 e o segundo peso é 3.
[0233] Exemplo 61: O método de qualquer um dos exemplos 53-57, em que a determinação do primeiro peso e do segundo peso compreende definir o segundo peso mais alto do que o primeiro peso quando o tamanho do bloco é mais alto do que um limite predefinido.
[0234] Exemplo 62: O método do exemplo 61, em que o segundo peso é 3 e o primeiro peso é 1.
[0235] Exemplo 63: O método do exemplo 61, em que o segundo peso é 5 e o primeiro peso é 3.
[0236] Exemplo 64: O método de qualquer um dos exemplos 53-57, em que a determinação do primeiro peso e do segundo peso compreende definir o primeiro peso mais alto do que o segundo peso quando o tamanho do bloco for menor do que um limite predefinido.
[0237] Exemplo 65: O método do exemplo 64, em que o primeiro peso é 3 e o segundo peso é 1.
[0238] Exemplo 66: O método do exemplo 64, em que o primeiro peso é 5 e o segundo peso é 3.
[0239] Exemplo 67: O método de qualquer um dos exemplos 53-57, em que a determinação do primeiro peso e do segundo peso compreende definir o segundo peso mais alto do que o primeiro peso quando o tamanho do bloco é menor do que um limite predefinido.
[0240] Exemplo 68: O método do exemplo 67, em que o segundo peso é 3 e o primeiro peso é 1.
[0241] Exemplo 69: O método do exemplo 67, em que o segundo peso é 5 e o primeiro peso é 3.
[0242] Exemplo 70: O método de qualquer um dos exemplos 1-69, que compreende adicionalmente a codificação de dados de um fluxo de bits que representa o primeiro peso e o segundo peso.
[0243] Exemplo 71: O método do exemplo 70, em que os dados do fluxo de bits compreendem pelo menos um de um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, um conjunto de parâmetros de adaptação, um conjunto de parâmetros de vídeo, um cabeçalho de imagem, um cabeçalho de fatia, um cabeçalho de quadriculado ou um cabeçalho de bloco.
[0244] Exemplo 72: Um dispositivo para codificar dados de vídeo, sendo que o dispositivo compreende um ou mais meios para realizar o método de quaisquer dos exemplos 1 a 71.
[0245] Exemplo 73: O dispositivo do exemplo 72, em que um ou mais meios compreendem um ou mais processadores implantados em circuitos.
[0246] Exemplo 74: O dispositivo do exemplo 72, que compreende adicionalmente um visor configurado para exibir dados de vídeo decodificados.
[0247] Exemplo 75: O dispositivo do exemplo 72, em que o dispositivo compreende uma ou mais dentre uma câmera, um computador, um dispositivo móvel, um dispositivo receptor de difusão ou um decodificador de sinais.
[0248] Exemplo 76: O dispositivo do exemplo 72, que compreende adicionalmente uma memória configurada para armazenar dados de vídeo.
[0249] Exemplo 77: Um dispositivo para codificar dados de vídeo, o dispositivo compreendendo: meios para formar um bloco de interprevisão para um bloco atual de dados de vídeo; meios para formar um bloco intraprevisão para o bloco atual de dados de vídeo; meios para aplicar um primeiro peso ao bloco de interprevisão e um segundo peso ao bloco de intraprevisão; meios para combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco atual; e meios para codificar o bloco atual usando o bloco de previsão.
[0250] Exemplo 78: Uma mídia de armazenamento legível por computador que tem armazenadas na mesma instruções, que, quando executadas, fazem com que um processador execute o método de qualquer um dos exemplos 1 a 71.
[0251] Deve ser reconhecido que, dependendo do exemplo, determinadas ações ou eventos de quaisquer uma das técnicas descritas no presente documento pode ser realizada em uma sequência diferente, podem ser adicionados, mesclados ou deixados totalmente de fora (por exemplo, nem todos as ações e eventos descritos são necessários para a prática das técnicas). Ademais, em determinados exemplos, atos ou eventos podem ser realizados de modo concomitante, por exemplo, através de processamento de múltiplos encadeamentos, processamento interrupto ou em múltiplos processadores, em vez de sequencialmente.
[0252] Em um ou mais exemplos, as funções descritas podem ser implantadas em hardware, software, firmware ou qualquer combinação dos mesmos. Caso implantadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em uma mídia legível por computador e executadas por uma unidade de processamento com base em hardware. As mídias legíveis por computador podem incluir mídias de armazenamento legíveis por computador, que correspondem a uma mídia tangível como mídias de armazenamento de dados ou mídias de comunicação que incluem qualquer mídia que facilite a transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta forma, as mídias legíveis por computador podem, em geral, corresponder a (1) mídias de armazenamento legíveis por computador tangíveis que são não transitórias ou (2) uma mídia de comunicação 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 dados e/ou código para a implantação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir uma mídia legível por computador.
[0253] A título exemplificativo, e não de limitação, tais mídias de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outra mídia que possa ser usada para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessada por um computador. Além disso, qualquer conexão é denominada adequadamente como mídia legível por computador. Por exemplo, se as 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 inscrição 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 mídia. Deve ser compreendido, entretanto, que as mídias de armazenamento legíveis por computador e as mídias de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outras mídias transitórias, mas são, em vez disso, direcionadas para mídias de armazenamento não transitórias e tangíveis. Disco magnético e disco óptico, conforme usado no presente documento, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, em que os discos magnéticos reproduzem geralmente os dados de modo magnético, enquanto os discos ópticos reproduzem os dados de modo óptico com lasers. As combinações do supracitado também devem ser abrangidas pelo escopo das mídias legíveis por computador.
[0254] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores para propósitos gerais, circuitos integrados específicos para aplicativo (ASICs), matrizes de porta programável em campo (FPGAs) ou outro conjunto de circuitos lógicos equivalentes integrados ou distintos. Consequentemente, os termos "processador” e “conjunto de circuitos de processamento”, conforme usado no presente documento pode se referir a qualquer uma das estruturas supracitadas ou qualquer outra estrutura adequada para a implantação das técnicas descritas no presente documento. Adicionalmente, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos dedicados de hardware e/ou software configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implantadas em um ou mais circuitos ou elementos lógicos.
[0255] As técnicas desta revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente a realização por diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em combinação com software e/ou firmware adequados.
[0256] Vários exemplos foram descritos. Esses e outros exemplos estão no escopo das reivindicações a seguir.

Claims (44)

REIVINDICAÇÕES
1. Método para codificar dados de vídeo, sendo que o método compreende: formar um bloco de interprevisão para um bloco de crominância atual de dados de vídeo; formar um bloco de intraprevisão para o bloco de crominância atual dos dados de vídeo; determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; aplicar o primeiro peso ao bloco de interprevisão e o segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e codificar o bloco de crominância atual usando o bloco de previsão.
2. Método, de acordo com a reivindicação 1, em que determinar o número de blocos vizinhos que são codificados com intraprevisão compreende determinar que o número de blocos vizinhos que são codificados com intraprevisão exclui blocos vizinhos que são previstos usando cópia intrabloco ou previsão intra-inter combinada.
3. Método, de acordo com a reivindicação 1, em que determinar o número de blocos vizinhos que são codificados com intraprevisão compreende determinar que o número de blocos vizinhos que são codificados com intraprevisão exclui blocos vizinhos que são previstos usando a inter-intraprevisão combinada.
4. Método, de acordo com a reivindicação 1, em que determinar o primeiro peso e o segundo peso compreende adicionalmente determinar o primeiro peso e o segundo peso de acordo com um bloco de luminância de um dos blocos vizinhos quando um dos blocos vizinhos tem uma única árvore de codificação de luma-croma ou árvore de codificação luma- croma dupla habilitada.
5. Método, de acordo com a reivindicação 1, em que os blocos vizinhos incluem um bloco vizinho acima e um bloco vizinho à esquerda.
6. Método, de acordo com a reivindicação 1, em que determinar o primeiro peso e o segundo peso compreende determinar o primeiro peso e o segundo peso de acordo com se um bloco indexado por mesclagem é previsto usando previsão unidirecional ou previsão bidirecional.
7. Método, de acordo com a reivindicação 1, em que determinar o primeiro peso e o segundo peso compreende determinar o primeiro peso e o segundo peso de acordo com um tamanho do bloco de crominância atual.
8. Método, de acordo com a reivindicação 1, que compreende adicionalmente codificar dados de um fluxo de bits que representam o primeiro peso e o segundo peso.
9. Método, de acordo com a reivindicação 8, em que os dados do fluxo de bits compreendem pelo menos um dentre um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, um conjunto de parâmetros de adaptação, um conjunto de parâmetros de vídeo, um cabeçalho de imagem, um cabeçalho de fatia, um cabeçalho de quadriculado ou um cabeçalho de bloco.
10. Método, de acordo com a reivindicação 1, em que codificar o bloco de crominância atual compreende decodificar o bloco de crominância atual, que compreende: decodificar um bloco residual para o bloco de crominância atual; e combinar amostras do bloco residual com amostras do bloco de previsão.
11. Método, de acordo com a reivindicação 1, em que codificar o bloco de crominância atual compreende codificar o bloco de crominância atual, que compreende: subtrair amostras do bloco de previsão das amostras do bloco de crominância atual para formar um bloco residual; e codificar o bloco residual.
12. Dispositivo para codificar dados de vídeo, sendo que o dispositivo compreende: uma memória para armazenar dados de vídeo; e um ou mais processadores implantados no conjunto de circuitos e configurados para: formar um bloco de interprevisão para um bloco de crominância atual dos dados de vídeo; formar um bloco de intraprevisão para o bloco de crominância atual dos dados de vídeo; determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; aplicar o primeiro peso ao bloco de interprevisão e o segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e codificar o bloco de crominância atual usando o bloco de previsão.
13. Dispositivo, de acordo com a reivindicação 12, em que o um ou mais processadores são configurados para determinar que o número de blocos vizinhos que são codificados com intraprevisão exclui blocos vizinhos que são previstos usando cópia intrabloco ou previsão intra- inter combinada.
14. Dispositivo, de acordo com a reivindicação 12, em que o um ou mais processadores são configurados para determinar que o número de blocos vizinhos que são codificados com intraprevisão exclui blocos vizinhos que são previstos usando inter-intraprevisão combinada.
15. Dispositivo, de acordo com a reivindicação 12, em que o um ou mais processadores são configurados para determinar o primeiro peso e o segundo peso de acordo com um bloco de luminância de um dos blocos vizinhos quando um dos blocos vizinhos tem árvore de codificação de luma-croma única ou árvore de codificação de luma-croma dupla habilitada.
16. Dispositivo, de acordo com a reivindicação 12, em que os blocos vizinhos incluem um bloco vizinho acima e um bloco vizinho à esquerda.
17. Dispositivo, de acordo com a reivindicação 12, em que o um ou mais processadores são configurados para determinar o primeiro peso e o segundo peso de acordo com se um bloco indexado por mesclagem é previsto usando previsão unidirecional ou previsão bidirecional.
18. Dispositivo, de acordo com a reivindicação 12, em que o um ou mais processadores são configurados para determinar o primeiro peso e o segundo peso de acordo com um tamanho do bloco de crominância atual.
19. Dispositivo, de acordo com a reivindicação 12, em que o um ou mais processadores são configurados adicionados para codificar dados de um fluxo de bits que representa o primeiro peso e o segundo peso.
20. Dispositivo, de acordo com a reivindicação 19, em que os dados do fluxo de bits compreendem pelo menos um dentre um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, um conjunto de parâmetros de adaptação, um conjunto de parâmetros de vídeo, um cabeçalho de imagem, um cabeçalho de fatia, um cabeçalho de quadriculado ou um cabeçalho de bloco.
21. Dispositivo, de acordo com a reivindicação 12, em que o um ou mais processadores são configurados para decodificar o bloco de crominância atual, e para decodificar o bloco de crominância atual, o um ou mais processadores são configurados para: decodificar um bloco residual para o bloco de crominância atual; e combinar amostras do bloco residual com amostras do bloco de previsão.
22. Dispositivo, de acordo com a reivindicação 12, em que o um ou mais processadores são configurados para codificar o bloco de crominância atual e para codificar o bloco de crominância atual, o um ou mais processadores são configurados para: subtrair amostras do bloco de previsão das amostras do bloco de crominância atual para formar um bloco residual; e codificar o bloco residual.
23. Mídia de armazenamento legível por computador que tem armazenada na mesma instruções que, quando executadas, levam um processador a: formar um bloco de interprevisão para um bloco de crominância atual de dados de vídeo; formar um bloco de intraprevisão para o bloco de crominância atual dos dados de vídeo; determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; aplicar o primeiro peso ao bloco de interprevisão e o segundo peso ao bloco de intraprevisão; combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e codificar o bloco de crominância atual usando o bloco de previsão.
24. Mídia de armazenamento legível por computador, de acordo com a reivindicação 23, em que as instruções que fazem com que o processador determine o número de blocos vizinhos que são codificados com intraprevisão compreendem instruções que fazem com que o processador determine que o número de blocos vizinhos que são codificados com intraprevisão exclui blocos vizinhos que são previstos usando cópia intrabloco ou previsão intra-inter combinada.
25. Mídia de armazenamento legível por computador, de acordo com a reivindicação 23, em que as instruções que fazem com que o processador determine o número de blocos vizinhos que são codificados com intraprevisão compreendem instruções que fazem com que o processador determine que o número de blocos vizinhos que são intraprevistos exclui blocos vizinhos que são previstos usando a inter-intraprevisão combinada.
26. Mídia de armazenamento legível por computador, de acordo com a reivindicação 23, em que as instruções que fazem com que o processador determine o primeiro peso e o segundo peso compreendem adicionalmente instruções que fazem com que o processador determine o primeiro peso e o segundo peso de acordo com um bloco de luminância de um dos blocos vizinhos quando um dos blocos vizinhos tem uma árvore de codificação luma-croma única ou árvore de codificação luma-croma dupla ativada.
27. Mídia de armazenamento legível por computador, de acordo com a reivindicação 23, em que os blocos vizinhos incluem um bloco vizinho acima e um bloco vizinho à esquerda.
28. Mídia de armazenamento legível por computador, de acordo com a reivindicação 23, em que as instruções que fazem com que o processador determine o primeiro peso e o segundo peso compreendem instruções que fazem com que o processador determine o primeiro peso e o segundo peso de acordo com se um bloco indexado por mesclagem é previsto usando previsão unidirecional ou previsão bidirecional.
29. Mídia de armazenamento legível por computador, de acordo com a reivindicação 23, em que as instruções que fazem com que o processador determine o primeiro peso e o segundo peso compreendem instruções que fazem com que o processador determine o primeiro peso e o segundo peso de acordo com um tamanho do bloco de crominância atual.
30. Mídia de armazenamento legível por computador, de acordo com a reivindicação 23, em que compreende adicionalmente instruções que fazem com que o processador codifique dados de um fluxo de bits que representa o primeiro peso e o segundo peso.
31. Mídia de armazenamento legível por computador, de acordo com a reivindicação 30, em que os dados do fluxo de bits compreendem pelo menos um dentre um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, um conjunto de parâmetros de adaptação, um conjunto de parâmetros de vídeo, um cabeçalho de imagem, um cabeçalho de fatia, um cabeçalho de quadriculado ou um cabeçalho de bloco.
32. Mídia de armazenamento legível por computador, de acordo com a reivindicação 23, em que as instruções que fazem com que o processador codifique o bloco de crominância atual compreendem instruções que fazem com que o processador decodifique o bloco de crominância atual, compreendendo instruções que levam o processador a: decodificar um bloco residual para o bloco de crominância atual; e combinar amostras do bloco residual com amostras do bloco de previsão.
33. Mídia de armazenamento legível por computador, de acordo com a reivindicação 23, em que as instruções que fazem com que o processador codifique o bloco de crominância atual compreendem instruções que fazem com que o processador codifique o bloco de crominância atual, compreendendo instruções que levam o processador a: subtrair amostras do bloco de previsão das amostras do bloco de crominância atual para formar um bloco residual; e codificar o bloco residual.
34. Dispositivo para codificar dados de vídeo, sendo que o dispositivo compreende: meios para formar um bloco de interprevisão para um bloco de crominância atual de dados de vídeo; meios para formar um bloco de intraprevisão para o bloco de crominância atual dos dados de vídeo; meios para determinar um número de blocos vizinhos a um bloco de luminância correspondente ao bloco de crominância atual que são codificados com intraprevisão; meios para determinar um primeiro peso e um segundo peso de acordo com o número de blocos vizinhos que são codificados com intraprevisão; meios para aplicar o primeiro peso ao bloco de interprevisão e o segundo peso ao bloco de intraprevisão; meios para combinar o primeiro bloco de interprevisão ponderado e o segundo bloco de intraprevisão ponderado para formar um bloco de previsão para o bloco de crominância atual; e meios para codificar o bloco de crominância atual usando o bloco de previsão.
35. Dispositivo, de acordo com a reivindicação 34, em que os meios para determinar o número de blocos vizinhos que são codificados com intraprevisão compreendem meios para determinar que o número de blocos vizinhos que são codificados com intraprevisão exclui blocos vizinhos que são previstos usando cópia intrabloco ou previsão intra-inter combinada.
36. Dispositivo, de acordo com a reivindicação 34, em que os meios para determinar o número de blocos vizinhos que são codificados com intraprevisão compreendem meios para determinar que o número de blocos vizinhos que são codificados com intraprevisão exclui blocos vizinhos que são previstos usando a inter-intraprevisão combinada.
37. Dispositivo, de acordo com a reivindicação 34, em que os meios para determinar o primeiro peso e o segundo peso compreendem adicionalmente meios para determinar o primeiro peso e o segundo peso de acordo com um bloco de luminância de um dos blocos vizinhos quando um dos blocos vizinhos tem uma árvore de codificação de luma- croma única ou árvore de codificação de luma-croma dupla ativada.
38. Dispositivo, de acordo com a reivindicação 34, em que os blocos vizinhos incluem um bloco vizinho acima e um bloco vizinho à esquerda.
39. Dispositivo, de acordo com a reivindicação
34, em que os meios para determinar o primeiro peso e o segundo peso compreendem meios para determinar o primeiro peso e o segundo peso de acordo com se um bloco indexado por mesclagem é previsto usando previsão unidirecional ou previsão bidirecional.
40. Dispositivo, de acordo com a reivindicação 34, em que os meios para determinar o primeiro peso e o segundo peso compreendem meios para determinar o primeiro peso e o segundo peso de acordo com um tamanho do bloco de crominância atual.
41. Dispositivo, de acordo com a reivindicação 34, que compreende adicionalmente os meios para codificar dados de um fluxo de bits que representam o primeiro peso e o segundo peso.
42. Dispositivo, de acordo com a reivindicação 41, em que os dados do fluxo de bits compreendem pelo menos um dentre um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, um conjunto de parâmetros de adaptação, um conjunto de parâmetros de vídeo, um cabeçalho de imagem, um cabeçalho de fatia, um cabeçalho de quadriculado ou um cabeçalho de bloco.
43. Dispositivo, de acordo com a reivindicação 34, em que os meios para codificar o bloco de crominância atual compreendem meios para decodificar o bloco de crominância atual, compreendendo: meios para decodificar um bloco residual para o bloco de crominância atual; e meios para combinar amostras do bloco residual com amostras do bloco de previsão.
44. Dispositivo, de acordo com a reivindicação
34, em que os meios para codificar o bloco de crominância atual compreendem meios para codificar o bloco de crominância atual, compreendendo: meios para subtrair amostras do bloco de previsão de amostras do bloco de crominância atual para formar um bloco residual; e meios para codificar o bloco residual.
BR112021014879-5A 2019-02-07 2020-02-05 Modo de inter-intraprevisão para dados de vídeo BR112021014879A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962802515P 2019-02-07 2019-02-07
US62/802,515 2019-02-07
US16/781,751 2020-02-04
US16/781,751 US11290726B2 (en) 2019-02-07 2020-02-04 Inter-intra prediction mode for video data
PCT/US2020/016877 WO2020163526A1 (en) 2019-02-07 2020-02-05 Inter-intra prediction mode for video data

Publications (1)

Publication Number Publication Date
BR112021014879A2 true BR112021014879A2 (pt) 2021-10-05

Family

ID=71945462

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021014879-5A BR112021014879A2 (pt) 2019-02-07 2020-02-05 Modo de inter-intraprevisão para dados de vídeo

Country Status (16)

Country Link
US (1) US11290726B2 (pt)
EP (1) EP3922016A1 (pt)
JP (1) JP2022519661A (pt)
KR (1) KR20210119415A (pt)
CN (1) CN113632466A (pt)
AU (1) AU2020218769A1 (pt)
BR (1) BR112021014879A2 (pt)
CA (1) CA3127687A1 (pt)
CL (1) CL2021002068A1 (pt)
CO (1) CO2021010285A2 (pt)
IL (1) IL284873A (pt)
MX (1) MX2021009449A (pt)
SA (1) SA521422668B1 (pt)
SG (1) SG11202107745VA (pt)
TW (1) TW202041003A (pt)
WO (1) WO2020163526A1 (pt)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210057187A (ko) 2018-10-12 2021-05-20 주식회사 윌러스표준기술연구소 다중 가정 예측을 사용하는 비디오 신호 처리 방법 및 장치
US11652984B2 (en) * 2018-11-16 2023-05-16 Qualcomm Incorporated Position-dependent intra-inter prediction combination in video coding
US20200162737A1 (en) 2018-11-16 2020-05-21 Qualcomm Incorporated Position-dependent intra-inter prediction combination in video coding
WO2020116402A1 (ja) * 2018-12-04 2020-06-11 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
CA3131031C (en) 2019-03-21 2024-06-11 Beijing Bytedance Network Technology Co., Ltd. Improved weighting processing of combined intra-inter prediction
WO2021015586A1 (ko) 2019-07-25 2021-01-28 주식회사 윌러스표준기술연구소 비디오 신호 처리 방법 및 장치
JP2021100225A (ja) * 2019-12-24 2021-07-01 マクセル株式会社 画像符号化方法および画像復号方法
US20230069984A1 (en) * 2021-08-24 2023-03-09 Tencent America LLC Hardware friendly design for intra mode coding

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9906786B2 (en) 2012-09-07 2018-02-27 Qualcomm Incorporated Weighted prediction mode for scalable video coding
US9374578B1 (en) 2013-05-23 2016-06-21 Google Inc. Video coding using combined inter and intra predictors
WO2016196843A1 (en) 2015-06-03 2016-12-08 Apple Inc. Techniques for resource conservation during performance of intra block copy prediction searches
KR20180041211A (ko) 2015-09-10 2018-04-23 엘지전자 주식회사 인터-인트라 병합 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
US11032550B2 (en) 2016-02-25 2021-06-08 Mediatek Inc. Method and apparatus of video coding
TWI683573B (zh) * 2017-03-10 2020-01-21 聯發科技股份有限公司 用於視訊編解碼中具有畫面內方向預測模式之內含畫面內編解碼工具設定的方法和裝置
US10757420B2 (en) 2017-06-23 2020-08-25 Qualcomm Incorporated Combination of inter-prediction and intra-prediction in video coding
CN107995489A (zh) 2017-12-20 2018-05-04 北京大学深圳研究生院 一种用于p帧或b帧的帧内帧间组合预测方法
EP3744092A1 (en) 2018-01-26 2020-12-02 InterDigital VC Holdings, Inc. Method and apparatus for video encoding and decoding based on a linear model responsive to neighboring samples
US11652984B2 (en) 2018-11-16 2023-05-16 Qualcomm Incorporated Position-dependent intra-inter prediction combination in video coding

Also Published As

Publication number Publication date
US11290726B2 (en) 2022-03-29
JP2022519661A (ja) 2022-03-24
SA521422668B1 (ar) 2024-02-22
SG11202107745VA (en) 2021-08-30
IL284873A (en) 2021-08-31
WO2020163526A1 (en) 2020-08-13
AU2020218769A1 (en) 2021-08-12
US20200260091A1 (en) 2020-08-13
MX2021009449A (es) 2021-09-10
TW202041003A (zh) 2020-11-01
EP3922016A1 (en) 2021-12-15
CL2021002068A1 (es) 2022-04-01
KR20210119415A (ko) 2021-10-05
CO2021010285A2 (es) 2021-08-19
CN113632466A (zh) 2021-11-09
CA3127687A1 (en) 2020-08-13

Similar Documents

Publication Publication Date Title
BR112021014879A2 (pt) Modo de inter-intraprevisão para dados de vídeo
BR112021000002A2 (pt) Mvps não adjacentes baseados em múltiplos históricos para processamento de frente de onda de código de vídeo
BR112021002967A2 (pt) predição de movimento afim
WO2018132710A1 (en) Coding video data using derived chroma mode
BR112021009721A2 (pt) informação de movimento triangular para codificação de vídeo
US10958932B2 (en) Inter-prediction coding of video data using generated motion vector predictor list including non-adjacent blocks
BR112021006798A2 (pt) suavização e interpolação de intrapredição de ângulo amplo
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
BR112020026713A2 (pt) Modo de combinação dependente de suavização intra (mdis) com comutação de filtro de interpolação intra
CN114731415A (zh) 针对多类型树块结构的合并估计区域
US11418793B2 (en) Adaptive affine motion vector coding
BR112021000640A2 (pt) Arredondamento de vetores de movimento para resolução de diferença de vetor de movimento adaptativa e precisão de armazenamento de vetor de movimento aumentada em codificação de vídeo
BR112021009732A2 (pt) padrões de predição de vetor de movimento espaço-temporal para codificação de vídeo
KR20220106115A (ko) 비디오 코딩을 위한 각도 인트라-예측 모드들에 대한 위치 의존적 인트라-예측 조합
KR20210119997A (ko) 비디오 코딩을 위한 제약된 애파인 모션 상속
WO2020190468A1 (en) Video coding in triangular prediction unit mode using different chroma formats
BR112020025982A2 (pt) sinalização de preditor de vetor de movimento de unidade de subpredição
WO2020072935A1 (en) Simplification of spatial-temporal motion vector prediction
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
US20220201322A1 (en) Multiple hypothesis prediction for video coding
WO2019160795A1 (en) Intra prediction for 360-degree video
BR112021005354A2 (pt) restrições afins para redução da largura de banda de pior caso na codificação de vídeo
BR112021010946A2 (pt) Partição de unidade de transformada (tu) com base em árvore para codificação de vídeo
WO2020072928A1 (en) Intra block copy prediction restrictions in video coding
TW202228441A (zh) 用於視頻譯碼的多重假設預測