BR112021014603A2 - Geração de lista de preditores de vetor de movimento para modo de cópia de intrabloco em codificação de vídeo - Google Patents
Geração de lista de preditores de vetor de movimento para modo de cópia de intrabloco em codificação de vídeo Download PDFInfo
- Publication number
- BR112021014603A2 BR112021014603A2 BR112021014603-2A BR112021014603A BR112021014603A2 BR 112021014603 A2 BR112021014603 A2 BR 112021014603A2 BR 112021014603 A BR112021014603 A BR 112021014603A BR 112021014603 A2 BR112021014603 A2 BR 112021014603A2
- Authority
- BR
- Brazil
- Prior art keywords
- block
- candidates
- list
- candidate
- video
- Prior art date
Links
- 230000033001 locomotion Effects 0.000 title claims abstract description 216
- 239000013598 vector Substances 0.000 title claims abstract description 171
- 238000000034 method Methods 0.000 claims abstract description 146
- 230000015654 memory Effects 0.000 claims description 54
- 238000003860 storage Methods 0.000 claims description 26
- 238000012545 processing Methods 0.000 description 36
- 238000013139 quantization Methods 0.000 description 30
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 26
- 238000000638 solvent extraction Methods 0.000 description 26
- 241000023320 Luma <angiosperm> Species 0.000 description 18
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 18
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 230000002123 temporal effect Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000005192 partition Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 230000011664 signaling Effects 0.000 description 6
- 230000009466 transformation Effects 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 5
- 230000002457 bidirectional effect Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000002156 mixing Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000001052 transient effect Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(e)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/109—Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
geração de lista de preditores de vetor de movimento para modo de cópia de intrabloco em codificação de vídeo. trata-se, em um exemplo de um método de codificação de dados de vídeo que inclui ser responsivo à determinação para predizer um bloco atual de uma imagem atual de dados de vídeo com o uso de cópia de intrabloco (ibc), gerar uma lista de candidatos de vetor de movimento (mv) para o bloco atual, em que a geração da lista de candidatos de mv compreende: determinar um ou mais candidatos de predição de vetor de movimento com base em histórico (hmvp); e incluir, como um último candidato na lista de candidatos de mv, um candidato de hmvp dentre os um ou mais candidatos de hmvp; selecionar, a partir da lista de candidatos de mv, um candidato de mv particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
Description
[0001] Este pedido reivindica prioridade para o Pedido n° US 16/782.735, depositado em 5 de fevereiro de 2020 que reivindica prioridade para o Pedido Provisório n ° US 62/802.573, depositado em 7 de fevereiro de 2019, cujos todos os conteúdos são incorporados a título de referência no presente documento.
[0002] Esta revelação se refere à codificação de vídeo e à decodificação de vídeo.
[0003] Capacidades de Digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores do tipo laptop ou desktop, computadores dor tipo tablet, leitores do tipo e-book, câmeras digitais, dispositivos de gravação digital, reprodutores de meios digitais, dispositivos de jogo de vídeo, consoles de jogo de vídeo, telefones celulares ou de rádio por satélite, denominados “telefones inteligentes”, dispositivos de teleconferência de vídeo, dispositivos de transmissão contínua de vídeo e similares. Dispositivos de vídeo digital implementam técnicas de codificação de vídeo, como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), um padrão de Codificação de Vídeo de Alta Eficiência (HEVC), ITU-T H.265/Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar mais eficientemente informações de vídeo digital ao implementar tais técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou remover a redundância inerente em sequências de vídeo. Para 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 particionada em blocos de vídeo, que também podem ser referidos como unidades de árvore de codificação (CTUs), unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados com o uso de predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem pode usar predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadro, e as imagens de referência podem ser referidas como quadros de referência.
[0005] Em um exemplo, um método de codificação de dados de vídeo inclui ser responsivo à determinação para predizer um bloco atual de uma imagem atual de dados de vídeo com o uso de cópia de intrabloco (IBC), gerar um lista de candidatos de vetor de movimento (MV) para o bloco atual, em que a geração da lista de candidatos de MV compreende: determinar um ou mais candidatos de predição de vetor de movimento com base em histórico (HMVP); e incluir, como um último candidato na lista de candidatos de MV, um candidato de HMVP dos um ou mais candidatos de HMVP; selecionar, a partir da lista de candidatos de MV, um MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[0006] Em outro exemplo, um dispositivo para codificar dados de vídeo inclui uma memória configurada para armazenar os dados de vídeo; e um ou mais processadores que são implementados em conjunto de circuitos e configurados para: gerar, responsivo à determinação para predizer um bloco atual de uma imagem atual de dados de vídeo com o uso de IBC, uma lista de candidatos de MV para o bloco atual, em que, para gerar a lista de candidatos de MV, os um ou mais processadores são configurados para: determinar um ou mais candidatos de HMVP; e incluir, como um último candidato na lista de candidatos de MV, um candidato de HMVP dentre os um ou mais candidatos de HMVP; selecionar, a partir da lista de candidatos de MV, um MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[0007] Em outro exemplo, um meio de armazenamento legível por computador armazena instruções que, quando executadas, fazem com que um ou mais processadores de um codificador de vídeo gerem, responsivo à determinação para predizer um bloco atual de uma imagem atual de dados de vídeo com o uso de IBC, uma lista de candidatos de MV para o bloco atual, em que as instruções que fazem com que os um ou mais processadores gerem a lista de candidatos de MV compreendem instruções que fazem com que os um ou mais processadores: determinem um ou mais candidatos de HMVP; e incluam, como um último candidato na lista de candidatos de MV, um candidato de HMVP dentre os um ou mais candidatos de HMVP; selecionem, a partir da lista de candidatos de MV, um MV particular que identifica um bloco de preditor na imagem atual; e reconstruam pixels do bloco atual com base em pixels do bloco de preditor.
[0008] Os detalhes de um ou mais aspectos da revelação são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens das técnicas descritas nesta revelação estarão evidentes a partir da descrição e dos desenhos e a partir das reivindicações.
[0009] As Figuras 1A e 1B são diagramas conceituais que ilustram candidatos vizinhos espaciais em HEVC.
[0010] As Figuras 2A e 2B são diagramas conceituais que ilustram candidatos de preditor de vetor de movimento temporal (TMVP) e escalonamento de vetor de movimento (MV) exemplificativos.
[0011] A Figura 3 é um diagrama de blocos que ilustra uma codificação de vídeo e sistema de decodificação exemplificativos que podem realizar as técnicas desta revelação.
[0012] As Figuras 4A e 4B são diagramas conceituais que ilustram uma estrutura de árvore binária de árvore quaternária (QTBT) e uma unidade de árvore de codificação (CTU) correspondente exemplificativas.
[0013] A Figura 5 é um diagrama de blocos que ilustra um codificador de vídeo exemplificativo que pode realizar as técnicas desta revelação.
[0014] A Figura 6 é um diagrama de blocos que ilustra um decodificador de vídeo exemplificativo que pode realizar as técnicas desta revelação.
[0015] A Figura 7 é um fluxograma que ilustra um método exemplificativo para codificar um bloco atual.
[0016] A Figura 8 é um fluxograma que ilustra um método exemplificativo para decodificar um bloco atual de dados de vídeo.
[0017] A Figura 9 é um fluxograma que ilustra um método exemplificativo para gerar uma lista de candidatos de preditor de vetor de movimento de acordo com uma ou mais técnicas desta revelação.
[0018] Em geral, esta revelação descreve técnicas para predizer blocos de dados de vídeo com o uso de cópia de intrabloco (IBC). Para predizer um bloco atual de dados de vídeo em uma imagem atual de dados de vídeo com o uso de IBC, um codificador de vídeo pode adicionar dados residuais a um bloco de preditor na imagem atual. O codificador de vídeo pode identificar o bloco de preditor com o uso de um vetor de movimento, que pode ser referido como um vetor de bloco, que representa um deslocamento entre o bloco atual e o bloco de preditor. Para possibilitar que um decodificador de vídeo obtenha o vetor de movimento, tanto o codificador de vídeo quanto o decodificador de vídeo podem construir uma lista de candidatos de vetor de movimento e o codificador de vídeo pode codificar um ou mais elementos de sintaxe que indicam qual candidato da lista de vetores de movimento deve ser usado como um preditor de vetor de movimento para construir o vetor de movimento para o bloco atual. Em alguns exemplos, o codificador de vídeo pode codificar adicionalmente um ou mais elementos de sintaxe que representam uma diferença entre o preditor de vetor de movimento e o vetor de movimento para o bloco atual (por exemplo, elementos de sintaxe que representam um vetor de movimento diferença (MVD)).
[0019] O codificador de vídeo pode obter candidatos para a lista de candidatos de vetor de movimento a partir de uma variedade de fontes. Algumas fontes exemplificativas incluem, mas sem limitação a, candidatos espaciais, candidatos de preditor de vetor de movimento temporal (TMVP), candidatos de predição de vetor de movimento com base em histórico (HMVP) e candidatos em pares. Para gerar a lista de candidatos de vetor de movimento, o codificador de vídeo pode avaliar candidatos das fontes até que uma quantidade desejada de candidatos seja incluída na lista. Para avaliar um candidato particular para inclusão na lista de candidatos de vetor de movimento, o codificador de vídeo pode determinar se o candidato particular está disponível e/ou se um valor do candidato particular é o mesmo que um candidato já incluído na lista de candidatos de vetor de movimento. O codificador de vídeo pode avaliar candidatos das fontes em uma ordem particular.
[0020] Em alguns casos, um codificador de vídeo pode utilizar a ordem de fontes para gerar uma lista de candidatos de vetor de movimento para um bloco atual independentemente da possibilidade de o bloco atual ser predito com o uso intermodo (por exemplo, com o uso de um bloco de preditor localizado em uma imagem diferente do bloco atual) ou com o uso de IBC (por exemplo, com o uso de um bloco de preditor localizado na mesma imagem que o bloco atual). Em outros casos, um codificador de vídeo pode utilizar diferentes ordens de fontes para gerar listas de candidatos de vetor de movimento para blocos que predizem com o uso de intermodo e blocos preditos com o uso de IBC. Quando o codificador de vídeo usa diferentes ordens, ainda pode haver alguma sobreposição nos candidatos considerados. Por exemplo, o codificador de vídeo pode avaliar candidatos de HMVP para inclusão na lista de candidatos de vetor de movimento tanto para blocos codificados com o uso de inter e IBC com a condição de que um último candidato na lista de candidatos de vetor de movimento não possa ser um candidato de HMVP.
[0021] De acordo com uma ou mais técnicas desta revelação, um codificador de vídeo pode gerar uma lista de candidatos de vetor de movimento para um bloco de dados de vídeo predito com o uso de IBC com um candidato de HMVP como o último candidato na lista de candidatos de vetor de movimento. Por exemplo, o codificador de vídeo pode incluir, como um último candidato em uma lista de candidatos de vetor de movimento para um bloco atual predito com o uso de IBC, um candidato de HMVP.
[0022] Em alguns exemplos, além de permitir que candidatos de HMVP sejam o último candidato em uma lista de candidatos de vetor de movimento, o codificador de vídeo pode não utilizar algumas fontes de candidato para listas de candidatos de IBC que são usadas para listas de intercandidatos. Por exemplo, o codificador de vídeo pode não avaliar candidatos em pares ao gerar listas de candidatos para blocos codificados com o uso de IBC e pode avaliar candidatos em pares ao gerar listas de candidatos para blocos codificados com o uso de inter.
[0023] As técnicas desta revelação estão relacionadas ao modo de cópia de intrabloco (IBC) e ao projeto de lista de preditores de vetor de movimento compartilhado. As técnicas podem ser aplicadas a qualquer um dentre os codecs de vídeo existentes, como HEVC (Codificação de Vídeo de Alta Eficiência), VVC (Codificação de Vídeo Versátil) ou podem ser uma ferramenta de codificação eficiente em quaisquer padrões de codificação de vídeo futuros. Abaixo, as técnicas de HEVC e JEM e os trabalhos em andamento em Codificação de Vídeo Versátil (VVC) relacionados a esta revelação são revisados primeiramente.
[0024] Os padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões de Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo de Múltiplas Visualizações (MVC),
Codificação de Vídeo de Alta Eficiência (HEVC) ou ITU-T H.265, incluindo sua extensão de faixa, extensão de múltiplas visualizações (MV- HEVC) e extensão escalável (SHVC).
[0025] ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) estão estudando agora a necessidade potencial por padronização de tecnologia de codificação de vídeo futura com uma capacidade de compactação que significativamente excede aquela do padrão de HEVC atual (incluindo suas extensões atuais e extensões de curto prazo para codificação de conteúdo de tela e codificação de alta faixa dinâmica). Os grupos estão trabalhando em conjunto nessa atividade de exploração em um esforço de colaboração conjunta conhecida como o Joint Video Exploration Team (JVET) para avaliar projetos de tecnologia de compactação propostos por seus especialistas nessa área. O JVET se reuniu pela primeira vez em 19 a 21 de outubro de 2015. E a versão mais recente de software de referência, isto é, Joint Exploration Model 7 (JEM 7) está disponível em jvet.hhi.fraunhofer.de/svn/svnHMJEMSoftware/tags/HM-16.6- JEM-7.0/. Uma descrição de Algoritmo de Joint Exploration Test Model 7 (JEM7), doravante no presente documento “JVET- G1001, está disponível em phenix.it- sudparis.eu/jvet/docenduser/current document.php?id=3286.
[0026] Estrutura de CU e predição de vetor de movimento em HEVC. Em HEVC, a maior unidade de codificação em uma fatia é denominada um bloco de árvore de codificação (CTB) ou unidade de árvore de codificação (CTU). Um CTB contém uma árvore quaternária cujos nós são unidades de codificação. O tamanho de um CTB pode variar de 16x16 a
64x64 no perfil principal de HEVC (embora os tamanhos de CTB de 8x8 possam ser suportados). Uma unidade de codificação (CU) poderia ser do mesmo tamanho de um CTB tão pequeno quanto 8x8. Cada unidade de codificação é codificada com um modo, isto é, inter ou intra. Quando uma CU é intercodificada, a CU pode ser particionada adicionalmente em 2 ou 4 unidades de predição (PUs) ou se tornar apenas uma PU quando um particionamento adicional não se aplica. Quando duas PUs estão presentes em uma CU, as mesmas podem ser retângulos de meio tamanho ou dois retângulos de tamanho com 1⁄4 ou 3⁄4 do tamanho da CU. Quando a CU é intercodificada, cada PU tem um conjunto de informações de movimento, que é derivado com um modo de interpredição exclusivo.
[0027] Predição de movimento. No padrão de HEVC, há dois modos de interpredição, denominados modos de predição de mesclagem (salto é considerado como um caso especial de mesclagem) e de vetor de movimento avançado (AMVP) respectivamente para uma unidade de predição (PU).
[0028] Tanto no modo de AMVP quanto no modo de mesclagem, uma lista de candidatos de vetor de movimento (MV) é mantida para múltiplos preditores de vetor de movimento. O vetor (ou vetores) de movimento bem como índices de referência no modo de mesclagem da PU atual são gerados ao considerar um candidato da lista de candidatos de MV.
[0029] A lista de candidatos de MV pode conter até cinco candidatos para o modo de mesclagem e apenas dois candidatos para o modo de AMVP. Um candidato de mesclado pode conter um conjunto de informações de movimento, por exemplo, vetores de movimento correspondentes tanto a listas de imagens de referência (lista 0 e lista 1) quanto a índices de referência. Se um candidato de mesclagem for identificado por um índice de mesclagem, as imagens de referência são usadas para a predição dos blocos atuais bem como os vetores de movimento associados são determinados. Entretanto, sob o modo de AMVP para cada direção de predição potencial da lista 0 ou da lista 1, um índice de referência precisa ser sinalizado explicitamente, juntamente com um índice de MVP para a lista de candidatos de MV uma vez que o candidato de AMVP contém apenas um vetor de movimento. No modo de AMVP, os vetores de movimento preditos podem ser refinados adicionalmente.
[0030] Conforme pode ser observado acima, um candidato de mesclagem corresponde a um conjunto de informações de movimento completo enquanto u8m candidato de AMVP contém apenas um vetor de movimento para uma direção de predição específica e índice de referência. Os candidatos para ambos os modos são derivados similarmente dos mesmos blocos vizinhos espaciais e vizinhos.
[0031] As Figuras 1A e 1B são diagramas conceituais que ilustram candidatos vizinhos espaciais em HEVC. Os candidatos de MV espacial são derivados dos blocos vizinhos mostrados nas Figuras 1A e 1B, para uma PU específica (PU0), embora os métodos de geração dos candidatos dos blocos difiram para os modos de mesclagem e AMVP.
[0032] Em modo de mesclagem, até quatro candidatos de MV espacial podem ser derivados com as ordens mostrados na Figura 1A com números, e a ordem é a seguinte:
esquerda (0, A1), acima (1, B1), direita superior (2, B0), esquerda inferior (3, A0) e esquerda superior (4, B2) conforme mostrado na Figura 1A. Ou seja, na Figura 1A, o bloco 1000 inclui PU0 1040A e PUl 1040B. Quando um codificador de vídeo deve codificar informações de movimento para PU0 1040A com o uso de modo de mesclagem, o codificador de vídeo adiciona informações de movimento de blocos vizinhos espaciais 1080A, 1080B, 1080C, 1080D e 1080E a uma lista de candidatos naquela ordem. Os blocos 1080A, 1080B, 1080C, 1080D e 108E também podem ser referidos respectivamente como os blocos A1, B1, B0, A0 e B2, como em HEVC.
[0033] Em modo de AVMP, os blocos vizinhos são divididos em dois grupos: um grupo à esquerda incluindo blocos 0 e 1, e um grupo acima incluindo blocos 2, 3 e 4 conforme mostrado na Figura 1B Esses blocos são marcados respectivamente como blocos 1100A, 1100B, 1100C, 1100D e 1100E na Figura 1B Em particular, na Figura 1B, o bloco 1020 inclui PU0 1060 A e PU1 1060B, e os blocos 1100A, 1100B, 1100C, 1100D e 1100E representam vizinhos espaciais a PU0 1060 A. Para cada grupo, o candidato potencial em um bloco vizinho que se refere à mesma imagem de referência que àquela indicada pelo índice de referência sinalizado tem a prioridade mais alta para ser escolhido para formar um candidato final do grupo. É possível que todos os blocos vizinhos não contenham um vetor de movimento que aponta para a mesma imagem de referência. Portanto, se tal candidato não puder ser encontrado, o primeiro candidato disponível será escalado para formar o candidato final;
assim, as diferenças de distância temporal podem ser compensadas.
[0034] Um candidato de preditor de vetor de movimento temporal (TMVP), se estiver habilitado e disponível, é adicionado à lista de candidatos de MV após candidatos de vetor de movimento espacial. O processo de derivação de vetor de movimento para candidato de TMVP é o mesmo tanto para os modos de mesclagem quanto para os modos de AMVP; entretanto, o índice de referência alvo para o candidato de TMVP no modo de mesclagem é sempre definido como 0. A localização de bloco primário para derivação de candidato de TMVP é o bloco direito inferior fora da PU colocada (mostrada como bloco “T” na Figura 2A) para compensar a tendência dos blocos superior e esquerdo usados de gerar candidatos vizinhos espaciais. Entretanto, se aquele bloco está localizado no exterior da fileira de CTB atual ou informações de movimento não estiverem, o bloco é substituído com um bloco central da PU.
[0035] Conforme mostrado na Figura 2B, o vetor de movimento para candidato de TMVP é derivado da PU colocalizada da imagem colocalizada indicada pelo nível de fatia. Similar ao modo direto temporal em AVC, um vetor de movimento do candidato de TMVP pode ter escala de vetor de movimento realizada para compensar as diferenças de distância.
[0036] Outros aspectos de predição de movimento em HEVC não serão descritos agora. Um tal aspecto é a escala de vetor de movimento. Considera-se que o valor de vetores de movimento é proporcional à distância de imagens no momento de apresentação. Um vetor de movimento associa duas imagens, a imagem de referência e a imagem contendo o vetor de movimento (a saber, a imagem que contém o mesmo). Quando um vetor de movimento é utilizado para predizer o outro vetor de movimento, a distância da imagem que contém o mesmo e a imagem de referência é calculada com base nos valores de Contagem de Ordem de Imagem (POC).
[0037] Para um vetor de movimento a ser predito, tanto a imagem que contém o mesmo associada quanto sua imagem de referência podem ser diferentes. Portanto, uma nova distância (com base em POC) é calculada. E o vetor de movimento é escalado com base nessas duas distâncias de POC. Para um candidato vizinho espacial, as imagens que contêm o mesmo para os dois vetores de movimento são iguais, enquanto as imagens de referência são diferentes. Em HEVC, a escala de vetor de movimento se aplica tanto à TMVP quanto à AMVP para candidatos vizinhos espaciais e temporais.
[0038] Outro aspecto de predição de movimento em HEVC é a geração de candidato de vetor de movimento artificial. Se uma lista de candidatos de vetor de movimento não estiver completa, os candidatos de vetor de movimento artificiais são gerados e inseridos no final da lista até que terá todos os candidatos. Em modo de mesclagem, há dois tipos de candidatos de MV artificiais: candidato combinados derivados apenas para fatias B e candidatos zero usados apenas para AMVP se o primeiro tipo não fornece candidatos artificiais o suficiente. Para cada par de candidatos que já está na lista de candidatos e tem informações de movimento necessárias, candidatos de vetor de movimento combinado bidirecionais são derivados por uma combinação do vetor de movimento do primeiro candidato que refere a uma imagem na lista 0 e do vetor de movimento de um segundo candidato que se refere a uma imagem na lista 1.
[0039] Outro aspecto de predição de movimento em HEVC é um processo de remoção para inserção de candidato. Os candidatos de diferentes blocos podem ser os mesmos, o que diminui a eficiência de uma lista de candidatos de modo de mesclagem ou modo de AMVP. Um processo de remoção pode ser aplicado para resolver esse problema. O processo de remoção compara um candidato contra os outros na lista atual de candidatos par evitar inserção de candidato idêntico em certa medida. Para reduzir a complexidade, apenas números limitados de processo de remoção são aplicados em vez de comparar cada candidato potencial com todos os outros candidatos existentes.
[0040] Predição de vetor de movimento melhorada. No desenvolvimento de Codificação de Vídeo Versátil (VVC), há várias ferramentas de intercodificação que derivam ou refinam a lista de candidatos de predição de vetor de movimento ou predição de mesclagem para o bloco atual. Várias dessas abordagens são descritas abaixo. Essas abordagens incluem predição de vetor de movimento com base em histórico, candidatos médios em pares (também referidos como “candidatos em pares”) e lista de mesclagem em VTM3.0.
[0041] Predição de vetor de movimento com base em histórico. A predição de vetor de movimento com base em histórico (HMVP) [JVET-K0104, disponível em phenix.it- sudparis.eu/jvet/doc_end_user/documents/ll_Ljubljana/wgl1/J VET-KO 104-v5.zip] é um método com base em histórico que permite que cada bloco encontre seu preditor de MV de uma lista de MVs decodificada do passado além daquela em campos de movimento vizinho causais imediatamente adjacentes. Uma tabela com múltiplos candidatos de HMVP é mantida durante o processo de codificação/decodificação. A tabela é esvaziada quando uma nova fatia é encontrada. Sempre que há um bloco intercodificado, as informações de movimento associadas são inseridas na tabela de um modo primeiro a entrar, primeiro a sair (FIFO) como um novo candidato de HMVP. Então, uma regra FIFO de restrição pode ser aplicada. Ao inserir uma HMVP na tabela, a verificação de redundância é aplicada primeiramente para encontrar se há uma HMVP idêntica na tabela. Se encontrada, aquela HMVP particular é removida da tabela e todos os candidatos de HMVP posteriores são removidos.
[0042] Os candidatos de HMVP poderiam ser usados no processo de construção de lista de candidatos de mesclagem. Todos os candidatos de HMVP da última entrada até a primeira entrada na tabela podem ser inseridos após o candidato de TMVP. A remoção pode ser aplicada nos candidatos de HMVP. Uma vez que o número total de candidatos de mesclagem disponíveis atinge os candidatos de mesclagem maximamente permitidos sinalizados, o processo de construção de lista de candidatos de mesclagem é finalizado.
[0043] Similarmente, os candidatos de HMVP poderiam ser usados no processo de construção de lista de candidatos de mesclagem. Os vetores de movimento dos últimos K candidatos de HMVP na tabela são inseridos após o candidato de TMVP. Apenas candidatos de HMVP com a mesma imagem de referência que a imagem de referência alvo de
AMVP são usados para construir a lista de candidatos de AMVP. A remoção é aplicada nos candidatos de HMVP.
[0044] Candidatos médios em pares. Os candidatos médios em pares são usados em VTM3.0. Os candidatos médios em pares são gerados pela média de pares predefinidos de candidatos na lista atual de candidatos de mesclagem (inclui candidatos espaciais, TMVP e HMVP), e os pares predefinidos são definidos como {(0, 1), (0, 2), (1, 2), (0, 3), (1, 3), (2, 3)}, em que os números denotam os índices de mesclagem como lista de candidatos de mesclagem. Os vetores de movimento médios são calculados separadamente para cada lista de referência. Se ambos os vetores de movimento estiverem disponíveis em uma lista, esses vetores de movimento serão calculados em média mesmo quando os mesmos apontam para diferentes imagens de referência; se apenas um vetor de movimento estiver disponível, usar o vetor de movimento direto; se no vetor de movimento estiver disponível, manter essa lista inválida. Os candidatos médios em pares substituem os candidatos combinados em padrão de HEVC.
[0045] Lista de mesclagem em VTM3.0. Em VTM4.0, para modo de intermesclagem normal, o tamanho de lista de mesclagem é 6, a ordem de lista de candidatos de mesclagem pode ser conforme a seguir:
1. Candidatos espaciais para blocos A1, B1, B0 e A0.
2. Se o número de candidatos for menor 4, adicionar B2.
3. Candidato de TMVP.
4. Candidatos de HMVP (não podem ser o último candidato na lista).
5. Candidatos em pares.
6. Candidatos zero.
[0046] Em VTM4.0, para o modo de IBC, o tamanho de lista de mesclagem é 6, a ordem de lista de candidatos de mesclagem pode ser conforme a seguir:
1. Candidatos espaciais para blocos A1, B1, B0 e A0.
2. Se o número de candidatos for menor 4, adicionar B2.
3. Candidatos de HMVP (não podem ser o último candidato na lista).
4. Candidatos em pares.
[0047] Para o modo de IBC, se os candidatos forem válidos, o codificador de vídeo pode adicionar os mesmos na lista de mesclagem/salto. Um candidato pode ser considerado válido quando as seguintes condições forem satisfeitas: B1 é removido por A1, se B1 for diferente de A1, adicionar B1 na lista de mesclagem/salto; B0 é removido por B1, A0 é removido por A1; se o número de candidatos for menor que quatro, verificar B2. B2 é removido por A1 e B1; os primeiros dois candidatos de HMVP são removidos por A1 e B1; candidatos em pares não precisam ser removidos.
[0048] A cópia intrabloco (IBC) é referido às vezes como referência à imagem atual (CPR), em que um vetor de movimento se refere às amostras de referência já reconstruídos na imagem atual. IBC foi suportada em extensão de codificação conteúdo de tela de HEVC (HEVC SCC). Uma CU codificada por IBC é sinalizada como um bloco intercodificado. O vetor de movimento (ou bloco) de luma de uma CU precisa ter precisão de número inteiro. O vetor de movimento de croma é removido para precisão de número inteiro também. Quando combinado com AMVR, o modo de IBC pode comutar precisões de vetor de movimento de 1-pel e 4- pel. A imagem atual é colocada no final da lista de imagens de referência L0. Para reduzir o consumo de memória e complexidade de decodificador, a IBC em VTM-3.0 permite que apenas a porção reconstruída da CTU atual seja usada. Essa restrição permite que o modo de IBC seja implementado com o uso de memória em chip local para implementações de hardware.
[0049] No lado de codificador, a estimação de movimento com base em hash pode ser realizada para IBC. O codificador realiza verificação de RD para blocos com largura ou altura não maior que 16 amostras de luma. Para modo sem mesclagem, a pesquisa de vetor de bloco é realizada com o uso primeiramente de pesquisa com base em hash. Se a pesquisa de hash não retorna o candidato válido, a pesquisa local com base em correspondência de bloco será realizada.
[0050] Em VTM4.0, o modo de IBC é sinalizado com um sinalizador de nível de bloco e pode ser sinalizado como como modo de AMVP de IBC ou modo de salto/mesclagem de IBC. O modo de IBC é tratado como o terceiro modo de predição diferente modos de intrapredição ou interpredição (por exemplo, modo de IBC é um modo de predição independente que é diferente de intra e inter). A imagem atual pode não ser mais incluída como uma das imagens de referência na lista de imagens de referência 0. O processo de derivação de vetores de movimento para modo de IBC exclui todos os blocos vizinhos em modo inter e vice-versa. As verificações de conformidade de fluxo de bits não são mais necessárias no codificador e a sinalização de modo redundante é removida.
[0051] As técnicas de IBC atuais em JVET podem apresentar um ou mais problemas. O modo de IBC como um modo independente foi adotado na 13ª reunião de JVET. O método atual de geração de lista de candidatos de mesclagem/salto para modo de mesclagem/salto de IBC é similar ao modo de intermesclagem/salto normal, mas o modo de IBC é diferente de interpredição normal.
[0052] Como um problema exemplificativo, para geração de lista de intermesclagem/salto, se o número de candidatos atingir 4, o candidato B2 não será verificado. Mas o modo de IBC removeu candidato de TMVP que reduziu o número de candidatos potenciais.Como tal, pode ser desejável que o candidato B2 seja verificado mesmo se o número de candidatos atingir 4. De acordo com uma ou mais técnicas desta revelação, a lista de mesclagem/salto pode ser reprojetada para modo de IBC.
[0053] Com outro problema exemplificativo, a operação de remoção de interpredição precisa comparar direção de movimento, idx/POC de referência e vetor de movimento (MV) entre diferentes candidatos. Entretanto, para o modo de IBC, a direção de movimento e idx/POC de referência pode ser sempre o mesmo. De acordo com uma ou mais técnicas desta revelação, o algoritmo de remoção pode ser simplificado.
[0054] Como outro problema exemplificativo, os candidatos de HMVP não podem ser os últimos candidatos na lista de mesclagem/salto em VTM. De acordo com uma ou mais técnicas desta revelação, essa restrição pode ser removida.
[0055] Como outro problema exemplificativo, apenas um candidato em par pode ser usado para o modo de mesclagem/salto de IBC. Entretanto, devido ao fato de que não há MV zero como modo de intermesclagem/salto, a lista pode ser menor que 6.
[0056] Como outro problema exemplificativo, o algoritmo de arredondamento de MV para interpredição é unificado, mas o modo de IBC (como modo de AMVP de IBC, mesclagem/salto de IBC) pode usar um diferente método de arredondamento de MV para MV de croma. Isso não ocorre apenas para o modo de mesclagem/salto de IBC, mas também outro modo de IBC. De acordo com uma ou mais técnicas desta revelação, o método de arredondamento pode ser unificado.
[0057] De acordo com uma ou mais técnicas desta revelação, um codificador de vídeo (por exemplo, um codificador de vídeo, como codificador de vídeo 200 da Figura 3 e/ou da Figura 5 ou um decodificador de vídeo, como decodificador de vídeo 300 da Figura 3 e/ou da Figura 6) pode ser configurado para remover a restrição de número de candidato de verificar o candidato B2. Como um exemplo, ao gerar a lista de mesclagem/salto de IBC, o codificador de vídeo pode verificar sempre o candidato de B2. Se o candidato de B2 for válido, o codificador de vídeo pode adicionar o candidato de B2 à lista de candidatos. Como outro exemplo, ao gerar a lista de mesclagem/salto de IBC, o codificador de vídeo pode remover a restrição de verificar B2 apenas quando candidatos são menores que um limite (por exemplo, 2, 3, 4, 5, 6) (por exemplo, no VTM atual). O codificador de vídeo pode verificar sempre B2, se B2 for 1) válido, 2) codificado em modo de IBC, e 3)
removido por A1 e B1 (por exemplo, de B2 for diferente de A1 e B1), o codificador de vídeo pode adicionar B2 à lista.
[0058] De acordo com uma ou mais técnicas desta revelação, o codificador de vídeo pode remover a restrição de que candidatos de HMVP não podem ser últimos candidatos na lista de mesclagem/salto. Por exemplo, em VTM, o codificador de vídeo pode remover a restrição de que candidatos de HMVP não podem ser os últimos candidatos de mesclagem/salto de IBC. O codificador de vídeo pode verificar os candidatos de HMVP disponíveis na tabela de HMVP até que o número de candidatos tenha atingido o tamanho de lista de mesclagem/salto tenha verificado todos os candidatos na tabela de HMVP.
[0059] De acordo com uma ou mais técnicas desta revelação, o codificador de vídeo pode remover os candidatos em pares para modo de IBC. Por exemplo, o codificador de vídeo pode não usar candidatos em pares no modo de mesclagem/salto de IBC. Como um exemplo, o codificador de vídeo pode remover a restrição de que apenas um candidato em par pode ser usado. Como um exemplo, o codificador de vídeo pode usar os candidatos disponíveis na lista de candidatos de mesclagem/salto para gerar candidatos em pares e adicionar na lista até que o número de candidatos atinja o tamanho máximo da lista. Como outro exemplo, o codificador de vídeo pode usar os primeiros N candidatos disponíveis na lista de candidatos de mesclagem/salto para gerar candidatos em pares, e adicionar na lista até que o número de candidatos atinja o tamanho da lista. Por exemplo, N = 3, os pares serão {(0, 1), (0, 2), (1, 2), (0, 3), (1, 3), (2, 3)}. Para um exemplo, o codificador de vídeo pode não usar candidatos de HMVP para gerar candidatos em pares.
[0060] De acordo com uma ou mais técnicas desta revelação, o codificador de vídeo pode remover a operação de remoção de adicionar um novo candidato de MV na lista de preditores de MV. Por exemplo, para gerar a lista de mesclagem/salto de IBC e/ou lista de AMVPs ao verificar um novo candidato de MV que é derivado de um bloco codificado em modo de IBC, o codificador de vídeo não precisa comparar o novo candidato de MV com os outros candidatos e pode adicionar diretamente o novo candidato na lista.
[0061] Como outro exemplo, o codificador de vídeo pode simplificar a operação de remoção ao comparar apenas vetores de movimento. Por exemplo, para gerar a lista de mesclagem/salto de IBC e/ou lista de AMVPs ao verificar um novo candidato de MV que é derivado de um bloco codificado em modo de IBC, o codificador de vídeo pode realizar ao comparar apenas os vetores de movimento. A lista de preditores de vetor de movimento pode ser a lista de mesclagem/salto ou a lista de AMVPs ou outra lista de candidatos de preditor de vetor de movimento.
[0062] Como outro exemplo, o codificador de vídeo pode utilizar um método de arredondamento de MV unificado. Por exemplo, o codificador de vídeo pode utilizar um método de arredondamento de MV de croma modificado de IBC conforme mostrado abaixo onde: i é igual a x ou y (os componentes de MV na direção horizontal e direção vertical). O shifti pode ser associado ao propósito, predefinido ou depende de precisão de bit de MV, formato de croma.
[0063] Por exemplo, o MVi de entrada é um MV de luma cuja precisão de 1/16 com a precisão de bit interno é 4, o formato de croma é 4:2:0. A fim de gerar MV de croma de precisão de número inteiro, o shifti é igual a 5=4+1, o MVChromai pode ser determinado conforme mostrado abaixo:
[0064] Por exemplo, o MVi de entrada é um MV de luma cuja precisão de 1/16 com a precisão de bit interno é 4, o formato de croma é 4:4:4. A fim de gerar um MV de croma de precisão de número inteiro, o shifti é igual a 4, o MVChromai pode ser determinado conforme mostrado abaixo:
[0065] A Figura 3 é um diagrama de blocos que ilustra uma codificação de vídeo e sistema de decodificação 100 exemplificativos que podem realizar as técnicas desta revelação. As técnicas desta revelação são, em geral, direcionadas à codificação (codificação e/ou decodificação) de dados de vídeo. Em geral, os dados de vídeo incluem quaisquer dados para processamento de um vídeo. Assim, os dados de vídeo podem incluir vídeo bruto, vídeo não codificado, vídeo codificado, vídeo decodificado (por exemplo, reconstruído) e metadados de vídeo, como dados de sinalização.
[0066] Conforme mostrado na Figura 3, o sistema 100 inclui um dispositivo de fonte 102 que fornece dados de vídeo codificados a serem decodificados e exibidos por um dispositivo de destino 116, nesse exemplo. Em particular, o dispositivo de fonte 102 fornece os dados de vídeo para o dispositivo de destino 116 através de um meio legível por computador 110. O dispositivo de fonte 102 e o dispositivo de destino 116 podem compreender qualquer um dentre uma ampla gama de dispositivos, incluindo computadores do tipo desktop, computadores do tipo notebook (isto é, computadores do tipo laptop), computadores do tipo tablet, decodificadores de sinal, monofone de telefone, como telefones inteligentes, televisões, câmeras, dispositivos de exibição, reprodutores de meios digitais, consoles de jogo de vídeo, dispositivo de transmissão contínua de vídeo ou similares. Em alguns casos, o dispositivo de fonte 102 e o dispositivo de destino 116 podem ser equipados para comunicação sem fio, e, assim, podem ser referidos como dispositivos de comunicação sem fio.
[0067] No exemplo da Figura 3, o dispositivo de fonte 102 inclui a fonte de vídeo 104, a memória 106, o codificador de vídeo 200 e a interface de saída 108. O dispositivo de destino 116 inclui a interface de entrada 122, o decodificador de vídeo 300, a memória 120 e o dispositivo de exibição 118. De acordo com essa revelação, o codificador de vídeo 200 do dispositivo de fonte 102 e do decodificador de vídeo 300 do dispositivo de destino 116 pode ser configurado para aplicar as técnicas para compensação de iluminação local. Assim, o dispositivo de fonte 102 representa um exemplo de uma codificação de vídeo dispositivo, enquanto o dispositivo de destino 116 representa um exemplo de um dispositivo de decodificação de vídeo. Em outros exemplos, um dispositivo de fonte e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo de fonte 102 pode receber dados de vídeo de uma fonte de vídeo externa, como uma câmera externa. De modo semelhante, o dispositivo de destino 116 pode se interligar a um dispositivo de exibição externo, em vez de incluir um dispositivo de exibição integrado.
[0068] O sistema 100 conforme mostrado na Figura 3 é meramente um exemplo. Em geral, qualquer dispositivo de codificação e/ou decodificação de vídeo digital pode realizar técnicas para compensação de iluminação local. O dispositivo de fonte 102 e o dispositivo de destino 116 são meros exemplos de tais dispositivos de codificação em que o dispositivo de fonte 102 gera dados de vídeo codificados para transmissão para o dispositivo de destino 116. Esta revelação se refere a um dispositivo de “codificação” como um dispositivo que realiza codificação (codificação e/ou decodificar) de dados. Assim, o codificador de vídeo 200 e o decodificador de vídeo 300 representam respectivamente exemplos de dispositivos de codificação, em particular, um codificador de vídeo e um decodificador de vídeo. Em alguns exemplos, os dispositivos 102, 116 podem operar de uma maneira substancialmente simétrica de modo que cada um dentre os dispositivos 102, 116 inclui 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 transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo ou telefonia de vídeo.
[0069] Em geral, a fonte de vídeo 104 representa uma fonte de dados de vídeo (isto é, dados de vídeo brutos e 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 imagens. A fonte de vídeo 104 do dispositivo de fonte 102 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo anteriormente capturado e/ou uma interface de alimentação de vídeo para receber vídeo 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 computacionais 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 redispor as imagens a partir da ordem recebida (referida às vezes como “ordem de exibição”) em uma ordem de codificação para codificar. O codificador de vídeo 200 pode gerar um fluxo de bits incluindo dados de vídeo codificados. O dispositivo de fonte 102 pode, então, emitir os dados de vídeo codificados através de interface de saída 108 sobre o 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 da Memória 106 do dispositivo de fonte 102 e da memória 120 do dispositivo de destino 116 representa memórias de propósito geral.
[0070] Em algum exemplo, 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 brutos e decodificados do decodificador de vídeo 300. Adicional ou alternativamente, as memórias 106, 120 podem armazenar instruções de software executáveis respectivamente por, por exemplo, codificador de vídeo 200 e decodificador de vídeo
300. Embora sejam mostrados separadamente do codificador de vídeo 200 e do decodificador de vídeo 300 nesse 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 propósitos funcionalmente similar ou equivalente.
[0071] Adicionalmente, as memórias 106, 120 podem armazenar dados de vídeo codificados, por exemplo, emitidos a partir do codificador de vídeo 200 e inseridos no decodificador de vídeo 300. Em alguns exemplos, as porções de memórias 106, 120 podem ser alocadas como um ou mais armazenamentos principais de vídeo, por exemplo, para armazenar dados de vídeo brutos, decodificados e/ou codificados. O meio legível por computador 110 pode representar qualquer tipo de meio ou dispositivo que tem capacidade de transportar os dados de vídeo codificados do dispositivo de fonte 102 até o dispositivo de destino 116. Em um exemplo, o meio legível por computador 110 representa um meio de comunicação para possibilitar que o dispositivo de fonte 102 transmita diretamente dados de vídeo codificados para o dispositivo de destino 116 em tempo real, por exemplo, através de uma rede de frequência de rádio 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 modular o sinal de transmissão recebido, de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede com base em pacote, como uma rede de área local, uma rede de área ampla ou uma rede global, como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações-base ou qualquer outro equipamento que pode ser útil para facilitar a comunicação do dispositivo de fonte 102 ao dispositivo de destino 116.
[0072] Em alguns exemplos, o dispositivo de fonte 102 pode emitir dados codificados a partir da interface de saída 108 para armazenar o dispositivo 116. Similarmente, o dispositivo de destino 116 pode acessar dados codificados a partir do dispositivo de armazenamento 116 através da interface de entrada 122. O dispositivo de armazenamento 116 pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados distribuído ou localmente acessados, como um disco rígido, discos do tipo Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou quaisquer outros meios de armazenamento digital adequados para armazenar dados de vídeo codificados.
[0073] Em alguns exemplos, o dispositivo de fonte 102 pode emitir dados de vídeo codificados para o servidor de arquivo 114 ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de fonte 102. O dispositivo de destino 116 pode acessar dados de vídeo armazenados a partir do servidor de arquivo 114 através de transmissão contínua ou transferência por download.
O servidor de arquivo 114 pode ser qualquer tipo de dispositivo de servidor que tem capacidade de armazenar dados de vídeo codificados e transmitir aqueles dados de vídeo codificados para o dispositivo de destino 116. O servidor de arquivo 114 pode representar um servidor de Web (por exemplo, para uma página da Web), um servidor de Protocolo de Transferência de Arquivo (FTP), um dispositivo de rede de entrega de conteúdo ou um dispositivo de armazenamento ligado à rede (NAS). O dispositivo de destino 116 pode acessar dados de vídeo codificados a partir do servidor de arquivo 114 através de qualquer conexão de dados padrão, incluindo uma conexão de Internet.
Isso pode incluir um canal sem fio (por exemplo, uma conexão de WiFi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambas que é adequada para acessar dados de vídeo codificados armazenados no servidor de arquivo 114. O servidor de arquivo 114 e a interface de entrada 122 podem ser configurados para operar de acordo com um protocolo de transmissão de transmissão contínua, um protocolo de transmissão de transferência por download ou uma combinação dos mesmos.
[0074] A interface de saída 108 e a interface de entrada 122 pode representar transmissores/receptores sem fio, modems, componentes de rede com fio (por exemplo, cartões de Ethernet), componentes de comunicação sem fio que operam de acordo com qualquer um dentre uma variedade de padrões IEEE 802.11 ou outros componentes físicos. 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 a Longo Prazo), LTE Avançada, 5G ou similares. 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 de Bluetooth™ ou similares. Em alguns exemplos, o dispositivo de fonte 102 e/ou o dispositivo de destino 116 pode incluir respectivos dispositivos de sistema em um chip (SoC). Por exemplo, o dispositivo de fonte 102 pode incluir um dispositivo de SoC para realizar 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 de SoC para realizar a funcionalidade atribuída ao decodificador de vídeo 300 e/ou à interface de entrada 122.
[0075] As técnicas desta revelação podem ser aplicadas à codificação de vídeo em suporte de qualquer uma dentre as aplicações multimídias, como transmissões de televisão pelo ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de transmissão contínua vídeo por Internet, como transmissão contínua adaptativa dinâmica em HTTP (DASH), vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações.
[0076] 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 similares). O meio legível por computador de fluxo de bits de vídeo codificado 110 pode incluir informações de sinalização definidas pelo codificador de vídeo 200, que também são usadas pelo decodificador de vídeo 300, como elementos de sintaxe que têm 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 similares). O dispositivo de exibição 118 exibe imagens dos dados de vídeo decodificados para um usuário. O dispositivo de exibição 118 pode representar qualquer um dentre uma variedade de dispositivos de exibição, 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ânica (OLED) ou outro tipo de dispositivo de exibição.
[0077] Embora não sejam mostrados na Figura 3, em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser, cada um, integrados com um codificador de áudio e/ou decodificador de áudio, e pode incluir unidades de MUX-DEMUX apropriadas ou outro hardware e/ou software para manusear fluxos multiplexados incluindo tanto áudio quanto vídeo em um fluxo de dados comum. Se aplicável, as unidades de MUX-DEMUX podem estar em conformidade com o protocolo de mutiplexador de ITU H.223 ou outros protocolos, como o protocolo de datagrama de usuário (UDP).
[0078] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser, cada um, implementados como qualquer um dentre uma variedade de conjunto de circuitos de codificador e/ou decodificador, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicação (ASICs), arranjos de portas programáveis em campo (FPGAs), elemento lógico discreto, software, hardware, firmware ou qualquer combinação dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado, e executar as instruções em hardware 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 ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado em um respectivo dispositivo. Um dispositivo incluindo o codificador de vídeo 200 e/ou o 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.
[0079] O codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com um padrão de codificação de vídeo, como ITU-T H.265, também referido como uma Codificação de Vídeo de Alta Eficiência (HEVC) ou extensões da mesma, como extensões de codificação de vídeo de múltiplas visualizações e/ou escalável. Alternativamente, o codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com outros padrões de proprietário ou industriais, como o Joint Exploration Test Model (JEM). As técnicas desta revelação, entretanto, não são limitadas a qualquer padrão de codificação particular.
[0080] Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem realizar codificação com base em bloco de imagens. O termo “bloco” se refere, em geral, a uma estrutura incluindo dados a serem processados (por exemplo, codificados, decodificados ou, de outro modo, 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 de YUV (por exemplo, Y, Cb, Cr). Ou seja, em vez de codificar dados de vermelho, verde e azul (RGB) para amostras de uma imagem, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar componentes de luminância ou crominância, em que os componentes de crominância podem incluir componentes de crominância tanto de matiz vermelho quanto de matiz azul. Em alguns exemplos, o codificador de vídeo 200 converte dados formatados com RGB recebidos em uma representação de YUV antes da decodificação, e o decodificador de vídeo 300 converte a representação de YUV no formato de RGB. Alternativamente, as unidades pré e pós-processamento (não mostradas) podem realizar essas conversões.
[0081] Esta revelação pode se referir, em geral, à 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. Similarmente, esta revelação pode ser 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, predição e/ou codificação residual. Um fluxo de bits de vídeo codificado inclui, em geral, 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 um bloco devem ser, em geral, entendidas como valores de codificação para elementos de sintaxe que formam a imagem ou bloco.
[0082] HEVC define vários blocos, incluindo unidades de codificação (CUs), unidades de predição (PUs) e unidades de transformação (TUs). De acordo com HEVC, um codificador de vídeo (como codificador de vídeo 200) particiona uma unidade de árvore de codificação (CTU) em CUs de acordo com uma estrutura de árvore quaternária. Ou seja, o codificador de vídeo particiona CTUs e CUs em quadrados não sobrepostos iguais, e cada nó da árvore quaternária tem zero ou quatro nós filhos. Os nós sem nós filhos podem ser referidos como “nós de folha”, e as CUs de tais nós de folha podem incluir uma ou mais PUs e/ou uma ou mais TUs. O codificador de vídeo pode particionar adicionalmente PUs e TUs. Por exemplo, em HEVC, uma árvore quaternária residual (RQT) representa particionamento de TUs. Em HEVC, PUs representam dados de interpredição, enquanto TUs representam dados residuais. CUs que são intrapreditos incluem informações de intrapredição, como como uma indicação de intramodo.
[0083] 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. De acordo com JEM, um codificador de vídeo (como codificador de vídeo 200) particiona uma imagem em uma pluralidade de unidades de árvore de codificação (CTUs). O codificador de vídeo 200 pode particionar uma CTU de acordo com uma estrutura de árvore, como uma estrutura de árvore quaternária-árvore binária (QTBT). A estrutura de QTBT de JEM remove os conceitos de múltiplos tipos de particionamento, como a separação entre CUs, PUs e TUs de HEVC. Uma estrutura de QTBT de JEM inclui dois níveis: um primeiro nível particionado de acordo com particionamento de árvore quaternária, e um segundo nível particionado de acordo com particionamento de árvore binário. Um nó raiz da estrutura de QTBT corresponde a uma CTU. Os nós de folha das árvores binárias correspondem às unidades de codificação (CUs).
[0084] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem usar uma única estrutura de QTBT para representar cada um dos componentes de luminância ou 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 de QTBT, como uma estrutura de QTBT para o componente de luminância e outra estrutura de QTBT para ambos os componentes de crominância (ou duas estruturas de QTBT para os respectivos componentes de crominância).
[0085] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para usar particionamento de árvore quaternária por HEVC, particionamento de QTBT de acordo com JEM ou outras estruturas de particionamento. Com o propósito de explicação, a descrição das técnicas desta revelação é apresentada em relação a um particionamento de QTBT. Entretanto, 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 quaternária ou outros tipos de particionamento também.
[0086] Essa revelação pode usar de modo intercambiável “NxN” e “N por N” para se referir às dimensões de amostra de um bloco (como uma CU ou outro bloco de vídeo) em termos de dimensões verticais e horizontais, por exemplo, amostras de 16x16 ou amostras de 16 por 16. 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 tem, em geral, as N amostras em uma direção vertical e N amostras em uma direção horizontal, em que N representa um valor inteiro não negativo. As amostras em uma CU podem ser dispostas em fileiras e colunas. Além disso, as CUs não precisam ter necessariamente o mesmo número de amostras na direção horizontal que na direção vertical. Por exemplo, as CUs podem compreender amostras de NxM, em que M não é necessariamente igual a N.
[0087] O codificador de vídeo 200 codifica dados de vídeo para CUs que representam informações de predição e/ou residuais e outras informações. As informações de predição indicam como a CU deve ser predita a fim de formar um bloco de predição para a CU. As informações residuais representam, em geral, diferenças de amostra por amostra entre amostras da CU antes da codificação e do bloco de predição.
[0088] Para predizer uma CU, o codificador de vídeo 200 pode formar, em geral, um bloco de predição para a CU através de interpredição ou intrapredição. A intrapredição se refere, em geral, á predição da CU a partir de dados de uma imagem anteriormente codificada, enquanto a intrapredição se refere, em geral, à predição da CU a partir de dados anteriormente codificados da mesma imagem. Para realizar interpredição, o codificador de vídeo 200 pode gerar o bloco de predição com o uso de um ou mais vetores de movimento. O codificador de vídeo 200 pode, em geral, realizar uma pesquisa de movimento para identificar um bloco de referência que corresponde proximamente à CU, por exemplo, em termos de diferenças entre a CU e o bloco de referência. O codificador de vídeo 200 pode calcular uma métrica de diferença com o uso de uma soma de diferença absoluta (SAD), soma de diferenças quadradas (SSD), diferença absoluta média (MAD), diferenças quadradas médias (MSD) ou outros tais cálculos de diferença para determinar se um bloco de referência corresponde proximamente à CU atual. Em alguns exemplos, o codificador de vídeo 200 pode predizer a CU atual com o uso de predição unidirecional ou predição bidirecional.
[0089] JEM também fornece um modo de compensação de movimento afim, que pode ser considerado um modo de interpredição. No modo de compensação de movimento afim, o codificador de vídeo 200 pode determinar dois ou mais vetores de movimento que representam movimento não translacional, como diminuir ou aumentar a aproximação de imagem, rotação, movimento em perspectiva ou outros tipos de movimento irregulares.
[0090] Para realizar intrapredição, o codificador de vídeo 200 pode selecionar um modo de intrapredição para gerar o bloco de predição. JEM fornece sessenta e sete modos de intrapredição, incluindo vários modos direcionais bem como modo planar e modo de DC. Em geral, o codificador de vídeo 200 seleciona um modo de intrapredição que descreve amostras vizinhas para um bloco atual (por exemplo, um bloco de uma CU) a partir da qual se prediz amostras do bloco atual. Tais amostras pode estar, em geral, acima, acima e à esquerda ou à esquerda do bloco atual na mesma imagem que o bloco atual, considerando que o codificador de vídeo 200 codifica CTUs e CUs na ordem de varredura de rastreamento (esquerda para a direita, de cima para baixo).
[0091] O codificador de vídeo 200 codifica dados que representam o modo de predição para um bloco atual. Por exemplo, para modos de interpredição, o codificador de vídeo 200 pode codificar dados que representam qual dos modos de intrapredição disponíveis é usado bem como informações de movimento para o modo correspondente. Para interpredição unidirecional ou bidirecional, por exemplo, o codificador de vídeo 200 pode codificar vetores de movimento com o uso de predição de vetor de movimento avançada (AMVP) ou modo de mesclagem. O codificador de vídeo 200 pode usar modos similares para codificar vetores de movimento para modo de compensação de movimento afim.
[0092] Após a predição, como intrapredição ou interpredição de um bloco, o codificador de vídeo 200 pode calcular dados residuais para o bloco. Os dados residuais, como um bloco residual, representam diferenças de amostra por amostra entre o bloco e um bloco de predição para o bloco formado o modo de predição correspondente. O codificador de vídeo 200 pode aplicar uma ou mais transformações 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 transformada de cosseno discreta (DCT), uma transformada de número inteiro, uma transformada de ondaleta ou uma transformada conceitualmente similar a dados de vídeo residuais.
[0093] Adicionalmente, o codificador de vídeo 200 pode aplicar uma transformada secundária após a primeira transformada, como transformada secundária não separável dependente de modo (MDNSST), uma transformada dependente de sinal, uma transformada de Karhunen-Loeve (KLT) ou similares. O codificador de vídeo 200 produz coeficientes de transformada após a aplicação das uma ou mais transformadas.
[0094] Conforme observado acima, após quaisquer transformadas produzirem coeficientes de transformada, o codificador de vídeo 200 pode realizar quantização dos coeficientes de transformada. A quantização se refere, em geral, a um processo em que coeficientes de transformada são quantizados para reduzir possivelmente a quantidade de dados usada para representar os coeficientes, fornecendo adicionalmente compressão. Ao realizar o processo de quantização, o codificador de vídeo 200 pode reduzir a profundidade de bit associado a algum ou todos os coeficientes. Por exemplo, o codificador de vídeo 200 pode arredondar um valor de n bits n para baixo para um valor de m bits durante a quantização, em que n é maior que m. Em alguns exemplos, para realizar quantização, o codificador de vídeo 200 pode realizar um deslocamento de bit a bit do valor a ser quantizado.
[0095] 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 energia superior (e, portanto, frequência inferior) na frente do vetor e colocar coeficientes de energia inferior (e, portanto, frequência superior) de transformada na traseira 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 em série, e, então, codifica por entropia os coeficientes de transformada quantizados do vetor. Em outros exemplos, o codificador de vídeo 200 pode realizar uma varredura adaptativa. Após a varredura, os coeficientes de transformada quantizados para formar o vetor unidimensional, o codificador de vídeo 200 codifica por entropia o vetor unidimensional, por exemplo, de acordo com codificação aritmética binária adaptativa de contexto (CABAC). O codificador de vídeo 200 também pode codificar por entropia valores para elementos de sintaxe que descrevem metadados associados aos dados de vídeo codificados para uso pelo decodificador de vídeo 300 na decodificação dos dados de vídeo.
[0096] Para realizar CABAC, o codificador de vídeo 200 pode atribuir um contexto contido em um modelo de contexto a um símbolo a ser transmitido. O contexto pode se referir, por exemplo, a se referir valores vizinhos do símbolo têm valor zero ou não. A determinação de probabilidade pode ter como base um contexto atribuído ao símbolo. O codificador de vídeo 200 pode gerar adicionalmente 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, um conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS) ou conjunto de parâmetros de vídeo (VPS). O decodificador de vídeo 300 pode decodificar de modo semelhante tais dados de sintaxe para determinar como decodificar dados de vídeo correspondentes.
[0097] Dessa maneira, 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 particionamento de uma imagem em blocos (por exemplo, CUs) e predição e/ou informações residuais para os blocos. Por fim, o decodificador de vídeo 300 pode receber o fluxo de bits e decodificar os dados de vídeo codificados.
[0098] Em geral, o decodificador de vídeo 300 realiza um processo recíproco àquele realizado por 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 com o uso de CABAC de uma maneira substancialmente similar, 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 particionamento correspondente, como uma estrutura de QTBT, para definir CUs da CTU. Os elementos de sintaxe podem definir adicionalmente predição e informações residuais para blocos (por exemplo, CUs) de dados de vídeo.
[0099] As informações residuais podem ser representadas por, por exemplo, coeficientes de transformada quantizados. O decodificador de vídeo 300 pode quantizar inversamente e transformar inversamente os coeficientes de transformada quantizados de um bloco para reproduzir um bloco residual para o bloco. O decodificador de vídeo 300 usa um modo de predição sinalizado (intra ou interpredição) e informações de predição relacionadas (por exemplo, informações de movimento para interpredição) para formar um bloco de predição para o bloco. O decodificador de vídeo 300 pode, então, combinar o bloco de predição e o bloco residual (em uma base de amostra por amostra) para reproduzir o bloco original. O decodificador de vídeo 300 pode realizar processamento adicional, como realizar um de desbloqueio para reduzir artefatos visuais ao longo de limites do bloco.
[00100] Esta revelação pode se referir, em geral, à “sinalização” de certas informações, como elementos de sintaxe. O termo “sinalização” pode se referir, em geral, à comunicação de elementos de sintaxe de valor e/ou outros usados para decodificar dados de vídeo codificados. Ou seja, o codificador de vídeo 200 pode sinalizar valores para elementos de sintaxe no fluxo de bits. Em geral, a sinalização se refere à geração de um valor no fluxo de bits. Conforme observado acima, o dispositivo de fonte 102 pode transportar substancialmente o fluxo de bits para o dispositivo de destino 116 em tempo real ou não em tempo real, como pode ocorrer ao armazenar elementos de sintaxe em dispositivo de armazenamento 112 para recuperação posterior pelo dispositivo de destino 116.
[00101] As Figuras 4A e 4B são diagramas conceituais que ilustram uma estrutura de árvore binária de árvore quaternária (QTBT) 130 e uma unidade de árvore de codificação (CTU) correspondente 132 exemplificativas. As linhas contínuas representam a divisão de árvore quaternária, e as linhas tracejadas indicam a divisão de árvore binária. Em cada nó de divisão (isto é, em folha) da árvore binária, um sinalizador é sinalizado para indicar qual tipo de divisão (isto é, horizontal ou vertical) é usado, onde 0 indica divisão horizontal e 1 indica divisão vertical nesse exemplo. Para a divisão de árvore quaternária, não há necessidade de indicar o tipo de divisão, uma vez que nós de árvore quaternária dividem horizontal e verticalmente um bloco em 4 sub-blocos com o mesmo tamanho. Consequentemente, o codificador de vídeo 200 pode codificar e o decodificador de vídeo 300 pode decodificar, elementos de sintaxe (como informações de divisão) para um nível de árvore de região de estrutura de QTBT 130 (isto é, as linhas contínuas) e elementos de sintaxe (como informações de divisão) para um nível de árvore de predição da estrutura de QTBT 130 (isto é, as linhas tracejadas). O codificador de vídeo 200 pode codificar e o decodificador de vídeo 300 pode decodificar dados de vídeo, como dados de predição ou transformação para CUs representada pelos nós de folha terminais da estrutura de QTBT 130.
[00102] Em geral, a CTU 132 da Figura 17B pode ser associada a parâmetros que definem tamanhos de blocos correspondentes a nós da estrutura de QTBT 130 nos primeiro e segundo níveis. Esses parâmetros podem incluir um tamanho de CTU (representando um tamanho de CTU 132 em amostras), um tamanho de árvore quaternária mínimo (MinQTSize, representando um tamanho de nó de folha de árvore quaternária permitido mínimo), um tamanho de árvore binária mínimo (MaxBTSize, representando um tamanho de nó de raiz de árvore binária permitido máximo), uma profundidade de árvore binária máxima (MaxBTDepth, representando uma profundidade de árvore binária permitida mínima) e um tamanho de árvore binária mínimo (MinBTSize, representando o tamanho de nó de folha de árvore binária permitido mínimo).
[00103] O nó de raiz de uma estrutura de QTBT correspondente a uma CTU pode ter quatro nós filhos no primeiro nível da estrutura de QTBT, cada um dos quais pode ser particionado de acordo com particionamento de árvore quaternária. Ou seja, os nós do primeiro nível são nós de folha (que não têm nenhum nó filho) ou têm quatro nós filhos. O exemplo da estrutura de QTBT 130 representa tais nós como incluindo o nó pai e os nós filhos que têm linhas contínuas para ramificações. Se os nós do primeiro nível não forem maiores que o tamanho de nó de raiz de árvore binária permitido máximo (MaxBTSize), os mesmos podem ser particionados adicionalmente pelas respectivas árvores binárias. A divisão de árvore binária de um nó pode ser iterada até que os nós resultantes da divisão atinjam o tamanho de nó de folha de árvore binária permitido mínimo (MinBTSize) ou a profundidade de árvore binária permitida máxima (MaxBTDepth). O exemplo da estrutura de QTBT 130 representa tais nós como tendo linhas tracejadas para ramificações. O nó de folha de árvore binária é referido como uma unidade de codificação (CU), que é usada para predição (por exemplo, predição de intraimagem ou interimagem) e transformação, sem qualquer particionamento adicional. Conforme discutido acima, as CUs também podem ser referidas como “blocos de vídeo” ou “blocos”.
[00104] Em um exemplo da estrutura de particionamento de QTBT, o tamanho de CTU é definido como 128x128 (amostras de luma e duas amostras de croma de 64x64 correspondentes), o MinQTSize é definido como 16x16, o
MaxBTSize é definido como 64x64, o MinBTSize (tanto para largura quanto para altura) é definido como 4, e a MaxBTDepth é definida como 4. O particionamento de árvore quaternária é aplicado primeiramente à CTU para gerar nós de folhas de árvore quaternária. Os nós de folha de árvore quaternária podem ter um tamanho de 16x16 (isto é, o MinQTSize) a 128x128 (isto é, o tamanho de CTU). Se o nó de árvore quaternária de folha for 128x128, não será dividido adicionalmente pela árvore binária, uma vez que o tamanho excede o MaxBTSize (isto é, 64x64, nesse exemplo). De outro modo, o nó de árvore quaternária de folha será particionado adicionalmente pela árvore binária. Portanto, o nó de folha de árvore quaternária também é o nó de raiz para a árvore binária e tem a profundidade de árvore binária como 0. Quando a profundidade de árvore binária atinge MaxBTDepth (4, nesse exemplo), nenhuma divisão adicional é permitida. Quando o nó de árvore binária tem largura igual a MinBTSize (4, nesse exemplo), implica que nenhuma divisão horizontal adicional é permitida. Similarmente, um nó de árvore binária que tem uma altura igual a MinBTSize implica que nenhuma divisão vertical adicional é permitida para aquele nó de árvore binária. Conforme observado acima, os nós de folha da árvore binária são referidos como CUs, e são processados adicionalmente de acordo com predição e transformação sem particionamento adicional.
[00105] A Figura 5 é um diagrama de blocos que ilustra um codificador de vídeo 200 exemplificativo que pode realizar as técnicas desta revelação. A Figura 5 é fornecida com propósito de explicação e não deve ser considerada como limitante das técnicas conforme amplamente exemplificado e descrito nesta revelação. Para propósitos de explicação, está 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 de HEVC e o padrão de codificação de vídeo H.266 em desenvolvimento. Entretanto, as técnicas desta revelação não são limitadas a esses padrões de codificação de vídeo, e são, em geral, aplicáveis à codificação e à decodificação de vídeo.
[00106] No exemplo da Figura 5, o codificador de vídeo 200 inclui a memória de dados de vídeo 230, a unidade de seleção de modo 202, a unidade de geração residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de quantização inversa 210, unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, a unidade de filtro 216, o armazenamento principal de imagem decodificada (DPB) 218 e a unidade de codificação por entropia 220. Qualquer um ou todos dentre a memória de dados de vídeo 230, a unidade de seleção de modo 202, a unidade de geração residual 204, a unidade de processamento de transformada 206, a unidade de quantização 208, a unidade de quantização inversa 210, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, a unidade de filtro 216, DPB 218 e a unidade de codificação por entropia 220 pode ser implementada em um ou mais processadores ou em conjunto de circuitos de processamento. Além disso, o codificador de vídeo 200 pode incluir processadores ou conjunto de circuitos de processamento adicionais ou alternativos para realizar essas e outras funções.
[00107] 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 3). O DPB 218 pode atuar como uma memória de imagem de referência que armazena dados de vídeo de referência para uso em predição de dados de vídeo subsequentes pelo codificador de vídeo 200. A memória de dados de vídeo 230 e o DPB 218 podem ser formados por qualquer uma dentre uma variedade de dispositivos de memória, como memória de acesso aleatório dinâmico (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 230 e o DPB 218 podem ser fornecidos pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 230 pode estar em chip com outros componentes do codificador de vídeo 200, conforme ilustrado, ou fora do chip em relação àqueles componentes.
[00108] 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, salvo se descrito especificamente como tal, ou à memória externa para o codificador de vídeo 200, salvo se descrito especificamente como tal. De preferência, a referência à memória de dados de vídeo 230 deve ser entendida como memória de referência que armazena dados de vídeo que o codificador de vídeo 200 recebe para codificar (por exemplo,
dados de vídeo para um bloco atual que deve ser codificado). A memória 106 da Figura 3 também pode fornecer armazenamento temporário de saídas das várias unidades do codificador de vídeo 200.
[00109] As várias unidades da Figura 5 são ilustrados para auxiliar no entendimento das 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 se referem a circuitos que fornecem funcionalidade particular, e são predefinidos nas operações que podem ser realizadas. Os circuitos programáveis se referem a circuitos que podem ser programados para realizar várias tarefas, e fornecem funcionalidade flexível nas operações que podem ser realizadas. Por exemplo, os circuitos programados podem executar software ou firmware que fazem com que os circuitos programáveis operem da maneira definida por instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), mas os tipos de operações que os circuitos de função fixa realizam são, em geral, imutáveis. Em alguns exemplos, as uma ou mais dentre as unidades podem ser blocos de circuito distintos (de função fixa ou programáveis), e, em alguns exemplos, as uma ou mais unidades podem ser circuitos integrados.
[00110] 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 com o uso de software executado pelos circuitos programáveis, a memória 106 (Figura 3) pode armazenar o código de objeto do software que o codificador de vídeo 200 recebe e executa, ou outra memória contida no codificador de vídeo 200 (não mostrada) pode armazenar tais instruções.
[00111] 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 a partir da memória de dados de vídeo 230 e fornece os dados de vídeo para a unidade de geração residual 204 e para a unidade de seleção de modo 202. Dados de vídeo na memória de dados de vídeo 230 podem ser dados de vídeo brutos que devem ser codificados.
[00112] A unidade de seleção de modo 202 inclui uma unidade de estimação de movimento 222, uma unidade de compensação de movimento 224 e uma unidade de intrapredição
226. A unidade de seleção de modo 202 pode incluir unidades funcionais adicionais para realizar predição de vídeo de acordo com outros modos de predição. Como exemplos, a unidade de seleção de modo 202 pode incluir uma unidade de paleta, uma unidade de cópia de intrabloco (que pode ser parte da unidade de estimação de movimento 222 e/ou da unidade de compensação de movimento 224), uma unidade afim, uma unidade de modelo linear (LM) ou similares.
[00113] A unidade de seleção de modo 202 coordena, em geral, múltiplas etapas 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 predição para as CUs, tipos de transformada para dados residuais das CUs, parâmetros de quantização para dados residuais das Cus e assim por diante. A unidade de seleção de modo 202 pode selecionar finalmente a combinação de parâmetros de codificação que têm valores de distorção de taxa que são melhores que outras combinações testadas.
[00114] O codificador de vídeo 200 pode particionar uma imagem recuperada a partir da memória de dados de vídeo 230 em uma série de CTUs, e encapsular uma ou mais CTUs em uma fatia. A unidade de seleção de modo 202 pode particionar uma CTU da imagem de acordo com uma estrutura de árvore, como a estrutura de QTBT ou a estrutura de árvore quaternária de HEVC descrita acima. Conforme descrito acima, o codificador de vídeo 200 pode formar uma ou mais CUs a partir de particionamento de uma CTU de acordo com a estrutura de árvore. Tal CU também pode ser referida, em geral, como “bloco de vídeo” ou “bloco”.
[00115] Em geral, a unidade de seleção de modo 202 também controla os componentes do mesmo (por exemplo, a unidade de estimação de movimento 222, a unidade de compensação de movimento 224 e a unidade de intrapredição 226) para gerar um bloco de predição para um bloco atual (por exemplo, uma CU atual, ou em HEVC, a porção de sobreposição de uma PU e uma TU). Para interpredição de um bloco atual, a unidade de estimação de movimento 222 pode realizar uma pesquisa de movimento para identificar um ou mais blocos de referência que correspondem proximamente em uma ou mais imagens de referência (por exemplo, uma ou mais imagens anteriormente codificadas armazenadas no DPB 218). Em particular, a unidade de estimação de movimento 222 pode calcular um valor representativo de como quão similar um bloco de referência potencial é ao bloco atual, por exemplo, de acordo com a soma de diferença absoluta (SAD), soma de diferenças quadradas (SSD), diferença absoluta média (MAD), diferenças quadradas médias (MSD) ou similares. A unidade de estimação de movimento 222 pode realizar, em geral, esses cálculos com o uso de diferenças de amostra por amostra entre o bloco atual e o bloco de referência sendo consideradas. A unidade de estimação de movimento 222 pode identificar um bloco de referência que tem um valor mais baixo resultante desses cálculos, indicando um bloco de referência que corresponde mais proximamente ao bloco atual.
[00116] A unidade de estimação de movimento 222 pode formar um ou mais vetores de movimento (MVs) que definem as posições dos blocos de referência nas imagens de referência relativas à posição do bloco atual em uma imagem atual. A unidade de estimação de movimento 222 pode, então, fornecer vetores de movimento para a unidade de compensação de movimento 224. Por exemplo, para interpredição unidirecional, a unidade de estimação de movimento 222 pode fornecer um único vetor de movimento, enquanto, para interpredição bidirecional, a unidade de estimação de movimento 222 pode fornecer dois vetores de movimento. A unidade de compensação de movimento 224 pode, então, gerar um bloco de predição com o uso dos vetores de movimento. Por exemplo, a unidade de compensação de movimento 224 pode recuperar dados do bloco de referência com o uso do vetor de movimento. Como outro exemplo, se o vetor de movimento tiver precisão de amostra fracionada, a unidade de compensação de movimento 224 pode interpolar valores para o bloco de predição de acordo com um ou mais filtros de interpolação. Além disso, para interpredição bidirecional, a unidade de compensação de movimento 224 pode recuperar dados para dois blocos de referência identificados pelos respectivos vetores de movimento e combinar os dados recuperados, por exemplo, através de média ou média ponderada de amostra por amostra.
[00117] Como outro exemplo, para intrapredição ou codificação de intrapredição, a unidade de intrapredição 226 pode gerar o bloco de predição a partir de amostras vizinhas ao bloco atual. Por exemplo, para modos direcionais, a unidade de intrapredição 226 pode, em geral, combinar matematicamente valores de amostras vizinhas e preencher esses valores calculados na direção definida através do bloco atual para produzir o bloco de predição. Como outro exemplo, para o modo de DC, a unidade de intrapredição 226 pode calcular uma média das amostras vizinhas ao bloco atual e gerar o bloco de predição para incluir essa média resultante para cada amostra do bloco de predição.
[00118] A unidade de seleção de modo 202 fornece o bloco de predição para a unidade de geração residual 204. A unidade de geração residual 204 recebe uma versão bruta e não codificada do bloco atual da memória de dados de vídeo 230 e o bloco de predição da unidade de seleção de modo 202. A unidade de geração residual 204 calcula diferenças de amostra por amostra entre o bloco atual e o bloco de predição. As diferenças de amostra por amostra resultantes definem um bloco residual para o bloco atual. Em alguns exemplos, a unidade de geração residual 204 também pode determinar diferenças entre valores de amostra no bloco residual para gerar um bloco residual com o uso de modulação de código de pulso diferencial residual (RDPCM). Em alguns exemplos, a unidade de geração residual 204 pode ser formada com o uso de um ou mais circuitos de subtrator que realizam subtração binária.
[00119] Em exemplos em que a unidade de seleção de modo 202 particiona CUs em PUs, cada PU pode ser associada a uma unidade de predição de luma e unidades de predição de croma correspondentes. O codificador de vídeo 200 e o decodificador de vídeo 300 podem suportar PUs 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 predição de uma da PU. Considerando que o tamanho de uma CU particular é 2Nx2N, o codificador de vídeo 200 pode suportar tamanhos de PU de 2Nx2N ou NxN para intrapredição, e tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN ou similar para interpredição. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para interpredição.
[00120] Em exemplos em que a unidade de seleção de modo não particionada adicionalmente uma CU em PUs, cada CU pode ser associada a um bloco de codificação de luma e blocos de codificação de croma correspondentes. Conforme indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação de luma da CU. O codificador de vídeo 200 e o decodificador de vídeo 120 podem suportar tamanhos de CU de 2Nx2N, 2NxN ou Nx2N.
[00121] Para outras técnicas de codificação de vídeo, como uma codificação de modo de cópia de intrabloco, uma codificação de modo afim e uma codificação de modo de modelo linear (LM), como alguns exemplos, a unidade de seleção de modo 202 através das respectivas unidades associadas às técnicas de codificação gera um bloco de predição para o bloco atual que é codificado. Em alguns exemplos, como codificação de modo de paleta, a unidade de seleção de modo 202 pode não gerar um bloco de predição, e, em vez de gerar elementos de sintaxe que indicam a maneira na qual reconstruir o bloco com base na paleta selecionada. Em tais modos, a unidade de seleção de modo 202 pode fornecer esses elementos de sintaxe para a unidade de codificação por entropia 220 a ser codificada.
[00122] Conforme descrito acima, a unidade de geração residual 204 recebe os dados de vídeo para o bloco atual o bloco de predição correspondente. A unidade de geração residual 204 gera, então, um bloco residual para o bloco atual. Para gerar o bloco residual, a unidade de geração residual 204 calcula diferenças de amostra por amostra entre o bloco de predição e o bloco atual.
[00123] A unidade de processamento de transformada 206 aplica uma ou mais transformadas ao bloco residual para gerar um bloco de coeficientes de transformada (referidos como “bloco de coeficiente de transformada” no presente documento). A unidade de processamento de transformada 206 pode aplicar várias transformadas a um bloco residual para formar o bloco de coeficiente de transformada. Por exemplo, a unidade de processamento de transformada 206 pode aplicar uma transformada de cosseno discreta (DCT), uma transformada direcional, uma transformada de Karhunen-Loeve (KLT) ou uma transformada conceitualmente similar a um bloco residual. Em alguns exemplos, a unidade de processamento de transformada 206 pode realizar múltiplas transformadas a um bloco residual, por exemplo, uma transformada primária e uma transformada secundária, como transformada rotacional. Em alguns exemplos, a unidade de processamento de transformada 206 não aplica transformadas a um bloco residual.
[00124] A unidade de quantização 208 pode quantizar os coeficientes de transformada em um bloco de coeficiente de transformada para produzir um bloco de coeficiente de transformada quantizado. A unidade de quantização 208 pode quantizar coeficientes de transformada de um bloco de coeficiente de transformada de acordo com um valor de parâmetro de quantização (QP) associado ao bloco atual. O codificador de vídeo 200 (por exemplo, através da unidade de seleção de modo 202) pode ajustar o grau de quantização aplicado aos blocos de coeficiente associados ao bloco atual ao ajustar o valor de QP associado a CU. A quantização pode introduzir perda de informações, e, assim, coeficientes de transformada quantizados podem ter precisão inferior aos coeficientes de transformada originais produzidos pela unidade de processamento de transformada
206.
[00125] A unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212 podem aplicar respectivamente quantização inversa e transformadas inversas a um bloco de coeficiente de transformada quantizado 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 reconstruído residual e em um bloco de predição gerado pela unidade de seleção de modo 202. Por exemplo, a unidade de reconstrução 214 pode adicionar amostras do bloco reconstruído residual a amostras correspondentes do bloco de predição gerado pela unidade de seleção de modo 202 para produzir o bloco reconstruído.
[00126] 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 saltadas em alguns exemplos.
[00127] O codificador de vídeo 200 armazena blocos reconstruídos no DPB 218. Por exemplo, em exemplos em que as operações da unidade de filtro 216 não são necessárias, a unidade de reconstrução 214 pode armazenar blocos reconstruídos no DPB 218. Em exemplos em que as operações da unidade de filtro 216 são necessárias, a unidade de filtro 216 pode armazenar os blocos reconstruídos filtrado no DPB 218. A unidade de estimação de movimento 222 e a unidade de compensação de movimento
224 podem recuperar uma imagem de referência do DPB 218, formada a partir dos blocos reconstruídos (e não potencialmente filtrados) para interpredizer blocos de imagens subsequentemente codificadas. Além disso, a unidade de intrapredição 226 pode usar blocos reconstruídos no DPB 218 de uma imagem atual para intrapredizer outros blocos na imagem atual.
[00128] Em geral, a unidade de codificação por entropia 220 pode codificar por entropia elementos de sintaxe recebidos de outros componentes funcionais do codificador de vídeo 200. Por exemplo, a unidade de codificação por entropia 220 pode codificar por entropia blocos de coeficiente de transformada quantizados da unidade de quantização 208. Como outro exemplo, a unidade de codificação por entropia 220 pode codificar por entropia elementos de sintaxe de predição (por exemplo, informações de movimento para interpredição ou informações de intramodo para intrapredição) da unidade de seleção de modo 202. A unidade de codificação por entropia 220 pode realizar uma ou mais operações de codificação por entropia nos elementos de sintaxe, que são outro exemplo de dados de vídeo para gerar dados codificados por entropia. Por exemplo, a unidade de codificação por entropia 220 pode realizar uma operação de codificação de comprimento variável adaptativa de 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 de contexto com base em sintaxe (SB AC), uma operação de codificação de Entropia de Particionamento de Intervalo de Probabilidade (PIPE), uma operação de codificação de
Exponential-Golomb ou outro tipo de codificação por entropia nos dados. Em alguns exemplos, a unidade de codificação por entropia 220 pode operar em modo com desvio em que elementos de sintaxe não são codificados por entropia.
[00129] O codificador de vídeo 200 pode emitir um fluxo de bits que inclui elementos de sintaxe codificados por entropia necessários para reconstruir blocos de uma fatia ou imagem. Em particular, a unidade de codificação por entropia 220 pode emitir o fluxo de bits.
[00130] 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 de luma e/ou blocos de codificação de 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 de luma e os blocos de codificação de croma são componentes de luma e croma de uma PU.
[00131] Em alguns exemplos, as operações realizadas em relação a um bloco de codificação de 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 uma imagem de referência para um bloco de codificação de luma não precisam ser repetidas para identificar um MV e uma imagem de referência para os blocos croma. De preferência, o MV para o bloco de codificação de luma pode ser escalado para determinar o MV para os blocos de croma, e a imagem de referência pode ser igual. Como outro exemplo, o processo de intrapredição pode ser o mesmo para os blocos de codificação de luma e os blocos de codificação de croma.
[00132] A Figura 6 é um diagrama de blocos que ilustra um decodificador de vídeo 300 exemplificativo que pode realizar as técnicas desta revelação. A Figura 6 é fornecida para propósitos de explicação e não é limitante das técnicas conforme amplamente exemplificado e descrito nesta revelação. Para propósitos de explicação, esta revelação descreve o decodificador de vídeo 300 que é descrito de acordo com as técnicas de JEM e HEVC. Entretanto, as técnicas desta revelação podem ser realizadas por dispositivos de codificação de vídeo que são configurados para outros padrões de codificação de vídeo.
[00133] No exemplo da Figura 6, o decodificador de vídeo 300 inclui a memória de armazenamento principal de imagem codificada (CPB) 320, a unidade de decodificação por entropia 302, a unidade de processamento de predição 304, a unidade de quantização inversa 306, a unidade de processamento de transformada inversa 308, a unidade de reconstrução 310, unidade de filtro 312 e o armazenamento principal de imagem decodificada (DPB) 314. Qualquer um e todos dentre a memória de CPB 320, a unidade de decodificação por entropia 302, a unidade de processamento de predição 304, a unidade de quantização inversa 306, a unidade de processamento de transformada inversa 308, a unidade de reconstrução 310, a unidade de filtro 312 e o DPB 314 pode ser implementado em um ou mais processadores ou em conjunto de circuitos de processamento. Além disso, o decodificador de vídeo 300 pode incluir processadores ou conjunto de circuitos de processamento adicionais ou alternativos para realizar essas e outras funções.
[00134] A unidade de processamento de predição 304 inclui a unidade de compensação de movimento 316 e a unidade de intrapredição 318. A unidade de processamento de precisão 304 pode incluir unidades adicionais para realizar predição de acordo com outros modos de predição. Como exemplos, a unidade de processamento de predição 304 pode incluir uma unidade de paleta, uma unidade de cópia de intrabloco (que pode formar parte da unidade de compensação de movimento 316), uma unidade afim, uma unidade de modelo linear (LM) ou similares. Em outros exemplos, o decodificador de vídeo 300 pode incluir mais, menos ou diferentes componentes funcionais.
[00135] A memória de CPB 320 pode armazenar dados de vídeo, como um fluxo de bits de vídeo codificado, a serem decodificados pelos componentes do decodificador de vídeo 300. Os dados de vídeo armazenados na memória de CPB 320 podem ser obtidos, por exemplo, a partir do meio legível por computador 110 (Figura 3). A memória de 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. Ademais, a memória de CPB 320 pode armazenar dados de vídeo diferentes de elementos de sintaxe de uma imagem codificada, como dados temporários que representam saídas das várias unidades do decodificador de vídeo 300. O DPB 314 armazena, em geral, imagens decodificadas, cujo decodificador de vídeo 300 pode emitir 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 CPB 320 e o DPB 314 podem ser formados por qualquer uma dentre uma variedade de dispositivos de memória, como memória de acesso aleatório dinâmico (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de CPB 320 e o DPB 314 podem ser fornecidos pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em vários exemplos, a memória de CPB 320 pode estar em chip com outros componentes do decodificador de vídeo 300 ou fora do chip em relação àqueles componentes.
[00136] Adicional ou alternativamente, em alguns exemplos, o decodificador de vídeo 300 pode recuperar dados de vídeo codificados da memória 120 (Figura 3). Ou seja, a memória 120 pode armazenar dados conforme discutido acima com a memória de CPB 320. De modo semelhante, a memória 120 pode armazenar instruções a serem executadas pelo decodificador de vídeo 300, quando alguma ou toda a funcionalidade do decodificador de vídeo 300 é implementada em software para serem executadas por conjunto de circuitos de processamento do decodificador de vídeo 300.
[00137] As várias unidades mostradas na Figura 6 são ilustradas para auxiliar no entendimento das operações realizadas pelo decodificador de vídeo 300. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação dos mesmos. Similar à Figura 5, os circuitos de função fixa se referem a circuitos que fornecem funcionalidade particular, e são predefinidos nas operações que podem ser realizadas. Os circuitos programáveis se referem a circuitos que podem ser programados para realizar várias tarefas, e fornecem funcionalidade flexível nas operações que podem ser realizadas. Por exemplo, os circuitos programados podem executar software ou firmware que fazem com que os circuitos programáveis operem da maneira definida por instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), mas os tipos de operações que os circuitos de função fixa realizam são, em geral, imutáveis. Em alguns exemplos, as uma ou mais dentre as unidades podem ser blocos de circuito distintos (de função fixa ou programáveis), e, em alguns exemplos, as uma ou mais unidades podem ser circuitos integrados.
[00138] 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 que executa em 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 ou executa.
[00139] A unidade de decodificação por entropia 302 pode receber dados de vídeo codificados do CPB e decodificar por entropia os dados de vídeo para reproduzir elementos de sintaxe. A unidade de processamento de predição 304, a unidade de quantização inversa 306, a unidade de processamento de transformada inversa 308, a unidade de reconstrução 310 e a unidade de filtro 312 podem gerar dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[00140] Em geral, o decodificador de vídeo 300 reconstrói uma imagem em uma base de bloco por bloco. O decodificador de vídeo 300 pode realizar individualmente uma operação de reconstrução em cada bloco (em que o bloco que é reconstruído atualmente, isto é, decodificado, pode ser referido como um “bloco atual”).
[00141] A unidade de decodificação por entropia 302 pode decodificar por entropia elementos de sintaxe que definem coeficientes de transformada quantizados de um bloco de coeficiente de transformada quantizado bem como informações de transformada, como um parâmetro de quantização (QP) e/ou indicação (ou indicações) de modo de transformada. A unidade de quantização inversa 306 pode usar o QP associada ao bloco de coeficiente de transformada quantizado para determinar um grau de quantização e, de modo semelhante, um grau de quantização inversa para a unidade de quantização inversa 306 para aplicar. A unidade de quantização inversa 306 pode, por exemplo, realizar uma operação de deslocamento para a esquerda de bit a bit para quantizar inversamente os coeficientes de transformada quantizados. A unidade de quantização inversa 306 pode, desse modo, formar um bloco de coeficiente de transformada incluindo coeficientes de transformada.
[00142] Após a unidade de quantização inversa 306 formar o bloco de coeficiente de transformada, a unidade de processamento de transformada inversa 308 pode aplicar uma ou mais transformadas inversas ao bloco de coeficiente de transformada para gerar um bloco residual associado ao bloco atual. Por exemplo, a unidade de processamento de transformada inversa 308 pode aplicar uma DCT inversa, uma transformada de número inteiro inversa, uma transformada de Karhunen-Loeve (KLT) inversa, uma transformada rotacional inversa, uma transformada direcional inversa ou outra transformada inversa ao bloco de coeficiente.
[00143] Adicionalmente, a unidade de processamento de predição 304 gera um bloco de predição de acordo com elementos de sintaxe de informações de predição que foram decodificados por entropia pela unidade de decodificação por entropia 302. Por exemplo, se os elementos de sintaxe de informações de predição indicarem que o bloco atual é interpredito, a unidade de compensação de movimento 316 pode gerar o bloco de predição. Nesse caso, os elementos de sintaxe de informações de predição podem indicar uma imagem de referência no DPB 314 a partir da qual recupera um bloco de referência bem como um vetor de movimento que identifica uma localização do bloco de referência na imagem de referência relativa à localização do bloco atual na imagem atual. A unidade de compensação de movimento 316 pode realizar, em geral, o processo de interpredição de uma maneira que seja substancialmente similar àquele descrito em relação à unidade de compensação de movimento 224 (Figura 5).
[00144] Como outro exemplo, se os elementos de sintaxe de informações de predição indicarem que o bloco atual é intrapredito, a unidade de intrapredição 318 pode gerar o bloco de predição de acordo com um modo de intrapredição indicado pelos elementos de sintaxe de informações de predição. Novamente, a unidade de intrapredição 318 pode realizar, em geral, o processo de intrapredição de uma maneira que seja substancialmente similar àquele descrito em relação à unidade de intrapredição 226 (Figura 5). A unidade de intrapredição 318 pode recuperar dados de amostras vizinhas ao bloco atual do DPB 314.
[00145] A unidade de reconstrução 310 pode reconstruir o bloco atual com o uso do bloco de predição e do bloco residual. Por exemplo, a unidade de reconstrução 310 pode adicionar amostras do bloco residual a amostras correspondentes do bloco de predição para reconstruir o bloco atual.
[00146] 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 realizadas necessariamente em todos os exemplos.
[00147] O decodificador de vídeo 300 pode armazenar os blocos reconstruídos no DPB 314. Conforme discutido acima, o DPB 314 pode armazenar informações de referência, como amostras de uma imagem atual para intrapredição e imagens anteriormente decodificadas para compensação de movimento subsequente na unidade de processamento de predição 304. Além disso, o decodificador de vídeo 300 pode emitir imagens decodificadas do DPB para apresentação subsequente em um dispositivo de exibição, como o dispositivo de exibição 118 da Figura 3.
[00148] A Figura 7 é um fluxograma que ilustra um método exemplificativo para codificar um bloco atual. O bloco atual pode compreender uma CU atual. Embora sejam descritos em relação a um codificador de vídeo 200 (Figuras 3 e 5), deve ser entendido que outros dispositivos podem ser configurados para realizar um método similar àquele da Figura 7.
[00149] Nesse exemplo, o codificador de vídeo 200 predizer inicialmente o bloco atual (350). Por exemplo, o codificador de vídeo 200 pode formar um bloco de predição para o bloco atual. 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 e não codificado e o bloco de predição para o bloco atual. O codificador de vídeo 200 pode, então, transformar e quantizar coeficientes do bloco residual (354). A seguir, o codificador de vídeo 200 pode varrer os coeficientes de transformada quantizados do bloco residual (356). Durante a varredura ou após a varredura, o codificador de vídeo 200 pode codificar por entropia os coeficientes (358). Por exemplo, o codificador de vídeo 200 pode codificar 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).
[00150] A Figura 8 é um fluxograma que ilustra um método exemplificativo para decodificar um bloco atual de dados de vídeo. O bloco atual pode compreender uma CU atual. Embora sejam descritos em relação a um decodificador de vídeo 300 (Figuras 16 e 19), deve ser entendido que outros dispositivos podem ser configurados para realizar um método similar àquele da Figura 8.
[00151] O decodificador de vídeo 300 pode receber dados codificados por entropia para o bloco atual, como informações de predição codificadas por entropia e dados codificados por entropia para coeficientes de um bloco residual correspondente ao bloco atual (370). O decodificador de vídeo 300 pode decodificar por entropia os dados codificados por entropia para determinar informações de predição para o bloco atual e reproduzir coeficientes do bloco residual (372). O decodificador de vídeo 300 pode predizer o bloco atual (374), por exemplo, com o uso de um modo de intra ou interpredição conforme indicado pelas informações de predição para o bloco atual para calcular um bloco de predição para o bloco atual. O decodificador de vídeo 300 pode, então, varrer inversamente os coeficientes reproduzidos (376) para criar um bloco de coeficientes de transformada quantizados. O decodificador de vídeo 300 pode, então, quantizar inversamente e transformar inversamente os coeficientes para produzir um bloco residual (378). O decodificador de vídeo 300 pode decodificar finalmente o bloco atual ao combinar o bloco de predição e o bloco residual (380).
[00152] A Figura 9 é um fluxograma que ilustra um método exemplificativo para gerar uma lista de candidatos de preditor de vetor de movimento de acordo com uma ou mais técnicas desta revelação. O bloco atual pode compreender uma CU atual. Embora sejam descritos em relação a um decodificador de vídeo 300 (Figuras 16 e 19), deve ser entendido que outros dispositivos podem ser configurados para realizar um método similar àquele da Figura 9, como o codificador de vídeo 200 (Figuras 3 e 5).
[00153] Conforme discutido acima, um codificador de vídeo, como o decodificador de vídeo 300, pode construir uma lista de candidatos de vetor de movimento para um bloco atual de dados de vídeo. O codificador de vídeo pode obter candidatos para a lista de candidatos de vetor de movimento a partir de uma variedade de fontes. Algumas fontes exemplificativas incluem, mas sem limitação a, candidatos espaciais, candidatos de preditor de vetor de movimento temporal (TMVP), candidatos de predição de vetor de movimento com base em histórico (HMVP) e candidatos em pares. Para gerar a lista de candidatos de vetor de movimento, o codificador de vídeo pode avaliar candidatos das fontes até que uma quantidade desejada de candidatos seja incluída na lista. Conforme mostrado na Figura 9, o decodificador de vídeo 300 pode determinar um número máximo de candidatos (MAX) para incluir em uma lista de vetores de movimento (MV) para um bloco atual (902). O valor de MAX pode ser fixo, ou pode ser variável com base em um ou mais parâmetros.
[00154] Para avaliar um candidato particular para inclusão na lista de candidatos de vetor de movimento, o codificador de vídeo pode determinar se o candidato particular está disponível e/ou se um valor do candidato particular é o mesmo que um candidato já incluído na lista de candidatos de vetor de movimento. O codificador de vídeo pode avaliar candidatos das fontes em uma ordem particular.
[00155] Conforme discutido acima e de acordo com uma ou mais técnicas desta revelação, um decodificador de vídeo, como o decodificador de vídeo 300, pode gerar listas de candidatos de vetor de movimento para blocos com o uso de diferentes fontes e/ou diferentes restrições com base na possibilidade de um bloco ser codificado com o uso de cópia de intrabloco (IBC) ou intercodificação. O decodificador de vídeo 30 pode determinar se o bloco atual é codificado com o uso de IBC (902). Um elemento responsivo à determinação de que o bloco atual é codificado com o uso de IBC (ramificação “Sim” de 902), o decodificador de vídeo 300 pode avaliar um ou mais candidatos espaciais para inclusão na lista de candidatos de MV (906). Por exemplo, o decodificador de vídeo 300 pode avaliar candidatos espaciais A1, B1, B0 e A0 conforme discutido acima com referência às Figuras 1A e 1B.
[00156] Conforme discutido acima e de acordo com uma ou mais técnicas desta revelação, o decodificador de vídeo 300 pode permitir que um preditor de vetor de movimento com base em histórico (HMVP) seja o último candidato incluído na lista de candidatos de MV (por exemplo, o candidato final adicionado à lista de candidatos de MV, que pode ter o valor de índice mais alto). Por exemplo, conforme mostrado na Figura 9, independentemente da possibilidade de o número de candidatos incluído na lista de MVs ser menor que ou igual ao número máximo de candidatos a ser incluído na lista de candidatos de MV menos um (por exemplo, MAX- l)(ambas as ramificações de 908), o decodificador de vídeo 300 pode avaliar um candidato de HMVP para inclusão na lista de candidatos de MV (910). Conforme discutido acima, o decodificador de vídeo 300 pode obter o candidato de HMVP a partir de uma lista de MVs decodificada no passado (por exemplo, o decodificador de vídeo 300 pode manter uma tabela ou lista de MVs durante ao processo de decodificação).
[00157] Um elemento responsivo à determinação de que o bloco atual não é codificado com o uso de IBC (por exemplo, é codificado com o uso de interpredição) (ramificação “Não” de 902), o decodificador de vídeo 300 pode avaliar um ou mais candidatos espaciais para inclusão na lista de candidatos de MV (912). Por exemplo, o decodificador de vídeo 300 pode avaliar candidatos espaciais A1, B1, B0 e A0 conforme discutido acima com referência às Figuras 1A e 1B.
[00158] Em contrapartida a blocos codificados com o uso de IBC, o decodificador de vídeo 300 pode não permitir que um HMVP seja o último candidato incluído na lista de candidatos de MV para blocos codificados com o uso de intercodificação. Por exemplo, conforme mostrado na Figura 9, o decodificador de vídeo 300 pode avaliar um candidato de HMVP para inclusão na lista de candidatos de MV (916) responsivo à determinação de que o número de candidatos incluído na lista de MVs não é maior que ou igual ao número máximo de candidatos a ser incluído na lista de candidatos de MV menos um (por exemplo, MAX- 1) (ramificação “Não” de 914). Entretanto, um elemento responsivo à determinação de que o número de candidatos incluído na lista de MVs é maior que ou igual ao número máximo de candidatos a ser incluído na lista de candidatos de MV menos um (por exemplo, MAX- 1) (ramificação “Sim” de 914), o decodificador de vídeo 300 pode, em vez disso,
avaliar um candidato em par para inclusão na lista de candidatos de MV (918).
[00159] O decodificador de vídeo 300 pode utilizar a lista de candidatos de MV para reconstruir amostras do bloco atual. Por exemplo, o decodificador de vídeo 300 pode selecionar, a partir da lista de candidatos de MV, um MV candidato. Em alguns exemplos, o decodificador de vídeo 300 pode selecionar o MV candidato com base em um ou mais elementos de sintaxe que indicam um valor de índice na lista de candidatos de MV. O decodificador de vídeo 300 pode gerar um MV para o bloco atual com base no preditor de MV candidato selecionado. Por exemplo, o decodificador de vídeo 300 pode decodificar um ou mais elementos de sintaxe que representam uma diferença entre um valor do preditor de MV candidato selecionado e o MV para o bloco atual (por exemplo, e adiciona a diferença ao valor do preditor de MV candidato selecionado para obter o MV para o bloco atual). O MV para o bloco atual pode identificar um bloco de preditor para o bloco atual. Quando o bloco atual é codificado com o uso de IBC, o bloco de preditor pode estar na mesma imagem que o bloco atual. Em contrapartida, quando o bloco atual é codificado com o uso de interpredição, o bloco de preditor pode estar em uma imagem diferente do bloco atual. O decodificador de vídeo 300 pode obter dados residuais e adicionar os dados residuais ao bloco de preditor para reconstruir amostras do bloco atual (por exemplo, 372-380 da Figura 8). Observa-se que o codificador de vídeo 200 pode realizar operações similares (por exemplo, como parte de um ciclo de reconstrução.
[00160] Os seguintes exemplos enumerados podem ilustrar um ou mais aspectos desta revelação:
[00161] Exemplo 1. Um método de codificação de dados de vídeo, em que o método compreende: ser responsivo à determinação para predizer um bloco atual de uma imagem atual de dados de vídeo com o uso de cópia de intrabloco (IBC), gerando uma lista de candidatos de vetor de movimento (MV) para o bloco atual, em que a geração da lista de candidatos de MV compreende: determinar um ou mais candidatos de predição de vetor de movimento com base em histórico (HMVP); e incluir, como um último candidato na lista de candidatos de MV, um candidato de HMVP dentre os um ou mais candidatos de HMVP; selecionar, a partir da lista de candidatos de MV, um candidato de MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[00162] Exemplo 2. O método de acordo com o exemplo 1, em que o bloco atual é um primeiro bloco da imagem atual, em que o método compreende adicionalmente: ser responsivo à determinação para prever um segundo bloco da imagem atual de dados de vídeo com o uso de interpredição, gerando uma lista de candidatos de MV para o segundo bloco, em que a geração da lista de candidatos de MV para o segundo bloco compreende: determinar um número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco; e ser responsivo à determinação de que uma quantidade de candidatos na lista de candidatos de MV para o segundo bloco é igual ao número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco menos um, parar de incluir candidatos de HMVP adicionais para o segundo bloco na lista de candidatos de MV para o segundo bloco de modo que o último candidato na lista de candidatos de MV para o segundo bloco não seja um candidato de HMVP; selecionar, a partir de uma lista de candidatos de MV para o segundo bloco, um candidato de MV particular que identifica um bloco de preditor para o segundo bloco em uma imagem dos dados de vídeo que não é igual à imagem atual; e reconstruir pixels do segundo bloco com base em pixels do bloco de preditor para o segundo bloco.
[00163] Exemplo 3. O método de acordo com o exemplo 2, em que a geração da lista de candidatos de MV para o primeiro bloco compreende não avaliar quaisquer candidatos em pares para inclusão na lista de candidatos de MV para o primeiro bloco.
[00164] Exemplo 4. O método de acordo com o exemplo 3, em que a geração da lista de candidatos de MV para o segundo bloco compreende avaliar um ou mais candidatos em pares para inclusão na lista de candidatos de MV para o segundo bloco.
[00165] Exemplo 5. O método de acordo com o exemplo 4, em que a geração da lista de candidatos de MV para o primeiro bloco compreende adicionalmente: avaliar um candidato B2 vizinho acima à esquerda para inclusão na lista de candidatos de MV para o primeiro bloco onde um número atual de candidatos incluído na lista de candidatos de MV para o primeiro bloco é maior que ou igual a quatro.
[00166] Exemplo 6. O método, de acordo com o exemplo 4 ou 5, em que a lista de candidatos de MV para o primeiro bloco compreende uma lista de mesclagem/salto de
[00167] Exemplo 7. Um dispositivo para codificar dados de vídeo, em que o dispositivo compreende: uma memória configurada para armazenar os dados de vídeo; e um ou mais processadores que são implementados em conjunto de circuitos e configurados para: gerar, responsivo à determinação para predizer um bloco atual de uma imagem atual de dados de vídeo com o uso de cópia de intrabloco (IBC), uma lista de candidatos de vetor de movimento (MV) para o bloco atual, em que, para gerar a lista de candidatos de MV, os um ou mais processadores são configurados para: determinar um ou mais candidatos de predição de vetor de movimento com base em histórico (HMVP); e incluir, como um último candidato na lista de candidatos de MV, um candidato de HMVP dentre os um ou mais candidatos de HMVP; selecionar, a partir da lista de candidatos de MV, um candidato de MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[00168] Exemplo 8. O dispositivo, de acordo com o exemplo 7, em que o bloco atual é um primeiro bloco da imagem atual, e em que os um ou mais processadores são configurados adicionalmente para: gerar, responsivo à determinação para predizer um segundo bloco da imagem atual de dados de vídeo com o uso de interpredição, uma lista de candidatos de MV para o segundo bloco, em que, para gerar a lista de candidatos de MV para o segundo bloco, os um ou mais processadores são configurados para: determinar um número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco; e parar, responsivo à determinação de que uma quantidade de candidatos na lista de candidatos de MV para o segundo bloco é igual ao número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco menos um, de incluir candidatos de HMVP adicionais para o segundo bloco na lista de candidatos de MV para o segundo bloco de modo que o último candidato na lista de candidatos de MV para o segundo bloco não seja um candidato de HMVP; selecionar, a partir da lista de candidatos de MV para o segundo bloco, um candidato de MV particular que identifica um bloco de preditor para o segundo bloco em uma imagem dos dados de vídeo que não é igual à imagem atual; e reconstruir pixels do segundo bloco com base em pixels do bloco de preditor para o segundo bloco.
[00169] Exemplo 9. O dispositivo, de acordo com o exemplo 8, em que, para gerar a lista de candidatos de MV para o primeiro bloco, os um ou mais processadores são configurados para não avaliar quaisquer candidatos em pares para inclusão na lista de candidatos de MV para o primeiro bloco.
[00170] Exemplo 10. O dispositivo, de acordo com o exemplo 9, em que, para gerar a lista de candidatos de MV para o segundo bloco, os um ou mais processadores são configurados para avaliar um ou mais candidatos em pares para inclusão na lista de candidatos de MV para o segundo bloco.
[00171] Exemplo 11. O dispositivo, de acordo com o exemplo 10, em que, para gerar a lista de candidatos de
MV para o primeiro bloco, os um ou mais processadores são configurados para: avaliar um candidato B2 para inclusão na lista de candidatos de MV para o primeiro bloco onde um número atual de candidatos incluído na lista de candidatos de MV para o primeiro bloco é maior que ou igual a quatro.
[00172] Exemplo 12. O dispositivo, de acordo com o exemplo 10, em que a lista de candidatos de MV para o primeiro bloco compreende uma lista de mesclagem/salto de IBC.
[00173] Exemplo 13. O dispositivo, de acordo com qualquer um dos exemplos 7-12, em que o codificador de vídeo compreende um decodificador de vídeo.
[00174] Exemplo 14. O dispositivo, de acordo com o exemplo 13, que compreende adicionalmente um visor configurado para exibir dados de vídeo decodificados.
[00175] Exemplo 15. O dispositivo, de acordo com o exemplo 13, em que o dispositivo compreende um ou mais dentre uma câmera, um computador, um dispositivo móvel, um dispositivo de receptor de difusão ou um decodificador de sinal.
[00176] Exemplo 16. O dispositivo, de acordo com qualquer um dos exemplos 7-15, em que o dispositivo compreende um codificador de vídeo.
[00177] Exemplo 17. Um meio de armazenamento legível por computador que armazena instruções que, quando executadas, fazem com que um ou mais processadores de um codificador de vídeo: gerem, responsivo à determinação para predizer a bloco atual de uma imagem atual de dados de vídeo com o uso de cópia de intrabloco (IBC), uma lista de candidatos de vetor de movimento (MV) para o bloco atual,
em que as instruções que fazem com que os um ou mais processadores gerem uma lista de candidatos de MV compreendem instruções que fazem com que os um ou mais processadores: determinem um ou mais candidatos de predição de vetor de movimento com base em histórico (HMVP); e incluam, como um último candidato na lista de candidatos de MV, um candidato de HMVP dentre os um ou mais candidatos de HMVP; selecionem, a partir da lista de candidatos de MV, um candidato de MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[00178] Exemplo 18. O meio de armazenamento legível por computador, de acordo com o exemplo 17, em que o bloco atual é um primeiro bloco da imagem atual, e compreende adicionalmente instruções que fazem com que os um ou mais processadores: gerem, responsivo à determinação para predizer um segundo bloco da imagem atual de dados de vídeo com o uso de interpredição, uma lista de candidatos de MV para o segundo bloco, em que as instruções que fazem com que os um ou mais processadores gerem a lista de candidatos de MV para o segundo bloco compreendem instruções que fazem com que os um ou mais processadores: determinem um número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco; e parar, responsivo à determinação de que uma quantidade de candidatos na lista de candidatos de MV para o segundo bloco é igual ao número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco menos um, de incluir candidatos de HMVP adicionais para o segundo bloco na lista de candidatos de MV para o segundo bloco de modo que o último candidato na lista de candidatos de MV para o segundo bloco não seja um candidato de HMVP; selecionem, a partir da lista de candidatos de MV para o segundo bloco, um candidato de MV particular que identifica um bloco de preditor para o segundo bloco em uma imagem dos dados de vídeo que não é igual à imagem atual; e reconstruam pixels do segundo bloco com base em pixels do bloco de preditor para o segundo bloco.
[00179] Exemplo 19. O meio de armazenamento legível por computador, de acordo com o exemplo 18, em que as instruções que fazem com que os um ou mais processadores gerem a lista de candidatos de MV para o primeiro bloco compreendem instruções que fazem com que os um ou mais processadores não avaliem quaisquer candidatos em pares para inclusão na lista de candidatos de MV para o primeiro bloco.
[00180] Exemplo 20. O meio de armazenamento legível por computador de acordo com o exemplo 19, em que as instruções que fazem com que os um ou mais processadores gerem a lista de candidatos de MV para o segundo bloco compreendem instruções que fazem com que os um ou mais processadores avaliem um ou mais candidatos em pares para inclusão na lista de candidatos de MV para o segundo bloco.
[00181] Exemplo 21. Um método de codificação de dados de vídeo, em que o método compreende qualquer combinação das técnicas descritas nesta revelação.
[00182] Exemplo 22. Um método de codificação de dados de vídeo, em que o método compreende: gerar uma lista de candidatos de vetor de movimento (MV) para um bloco atual de uma imagem atual de dados de vídeo, em que a geração da lista de candidatos de MV compreende: determinar um tamanho máximo da lista de candidatos de MV; e ser responsivo à determinação de que um número atual de candidatos incluído na lista de candidatos de MV é menor que o tamanho máximo da lista de candidatos de MV, avaliar um candidato B2 para inclusão na lista de candidatos de MV independentemente do número atual de candidatos incluído na lista de candidatos de MV; selecionar, a partir da lista de candidatos de MV, um MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[00183] Exemplo 23. O método, de acordo com o exemplo 22, em que o candidato B2 é um candidato acima à esquerda.
[00184] Exemplo 24. O método, de acordo com qualquer um dos exemplos 22-23, em que a lista de candidatos de MV compreende uma lista de mesclagem/salto de cópia de intrabloco (IBC).
[00185] Exemplo 25. O método, de acordo com qualquer um dos exemplos 23-24, em que a avaliação do candidato B2 compreende determinar se o candidato B2 é válido, em que o método compreende adicionalmente: ser responsivo à determinação de que o candidato B2 é válido, adicionar o candidato B2 à lista de candidatos de MV.
[00186] Exemplo 26. O método, de acordo com qualquer um dos exemplos 23-25, em que a avaliação do candidato B2 compreende determinar se o candidato B2 é diferente de outros candidatos já incluídos na lista de candidatos de MV, em que o método compreende adicionalmente: ser responsivo à determinação de que o candidato B2 é diferente dos outros candidatos já incluídos na lista de candidatos de MV, adicionar o candidato B2 à lista de candidatos de MV.
[00187] Exemplo 27. Um método de codificação de dados de vídeo, em que o método compreende: gerar uma lista de candidatos de vetor de movimento (MV) para um bloco atual de uma imagem atual de dados de vídeo, em que a geração da lista de candidatos de MV compreende: determinar um ou mais candidatos de predição de vetor de movimento com base em histórico (HMVP); e incluir, como um último candidato na lista de candidatos de MV, um candidato de HMVP dentre os um ou mais candidatos de HMVP; selecionar, a partir da lista de candidatos de MV, um MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[00188] Exemplo 28. O método, de acordo com qualquer um dos exemplos 22-27, em que a lista de candidatos de MV compreende uma lista de mesclagem/salto de cópia de intrabloco (IBC).
[00189] Exemplo 29. Um método de codificação de dados de vídeo, em, que o método compreende: gerar uma lista de candidatos de vetor de movimento (MV) para um bloco atual de uma imagem atual de dados de vídeo, em que a geração da lista de candidatos de MV compreende avaliar, para inclusão na lista de candidatos de MV, um ou mais candidatos de MV, em que os um ou mais candidatos de MV não incluem quaisquer candidatos em pares; selecionar, a partir da lista de candidatos de MV, um MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[00190] Exemplo 30. O método, de acordo com qualquer um dos exemplos 22-29, em que a lista de candidatos de MV compreende uma lista de mesclagem/salto de cópia de intrabloco (IBC).
[00191] Exemplo 31. Um método de codificação de dados de vídeo, em que o método compreende: gerar uma lista de candidatos de vetor de movimento (MV) para um bloco atual de uma imagem atual de dados de vídeo, em que a geração da lista de candidatos de MV compreende: determinar uma pluralidade de candidatos em pares; e incluir, na lista de candidatos de MV, pelo menos dois dentre a pluralidade de candidatos em pares; selecionar, a partir da lista de candidatos de MV, um MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[00192] Exemplo 32. O método, de acordo com o exemplo 31, em que: a determinação da pluralidade de candidatos em pares compreende gerar, com base em candidatos incluídos na lista de candidatos de MV, candidatos em pares da pluralidade de candidatos em pares; e a inclusão dos pelo menos dois candidatos em pares compreende incluir, na lista de candidatos de MV, candidatos em pares da pluralidade de candidatos em pares até que um número de candidatos incluído na lista de candidatos de MV atinja um tamanho máximo.
[00193] Exemplo 33. O método, de acordo com qualquer um dos exemplos 31-32, em que a determinação da pluralidade de candidatos em pares compreende gerar, com base em candidatos incluídos na lista de candidatos de MV diferentes dos candidatos de predição de vetor de movimento com base em histórico (HMVP), candidatos em pares da pluralidade de candidatos em pares.
[00194] Exemplo 34. Um método de codificação de dados de vídeo, em que o método compreende: gerar uma lista de candidatos de vetor de movimento (MV) para um bloco atual de uma imagem atual de dados de vídeo, em que a geração da lista de candidatos de MV compreende: determinar uma pluralidade de candidatos de MV; e incluir, na lista de candidatos de MV, pelo menos um candidato de MV da pluralidade de candidatos de MV sem avaliar se o pelo menos um candidato de MV for diferente de candidatos de MV já incluídos na lista de candidatos de MV; selecionar, a partir da lista de candidatos de MV, um MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[00195] Exemplo 35. O método de acordo com o exemplo 34, que compreende adicionalmente: ser responsivo à determinação de que o pelo menos um candidato de MV é derivado de um bloco codificado com o uso de cópia de intrabloco (IBC), determinando incluir o pelo menos um candidato de MV da pluralidade de candidatos de MV no candidato de MV sem avaliar se o pelo menos um candidato de MV é diferente de candidatos de MV já incluídos na lista de candidatos de MV.
[00196] Exemplo 36. Um método de codificação de dados de vídeo, em que o método compreende: gerar uma lista de candidatos de vetor de movimento (MV) para um bloco atual de uma imagem atual de dados de vídeo, em que a geração da lista de candidatos de MV compreende avaliar um respectivo candidato de MV de uma pluralidade de candidatos de MV para inclusão na lista de candidatos de MV com base em vetores de movimento do respectivo candidato de MV; selecionar, a partir da lista de candidatos de MV, um MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[00197] Exemplo 37. O método, de acordo com o exemplo 36, em que a avaliação dos respectivos candidatos de MV com base nos vetores de movimento do respectivo candidato de MV compreende remover o respectivo candidato de MV com base em uma comparação entre os vetores de movimento do respectivo candidato de MV e vetores de movimento de candidatos incluídos na lista de candidatos de MV.
[00198] Exemplo 38. O método, de acordo com qualquer um dos exemplos 36-37, em que a remoção do respectivo candidato de MV com base em uma comparação entre os vetores de movimento do respectivo candidato de MV e vetores de movimento de candidatos incluído na lista de candidatos de MV compreende: determinar se os vetores de movimento do respectivo candidato de MV são diferentes de vetores de movimento de candidatos incluídos na lista de candidatos de MV; e ser responsiva à determinação de que os vetores de movimento do respectivo candidato de MV são diferentes de vetores de movimento de candidatos incluídos na lista de candidatos de MV, incluindo o respectivo candidato de MV na lista de candidatos de MV.
[00199] Exemplo 39. O método, de acordo com qualquer um dos exemplos 36-38, em que a remoção do respectivo candidato de MV com base em uma comparação entre os vetores de movimento do respectivo candidato de MV e vetores de movimento de candidatos incluídos na lista de candidatos de MV compreende remover o respectivo candidato de MV apenas com base em uma comparação entre os vetores de movimento do respectivo candidato de MV e vetores de movimento de candidatos incluídos na lista de candidatos de MV.
[00200] Exemplo 40. O método, de acordo com qualquer um dos exemplos 36-39, em que a remoção do respectivo candidato de MV com base em uma comparação entre os vetores de movimento do respectivo candidato de MV e vetores de movimento de candidatos incluídos na lista de candidatos de MV compreende: não remover o respectivo candidato de MV com base em uma comparação entre índices de referência do respectivo candidato de MV e índices de referência de candidatos incluídos na lista de candidatos de MV.
[00201] Exemplo 41. O método, de acordo com qualquer um dos exemplos 32-40, em que a lista de candidatos de MV compreende uma dentre: uma lista de mesclagem/salto de cópia de intrabloco (IBC) ou uma lista de predições de vetor de movimento avançado (AMVP).
[00202] Exemplo 42. Um método de codificação de dados de vídeo, em que o método compreende: obter um vetor de movimento para um bloco atual de uma imagem atual de dados de vídeo, em que o vetor de movimento identifica um bloco de preditor na imagem atual; arredondar o vetor de movimento para obter um vetor de movimento de croma; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
[00203] Exemplo 43. O método, de acordo com o exemplo 42, em que o vetor de movimento para obter um vetor de movimento de croma compreende arredondar o vetor de movimento de acordo com as seguintes equações: MVi>0 em que MVi representa o vetor de movimento, MVChormai representa o vetor de movimento de croma, i é igual a x ou y (os componentes de MV na direção horizontal e na direção vertical), e shifti representa um valor de deslocamento.
[00204] Exemplo 44. O método, de acordo com o exemplo 43, em que o valor de deslocamento é determinado com base em um ou mais dentre precisão de bit de MV e formato de croma.
[00205] Exemplo 45. O método, de acordo com qualquer um dos exemplos 43-44, em que o valor de deslocamento é predeterminado.
[00206] Exemplo 46. O método, de acordo com qualquer um dos exemplos 21-45, em que a codificação compreende decodificar.
[00207] Exemplo 47. O método, de acordo com qualquer um dos exemplos 21-45, em que a codificação compreende codificar.
[00208] Exemplo 48. Um dispositivo para codificar dados de vídeo, em que o dispositivo compreende um ou mais meios para realizar o método de acordo com qualquer combinação dos exemplos 21-45.
[00209] Exemplo 49. O dispositivo, de acordo com o exemplo 48, em que os um ou mais meios compreendem um ou mais processadores implementados em conjunto de circuitos
[00210] Exemplo 50. O dispositivo, de acordo com qualquer combinação dos exemplos 48 e 49, que compreende adicionalmente uma memória para armazenar os dados de vídeo.
[00211] Exemplo 51. O dispositivo, de acordo com qualquer combinação dos exemplos 48-50, que compreende adicionalmente um visor configurado para exibir dados de vídeo decodificados.
[00212] Exemplo 52. O dispositivo, de acordo com qualquer combinação dos exemplos 48-51, em que o dispositivo compreende um ou mais dentre uma câmera, um computador, um dispositivo móvel, um dispositivo de receptor de difusão ou um decodificador de sinal.
[00213] Exemplo 53. O dispositivo, de acordo com qualquer combinação dos exemplos 48-52, em que o dispositivo compreende um decodificador de vídeo.
[00214] Exemplo 54. O dispositivo, de acordo com qualquer combinação dos exemplos 48-53, em que o dispositivo compreende um codificador de vídeo.
[00215] Exemplo 55. Um meio de armazenamento legível por computador que tem armazenado no mesmo instruções que, quando executadas, fazem com que um ou mais processadores realizem o método, de acordo com qualquer combinação dos exemplos 1-55.
[00216] Exemplo 56. Qualquer combinação dos exemplos 1-55.
[00217] Deve ser reconhecido que, dependendo do exemplo, certos atos ou eventos das técnicas descritas no presente documento podem ser realizados em uma sequência diferente, podem ser adicionados, mesclados ou deixados de fora (por exemplo, nem todos os atos ou eventos descritos para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, através de processamento multiencadeado, processamento de interrupção ou múltiplos processadores, em vez de sequencialmente.
[00218] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento com base em hardware. Os meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível, como meios de armazenamento de dados, ou meios de comunicação incluindo qualquer meio que facilita a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa maneira, os meios legíveis por computador podem corresponder, em geral, a (1) meios de armazenamento legíveis por computador tangíveis que não são transitórios ou (2) um meio de comunicação, como um sinal ou uma onda portadora. Os meios de armazenamento de dados podem ser quaisquer meios disponíveis que podem ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio legível por computador.
[00219] A título de exemplo, e não como limitação, tais meios de armazenamento legível por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que pode ser usado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que pode ser acessado por um computador. Ademais, qualquer conexão é chamada apropriadamente de meio legível por computador. Por exemplo, se as instruções forem transmitidas a partir de uma página da web, servidor ou outra fonte remota com o uso de um cabo coaxial, cabo de fibra ótica, par torcido, linha de assinante digital (DSL), ou tecnologias sem fio, como infravermelha, rádio e micro-onda, então, o cabo coaxial, cabo de fibra ótica, par torcido, DSL, ou tecnologias sem fio, como infravermelha, rádio e micro-onda são incluídas na definição de meio. Deve ser entendido, entretanto, que os meios legíveis por computador e os meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas, em vez disso, são direcionados para meios de armazenamento tangíveis e não transitórios. O disco magnético e o disco ótico, conforme usado no presente documento, incluem CD,
disco a laser, disco ótico, disco versátil digital (DVD), disquete e disco to tipo Blu-ray em que os discos magnéticos reproduzem usualmente dados magneticamente enquanto os discos óticos reproduzem oticamente dados com lasers. As combinações do supracitado são incluídas também no escopo de meios legíveis por computador.
[00220] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de propósito geral, circuitos integrados específicos de aplicação (ASICs), arranjos de portas programáveis em campo (FPGAs) ou outro conjunto de circuitos lógico discreto ou integrado equivalente. Consequentemente, os termos “processador” e “conjunto de circuitos de processamento”, conforme usado no presente documento podem se referir a qualquer uma das estruturas supracitadas ou qualquer outra estrutura adequada para implementação das técnicas descritas no presente documento. Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida em módulos de hardware e/ou software dedicados configurados para codificar e decodificar, ou incorporados em um codec combinado. Ademais, as técnicas poderiam ser implementadas completamente em um ou mais circuitos ou elementos lógicos.
[00221] As técnicas desta revelação podem ser implementadas em uma variedade ampla de dispositivos ou aparelhos, incluindo um monofone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente realização por diferentes unidades de hardware. De preferência, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequado.
[00222] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das seguintes reivindicações.
Claims (20)
1. Método de codificação de dados de vídeo, em que o método compreende: ser responsivo à determinação para predizer um bloco atual de uma imagem atual de dados de vídeo com o uso de cópia de intrabloco (IBC), gerar uma lista de candidatos de vetor de movimento (MV) para o bloco atual, em que a geração da lista de candidatos de MV compreende: determinar um ou mais candidatos de predição de vetor de movimento com base em histórico (HMVP); e incluir, como um último candidato na lista de candidatos de MV, um candidato de HMVP dentre um ou mais candidatos de HMVP; selecionar, a partir da lista de candidatos de MV, um candidato de MV particular que identifica um bloco de preditor na imagem atual; e Reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
2. Método, de acordo com a reivindicação 1, em que o bloco atual é um primeiro bloco da imagem atual, em que o método compreende adicionalmente: ser responsivo à determinação para predizer um segundo bloco da imagem atual de dados de vídeo com o uso de interpredição, gerar uma lista de candidatos de MV para o segundo bloco, em que a geração da lista de candidatos de MV para o segundo bloco compreende: determinar um número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco; e ser responsiva à determinação de que uma quantidade de candidatos na lista de candidatos de MV para o segundo bloco é igual ao número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco menos um, parar de incluir candidatos de HMVP adicionais para o segundo bloco na lista de candidatos de MV para o segundo bloco de modo que o último candidato na lista de candidatos de MV para o segundo bloco não seja um candidato de HMVP; selecionar, a partir da lista de candidatos de MV para o segundo bloco, um candidato de MV particular que identifica um bloco de preditor para o segundo bloco em uma imagem dos dados de vídeo que não é igual à imagem atual; e reconstruir pixels do segundo bloco com base em pixels do bloco de preditor para o segundo bloco.
3. Método, de acordo com a reivindicação 2, em que a geração da lista de candidatos de MV para o primeiro bloco compreende não avaliar quaisquer candidatos em pares para inclusão na lista de candidatos de MV para o primeiro bloco.
4. Método, de acordo com a reivindicação 3, em que a geração da lista de candidatos de MV para o segundo bloco compreende avaliar um ou mais candidatos em pares para inclusão na lista de candidatos de MV para o segundo bloco.
5. Método, de acordo com a reivindicação 4, em que a geração da lista de candidatos de MV para o primeiro bloco compreende adicionalmente: avaliar um candidato B2 vizinho acima à esquerda for inclusão na lista de candidatos de MV para o primeiro bloco em que um número atual de candidatos incluído na lista de candidatos de MV para o primeiro bloco é maior que ou igual a quatro.
6. Método, de acordo com a reivindicação 4, em que a lista de candidatos de MV para o primeiro bloco compreende uma lista de mesclagem/salto de IBC.
7. Dispositivo para codificar dados de vídeo, sem que o dispositivo compreende: uma memória configurada para armazenar os dados de vídeo; e um ou mais processadores que são implementados em conjunto de circuitos e configurados para: gerar, responsivos à determinação para predizer um bloco atual de uma imagem atual de dados de vídeo com o uso de cópia de intrabloco (IBC), a lista de candidatos de vetor de movimento (MV) para o bloco atual, em que, para gerar a lista de candidatos de MV, os um ou mais processadores são configurados para: Determinar um ou mais candidatos de predição de vetor de movimento com base em histórico (HMVP); e incluir, como um último candidato na lista de candidatos de MV, um candidato de HMVP dentre os um ou mais candidatos de HMVP; selecionar, a partir da lista de candidatos de MV, um candidato de MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
8. Dispositivo, de acordo com a reivindicação 7, em que o bloco atual é um primeiro bloco da imagem atual, e em que os um ou mais processadores são configurados adicionalmente para: gerar, responsivos à determinação para predizer um segundo bloco da imagem atual de dados de vídeo com o uso de interpredição, uma lista de candidatos de MV para o segundo bloco, em que, para gerar a lista de candidatos de MV para o segundo bloco, os um ou mais processadores são configurados para: determinar um número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco; e parar, responsivos à determinação de que uma quantidade de candidatos na lista de candidatos de MV para o segundo bloco é igual ao número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco menos um, de incluir candidatos de HMVP adicionais para o segundo bloco na lista de candidatos de MV para o segundo bloco de modo que o último candidato na lista de candidatos de MV para o segundo bloco não seja um candidato de HMVP; selecionar, a partir da lista de candidatos de MV para o segundo bloco, um candidato de MV particular que identifica um bloco de preditor para o segundo bloco em uma imagem dos dados de vídeo que não é igual à imagem atual; e reconstruir do segundo bloco com base em pixels do bloco de preditor para o segundo bloco.
9. Dispositivo, de acordo com a reivindicação 8, em que, para gerar a lista de candidatos de MV para o primeiro bloco, os um ou mais processadores são configurados para não avaliar quaisquer candidatos em pares para inclusão na lista de candidatos de MV para o primeiro bloco.
10. Dispositivo, de acordo com a reivindicação 9, em que, para gerar a lista de candidatos de MV para o segundo bloco, os um ou mais processadores são configurados para avaliar um ou mais candidatos em pares para inclusão na lista de candidatos de MV para o segundo bloco.
11. Dispositivo, de acordo com a reivindicação 10, em que, para gerar a lista de candidatos de MV para o primeiro bloco, os um ou mais processadores são configurados para: avaliar um candidato B2 para inclusão na lista de candidatos de MV para o primeiro bloco em que um número atual de candidatos incluído na lista de candidatos de MV para o primeiro bloco é maior que ou igual a quatro.
12. Dispositivo, de acordo com a reivindicação 10, em que a lista de candidatos de MV para o primeiro bloco compreende uma lista de mesclagem/salto de IBC.
13. Dispositivo, de acordo com a reivindicação 7, em que o codificador de vídeo compreende um decodificador de vídeo.
14. O dispositivo, de acordo com a reivindicação 13, que compreende adicionalmente um visor configurado para exibir dados de vídeo decodificados.
15. Dispositivo, de acordo com a reivindicação 13, em que o dispositivo compreende um ou mais dentre uma câmera, um computador, um dispositivo móvel, um dispositivo de receptor de difusão ou um decodificador de sinal.
16. Dispositivo, de acordo com a reivindicação 7, em que o dispositivo compreende um codificador de vídeo.
17. Meio de armazenamento legível por computador que armazena instruções que, quando executadas, fazem com que um ou mais processadores de um codificador de vídeo: gerem, responsivos à determinação parta predizer um bloco atual de uma imagem atual de dados de vídeo com o uso de cópia de intrabloco (IBC), uma lista de candidatos de vetor de movimento (MV) para o bloco atual, em que as instruções que fazem com que os um ou mais processadores gerem a lista de candidatos de MV compreendem instruções que fazem com que os um ou mais processadores: determinar um ou mais candidatos de predição de vetor de movimento com base em histórico (HMVP); e’ incluir, como um último candidato na lista de candidatos de MV, um candidato de HMVP dentre os um ou mais candidatos de HMVP; selecionar, a partir da lista de candidatos de MV, um candidato de MV particular que identifica um bloco de preditor na imagem atual; e reconstruir pixels do bloco atual com base em pixels do bloco de preditor.
18. Meio de armazenamento legível por computador, de acordo com a reivindicação 17, em que o bloco atual é um primeiro bloco da imagem atual, e compreende adicionalmente instruções que fazem com que os um ou mais processadores: gerem, responsivos à determinação para predizer um segundo bloco da imagem atual de dados de vídeo com o uso de interpredição, uma lista de candidatos de MV para o segundo bloco, em que as instruções que fazem com que os um ou mais processadores gerem a lista de candidatos de MV para o segundo bloco compreendem instruções que fazem com que os um ou mais processadores: determinem um número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco; e parar, responsivos à determinação de que uma quantidade de candidatos na lista de candidatos de MV para o segundo bloco é igual ao número máximo de candidatos a ser incluído na lista de candidatos de MV para o segundo bloco menos um, de incluir candidatos de HMVP adicionais para o segundo bloco na lista de candidatos de MV para o segundo bloco de modo que o último candidato na lista de candidatos de MV para o segundo bloco não seja um candidato de HMVP; selecionem, a partir da lista de candidatos de MV para o segundo bloco, um candidato de MV particular que identifica um bloco de preditor para o segundo bloco em uma imagem dos dados de vídeo que não é igual à imagem atual; e reconstruam do segundo bloco com base em pixels do bloco de preditor para o segundo bloco.
19. Meio de armazenamento legível por computador, de acordo com a reivindicação 18, em que as instruções que fazem com que os um ou mais processadores gerem a lista de candidatos de MV para o primeiro bloco compreendem instruções que fazem com que os um ou mais processadores não avaliem quaisquer candidatos em pares para inclusão na lista de candidatos de MV para o primeiro bloco.
20. Meio de armazenamento legível por computador, de acordo com a reivindicação 19, em que as instruções que fazem com que os um ou mais processadores gerem a lista de candidatos de MV para o segundo bloco compreendem instruções que fazem com que os um ou mais processadores avaliem um ou mais candidatos em pares para inclusão na lista de candidatos de MV para o segundo bloco.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962802573P | 2019-02-07 | 2019-02-07 | |
US62/802,573 | 2019-02-07 | ||
US16/782,735 | 2020-02-05 | ||
US16/782,735 US11190800B2 (en) | 2019-02-07 | 2020-02-05 | Motion vector predictor list generation for intra block copy mode in video coding |
PCT/US2020/017028 WO2020163606A1 (en) | 2019-02-07 | 2020-02-06 | Motion vector predictor list generation for intra block copy mode in video coding |
Publications (1)
Publication Number | Publication Date |
---|---|
BR112021014603A2 true BR112021014603A2 (pt) | 2021-10-05 |
Family
ID=71945424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112021014603-2A BR112021014603A2 (pt) | 2019-02-07 | 2020-02-06 | Geração de lista de preditores de vetor de movimento para modo de cópia de intrabloco em codificação de vídeo |
Country Status (8)
Country | Link |
---|---|
US (1) | US11190800B2 (pt) |
EP (1) | EP3922027A1 (pt) |
JP (1) | JP7474774B2 (pt) |
KR (1) | KR20210119991A (pt) |
AU (1) | AU2020219239A1 (pt) |
BR (1) | BR112021014603A2 (pt) |
SG (1) | SG11202107704RA (pt) |
WO (1) | WO2020163606A1 (pt) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020164630A1 (en) | 2019-02-17 | 2020-08-20 | Beijing Bytedance Network Technology Co., Ltd. | Signaling of intra block copy merge candidates |
EP3878181B1 (en) * | 2019-03-04 | 2024-07-31 | Huawei Technologies Co., Ltd. | An encoder, a decoder and corresponding methods using ibc merge list |
US11166015B2 (en) * | 2019-03-06 | 2021-11-02 | Tencent America LLC | Method and apparatus for video coding |
CN113812165B (zh) * | 2019-05-09 | 2023-05-23 | 北京字节跳动网络技术有限公司 | 对hmvp表的改进 |
CN113994699B (zh) | 2019-06-06 | 2024-01-12 | 北京字节跳动网络技术有限公司 | 视频编解码的运动候选列表构建 |
CN113940082A (zh) | 2019-06-06 | 2022-01-14 | 北京字节跳动网络技术有限公司 | 基于子块的帧内块复制和不同编解码工具之间的交互 |
WO2020259426A1 (en) * | 2019-06-22 | 2020-12-30 | Beijing Bytedance Network Technology Co., Ltd. | Motion candidate list construction for intra block copy mode |
US11218727B2 (en) * | 2019-07-11 | 2022-01-04 | Tencent America LLC | Method and apparatus for predictor candidate list size signaling for intra picture block compensation |
CN112040183A (zh) * | 2020-08-21 | 2020-12-04 | 中航华东光电(上海)有限公司 | 一种远距离无损传输显示和控制系统 |
KR102403817B1 (ko) * | 2020-11-24 | 2022-05-31 | 이화여자대학교 산학협력단 | 화면 내 블록 카피를 이용한 다시점 영상에서의 블록 벡터 예측 기법 및 디코더 |
CN116760986B (zh) * | 2023-08-23 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 候选运动矢量生成方法、装置、计算机设备和存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9854237B2 (en) * | 2014-10-14 | 2017-12-26 | Qualcomm Incorporated | AMVP and merge candidate list derivation for intra BC and inter prediction unification |
US10404992B2 (en) | 2015-07-27 | 2019-09-03 | Qualcomm Incorporated | Methods and systems of restricting bi-prediction in video coding |
MX2021004028A (es) | 2018-10-08 | 2021-06-30 | Beijing Dajia Internet Information Tech Co Ltd | Simplificaciones de modelo lineal de componente transversal. |
CN118741099A (zh) | 2018-12-12 | 2024-10-01 | 数码士有限公司 | 使用当前图片参考的视频信号处理方法和设备 |
US10904557B2 (en) * | 2019-01-22 | 2021-01-26 | Tencent America LLC | Method and apparatus for video coding |
-
2020
- 2020-02-05 US US16/782,735 patent/US11190800B2/en active Active
- 2020-02-06 WO PCT/US2020/017028 patent/WO2020163606A1/en unknown
- 2020-02-06 SG SG11202107704RA patent/SG11202107704RA/en unknown
- 2020-02-06 BR BR112021014603-2A patent/BR112021014603A2/pt unknown
- 2020-02-06 KR KR1020217023909A patent/KR20210119991A/ko unknown
- 2020-02-06 EP EP20710361.5A patent/EP3922027A1/en active Pending
- 2020-02-06 JP JP2021544885A patent/JP7474774B2/ja active Active
- 2020-02-06 AU AU2020219239A patent/AU2020219239A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN113383552A (zh) | 2021-09-10 |
JP7474774B2 (ja) | 2024-04-25 |
EP3922027A1 (en) | 2021-12-15 |
KR20210119991A (ko) | 2021-10-06 |
US11190800B2 (en) | 2021-11-30 |
JP2022520741A (ja) | 2022-04-01 |
TW202034694A (zh) | 2020-09-16 |
SG11202107704RA (en) | 2021-08-30 |
AU2020219239A1 (en) | 2021-08-12 |
WO2020163606A1 (en) | 2020-08-13 |
US20200260113A1 (en) | 2020-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
BR112021002967A2 (pt) | predição de movimento afim | |
EP4376406A1 (en) | Combination of inter-prediction and intra-prediction in video coding | |
BR112021000002A2 (pt) | Mvps não adjacentes baseados em múltiplos históricos para processamento de frente de onda de código de vídeo | |
BR112021009558A2 (pt) | simplificação da predição de vetor de movimento baseada em histórico | |
BR112021002219A2 (pt) | lista de candidatos baseada em histórico com classificação | |
BR112020006588A2 (pt) | predição afim em codificação de vídeo | |
JP2020523853A (ja) | 動きベクトル予測 | |
WO2018126163A1 (en) | Motion vector generation for affine motion model for video coding | |
EP3738314A1 (en) | Multiple-model local illumination compensation | |
US10958932B2 (en) | Inter-prediction coding of video data using generated motion vector predictor list including non-adjacent blocks | |
WO2020069329A1 (en) | Ultimate motion vector expression with adaptive directional information set | |
TW202021354A (zh) | 運動向量預測器清單產生 | |
BR112021009732A2 (pt) | padrões de predição de vetor de movimento espaço-temporal para codificação de vídeo | |
BR112020025982A2 (pt) | sinalização de preditor de vetor de movimento de unidade de subpredição | |
BR112021014879A2 (pt) | Modo de inter-intraprevisão para dados de vídeo | |
WO2019199953A1 (en) | Decoder-side motion vector derivation for video 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 | |
US11051035B2 (en) | Processing of illegal motion vectors for intra block copy mode in video coding | |
WO2020247754A1 (en) | Reducing motion field storage for prediction of video data using non-rectangular prediction modes | |
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 | |
EP3861747A1 (en) | Simplification of spatial-temporal motion vector prediction | |
WO2024148066A1 (en) | Template matching for flipped intra block copy | |
WO2022212254A2 (en) | Template matching-based advanced motion vector predictor (amvp) candidate list construction with non-adjacent candidates and amvp index signaling |