BR112021003869A2 - predição temporal de parâmetros de filtro de loop adaptativo com consumo reduzido de memória para codificação de vídeo - Google Patents

predição temporal de parâmetros de filtro de loop adaptativo com consumo reduzido de memória para codificação de vídeo Download PDF

Info

Publication number
BR112021003869A2
BR112021003869A2 BR112021003869-8A BR112021003869A BR112021003869A2 BR 112021003869 A2 BR112021003869 A2 BR 112021003869A2 BR 112021003869 A BR112021003869 A BR 112021003869A BR 112021003869 A2 BR112021003869 A2 BR 112021003869A2
Authority
BR
Brazil
Prior art keywords
alf
blocks
video
parameters
video data
Prior art date
Application number
BR112021003869-8A
Other languages
English (en)
Inventor
Hilmi Enes EGILMEZ
Nan Hu
Vadim SEREGIN
Wei-Jung Chien
Marta Karczewicz
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112021003869A2 publication Critical patent/BR112021003869A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

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

Abstract

PREDIÇÃO TEMPORAL DE PARÂMETROS DE FILTRO DE LOOP ADAPTATIVO COM CONSUMO REDUZIDO DE MEMÓRIA PARA CODIFICAÇÃO DE VÍDEO. Um dispositivo para decodificação de dados de vídeo inclui uma memória configurada para armazenar dados de vídeo e um ou mais processadores impl3ementados em sistema de circuitos e configurado para armazenar conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional na memória, o arranjo unidimensional possuindo um tamanho predefinido de N elementos de memória, N sendo um valor de número inteiro positivo, em que o um ou mais processadores são configurados para armazenar, em um ou mais dos elementos de memória do arranjo, tanto os parâmetros ALF correspondentes como um valor de identificador (ID) de camada temporal indicando uma camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; decodificar um ou mais blocos dos dados de vídeo; e filtrar o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional. O dispositivo pode ainda codificar o um ou mais blocos antes de decodificar o um ou mais blocos.

Description

“PREDIÇÃO TEMPORAL DE PARÂMETROS DE FILTRO DE LOOP ADAPTATIVO COM CONSUMO REDUZIDO DE MEMÓRIA PARA CODIFICAÇÃO DE VÍDEO”
[0001] Este pedido reivindica o benefício do Pedido U.S. No 16/567,966 depositado em 11 de Setembro de 2019, do Pedido Provisório U.S. No 62/730,504, depositado em 12 de Setembro de 2018, cujos conteúdos em sua totalidade são incorporados por referência neste documento.
CAMPO TÉCNICO
[0002] Esta revelação diz respeito à codificação de vídeo e decodificação de vídeo.
ANTECEDENTES
[0003] As capacidades de vídeo digital podem ser incorporadas em uma grande variedade de dispositivos, incluindo televisores digitais, sistemas de broadcast digital direto, sistemas de broadcast não cabeados, assistentes digitais pessoais (PDAs), computadores laptops ou de mesa, computadores tablets, leitores de e-book, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos, consoles de jogos, telefones celulares ou de rádio por satélite, os chamados "smartphones", dispositivos de teleconferência de vídeo, dispositivos de fluxo contínuo de vídeo e similares. Dispositivos de vídeo digital implementam técnicas de codificação de vídeo, tais como as 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), ITU-T H.265 / Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir receber, codificar,
decodificar e/ou armazenar informação de vídeo digital mais eficientemente por implementar tais técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intra-imagem) e/ou predição temporal (entre imagens) para reduzir ou remover a redundância inerente nas sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fração de vídeo (por exemplo, uma imagem de vídeo ou uma parte de uma imagem de vídeo) pode ser dividida em blocos de vídeo, os quais 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 fração de codificação intra (I) de uma imagem são codificados utilizando predição espacial com respeito às amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fração de codificação inter (P ou B) de uma imagem podem utilizar predição espacial com respeito às amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com respeito às amostras de referência em outras imagens de referência. Imagens podem ser referidas como quadros, e imagens de referência podem ser referidas como quadros de referência.
SUMÁRIO
[0005] Em geral, esta revelação descreve técnicas que podem reduzir utilização de memória de predição temporal em filtragem em loop adaptativa (ALF). Quando comparado com a predição temporal adotada em JEM 7, as técnicas descritas podem proporcionar redução significativa da memória com pouca ou nenhuma perda no desempenho de compactação. As técnicas desta revelação podem ser utilizadas para desenvolver implementações mais práticas de ALF em codecs de vídeo avançados, tais como extensões de H.265/HEVC e padrões de codificação de vídeo de próxima geração, incluindo H.266/VVC.
[0006] Em um exemplo, um método de decodificação de dados de vídeo inclui armazenar conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional possuindo um tamanho predefinido de N elementos de memória, N sendo um valor de número inteiro positivo, em que armazenar os conjuntos de parâmetros ALF compreende armazenar, em um ou mais dos elementos de memória do arranjo, ambos os parâmetros ALF correspondentes e um valor de identificador (ID) de camada temporal indicando uma camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; decodificar um ou mais blocos de dados de vídeo; e filtrar o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional.
[0007] Em outro exemplo, um dispositivo para decodificar dados de vídeo inclui uma memória configurada para armazenar dados de vídeo e um ou mais processadores implementados em sistema de circuitos e configurados para armazenar conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional na memória, o arranjo unidimensional possuindo um tamanho predefinido de N elementos de memória, N sendo um valor inteiro positivo, em que um ou mais processadores são configurados para armazenar, em um ou mais dos elementos de memória do arranjo, ambos os parâmetros ALF correspondentes e um valor de identificador (ID) de camada temporal indicando uma camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; decodificar um ou mais blocos dos dados de vídeo; e filtrar o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional. O dispositivo pode ainda codificar o um ou mais blocos antes de decodificar o um ou mais blocos.
[0008] Em outro exemplo, um meio de armazenamento legível por computador armazenou nele instruções que, quando executadas, causam que um processador armazene conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional com um tamanho predefinido de N elementos de memória, N sendo um valor de número inteiro positivo, em que armazenar os conjuntos de parâmetros ALF compreende armazenar, em um ou mais dos elementos de memória do arranjo, ambos os parâmetros ALF correspondentes e um valor de identificador (ID) de camada temporal indicando uma camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; decodificar um ou mais blocos de dados de vídeo; e filtrar o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional.
[0009] Em outro exemplo, um dispositivo para decodificar dados de vídeo inclui meio para armazenar conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional com um tamanho predefinido de N elementos de memória, N sendo um valor de número inteiro positivo, em que armazenar os conjuntos de parâmetros ALF compreende armazenar, em um ou mais dos elementos de memória do arranjo, ambos os parâmetros ALF correspondentes e um valor de identificador (ID) de camada temporal indicando uma camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; meio para decodificar um ou mais blocos de dados de vídeo; e meio para filtrar o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional.
[0010] Os detalhes de um ou mais exemplos são expostos nos desenhos acompanhantes e na descrição abaixo. Outras características, objetos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0011] A FIG. l é um diagrama conceitual ilustrando suportes ilustrativos de filtro de loop adaptativo (ALF).
[0012] A FIG. 2 é um diagrama conceitual ilustrando camadas temporais ilustrativas em uma estrutura de quadro hierárquica.
[0013] A FIG. 3 é um diagrama de blocos ilustrando um sistema de codificação e de decodificação de vídeo ilustrativo que pode executar as técnicas desta revelação.
[0014] As FIGS. 4A e 4B são diagramas conceituais ilustrando uma estrutura de árvore binária de árvore quaternária (QTBT) ilustrativa e uma unidade de árvore de codificação (CTU) correspondente.
[0015] A FIG. 5 é um diagrama de blocos ilustrando um codificador de vídeo ilustrativo que pode executar as técnicas desta revelação.
[0016] A FIG. 6 é um diagrama de blocos ilustrando um decodificador de vídeo ilustrativo que pode executar as técnicas desta revelação.
[0017] A FIG. 7 é um fluxograma ilustrando um método ilustrativo de decodificação e filtragem de dados de vídeo de acordo com as técnicas desta revelação.
DESCRIÇÃO DETALHADA
[0018] Os padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-l Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões Codificação de Vídeo Escalonável (SVC) e Codificação de Vídeo de Multi-Vista (MVC).
[0019] Adicionalmente, um novo padrão de codificação de vídeo, nomeadamente Codificação de Vídeo de Alta Eficiência (HEVC), foi recentemente desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Peritos de Codificação de Vídeo (VCEG) ITU-T e do Grupo de Peritos em Imagens em Movimento (MPEG) ISO/IEC. Um projeto de especificação HEVC, referido como HEVC WD daqui em diante, está disponível em phenix.int- evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC- Nl003-v1.zip. O padrão HEVC foi finalizado em janeiro de
2013.
[0020] ITU-T VCEG (Q6/16) e ISO/IEC MPEG (JTC 1/SC 29/WG 11) estão agora estudando a necessidade potencial de padronização da futura tecnologia de codificação de vídeo com uma capacidade de compactação que excede significativamente a do padrão HEVC atual (incluindo suas extensões atuais e extensões de curto prazo para codificação de conteúdo de tela e codificação de alto alcance dinâmico). Os grupos estão trabalhando juntos nesta atividade de exploração em um esforço de colaboração conjunto conhecido como Equipe de Exploração Conjunta de Vídeo (JVET) para avaliar os projetos de tecnologia de compactação propostos por seus versados nesta área. O JVET reuniu-se pela primeira vez durante 19-21 de outubro de
2015. O software de referência, ou seja, o Modelo de Exploração Conjunto 7 (JEM 7), está disponível em jvet.hhi. fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0/
[0021] No campo da codificação de vídeo, é comum aplicar filtragem para aprimorar a qualidade de um sinal de vídeo decodificado. O filtro pode ser aplicado como um pós-filtro, onde o quadro filtrado não é utilizado para predição de quadros futuros ou filtro em loop, onde o quadro filtrado é utilizado para predizer o quadro futuro. Um filtro pode ser projetado, por exemplo, por minimizar o erro entre o sinal original e o sinal filtrado decodificado. Como nos coeficientes de transformada, os coeficientes do filtro h (k, l), k = —K,..., K, l = —K, ... K podem ser quantizados de acordo com: 𝑓𝑓(𝑘𝑘, 𝑙𝑙) = 𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟𝑟�𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 ∙ ℎ(𝑘𝑘, 𝑙𝑙)�.
[0022] Os coeficientes de transformada quantizados podem, então, ser codificados e enviados para o decodificador. O normFactor pode ser igual a 2n. Valores maiores do normFactor podem levar a uma quantização mais precisa. Como resultado, os coeficientes de filtro quantizados f (k, l) podem proporcionar melhor desempenho. Entretanto, valores muito grandes de normFactor produzem coeficiente f(k, l) que geralmente requerem mais bits para transmitir.
[0023] No decodificador, os coeficientes de filtro decodificados f (k, l) são aplicados à imagem reconstruída R (i, j) como segue
𝐾𝐾 𝐾𝐾 𝐾𝐾 𝐾𝐾 𝑅𝑅� (𝑖𝑖, 𝑗𝑗) = � � 𝑓𝑓(𝑘𝑘, 𝑙𝑙)𝑅𝑅(𝑖𝑖 + 𝑘𝑘, 𝑗𝑗 + 𝑙𝑙)� � � 𝑓𝑓(𝑘𝑘, 𝑙𝑙), (1) 𝑘𝑘=−𝐾𝐾 𝑙𝑙=−𝐾𝐾 𝑘𝑘=−𝑘𝑘 𝑙𝑙=−𝐾𝐾 onde i e j são as coordenadas dos pixels dentro do quadro.
[0024] A FIG. 1 é um diagrama conceitual ilustrando suportes ilustrativos de filtro de loop adaptativo (ALF). O filtro adaptativo em loop foi avaliado no estágio HEVC, mas não foi incluído na versão final.
[0025] O filtro de loop adaptativo em loop empregado em JEM foi originalmente proposto em J. Chen, Y. Chen, M. Karczewicz, X. Li, H. Liu, L. Zhang, X. Zhao, "Coding tools research for next generation vídeo coding”, SGl6-Genebra-C806, janeiro de 2015. A ideia básica é a mesma do ALF com adaptação baseada em bloco no HM-3 [3]. Para o componente de luma, blocos 4x4 em toda a imagem são classificados baseados na direção Laplaciana 1D (até 3 direções) e na atividade Laplaciana 2D (até 5 valores de atividade). O cálculo da direção Dir_b e da atividade não quantizada Act_b é apresentado na equação (2) até (5), onde I^_(i, j) indica um pixel reconstruído com coordenada relativa (i, j) no canto superior esquerdo de um bloco 4x4. O act_b é ainda quantizado na faixa de 0 a 4, inclusive, conforme descrito em T. Wiegand, B. Bross, W.-J. Han, J.-R. Ohm e GJ Sullivan, “WD3: Working Draft 3 of High-Efficiency Video Coding,” Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, JCTVC-E603, 5o Encontro: Geneva, CH, 16-23 de Março de 2011. 𝑉𝑉𝑖𝑖,𝑗𝑗 = �𝐼𝐼̂𝑖𝑖,𝑗𝑗 × 2 − 𝐼𝐼̂𝑖𝑖,𝑗𝑗−1 − 𝐼𝐼̂𝑖𝑖,𝑗𝑗+1 � (2)
𝐻𝐻𝑖𝑖,𝑗𝑗 = |𝐼𝐼̂𝑖𝑖,𝑗𝑗 × 2 − 𝐼𝐼̂𝑖𝑖−1,𝑗𝑗 − 𝐼𝐼̂𝑖𝑖+1,𝑗𝑗 | (3) 1, 𝑖𝑖𝑖𝑖 (∑3𝑖𝑖=0 ∑3𝑗𝑗=0 𝐻𝐻𝑖𝑖,𝑗𝑗 > 2 × ∑3𝑖𝑖=0 ∑3𝑗𝑗=0 𝑉𝑉𝑖𝑖,𝑗𝑗 ) 𝐷𝐷𝐷𝐷𝑟𝑟𝑏𝑏 = �2, 𝑖𝑖𝑖𝑖 (∑3𝑖𝑖=0 ∑3𝑗𝑗=0 𝑉𝑉𝑖𝑖,𝑗𝑗 > 2 × ∑3𝑖𝑖=0 ∑3𝑗𝑗=0 𝐻𝐻𝑖𝑖,𝑗𝑗 ) (4) 0, 𝑜𝑜𝑜𝑜ℎ𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒𝑒 𝑗𝑗+1 𝐴𝐴𝐴𝐴𝑡𝑡𝑏𝑏 = ∑3𝑖𝑖=0 ∑3𝑗𝑗=0(∑𝑖𝑖+1 𝑚𝑚=𝑖𝑖−1 ∑𝑛𝑛=𝑗𝑗−1(𝑉𝑉𝑚𝑚,𝑛𝑛 + 𝐻𝐻𝑚𝑚,𝑛𝑛 )) (5)
[0026] No total, cada bloco pode ser categorizado em uma das 15 (5x3) classes e um índice é atribuído a cada bloco 4x4 de acordo com o valor de Dir_band_Act_b do bloco. Portanto, até 15 conjuntos de parâmetros ALF poderiam ser sinalizados para o componente de luma de uma imagem. Para economizar o custo de sinalização, os grupos podem ser mesclados ao longo do valor de índice de grupo. Para cada grupo mesclado, um conjunto de coeficientes ALF é sinalizado. São suportados até três formatos de filtro simétrico circulares (tal como apresentado na FIG. 1).
[0027] Para ambos os componentes de croma em uma imagem, um único conjunto de coeficientes ALF é aplicado e o filtro em formato de diamante 5x5 é sempre utilizado.
[0028] No lado do decodificador, cada amostra de pixel Îi, j é filtrada, resultando no valor de pixel I’i, j como apresentado na equação (6), onde L denota o comprimento do filtro, fm, n representa o coeficiente do filtro e o indica o deslocamento do filtro. 𝐼𝐼′𝑖𝑖,𝑗𝑗 = (∑𝐿𝐿𝑚𝑚=−𝐿𝐿 ∑𝐿𝐿𝑛𝑛=−𝐿𝐿 𝑓𝑓𝑚𝑚,𝑛𝑛 × 𝐼𝐼̂𝑖𝑖+𝑚𝑚,𝑗𝑗+𝑛𝑛 + 𝑜𝑜) ≫ (𝐵𝐵𝐵𝐵𝐹𝐹 − 1) (6) em que (1 ≪ (𝐵𝐵𝐵𝐵𝐹𝐹 − 1)) = ∑𝐿𝐿𝑚𝑚=−𝐿𝐿 ∑𝐿𝐿𝑛𝑛=−𝐿𝐿 𝑓𝑓(𝑚𝑚, 𝑛𝑛) e (𝑜𝑜 = (1 ≪ (𝐵𝐵𝐵𝐵𝐹𝐹 − 2))
[0029] Em JEM2, a profundidade de bits,
denotada por BDF é definida como 9, o que significa que o coeficiente de filtro poderia estar na faixa de [-256, 256]
[0030] Os coeficientes ALF de imagens previamente codificadas são armazenados e podem ser reutilizados como coeficientes ALF de uma imagem atual. A imagem atual pode escolher utilizar coeficientes ALF armazenados para as imagens de referência e então ignorar a sinalização de coeficientes ALF. Neste caso, somente um índice para uma das imagens de referência é sinalizado, e os coeficientes ALF armazenados da imagem de referência indicada são simplesmente herdados para a imagem atual. Para indicar a utilização da predição temporal, um sinalizador é primeiro codificado antes de enviar o índice.
[0031] No projeto de JEM 7, parâmetros ALF a partir de no máximo seis imagens/fatias anteriores são armazenados em um arranjo separado para cada camada temporal. Por exemplo, se houverem 5 camadas temporais em uma estrutura de codificação B/P hierárquica (o que é o caso na configuração de acesso aleatório utilizada na padronização de codificação de vídeo atual), tanto o codificador quanto o decodificador utilizam um arranjo de memória 5x6, de modo que, no total, existem 30 elementos de memória para armazenar parâmetros ALF obtidos anteriormente.
[0032] O design convencional de JEM 7 efetivamente exclui os parâmetros ALF armazenados quando uma imagem IRAP (quadro I) é codificada/decodificada. Para evitar a duplicação, os parâmetros ALF são armazenados na memória apenas se forem obtidos recentemente através de sinalização no lado do decodificador (no lado do codificador, novos parâmetros são obtidos via estimativa/treinamento). O armazenamento de parâmetros opera em uma ordem, primeiro a entrar, primeiro a sair (FIFO) (ou seja, uma forma FIFO), portanto, se o arranjo estiver cheio, um novo conjunto de valores de parâmetro ALF sobrescreve os parâmetros mais antigos, na ordem de decodificação.
[0033] A FIG. 2 é um diagrama conceitual ilustrando camadas temporais ilustrativas em uma estrutura de quadro hierárquica.
[0034] Uma razão ilustrativa para utilizar um arranjo bidimensional (2D) (na memória) para armazenar parâmetros ALF é preservar a escalabilidade temporal em uma estrutura de codificação de quadro B/P hierárquica. Como apresentado na FIG. 2, um quadro na camada Ti não pode depender (por exemplo, não pode ser predito a partir de) de um quadro na camada Tk para i < k. Em outras palavras, um quadro/fatia em uma camada temporal inferior (por exemplo, T2) não pode depender de quadros/fatias em camadas superiores (por exemplo, T3 e T4). A predição temporal atual no ALF, a qual é coberta no Pedido U.S. No 15/861,165 depositado em 3 de Janeiro de 2018, publicado como Publicação de Patente U.S. Nº 2018/0192050, preserva a escalabilidade temporal por simplesmente armazenar parâmetros ALF obtidos a partir de diferentes camadas temporais em diferentes fileiras do arranjo 2-D e garantindo que esses parâmetros sejam utilizados sem quebrar a estrutura de dependência em quadros B/P hierárquicos.
[0035] O projeto atual de predição temporal pode exigir uma grande quantidade de memória. Especificamente, um arranjo 5x6 com 30 elementos de memória pode ser necessário tanto no codificador quanto no decodificador para armazenar os parâmetros ALF. As técnicas desta revelação podem reduzir significativamente o requisito de memória utilizando um arranjo 1D, embora ainda preservando a escalabilidade temporal.
[0036] A FIG. 3 é um diagrama de blocos ilustrando um sistema de codificação e de decodificação de vídeo ilustrativo 100 que pode executar as técnicas desta revelação. As técnicas desta revelação são geralmente direcionadas a codificar (codificação e/ou decodificação) dados de vídeo. Em geral, os dados de vídeo incluem quaisquer dados para processar um vídeo. Assim, os dados de vídeo podem incluir vídeo bruto, não codificado, vídeo codificado, vídeo decodificado (por exemplo, reconstruído) e metadados de vídeo, tal como dados de sinalização.
[0037] Como apresentado na FIG. 3, o sistema 100 inclui um dispositivo fonte 102 que proporciona dados de vídeo codificados para serem decodificados e exibidos por um dispositivo destino 116, neste exemplo. Em particular, o dispositivo fonte 102 proporciona os dados de vídeo para o dispositivo destino 116 via um meio legível por computador 110. O dispositivo fonte 102 e o dispositivo destino 116 podem compreender qualquer um dentre uma grande variedade de dispositivos, incluindo computadores de mesa, computadores notebooks (ou seja, laptop), computadores tablets, decodificadores, aparelhos de telefone, tais como smartphones, televisores, câmeras, dispositivos de vídeo, reprodutores de mídia digital,
consoles de jogos de vídeo, dispositivo de fluxo contínuo de vídeo ou similares. Em alguns casos, o dispositivo fonte 102 e o dispositivo destino 116 podem ser equipados para comunicação não cabeada e, portanto, podem ser referidos como dispositivos de comunicação não cabeada.
[0038] No exemplo da FIG. 3, o dispositivo 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 destino 116 inclui a interface de entrada 122, decodificador de vídeo 300, a memória 120 e o dispositivo de vídeo 118. De acordo com esta revelação, o codificador de vídeo 200 do dispositivo fonte 102 e o decodificador de vídeo 300 do dispositivo destino 116 podem ser configurados para aplicar as técnicas para predição temporal de parâmetros de filtro de loop adaptativo, os quais podem reduzir o consumo de memória. Assim, o dispositivo fonte 102 representa um exemplo de um dispositivo de codificação de vídeo, enquanto o dispositivo destino 116 representa um exemplo de um dispositivo de decodificação de vídeo. Em outros exemplos, um dispositivo fonte e um dispositivo destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo fonte 102 pode receber dados de vídeo a partir de uma fonte de vídeo externa, tal como uma câmera externa. Da mesma forma, o dispositivo destino 116 pode realizar interface com um dispositivo de vídeo externo, ao invés de incluir um dispositivo de vídeo integrado.
[0039] O Sistema 100 como apresentado na FIG. 3 é apenas um exemplo. Em geral, qualquer dispositivo de codificação e/ou decodificação de vídeo digital pode executar técnicas para predição temporal de parâmetros de filtro de loop adaptativo, o que pode reduzir o consumo de memória. O dispositivo fonte 102 e o dispositivo destino 116 são meramente exemplos de tais dispositivos de codificação em que o dispositivo fonte 102 gera dados de vídeo codificados para transmissão para o dispositivo destino 116. Esta revelação se refere a um dispositivo de "codificação" como um dispositivo que executa a codificação (codificação e/ou decodificação) de dados. Assim, o codificador de vídeo 200 e o decodificador de vídeo 300 representam exemplos de dispositivos de codificação, em particular, um codificador de vídeo e um decodificador de vídeo, respectivamente. Em alguns exemplos, o dispositivo fonte 102 e o dispositivo destino 116 podem operar de maneira substancialmente simétrica, de modo que cada um dentre o dispositivo fonte 102 e dispositivo destino 116 incluam componentes de codificação e de decodificação de vídeo. Portanto, o sistema 100 pode suportar transmissão de vídeo unidirecional ou bidirecional entre o dispositivo fonte 102 e o dispositivo destino 116, por exemplo, para fluxo contínuo de vídeo, reprodução de vídeo, broadcast de vídeo ou telefonia de vídeo.
[0040] Em geral, a fonte de vídeo 104 representa uma fonte de dados de vídeo (ou seja, dados de vídeo brutos e não codificados) e proporciona uma série sequencial de imagens (também referida como "quadros") dos dados de vídeo para o codificador de vídeo 200, o qual codifica dados para as imagens. A fonte de vídeo 104 do dispositivo fonte 102 pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo bruto capturado anteriormente e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Como alternativa, a fonte de vídeo 104 pode gerar dados baseados em gráficos de computador tal como o vídeo fonte, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em cada caso, o codificador de vídeo 200 codifica os dados de vídeo capturados, pré-capturados ou gerados por computador. O codificador de vídeo 200 pode reorganizar as imagens a partir da ordem recebida (às vezes referida como "ordem de exibição") em uma ordem de codificação para codificação. O codificador de vídeo 200 pode gerar um fluxo de bits incluindo dados de vídeo codificados. O dispositivo fonte 102 pode, então, emitir os dados de vídeo codificados via a interface de saída 108 no meio legível por computador 110 para recepção e/ou recuperação, por exemplo, pela interface de entrada 122 do dispositivo destino 116.
[0041] A memória 106 do dispositivo fonte 102 e a memória 120 do dispositivo destino 116 representam memórias de propósito geral. Em alguns exemplos, as memórias 106, 120 podem armazenar dados de vídeo brutos, por exemplo, vídeo bruto a partir da fonte de vídeo 104 e dados de vídeo decodificados brutos a partir do decodificador de vídeo 300. Adicionalmente ou alternativamente, as memórias 106, 120 podem armazenar instruções de software executáveis, por exemplo, pelo codificador de vídeo 200 e pelo decodificador de vídeo 300, respectivamente. Embora a memória 106 e a memória 120 sejam apresentadas separadamente do codificador de vídeo
200 e do decodificador de vídeo 300 neste exemplo, deve ser entendido que o codificador de vídeo 200 e o decodificador de vídeo 300 também podem incluir memórias internas para propósitos funcionalmente similares ou equivalentes. Além disso, as memórias 106, 120 podem armazenar dados de vídeo codificados, por exemplo, emitidos a partir do codificador de vídeo 200 e informados para o decodificador de vídeo
300. Em alguns exemplos, as partes das memórias 106, 120 podem ser alocadas como um ou mais armazenadores (buffers) de vídeo, por exemplo, para armazenar dados de vídeo brutos, decodificados e/ou codificados.
[0042] O Meio legível por computador 110 pode representar qualquer tipo de meio ou dispositivo capaz de transportar os dados de vídeo codificados do dispositivo fonte 102 para o dispositivo destino 116. Em um exemplo, o meio legível por computador 110 representa um meio de comunicação para permitir que o dispositivo fonte 102 transmita dados de vídeo codificados diretamente para o dispositivo destino 116 em tempo real, por exemplo, via uma rede de radiofrequência ou rede baseada em computadores. A interface de saída 108 pode modular um sinal de transmissão incluindo os dados de vídeo codificados e a interface de entrada 122 pode demodular o sinal de transmissão recebido, de acordo com um padrão de comunicação, tal como um protocolo de comunicação não cabeada. O meio de comunicação pode compreender qualquer meio de comunicação não cabeada ou cabeada, tal como um espectro de radiofrequências (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local,
uma rede de longa distância ou uma rede global, tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que pode ser útil para facilitar a comunicação a partir do dispositivo fonte 102 para o dispositivo destino 116.
[0043] Em alguns exemplos, o dispositivo fonte 102 pode enviar dados codificados a partir da interface de saída 108 para o dispositivo de armazenamento 112. Similarmente, o dispositivo destino 116 pode acessar dados codificados a partir do dispositivo de armazenamento 112 via a interface de entrada 122. O dispositivo de armazenamento 112 pode incluir qualquer um dentre uma variedade de mídias de armazenamento de dados distribuídas ou acessadas localmente, tal como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou qualquer outra mídia de armazenamento digital adequada para armazenar dados de vídeo codificados.
[0044] Em alguns exemplos, o dispositivo fonte 102 pode enviar dados de vídeo codificados para o servidor de arquivos 114 ou para outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo fonte 102. O dispositivo destino 116 pode acessar dados de vídeo armazenados a partir do servidor de arquivos 114 via fluxo contínuo ou transferência. O servidor de arquivos 114 pode ser qualquer tipo de dispositivo servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo destino 116. O servidor de arquivos 114 pode representar um servidor da web (por exemplo, para um site da web), um servidor de Protocolo de Transferência de
Arquivos (FTP), um dispositivo de rede de entrega de conteúdo ou um dispositivo de armazenamento conectado à rede (NAS). O dispositivo destino 116 pode acessar dados de vídeo codificados a partir do servidor de arquivos 114 através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal não cabeado (por exemplo, uma conexão Wi-Fi), uma conexão cabeada (por exemplo, linha de assinante digital (DSL), modem a cabo, etc.), ou uma combinação de ambos que é adequada para acessar dados de vídeo codificados armazenados no servidor de arquivos 114. O servidor de arquivos 114 e a interface de entrada 122 podem ser configurados para operar de acordo com um protocolo de transmissão de fluxo continuo, um protocolo de transmissão de download, ou uma combinação destes.
[0045] A interface de saída 108 e a interface de entrada 122 podem representar transmissores / receptores não cabeados, modems, componentes de rede cabeados (por exemplo, placas Ethernet), componentes de comunicação não cabeada que operam de acordo com 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 não cabeados, a interface de saída 108 e a interface de entrada 122 podem ser configuradas para transferir dados, tais como dados de vídeo codificados, de acordo com um padrão de comunicação celular, tal como 4G, 4G-LTE (evolução à Longo Prazo), LTE Avançada, 5G ou similar. Em alguns exemplos em que a interface de saída 108 compreende um transmissor não cabeado, a interface de saída 108 e a interface de entrada
122 podem ser configuradas para transferir dados, tais como dados de vídeo codificados, de acordo com outros padrões não cabeados, tal como uma especificação IEEE 802.11, uma especificação IEEE 802.15 (por exemplo, ZigBee™), um padrão Bluetooth™ ou similares. Em alguns exemplos, o dispositivo fonte 102 e/ou o dispositivo destino 116 podem incluir respectivos dispositivos de sistema em um chip (SoC). Por exemplo, o dispositivo fonte 102 pode incluir um dispositivo SoC para executar a funcionalidade atribuída ao codificador de vídeo 200 e/ou à interface de saída 108, e o dispositivo destino 116 pode incluir um dispositivo SoC para executar a funcionalidade atribuída ao decodificador de vídeo 300 e/ou à interface de entrada 122.
[0046] As técnicas desta revelação podem ser aplicadas à codificação de vídeo no suporte de qualquer uma dentre uma variedade de aplicações multimídia, tais como broadcasts de televisão não cabeada, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de fluxo contínuo de vídeo da Internet, tais como fluxo contínuo adaptativo dinâmico através de HTTP (DASH), vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações.
[0047] A interface de entrada 122 do dispositivo destino 116 recebe um fluxo de bits de vídeo codificado a partir do meio legível por computador 110 (por exemplo, um meio de comunicação, dispositivo de armazenamento 112, servidor de arquivo 114 ou similares). O fluxo de bits de vídeo codificado do meio legível por computador 110 pode incluir informação de sinalização definidas pelo codificador de vídeo 200, que também é utilizado pelo decodificador de vídeo 300, tais como elementos de sintaxe possuindo valores que descrevem características e/ou processamento de blocos de vídeo ou de outras unidades codificadas (por exemplo, fatias, imagens, grupos de imagens, sequências ou similares). O dispositivo de vídeo 118 exibe imagens decodificadas dos dados de vídeo decodificados para um usuário. O dispositivo de vídeo 118 pode representar qualquer um dentre uma variedade de dispositivos de vídeo, tais como um tubo de raios catódicos (CRT), um vídeo de cristal líquido (LCD), um vídeo de plasma, um vídeo de diodo orgânico emissor de luz (OLED),
[0048] Embora não apresentado na FIG. 3, em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem, cada um, ser integrados com um codificador de áudio e/ou um decodificador de áudio e podem incluir unidades MUX-DEMUX apropriadas, ou outro hardware e/ou software, para lidar com fluxos contínuos multiplexados incluindo tanto áudio e vídeo em um fluxo contínuo de dados comum. Se aplicável, as unidades MUX- DEMUX podem estar em conformidade com o protocolo do multiplexador ITU H.223 ou com outros protocolos, tal como o protocolo de datagrama do usuário (UDP).
[0049] O codificador de vídeo 200 e o decodificador de vídeo 300, cada um, podem ser implementados como qualquer um dentre uma variedade de sistema de circuitos de codificadores e/ou de decodificadores adequados, tal 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), lógica discreta, 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 não temporário legível por computador adequado e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta revelação. Cada um dos codificadores de vídeo 200 e decodificadores de vídeo 300 podem estar incluídos em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) 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 não cabeada, tal como um telefone celular.
[0050] 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, tal como ITU-T H.265, também referido como Codificação de Vídeo de Alta Eficiência (HEVC) ou extensões da mesma, tal como extensões de codificação de vídeo de multi vista e/ou escalonáveis. Alternativamente, o codificador de vídeo 200 e o decodificador de vídeo 300 podem operar de acordo com outros padrões proprietários ou da indústria, tal como o Modelos Teste de Exploração Conjunta (JEM) ou ITU-T H.266, também conhecido como Codificação Versátil de Vídeo (VVC). Um esboço recente do padrão VVC é descrito em Bross, et al.
“Versatile Video Coding (Projecto 6),” o Time Conjunto de Versados em Vídeo (JVET) da ITU-T SG 16 WP 3 e ISO/IEC JTC l/SC 29/WG 11, l5º Encontro: Gotemburgo, SE, 3-12 de julho 2019, JVET-O200l-vE (daqui em diante “VVC Draft 6”). As técnicas desta revelação, entretanto, não estão limitadas a qualquer padrão de codificação particular.
[0051] Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem executar a codificação baseada em blocos de imagens. O termo "bloco" geralmente se refere a uma estrutura incluindo dados a serem processados (por exemplo, codificados, decodificados ou utilizados de outra forma no processo de codificação e/ou decodificação). Por exemplo, um bloco pode incluir uma matriz bidimensional de amostras de dados de luminância e/ou de crominância. Em geral, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar dados de vídeo representados em um formato YUV (por exemplo, Y, Cb, Cr). Isto é, ao invés de codificar dados de vermelho, verde e azul (RGB) para amostras de uma imagem, o codificador de vídeo 200 e o decodificador de vídeo 300 podem codificar componentes de luminância e de crominância, onde os componentes de crominância podem incluir componentes de crominância de matiz vermelho e azul. Em alguns exemplos, o codificador de vídeo 200 converte dados RGB formatados recebidos em uma representação YUV antes da codificação e o decodificador de vídeo 300 converte a representação YUV para o formato RGB. Alternativamente, as unidades de pré e de pós-processamento (não apresentadas) podem executar essas conversões.
[0052] Esta revelação pode geralmente referir-
se à codificação (por exemplo, codificação e decodificação) de imagens para incluir o processo de codificação ou de decodificação de dados da imagem. Similarmente, esta revelação pode referir-se à codificação de blocos de uma imagem para incluir o processo de codificar ou decodificar dados para os blocos, por exemplo, predição e/ou codificação residual. Um fluxo de bits de vídeo codificado geralmente inclui uma série de valores para elementos de sintaxe representativos de decisões de codificação (por exemplo, modos de codificação) e divisão de imagens em blocos. Assim, as referências à codificação de uma imagem ou de um bloco devem geralmente ser entendidas como valores de codificação para os elementos de sintaxe formando a imagem ou bloco.
[0053] HEVC define vários blocos, incluindo unidades de codificação (CUs), unidades de predição (PUs) e unidades de transformada (TUs). De acordo com HEVC, um codificador de vídeo (tal como o codificador de vídeo 200) divide 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 divide CTUs e CUs em quatro quadrados iguais, não sobrepostos, e cada nó da árvore quaternária possui zero ou quatro nós filhos. Os nós sem nós filhos podem ser referidos como "nós folha" e CUs de tais nós folha podem incluir uma ou mais PUs e/ou uma ou mais TUs. O codificador de vídeo pode ainda dividir PUs e TUs. Por exemplo, em HEVC, uma árvore quaternária residual (RQT) representa divisão de TUs. Em HEVC, as PUs representam dados de predição inter, enquanto as TUs representam dados residuais. As CUs que são preditas intra incluem informações predição intra, tal como uma indicação de modo intra.
[0054] Como outro exemplo, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para operar de acordo com JEM ou VVC. De acordo com JEM ou VVC, um codificador de vídeo (tal como codificador de vídeo 200) divide uma imagem em várias unidades de árvore de codificação (CTUs). O codificador de vídeo 200 pode dividir uma CTU de acordo com uma estrutura de árvore, tal como uma estrutura de árvore binária e árvore quaternária (QTBT) ou uma estrutura de árvore de multi-tipo (MTT). Uma estrutura QTBT de JEM remove os conceitos de vários tipos de divisão, tal como a separação entre CUs, PUs e TUs de HEVC. Uma estrutura QTBT de JEM inclui dois níveis: um primeiro nível dividido de acordo com divisão de árvore quaternária e um segundo nível dividido de acordo com a divisão de árvore binária. Um nó raiz da estrutura QTBT corresponde a uma CTU. Os nós folha das árvores binárias correspondem às unidades de codificação (CUs).
[0055] Em uma estrutura de divisão MTT, os blocos podem ser divididos utilizando uma divisão de árvore quaternária (QT), uma divisão de árvore binária (BT) e um ou mais tipos de divisões de árvore tripla (TT) (também chamada de árvore ternária (TT)). Uma divisão de árvore tripla ou ternária é uma divisão onde um bloco é dividido em três sub-blocos. Em alguns exemplos, uma divisão de árvore tripla ou ternária divide um bloco em três sub- blocos sem dividir o bloco original pelo centro. Os tipos de divisão em MTT (por exemplo, QT, BT e TT) podem ser simétricos ou assimétricos.
[0056] Em alguns exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem utilizar uma única estrutura QTBT ou MTT para representar cada um dos componentes de luminância e de crominância, enquanto em outros exemplos, o codificador de vídeo 200 e o decodificador de vídeo 300 podem utilizar duas ou mais estruturas QTBT ou MTT, tal como uma estrutura QTBT ou MTT para o componente de luminância e outra estrutura QTBT ou MTT para ambos os componentes de crominância (ou duas estruturas QTBT ou MTT para os respectivos componentes de crominância).
[0057] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para utilizar divisão de árvore quaternária por HEVC, divisão QTBT de acordo com JEM ou outras estruturas de divisão. Para propósitos de explicação, a descrição das técnicas desta revelação é apresentada com relação à divisão QTBT. Entretanto, deve ser entendido que as técnicas desta revelação também podem ser aplicadas a codificadores de vídeo configurados para também utilizar divisão de árvore quaternária ou outros tipos de divisão.
[0058] Os blocos (por exemplo, as CTUs ou as CUs) podem ser agrupados de várias maneiras em uma imagem. Como um exemplo, um tijolo pode referir-se a uma região retangular de fileiras CTU dentro de um ladrilho particular em uma imagem. Um ladrilho pode ser uma região retangular de CTUs dentro de uma coluna de ladrilho particular e uma fileira de ladrilho particular em uma imagem. Uma coluna de ladrilho refere-se a uma região retangular de CTUs possuindo uma altura igual à altura da imagem e uma largura especificada por elementos de sintaxe (por exemplo, tal como em um conjunto de parâmetros de imagem). Uma fileira de blocos refere-se a uma região retangular de CTUs possuindo uma altura especificada por elementos de sintaxe (por exemplo, como em um conjunto de parâmetros de imagem) e uma largura igual à largura da imagem.
[0059] Em alguns exemplos, um ladrilho pode ser dividido em vários tijolos, cada um dos quais pode incluir uma ou mais fileiras CTU dentro do ladrilho. Um ladrilho que não é dividido em vários tijolos também pode ser referido como um tijolo. Entretanto, um tijolo que é um verdadeiro subconjunto de um ladrilho não pode ser referido como um ladrilho.
[0060] Os tijolos em uma imagem também podem ser dispostos em uma fatia. Uma fatia pode ser um número inteiro de tijolos de uma imagem que pode estar contida exclusivamente em uma única unidade de camada de abstração de rede (NAL). Em alguns exemplos, uma fatia inclui um número de ladrilhos completos ou somente uma sequência consecutiva de tijolos completos de um ladrilho.
[0061] Esta revelação pode utilizar "NxN" e "N por N" de forma intercambiável para se referir às dimensões de amostra de um bloco (tal como uma CU ou outro bloco de vídeo) em termos de dimensões verticais e horizontais, por exemplo, amostras de 16x16 ou amostras de 16 por 16. Em geral, uma CU 16x16 terá 16 amostras na direção vertical (y = 16) e 16 amostras na direção horizontal (x = 16). Da mesma forma, uma CU NxN geralmente possui N amostras em uma direção vertical e N amostras em uma direção horizontal,
onde N representa um valor inteiro não negativo. As amostras em uma CU podem ser organizadas em linhas e colunas. Além disso, as CUs não precisam necessariamente possuir o mesmo número de amostras na direção horizontal que na direção vertical. Por exemplo, as CUs podem compreender amostras NxM, onde M não é necessariamente igual a N.
[0062] O codificador de vídeo 200 codifica dados de vídeo para as CUs representando predição e/ou informação residual e outras informação. A informação de predição indica como a CU deve ser predita de modo a formar um bloco de predição para a CU. A informação residual geralmente representa diferenças amostra por amostra entre amostras da CU antes da codificação e do bloco de predição.
[0063] Para predizer uma CU, o codificador de vídeo 200 pode geralmente formar um bloco de predição para a CU através de predição inter ou predição intra. A predição inter geralmente se refere à predição da CU a partir de dados de uma imagem previamente codificada, enquanto que a predição intra geralmente se refere à predição da CU a partir de dados previamente codificados da mesma imagem. Para executar a predição inter, o codificador de vídeo 200 pode gerar o bloco de predição utilizando um ou mais vetores de movimento. O codificador de vídeo 200 pode geralmente executar uma pesquisa de movimento para identificar um bloco de referência que corresponda mais proximamente a 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 diferença métrica utilizando uma soma da diferença absoluta (SAD),
uma soma das diferenças quadradas (SSD), uma diferença média absoluta (MAD), diferenças médias quadradas (MSD) ou outros cálculos de diferença para determinar se um bloco de referência corresponde mais proximamente a CU atual. Em alguns exemplos, o codificador de vídeo 200 pode predizer a CU atual utilizando predição unidirecional ou predição bidirecional.
[0064] Alguns exemplos de JEM e VVC também proporcionam um modo de compensação de movimento afim, que pode ser considerado um modo de predição inter. No modo de compensação de movimento afim, o codificador de vídeo 200 pode determinar dois ou mais vetores de movimento que representam movimento não translacional, tal como aumentar ou diminuir o zoom, rotação, movimento em perspectiva ou outros tipos de movimento irregular.
[0065] Para executar predição intra, o codificador de vídeo 200 pode selecionar um modo predição intra para gerar o bloco de predição. O JEM proporciona sessenta e sete modos de predição intra, incluindo vários modos direcionais, bem como o modo planar e o modo CC. Em geral, o codificador de vídeo 200 seleciona um modo de predição intra que descreve amostras vizinhas a um bloco atual (por exemplo, um bloco de uma CU) a partir do qual para predizer as amostras do bloco atual. Tais amostras podem geralmente estar acima, acima e à esquerda ou à esquerda do bloco atual na mesma imagem do bloco atual, assumindo que o codificador de vídeo 200 codifica CTUs e CUs em ordem de varredura por rastreio (da esquerda para a direita, de cima para baixo).
[0066] O codificador de vídeo 200 codifica dados representando o modo de predição para um bloco atual. Por exemplo, para modos de predição inter, o codificador de vídeo 200 pode codificar dados representando qual dos vários modos de predição inter disponíveis é utilizado, bem como a informação de movimento para o modo correspondente. Para predição inter unidirecional ou bidirecional, por exemplo, o codificador de vídeo 200 pode codificar vetores de movimento utilizando predição de vetor de movimento avançada (AMVP) ou modo de mesclagem. O codificador de vídeo 200 pode utilizar modos similares para codificar vetores de movimento para o modo de compensação de movimento afim.
[0067] Após a predição, tal como predição intra ou predição inter de um bloco, o codificador de vídeo 200 pode calcular dados residuais para o bloco. Os dados residuais, tal como um bloco residual, representam diferenças de amostra por amostra entre o bloco e um bloco de predição para o bloco, formado utilizando o modo de predição correspondente. O codificador de vídeo 200 pode aplicar uma ou mais transformadas para o bloco residual, para produzir dados transformados em um domínio de transformada ao invés do domínio de amostra. Por exemplo, o codificador de vídeo 200 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada de número inteiro, uma transformada de ondaleta ou uma transformada conceitualmente similar a dados de vídeo residuais. Adicionalmente, o codificador de vídeo 200 pode aplicar uma transformada secundária após a primeira transformada, tal como uma transformada secundária não separável dependente de modo (MDNSST), uma transformada dependente de sinal, uma transformada de Karhunen-Loeve (KLT) ou similares. O codificador de vídeo 200 produz coeficientes de transformada após a aplicação da uma ou mais transformadas.
[0068] Como observado acima, após quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 200 pode executar a quantização dos coeficientes de transformada. A quantização geralmente se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizados para representar os coeficientes de transformada, proporcionando compactação adicional. Por executar o processo de quantização, o codificador de vídeo 200 pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes de transformada. Por exemplo, o codificador de vídeo 200 pode arredondar um valor de n bits para um valor de m bits durante a quantização, onde n é maior do que m. Em alguns exemplos, para executar a quantização, o codificador de vídeo 200 pode executar um deslocamento para a direita bit a bit do valor a ser quantizado.
[0069] Após a quantização, o codificador de vídeo 200 pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional incluindo os coeficientes de transformada quantizados. A varredura pode ser projetada para colocar coeficientes de transformada de energia mais alta (e, portanto, frequência mais baixa) na frente do vetor e para colocar coeficientes de transformada de energia mais baixa (e, portanto, frequência mais alta) na parte de trás do vetor. Em alguns exemplos, o codificador de vídeo 200 pode utilizar uma ordem de varredura predefinida de modo a varrer os coeficientes de transformada quantizados para produzir um vetor serializado e, em seguida, codificar por entropia os coeficientes de transformada quantizados do vetor. Em outros exemplos, o codificador de vídeo 200 pode executar uma varredura adaptativa. Depois de varrer os coeficientes de transformada quantizados para formar o vetor unidimensional, o codificador de vídeo 200 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação aritmética binária adaptável ao contexto (CABAC). O codificador de vídeo 200 também pode codificar por entropia valores para elementos de sintaxe descrevendo metadados associados aos dados de vídeo codificados para utilização pelo decodificador de vídeo 300 na decodificação dos dados de vídeo.
[0070] Para executar CABAC, o codificador de vídeo 200 pode atribuir um contexto dentro de um modelo de contexto para um símbolo a ser transmitido. O contexto pode estar relacionado à, por exemplo, se os valores vizinhos do símbolo possuem valor zero ou não. A determinação da probabilidade pode ser baseada em um contexto atribuído ao símbolo.
[0071] O codificador de vídeo 200 pode ainda gerar dados de sintaxe, tais como dados de sintaxe baseados em bloco, dados de sintaxe com base em imagem e dados de sintaxe baseados em sequência, para o decodificador de vídeo 300, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia ou outros dados de sintaxe, tal como um conjunto de parâmetros de sequência (SPS), conjunto de parâmetros de imagem (PPS) ou conjunto de parâmetros de vídeo (VPS). Da mesma forma, o decodificador de vídeo 300 pode decodificar tais dados de sintaxe para determinar como decodificar os dados de vídeo correspondentes.
[0072] Desse modo, o codificador de vídeo 200 pode gerar um fluxo de bits incluindo dados de vídeo codificados, por exemplo, elementos de sintaxe descrevendo a divisão de uma imagem em blocos (por exemplo, CUs) e predição e/ou a informação residual para os blocos. Em última análise, o decodificador de vídeo 300 pode receber o fluxo de bits e decodificar os dados de vídeo codificados.
[0073] Em geral, o decodificador de vídeo 300 executa um processo recíproco ao executado pelo codificador de vídeo 200 para decodificar os dados de vídeo codificados do fluxo de bits. Por exemplo, o decodificador de vídeo 300 pode decodificar valores para elementos de sintaxe do fluxo de bits utilizando 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 divisão de uma imagem em CTUs, e divisão de cada CTU de acordo com uma estrutura de divisão correspondente, tal como uma estrutura QTBT, para definir CUs da CTU. Os elementos de sintaxe podem ainda definir predição e informação residuais para blocos (por exemplo, as CUs) de dados de vídeo.
[0074] A informação residual pode ser representada por, por exemplo, coeficientes de transformada quantizados. O decodificador de vídeo 300 pode quantizar e transformar inversamente os coeficientes de transformada quantizados de um bloco para reproduzir um bloco residual para o bloco. O decodificador de vídeo 300 utiliza um modo de predição sinalizado (predição inter ou predição intra) e informação de predição relacionada (por exemplo, informação de movimento para predição inter) 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 (amostra por amostra) para reproduzir o bloco original. O decodificador de vídeo 300 pode executar o processamento adicional, tal como executar um processo de descompactação para reduzir artefatos visuais ao longo dos limites do bloco.
[0075] De acordo com as técnicas desta revelação, o codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para armazenar parâmetros ALF em uma única matriz 10D (ou armazenador) de tamanho N, juntamente com valores de ID de camada temporal (tId), como apresentado na Tabela 1 abaixo: TABELA 1 A1f (P1, tId1) A1f (P2, tId2) Alf (P3, tId3) ... A1f (P4, tId4)
[0076] No exemplo da Tabela 1, cada elemento de memória da matriz 1-D armazena (i) parâmetros ALF e (ii) ID de camada temporal (tId), indicando a partir de qual camada os parâmetros ALF correspondentes são estimados. A informação da camada temporal pode ser armazenada para garantir que um parâmetro ALF obtido a partir de uma camada temporal superior (por exemplo, tId = 4) não seja utilizado para codificar/decodificar um quadro/fatia em uma camada temporal inferior (por exemplo, tId = 3).
[0077] O codificador de vídeo 200 e o decodificador de vídeo 300 podem ser configurados para aplicar qualquer uma das seguintes técnicas, sozinhas ou em qualquer combinação, para carregar, armazenar e/ou utilizar parâmetros ALF para predição temporal:
1. Para ser utilizado na predição temporal de parâmetros ALF, um arranjo pode armazenar parâmetros das fatias B ou P.
2. No arranjo, as entradas dos parâmetros ALF podem ser armazenadas em uma dada ordem (por exemplo, seguindo a ordem de decodificação). Quando todas as N entradas são utilizadas para armazenamento (ou seja, quando o arranjo está cheio), os parâmetros recém-obtidos podem ser armazenados por remover uma entrada e, em seguida, adicionar os novos parâmetros no arranjo. a. Como um exemplo, isso pode ser feito em um modo FIFO (primeiro a entrar, primeiro a sair), onde a última entrada no arranjo (ou seja, o conjunto de parâmetros mais antigo) é removida quando o arranjo está cheio, e os novos parâmetros são armazenados no primeiro elemento do arranjo. b. Em outro exemplo, os parâmetros ALF substituem alguns parâmetros armazenados no armazenador com o mesmo ID temporal, por exemplo, alguns parâmetros podem ser os parâmetros mais antigos no armazenador, ou menos utilizados, ou qualquer outra regra pode ser aplicada.
3. Um valor de índice não negativo, chamado prevIdx, pode ser sinalizado para identificar qual conjunto de parâmetros ALF é carregado/utilizado a partir do armazenador para codificação/decodificação. a. Um código de comprimento variável, tal como código unário, pode ser utilizado para sinalizar prevIdx. O número total de parâmetros disponíveis para um dado ID temporal pode ser contado no armazenador armazenado e a binarização truncada pode ser utilizada para sinalizar o prevIdx possuindo o número total disponível de filtros menos 1 como um índice máximo. Entretanto, a codificação truncada pode introduzir incompatibilidade entre o codificador e o decodificador, por exemplo, quando algumas imagens são perdidas na transmissão. b. O prevIdx pode assumir valores de 0 a N-1. Dependendo do tipo de estrutura de quadro hierárquica utilizada para codificação, o valor máximo de prevIdx pode ser menor. c. Quando codificando uma fatia/imagem, os possíveis candidatos para predição temporal podem ser decididos por percorrer os conjuntos incluídos no arranjo e todos ou alguns conjuntos de parâmetros com tId igual ou menor são tratados como candidatos eficazes. d. A sinalização da entrada do arranjo (determinando os parâmetros ALF utilizados para codificação) pode depender do ID da camada temporal do quadro atual sendo codificado. Especificamente, o prevIdx pode corresponder a uma entrada diferente no arranjo dependendo do ID da camada temporal do quadro atual sendo codificado/decodificado. i. Como um exemplo, ilustrado na Tabela 2 abaixo, prevIdx = 1 pode apontar para as seguintes duas entradas diferentes no arranjo, dependendo do tId do quadro atual sendo codificado:
1. prevIdx = l corresponde à 4ª entrada no arranjo, armazenando Alf (P4, 1), quando codificando um quadro com tId = 1, já que é a segunda opção permitida para codificação para preservar a escalabilidade temporal, onde Alf (P4, 1) é o primeiro candidato sinalizado com prevIdx =
0.
2. prevIdx = l corresponde à 2ª entrada no arranjo, armazenando Alf (P2, 2), quando codificando um quadro com tId = 2, já que é a segunda opção possível permitida para codificação, onde Alf (P1, 1) é a primeira opção correspondente a prevIdx = 0. TABELA 2 Alf (P1, 1) Alf (P2, 2) Alf (P3, 2) Alf (P4, 1) Alf (P5, 3) e. No caso de uma perda de quadro (por exemplo, devido a uma perda de pacote quando enviando o fluxo de bits de vídeo através de uma rede), o decodificador pode escolher não adicionar nenhuma entrada ao arranjo, ele pode introduzir uma entrada fictícia (ou seja, uma pré-configurada), então, mesmo quando a imagem é perdida, uma entrada fictícia é adicionada ao armazenador. Em qualquer caso, desde que os métodos listados acima sejam aplicados, a escalabilidade temporal é preservada. Em outras palavras, quando um quadro em nível superior é perdido (por exemplo, T3), os quadros em camadas inferiores ainda são decodificáveis (por exemplo, T1 e T2). f. Em outro exemplo, as imagens ou fatias com Id temporal inferior podem transportar informação sobre os parâmetros ALF dos IDs temporais superiores, neste caso, se uma imagem com ID temporal superior for perdida, os parâmetros podem ser obtidos a partir das imagens com IDs temporais mais baixos. Esses parâmetros também podem incluir se a imagem de ID temporal superior transporta tais parâmetros ALF, que esses parâmetros ou parâmetros fictícios (pré-configurados) podem ser adicionados ao armazenador. g. Em outro exemplo, métodos de gerenciamento de armazenador de imagem de decodificador (DPB) podem ser aplicados ao manuseio dos parâmetros temporais ALF, uma vez que o gerenciamento do DPB inclui o manuseio das imagens perdidas.
4. Dependendo da importância dos parâmetros ALF, (por exemplo, a importância pode ser medida baseada na frequência com que são utilizados ou baseada na informação da camada temporal), alguns desses parâmetros ALF importantes podem ser fixados e mantidos no armazenador até que uma próxima fatia I ser codificada. Tal métrica de importância pode ser utilizada para classificar e reordenar as entradas para reduzir a sobrecarga de sinalização do prevIdx de sinalização (por exemplo, codificação unária).
5. Decisões adicionais ou restrições sobre o carregamento e armazenamento de parâmetros ALF (gerenciamento do armazenador) podem ser feitas baseadas em qualquer outra informação secundária (além do ID da camada temporal) ou uma medida de importância que também pode ser armazenada com os parâmetros ALF.
6. Armazenadores separados podem ser utilizados para codificação separada de canais de luma e de croma. Como um resultado, cada armazenador pode possuir sinalização diferente de prevIdx para determinar os parâmetros ALF utilizados para canais de luma e de croma separadamente.
[0078] Esta revelação pode geralmente se referir a "sinalizar" algumas informações, tais como elementos de sintaxe. O termo "sinalizar" pode geralmente se referir à comunicação de valores para elementos de sintaxe e/ou outros dados utilizados 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. Como observado acima, o dispositivo fonte 102 pode transportar o fluxo de bits para o dispositivo destino 116 substancialmente em tempo real, ou não em tempo real, tal como pode ocorrer quando armazenando elementos de sintaxe para o dispositivo de armazenamento 112 para recuperação posterior pelo dispositivo destino 116.
[0079] As FIGS. 4A e 4B são diagramas conceituais ilustrando um exemplo de estrutura de árvore binária de árvore quaternária (QTBT) 130 e uma unidade de árvore de codificação (CTU) correspondente 132. As linhas contínuas representam a divisão de árvore quaternária e as linhas pontilhadas indicam a divisão de árvore binária. Em cada nó de divisão (ou seja, não folha) da árvore binária, um sinalizador é sinalizado para indicar qual tipo de divisão (ou seja, horizontal ou vertical) é utilizado, onde 0 indica divisão horizontal e 1 indica divisão vertical neste exemplo. Para a divisão árvore quaternária, não há necessidade de indicar o tipo de divisão, uma vez que os nós árvore quaternária dividem um bloco horizontalmente e verticalmente em 4 sub-blocos de igual tamanho. Consequentemente, o codificador de vídeo 200 pode codificar, e o decodificador de vídeo 300 pode decodificar,
elementos de sintaxe (tal como informação de divisão) para um nível de árvore de região da estrutura QTBT 130 (ou seja, as linhas contínuas) e elementos de sintaxe (tal como informação de divisão) para um nível de árvore de predição da estrutura QTBT 130 (ou seja, as linhas pontilhadas). O codificador de vídeo 200 pode codificar, e o decodificador de vídeo 300 pode decodificar, dados de vídeo, tais como dados de predição e de transformada, para as CUs representadas por nós folha terminal da estrutura QTBT 130.
[0080] Em geral, a CTU 132 da FIG. 4B pode ser associada a parâmetros definindo tamanhos de blocos correspondentes a nós da estrutura QTBT 130 no primeiro e segundo níveis. Esses parâmetros podem incluir um tamanho de CTU (representando um tamanho da CTU 132 em amostras), um tamanho mínimo de árvore quaternária (MinQTSize, representando um tamanho mínimo permitido de nó folha de árvore quaternária), um tamanho máximo de árvore binária (MaxBTSize, representando um tamanho máximo permitido de nó de raiz de árvore binária), uma profundidade máxima da árvore binária (MaxBTDepth, representando uma profundidade máxima permitida da árvore binária) e um tamanho mínimo da árvore binária (MinBTSize, representando o tamanho mínimo permitido do nó folha da árvore binária).
[0081] O nó raiz de uma estrutura QTBT correspondente a uma CTU pode possuir quatro nós filho no primeiro nível da estrutura QTBT, cada um dos quais pode ser dividido de acordo com a divisão de árvore quaternária. Ou seja, os nós do primeiro nível ou são nós folha (sem nós filhos) ou possuem quatro nós filhos. O exemplo da estrutura QTBT 130 representa tais nós, incluindo o nó pai e os nós filhos com linhas contínuas para ramificações. Se os nós do primeiro nível não forem maiores do que o tamanho máximo permitido do nó raiz da árvore binária (MaxBTSize), então os nós podem ser ainda divididos pelas respectivas árvores binárias. A divisão da árvore binária de um nó pode ser iterada até que os nós resultantes a partir da divisão atinjam o tamanho mínimo permitido do nó folha da árvore binária (MinBTSize) ou a profundidade máxima permitida da árvore binária (MaxBTDepth). O exemplo da estrutura QTBT 130 representa tais nós como possuindo linhas tracejadas para ramificações. O nó folha de árvore binária é referido como uma unidade de codificação (CU), a qual é utilizada para predição (por exemplo, predição intra-imagem ou entre imagens) e transformada, sem qualquer divisão adicional. Conforme discutido acima, as CUs também podem ser referidas como "blocos de vídeo" ou "blocos".
[0082] Em um exemplo da estrutura de divisão QTBT, o tamanho da 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 (para largura e altura) é definido como 4 e o MaxBTDepth é definido como 4. A divisão da árvore quaternária é aplicada para a CTU primeiro para gerar nós folha de árvore quaternária. Os nós folha de árvore quaternária podem possuir um tamanho de 16x16 (ou seja, o MinQTSize) a 128x128 (ou seja, o tamanho da CTU). Se o nó folha de árvore quaternária for 128x128, ele não será mais dividido pela árvore binária, uma vez que o tamanho excede o MaxBTSize (ou seja, 64x64, neste exemplo). Caso contrário, o nó folha de árvore quaternária será posteriormente dividido pela árvore binária. Portanto, o nó folha de árvore quaternária também é o nó raiz para a árvore binária e possui a profundidade da árvore binária como 0. Quando a profundidade da árvore binária atinge MaxBTDepth (4, neste exemplo), nenhuma divisão adicional é permitida. Quando o nó da árvore binária possui largura igual a MinBTSize (4, neste exemplo), isso implica que nenhuma divisão horizontal adicional é permitida. Similarmente, um nó de árvore binária com uma altura igual a MinBTSize implica que nenhuma divisão vertical adicional é permitida para esse nó de árvore binária. Conforme observado acima, os nós folha de árvore binária são referidos como CUs e são posteriormente processados de acordo com a predição e a transformada sem divisão adicional.
[0083] A FIG. 5 é um diagrama de blocos ilustrando um codificador de vídeo ilustrativo 200 que pode executar as técnicas desta revelação. A FIG. 5 é proporcionada para propósitos 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, esta revelação descreve o codificador de vídeo 200 no contexto de padrões de codificação de vídeo, tal como o padrão de codificação de vídeo HEVC e o padrão de codificação de vídeo H.266 em desenvolvimento. Entretanto, as técnicas desta revelação não estão limitadas a esses padrões de codificação de vídeo e são geralmente aplicáveis à codificação e decodificação de vídeo.
[0084] No exemplo da FIG. 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, a unidade de processamento de transformada inversa 212, a unidade de reconstrução 214, a unidade de filtro 216, o armazenador de imagem decodificada (DPB) 218 e a unidade de codificação por entropia 220. Qualquer ou todas 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, o DPB 218 e a unidade de codificação por entropia 220 podem ser implementadas em um ou mais processadores ou em sistema de circuitos de processamento. Além disso, o codificador de vídeo 200 pode incluir processadores ou sistema de processamento adicionais ou alternativos para executar estas e outras funções.
[0085] 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, a partir da fonte de vídeo 104 (FIG. 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 utilização na predição de dados de vídeo subsequente pelo codificador de vídeo 200. A memória de dados de vídeo 230 e o DPB 218 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 230 e o DPB 218 podem ser proporcionados 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 no chip com outros componentes do codificador de vídeo 200, conforme ilustrado, ou fora do chip em relação a estes componentes.
[0086] Nesta revelação, a referência à memória de dados de vídeo 230 não deve ser interpretada como sendo limitada à memória interna para o codificador de vídeo 200, a menos que especificamente descrita como tal, ou a memória externa para o codificador de vídeo 200, a menos que especificamente descrita como tal. Ao invés disso, referência à memória de dados de vídeo 230 deve ser entendida como memória de referência que armazena dados de vídeo que o codificador de vídeo 200 recebe para codificação (por exemplo, dados de vídeo para um bloco atual que deve ser codificado). A Memória 106 da FIG. 3 também pode proporcionar armazenamento temporário de saídas a partir das várias unidades do codificador de vídeo 200.
[0087] As várias unidades da FIG. 5 são ilustradas para auxiliar com o entendimento das operações executadas pelo codificador de vídeo 200. As unidades podem ser implementadas como circuitos de função fixa, circuitos programáveis ou uma combinação dos mesmos. Os circuitos de função fixa referem-se a circuitos que proporcionam funcionalidade particular e são predefinidos nas operações que podem ser executadas. Os circuitos programáveis referem-se a circuitos que podem ser programados para executar várias tarefas e proporcionam funcionalidade flexível nas operações que podem ser executadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que causa que os circuitos programáveis operem da maneira definida pelas instruções do software ou firmware. Os circuitos de função fixa podem executar instruções de software (por exemplo, para receber parâmetros ou emitir parâmetros), mas os tipos de operações que os circuitos de função fixa executam são geralmente imutáveis. Em alguns exemplos, a uma ou mais das unidades podem ser blocos de circuitos distintos (função fixa ou programável) e, em alguns exemplos, a uma ou mais unidades podem ser circuitos integrados.
[0088] O codificador de vídeo 200 pode incluir unidades lógicas aritméticas (ALUs), unidades de função elementar (EFUs), circuitos digitais, circuitos analógicos e/ou núcleos programáveis, formados a partir de circuitos programáveis. Em exemplos onde as operações do codificador de vídeo 200 são executadas utilizando software executado pelos circuitos programáveis, a memória 106 (FIG. 3) pode armazenar o código-objeto do software que o codificador de vídeo 200 recebe e executa, ou outra memória dentro do codificador de vídeo 200 (não apresentada) pode armazenar tais instruções.
[0089] 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 proporcionar os dados de vídeo para a unidade de geração residual 204 e para a unidade de seleção de modo 202. Os dados de vídeo na memória de dados de vídeo 230 podem ser dados de vídeo brutos que devem ser codificados.
[0090] A unidade de seleção de modo 202 inclui uma unidade de estimativa de movimento 222, uma unidade de compensação de movimento 224 e uma unidade de predição intra 226. A unidade de seleção de modo 202 pode incluir unidades funcionais adicionais para executar predição de vídeo de acordo com outros modos de predição. Como exemplos, a unidade de seleção de modo 202 pode incluir uma unidade de paleta, uma unidade de cópia intra-bloco (a qual pode ser parte da unidade de estimativa de movimento 222 e/ou da unidade de compensação de movimento 224), uma unidade afim, uma unidade de modelo linear (LM), ou similares.
[0091] A unidade de seleção de modo 202 geralmente coordena várias passagens de codificação para testar combinações de parâmetros de codificação e valores de distorção de taxa resultantes para tais combinações. Os parâmetros de codificação podem incluir a divisão 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, em última análise, selecionar a combinação de parâmetros de codificação possuindo valores de distorção de taxa que são melhores do que as outras combinações testadas.
[0092] O codificador de vídeo 200 pode dividir uma imagem recuperada a partir da memória de dados de vídeo
230 em uma série de CTUs e encapsular uma ou mais CTUs dentro de uma fatia. A unidade de seleção de modo 202 pode dividir uma CTU da imagem de acordo com uma estrutura de árvore, tal como a estrutura 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 da divisão de uma CTU de acordo com a estrutura de árvore. Tal CU também pode ser geralmente referida como um "bloco de vídeo" ou "bloco".
[0093] Em geral, a unidade de seleção de modo 202 também controla os componentes da mesma (por exemplo, a unidade de estimativa de movimento 222, a unidade de compensação de movimento 224 e a unidade de predição intra 226) para gerar um bloco de predição para um bloco atual (por exemplo, uma CU atual, ou em HEVC, a parte sobreposta de uma PU e uma TU). Para predição inter de um bloco atual, a unidade de estimativa de movimento 222 pode executar uma pesquisa de movimento para identificar um ou mais blocos de referência que correspondam mais proximamente em uma ou mais imagens de referência (por exemplo, uma ou mais imagens previamente codificadas armazenadas no DPB 218). Em particular, a unidade de estimativa de movimento 222 pode calcular um valor representativo de quão similar um bloco de referência potencial é para o bloco atual, por exemplo, de acordo com a soma da diferença absoluta (SAD), a soma das diferenças quadradas (SSD), a diferença absoluta média (MAD), as diferenças quadradas médias (MSD), ou similares. A unidade de estimativa de movimento 222 pode geralmente executar esses cálculos utilizando diferenças de amostra por amostra entre o bloco atual e o bloco de referência sendo considerado. A unidade de estimativa de movimento 222 pode identificar um bloco de referência possuindo um menor valor resultante desses cálculos, indicando um bloco de referência que corresponda mais proximamente do bloco atual.
[0094] A unidade de estimativa de movimento 222 pode formar um ou mais vetores de movimento (MVs) que definem as posições dos blocos de referência nas imagens de referência em relação à posição do bloco atual em uma imagem atual. A unidade de estimativa de movimento 222 pode então proporcionar os vetores de movimento para a unidade de compensação de movimento 224. Por exemplo, para predição inter unidirecional, a unidade de estimativa de movimento 222 pode proporcionar um único vetor de movimento, enquanto que para a predição inter bidirecional, a unidade de estimativa de movimento 222 pode proporcionar dois vetores de movimento. A unidade de compensação de movimento 224 pode, então, gerar um bloco de predição utilizando os vetores de movimento. Por exemplo, a unidade de compensação de movimento 224 pode recuperar dados do bloco de referência utilizando o vetor de movimento. Como outro exemplo, se o vetor de movimento possui precisão de amostra fracionária, a unidade de compensação de movimento 224 pode interpolar valores para o bloco de predição de acordo com um ou mais filtros de interpolação. Além disso, para a predição inter 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 nivelamento pela média de amostra por amostra ou por nivelamento pela média ponderada.
[0095] Como outro exemplo, para predição intra ou codificação predição intra, a unidade de predição intra 226 pode gerar o bloco de predição a partir de amostras vizinhas do bloco atual. Por exemplo, para modos direcionais, a unidade de predição intra 226 pode geralmente combinar matematicamente valores de amostras vizinhas e preencher esses valores calculados na direção definida através do bloco atual para produzir o bloco de predição. Como outro exemplo, para o modo DC, a unidade de predição intra 226 pode calcular uma média das amostras vizinhas do bloco atual e gerar o bloco de predição incluindo esta média resultante para cada amostra do bloco de predição.
[0096] A unidade de seleção de modo 202 proporciona 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 a partir da unidade de seleção de modo 202. A Unidade de geração residual 204 calcula diferenças amostra por amostra entre o bloco atual e o bloco de predição. As diferenças de amostra por amostra resultantes definem um bloco residual para o bloco atual. Em alguns exemplos, a unidade de geração residual 204 também pode determinar diferenças entre os valores de amostra no bloco residual para gerar um bloco residual utilizando modulação de código de pulso diferencial residual (RDPCM). Em alguns exemplos, a unidade de geração residual 204 pode ser formada utilizando um ou mais circuitos subtratores que excutam a subtração binária.
[0097] Em exemplos onde a unidade de seleção de modo 202 divide as CUs em PUs, cada PU pode ser associada com uma unidade de predição de luma e com as unidades de predição de croma correspondentes. O codificador de vídeo 200 e o decodificador de vídeo 300 podem suportar as PUs possuindo vários tamanhos. Conforme indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação de luma da CU e o tamanho de uma PU pode se referir ao tamanho de uma unidade de predição de luma da PU. Assumindo que o tamanho de uma CU particular é 2Nx2N, o codificador de vídeo 200 pode suportar tamanhos de PU de 2Nx2N ou NxN para predição intra e tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N, NxN ou similares para predição inter. O codificador de vídeo 200 e o decodificador de vídeo 300 também podem suportar divisão assimétrica para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N para predição inter.
[0098] Em exemplos onde a unidade de seleção de modo 202 não divide ainda mais uma CU em PUs, cada CU pode estar associada com um bloco de codificação de luma e com blocos de codificação de croma correspondentes. Como acima, o tamanho de uma UC 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 300 podem suportar tamanhos de CU de 2Nx2N, 2NxN ou Nx2N.
[0099] Para outras técnicas de codificação de vídeo, tais como uma codificação de modo de cópia intra- bloco, uma codificação de modo afim e uma codificação de modo de modelo linear (LM), tais como alguns exemplos, a unidade de seleção de modo 202, via as respectivas unidades associadas com as técnicas de codificação, gera um bloco de predição para o bloco atual sendo codificado. Em alguns exemplos, tal como a codificação de modo de paleta, a unidade de seleção de modo 202 pode não gerar um bloco de predição e, ao invés disso, gerar elementos de sintaxe que indicam a maneira pela qual reconstruir o bloco baseado em uma paleta selecionada. Em tais modos, a unidade de seleção de modo 202 pode proporcionar esses elementos de sintaxe para a unidade de codificação por entropia 220 para serem codificados.
[00100] Conforme descrito acima, a unidade de geração residual 204 recebe os dados de vídeo para o bloco atual e o bloco de predição correspondente. A unidade de geração residual 204, então, gera um bloco residual para o bloco atual. Para gerar o bloco residual, a unidade de geração residual 204 calcula diferenças de amostra por amostra entre o bloco de predição e o bloco atual.
[00101] A unidade de processamento de transformada 206 aplica uma ou mais transformadas ao bloco residual para gerar um bloco de coeficientes de transformada (referido neste documento como um “bloco de coeficientes de transformada”). A unidade de processamento de transformada 206 pode aplicar várias transformadas para um bloco residual para formar o bloco de coeficientes de transformada. Por exemplo, a unidade de processamento de transformada 206 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada direcional, uma transformada de Karhunen-Loeve (KLT) ou uma transformada conceitualmente similar a um bloco residual. Em alguns exemplos, a unidade de processamento de transformada 206 pode executar várias transformadas em um bloco residual, por exemplo, uma transformada primária e uma transformada secundária, tal como uma transformada rotacional. Em alguns exemplos, a unidade de processamento de transformada 206 não aplica transformadas para um bloco residual.
[00102] A unidade de quantização 208 pode quantizar os coeficientes de transformada em um bloco de coeficientes de transformada, para produzir um bloco de coeficientes de transformada quantizados. A unidade de quantização 208 pode quantizar os coeficientes de transformada de um bloco de coeficientes 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, via a unidade de seleção de modo 202) pode ajustar o grau de quantização aplicado aos blocos de coeficientes de transformada associados ao bloco atual, por ajustar o valor QP associado à CU. A quantização pode introduzir perda de informação e, assim, os coeficientes de transformada quantizados podem possuir menor precisão do que os coeficientes de transformada originais produzidos pela unidade de processamento de transformada 206.
[00103] A unidade de quantização inversa 210 e a unidade de processamento de transformada inversa 212 podem aplicar quantização inversa e transformadas inversas a um bloco de coeficientes de transformada quantizados, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficientes 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) baseado no bloco residual reconstruído e em um bloco de predição gerado pela unidade de seleção de modo 202. Por exemplo, a unidade de reconstrução 214 pode adicionar amostras do bloco residual reconstruído para amostras correspondentes do bloco de predição gerado pela unidade de seleção de modo 202 para produzir o bloco reconstruído.
[00104] A unidade de filtro 216 pode executar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 216 pode executar operações de desagrupamento para reduzir artefatos de blocagem ao longo das bordas das CUs. As operações da unidade de filtro 216 podem ser ignoradas, em alguns exemplos. De acordo com as técnicas desta revelação, a unidade de filtro 216 pode manter um arranjo incluindo parâmetros de filtro de loop adaptativo (ALF) e valores de identificador (ID) de camada temporal associados. O arranjo pode possuir um tamanho predefinido de N elementos, onde N é um valor de número inteiro não negativo. O arranjo pode estar em conformidade com o exemplo da Tabela 1, conforme discutido acima.
[00105] Desta maneira, quando executando a filtragem de blocos decodificados de dados de vídeo de uma imagem atual de uma camada temporal atual, a unidade de filtro 216 pode utilizar parâmetros ALF a partir do arranjo que são a partir da mesma ou de uma camada temporal inferior. Em particular, a unidade de filtro 216 pode comparar os IDs de camada temporal dos elementos do arranjo a um valor de ID de camada temporal atual para a imagem atual e selecionar apenas aqueles parâmetros ALF possuindo IDs de camada que são menores ou iguais ao valor de ID de camada temporal atual a ser utilizado para filtrar os blocos decodificados da imagem atual.
[00106] A unidade de filtro 216 pode armazenar parâmetros ALF no arranjo em uma ordem de decodificação ou em outra ordem predeterminada. Assim, a unidade de filtro 216 pode substituir os parâmetros ALF existentes no arranjo de uma maneira primeiro a entrar, primeiro a sair (FIFO), ou priorizar a remoção de parâmetros ALF em camadas temporais específicas a partir do arranjo.
[00107] A unidade de filtro 216 pode determinar alguns parâmetros ALF no arranjo a serem utilizados para uma imagem atual e sinalizar valores representando quais dos parâmetros ALF são utilizados quando filtrando a imagem atual. A unidade de filtro 216 pode proporcionar esses valores para a unidade de codificação por entropia 220, que pode codificar os valores utilizando um código unário.
[00108] O codificador de vídeo 200 armazena blocos reconstruídos no DPB 218. Por exemplo, em exemplos onde as operações da unidade de filtro 216 não são necessárias, a unidade de reconstrução 214 pode armazenar blocos reconstruídos no DPB 218. Em exemplos onde as operações da unidade de filtro 216 são necessárias, a unidade de filtro 216 pode armazenar os blocos reconstruídos filtrados no DPB 218. A unidade de estimativa de movimento 222 e a unidade de compensação de movimento 224 podem recuperar uma imagem de referência a partir do DPB 218, formada a partir dos blocos reconstruídos (e potencialmente filtrados), para predizer inter os blocos de imagens subsequentemente codificada. Adicionalmente, a unidade de predição intra 226 pode utilizar blocos reconstruídos no DPB 218 de uma imagem atual para predizer intra outros blocos na imagem atual.
[00109] Em geral, a unidade de codificação por entropia 220 pode codificar por entropia elementos de sintaxe recebidos a partir de outros componentes funcionais do codificador de vídeo 200. Por exemplo, a unidade de codificação por entropia 220 pode codificar por entropia blocos de coeficientes de transformada quantizados a partir da unidade de quantização 208. Como outro exemplo, a unidade de codificação por entropia 220 pode codificar por entropia os elementos de sintaxe de predição (por exemplo, informação de movimento para predição inter ou informação de modo intra para predição intra) a partir da unidade de seleção de modo 202. A unidade de codificação por entropia 220 pode executar 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 executar uma operação de codificação de comprimento variável adaptável ao contexto (CAVLC), uma operação CABAC, uma operação de codificação de comprimento variável a variável (V2V), uma operação de codificação aritmética binária adaptável ao contexto baseada em sintaxe (SBAC), uma operação de codificação por Entropia de Divisão de Intervalo de Probabilidade (PIPE), uma operação de codificação Exponencial-Golomb ou outro tipo de operação de codificação por entropia nos dados. Em alguns exemplos, a unidade de codificação por entropia 220 pode operar em modo de desvio, onde os elementos de sintaxe não são codificados por entropia.
[00110] O codificador de vídeo 200 pode emitir um fluxo de bits que inclui os elementos de sintaxe codificados por entropia necessários para reconstruir blocos de uma fatia ou imagem. Em particular, a unidade de codificação por entropia 220 pode enviar o fluxo de bits.
[00111] 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 de 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 de croma de uma PU.
[00112] Em alguns exemplos, as operações executadas 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 de croma. Ao invés disso, o MV para o bloco de codificação de luma pode ser dimensionado para determinar o MV para os blocos de croma e a imagem de referência pode ser a mesma. Como outro exemplo, o processo de predição intra pode ser o mesmo para o bloco de codificação de luma e para os blocos de codificação de croma.
[00113] O codificador de vídeo 200 representa um exemplo de um dispositivo configurado para codificar dados de vídeo, incluindo uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em sistema de circuitos e configuradas para armazenar conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional possuindo um tamanho predefinido de N elementos de memória, N sendo um valor inteiro positivo, compreendendo o armazenamento, em um ou mais dos elementos de memória do arranjo, tanto dos parâmetros ALF correspondentes e como de um valor de identificador (ID) de camada temporal indicando um camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; decodificar um ou mais blocos de dados de vídeo; e filtrar o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional.
[00114] A FIG. 6 é um diagrama de blocos ilustrando um decodificador de vídeo ilustrativo 300 que pode executar as técnicas desta revelação. A FIG. 6 é proporcionada para propósitos de explicação e não é limitante nas 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 de acordo com as técnicas de JEM, VVC e HEVC. Entretanto, as técnicas desta revelação podem ser executadas por dispositivos de codificação de vídeo que são configurados para outros padrões de codificação de vídeo.
[00115] No exemplo da FIG. 6, o decodificador de vídeo 300 inclui a memória de armazenador 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, a unidade de filtro 312 e o armazenador de imagem decodificada (DPB) 314. A unidade de processamento de predição 304 inclui a unidade de compensação de movimento 316 e a unidade de predição intra
318. A unidade de processamento de predição 304 pode incluir unidades adicionais para executar predição de acordo com outros modos de predição. Como exemplos, a unidade de processamento de predição 304 pode incluir uma unidade de paleta, uma unidade de cópia intra-bloco (a qual pode fazer parte da unidade de compensação de movimento 316), uma unidade afim, uma unidade de modelo linear (LM) ou similares. Em outros exemplos, o decodificador de vídeo 300 pode incluir mais, menos ou diferentes componentes funcionais.
[00116] A memória CPB 320 pode armazenar dados de vídeo, tal como um fluxo de bits de vídeo codificado, para serem decodificados pelos componentes do decodificador de vídeo 300. Os dados de vídeo armazenados na memória CPB 320 podem ser obtidos, por exemplo, a partir de meio legível por computador 110 (FIG. 3). A memória CPB 320 pode incluir um CPB que armazena dados de vídeo codificados (por exemplo, elementos de sintaxe) a partir de um fluxo de bits de vídeo codificado. Além disso, a memória CPB 320 pode armazenar dados de vídeo que não sejam elementos de sintaxe de uma imagem codificada, tal como dados temporários representando saídas das várias unidades do decodificador de vídeo 300. O DPB 314 geralmente armazena imagens decodificadas, as quais o decodificador de vídeo 300 pode emitir e/ou utilizar como dados de vídeo de referência quando decodificando dados ou imagens subsequentes do fluxo de bits de vídeo codificado. A memória CPB 320 e o DPB 314 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória CPB 320 e o DPB 314 podem ser proporcionados pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em vários exemplos, a memória CPB 320 pode estar no chip com outros componentes do decodificador de vídeo 300 ou fora do chip em relação a esses componentes.
[00117] Adicionalmente ou alternativamente, em alguns exemplos, o decodificador de vídeo 300 pode recuperar dados de vídeo codificados a partir da memória 120 (FIG. 3). Ou seja, a memória 120 pode armazenar dados conforme discutido acima com a memória CPB 320. Da mesma forma, a memória 120 pode armazenar instruções a serem executadas pelo decodificador de vídeo 300, quando algumas ou todas as funcionalidades do decodificador de vídeo 300 são implementadas no software a ser executado por sistema de circuitos de processamento do decodificador de vídeo
300.
[00118] As várias unidades apresentadas na FIG. 6 são ilustradas para auxiliar no entendimento das operações executadas 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 à FIG. 5, os circuitos de função fixa referem-se a circuitos que proporcionam funcionalidade particular e são predefinidos nas operações que podem ser executadas. Os circuitos programáveis referem-se a circuitos que podem ser programados para executar várias tarefas e proporcionam funcionalidade flexível nas operações que podem ser executadas. Por exemplo, os circuitos programáveis podem executar software ou firmware que causam que os circuitos programáveis operem da maneira definida pelas instruções do software ou do 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 executam são geralmente imutáveis. Em alguns exemplos, a uma ou mais das unidades podem ser blocos de circuitos distintos (função fixa ou programável) e, em alguns exemplos, a uma ou mais unidades podem ser circuitos integrados.
[00119] 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. Nos exemplos onde as operações do decodificador de vídeo 300 são executadas por software executando nos circuitos programáveis, a memória no chip ou fora do chip pode armazenar instruções (por exemplo, código objeto) do software que o decodificador de vídeo 300 recebe e executa.
[00120] A unidade de decodificação por entropia 302 pode receber dados de vídeo codificados a partir do CPB e decodificar por entropia os dados de vídeo para reproduzir elementos de sintaxe. A unidade de processamento de predição 304, a unidade de quantização inversa 306, a unidade de processamento de transformada inversa 308, a unidade de reconstrução 310 e a unidade de filtro 312 podem gerar dados de vídeo decodificados baseados nos elementos de sintaxe extraídos a partir do fluxo de bits.
[00121] 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 executar uma operação de reconstrução em cada bloco individualmente (onde o bloco atualmente sendo reconstruído, ou seja, decodificado, pode ser referido como um "bloco atual").
[00122] A unidade de decodificação por entropia 302 pode decodificar por entropia elementos de sintaxe definindo coeficientes de transformada quantizados de um bloco de coeficientes de transformada quantizados, bem como a informação de transformada, tal como um parâmetro de quantização (QP) e/ou uma indicação (indicações) de modo de transformada. A unidade de quantização inversa 306 pode usar o QP associado ao bloco de coeficientes de transformada quantizados para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa para a unidade de quantização inversa 306 aplicar. A unidade de quantização inversa 306 pode, por exemplo, executar uma operação de deslocamento à esquerda de bit a bit para quantizar inversamente os coeficientes de transformada quantizados. A unidade de quantização inversa 306 pode, desse modo, formar um bloco de coeficientes de transformada incluindo coeficientes de transformada.
[00123] Após a unidade de quantização inversa 306 formar o bloco de coeficientes de transformada, a unidade de processamento de transformada inversa 308 pode aplicar uma ou mais transformadas inversas ao bloco de coeficientes de transformada para gerar um bloco residual associado com o bloco atual. Por exemplo, a unidade de processamento de transformada inversa 308 pode aplicar uma DCT inversa, uma transformada inversa de número inteiro, uma transformada inversa de Karhunen-Loeve (KLT), uma transformada inversa rotacional, uma transformada inversa direcional ou outra transformada inversa para o bloco de coeficientes de transformada.
[00124] Além disso, a unidade de processamento de predição 304 gera um bloco de predição de acordo com elementos de sintaxe de informação 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ção de predição indicam que o bloco atual é predito inter, a unidade de compensação de movimento 316 pode gerar o bloco de predição. Neste caso, os elementos de sintaxe de informação de predição podem indicar uma imagem de referência no DPB 314 a partir da qual recuperar um bloco de referência, bem como um vetor de movimento identificando uma localização do bloco de referência na imagem de referência em relação à localização do bloco atual na imagem atual. A unidade de compensação de movimento 316 pode geralmente executar o processo de predição inter de um modo que é substancialmente similar ao descrito com respeito à unidade de compensação de movimento 224 (FIG. 5).
[00125] Como outro exemplo, se os elementos de sintaxe de informação de predição indicam que o bloco atual é predito intra, a unidade de predição intra 318 pode gerar o bloco de predição de acordo com um modo de predição intra indicado pelos elementos de sintaxe de informação de predição. Novamente, a unidade de predição intra 318 pode geralmente executar o processo de predição intra de um modo que é substancialmente similar àquele descrito em relação à unidade de predição intra 226 (FIG. 5). A unidade predição intra 318 pode recuperar os dados de amostras vizinhas para o bloco atual a partir do DPB 314.
[00126] A unidade de reconstrução 310 pode reconstruir o bloco atual utilizando o bloco de predição e o bloco residual. Por exemplo, a unidade de reconstrução 310 pode adicionar amostras do bloco residual às amostras correspondentes do bloco de predição para reconstruir o bloco atual.
[00127] A unidade de filtro 312 pode executar uma ou mais operações de filtro em blocos reconstruídos. Por exemplo, a unidade de filtro 312 pode executar operações de desagrupamento para reduzir artefatos de blocagem ao longo das bordas dos blocos reconstruídos. As operações da unidade de filtro 312 não são necessariamente executadas em todos os exemplos. De acordo com as técnicas desta revelação, a unidade de filtro 312 pode manter um arranjo incluindo os parâmetros de filtro de loop adaptativo (ALF) e os valores de identificador (ID) de camada temporal associados. O arranjo pode possuir um tamanho predefinido de N elementos, onde N é um valor de número inteiro não negativo. O arranjo pode estar em conformidade com o exemplo da Tabela 1, conforme discutido acima.
[00128] Desta maneira, quando executando a filtragem de blocos decodificados de dados de vídeo de uma imagem atual de uma camada temporal atual, a unidade de filtro 312 pode utilizar parâmetros ALF a partir do arranjo que são da mesma ou de uma camada temporal inferior. Em particular, a unidade de filtro 312 pode comparar os IDs de camada temporal dos elementos do arranjo com um valor de ID de camada temporal atual para a imagem atual e selecionar somente aqueles parâmetros ALF possuindo IDs de camada temporal que são menores ou iguais ao valor de ID de camada temporal atual a serem utilizados para filtrar os blocos decodificados da imagem atual.
[00129] A unidade de filtro 312 pode armazenar parâmetros ALF no arranjo em uma ordem de decodificação ou outra ordem predeterminada. Assim, a unidade de filtro 312 pode substituir os parâmetros ALF existentes no arranjo de uma forma primeiro a entrar, primeiro a sair (FIFO), ou priorizar a remoção de parâmetros ALF em camadas temporais particulares a partir do arranjo.
[00130] Em alguns exemplos, a unidade de decodificação por entropia 302 pode decodificar por entropia valores (por exemplo, valores codificados unários) representando quais parâmetros ALF devem ser utilizados quando filtrando uma imagem atual. A unidade de decodificação por entropia 302 pode proporcionar esses valores para a unidade de filtro 312, a qual pode determinar os parâmetros ALF no arranjo a serem utilizados para uma imagem atual a partir dos valores.
[00131] O decodificador de vídeo 300 pode armazenar os blocos reconstruídos filtrados no DPB 314. Como discutido acima, o DPB 314 pode proporcionar informação de referência, tais como amostras de uma imagem atual para predição intra e imagens previamente decodificadas para compensação de movimento subsequente, para a unidade de processamento de predição 304. Além disso, o decodificador de vídeo 300 pode emitir imagens decodificadas a partir do DPB para apresentação subsequente em um dispositivo de vídeo, tal como o dispositivo de vídeo 118 da FIG. 3.
[00132] Desta forma, o decodificador de vídeo 300 representa um exemplo de um dispositivo de decodificação de vídeo, incluindo uma memória configurada para armazenar dados de vídeo e uma ou mais unidades de processamento implementadas em sistema de circuitos e configuradas para armazenar conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional possuindo um tamanho predefinido de N elementos de memória, N sendo um valor de número inteiro positivo, compreendendo armazenar, em um ou mais dos elementos de memória do arranjo, tanto os parâmetros ALF correspondentes como um valor de identificador (ID) de camada temporal indicando uma camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; decodificar um ou mais blocos de dados de vídeo; e filtrar o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional.
[00133] A FIG. 7 é um fluxograma ilustrando um método ilustrativo de decodificação e filtragem de dados de vídeo de acordo com as técnicas desta revelação. O método da FIG. 7 é explicado em relação ao decodificador de vídeo 300 da FIG. 6 para propósitos de explicação. Entretanto, deve ser entendido que outros dispositivos de codificação de vídeo podem ser configurados para executar este ou um método similar. Por exemplo, o codificador de vídeo 200 pode executar um método similar, codificar blocos de dados de vídeo antes de decodificar os blocos de dados de vídeo, onde a decodificação e filtragem são executadas pela unidade de compensação de movimento 224, pela unidade de predição intra 226, pela unidade de quantização inversa 210, pela unidade de processamento de transformada inversa 212, pela unidade de reconstrução 214 e pela unidade de filtro 216 do codificador de vídeo 200.
[00134] Inicialmente, o decodificador de vídeo 300 pode instanciar um arranjo de N elementos (350), onde N é um valor de número inteiro não negativo. O decodificador de vídeo 300 pode instanciar o arranjo, por exemplo, em uma memória incluindo o DPB 314, uma memória da unidade de filtro 312 ou outra memória dentro do decodificador de vídeo 300. Em geral, as referências a uma "memória" devem ser entendidas como incluindo qualquer uma ou todos dessas memórias, ou as memórias externas ao decodificador de vídeo 300, tal como a memória 120 da FIG. 3.
[00135] O decodificador de vídeo 300 pode armazenar parâmetros de filtro de loop adaptativo (ALF) em elementos do arranjo (352). Em particular, como apresentado na Tabela 1 acima, o decodificador de vídeo 300 pode armazenar os parâmetros ALF reais em elementos (ou seja, células) do arranjo, juntamente com armazenar os respectivos valores de identificador (ID) de camada temporal com os parâmetros ALF (354). Ou seja, os valores ID de camada temporal indicam valores ID de camada temporal de imagens a partir dos quais os parâmetros ALF são estimados ou devem ser estimados.
[00136] O decodificador de vídeo 300 pode, então, decodificar um ou mais blocos de uma imagem atual em uma camada temporal atual (356). Por exemplo, o decodificador de vídeo 300 pode predizer os blocos utilizando a predição inter executada pela unidade de compensação de movimento 316 e/ou predição intra executada pela unidade de predição intra 318, formando blocos de predição. O decodificador de vídeo 300 também pode quantificar inversamente e transformar inversamente coeficientes de transformada quantizados utilizando a unidade de quantização inversa 306 e a unidade de processamento de transformada inversa 308, formando blocos residuais incluindo amostras residuais. A unidade de reconstrução 310 pode então combinar os blocos residuais com os blocos de predição correspondentes em uma base de amostra por amostra para formar blocos decodificados para a imagem atual.
[00137] A unidade de filtro 312 pode então executar a filtragem de loop adaptativo dos blocos decodificados da imagem atual. Em particular, de acordo com as técnicas desta revelação, a unidade de filtro 312 pode determinar um ID de camada temporal atual para a imagem atual e determinar os parâmetros ALF do arranjo possuindo IDs de camada temporal menores ou iguais ao ID de camada temporal atual para o processo de filtragem executado nos blocos decodificados. A unidade de filtro 312 pode, então, filtrar os blocos decodificados utilizando os parâmetros ALF determinados (360). Desta forma, o decodificador de vídeo 300 pode evitar aplicar os parâmetros ALF de imagens com um ID de camada temporal maior do que o ID de camada temporal atual para os blocos decodificados da imagem atual.
[00138] O decodificador de vídeo 300 pode então armazenar os blocos decodificados filtrados no DPB 314 (362). O decodificador de vídeo 300 pode, em última análise, emitir uma imagem decodificada incluindo os blocos decodificados filtrados e também utilizar a imagem decodificada como uma imagem de referência para uma imagem a ser decodificada subsequentemente. O decodificador de vídeo 300 pode atualizar os parâmetros ALF no arranjo utilizando os dados de vídeo decodificados, por exemplo, os parâmetros decodificados do fluxo de bits e/ou os dados determinados a partir da própria imagem decodificada.
[00139] Em alguns casos, adicionar parâmetros ALF ao arranjo pode exceder o tamanho de N do armazenador. Em tais casos, o decodificador de vídeo 300 pode remover parâmetros existentes do armazenador, por exemplo, em uma maneira de primeiro a entrar, primeiro a sair (FIFO). Assim, o decodificador de vídeo 300 pode remover os parâmetros ALF mais antigos do arranjo e adicionar os parâmetros ALF mais recentes no lugar dos parâmetros ALF mais antigos removidos.
[00140] Desta forma, o método da FIG. 7 representa um exemplo de um método para decodificar dados de vídeo, incluindo armazenar conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional possuindo um tamanho predefinido de N elementos de memória, N sendo um valor de número inteiro positivo, em que armazenar os conjuntos de parâmetros ALF compreende armazenar, em um ou mais dos elementos de memória do arranjo, tanto os parâmetros ALF correspondentes como um valor de identificador (ID) de camada temporal indicando uma camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; decodificar um ou mais blocos de dados de vídeo; e filtrar o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional.
[00141] Deve-se reconhecer que, dependendo do exemplo, alguns atos ou eventos de qualquer uma das técnicas descritas neste documento podem ser executados em uma sequência diferente, podem ser adicionados, mesclados ou deixados de fora (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em alguns exemplos, atos ou eventos podem ser executados simultaneamente, por exemplo, através de processamento de múltiplos encadeamentos, processamento de interrupção ou vários processadores, ao invés de sequencialmente.
[00142] 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 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 baseada em hardware. A mídia legível por computador pode incluir mídia de armazenamento legível por computador, a qual corresponde a um meio tangível, tal como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador a partir de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desta forma, a mídia legível por computador geralmente pode corresponder a (1) mídia de armazenamento tangível legível por computador que não é temporária ou (2) um meio de comunicação, tal como um sinal ou onda portadora. A mídia de armazenamento de dados pode ser qualquer mídia disponível que possa ser acessada 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.
[00143] A título de exemplo, e não como limitação, tais mídias de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser utilizado para armazenar o código do programa desejado na forma de instruções ou de estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada meio legível por computador. Por exemplo, se as instruções são transmitidas a partir de um site da web, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias não cabeadas, tais como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias não cabeadas, tais como infravermelho, rádio e micro-ondas, estão incluídos na definição de meio. Deve ser entendido, entretanto, que a mídia de armazenamento legível por computador e a mídia de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios temporários, mas são direcionados para mídia de armazenamento não temporária tangível. Disco magnético e disco ótico, como utilizado neste documento, incluem disco ótico compacto (CD), disco ótico a laser, disco ótico, disco ótico versátil digital (DVD), disco ótico flexível e disco ótico Blu-ray onde discos magnéticos normalmente reproduzem dados magneticamente, enquanto discos óticos reproduzem dados opticamente com lasers. As combinações dos itens acima também devem ser incluídas dentro do escopo da mídia legível por computador.
[00144] As instruções podem ser executadas por um ou mais processadores, tais 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 sistema de circuitos integrados ou separados equivalentes. Consequentemente, os termos "processador" e "sistema de circuitos de processamento", conforme utilizados neste documento, podem se referir a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para a implementação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade descrita neste documento pode ser proporcionada dentro de módulos de hardware e/ou software dedicados configurados para codificar e decodificar ou incorporadas em um codec combinado. Além disso, as técnicas poderiam ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[00145] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone não cabeado, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta revelação para enfatizar os aspectos funcionais dos dispositivos configurados para executar as técnicas reveladas, mas não necessariamente requerem a realização por diferentes unidades de hardware. Ao invés disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou proporcionadas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com software e/ou firmware adequados.
[00146] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das reivindicações seguintes.

Claims (30)

REIVINDICAÇÕES
1. Método de decodificação de dados de vídeo, o método compreendendo: armazenar conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional possuindo um tamanho predefinido de N elementos de memória, N sendo um valor de número inteiro positivo, em que armazenar os conjuntos de parâmetros ALF compreende armazenar, em um ou mais dos elementos de memória do arranjo, tanto os parâmetros ALF correspondentes como um valor de identificador (ID) de camada temporal indicando uma camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; decodificar um ou mais blocos de dados de vídeo; e filtrar o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional.
2. Método, de acordo com a reivindicação 1, em que armazenar os conjuntos de parâmetros ALF compreende o armazenar os parâmetros ALF de pelo menos uma dentre uma fatia B ou uma fatia P.
3. Método, de acordo com a reivindicação 1, em que armazenar os conjuntos de parâmetros ALF compreende armazenar os conjuntos de parâmetros ALF em uma ordem determinada.
4. Método, de acordo com a reivindicação 3, em que a ordem determinada compreende uma ordem de decodificação.
5. Método, de acordo com a reivindicação 3, em que quando um novo conjunto de parâmetros ALF é recebido e todos os N elementos de memória são utilizados, o método adicionalmente compreende: remover uma entrada a partir de um dos elementos da memória; e armazenar o novo conjunto de parâmetros ALF em um dos elementos de memória.
6. Método, de acordo com a reivindicação 5, em que remover a uma entrada compreende selecionar um dos elementos de memória de acordo com uma ordem de primeiro a entrar, primeiro a sair (FIO).
7. Método, de acordo com a reivindicação 5, em que remover a uma entrada compreende selecionar um dos elementos de memória de modo que o um dos elementos de memória possua um valor ID temporal comum com um valor ID temporal do novo conjunto de parâmetros ALF.
8. Método, de acordo com a reivindicação 1, adicionalmente compreendendo manter uma variável de índice anterior possuindo um valor representando qual dos conjuntos de parâmetros ALF deve ser utilizado para a filtragem.
9. Método, de acordo com a reivindicação 8, em que a variável de índice anterior possui um formato de código unário.
10. Método, de acordo com a reivindicação 8, em que o valor da variável de índice anterior varia de 0 a N-
1.
11. Método, de acordo com a reivindicação 8, em que o um ou mais blocos são incluídos em uma imagem possuindo um ID temporal atual, e em que filtrar compreende filtrar o um ou mais blocos utilizando os parâmetros ALF incluídos no arranjo possuindo IDs temporais iguais ou menores do que o ID temporal atual.
12. Método, de acordo com a reivindicação 8, adicionalmente compreendendo codificar um valor representando uma entrada do arranjo de acordo com um ID temporal de uma imagem atual sendo codificada.
13. Método, de acordo com a reivindicação 1, adicionalmente compreendendo: detectar que uma imagem foi perdida a partir de um fluxo de bits incluindo os dados de vídeo; e adicionar um conjunto pré-configurado de parâmetros ALF para a imagem que foi perdida.
14. Método, de acordo com a reivindicação 1, adicionalmente compreendendo evitar a remoção de um ou mais dos conjuntos de parâmetros de ALF até depois de ter codificado uma imagem predita intra subsequente (imagem I) dos dados de vídeo.
15. Método, de acordo com a reivindicação 1, adicionalmente compreendendo codificar o um ou mais blocos antes de decodificar o um ou mais blocos.
16. Dispositivo para decodificar dados de vídeo, o dispositivo compreendendo uma memória configurada para armazenar dados de vídeo; e um ou mais processadores implementados em sistema de circuitos e configurados para: armazenar conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional na memória, o arranjo unidimensional possuindo um tamanho predefinido de N elementos de memória, N sendo um valor de número inteiro positivo, em que o um ou mais processadores são configurados para armazenar, em um ou mais dos elementos de memória do arranjo, tanto parâmetros ALF correspondentes como um valor de identificador (ID) de camada temporal indicando uma camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; decodificar um ou mais blocos dos dados de vídeo; e filtrar o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional.
17. Dispositivo, de acordo com a reivindicação 16, em que o um ou mais processadores são configurados para armazenar os conjuntos de parâmetros ALF em uma ordem de decodificação.
18. Dispositivo, de acordo com a reivindicação 17, em que quando um novo conjunto de parâmetros ALF é recebido e todos os N elementos de memória são utilizados, o um ou mais processadores são configurados para: selecionar um dos elementos de memória de acordo com uma ordem primeiro a entrar, primeiro a sair (FIFO); remover o elemento selecionado dentre os elementos de memória; e armazenar o novo conjunto de parâmetros ALF no elemento selecionado dos elementos de memória.
19. Dispositivo, de acordo com a reivindicação 16, em que o um ou mais processadores são configurados para manter uma variável de índice anterior possuindo um valor representando qual dos conjuntos dos parâmetros ALF deve ser utilizado para a filtragem.
20. Dispositivo, de acordo com a reivindicação
19, em que o um ou mais blocos estão incluídos em uma imagem possuindo um ID temporal atual, e em que o um ou mais processadores são configurados para filtrar o um ou mais blocos utilizando os parâmetros ALF incluídos no arranjo possuindo IDs temporais iguais ou menores do que o ID temporal atual.
21. Dispositivo, de acordo com a reivindicação 19, em que o um ou mais processadores são adicionalmente configurados para codificar um valor representando uma entrada do arranjo de acordo com um ID temporal de uma imagem atual sendo codificada.
22. Dispositivo, de acordo com a reivindicação 16, em que o um ou mais processadores são adicionalmente configurados para codificar o um ou mais blocos antes de decodificar o um ou mais blocos.
23. Dispositivo, de acordo com a reivindicação 16, adicionalmente compreendendo um vídeo configurado para exibir os dados de vídeo.
24. Dispositivo, de acordo com a reivindicação 16, em que o dispositivo compreende um ou mais dentre uma câmera, um computador, um dispositivo móvel, um dispositivo de receptor de broadcast ou um decodificador.
25. Meio de armazenamento legível por computador possuindo armazenadas nele instruções que, quando executadas, causam que um processador: armazene conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional possuindo um tamanho predefinido de N elementos de memória, N sendo um valor de número inteiro positivo, em que o armazenamento dos conjuntos de parâmetros ALF compreende o armazenamento, em um ou mais dos elementos de memória do arranjo, tanto dos parâmetros ALF correspondentes como de um valor de identificador (ID) de camada temporal indicando uma camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; decodifique um ou mais blocos de dados de vídeo; e filtre o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional.
26. Meio de armazenamento legível por computador, de acordo com a reivindicação 25, adicionalmente compreendendo instruções que causam que o processador armazene os conjuntos de parâmetros ALF em uma ordem de decodificação.
27. Meio de armazenamento legível por computador, de acordo com a reivindicação 25, adicionalmente compreendendo instruções que causam que o processador mantenha uma variável de índice anterior possuindo um valor representando qual dos conjuntos de parâmetros ALF deve ser utilizado para a filtragem.
28. Meio de armazenamento legível por computador, de acordo com a reivindicação 25, adicionalmente compreendendo instruções que causam que o processador codifique o um ou mais blocos antes de decodificar o um ou mais blocos.
29. Dispositivo para decodificar dados de vídeo, o dispositivo compreendendo: meio para armazenar conjuntos de parâmetros de filtro de loop adaptativo (ALF) em um arranjo unidimensional possuindo um tamanho predefinido de N elementos de memória, N sendo um valor de número inteiro positivo, em que o armazenamento de conjuntos de parâmetros ALF compreende o armazenamento, em um ou mais elementos da memória do arranjo, tanto dos parâmetros ALF correspondentes como de um valor de identificador (ID) de camada temporal indicando uma camada temporal a partir da qual os parâmetros ALF correspondentes devem ser estimados; meio para decodificar um ou mais blocos de dados de vídeo; e meio para filtrar o um ou mais blocos utilizando os parâmetros ALF do arranjo unidimensional.
30. Dispositivo, de acordo com a reivindicação 29, adicionalmente compreendendo meio para codificar o um ou mais blocos de dados de vídeo antes de decodificar o um ou mais blocos de dados de vídeo.
BR112021003869-8A 2018-09-12 2019-09-12 predição temporal de parâmetros de filtro de loop adaptativo com consumo reduzido de memória para codificação de vídeo BR112021003869A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862730504P 2018-09-12 2018-09-12
US62/730,504 2018-09-12
US16/567,966 2019-09-11
US16/567,966 US11284075B2 (en) 2018-09-12 2019-09-11 Prediction of adaptive loop filter parameters with reduced memory consumption for video coding
PCT/US2019/050836 WO2020056151A1 (en) 2018-09-12 2019-09-12 Temporal prediction of adaptive loop filter parameters with reduced memory consumption for video coding

Publications (1)

Publication Number Publication Date
BR112021003869A2 true BR112021003869A2 (pt) 2021-05-18

Family

ID=69719828

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021003869-8A BR112021003869A2 (pt) 2018-09-12 2019-09-12 predição temporal de parâmetros de filtro de loop adaptativo com consumo reduzido de memória para codificação de vídeo

Country Status (15)

Country Link
US (1) US11284075B2 (pt)
EP (1) EP3850854A1 (pt)
JP (1) JP7438196B2 (pt)
KR (1) KR20210055043A (pt)
CN (1) CN112655217B (pt)
AU (1) AU2019338456B2 (pt)
BR (1) BR112021003869A2 (pt)
CA (1) CA3109370A1 (pt)
CO (1) CO2021003109A2 (pt)
IL (1) IL280716A (pt)
MX (1) MX2021002862A (pt)
PH (1) PH12021550293A1 (pt)
SG (1) SG11202101278UA (pt)
WO (1) WO2020056151A1 (pt)
ZA (1) ZA202102351B (pt)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11451773B2 (en) 2018-06-01 2022-09-20 Qualcomm Incorporated Block-based adaptive loop filter (ALF) design and signaling
US11051017B2 (en) 2018-12-20 2021-06-29 Qualcomm Incorporated Adaptive loop filter (ALF) index signaling
US11683487B2 (en) 2019-03-26 2023-06-20 Qualcomm Incorporated Block-based adaptive loop filter (ALF) with adaptive parameter set (APS) in video coding
US11743459B2 (en) 2020-09-29 2023-08-29 Qualcomm Incorporated Filtering process for video coding

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3061278B2 (ja) * 1988-04-29 2000-07-10 ゼロックスコーポレーション 可変ビット長コード語のビット長通信方法
US9094658B2 (en) * 2010-05-10 2015-07-28 Mediatek Inc. Method and apparatus of adaptive loop filtering
US9277228B2 (en) * 2011-07-18 2016-03-01 Qualcomm Incorporated Adaptation parameter sets for video coding
US20130113880A1 (en) * 2011-11-08 2013-05-09 Jie Zhao High Efficiency Video Coding (HEVC) Adaptive Loop Filter
US9386305B2 (en) * 2011-11-28 2016-07-05 Qualcomm Incorporated Largest coding unit (LCU) or partition-based syntax for adaptive loop filter and sample adaptive offset in video coding
IN2015DN02130A (pt) * 2012-09-27 2015-08-14 Dolby Lab Licensing Corp
WO2014072571A1 (en) * 2012-10-01 2014-05-15 Nokia Corporation Method and apparatus for scalable video coding
US9807419B2 (en) * 2014-06-25 2017-10-31 Qualcomm Incorporated Recovery point SEI message in multi-layer video codecs
US10057574B2 (en) * 2015-02-11 2018-08-21 Qualcomm Incorporated Coding tree unit (CTU) level adaptive loop filter (ALF)
EP3453174A1 (en) 2016-05-06 2019-03-13 VID SCALE, Inc. Method and system for decoder-side intra mode derivation for block-based video coding
WO2018122092A1 (en) 2016-12-30 2018-07-05 Telefonaktiebolaget Lm Ericsson (Publ) Methods, apparatus, and computer programs for decoding media
US10506230B2 (en) 2017-01-04 2019-12-10 Qualcomm Incorporated Modified adaptive loop filter temporal prediction for temporal scalability support
JP2020120141A (ja) * 2017-05-26 2020-08-06 シャープ株式会社 動画像符号化装置及び動画像復号装置、フィルタ装置
CN116634154A (zh) * 2017-09-08 2023-08-22 株式会社Kt 视频信号处理方法及装置
US10863175B2 (en) * 2018-03-01 2020-12-08 Panasonic Intellectual Property Corporation Of America Encoder, and decoder, encoding method, decoding method
KR20230119739A (ko) * 2018-03-29 2023-08-16 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 병렬 코딩 기능들 향상을 위한 컨셉
US11451773B2 (en) 2018-06-01 2022-09-20 Qualcomm Incorporated Block-based adaptive loop filter (ALF) design and signaling
US20200029096A1 (en) * 2018-07-17 2020-01-23 Qualcomm Incorporated Combined inverse dynamic range adjustment (dra) and loop filter technique
US11051017B2 (en) 2018-12-20 2021-06-29 Qualcomm Incorporated Adaptive loop filter (ALF) index signaling

Also Published As

Publication number Publication date
KR20210055043A (ko) 2021-05-14
ZA202102351B (en) 2022-10-26
MX2021002862A (es) 2021-05-28
WO2020056151A1 (en) 2020-03-19
CN112655217B (zh) 2023-09-12
JP2022500903A (ja) 2022-01-04
CN112655217A (zh) 2021-04-13
US11284075B2 (en) 2022-03-22
CO2021003109A2 (es) 2021-03-19
AU2019338456B2 (en) 2023-04-27
AU2019338456A1 (en) 2021-03-11
US20200084444A1 (en) 2020-03-12
IL280716A (en) 2021-03-25
PH12021550293A1 (en) 2021-10-25
EP3850854A1 (en) 2021-07-21
JP7438196B2 (ja) 2024-02-26
SG11202101278UA (en) 2021-03-30
CA3109370A1 (en) 2020-03-19

Similar Documents

Publication Publication Date Title
EP3970379B1 (en) Multiple adaptive loop filter sets for video coding
US11539982B2 (en) Merge estimation region for multi-type-tree block structure
EP3900336A1 (en) Adaptive loop filtering classification in video coding
CN113994694A (zh) 视频译码中的简化帧内色度模式译码
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
WO2021034761A1 (en) Low-frequency non-separable transform (lfnst) signaling
US10897617B2 (en) Rounding of motion vectors for adaptive motion vector difference resolution and increased motion vector storage precision in video coding
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
TW202038609A (zh) 用於視訊寫碼之共享候選清單及平行候選清單推導
WO2020190468A1 (en) Video coding in triangular prediction unit mode using different chroma formats
KR20230038709A (ko) 다중 적응형 루프 필터 세트들
TW202228437A (zh) 用於在視訊寫碼中最可能模式列表建構的解碼器側幀內模式推導
US11722692B2 (en) History-based motion vector predictor constraint for merge estimation region
US20210314567A1 (en) Block partitioning for image and video coding
WO2020068674A1 (en) Restrictions for the worst-case bandwidth reduction in video coding
RU2803195C2 (ru) Временное предсказание параметров адаптивного контурного фильтра со сниженным потреблением памяти для кодирования видео
TW202415068A (zh) 視訊寫碼中之三角合併模式索引之發信
TW202123697A (zh) 在用於視訊寫碼之較高語法層級處經信令傳輸之恆定圖塊標頭參數
KR20230123947A (ko) 고정 필터들을 갖는 적응적 루프 필터
WO2022072121A1 (en) Constraining operational bit depth of adaptive loop filtering for coding of video data at different bit depth