BR112021013499A2 - Codificador de vídeo, decodificador de vídeo e métodos correspondentes - Google Patents

Codificador de vídeo, decodificador de vídeo e métodos correspondentes Download PDF

Info

Publication number
BR112021013499A2
BR112021013499A2 BR112021013499-9A BR112021013499A BR112021013499A2 BR 112021013499 A2 BR112021013499 A2 BR 112021013499A2 BR 112021013499 A BR112021013499 A BR 112021013499A BR 112021013499 A2 BR112021013499 A2 BR 112021013499A2
Authority
BR
Brazil
Prior art keywords
sub
image
subpicture
picture
flag
Prior art date
Application number
BR112021013499-9A
Other languages
English (en)
Inventor
Ye-Kui Wang
Fnu HENDRY
Original Assignee
Huawei Technologies Co., Ltd.
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 Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112021013499A2 publication Critical patent/BR112021013499A2/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/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/436Methods 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 using parallelised computational arrangements
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods 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 bits, e.g. of the compressed video stream
    • 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/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/1883Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/29Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding involving scalability at the object level, e.g. video object layer [VOL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • 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/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)
  • Television Systems (AREA)
  • Time-Division Multiplex Systems (AREA)
  • Studio Circuits (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Control Of El Displays (AREA)

Abstract

codificador de vídeo, decodificador de vídeo e métodos correspondentes. um mecanismo de codificação de vídeo é revelado. o mecanismo inclui um fluxo de bits compreendendo um conjunto de parâmetros e uma ou mais subimagens particionadas de uma imagem. o conjunto de parâmetros é analisado para obter uma flag indicando que uma subimagem atual é uma subimagem com restrição de movimento temporal. a subimagem atual é extraída do fluxo de bits independentemente da imagem e com base na flag. a subimagem atual é decodificada para criar uma sequência de vídeo. a sequência de vídeo é encaminhada para exibição.

Description

“CODIFICADOR DE VÍDEO, DECODIFICADOR DE VÍDEO E MÉTODOS CORRESPONDENTES” CAMPO DA TÉCNICA
[0001] A presente revelação refere-se, de modo geral, a codificação de vídeo e, de modo específico, a gerenciamento de subimagem em codificação de vídeo.
ANTECEDENTES
[0002] A quantidade de dados de vídeo necessária para representar até mesmo um vídeo relativamente curto pode ser substancial, que pode resultar em dificuldades quando os dados precisam ser transmitidos ou comunicados de outro modo através de uma rede de comunicações com capacidade de largura de banda limitada. Desse modo, os dados de vídeo são, de modo geral, comprimidos antes de serem comunicados através de redes de telecomunicações atuais. O tamanho de um vídeo também pode ser uma questão quando o vídeo é armazenado em um dispositivo de armazenamento, visto que os recursos de memória podem ser limitados. Os dispositivos de compressão de vídeo normalmente usam software e/ou hardware na origem para codificar os dados de vídeo antes de transmissão ou armazenamento, diminuindo, desse modo, a quantidade de dados necessária para representar imagens de vídeo digitais. Os dados comprimidos são, então, recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas crescentes por maior qualidade de vídeo, as técnicas de compressão e descompressão aperfeiçoadas que aperfeiçoam a razão de compressão com pouco ou nenhum comprometimento na qualidade de imagem são desejáveis.
SUMÁRIO
[0003] Em uma modalidade, a revelação inclui um método implementado em um decodificador, o método compreende: receber, por um receptor do decodificador, um fluxo de bits que compreende um conjunto de parâmetros e uma ou mais subimagens particionadas a partir de uma imagem; analisar, por um processador do decodificador, o conjunto de parâmetros para obter uma flag que indica que uma subimagem atual é uma subimagem com restrição de movimento temporal; extrair, pelo processador, a subimagem atual do fluxo de bits independentemente da imagem e com base na flag; decodificar, pelo processador, a subimagem atual para criar uma sequência de vídeo; e encaminhar pelo processador, a sequência de vídeo para exibição. Em alguns sistemas de codificação de vídeo, todas as subimagens podem ser definidas, coletivamente, como subimagens com restrição de movimento temporal ou o uso de subimagens com restrição de movimento temporal pode ser completamente proibido. Tais subimagens com restrição de movimento temporal fornecem funcionalidade de extração independente ao custo de eficiência de codificação diminuída. Entretanto, em aplicações com base em região de interesse, a região de interesse deve ser codificada para extração independente enquanto as regiões fora da região de interesse não necessitam de tal funcionalidade. Portanto, as subimagens remanescentes sofrem de eficiência de codificação reduzida sem fornecer qualquer benefício prático. Nos presentes exemplos, uma flag pode ser sinalizada no SPS para indicar quando uma subimagem for uma subimagem com restrição de movimento temporal. A flag permite uma mistura de subimagens com restrição de movimento temporal que fornece funcionalidade de extração independente e subimagens sem restrição de movimento para eficiência de codificação aumentada quando extração independente não é desejada. Portanto, a flag permite funcionalidade aumentada e/ou eficiência de codificação aumentada, que reduz o uso de recursos de rede, recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0004] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que o conjunto de parâmetros incluindo a flag é um conjunto de parâmetros de sequência (SPS).
[0005] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que o conjunto de parâmetros inclui pelo menos uma flag para cada uma dentre a uma ou mais subimagens que são subimagens com restrição de movimento temporal.
[0006] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que flags são omitidas para cada uma dentre a uma ou mais subimagens que não são subimagens com restrição de movimento temporal, e compreende adicionalmente inferir, pelo processador, que um valor de cada flag omitida é igual a zero.
[0007] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a flag é uma subpic_motion_constrained_flag[ i ] em que i é um índice da subimagem atual.
[0008] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que o parâmetro compreende adicionalmente identificadores (IDs) de subimagem para cada uma dentre a uma ou mais subimagens.
[0009] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que o conjunto de parâmetros inclui adicionalmente um tamanho de subimagem para cada uma dentre a uma ou mais subimagens e uma localização de subimagem para cada uma dentre a uma ou mais subimagens.
[0010] Em uma modalidade, a revelação inclui um método implementado em um codificador, o método compreende: particionar, por um processador do codificador, uma imagem em uma pluralidade de subimagens; codificar, pelo processador, uma subimagem atual em um fluxo de bits como uma subimagem com restrição de movimento temporal; e codificar no fluxo de bits, pelo processador, um conjunto de parâmetros que compreende uma flag que indica que a subimagem atual é a subimagem com restrição de movimento temporal que pode ser extraída do fluxo de bits independentemente da imagem; e armazenar, em uma memória do codificador, o fluxo de bits para comunicação em direção a um decodificador. Em alguns sistemas de codificação de vídeo, todas as subimagens podem ser definidas, coletivamente, como subimagens com restrição de movimento temporal ou o uso de subimagens com restrição de movimento temporal pode ser completamente proibido. Tais subimagens com restrição de movimento temporal fornecem funcionalidade de extração independente ao custo de eficiência de codificação diminuída. Entretanto, em aplicações com base em região de interesse, a região de interesse deve ser codificada para extração independente enquanto as regiões fora da região de interesse não necessitam de tal funcionalidade. Portanto, as subimagens remanescentes sofrem de eficiência de codificação reduzida sem fornecer qualquer benefício prático. Nos presentes exemplos, uma flag pode ser sinalizada no SPS para indicar quando uma subimagem for uma subimagem com restrição de movimento temporal. A flag permite uma mistura de subimagens com restrição de movimento temporal que fornece funcionalidade de extração independente e subimagens sem restrição de movimento para eficiência de codificação aumentada quando extração independente não é desejada. Portanto, a flag permite funcionalidade aumentada e/ou eficiência de codificação aumentada, que reduz o uso de recursos de rede, recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0011] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que o conjunto de parâmetros incluindo a flag é um conjunto de parâmetros de sequência (SPS).
[0012] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que o conjunto de parâmetros compreende pelo menos uma flag para cada uma dentre a uma ou mais subimagens que são subimagens com restrição de movimento temporal.
[0013] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que flags são omitidas para cada uma dentre a uma ou mais subimagens que não são subimagens com restrição de movimento temporal.
[0014] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a flag é uma subpic_motion_constrained_flag[ i ] em que i é um índice da subimagem atual.
[0015] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, que compreende adicionalmente codificar, pelo processador, IDs de subimagem para cada uma dentre a uma ou mais subimagens no conjunto de parâmetros.
[0016] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, que compreende adicionalmente codificar, no conjunto de parâmetros, pelo processador, um tamanho de subimagem para cada uma dentre a uma ou mais subimagens e uma localização de subimagem para cada uma dentre a uma ou mais subimagens.
[0017] Em uma modalidade, a revelação inclui um dispositivo de codificação de vídeo que compreende: um processador, uma memória, um receptor acoplado ao processador e um transmissor acoplado ao processador, o processador, a memória, o receptor e o transmissor configurados para realizar o método de qualquer um dos aspectos antecedentes.
[0018] Em uma modalidade, a revelação inclui uma mídia legível por computador não transitória que compreende um produto de programa de computador para uso por um dispositivo de codificação de vídeo, o produto de programa de computador compreendendo instruções executáveis por computador armazenadas na mídia legível por computador não transitória tal que, quando executadas por um processador, fazem com que o dispositivo de codificação de vídeo realize o método de qualquer um dos aspectos antecedentes.
[0019] Em uma modalidade, a revelação inclui um decodificador que compreende: um meio de recebimento para receber um fluxo de bits que compreende um conjunto de parâmetros e uma ou mais subimagens particionadas a partir de uma imagem; um meio de análise para analisar o conjunto de parâmetros para obter uma flag que indica que uma subimagem atual é uma subimagem com restrição de movimento temporal; um meio de extração para extrair a subimagem atual do fluxo de bits independentemente da imagem e com base na flag; um meio de decodificação para decodificar a subimagem atual para criar uma sequência de vídeo; e um meio de encaminhamento para encaminhar a sequência de vídeo para exibição.
[0020] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que o decodificador é configurado adicionalmente para realizar o método de qualquer um dos aspectos antecedentes.
[0021] Em uma modalidade, a revelação inclui um codificador que compreende: um meio de particionamento para particionar uma imagem em uma pluralidade de subimagens; um meio de codificação para: codificar uma subimagem atual em um fluxo de bits como uma subimagem com restrição de movimento temporal; e codificar, no fluxo de bits, um conjunto de parâmetros que compreende uma flag que indica que a subimagem atual é a subimagem com restrição de movimento temporal que pode ser extraída do fluxo de bits independentemente da imagem; e um meio de armazenamento para armazenar o fluxo de bits para comunicação em direção a um decodificador.
[0022] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que o codificador é configurado adicionalmente para realizar o método de qualquer um dos aspectos antecedentes.
[0023] Para fins de clareza, qualquer uma dentre as modalidades antecedentes pode ser combinada com qualquer uma ou mais dentre as outras modalidades antecedentes para criar uma nova modalidade dentro do escopo da presente revelação.
[0024] Esses e outros atributos serão mais claramente entendidos a partir da descrição detalhada a seguir obtida em conjunto com os desenhos anexos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0025] Para um entendimento mais completo desta revelação, referência é feita à breve descrição a seguir, obtida em conjunto com os desenhos anexos e descrição detalhada, em que referências numéricas similares representam partes similares.
[0026] A Figura 1 é um fluxograma de um método exemplificativo de codificação de um sinal de vídeo.
[0027] A Figura 2 é um diagrama esquemático de um sistema de codificação e decodificação (codec) exemplificativo para codificação de vídeo.
[0028] A Figura 3 é um diagrama esquemático que ilustra um codificador de vídeo exemplificativo.
[0029] A Figura 4 é um diagrama esquemático que ilustra um decodificador de vídeo exemplificativo.
[0030] A Figura 5 é um diagrama esquemático que ilustra um fluxo de bits exemplificativo e subfluxo de bits extraído do fluxo de bits.
[0031] A Figura 6 é um diagrama esquemático que ilustra uma imagem exemplificativa particionada em subimagens.
[0032] A Figura 7 é um diagrama esquemático que ilustra um mecanismo exemplificativo para relacionar fatias a um layout de subimagem.
[0033] A Figura 8 é um diagrama esquemático que ilustra outra imagem exemplificativa particionada em subimagens.
[0034] A Figura 9 é um diagrama esquemático de um dispositivo de codificação de vídeo exemplificativo.
[0035] A Figura 10 é um fluxograma de um método exemplificativo de codificação de um fluxo de bits de subimagens com restrição de movimento temporal.
[0036] A Figura 11 é um fluxograma de um método exemplificativo de decodificação de um fluxo de bits de subimagens com restrição de movimento temporal.
[0037] A Figura 12 é um diagrama esquemático de um sistema exemplificativo para sinalização de um fluxo de bits de subimagens com restrição de movimento temporal.
DESCRIÇÃO DETALHADA
[0038] Deve-se entender inicialmente que, embora uma implementação ilustrativa de uma ou mais modalidades seja fornecida abaixo, os sistemas e/ou métodos revelados podem ser implementados com o uso de qualquer número de técnicas, sejam atualmente conhecidas ou em existência. A revelação não deve, de modo algum, ser limitada às implementações ilustrativas, desenhos e técnicas ilustrados abaixo, incluindo os projetos e implementações exemplificativos ilustrados e descritos no presente documento, mas pode ser modificada dentro do escopo das reivindicações anexas em conjunto com seu escopo inteiro de equivalentes.
[0039] Vários acrônimos são empregados na presente invenção, tais como bloco de árvore de codificação (CTB), unidade de árvore de codificação (CTU), unidade de codificação (CU), sequência de vídeo codificada (CVS), Equipe de Especialistas em Vídeo Conjunta (JVET), conjunto de tiles com restrição de movimento (MCTS), unidade de transferência máxima (MTU), camada de abstração de rede (NAL), contagem de ordem de imagem (POC), carga útil de sequência de byte bruto (RBSP), conjunto de parâmetros de sequência (SPS), codificação de vídeo versátil (VVC) e projeto de trabalho (WD).
[0040] Muitas técnicas de compressão de vídeo podem ser empregadas para reduzir o tamanho de arquivos de vídeo com perda mínima de dados. Por exemplo, as técnicas de compressão de vídeo podem incluir realizar predição espacial (por exemplo, imagem intra) e/ou predição temporal (por exemplo, imagem inter) para reduzir ou remover redundância de dados em sequências de vídeo. Para codificação de vídeo com base em bloco, uma fatia de vídeo (por exemplo, uma imagem de vídeo ou uma porção de uma imagem de vídeo) pode ser particionada em blocos de vídeo, que também podem ser denominados blocos de árvore, blocos de árvore de codificação (CTBs), unidades de árvore de codificação (CTUs), unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia codificada de modo intra (I) de uma imagem são codificados com o uso de predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia de predição unidirecional (P) ou predição bidirecional (B) codificada de modo inter de uma imagem podem ser codificados empregando-se predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação a amostras de referência em outras imagens de referência. As imagens podem ser denominadas quadros e/ou figuras, e imagens de referência podem ser denominadas quadros de referência e/ou imagens de referência. A predição espacial ou temporal resulta em um bloco preditivo que representa um bloco de imagem. Os dados residuais representam diferenças de pixel entre o bloco de imagem original e o bloco preditivo. Assim, um bloco codificado de modo inter é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco codificado de modo intra é codificado de acordo com um modo de codificação intra e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada. Isso resulta em coeficientes de transformada residuais, que podem ser quantizados. Os coeficientes de transformada quantizados podem ser inicialmente dispostos em um arranjo bidimensional. Os coeficientes de transformada quantizados podem ser submetidos à varredura a fim de produzir um vetor unidimensional de coeficientes de transformada. A codificação de entropia pode ser aplicada para alcançar ainda mais compressão. Tais técnicas de compressão de vídeo são discutidas e mais detalhes abaixo.
[0041] Para garantir que um vídeo codificado possa ser decodificado de maneira acurada, o vídeo é codificado e decodificado de acordo com padrões de codificação de vídeo correspondentes. Os padrões de codificação de vídeo incluem União Internacional de Telecomunicação (ITU) Setor de Padronização (ITU-T) H.261, Organização Internacional para Padronização/Comissão Eletrotécnica Internacional (ISO/IEC) Grupo de Especialistas de Imagem em Movimento (MPEG)-1 Parte 2, ITU-T H.262 ou ISO/IEC MPEG-2 Parte 2, ITU-T H.263, ISO/IEC MPEG-4 Parte 2, Codificação de Vídeo Avançada (AVC), também conhecida como ITU-T H.264 ou ISO/IEC MPEG-4 Parte 10 e Codificação de Vídeo de Alta Eficiência (HEVC), também conhecida como ITU-T H.265 ou MPEG- H Parte 2. AVC inclui extensões, tais como Codificação de Vídeo Escalável (SVC), Codificação de Vídeo Multivista (MVC) e Codificação de Vídeo Multivista mais
Profundidade (MVC+D), e AVC tridimensional (3D) (3D-AVC). HEVC inclui extensões, tais como HEVC Escalável (SHVC), HEVC Multivista (MV-HEVC) e 3D HEVC (3D-HEVC). A equipe de especialistas em vídeo conjunta (JVET) de ITU-T e ISO/IEC deu início ao desenvolvimento de um padrão de codificação de vídeo denominado Codificação de Vídeo Versátil (VVC). A VVC está incluída em um Projeto de Trabalho (WD), que inclui JVET-L1001-v9.
[0042] A fim de codificar uma imagem de vídeo, a imagem é primeiro particionada, e as partições são codificadas em um fluxo de bits. Vários esquemas de particionamento de imagem estão disponíveis. Por exemplo, uma imagem pode ser particionada em fatias regulares, fatias dependentes, tiles e/ou de acordo com Processamento Paralelo de Wavefront (WPP). Por questão de simplicidade, HEVC restringe codificadores de modo que apenas fatias regulares, fatias dependentes, tiles, WPP e combinações dos mesmos possam ser usados ao particionar uma fatia em grupos de CTBs para codificação de vídeo. Tal particionamento pode ser aplicado para suportar compatibilidade de tamanho de Unidade de Transferência Máxima (MTU), processamento paralelo e retardo fim a fim reduzido. MTU denota a quantidade máxima de dados que pode ser transmitida em um único pacote. Se uma carga útil de pacote estiver em excesso da MTU, essa carga útil é repartida em dois pacotes através de um processo denominado fragmentação.
[0043] Uma fatia regular, também denominada simplesmente uma fatia, é uma porção particionada de uma imagem que pode ser reconstruída independentemente de outras fatias regulares dentro da mesma imagem, a despeito de algumas interdependências devido a operações de filtragem loop. Cada fatia regular é encapsulada em sua própria unidade de Camada de Abstração de Rede (NAL) para transmissão. Além disso, predição em imagem (predição de amostra intra, predição de informações de movimento, predição de modo de codificação) e dependência de codificação de entropia através de delimitações de fatia podem ser desabilitadas para suportar reconstrução independente. Tal reconstrução independente suporta paralelização. Por exemplo, paralelização com base em fatia regular emprega comunicação mínima interprocessador ou internúcleo. Entretanto, visto que cada fatia regular é independente, cada fatia é associada a um cabeçalho de fatia separado. O uso de fatias regulares pode incorrer uma sobrecarga de codificação substancial devido ao custo de bit do cabeçalho de fatia para cada fatia e devido à falta de predição através das delimitações de fatia. Além disso, fatias regulares podem ser empregadas para suportar compatibilidade para exigências de tamanho de MTU. Especificamente, visto que uma fatia regular é encapsulada em uma unidade de NAL separada e pode ser codificada de maneira independente, cada fatia regular deve ser menor do que a MTU em esquemas de MTU para evitar rompimento da fatia em múltiplos pacotes. Como tal, o objetivo de paralelização e o objetivo de compatibilidade de tamanho de MTU podem colocar demandas contraditórias a um layout de fatia em uma imagem.
[0044] As fatias dependentes são similares a fatias regulares, mas têm cabeçalhos de fatia menores e permitem o particionamento das delimitações de bloco de árvore de imagem sem romper a predição em imagem. Assim, as fatias dependentes permitem que uma fatia regular seja fragmentada em múltiplas unidades de NAL, que fornece retardo fim a fim reduzido permitindo-se que uma parte de uma fatia regular seja enviada antes de a codificação de toda a fatia regular ser concluída.
[0045] Um tile é uma porção particionada de uma imagem criada por delimitações horizontais e verticais que criam colunas e linhas de tiles. Os tiles podem ser codificados em ordem de varredura raster (da direita para a esquerda e do topo para baixo). A ordem de varredura de CTBs é local dentro de um tile. Assim, CTBs em um primeiro tile são codificados em ordem de varredura raster, antes de prosseguir para os CTBs no próximo tile. De modo similar a fatias regulares, tiles rompem dependências de predição em imagem bem como dependências de decodificação de entropia. Entretanto, tiles podem não estar incluídos em unidades de NAL individuais e, portanto, tiles podem não ser usados para compatibilidade de tamanho de MTU. Cada tile pode ser processado por um processador/núcleo, e a comunicação interprocessador/internúcleo empregada para predição em imagem entre unidades de processamento que decodificam tiles vizinhos pode ser limitada a transportar um cabeçalho de fatia compartilhado (quando tiles adjacentes estão na mesma fatia), e realizar compartilhamento relacionado à filtragem loop de amostras reconstruídas e metadados. Quando mais de um tile está incluído em uma fatia, o deslocamento de byte de ponto de entrada para cada tile diferente do primeiro deslocamento de ponto de entrada na fatia pode ser sinalizado no cabeçalho de fatia. Para cada fatia e tile, pelo menos uma dentre as seguintes condições deve ser satisfeita: 1) todos os blocos de árvore codificados em uma fatia pertencem ao mesmo tile; e 2) todos os blocos de árvore codificados em um tile pertencem à mesma fatia.
[0046] Em WPP, a imagem é particionada em únicas linhas de CTBs. Os mecanismos de decodificação de entropia e predição podem usar dados de CTBs em outras linhas. O processamento paralelo se torna possível através de decodificação paralela de linhas de CTB. Por exemplo, uma linha atual pode ser decodificada em paralelo com uma linha antecedente. Entretanto, a decodificação da linha atual é atrasada em relação ao processo de decodificação das linhas antecedentes por dois CTBs. Esse retardo garante que dados relacionados ao CTB acima e o CTB acima e à direita do CTB atual na linha atual estejam disponíveis antes de o CTB atual ser codificado. Essa abordagem aparece como um wavefront quando representada graficamente. Esse início progressivo permite paralelização com até uma quantidade de processadores/núcleos igual à quantidade de linhas de CTB da imagem. Visto que predição em imagem entre linhas de bloco de árvore vizinhas dentro de uma imagem é permitida, a comunicação interprocessador/internúcleo para possibilitar predição em imagem pode ser substancial. O particionamento de acordo com WPP considera tamanhos de unidade de NAL. Portanto, WPP não suporta compatibilidade de tamanho de MTU. Entretanto, fatias regulares podem ser usadas em conjunto com WPP, com certa sobrecarga de codificação, para implementar compatibilidade de tamanho de MTU conforme desejado.
[0047] Tiles também podem incluir conjuntos de tiles com restrição de movimento. Um conjunto de tiles com restrição de movimento (MCTS) é um conjunto de tiles projetado tal que vetores de movimento associados sejam restritos para apontar para localizações de amostra inteira dentro do MCTS e para localizações de amostra fracionada que exigem apenas localizações de amostra inteira dentro do MCTS para interpolação. Além disso, o uso de candidatos de vetor de movimento para predição de vetor de movimento temporal derivada de blocos fora do MCTS é proibido. Desse modo, cada MCTS pode ser decodificado de maneira independente sem a existência de tiles não incluídos no MCTS. As mensagens de informações de aprimoramento suplementares (SEI) de MCTSs temporal podem ser usadas para indicar a existência de MCTSs no fluxo de bits e sinalizar os MCTSs. A mensagem de MCTSs SEI fornece informações suplementares que podem ser usadas na extração de subfluxo de bits de MCTS (especificada como parte da semântica da mensagem de SEI) para gerar um fluxo de bits em conformidade para um conjunto de MCTS. As informações incluem um número de conjuntos de informações de extração, cada um definindo um número de conjuntos de MCTS e contendo bytes de carga útil de sequência de bytes brutos (RBSP) dos conjuntos de parâmetros de vídeo de substituição (VPSs), conjuntos de parâmetros de sequência (SPSs) e conjuntos de parâmetros de imagem (PPSs) a serem usados durante o processo de extração de subfluxo de bits de MCTS. Ao extrair um subfluxo de bits de acordo com o processo de extração de subfluxo de bits de MCTS, conjuntos de parâmetros (VPSs, SPSs e PPSs) podem ser reescritos ou substituídos, e cabeçalhos de fatia podem ser atualizados, visto que um ou todos os elementos de sintaxe relacionados a endereço de fatia (incluindo first_slice_segment_in_pic_flag e slice_segment_address) podem empregar diferentes valores no subfluxo de bits extraído.
[0048] Uma imagem também pode ser particionada em uma ou mais subimagens. Uma subimagem é um conjunto retangular de grupos de tiles/fatias que inicia com um grupo de tiles que tem um tile_group_address igual a zero. Cada subimagem pode se referir a um PPS separado e pode ter, portanto, um particionamento de tile separado. As subimagens podem ser tratadas como imagens no processo de decodificação. As subimagens de referência para decodificar uma subimagem atual são geradas extraindo-se a área, colocalizada com a subimagem atual, das imagens de referência no buffer de imagem decodificada. A área extraída é tratada como uma subimagem decodificada. A predição inter pode ocorrer entre subimagens do mesmo tamanho e da mesma localização dentro da imagem. Um grupo de tiles, também conhecido como uma fatia, é uma sequência de tiles relacionados em uma imagem ou uma subimagem. Diversos itens podem ser derivados para determinar uma localização da subimagem em uma imagem. Por exemplo, cada subimagem atual pode ser posicionada na próxima localização não ocupada em ordem de varredura raster de CTU dentro de uma imagem que é grande o suficiente para conter a subimagem atual dentro das delimitações da imagem.
[0049] De modo adicional, particionamento de imagem pode se basear em tiles de nível de imagem e tiles de nível de sequência. Os tiles de nível de sequência podem incluir a funcionalidade de MCTS, e podem ser implementados como subimagens. Por exemplo, um tile de nível de imagem pode ser definido como uma região retangular de blocos de árvore de codificação dentro de uma coluna de tile particular e uma linha de tile particular em uma imagem. Um tile de nível de sequência pode ser definido como um conjunto de regiões retangulares de blocos árvore de codificação incluídos em diferentes quadros em que cada região retangular compreende adicionalmente um ou mais tiles de nível de imagem e o conjunto de regiões retangulares de blocos de árvore de codificação é independentemente decodificável de qualquer outro conjunto de regiões retangulares similares. Um conjunto de grupo de tiles de nível de sequência (STGPS) é um grupo de tais tiles de nível de sequência. O STGPS pode ser sinalizado em uma unidade NAL de camada de codificação de não vídeo (VCL) com um identificador (ID) associado no cabeçalho de unidade NAL.
[0050] O esquema de particionamento com base em subimagem antecedente pode estar associado a certos problemas. Por exemplo, quando subimagens são habilitadas, tiling dentro de subimagens (particionamento de subimagens em tiles) pode ser usado para suportar processamento paralelo. O particionamento de tile de subimagens para fins de processamento paralelo pode mudar de imagem para imagem (por exemplo, para fins de balanceamento de carga de processamento paralelo) e, portanto, pode ser gerenciado no nível de imagem (por exemplo, no PPS). Entretanto, o particionamento de subimagem (particionamento de imagens em subimagens) pode ser empregado para suportar região de interesse (ROI) e acesso de imagem com base em subimagem. Em tal caso, a sinalização de subimagens ou MCTS no PPS não é eficiente.
[0051] Em outro exemplo, quando qualquer subimagem em uma imagem for codificada como uma subimagem com restrição de movimento temporal, todas as subimagens na imagem podem ser codificadas como subimagens com restrição de movimento temporal. Tal particionamento de imagem pode ser limitante. Por exemplo, a codificação de uma subimagem como uma subimagem com restrição de movimento temporal pode reduzir a eficiência de codificação em troca de funcionalidade adicional. Entretanto, em aplicações com base em região de interesse, normalmente apenas uma ou algumas dentre as subimagens usam funcionalidade com base em subimagem com restrição de movimento temporal. Portanto, as subimagens remanescentes sofrem de eficiência de codificação reduzida sem fornecer qualquer benefício prático.
[0052] Em outro exemplo, os elementos de sintaxe para especificar o tamanho de uma subimagem podem ser especificados em unidades de tamanhos de CTU de luma. Assim, tanto a largura quanto a altura de subimagem devem ser um número inteiro múltiplo de CtbSizeY. Esse mecanismo de especificar largura e altura de subimagem pode resultar em várias questões. Por exemplo, o particionamento de subimagem é apenas aplicável a imagens com largura de imagem e/ou altura de imagem que são um número inteiro múltiplo de CtbSizeY. Isso torna o particionamento de subimagem indisponível para imagens que contêm dimensões que não são número inteiro múltiplos de CTbSizeY. Se o particionamento de subimagem fosse aplicado à largura e/ou altura de de imagem quando a dimensão de imagem não for um número inteiro múltiplo de CtbSizeY, a derivação de largura de subimagem e/ou altura de subimagem em amostras de luma para a subimagem mais à direita e subimagem mais abaixo seria incorreta. Tal derivação incorreta causaria resultados errôneos em algumas ferramentas de codificação.
[0053] Em outro exemplo, a localização de uma subimagem em uma imagem pode não ser sinalizada. A localização, em vez disso, é derivada usando a regra a seguir. A subimagem atual é posicionada na próxima localização não ocupada em ordem de varredura raster de CTU dentro de uma imagem que é grande o suficiente para conter a subimagem dentro das delimitações de imagem. A derivação de localizações de subimagem de tal modo pode causar erros em alguns casos. Por exemplo, se uma subimagem se perder na transmissão, então, as localizações de outras subimagens são derivadas de maneira incorreta e as amostras decodificadas são colocadas em localizações errôneas. O mesmo problema se aplica quando as subimagens chegam na ordem errada.
[0054] Em outro exemplo, a decodificação de uma subimagem pode exigir extração de subimagens colocalizadas em imagens de referência. Isso pode impor complexidade adicional e custos resultantes em termos de uso de recurso de processador e memória.
[0055] Em outro exemplo, quando uma subimagem é designada como uma subimagem com restrição de movimento temporal, filtros loop que atravessam a delimitação de subimagem são desabilitados. Isso ocorre independentemente de filtros loop que atravessam delimitações de tile serem habilitados. Tal restrição pode ser muito restritiva e pode resultar em artefatos visuais para imagens de vídeo que empregam múltiplo de subimagens.
[0056] Em outro exemplo, a relação entre o SPS, STGPS, PPS e cabeçalhos de grupo de tiles é da maneira a seguir. O STGPS se refere ao SPS, o PPS se refere ao STGPS e os cabeçalhos de grupo de tiles/cabeçalhos de fatia se referem ao PPS. Entretanto, o STGPS e o PPS devem ser ortogonais em vez do PPS se referindo ao STGPS. A disposição precedente também pode proibir que todos os grupos de tiles da mesma imagem se refiram ao mesmo PPS.
[0057] Em outro exemplo, cada STGPS pode conter IDs para quatro lados de uma subimagem. Tais IDs são usados para identificar subimagens que compartilham a mesma borda de modo que sua relação espacial relativa possa ser definida. Entretanto, tais informações podem não ser suficientes para derivar as informações de posição e tamanho para um conjunto de grupo de tile de nível de sequência em alguns casos. Em outros casos, a sinalização das informações de posição e tamanho pode ser redundante.
[0058] Em outro exemplo, um STGPS ID pode ser sinalizado em um cabeçalho de unidade NAL de uma unidade VCL NAL usando oito bits. Isso pode auxiliar com extração de subimagem. Tal sinalização pode aumentar, desnecessariamente, o comprimento do cabeçalho de unidade NAL. Outra questão é que, a menos que os conjuntos de grupo de tiles de nível de sequência sejam restritos para evitar sobreposições, um grupo de tiles pode ser associado a múltiplos conjuntos de grupo de tiles de nível de sequência.
[0059] São revelados na presente invenção vários mecanismos para abordar um ou mais dentre os problemas mencionados acima. Em um primeiro exemplo, as informações de layout para subimagens são incluídas em um SPS em vez de um PPS. As informações de layout de subimagem incluem localização de subimagem e tamanho de subimagem. A localização de subimagem é um deslocamento entre a amostra superior esquerda da subimagem e a amostra superior esquerda da imagem. O tamanho de subimagem é a altura e largura da subimagem, conforme medido em amostras de luma. Conforme observado acima, alguns sistemas incluem informações de tiling no PPS visto que tiles podem mudar de imagem para imagem. Entretanto, as subimagens podem ser usadas para suportar aplicações de ROI e acesso com base em subimagem. Essas funções não mudam em uma base por imagem. Além disso, uma sequência de vídeo pode incluir um único SPS (ou um por segmento de vídeo), e pode incluir tantos quanto um PPS por imagem. A colocação de informações de layout para subimagens no SPS garante que o layout seja apenas sinalizado uma vez para uma sequência/segmento em vez de ser sinalizado de maneira redundante para cada PPS. Assim, a sinalização de layout de subimagem no SPS aumenta a eficiência de codificação e, portanto, reduz o uso de recursos de rede, recursos de memória e/ou recursos de processamento no codificador e no decodificador. Além disso, alguns sistemas têm as informações de subimagem derivadas pelo decodificador. A sinalização das informações de subimagem reduz a possibilidade de erro em caso de pacotes perdidos e suporta funcionalidade adicional em termos de extração de subimagens. Assim, a sinalização de layout de subimagem no SPS aperfeiçoa a funcionalidade de um codificador e/ou decodificador.
[0060] Em um segundo exemplo, larguras de subimagem e alturas de subimagem são restritas para ser múltiplos de tamanho de CTU. Entretanto, essas restrições são removidas quando uma subimagem é posicionada na borda direita da imagem ou na borda inferior da imagem, respectivamente. Conforme observado acima, alguns sistemas de vídeo podem limitar subimagens para incluir alturas e larguras que são múltiplos de tamanho de CTU. Isso impede que subimagens operem corretamente com muitos layouts de imagem. Permitindo-se que as subimagens inferior e direita incluam alturas e larguras, respectivamente, que não são múltiplos de tamanho de CTU, as subimagens podem ser usadas com qualquer imagem sem causar erros de decodificação. Isso resulta em funcionalidade crescente de codificador e decodificador. Além disso, a funcionalidade aumentada permite que um codificador codifique imagens de modo mais eficiente, que reduz o uso de recursos de rede, recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0061] Em um terceiro exemplo, as subimagens são restritas para cobrir uma imagem sem gap ou sobreposição. Conforme observado acima, alguns sistemas de codificação de vídeo permitem que subimagens incluam gaps e sobreposições. Isso cria o potencial para que grupos de tiles/fatias sejam associados a múltiplas subimagens. Se isso for permitido no codificador, decodificadores precisam ser construídos para suportar tal esquema de codificação até mesmo quando o esquema de decodificação for raramente usado. Proibindo-se gaps e sobreposições de subimagem, a complexidade do decodificador pode ser diminuída visto que não é exigido que o decodificador seja responsável por potenciais gaps e sobreposições ao determinar tamanhos e localizações de subimagem. Além disso, proibindo-se gaps e sobreposições de subimagem reduz a complexidade de processos de otimização de taxa distorção (RDO) no codificador visto que o codificador pode omitir consideração de casos de gap e sobreposição ao selecionar uma codificação para uma sequência de vídeo. Assim, evitar gaps e sobreposições pode reduzir o uso de recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0062] Em um quarto exemplo, uma flag pode ser sinalizada no SPS para indicar quando uma subimagem for uma subimagem com restrição de movimento temporal. Conforme observado acima, alguns sistemas podem definir, coletivamente, todas as subimagens como subimagens com restrição de movimento temporal ou proibir completamente o uso de subimagens com restrição de movimento temporal. Tais subimagens com restrição de movimento temporal fornecem funcionalidade de extração independente ao custo de eficiência de codificação diminuída. Entretanto, em aplicações com base em região de interesse, a região de interesse deve ser codificada para extração independente enquanto as regiões fora da região de interesse não necessitam de tal funcionalidade. Portanto, as subimagens remanescentes sofrem de eficiência de codificação reduzida sem fornecer qualquer benefício prático. Assim, a flag permite uma mistura de subimagens com restrição de movimento temporal que fornece funcionalidade de extração independente e subimagens sem restrição de movimento para eficiência de codificação aumentada quando extração independente não é desejada. Portanto, a flag permite funcionalidade aumentada e/ou eficiência de codificação aumentada, que reduz o uso de recursos de rede, recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0063] Em um quinto exemplo, um conjunto completo de IDs de subimagem é sinalizado no SPS, e cabeçalhos de fatia incluem um ID de subimagem que indica a subimagem que contém as fatias correspondentes. Conforme observado acima, alguns sistemas sinalizam posições de subimagem em relação a outras subimagens. Isso causa um problema se subimagens estiverem perdidas ou forem extraídas de maneira separada. Designando-se cada subimagem por um ID, as subimagens podem ser posicionadas e dimensionadas sem referência a outras subimagens. Isso, por sua vez, suporta correção de erro bem como aplicações que extraem apenas algumas dentre as subimagens e evitam a transmissão de outras subimagens. Uma lista completa de todos os IDs de subimagem pode ser enviada no SPS em conjunto com informações de dimensionamento relevantes. Cada cabeçalho de fatia pode conter um ID de subimagem que indica a subimagem que inclui a fatia correspondente. Desse modo, subimagens e fatias correspondentes podem ser extraídas e posicionadas sem referência a outras subimagens. Portanto, os IDs de subimagem suportam funcionalidade aumentada e/ou eficiência de codificação aumentada, que reduz o uso de recursos de rede, recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0064] Em um sexto exemplo, níveis são sinalizados para cada subimagem. Em alguns sistemas de codificação de vídeo, níveis são sinalizados para imagens. Um nível indica recursos de hardware necessários para decodificar a imagem. Conforme observado acima, diferentes subimagens podem ter diferentes funcionalidades em alguns casos e, portanto, podem ser tratadas de maneira diferente durante o processo de codificação. Como tal, um nível com base em imagem pode não ser útil para decodificar algumas subimagens. Portanto, a presente revelação inclui níveis para cada subimagem. Desse modo, cada subimagem pode ser codificada independentemente de outras subimagens sem sobrecarregar de maneira desnecessária o decodificador definindo-se exigências de decodificação muito altas para subimagens codificadas de acordo com mecanismos menos complexos. As informações de nível de subimagem sinalizadas suportam funcionalidade aumentada e/ou eficiência de codificação aumentada, que reduz o uso de recursos de rede, recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0065] A Figura 1 é um fluxograma de um método operacional exemplificativo 100 de codificação de um sinal de vídeo. Especificamente, um sinal de vídeo é codificado em um codificador. O processo de codificação comprime o sinal de vídeo empregando-se vários mecanismos para reduzir o tamanho de arquivo de vídeo. Um tamanho de arquivo menor permite que o arquivo de vídeo comprimido seja transmitido em direção a um usuário, enquanto reduz sobrecarga de largura de banda associada. O decodificador decodifica, então, o arquivo de vídeo comprimido para reconstruir o sinal de vídeo original para exibição para um usuário final. O processo de decodificação geralmente reflete o processo de codificação para permitir que o decodificador reconstrua, de maneira consistente, o sinal de vídeo.
[0066] Na etapa 101, o sinal de vídeo é inserido no codificador. Por exemplo, o sinal de vídeo pode ser um arquivo de vídeo não comprimido armazenado na memória. Conforme outro exemplo, o arquivo de vídeo pode ser capturado por um dispositivo de captura de vídeo, tal como uma câmera de vídeo, e codificado para suportar transmissão em tempo real do vídeo. O arquivo de vídeo pode incluir tanto um componente de áudio quanto um componente de vídeo. O componente de vídeo contém uma série de quadros de imagem que, quando vista em uma sequência, proporciona a impressão visual de movimento. Os quadros contêm pixels que são expressos em termos de luz, denominados, na presente invenção, componentes de luma (ou amostras de luma), e cor, denominados componentes de croma (ou amostras de cor). Em alguns exemplos, os quadros também podem conter valores de profundidade para suportar visualização tridimensional.
[0067] Na etapa 103, o vídeo é particionado em blocos. O particionamento inclui subdividir os pixels em cada quadro em blocos quadrangulares e/ou retangulares para compressão. Por exemplo, em Codificação de Vídeo de Alta Eficiência (HEVC) (também conhecida como H.265 e MPEG-H Parte 2) o quadro pode ser primeiro dividido em unidades de árvore de codificação (CTUs), que são blocos de um tamanho predefinido (por exemplo, sessenta e quatro pixels por sessenta e quatro pixels). As CTUs contêm amostras de luma e croma. As árvores de codificação podem ser empregadas para dividir as CTUs em blocos e, então, subdividir, de modo recursivo, os blocos até que configurações sejam alcançadas que suportam codificação adicional. Por exemplo, componentes de luma de um quadro podem ser subdivididos até que os blocos individuais contenham valores de iluminação relativamente homogêneos. Além disso, componentes de croma de um quadro podem ser subdivididos até que os blocos individuais contenham valores de cor relativamente homogêneos. Assim, os mecanismos de particionamento variam dependendo do conteúdo dos quadros de vídeo.
[0068] Na etapa 105, vários mecanismos de compressão são empregados para comprimir os blocos de imagem particionados na etapa 103. Por exemplo, predição inter e/ou predição intra pode ser empregada. A predição inter é projetada para obter vantagem do fato de que objetos em uma cena comum tendem a aparecer em quadros sucessivos. Assim, um bloco que retrata um objeto em um quadro de referência não precisa ser descrito de maneira repetida em quadros adjacentes. Especificamente, um objeto, tal como uma tabela, pode permanecer em uma posição constante através de múltiplos quadros. Portanto, a tabela é descrita uma vez e quadros adjacentes podem se referir novamente ao quadro de referência. Os mecanismos de compatibilidade padrão podem ser empregados para compatibilizar objetos através de múltiplos quadros. Além disso, objetos em movimento podem ser representados através de múltiplos quadros, por exemplo, devido a movimento de objeto ou movimento de câmera. Conforme um exemplo particular, um vídeo pode mostrar um automóvel que se move através da tela através de múltiplos quadros. Os vetores de movimento podem ser empregados para descrever tal movimento. Um vetor de movimento é um vetor bidimensional que fornece um deslocamento a partir das coordenadas de um objeto em um quadro para as coordenadas do objeto em um quadro de referência. Como tal, a predição inter pode codificar um bloco de imagem em um quadro atual como um conjunto de vetores de movimento indicando um deslocamento a partir de um bloco correspondente em um quadro de referência.
[0069] A predição intra codifica blocos em um quadro comum. A predição intra obtém vantagem do fato de que componentes de luma e croma tendem a se aglomerar em um quadro. Por exemplo, um patch de verde em uma porção de uma árvore tende a ser posicionado de modo adjacente a patches similares de verde. A predição intra emprega múltiplos modos de predição direcionais (por exemplo, trinta e três em HEVC), um modo plano e um modo de corrente contínua (DC). Os modos direcionais indicam que um bloco atual é similar/igual a amostras de um bloco vizinho em uma direção correspondente. O modo plano indica que uma série de blocos ao longo de uma linha/coluna (por exemplo, um plano) pode ser interpolada com base em blocos vizinhos nas bordas da linha. O modo plano, de fato, indica uma transição suave de luz/cor através de uma linha/coluna empregando-se uma inclinação relativamente constante na mudança de valores. O modo DC é empregado para suavização de delimitação e indica que um bloco é similar/igual a um valor médio associado a amostras de todos os blocos vizinhos associados às direções angulares dos modos de predição direcionais. Assim, blocos de predição intra podem representar blocos de imagem como vários valores de modo de predição relacional em vez dos valores reais. Além disso, blocos de predição inter podem representar blocos de imagem como valores de vetor de movimento em vez dos valores reais. Em qualquer caso, os blocos de predição podem não representar exatamente os blocos de imagem em alguns casos. Quaisquer diferenças são armazenadas em blocos residuais. As transformadas podem ser aplicadas aos blocos residuais para comprimir adicionalmente o arquivo.
[0070] Na etapa 107, várias técnicas de filtragem podem ser aplicadas. Em HEVC, os filtros são aplicados de acordo com um esquema de filtragem in- loop. A predição com base em bloco discutida acima pode resultar na criação de imagens em bloco no decodificador. Além disso, o esquema de predição com base em bloco pode codificar um bloco e, então, reconstruir o bloco codificado para uso posterior como um bloco de referência. O esquema de filtragem in-loop aplica, de modo iterativo, filtros de supressão de ruído, filtros de desblocagem, filtros loop adaptativo e filtros de deslocamento adaptativo de amostra (SAO) aos blocos/quadros. Esses filtros mitigam tais artefatos de blocagem de modo que o arquivo codificado possa ser reconstruído de maneira acurada. Além disso, esses filtros mitigam artefatos nos blocos de referência reconstruídos de modo que seja menos provável que artefatos criem artefatos adicionais em blocos subsequentes que são codificados com base nos blocos de referência reconstruídos.
[0071] Uma vez que o sinal de vídeo tiver sido particionado, comprimido e filtrado, os dados resultantes são codificados em um fluxo de bits na etapa 109. O fluxo de bits inclui os dados discutidos acima bem como quaisquer dados de sinalização desejados para suportar a reconstrução de sinal de vídeo apropriada no decodificador. Por exemplo, tais dados podem incluir dados de partição, dados de predição, blocos residuais e várias flags que fornecem instruções de codificação ao decodificador. O fluxo de bits pode ser armazenado em memória para transmissão em direção a um decodificador mediante solicitação. O fluxo de bits também pode ser transmitido por broadcast e/ou multicast em direção a uma pluralidade de decodificadores. A criação do fluxo de bits é um processo iterativo. Assim, as etapas 101, 103, 105, 107 e 109 podem ocorrer de maneira contínua e/ou simultânea através de muitos quadros e blocos. A ordem mostrada na Figura 1 é apresentada por questão de clareza e para facilitar a discussão, e não se destina a limitar o processo de codificação de vídeo a uma ordem particular.
[0072] O decodificador recebe o fluxo de bits e inicia o processo de decodificação na etapa 111. Especificamente, o decodificador emprega um esquema de decodificação de entropia para converter o fluxo de bits em dados de vídeo e sintaxe correspondentes. O decodificador emprega os dados de sintaxe a partir do fluxo de bits para determinar as partições para os quadros na etapa 111. O particionamento deve ser compatível com os resultados de particionamento de bloco na etapa 103. A codificação/decodificação de entropia, conforme empregado na etapa 111, é descrita. O codificador faz muitas escolhas durante o processo de compressão, tais como seleção de esquemas de particionamento de bloco a partir de várias escolhas possíveis com base no posicionamento espacial de valores na imagem(ns) de entrada. A sinalização das escolhas exatas pode empregar um grande número de bins. Conforme usado na presente invenção, um bin é um valor binário que é tratado como uma variável (por exemplo, um valor de bit que pode variar dependendo do contexto). A codificação de entropia permite que o codificador descarte quaisquer opções que sejam claramente inviáveis para um caso particular, deixando um conjunto de opções permitidas. Atribui-se, então, a cada opção permitida, uma palavra-código. O comprimento das palavras-código se baseia no número de opções permitidas (por exemplo, um bin para duas opções, dois bins para três a quatro opções, etc.) O codificador codifica, então, a palavra-código para a opção selecionada. Esse esquema reduz o tamanho das palavras-código, visto que as palavras-código são tão grandes quanto desejado para indicar unicamente uma seleção a partir de um subconjunto pequeno de opções permitidas em oposição à indicação única da seleção a partir de um conjunto potencialmente grande de todas as opções possíveis. O decodificador decodifica, então, a seleção determinando-se o conjunto de opções permitidas de um modo similar ao codificador. Ao determinar o conjunto de opções permitidas, o decodificador pode ler a palavra-código e determinar a seleção feita pelo codificador.
[0073] Na etapa 113, o decodificador realiza decodificação de bloco. Especificamente, o decodificador emprega transformadas inversas para gerar blocos residuais. Então, o decodificador emprega os blocos residuais e blocos de predição correspondentes para reconstruir os blocos de imagem de acordo com o particionamento. Os blocos de predição podem incluir blocos de predição intra e blocos de predição inter, conforme gerado no codificador na etapa 105. Os blocos de imagem reconstruídos são, então, posicionados em quadros de um sinal de vídeo reconstruído de acordo com os dados de particionamento determinados na etapa 111. A sintaxe para a etapa 113 também pode ser sinalizada no fluxo de bits através de codificação de entropia, conforme discutido acima.
[0074] Na etapa 115, a filtragem é realizada nos quadros do sinal de vídeo reconstruído de um modo similar à etapa 107 no codificador. Por exemplo, filtros de supressão de ruído, filtros de desblocagem, filtros loop adaptativo e filtros SAO podem ser aplicados aos quadros para remover artefatos de blocagem. Uma vez que os quadros são filtrados, o sinal de vídeo pode ser emitido a um display na etapa 117 para visualização por um usuário final.
[0075] A Figura 2 é um diagrama esquemático de um sistema de codificação e decodificação (codec) exemplificativo 200 para codificação de vídeo. Especificamente, o sistema codec 200 fornece funcionalidade para suportar a implementação do método operacional 100. O sistema codec 200 é generalizado para retratar componentes empregados tanto em um codificador quanto em um decodificador. O sistema codec 200 recebe e particiona um sinal de vídeo conforme discutido em relação às etapas 101 e 103 no método operacional 100, que resulta em um sinal de vídeo particionado 201. O sistema codec 200 comprime, então, o sinal de vídeo particionado 201 em um fluxo de bits codificado ao atuar como um codificador, conforme discutido em relação às etapas 105, 107 e 109 no método 100. Ao atuar como um decodificador, o sistema codec 200 gera um sinal de vídeo de saída a partir do fluxo de bits, conforme discutido em relação às etapas 111, 113, 115 e 117 no método operacional 100. O sistema codec 200 inclui um componente de controle de codificador geral 211, um componente de quantização e escalonamento de transformada 213, um componente de estimação de imagem intra 215, um componente de predição de imagem intra 217, um componente de compensação de movimento 219, um componente de estimação de movimento 221, um componente de transformada inversa e escalonamento 229, um componente de análise de controle de filtro 227, um componente de filtros in-loop 225, um componente de buffer de imagem decodificada 223 e um componente de codificação aritmética binária adaptativa ao contexto (CABAC) e formatação de cabeçalho 231. Tais componentes são acoplados conforme mostrado. Na Figura 2, linhas escuras indicam movimento de dados a serem codificados/decodificados enquanto linhas tracejadas indicam movimento de dados de controle que controlam a operação de outros componentes. Os componentes do sistema codec 200 podem estar todos presentes no codificador. O decodificador pode incluir um subconjunto dos componentes do sistema codec 200. Por exemplo, o decodificador pode incluir o componente de predição de imagem intra 217, o componente de compensação de movimento 219, o componente de transformada inversa e escalonamento 229, o componente de filtros in-loop 225 e o componente de buffer de imagem decodificada 223. Esses componentes serão descritos a seguir.
[0076] O sinal de vídeo particionado 201 é uma sequência de vídeo capturada que foi particionada em blocos de pixels por uma árvore de codificação. Uma árvore de codificação emprega vários modos de repartição para subdividir um bloco de pixels em blocos menores de pixels. Esses blocos podem ser, então, subdivididos adicionalmente em blocos menores. Os blocos podem ser denominados nós na árvore de codificação. Nós-pai maiores são repartidos em nós-filho menores. O número de vezes que um nó é subdividido é denominado a profundidade do nó/árvore de codificação. Os blocos divididos podem ser incluídos em unidades de codificação (CUs) em alguns casos. Por exemplo, uma CU pode ser uma subporção de uma CTU que contém um bloco de luma, bloco(s) de croma (Cr) de diferença de vermelho e um bloco(s) de croma (Cb) de diferença de azul em conjunto com instruções de sintaxe correspondentes para a CU. Os modos de repartição podem incluir uma árvore binária (BT), árvore tripla (TT) e uma quadtree (QT) empregadas para particionar um nó em dois, três ou quatro nós-filho, respectivamente, de formatos variados dependendo dos modos de repartição empregados. O sinal de vídeo particionado 201 é encaminhado para o componente de controle de codificador geral 211, o componente de quantização e escalonamento de transformada 213, o componente de estimação de imagem intra 215, o componente de análise de controle de filtro 227 e o componente de estimação de movimento 221 para compressão.
[0077] O componente de controle de codificador geral 211 é configurado para tomar decisões relacionadas à codificação das imagens da sequência de vídeo no fluxo de bits de acordo com restrições de aplicação. Por exemplo, o componente de controle de codificador geral 211 gerencia a otimização de tamanho de taxa de bit/fluxo de bits versus qualidade de reconstrução. Tais decisões podem ser tomadas com base em disponibilidade de largura de banda/espaço de armazenamento e solicitações de resolução de imagem. O componente de controle de codificador geral 211 também gerencia a utilização de buffer à luz de velocidade de transmissão para mitigar questões de insuficiência e de saturação de buffer. Para gerenciar essas questões, o componente de controle de codificador geral 211 gerencia particionamento, predição e filtragem pelos outros componentes. Por exemplo, o componente de controle de codificador geral 211 pode aumentar dinamicamente a complexidade de compressão para aumentar a resolução e aumentar o uso de largura de banda ou diminuir a complexidade de compressão para diminuir a resolução e o uso de largura de banda. Portanto, o componente de controle de codificador geral 211 controla os outros componentes do sistema codec 200 para equilibrar a qualidade de reconstrução de sinal de vídeo com preocupações de taxa de bits. O componente de controle de codificador geral 211 cria dados de controle, que controlam a operação dos outros componentes. Os dados de controle também são encaminhados para o componente de CABAC e formatação de cabeçalho 231 para serem codificados no fluxo de bits para sinalizar parâmetros para decodificação no decodificador.
[0078] O sinal de vídeo particionado 201 também é enviado ao componente de estimação de movimento 221 e ao componente de compensação de movimento 219 para predição inter. Um quadro ou fatia do sinal de vídeo particionado 201 pode ser dividido em múltiplos blocos de vídeo. O componente de estimação de movimento 221 e o componente de compensação de movimento 219 realizam codificação preditiva de modo inter do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer predição temporal. O sistema codec 200 pode realizar múltiplas passas de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0079] O componente de estimação de movimento 221 e o componente de compensação de movimento 219 podem ser altamente integrados, mas são ilustrados de forma separada para fins conceituais. A estimação de movimento, realizada pelo componente de estimação de movimento 221, é o processo de geração de vetores de movimento, que estimam movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de um objeto codificado em relação a um bloco preditivo. Constata-se que um bloco preditivo é um bloco que é estritamente compatível com o bloco a ser codificado, em termos de diferença de pixel. Um bloco preditivo também pode ser denominado um bloco de referência. Tal diferença de pixel pode ser determinada pela soma da diferença absoluta (SAD), soma da diferença quadrática (SSD) ou outra métrica de diferença. HEVC emprega vários objetos codificados incluindo uma CTU, blocos de árvore de codificação (CTBs) e CUs. Por exemplo, uma CTU pode ser dividida em CTBs, que podem, então, ser divididos em CBs para inclusão em CUs. Uma CU pode ser codificada como uma unidade de predição (PU) contendo dados de predição e/ou uma unidade de transformada (TU) contendo dados residuais transformados para a CU. O componente de estimação de movimento 221 gera vetores de movimento, PUs e TUs usando-se uma análise de taxa-distorção como parte de um processo de otimização de taxa distorção. Por exemplo, o componente de estimação de movimento 221 pode determinar múltiplos blocos de referência, múltiplos vetores de movimento, etc. para um bloco/quadro atual, e pode selecionar os blocos de referência, vetores de movimento, etc. que têm as melhores características de taxa-distorção. As melhores características de taxa- distorção equilibram qualidade de reconstrução de vídeo (por exemplo, quantidade de perda de dados por compressão) com eficiência de codificação (por exemplo, tamanho da codificação final).
[0080] Em alguns exemplos, o sistema codec 200 pode calcular valores para posições de pixel de número subinteiro de imagens de referência armazenadas no componente de buffer de imagem decodificada 223. Por exemplo, o sistema codec de vídeo 200 pode interpolar valores de posições de pixel de um quarto, posições de pixel de um oitavo ou outras posições de pixel fracionadas da imagem de referência. Portanto, o componente de estimação de movimento 221 pode realizar uma busca de movimento em relação às posições de pixel inteiras e posições de pixel fracionadas e emitir um vetor de movimento com precisão de pixel fracionada. O componente de estimação de movimento 221 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia codificada de modo inter comparando-se a posição da PU com a posição de um bloco preditivo de uma imagem de referência. O componente de estimação de movimento 221 emite o vetor de movimento calculado como dados de movimento para o componente de CABAC e formatação de cabeçalho 231 para codificação e movimento para o componente de compensação de movimento 219.
[0081] A compensação de movimento, realizada pelo componente de compensação de movimento 219, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pelo componente de estimação de movimento 221. Novamente, o componente de estimação de movimento 221 e o componente de compensação de movimento 219 podem ser funcionalmente integrados, em alguns exemplos. Mediante o recebimento do vetor de movimento para a PU do bloco de vídeo atual, o componente de compensação de movimento 219 pode localizar o bloco preditivo para onde o vetor de movimento aponta. Um bloco de vídeo residual é, então, formado subtraindo-se valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo atual sendo codificado, formando valores de diferença de pixel. Em geral, o componente de estimação de movimento 221 realiza estimação de movimento em relação a componentes de luma, e o componente de compensação de movimento 219 usa vetores de movimento calculados com base nos componentes de luma para componentes de croma e componentes de luma. O bloco preditivo e o bloco residual são encaminhados ao componente de quantização e escalonamento de transformada
213.
[0082] O sinal de vídeo particionado 201 também é enviado ao componente de estimação de imagem intra 215 e ao componente de predição de imagem intra 217. Assim como com o componente de estimação de movimento 221 e com o componente de compensação de movimento 219, o componente de estimação de imagem intra 215 e o componente de predição de imagem intra 217 podem ser altamente integrados, mas são ilustrados de maneira separada para fins conceituais. O componente de estimação de imagem intra 215 e o componente de predição de imagem intra 217 predizem de modo intra um bloco atual em relação a blocos em um quadro atual, como uma alternativa à predição inter realizada pelo componente de estimação de movimento 221 e pelo componente de compensação de movimento 219 entre quadros, conforme descrito acima. Em particular, o componente de estimação de imagem intra 215 determina um modo de predição intra a ser usado para codificar um bloco atual. Em alguns exemplos, o componente de estimação de imagem intra 215 seleciona um modo de predição intra apropriado para codificar um bloco atual a partir de múltiplos modos de predição intra testados. Os modos de predição intra selecionados são, então, encaminhados ao componente de CABAC 231 e formatação de cabeçalho para codificação.
[0083] Por exemplo, o componente de estimação de imagem intra 215 calcula valores de taxa-distorção usando uma análise de taxa-distorção para os vários modos de predição intra testados, e seleciona o modo de predição intra que tem as melhores características de taxa-distorção entre os modos testados. A análise de taxa-distorção geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco não codificado original que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (por exemplo, um número de bits) usada para produzir o bloco codificado. O componente de estimação de imagem intra 215 calcula razões das distorções e taxas para os vários blocos codificados para determinar qual modo de predição intra exibe o melhor valor de taxa-distorção para o bloco. Além disso, o componente de estimação de imagem intra 215 pode ser configurado para codificar blocos de profundidade de um mapa de profundidade usando um modo de modelagem de profundidade (DMM) com base em otimização de taxa-distorção (RDO).
[0084] O componente de predição de imagem intra 217 pode gerar um bloco residual a partir do bloco preditivo com base nos modos de predição intra selecionados determinados pelo componente de estimação de imagem intra 215 quando implementado em um codificador ou ler o bloco residual a partir do fluxo de bits quando implementado em um decodificador. O bloco residual inclui a diferença em valores entre o bloco preditivo e o bloco original, representada como uma matriz. O bloco residual é, então, encaminhado para o componente de quantização e escalonamento de transformada 213. O componente de estimação de imagem intra 215 e o componente de predição de imagem intra 217 podem operar em componentes de luma e croma.
[0085] O componente de quantização e escalonamento de transformada 213 é configurado para comprimir adicionalmente o bloco residual. O componente de quantização e escalonamento de transformada 213 aplica uma transformada, tal como uma transformada discreta de cosseno (DCT), uma transformada discreta de seno (DST) ou uma transformada conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo que compreende valores de coeficiente de transformada residual. As transformadas de wavelet,
transformadas de número inteiro, transformadas de sub-banda ou outros tipos de transformadas também podem ser usados. A transformada pode converter as informações residuais de um domínio de valor de pixel para um domínio de transformada, tal como um domínio de frequência. O componente de quantização e escalonamento de transformada 213 também é configurado para escalonar as informações residuais transformadas, por exemplo, com base em frequência. Tal escalonamento envolve aplicar um fator de escala às informações residuais de modo que diferentes informações de frequência sejam quantizadas em diferentes granularidades, o que pode afetar a qualidade visual final do vídeo reconstruído. O componente de quantização e escalonamento de transformada 213 também é configurado para quantizar os coeficientes de transformada para reduzir adicionalmente taxa de bits. O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes. O grau de quantização pode ser modificado ajustando-se um parâmetro de quantização. Em alguns exemplos, o componente de quantização e escalonamento de transformada 213 pode realizar, então, uma varredura da matriz incluindo os coeficientes de transformada quantizados. Os coeficientes de transformada quantizados são encaminhados para o componente de CABAC e formatação de cabeçalho 231 para serem codificados no fluxo de bits.
[0086] O componente de transformada inversa e escalonamento 229 aplica uma operação inversa do componente de quantização e escalonamento de transformada 213 para suportar estimação de movimento. O componente de transformada inversa e escalonamento 229 aplica escalonamento inverso, transformação e/ou quantização para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso posterior como um bloco de referência que pode se tornar um bloco preditivo para outro bloco atual. O componente de estimação de movimento 221 e/ou o componente de compensação de movimento 219 pode calcular um bloco de referência adicionando-se o bloco residual novamente a um bloco preditivo correspondente para uso em estimação de movimento de um bloco/quadro posterior. Os filtros são aplicados aos blocos de referência reconstruídos para mitigar artefatos criados durante escalonamento, quantização e transformada. Tais artefatos podem causar, de outro modo, predição não acurada (e criar artefatos adicionais) quando blocos subsequentes são preditos.
[0087] O componente de análise de controle de filtro 227 e o componente de filtros in-loop 225 aplicam os filtros aos blocos residuais e/ou a blocos de imagem reconstruídos. Por exemplo, o bloco residual transformado do componente de transformada inversa e escalonamento 229 pode ser combinado com um bloco de predição correspondente do componente de predição de imagem intra 217 e/ou componente de compensação de movimento 219 para reconstruir o bloco de imagem original. Os filtros podem ser aplicados, então, ao bloco de imagem reconstruído. Em alguns exemplos, em vez disso, os filtros podem ser aplicados aos blocos residuais. Assim como com outros componentes na Figura 2, o componente de análise de controle de filtro 227 e o componente de filtros in-loop 225 são altamente integrados e podem ser implementados em conjunto, mas são retratados de maneira separada para fins conceituais. Os filtros aplicados aos blocos de referência reconstruídos são aplicados a regiões espaciais particulares e incluem múltiplos parâmetros para ajustar o modo como tais filtros são aplicados. O componente de análise de controle de filtro 227 analisa os blocos de referência reconstruídos para determinar onde tais filtros devem ser aplicados e define parâmetros correspondentes. Tais dados são encaminhados para o componente de CABAC e formatação de cabeçalho 231 como dados de controle de filtro para codificação. O componente de filtros in-loop 225 aplica tais filtros com base nos dados de controle de filtro. Os filtros podem incluir um filtro de desblocagem, um filtro de supressão de ruído, um filtro SAO e um filtro loop adaptativo. Tais filtros podem ser aplicados no domínio espacial/pixel (por exemplo, em um bloco de pixel reconstruído) ou no domínio de frequência, dependendo do exemplo.
[0088] Ao operar como um codificador, o bloco de predição, bloco residual e/ou bloco de imagem reconstruído filtrado são armazenados no componente de buffer de imagem decodificada 223 para uso posterior em estimação de movimento, conforme discutido acima. Ao operar como um decodificador, o componente de buffer de imagem decodificada 223 armazena e encaminha os blocos reconstruídos e filtrados em direção a um display como parte de um sinal de vídeo de saída. O componente de buffer de imagem decodificada 223 pode ser qualquer dispositivo de memória capaz de armazenar blocos de predição, blocos residuais e/ou blocos de imagem reconstruídos.
[0089] O componente de CABAC e formatação de cabeçalho 231 recebe os dados dos vários componentes do sistema codec 200 e codifica tais dados em um fluxo de bits codificado para transmissão em direção a um decodificador. Especificamente, o componente de CABAC e formatação de cabeçalho 231 gera vários cabeçalhos para codificar dados de controle, tais como dados de controle gerais e dados de controle de filtro. Além disso, dados de predição, incluindo dados de predição intra e movimento, bem como dados residuais na forma de dados de coeficiente de transformada quantizado são todos codificados no fluxo de bits. O fluxo de bits final inclui todas as informações desejadas pelo decodificador para reconstruir o sinal de vídeo particionado original
201. Tais informações também podem incluir tabelas de índice de modo de predição intra (também denominadas tabelas de mapeamento de palavra-código), definições de contextos de codificação para vários blocos, indicações de modos de predição intra mais prováveis, uma indicação de informações de partição, etc. Tais dados podem ser codificados empregando-se codificação de entropia. Por exemplo, as informações podem ser codificadas empregando-se codificação de comprimento variável adaptativa ao contexto (CAVLC), CABAC, codificação aritmética binária com base em sintaxe adaptativa ao contexto (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra técnica de codificação de entropia. Após a codificação de entropia, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, um decodificador de vídeo) ou arquivado para transmissão ou recuperação posterior.
[0090] A Figura 3 é um diagrama de blocos que ilustra um codificador de vídeo exemplificativo 300. O codificador de vídeo 300 pode ser empregado para implementar as funções de codificação do sistema codec 200 e/ou implementar as etapas 101, 103, 105, 107 e/ou 109 do método operacional 100. O codificador 300 particiona um sinal de vídeo de entrada, resultando em um sinal de vídeo particionado 301, que é substancialmente similar ao sinal de vídeo particionado 201. O sinal de vídeo particionado 301 é, então, comprimido e codificado em um fluxo de bits por componentes do codificador 300.
[0091] Especificamente, o sinal de vídeo particionado 301 é encaminhado para um componente de predição de imagem intra 317 para predição intra. O componente de predição de imagem intra 317 pode ser substancialmente similar ao componente de estimação de imagem intra 215 e ao componente de predição de imagem intra 217. O sinal de vídeo particionado 301 também é encaminhado a um componente de compensação de movimento 321 para predição inter com base em blocos de referência em um componente de buffer de imagem decodificada 323. O componente de compensação de movimento 321 pode ser substancialmente similar ao componente de estimação de movimento 221 e ao componente de compensação de movimento 219. Os blocos de predição e os blocos residuais do componente de predição de imagem intra 317 e do componente de compensação de movimento 321 são encaminhados a um componente de transformada e quantização 313 para transformada e quantização dos blocos residuais. O componente de transformada e quantização 313 pode ser substancialmente similar ao componente de quantização e escalonamento de transformada 213. Os blocos residuais transformados e quantizados e os blocos de predição correspondentes (em conjunto com dados de controle associados) são encaminhados a um componente de codificação de entropia 331 para codificação em um fluxo de bits. O componente de codificação de entropia 331 pode ser substancialmente similar ao componente de CABAC e formatação de cabeçalho 231.
[0092] Os blocos residuais transformados e quantizados e/ou os blocos de predição correspondentes também são encaminhados a partir do componente de transformada e quantização 313 para um componente de quantização e transformada inversa 329 para reconstrução em blocos de referência para uso pelo componente de compensação de movimento 321. O componente de quantização e transformada inversa 329 pode ser substancialmente similar ao componente de transformada inversa e escalonamento 229. Os filtros in-loop em um componente de filtros in-loop 325 também são aplicados aos blocos residuais e/ou blocos de referência reconstruídos, dependendo do exemplo. O componente de filtros in-loop 325 pode ser substancialmente similar ao componente de análise de controle de filtro 227 e ao componente de filtros in-loop 225. O componente de filtros in-loop 325 pode incluir múltiplos filtros, conforme discutido em relação ao componente de filtros in-loop 225. Os blocos filtrados são, então, armazenados em um componente de buffer de imagem decodificada 323 para uso como blocos de referência pelo componente de compensação de movimento 321. O componente de buffer de imagem decodificada 323 pode ser substancialmente similar ao componente de buffer de imagem decodificada 223.
[0093] A Figura 4 é um diagrama de blocos que ilustra um decodificador de vídeo exemplificativo 400. O decodificador de vídeo 400 pode ser empregado para implementar as funções de decodificação do sistema codec 200 e/ou implementar as etapas 111, 113, 115 e/ou 117 do método operacional 100. O decodificador 400 recebe um fluxo de bits, por exemplo, a partir de um codificador 300, e gera um sinal de vídeo de saída reconstruído com base no fluxo de bits para exibição para um usuário final.
[0094] O fluxo de bits é recebido por um componente de decodificação de entropia 433. O componente de decodificação de entropia 433 é configurado para implementar um esquema de decodificação de entropia, tal como codificação de CAVLC, CABAC, SBAC, PIPE ou outras técnicas codificação de entropia. Por exemplo, o componente de decodificação de entropia 433 pode empregar informações de cabeçalho para fornecer um contexto para interpretar dados adicionais codificados como palavras-código no fluxo de bits. As informações decodificadas incluem quaisquer informações desejadas para decodificar o sinal de vídeo, tais como dados de controle gerais, dados de controle de filtro, informações de partição, dados de movimento, dados de predição e coeficientes de transformada quantizados a partir de blocos residuais. Os coeficientes de transformada quantizados são encaminhados para um componente de quantização e transformada inversa 429 para reconstrução em blocos residuais. O componente de quantização e transformada inversa 429 pode ser similar ao componente de quantização e transformada inversa 329.
[0095] Os blocos de predição e/ou blocos residuais reconstruídos são encaminhados para o componente de predição de imagem intra 417 para reconstrução em blocos de imagem com base em operações de predição intra. O componente de predição de imagem intra 417 pode ser similar ao componente de estimação de imagem intra 215 e a um componente de predição de imagem intra
217. Especificamente, o componente de predição de imagem intra 417 emprega modos de predição para localizar um bloco de referência no quadro e aplica um bloco residual ao resultado para reconstruir blocos de imagem preditos de modo intra. Os blocos de imagem preditos de modo intra reconstruídos e/ou os blocos residuais e dados de predição inter correspondentes são encaminhados para um componente de buffer de imagem decodificada 423 através de um componente de filtros in-loop 425, que pode ser substancialmente similar ao componente de buffer de imagem decodificada 223 e ao componente de filtros in-loop 225, respectivamente. O componente de filtros in-loop 425 filtra os blocos residuais,
blocos de predição e/ou blocos de imagem reconstruídos, e tais informações são armazenadas no componente de buffer de imagem decodificada 423. Os blocos de imagem reconstruídos do componente de buffer de imagem decodificada 423 são encaminhados para um componente de compensação de movimento 421 para predição inter. O componente de compensação de movimento 421 pode ser substancialmente similar ao componente de estimação de movimento 221 e/ou ao componente de compensação de movimento 219. Especificamente, o componente de compensação de movimento 421 emprega vetores de movimento a partir de um bloco de referência para gerar um bloco de predição e aplica um bloco residual ao resultado para reconstruir um bloco de imagem. Os blocos reconstruídos resultantes também podem ser encaminhados através do componente de filtros in-loop 425 ao componente de buffer de imagem decodificada 423. O componente de buffer de imagem decodificada 423 continua a armazenar blocos de imagem reconstruídos adicionais, que podem ser reconstruídos em quadros através das informações de partição. Tais quadros também podem ser colocados em uma sequência. A sequência é emitida em direção a um display como um sinal de vídeo de saída reconstruído.
[0096] A Figura 5 é um diagrama esquemático que ilustra um fluxo de bits exemplificativo 500 e subfluxo de bits 501 extraído do fluxo de bits 500. Por exemplo, o fluxo de bits 500 pode ser gerado por um sistema codec 200 e/ou um codificador 300 para decodificação por um sistema codec 200 e/ou um decodificador 400. Conforme outro exemplo, o fluxo de bits 500 pode ser gerado por um codificador na etapa 109 do método 100 para uso por um decodificador na etapa 111.
[0097] O fluxo de bits 500 inclui um conjunto de parâmetros de sequência (SPS) 510, uma pluralidade de conjuntos de parâmetro de imagem (PPSs) 512, uma pluralidade de cabeçalhos de fatia 514, dados de imagem 520 e uma ou mais mensagens de SEI 515. Um SPS 510 contém dados de sequência comuns a todas as imagens na sequência de vídeo contida no fluxo de bits 500. Tais dados podem incluir tamanho de imagem, profundidade de bit, parâmetros de ferramenta de codificação, restrições de taxa de bit, etc. O PPS 512 contém parâmetros que são específicos a uma ou mais imagens correspondentes. Portanto, cada imagem em uma sequência de vídeo pode se referir a um PPS
512. O PPS 512 pode indicar ferramentas de codificação disponíveis para tiles em imagens correspondentes, parâmetros de quantização, deslocamentos, parâmetros de ferramenta de codificação específicos de imagem (por exemplo, controles de filtro), etc. O cabeçalho de fatia 514 contém parâmetros que são específicos a uma ou mais fatias correspondentes 524 em uma imagem. Portanto, cada fatia 524 na sequência de vídeo pode se referir a um cabeçalho de fatia 514. O cabeçalho de fatia 514 pode conter informações de tipo de fatia, contagens de ordem de imagem (POCs), listas de imagem de referência, pesos de predição, pontos de entrada de tile, parâmetros de desblocagem, etc. Em alguns exemplos, as fatias 524 podem ser denominadas grupos de tiles. Em tal caso, o cabeçalho de fatia 514 pode ser denominado um cabeçalho de grupo de tiles. As mensagens de SEI 515 são mensagens opcionais que contêm metadados que não são necessários para decodificação de bloco, mas podem ser empregados para fins relacionados, tais como indicar temporização de saída de imagem, definições de exibição, detecção de perda, ocultação de perda, etc.
[0098] Os dados de imagem 520 contêm dados de vídeo codificados de acordo com predição inter e/ou predição intra bem como dados residuais transformados e quantizados correspondentes. Tais dados de imagem 520 são ordenados de acordo com um particionamento usado para particionar a imagem antes de codificação. Por exemplo, a sequência de vídeo é dividida em imagens
521. As imagens 521 podem ser divididas adicionalmente em subimagens 522, que são divididas em fatias 524. As fatias 524 podem ser divididas adicionalmente em tiles e/ou CTUs. As CTUs são adicionalmente divididas em blocos de codificação com base em árvores de codificação. Os blocos de codificação podem ser, então, codificados/decodificados de acordo com mecanismos de predição. Por exemplo, uma imagem 521 pode conter uma ou mais subimagens 522. Uma subimagem 522 pode conter uma ou mais fatias 524. A imagem 521 se refere ao PPS 512 e as fatias 524 se referem ao cabeçalho de fatia 514. As subimagens 522 podem ser particionadas de maneira consistente ao longo de toda uma sequência de vídeo (também conhecida como um segmento) e, portanto, podem se referir ao SPS 510. Cada fatia 524 pode conter um ou mais tiles. Cada fatia 524 e, portanto, imagem 521 e subimagem 522, também podem conter uma pluralidade de CTUs.
[0099] Cada imagem 521 pode conter um conjunto inteiro de dados visuais associados a uma sequência de vídeo para um momento correspondente no tempo. Entretanto, certas aplicações podem desejar exibir apenas uma porção de uma imagem 521 em alguns casos. Por exemplo, um sistema de realidade virtual (VR) pode exibir uma região selecionada por usuário da imagem 521, que cria a sensação de estar presente na cena retratada na imagem 521. A região que um usuário pode desejar visualizar não é conhecida quando o fluxo de bits 500 é codificado. Assim, a imagem 521 pode conter cada possível região que um usuário pode potencialmente visualizar como subimagens 522, que podem ser decodificadas e exibidas de forma separada com base em entrada de usuário. Outras aplicações podem exibir separadamente uma região de interesse. Por exemplo, um televisor com uma imagem em uma imagem pode desejar exibir uma região particular e, portanto, uma subimagem 522, de uma sequência de vídeo ao longo de uma imagem 521 de uma sequência de vídeo não relacionada. Em ainda outro exemplo, sistemas de teleconferência podem exibir toda uma imagem 521 de um usuário que está atualmente discursando e uma subimagem 522 de um usuário que não está atualmente discursando. Assim, uma subimagem 522 pode conter uma região definida da imagem 521. Uma subimagem 522 que é temporariamente com restrição de movimento pode ser decodificável de forma separada do restante da imagem 521. Especificamente, uma subimagem com restrição de movimento temporal é codificada sem referência a amostras fora da subimagem com restrição de movimento temporal e, portanto, contém informações suficientes para decodificação completa sem referência ao restante da imagem 521.
[0100] Cada fatia 524 pode ser um retângulo definido por uma CTU em um canto esquerdo superior e uma CTU em um canto direito inferior. Em alguns exemplos, uma fatia 524 inclui uma série de tiles e/ou CTUs em uma ordem de varredura raster que prossegue da esquerda para a direita e do topo para baixo. Em outros exemplos, uma fatia 524 é uma fatia retangular. Uma fatia retangular pode não atravessar toda a largura de uma imagem de acordo com uma ordem de varredura raster. Em vez disso, uma fatia retangular pode conter uma região retangular e/ou quadrangular de uma imagem 521 e/ou subimagem 522 definida em termos de uma CTU e/ou linhas de tile e uma CTU e/ou colunas de tile. Uma fatia 524 é a menor unidade que pode ser separadamente exibida por um decodificador. Portanto, fatias 524 de uma imagem 521 podem ser atribuídas a diferentes subimagens 522 para retratar separadamente regiões desejadas de uma imagem 521.
[0101] Um decodificador pode exibir uma ou mais subimagens 523 da imagem 521. As subimagens 523 são um subgrupo selecionado por usuário ou predefinido de subimagens 522. Por exemplo, uma imagem 521 pode ser dividida em nove subimagens 522, mas o decodificador pode exibir apenas uma única subimagem 523 do grupo de subimagens 522. As subimagens 523 contêm fatias 525, que são um subgrupo selecionado ou predefinido de fatias 524. Para permitir exibição separada das subimagens 523, um subfluxo de bits 501 pode ser extraído 529 do fluxo de bits 500. A extração 529 pode ocorrer no lado de codificador de modo que o decodificador apenas receba o subfluxo de bits 501. Em outros casos, todo o fluxo de bits 500 é transmitido ao decodificador e o decodificador extrai 529 o subfluxo de bits 501 para decodificação separada. Deve-se observar que o subfluxo de bits 501 também pode ser denominado, de modo geral, um fluxo de bits em alguns casos. Um subfluxo de bits 501 inclui o SPS 510, o PPS 512, as subimagens selecionadas 523, bem como cabeçalhos de fatia 514, e mensagens de SEI 515 que são relevantes para as subimagens 523 e/ou fatias 525.
[0102] A presente revelação sinaliza vários dados para suportar codificação eficiente das subimagens 522 para seleção e exibição das subimagens 523 no decodificador. O SPS 510 inclui um tamanho de subimagem 531, uma localização de subimagem 532 e IDs de subimagem 533 relacionados ao conjunto completo de subimagens 522. O tamanho de subimagem 531 inclui uma altura de subimagem em amostras de luma e uma largura de subimagem em amostras de luma para uma subimagem correspondente 522. A localização de subimagem 532 inclui uma distância de deslocamento entre uma amostra esquerda-superior de uma subimagem correspondente 522 e uma amostra esquerda-superior da imagem 521. A localização de subimagem 532 e o tamanho de subimagem 531 definem um layout da subimagem correspondente 522. O ID de subimagem 533 contém dados que identificam exclusivamente uma subimagem correspondente 522. O ID de subimagem 533 pode ser um índice de varredura raster de subimagem 522 ou outro valor definido. Portanto, um decodificador pode ler o SPS 510 e determinar o tamanho, localização e ID de cada subimagem 522. Em alguns sistemas de codificação de vídeo, dados relacionados às subimagens 522 podem ser incluídos no PPS 512 visto que uma subimagem 522 é particionada a partir de uma imagem 521. Entretanto, partições usadas para criar subimagens 522 podem ser usadas por aplicações, tais como aplicações com base em ROI, aplicações de VR, etc., que dependem de partições de subimagem 522 consistentes ao longo de uma sequência/segmento de de vídeo. Como tal, as partições de subimagem 522 geralmente não mudam em uma base por imagem. A colocação de informações de layout para subimagens 522 no SPS 510 garante que o layout seja apenas sinalizado uma vez para uma sequência/segmento em vez de ser sinalizado de maneira redundante para cada PPS 512 (que pode ser sinalizado para cada imagem 521 em alguns casos). Além disso, a sinalização das informações de subimagem 522, em vez de depender do decodificador para derivar tais informações, reduz a possibilidade de erro em caso de pacotes perdidos e suporta funcionalidade adicional em termos de extração de subimagens 523. Assim, a sinalização do layout de subimagem 522 no SPS 510 aperfeiçoa a funcionalidade de um codificador e/ou decodificador.
[0103] O SPS 510 também contém flags de subimagens com restrição de movimento 534 relacionadas ao conjunto completo de subimagens 522. As flags de subimagens com restrição de movimento 534 indicam se cada subimagem 522 é uma subimagem com restrição de movimento temporal. Portanto, o decodificador pode ler as flags de subimagens com restrição de movimento 534 e determinar qual dentre as subimagens 522 pode ser extraída e exibida separadamente sem decodificar outras subimagens 522. Isso permite que subimagens selecionadas 522 sejam codificadas como subimagens com restrição de movimento temporal enquanto permite que outras subimagens 522 sejam codificadas sem tais restrições para eficiência de codificação aumentada.
[0104] Os IDs de subimagem 533 também são incluídos nos cabeçalhos de fatia 514. Cada cabeçalho de fatia 514 contém dados relevantes para um conjunto correspondente de fatias 524. Assim, o cabeçalho de fatia 514 contém apenas os IDs de subimagem 533 que correspondem às fatias 524 associadas ao cabeçalho de fatia 514. Como tal, um decodificador pode receber uma fatia 524, obter um ID de subimagem 533 a partir do cabeçalho de fatia 514 e determinar qual subimagem 522 contém a fatia 524. O decodificador também pode usar o ID de subimagem 533 do cabeçalho de fatia 514 para correlacionar com dados relacionados no SPS 510. Como tal, o decodificador pode determinar como posicionar as subimagens 522/523 e fatias 524/525 lendo-se o SPS 510 e cabeçalhos de fatia relevantes 514. Isso permite que as subimagens 523 e fatias
525 sejam decodificadas até mesmo se algumas subimagens 522 se perderem na transmissão ou forem omitidas propositalmente para aumentar a eficiência de codificação.
[0105] A mensagem de SEI 515 também pode conter um nível de subimagem 535. O nível de subimagem 535 indica recursos de hardware necessários para decodificar uma subimagem correspondente 522. Desse modo, cada subimagem 522 pode ser codificada independentemente de outras subimagens 522. Isso garante a alocação, para cada subimagem 522, da quantidade correta de recursos de hardware no decodificador. Sem tal nível de subimagem 535, cada subimagem 522 será alocada com recursos suficientes para decodificar a subimagem mais complexa 522. Portanto, o nível de subimagem 535 impede que o decodificador aloque excessivamente recursos de hardware se subimagens 522 estiverem associadas a exigências de recurso de hardware variadas.
[0106] A Figura 6 é um diagrama esquemático que ilustra uma imagem exemplificativa 600 particionada em subimagens 622. Por exemplo, uma imagem 600 pode ser codificada em e decodificada a partir de um fluxo de bits 500, por exemplo, por um sistema codec 200, um codificador 300 e/ou um decodificador
400. Além disso, a imagem 600 pode ser particionada e/ou incluída em um subfluxo de bits 501 para suportar codificação e decodificação de acordo com o método 100.
[0107] A imagem 600 pode ser substancialmente similar a uma imagem
521. De modo adicional, a imagem 600 pode ser particionada em subimagens 622, que são substancialmente similares às subimagens 522. As subimagens 622 incluem, cada uma, um tamanho de subimagem 631, que pode ser incluído em um fluxo de bits 500 como um tamanho de subimagem 531. O tamanho de subimagem 631 inclui largura de subimagem 631a e uma altura de subimagem 631b. A largura de subimagem 631a é a largura de uma subimagem correspondente 622 em unidades de amostras de luma. A altura de subimagem 631b é a altura de uma subimagem correspondente 622 em unidades de amostras de luma. As subimagens 622 incluem, cada uma, um ID de subimagem 633, que pode ser incluído em um fluxo de bits 500 como um ID de subimagem 633. O ID de subimagem 633 pode ser qualquer valor que identifica exclusivamente cada subimagem 622. No exemplo mostrado, o ID de subimagem 633 é um índice de subimagem 622. As subimagens 622 incluem, cada uma, uma localização 632, que pode ser incluída em um fluxo de bits 500 como uma localização de subimagem 532. A localização 632 é expressa como um deslocamento entre a amostra superior esquerda de uma subimagem correspondente 622 e uma amostra superior esquerda 642 da imagem 600.
[0108] Também conforme mostrado, algumas subimagens 622 podem ser subimagens com restrição de movimento temporal 634 e outras subimagens 622 podem não ser. No exemplo mostrado, a subimagem 622 com um ID de subimagem 633 de cinco é uma subimagem com restrição de movimento temporal
634. Isso indica que a subimagem 622 identificada como cinco é codificada sem referência a qualquer outra subimagem 622 e pode, portanto, ser extraída e decodificada de forma separada sem considerar dados das outras subimagens
622. Uma indicação de quais subimagens 622 são subimagens com restrição de movimento temporal 634 pode ser sinalizada em um fluxo de bits 500 em flags de subimagens com restrição de movimento 534.
[0109] Conforme mostrado, as subimagens 622 podem ser restringidas para cobrir uma imagem 600 sem um gap ou uma sobreposição. Um gap é uma região de uma imagem 600 que não está incluída em qualquer subimagem 622. Uma sobreposição é uma região de uma imagem 600 que está incluída em mais de uma subimagem 622. No exemplo mostrado na Figura 6, as subimagens 622 são particionadas a partir da imagem 600 para evitar gaps e sobreposições. Os gaps fazem com que as amostras de imagem 600 sejam deixadas fora das subimagens 622. As sobreposições fazem com que fatias associadas sejam incluídas em múltiplas subimagens 622. Portanto, gaps e sobreposições podem fazer com que amostras sejam impactadas por tratamento diferencial quando subimagens 622 são codificadas de forma diferente. Se isso for permitido no codificador, um decodificador precisa suportar tal esquema de codificação até mesmo quando o esquema de decodificação for raramente usado. Proibindo-se gaps e sobreposições de subimagem 622, a complexidade do decodificador pode ser diminuída visto que não é exigido que o decodificador seja responsável por potenciais gaps e sobreposições ao determinar tamanhos 631 e localizações 632 de subimagem. Além disso, proibindo-se gaps e sobreposições de subimagem 622 reduz a complexidade de processos de RDO no codificador. Isso se deve ao fato de que o codificador pode omitir consideração de casos de gap e sobreposição ao selecionar uma codificação para uma sequência de vídeo. Assim, evitar gaps e sobreposições pode reduzir o uso de recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0110] A Figura 7 é um diagrama esquemático que ilustra um mecanismo exemplificativo 700 para relacionar fatias 724 a um layout de subimagem 722. Por exemplo, o mecanismo 700 pode ser aplicado à imagem 600. De modo adicional, o mecanismo 700 pode ser aplicado com base em dados em um fluxo de bits 500, por exemplo, por um sistema codec 200, um codificador 300 e/ou um decodificador 400. Além disso, o mecanismo 700 pode ser empregado para suportar codificação e decodificação de acordo com o método 100.
[0111] O mecanismo 700 pode ser aplicado a fatias 724 em uma subimagem 722, tais como fatias 524/525 e subimagens 522/523, respectivamente. No exemplo mostrado, a subimagem 722 inclui uma primeira fatia 724a, uma segunda fatia 724b e uma terceira fatia 724c. Os cabeçalhos de fatia para cada uma dentre as fatias 724 incluem um ID de subimagem 733 para a subimagem 722. O decodificador pode compatibilizar o ID de subimagem 733 do cabeçalho de fatia com o ID de subimagem 733 no SPS. O decodificador pode, então, determinar a localização 732 e tamanho da subimagem 722 do SPS com base no ID de subimagem 733. Usando a localização 732, a subimagem 722 pode ser colocada em relação à amostra superior esquerda no canto esquerdo superior 742 da imagem. O tamanho pode ser usado para definir a altura e a largura da subimagem 722 em relação à localização 732. As fatias 724 podem ser, então, incluídas na subimagem 722. Assim, as fatias 724 podem ser posicionadas na subimagem correta 722 com base no ID de subimagem 733 sem referência a outras subimagens. Isso suporta correção de erro visto que outras subimagens perdidas não alteram a decodificação de subimagem 722. Isso também suporta aplicações que extraem apenas uma subimagem 722 e evitam a transmissão de outras subimagens. Portanto, os IDs de subimagem 733 suportam funcionalidade aumentada e/ou eficiência de codificação aumentada, que reduz o uso de recursos de rede, recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0112] A Figura 8 é um diagrama esquemático que ilustra outra imagem exemplificativa 800 particionada em subimagens 822. A imagem 800 pode ser substancialmente similar à imagem 600. Além disso, uma imagem 800 pode ser codificada em e decodificada a partir de um fluxo de bits 500, por exemplo, por um sistema codec 200, um codificador 300 e/ou um decodificador 400. Além disso, a imagem 800 pode ser particionada e/ou incluída em um subfluxo de bits 501 para suportar codificação e decodificação de acordo com o método 100 e/ou o mecanismo 700.
[0113] A imagem 800 inclui subimagens 822, que podem ser substancialmente similares às subimagens 522, 523, 622 e/ou 722. As subimagens 822 são divididas em uma pluralidade de CTUs 825. Uma CTU 825 é uma unidade de codificação básica em sistemas de codificação de vídeo padronizados. Uma CTU 825 é subdividida por uma árvore de codificação em blocos de codificação, que são codificados de acordo com predição inter ou predição intra. Conforme mostrado, algumas subimagens 822a são restritas para incluir larguras de subimagem e alturas de subimagem que são múltiplos de tamanho de CTU 825. No exemplo mostrado, as subimagens 822a têm uma altura de seis CTUs 825 e uma largura de cinco CTUs 825. Essa restrição é removida para subimagens 822b posicionadas na borda direita de imagens 801 e para subimagens 822c posicionadas na borda inferior de imagens 802. No exemplo mostrado, as subimagens 822b têm uma largura entre cinco e seis CTUs 825. Entretanto, as subimagens 822b que não estão posicionadas na borda inferior de imagens 802 ainda são restringidas para manter uma altura de subimagem que é um múltiplo de tamanho de CTU 825. No exemplo mostrado, as subimagens 822c têm uma altura entre seis e sete CTUs 825. Entretanto, subimagens 822c que não estão posicionadas na borda direita de imagens 801 ainda são restringidas para manter uma largura de subimagem que é um múltiplo de tamanho de CTU 825.
[0114] Conforme observado acima, alguns sistemas de vídeo podem limitar as subimagens 822 para incluir alturas e larguras que são múltiplos de tamanho de CTU 825. Isso pode impedir que subimagens 822 operem corretamente com muitos layouts de imagem, por exemplo, com uma imagem 800 que contém uma largura ou altura total que não é um múltiplo de tamanho de CTU
825. Permitindo-se que as subimagens inferiores 822c e subimagens à direita 822b incluam alturas e larguras, respectivamente, que não são múltiplos de tamanho de CTU 825, as subimagens 822 podem ser usadas com qualquer imagem 800 sem causar erros de decodificação. Isso resulta em funcionalidade crescente de codificador e decodificador. Além disso, a funcionalidade aumentada permite que um codificador codifique imagens de modo mais eficiente, que reduz o uso de recursos de rede, recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0115] Conforme descrito na presente invenção, a presente revelação descreve projetos para particionamento de imagem com base em subimagem em codificação de vídeo. Uma subimagem é uma área retangular dentro de uma imagem que pode ser decodificada de maneira independente usando um processo de decodificação similar ao que é usado para uma imagem. A presente revelação se refere à sinalização de subimagens em uma sequência de vídeo codificada e/ou fluxo de bits bem como o processo para extração de subimagem. As descrições das técnicas se baseiam em VVC pelo JVET de ITU-T e ISO/IEC. Entretanto, as técnicas também se aplicam a outras especificações de codec de vídeo. O conteúdo a seguir são modalidades exemplificativas descritas na presente invenção. Tais modalidades podem ser aplicadas individualmente ou em combinação.
[0116] As informações relacionadas a subimagens que podem estar presentes na sequência de vídeo codificada (CVS) podem ser sinalizadas em um conjunto de parâmetros de nível de sequência, tal como um SPS. Tal sinalização pode incluir as informações a seguir. O número de subimagens que estão presentes em cada imagem da CVS pode ser sinalizado no SPS. No contexto do SPS ou de uma CVS, as subimagens colocalizadas para todas as unidades de acesso (AUs) podem ser denominadas coletivamente uma sequência de subimagem. Um loop para especificar adicionalmente informações que descrevem propriedades de cada subimagem também pode ser incluído no SPS. Essas informações podem compreender a identificação de subimagem, a localização da subimagem (por exemplo, a distância de deslocamento entre a amostra de luma de canto esquerdo-superior da subimagem e a amostra de luma de canto esquerdo-superior da imagem), e o tamanho da subimagem. Além disso, o SPS pode sinalizar se cada subimagem é uma subimagem com restrição de movimento (contendo a funcionalidade de um MCTS). As informações de perfil, tier e nível para cada subimagem também podem ser sinalizadas ou deriváveis no decodificador. Tais informações podem ser empregadas para determinar informações de perfil, tier e nível para um fluxo de bits criado extraindo-se subimagens do fluxo de bits original. O perfil e tier de cada subimagem podem ser derivados para serem iguais ao perfil e tier de todo o fluxo de bits. O nível para cada subimagem pode ser sinalizado de maneira explícita. Tal sinalização pode estar presente no loop contido no SPS. Os parâmetros de decodificador de referência hipotética de nível de sequência (HRD) podem ser sinalizados na seção de informações de usabilidade de vídeo (VUI) do SPS para cada subimagem (ou de modo equivalente, cada sequência de subimagem).
[0117] Quando uma imagem não é particionada em duas ou mais subimagens, as propriedades da subimagem (por exemplo, localização, tamanho, etc.), exceto o ID de subimagem, podem não estar presentes / sinalizadas no fluxo de bits. Quando uma subimagem de imagens em uma CVS é extraída, cada unidade de acesso no novo fluxo de bits pode não conter subimagens. Neste caso, a imagem em cada AU no novo fluxo de bits não é particionada em múltiplas subimagens. Desse modo, não há necessidade de sinalizar propriedades de subimagem, tais como localização e tamanho no SPS, visto que tais informações podem ser derivadas das propriedades de imagem. Entretanto, a identificação de subimagem ainda pode ser sinalizada visto que o ID pode ser referido por unidades de VCL NAL / grupos de tiles que são incluídos na subimagem extraída. Isso pode permitir que os IDs de subimagem permaneçam o mesmo ao extrair a subimagem.
[0118] A localização de uma subimagem na imagem (deslocamento x e deslocamento y) pode ser sinalizada em unidades de amostras de luma. A localização representa a distância entre a amostra de luma de canto esquerdo- superior da subimagem e amostra de luma de canto esquerdo-superior da imagem. Alternativamente, a localização de uma subimagem na imagem pode ser sinalizada em unidades do tamanho de bloco de luma de codificação mínimo (MinCbSizeY). Alternativamente, a unidade de deslocamentos de localização de subimagem pode ser indicada de maneira explícita por um elemento de sintaxe em um conjunto de parâmetros. A unidade pode ser CtbSizeY, MinCbSizeY, amostra de luma ou outros valores.
[0119] O tamanho de uma subimagem (largura de subimagem e altura de subimagem) pode ser sinalizado em unidades de amostras de luma. De modo alternativo, o tamanho de uma subimagem pode ser sinalizado em unidades do tamanho de bloco de luma de codificação mínimo (MinCbSizeY). De modo alternativo, a unidade de valores tamanho de subimagem pode ser explicitamente indicada por um elemento de sintaxe em um conjunto de parâmetros. A unidade pode ser CtbSizeY, MinCbSizeY, amostra de luma ou outros valores. Quando a borda direita de uma subimagem não coincidir com a borda direita de imagem, pode-se exigir que a largura da subimagem seja um número inteiro múltiplo de tamanho de CTU de luma (CtbSizeY). Da mesma forma, quando a borda inferior da subimagem não coincidir com a borda inferior de imagem, pode-se exigir que a altura da subimagem seja um número inteiro múltiplo de tamanho de CTU de luma (CtbSizeY). Se a largura de uma subimagem não for um número inteiro múltiplo de tamanho de CTU de luma, pode-se exigir que a subimagem seja localizado em uma posição mais à direita na imagem. Da mesma forma, se a altura de uma subimagem não for um número inteiro múltiplo de tamanho de CTU de luma, pode-se exigir que a subimagem seja localizada em uma posição mais abaixo na imagem. Em alguns casos, a largura de uma subimagem pode ser sinalizada em unidades de tamanho de CTU de luma, mas a largura de uma subimagem não é um número inteiro múltiplo de tamanho de CTU de luma. Neste caso, a largura real em amostras de luma pode ser derivada com base na localização de deslocamento de subimagem. A largura da subimagem pode ser derivada com base em tamanho de CTU de luma e a altura da imagem pode ser derivada com base em amostras de luma. Da mesma forma, a altura de uma subimagem pode ser sinalizada em unidades de tamanho de CTU de luma, mas a altura da subimagem não é um número inteiro múltiplo de tamanho de CTU de luma. Em tal caso, a altura real em amostra de luma pode ser derivada com base na localização de deslocamento de subimagem. A altura da subimagem pode ser derivada com base em tamanho de CTU de luma e a altura da imagem pode ser derivada com base em amostras de luma.
[0120] Para qualquer subimagem, o ID de subimagem pode ser diferente do índice de subimagem. O índice de subimagem pode ser o índice da subimagem conforme sinalizado em um loop de subimagens no SPS. O ID de subimagem pode ser o índice da subimagem em ordem de varredura raster de subimagem na imagem. Quando o valor do ID de subimagem de cada subimagem for igual ao índice de subimagem, o ID de subimagem pode ser sinalizado ou derivado. Quando o ID de subimagem de cada subimagem for diferente do índice de subimagem, o ID de subimagem é explicitamente sinalizado. O número de bits para sinalização de IDs de subimagem pode ser sinalizado no mesmo conjunto de parâmetros que contém propriedades de subimagem (por exemplo, no SPS). Alguns valores para ID de subimagem podem ser reservados para certas finalidades. Por exemplo, quando cabeçalhos de grupo de tiles contiverem IDs de subimagem para especificar qual subimagem contém um grupo de tiles, o valor zero pode ser reservado e não usado para subimagens para garantir que os primeiros bits de um cabeçalho de grupo de tiles não sejam todos zeros para evitar inclusão acidental de um código de prevenção de emulação. Em casos opcionais em que subimagens de uma imagem não cobrem toda a área da imagem sem gap e sem sobreposição, um valor (por exemplo, valor um) pode ser reservado para grupos de tiles que não são parte de qualquer subimagem. Alternativamente, o ID de subimagem da área remanescente é sinalizado de maneira explícita. O número de bits para sinalização de ID de subimagem pode ser restrito da maneira a seguir. A faixa de valor deve ser suficiente para identificar exclusivamente todas as subimagens em uma imagem, incluindo os valores reservados de ID de subimagem. Por exemplo, o número mínimo de bits para ID de subimagem pode ser o valor de Ceil( Log2( número de subimagens em uma imagem + número de ID de subimagem reservado ).
[0121] Pode-se restringir que a união de subimagens precisa cobrir toda a imagem sem gap e sem sobreposição. Quando essa restrição é aplicada, para cada subimagem, uma flag pode estar presente para especificar se a subimagem é uma subimagem com restrição de movimento, que indica que a subimagem pode ser extraída. Alternativamente, a união de subimagens pode não cobrir toda a imagem, mas sobreposições podem não ser permitidas.
[0122] Os IDs de subimagem podem estar presentes imediatamente após o cabeçalho de unidade de NAL para auxiliar o processo de extração de subimagem sem exigir que o extrator analise o restante dos bits de unidade de NAL. Para unidades de VCL NAL, o ID de subimagem pode estar presente nos primeiros bits de cabeçalhos de grupo de tiles. Para unidade não-VCL NAL, o conteúdo a seguir pode se aplicar. Para SPS, o ID de subimagem não precisa estar presente imediatamente após o cabeçalho de unidade de NAL. Para PPS, se todos os grupos de tiles da mesma imagem forem restritos para se referir ao mesmo PPS, o ID de subimagem não precisa estar presente imediatamente após seu cabeçalho de unidade de NAL. Se for permitido que grupos de tiles da mesma imagem se refiram a diferentes PPSs, o ID de subimagem pode estar presente nos primeiros bits de PPS (por exemplo, imediatamente após o cabeçalho de unidade de NAL). Nesse caso, pode-se permitir que quaisquer grupos de tiles de uma imagem compartilhem o mesmo PPS. Alternativamente, quando é permitido que grupos de tiles da mesma imagem se refiram a diferentes PPSs, e quando também é permitido que diferentes grupos de tiles da mesma imagem compartilhem o mesmo PPS, nenhum ID de subimagem pode estar presente na sintaxe de PPS. Alternativamente, quando é permitido que grupos de tiles da mesma imagem se refiram a diferentes PPSs, e quando também é permitido que diferentes grupos de tiles da mesma imagem compartilhem o mesmo PPS, uma lista de IDs de subimagem pode estar presente na sintaxe de PPS. A lista indica as subimagens às quais o PPS se aplica. Para outras unidades não-VCL NAL, se a unidade não-VCL se aplicar ao nível de imagem ou acima (por exemplo, delimitador de unidade de acesso, fim de sequência, fim de fluxo de bits, etc.), então, o ID de subimagem pode não estar presente imediatamente após o cabeçalho de unidade de NAL. De outro modo, o ID de subimagem pode estar presente imediatamente após o cabeçalho de unidade NAL.
[0123] Com a sinalização de SPS acima, o particionamento de tile dentro de subimagens individuais pode ser sinalizado no PPS. Pode-se permitir que os grupos de tiles dentro da mesma imagem se refiram a diferentes PPSs. Neste caso, o agrupamento de tile só pode estar dentro de cada subimagem. O conceito de agrupamento de tile é particionamento de uma subimagem em tiles.
[0124] Alternativamente, um conjunto de parâmetros para descrever o particionamento de tile dentro de subimagens individuais é definido. Tal conjunto de parâmetros pode ser denominado Conjunto de Parâmetros de Subimagem (SPPS). O SPPS se refere a SPS. Um elemento de sintaxe que se refere ao SPS ID está presente em SPPS. O SPPS pode conter um ID de subimagem. Para fins de extração de subimagem, o elemento de sintaxe que se refere ao ID de subimagem é o primeiro elemento de sintaxe em SPPS. O SPPS contém uma estrutura de tile (por exemplo, um número de colunas, um número de linhas, espaçamento de tile uniforme, etc.) O SPPS pode conter uma flag para indicar se um filtro loop é ou não habilitado através de delimitações de subimagem associadas. Alternativamente, as propriedades de subimagem para cada subimagem podem ser sinalizadas no SPPS em vez de no SPS. O particionamento de tile dentro de subimagens individuais ainda pode ser sinalizado no PPS. É permitido que os grupos de tiles dentro da mesma imagem se refiram a diferentes PPSs. Uma vez que um SPPS é ativado, o SPPS permanece por uma sequência de AUs consecutivas em ordem de decodificação. Entretanto, o SPPS pode ser desativado/ativado em uma AU que não é o início de uma CVS. Em qualquer momento durante o processo de decodificação de um fluxo de bits de camada única com múltiplas subimagens em algumas AUs, múltiplos SPPSs podem estar ativos. Um SPPS pode ser compartilhado por diferentes subimagens de uma AU. Alternativamente, SPPS e PPS podem ser fundidos em um conjunto de parâmetros. Em tal caso, pode não ser exigido que todos os grupos de tiles da mesma imagem se refiram ao mesmo PPS. Uma restrição pode ser aplicada tal que todos os grupos de tiles na mesma subimagem possam se referir ao mesmo conjunto de parâmetros que resulta da fusão entre SPPS e PPS.
[0125] O número de bits usado para sinalização de ID de subimagem pode ser sinalizado em um cabeçalho de unidade NAL. Quando presente em um cabeçalho de unidade de NAL, tais informações podem auxiliar processos de extração de subimagem na análise de valor de ID de subimagem no início de uma carga útil de unidade de NAL (por exemplo, os primeiros bits imediatamente após cabeçalho de unidade de NAL). Para tal sinalização, alguns dos bits reservados (por exemplo, sete bits reservados) em um cabeçalho de unidade de NAL podem ser usados para evitar o aumento do comprimento de cabeçalho de unidade NAL. O número de bits para tal sinalização pode cobrir o valor de sub-picture-ID-bit-len. Por exemplo, quatro bits dentre sete bits reservados de um cabeçalho de unidade VVCs NAL podem ser usados para esta finalidade.
[0126] Ao decodificar uma subimagem, a localização de cada boco de árvore de codificação (por exemplo, xCtb e yCtb) pode ser ajustada para uma localização de amostra de luma real na imagem em vez de uma localização de amostra de luma na subimagem. Desse modo, a extração de uma subimagem colocalizada a partir de cada imagem de referência pode ser evitada visto que o boco de árvore de codificação é decodificado com referência à imagem em vez da subimagem. Para ajustar a localização de um boco de árvore de codificação, as variáveis SubpictureXOffset e SubpictureYOffset podem ser derivadas com base na posição de subimagem (subpic_x_offset e subpic_y_offset). Os valores das variáveis podem ser adicionados aos valores das coordenadas x e y de localização de amostra de luma, respectivamente, de cada boco de árvore de codificação na subimagem.
[0127] Um processo de extração de subimagem pode ser definido da maneira a seguir. A entrada para o processo é a subimagem alvo a ser extraída. Isso pode ser na forma de ID de subimagem ou localização de subimagem. Quando a entrada for uma localização de subimagem, o ID de subimagem associado pode ser solucionado analisando-se as informações de subimagem no SPS. Para unidades não VCL NAL, o conteúdo a seguir se aplica. Os elementos de sintaxe no SPS relacionado a tamanho e nível de imagem podem ser atualizados com as informações de tamanho e nível de subimagem. As seguintes unidades não VCL NAL são mantidas sem mudança: PPS, Delimitador de Unidade de Acesso (AUD), Fim de Sequência (EOS), Fim de Fluxo de bits (EOB) e quaisquer outras unidades não VCL NAL que são aplicáveis a nível de imagem ou acima. As unidades não-VCL NAL remanescentes com ID de subimagem diferente do ID de subimagem alvo podem ser removidas. As unidades VCL NAL com ID de subimagem diferente do ID de subimagem alvo também podem ser removidas.
[0128] Uma mensagem de SEI que aninha subimagem de nível de sequência pode ser usada para aninhamento de mensagens de SEI de nível de AU ou nível de subimagem para um conjunto de subimagens. Isso pode incluir um período de buffering, temporização de imagem e mensagens de SEI não-HRD. A sintaxe e semântica dessa mensagem de SEI que aninha subimagem podem ser da maneira a seguir. Para operações de sistemas, tais como em ambientes de formato de mídia omnidirecional (OMAF), um conjunto de sequências de subimagem que cobre um visor pode ser solicitado e decodificado pelo reprodutor de OMAF. Portanto, a mensagem de SEI de nível de sequência é usada para portar informações de um conjunto de sequências de subimagem que cobrem coletivamente uma região de imagem retangular. As informações podem ser usadas por sistemas, e as informações são indicativas da capacidade de decodificação necessária bem como da taxa de bits do conjunto de sequências de subimagem. As informações indicam o nível do fluxo de bits incluindo apenas o conjunto de sequências de subimagem. Essas informações também indicam a taxa de bit do fluxo de bits contendo apenas o conjunto de sequências de subimagem. De modo opcional, um processo de extração de subfluxo de bits pode ser especificado para um conjunto de sequências de subimagem. O benefício disso é que o fluxo de bits incluindo apenas um conjunto de sequências de subimagem também pode estar em conformidade. Uma desvantagem é que, ao considerar diferentes possibilidades de tamanho de visor, pode haver muitos tais conjuntos além dos possíveis números já grandes de sequências de subimagem individuais.
[0129] Em uma modalidade exemplificativa, um ou mais dentre os exemplos revelados podem ser implementados da maneira a seguir. Uma subimagem pode ser definida como uma região retangular de um ou mais grupos de tiles dentro de uma imagem. Um processo de repartição binária permitido pode ser definido da maneira a seguir. As entradas para esse processo são: um modo de repartição binária btSplit, uma largura de bloco de codificação cbWidth, uma altura de bloco de codificação cbHeight, uma localização ( x0, y0 ) da amostra de luma esquerda-superior do bloco de codificação considerado em relação à amostra de luma esquerda-superior da imagem, uma profundidade de árvore de múltiplos tipos mttDepth, uma profundidade máxima de árvore de múltiplos tipos com deslocamento maxMttDepth, um tamanho máximo de árvore binária maxBtSize e um índice de partição partIdx. A saída desse processo é a variável allowBtSplit. btSplit = = btSplit = = SPLIT_BT_HOR SPLIT_BT_VER parallelTtSplit SPLIT_TT_VER SPLIT_TT_HOR cbSize cbWidth cbHeight Especificação de parallelTtSplit e cbSize com base em btSplit
[0130] As variáveis parallelTtSplit e cbSize são derivadas conforme especificado acima. A variável allowBtSplit é derivada da maneira a seguir. Se uma ou mais dentre as condições a seguir forem verdadeiras, allowBtSplit é definido como igual a FALSE: cbSize é menor do que ou igual a MinBtSizeY, cbWidth é maior do que maxBtSize, cbHeight é maior do que maxBtSize, e mttDepth é maior do que ou igual a maxMttDepth. De outro modo, se todas dentre as condições a seguir forem verdadeiras, allowBtSplit é definido como igual a FALSE: btSplit é igual a SPLIT_BT_VER, e y0 + cbHeight é maior do que SubPicBottomBorderInPic. De outro modo, se todas dentre as condições a seguir forem verdadeiras, allowBtSplit é definido como igual a FALSE, btSplit é igual a SPLIT_BT_HOR, x0 + cbWidth é maior do que SubPicRightBorderInPic, e y0 + cbHeight é menor do que ou igual a SubPicBottomBorderInPic. De outro modo, se todas dentre as condições a seguir forem verdadeiras, allowBtSplit é definido como igual a FALSE: mttDepth é maior do que zero, partIdx é igual a um, e MttSplitMode[ x0 ][ y0 ][ mttDepth − 1 ] é igual a parallelTtSplit. De outro modo, se todas dentre as condições a seguir forem verdadeiras, allowBtSplit é definido como igual a FALSE: btSplit é igual a SPLIT_BT_VER, cbWidth é menor do que ou igual a MaxTbSizeY, e cbHeight é maior do que MaxTbSizeY. De outro modo, se todas dentre as condições a seguir forem verdadeiras, allowBtSplit é definido como igual a FALSE: btSplit é igual a SPLIT_BT_HOR, cbWidth é maior do que MaxTbSizeY e cbHeight é menor do que ou igual a MaxTbSizeY. De outro modo, allowBtSplit é definido como igual a TRUE.
[0131] Um processo de repartição ternária permitido pode ser definido da maneira a seguir. Entradas para esse processo são: um modo de repartição ternária ttSplit, uma largura de bloco de codificação cbWidth, uma altura de bloco de codificação cbHeight, uma localização ( x0, y0 ) da amostra de luma esquerda- superior do bloco de codificação considerado em relação à amostra de luma esquerda-superior da imagem, uma profundidade de árvore de múltiplos tipos mttDepth, uma profundidade máxima de árvore de múltiplos tipos com deslocamento maxMttDepth, e um tamanho máximo de árvore binária maxTtSize. A saída desse processo é a variável allowTtSplit. ttSplit = = ttSplit = = SPLIT_TT_HOR SPLIT_TT_VER cbSize cbWidth cbHeight Especificação de cbSize com base em ttSplit.
[0132] A variável cbSize é derivada conforme especificado acima. A variável allowTtSplit é derivada do modo a seguir. Se uma ou mais dentre as condições a seguir forem verdadeiras, allowTtSplit é definido como igual a FALSE: cbSize é menor do que ou igual a 2 * MinTtSizeY, cbWidth é maior do que Min( MaxTbSizeY, maxTtSize ), cbHeight é maior do que Min( MaxTbSizeY, maxTtSize ), mttDepth é maior do que ou igual a maxMttDepth, x0 + cbWidth é maior do que SubPicRightBorderInPic, e y0 + cbHeight é maior do que SubPicBottomBorderInPic. De outro modo, allowTtSplit é definido como igual a TRUE.
[0133] A sintaxe e semântica de RBSP de conjunto de parâmetros de sequência são da maneira a seguir. seq_parameter_set_rbsp( ) { Descritor sps_seq_parameter_set_id ue(v) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) num_subpic_minus1 ue(v) subpic_id_len_minus1 ue(v) for ( i = 0; i <= num_subpic_minus1; i++ ) { subpic_id[ i ] u(v) if( num_subpic_minus1 > 0 ) { subpic_level_idc[ i ] u(8) subpic_x_offset[ i ] ue(v) subpic_y_offset[ i ] ue(v) subpic_width_in_luma_samples[ i ] ue(v) subpic_height_in_luma_samples[ i ] ue(v) subpic_motion_constrained_flag[ i ] u(1) } } ... }
[0134] A pic_width_in_luma_samples especifica a largura de cada imagem decodificada em unidades de amostras de luma. pic_width_in_luma_samples não deve ser igual a zero e deve ser um número inteiro múltiplo de MinCbSizeY. A pic_height_in_luma_samples especifica a altura de cada imagem decodificada em unidades de amostras de luma. pic_height_in_luma_samples não deve ser igual a zero e deve ser um número inteiro múltiplo de MinCbSizeY. A num_subpicture_minus1 mais 1 especifica que o número de subimagens particionadas em imagens codificadas pertence à sequência de vídeo codificada. A subpic_id_len_minus1 mais 1 especifica o número de bits usado para representar o elemento de sintaxe subpic_id[ i ] em SPS, spps_subpic_id em SPPS que se refere ao SPS e tile_group_subpic_id em cabeçalhos de grupo de tiles que se referem ao SPS. O valor de subpic_id_len_minus1 deve estar na faixa de
Ceil( Log2( num_subpic_minus1 + 2 ) a oito, inclusive. O subpic_id[ i ] especifica o ID de subimagem da i-ésima subimagem de imagens que se referem ao SPS. O comprimento de subpic_id[ i ] é subpic_id_len_minus1 + 1 bits. O valor de subpic_id[i] deve ser maior do que zero. O subpic_level_idc[ i ] indica um nível ao qual a CVS que resultou de extração das i-ésimas subimagens se conforma com as exigências de recurso especificadas. Os fluxos de bits não devem conter valores de subpic_level_idc[ i ] diferentes daqueles especificados. Outros valores de subpic_level_idc[ i ] são reservados. Quando não presente, infere-se que o valor de subpic_level_idc[ i ] seja igual ao valor de general_level_idc.
[0135] O subpic_x_offset[ i ] especifica o deslocamento horizontal do canto esquerdo-superior da i-ésima subimagem em relação ao canto esquerdo- superior da imagem. Quando não presente, infere-se que o valor de subpic_x_offset[ i ] seja igual a 0. O valor de deslocamento de x de subimagem é derivado da seguinte maneira: SubpictureXOffset[ i ] = subpic_x_offset[ i ]. O subpic_y_offset[ i ] especifica o deslocamento vertical do canto esquerdo-superior da i-ésima subimagem em relação ao canto esquerdo-superior da imagem. Quando não presente, infere-se que o valor de subpic_y_offset[ i ] seja igual a zero. O valor de deslocamento y de subimagem é derivado da seguinte maneira: SubpictureYOffset[ i ] = subpic_y_offset[ i ]. A subpic_width_in_luma_samples[ i ] especifica a largura da i-ésima subimagem decodificada para a qual esse SPS é o SPS ativo. Quando a soma de SubpictureXOffset[ i ] e subpic_width_in_luma_samples[ i ] for menor do que pic_width_in_luma_samples, o valor de subpic_width_in_luma_samples[ i ] deve ser um número inteiro múltiplo de CtbSizeY. Quando não presente, infere-se que o valor de subpic_width_in_luma_samples[ i ] seja igual ao valor de pic_width_in_luma_samples. A subpic_height_in_luma_samples[ i ] especifica a altura da i-ésima subimagem decodificada para a qual esse SPS é o SPS ativo. Quando a soma de SubpictureYOffset[ i ] e subpic_height_in_luma_samples[ i ] for menor do que pic_height_in_luma_samples, o valor de subpic_height_in_luma_samples[ i ] deve ser um número inteiro múltiplo de CtbSizeY. Quando não presente, infere-se que o valor de subpic_height_in_luma_samples[ i ] seja igual ao valor de pic_height_in_luma_samples.
[0136] É uma exigência de conformidade de fluxo de bits que a união de subimagens deva cobrir toda a área de uma imagem sem sobreposição e gap. A subpic_motion_constrained_flag[ i ] igual a um especifica que a i-ésima subimagem é uma subimagem com restrição de movimento temporal. A subpic_motion_constrained_flag[ i ] igual a zero especifica que a i-ésima subimagem pode ou não ser uma subimagem com restrição de movimento temporal. Quando não presente, infere-se que o valor de subpic_motion_constrained_flag seja igual a zero.
[0137] As variáveis SubpicWidthInCtbsY, SubpicHeightInCtbsY, SubpicSizeInCtbsY, SubpicWidthInMinCbsY, SubpicHeightInMinCbsY, SubpicSizeInMinCbsY, SubpicSizeInSamplesY, SubpicWidthInSamplesC e SubpicHeightInSamplesC são derivadas da seguinte maneira: SubpicWidthInLumaSamples[ i ] = subpic_width_in_luma_samples[ i ] SubpicHeightInLumaSamples[ i ] = subpic_height_in_luma_samples[ i ] SubPicRightBorderInPic[ i ] = SubpictureXOffset[ i ] + PicWidthInLumaSamples[ i ] SubPicBottomBorderInPic[ i ] = SubpictureYOffset[ i ] + PicHeightInLumaSamples[ i ] SubpicWidthInCtbsY[ i ] = Ceil( SubpicWidthInLumaSamples[ i ] ÷ CtbSizeY ) SubpicHeightInCtbsY[ i ] = Ceil( SubpicHeightInLumaSamples[ i ] ÷ CtbSizeY ) SubpicSizeInCtbsY[ i ] = SubpicWidthInCtbsY[ i ] * SubpicHeightInCtbsY[ i ] SubpicWidthInMinCbsY[ i ] = SubpicWidthInLumaSamples[ i ] / MinCbSizeY SubpicHeightInMinCbsY[ i ] = SubpicHeightInLumaSamples[ i ] / MinCbSizeY SubpicSizeInMinCbsY[ i ] = SubpicWidthInMinCbsY[ i ] * SubpicHeightInMinCbsY[ i ] SubpicSizeInSamplesY[ i ] = SubpicWidthInLumaSamples[ i ] * SubpicHeightInLumaSamples[ i ] SubpicWidthInSamplesC[ i ] = SubpicWidthInLumaSamples[ i ] / SubWidthC
SubpicHeightInSamplesC[ i ] = SubpicHeightInLumaSamples[ i ] / SubHeightC
[0138] A sintaxe e semântica de RBSP de conjunto de parâmetros de subimagem são da maneira a seguir. sub_pic_parameter_set_rbsp( ) { Descritor spps_subpic_id u(v) spps_subpic_parameter_set_id ue(v) spps_seq_parameter_set_id ue(v) single_tile_in_subpic_flag u(1) if( !single_tile_in_subpic_flag ) { num_tile_columns_minus1 ue(v) num_tile_rows_minus1 ue(v) uniform_tile_spacing_flag u(1) if( !uniform_tile_spacing_flag ) { for( i = 0; i < num_tile_columns_minus1; i++ ) tile_column_width_minus1[ i ] ue(v) for( i = 0; i < num_tile_rows_minus1; i++ ) tile_row_height_minus1[ i ] ue(v) } loop_filter_across_tiles_enabled_flag u(1) } if( loop_filter_across_tiles_enabled_flag ) loop_filter_across_subpic_enabled_flag u(1) rbsp_trailing_bits( ) }
[0139] O spps_subpic_id identifica a subimagem a qual o SPPS pertence. O comprimento de spps_subpic_id é subpic_id_len_minus1 + 1 bits. O spps_subpic_parameter_set_id identifica o SPPS para referência por outros elementos de sintaxe. O valor de spps_subpic_parameter_set_id deve estar na faixa de zero a sessenta e três, inclusive. O spps_seq_parameter_set_id especifica o valor de sps_seq_parameter_set_id para o SPS ativo. O valor de spps_seq_parameter_set_id deve estar na faixa de zero a quinze, inclusive. O single_tile_in_subpic_flag igual a um especifica que há apenas um tile em cada subimagem que se refere ao SPPS. A single_tile_in_subpic_flag igual a zero especifica que há mais de um tile em cada subimagem que se refere ao SPPS. A num_tile_columns_minus1 mais 1 especifica o número de colunas de tile que particiona a subimagem. O num_tile_columns_minus1 deve estar na faixa de zero a PicWidthInCtbsY[ spps_subpic_id ] − 1, inclusive. Quando não presente, infere- se que o valor de num_tile_columns_minus1 seja igual a zero. A num_tile_rows_minus1 mais 1 especifica o número de linhas de tile que particiona a subimagem. A num_tile_rows_minus1 deve estar na faixa de zero a PicHeightInCtbsY[ spps_subpic_id ] − 1, inclusive. Quando não presente, infere- se que o valor de num_tile_rows_minus1 seja igual a zero. A variável NumTilesInPic é definida como igual a ( num_tile_columns_minus1 + 1 ) * ( num_tile_rows_minus1 + 1 ).
[0140] Quando single_tile_in_subpic_flag é igual a zero, NumTilesInPic deve ser maior do que zero. O uniform_tile_spacing_flag igual a um especifica que delimitações de coluna de tile e, da mesma forma, delimitações de linha de tile são distribuídas de maneira uniforme através da subimagem. O uniform_tile_spacing_flag igual a zero especifica que delimitações de coluna de tile e, da mesma forma, delimitações de linha de tile não são distribuídas de maneira uniforme através da subimagem, mas sinalizadas explicitamente usando os elementos de sintaxe tile_column_width_minus1[ i ] e tile_row_height_minus1[ i ]. Quando não presente, infere-se que o valor de uniform_tile_spacing_flag seja igual a um. O tile_column_width_minus1[ i ] mais 1 especifica a largura da i-ésima coluna de tile em unidades de CTBs. O tile_row_height_minus1[ i ] mais 1 especifica a altura da i-ésima linha de tile em unidades de CTBs.
[0141] As variáveis a seguir são derivadas invocando-se o processo de conversão de varredura tile e raster de CTB: a lista ColWidth[ i ] para i na faixa de zero a num_tile_columns_minus1, inclusive, que especifica a largura da i-ésima coluna de tile em unidades de CTBs; a lista RowHeight[ j ] para j na faixa de zero a num_tile_rows_minus1, inclusive, que especifica a altura da j-ésima linha de tile em unidades de CTBs; a lista ColBd[ i ] para i na faixa de zero a num_tile_columns_minus1 + 1, inclusive, que especifica a localização da i-ésima delimitação de coluna de tile em unidades de CTBs; a lista RowBd[ j ] para j na faixa de zero a num_tile_rows_minus1 + 1, inclusive, que especifica a localização da j-ésima delimitação de linha de tile em unidades de CTBs; a lista CtbAddrRsToTs[ ctbAddrRs ] para ctbAddrRs na faixa de zero a PicSizeInCtbsY − 1, inclusive, que especifica a conversão de um endereço de CTB na varredura raster de CTB de uma imagem para um endereço de CTB na varredura tile; a lista CtbAddrTsToRs[ ctbAddrTs ] para ctbAddrTs na faixa de zero a PicSizeInCtbsY − 1, inclusive, que especifica a conversão de um endereço de CTB na varredura tile para um endereço de CTB na varredura raster de CTB de uma imagem; a lista TileId[ ctbAddrTs ] para ctbAddrTs na faixa de zero a PicSizeInCtbsY − 1, inclusive, que especifica a conversão de um endereço de CTB em varredura tile para um ID de tile; a lista NumCtusInTile[ tileIdx ] para tileIdx na faixa de zero a PicSizeInCtbsY − 1, inclusive, que especifica a conversão de um índice de tile para o número de CTUs no tile; a lista FirstCtbAddrTs[ tileIdx ] para tileIdx na faixa de zero a NumTilesInPic − 1, inclusive, que especifica a conversão de um ID de tile para o endereço de CTB em varredura tile do primeiro CTB no tile; a lista ColumnWidthInLumaSamples[ i ] para i na faixa de zero a num_tile_columns_minus1, inclusive, que especifica a largura da i-ésima coluna de tile em unidades de amostras de luma; e a lista RowHeightInLumaSamples[ j ] para j na faixa de zero a num_tile_rows_minus1, inclusive, que especifica a altura da j-ésima linha de tile em unidades de amostras de luma. Os valores de ColumnWidthInLumaSamples[ i ] para i na faixa de zero a num_tile_columns_minus1, inclusive, e RowHeightInLumaSamples[ j ] para j na faixa de zero a num_tile_rows_minus1, inclusive, devem ser todos maiores do que zero.
[0142] A loop_filter_across_tiles_enabled_flag igual a um especifica que operações de filtragem in-loop podem ser realizadas através de delimitações de tile em subimagens que se referem ao SPPS. A loop_filter_across_tiles_enabled_flag igual a zero especifica que operações de filtragem in-loop não são realizadas através de delimitações de tile em subimagens que se referem ao SPPS. As operações de filtragem in-loop incluem as operações de filtro de desblocagem, filtro de deslocamento adaptativo de amostra e filtro loop adaptativo. Quando não presente, infere-se que o valor de loop_filter_across_tiles_enabled_flag seja igual a um. A loop_filter_across_subpic_enabled_flag igual a um especifica que operações de filtragem in-loop podem ser realizadas através de delimitações de subimagem em subimagens que se referem ao SPPS. A loop_filter_across_subpic_enabled_flag igual a zero especifica que operações de filtragem in-loop não são realizadas através de delimitações de subimagem em subimagens que se referem ao SPPS. As operações de filtragem in-loop incluem as operações de filtro de desblocagem, filtro de deslocamento adaptativo de amostra e filtro loop adaptativo. Quando não presente, infere-se que o valor de loop_filter_across_subpic_enabled_flag seja igual ao valor de loop_filter_across_tiles_enabled_flag.
[0143] A sintaxe e semântica de cabeçalho de grupo de tiles gerais são da maneira a seguir. tile_group_header( ) { Descritor tile_group_subpic_id u(v) tile_group_subpic_parameter_set_id u(v) ... }
[0144] O valor do elemento de sintaxe de cabeçalho de grupo de tiles tile_group_pic_parameter_set_id e tile_group_pic_order_cnt_lsb deve ser o mesmo em todos os cabeçalhos de grupo de tiles de uma imagem codificada. O valor do elemento de sintaxe de cabeçalho de grupo de tiles tile_group_subpic_id deve ser o mesmo em todos os cabeçalhos de grupo de tiles de uma subimagem codificada. O tile_group_subpic_id identifica a subimagem a qual o grupo de tiles pertence. O comprimento de tile_group_subpic_id é subpic_id_len_minus1 + 1 bits. O tile_group_subpic_parameter_set_id especifica o valor de spps_subpic_parameter_set_id para o SPPS em uso. O valor de tile_group_spps_parameter_set_id deve estar na faixa de zero a sessenta e três, inclusive.
[0145] As seguintes variáveis são derivadas e substituem as respectivas variáveis derivadas do SPS ativo: PicWidthInLumaSamples = SubpicWidthInLumaSamples[ tile_group_subpic_id] PicHeightInLumaSamples = PicHeightInLumaSamples[ tile_group_subpic_id] SubPicRightBorderInPic = SubPicRightBorderInPic[ tile_group_subpic_id] SubPicBottomBorderInPic =
SubPicBottomBorderInPic[ tile_group_subpic_id] PicWidthInCtbsY = SubPicWidthInCtbsY[ tile_group_subpic_id] PicHeightInCtbsY = SubPicHeightInCtbsY[ tile_group_subpic_id] PicSizeInCtbsY = SubPicSizeInCtbsY[ tile_group_subpic_id] PicWidthInMinCbsY = SubPicWidthInMinCbsY[ tile_group_subpic_id] PicHeightInMinCbsY = SubPicHeightInMinCbsY[ tile_group_subpic_id] PicSizeInMinCbsY = SubPicSizeInMinCbsY[ tile_group_subpic_id] PicSizeInSamplesY = SubPicSizeInSamplesY[ tile_group_subpic_id] PicWidthInSamplesC = SubPicWidthInSamplesC[ tile_group_subpic_id] PicHeightInSamplesC = SubPicHeightInSamplesC[ tile_group_subpic_id]
[0146] A sintaxe de unidade de árvore de codificação é da maneira a seguir. coding_tree_unit( ) { Descritor xCtb = ( CtbAddrInRs % PicWidthInCtbsY ) << CtbLog2SizeY + SubpictureXOffset yCtb = ( CtbAddrInRs / PicWidthInCtbsY ) << CtbLog2SizeY + SubpictureYOffset ... } dual_tree_implicit_qt_split( x0, y0, log2CbSize, cqtDepth ) { Descritor if( log2CbSize > 6 ) { x1 = x0 + ( 1 << ( log2CbSize − 1 ) ) y1 = y0 + ( 1 << ( log2CbSize − 1 ) ) dual_tree_implicit_qt_split( x0, y0, log2CbSize − 1, cqtDepth + 1 ) if( x1 < SubPicRightBorderInPic ) dual_tree_implicit_qt_split( x1, y0, log2CbSize − 1, cqtDepth + 1 ) if( y1 < SubPicBottomBorderInPic )
dual_tree_implicit_qt_split( x0, y1, log2CbSize − 1, cqtDepth + 1 ) if( x1 < SubPicRightBorderInPic && y1 < SubPicBottomBorderInPic ) dual_tree_implicit_qt_split( x1, y1, log2CbSize − 1, cqtDepth + 1 ) } else { coding_quadtree( x0, y0, log2CbSize, cqtDepth, DUAL_TREE_LUMA ) coding_quadtree( x0, y0, log2CbSize, cqtDepth, DUAL_TREE_CHROMA ) } }
[0147] A sintaxe e semântica de quadtree de codificação são da maneira a seguir. coding_quadtree( x0, y0, log2CbSize, cqtDepth, treeType ) { Descritor minQtSize = ( treeType = = DUAL_TREE_CHROMA ) ? MinQtSizeC : MinQtSizeY maxBtSize = ( treeType = = DUAL_TREE_CHROMA ) ? MaxBtSizeC : MaxBtSizeY if( ( ( ( x0 + ( 1 << log2CbSize ) <= PicWidthInLumaSamples ) ? 1 : 0 ) + ( ( y0 + ( 1 << log2CbSize ) <= PicHeightInLumaSamples ) ? 1 : 0 ) + ( ( ( 1 << log2CbSize ) <= maxBtSize ) ? 1 : 0 ) ) >= 2 && ( 1 << log2CbSize ) > minQtSize ) qt_split_cu_flag[ x0 ][ y0 ] ae(v) if( cu_qp_delta_enabled_flag && cqtDepth <= diff_cu_qp_delta_depth ) { IsCuQpDeltaCoded = 0 CuQpDeltaVal = 0 CuQgTopLeftX = x0 CuQgTopLeftY = y0 } if( qt_split_cu_flag[ x0 ][ y0 ] ) {
x1 = x0 + ( 1 << ( log2CbSize − 1 ) ) y1 = y0 + ( 1 << ( log2CbSize − 1 ) ) coding_quadtree( x0, y0, log2CbSize − 1, cqtDepth + 1, treeTy pe ) if( x1 < SubPicRightBorderInPic ) coding_quadtree( x1, y0, log2CbSize − 1, cqtDepth + 1, treeTy pe ) if( y1 < SubPicBottomBorderInPic ) coding_quadtree( x0, y1, log2CbSize − 1, cqtDepth + 1, treeTy pe ) if( x1 < SubPicRightBorderInPic && y1 < SubPicBottomBorderInPic ) coding_quadtree( x1, y1, log2CbSize − 1, cqtDepth + 1, treeTy pe ) } else multi_type_tree( x0, y0, 1 << log2CbSize, 1 << log2CbSize, cqtDepth, 0, 0, 0, treeType ) }
[0148] O qt_split_cu_flag[ x0 ][ y0 ] especifica se uma unidade de codificação é repartida em unidades de codificação com metade de tamanho horizontal e vertical. Os índices de arranjo x0, y0 especificam a localização ( x0, y0 ) da amostra de luma esquerda-superior do bloco de codificação considerado em relação à amostra de luma esquerda-superior da imagem. Quando qt_split_cu_flag[ x0 ][ y0 ] não estiver presente, o seguinte se aplica: Se uma ou mais dentre as condições a seguir forem verdadeiras, infere-se que o valor de qt_split_cu_flag[ x0 ][ y0 ] seja igual a um. x0 + ( 1 << log2CbSize ) é maior do que SubPicRightBorderInPic e ( 1 << log2CbSize ) é maior do que MaxBtSizeC se treeType for igual a DUAL_TREE_CHROMA ou maior do que MaxBtSizeY de outro modo. y0 + ( 1 << log2CbSize ) é maior do que SubPicBottomBorderInPic e ( 1 << log2CbSize ) é maior do que MaxBtSizeC se treeType for igual a DUAL_TREE_CHROMA ou maior do que MaxBtSizeY de outro modo.
[0149] De outro modo, se todas dentre as condições a seguir forem verdadeiras, infere-se que o valor de qt_split_cu_flag[ x0 ][ y0 ] seja igual a 1:
x0 + ( 1 << log2CbSize ) é maior do que SubPicRightBorderInPic, y0 + ( 1 << log2CbSize ) é maior do que SubPicBottomBorderInPic, e ( 1 << log2CbSize ) é maior do que MinQtSizeC se treeType for igual a DUAL_TREE_CHROMA ou maior do que MinQtSizeY de outro modo. De outro modo, infere-se que o valor de qt_split_cu_flag[ x0 ][ y0 ] seja igual a zero.
[0150] A sintaxe e semântica de árvore de múltiplos tipos são da maneira a seguir. multi_type_tree( x0, y0, cbWidth, cbHeight, cqtDepth, mttDepth, depthO Descritor ffset, partIdx, treeType ) { if( ( allowSplitBtVer | | allowSplitBtHor | | allowSplitTtVer | | allowSplitTtHor ) && ( x0 + cbWidth <= SubPicRightBorderInPic ) && (y0 + cbHeight <= SubPicBottomBorderInPic ) ) mtt_split_cu_flag ae(v) if( cu_qp_delta_enabled_flag && ( cqtDepth + mttDepth ) <= diff_cu_qp_delta_depth ) { IsCuQpDeltaCoded = 0 CuQpDeltaVal = 0 CuQgTopLeftX = x0 CuQgTopLeftY = y0 } if( mtt_split_cu_flag ) { if( ( allowSplitBtHor || allowSplitTtHor ) && ( allowSplitBtVer | | allowSplitTtVer ) ) mtt_split_cu_vertical_flag ae(v) if( ( allowSplitBtVer && allowSplitTtVer && mtt_split_cu_vertical_flag ) || ( allowSplitBtHor && allowSplitTtHor && !mtt_split_cu_vertical_flag ) ) mtt_split_cu_binary_flag ae(v) if( MttSplitMode[ x0 ][ y0 ][ mttDepth ] = = SPLIT_BT_VER ){
depthOffset += ( x0 + cbWidth > SubPicRightBorderInPic ) ? 1 : 0 x1 = x0 + ( cbWidth / 2 ) multi_type_tree( x0, y0, cbWidth / 2, cbHeight, cqtDepth, mttDepth + 1, depthOffset, 0, treeType ) if( x1 < SubPicRightBorderInPic )
multi_type_tree( x1, y0, cbWidth / 2, cbHeightY, cqtDepth, mttDepth + 1, depthOffset, 1, treeType ) } else if( MttSplitMode[ x0 ][ y0 ][ mttDepth ] == SPLIT_BT_HOR ) { depthOffset += ( y0 + cbHeight > SubPicBottomBorderInPic ) ? 1 : 0 y1 = y0 + ( cbHeight / 2 ) multi_type_tree( x0, y0, cbWidth, cbHeight / 2,
cqtDepth, mttDepth + 1, depthOffset, 0, treeType ) if( y1 < SubPicBottomBorderInPic )
multi_type_tree( x0, y1, cbWidth, cbHeight / 2, cqtDepth, mttDepth + 1, depthOffset, 1, treeType ) } else if( MttSplitMode[ x0 ][ y0 ][ mttDepth ] == SPLIT_TT_VER ) { x1 = x0 + ( cbWidth / 4 ) x2 = x0 + ( 3 * cbWidth / 4 ) multi_type_tree( x0, y0, cbWidth / 4, cbHeight,
cqtDepth, mttDepth + 1, depthOffset, 0, treeType ) multi_type_tree( x1, y0, cbWidth / 2, cbHeight,
cqtDepth, mttDepth + 1, depthOffset, 1, treeType )
multi_type_tree( x2, y0, cbWidth / 4, cbHeight, cqtDepth, mttDepth + 1, depthOffset, 2, treeType ) } else { /* SPLIT_TT_HOR */ y1 = y0 + ( cbHeight / 4 ) y2 = y0 + ( 3 * cbHeight / 4 ) multi_type_tree( x0, y0, cbWidth, cbHeight / 4, cqtDepth, mttDepth + 1, depthOffset, 0, treeType ) multi_type_tree( x0, y1, cbWidth, cbHeight / 2, cqtDepth, mttDepth + 1, depthOffset, 1, treeType ) multi_type_tree( x0, y2, cbWidth, cbHeight / 4, cqtDepth, mttDepth + 1, depthOffset, 2 , treeType) } } else coding_unit( x0, y0, cbWidth, cbHeight, treeType ) }
[0151] O mtt_split_cu_flag igual a zero especifica que uma unidade de codificação não é repartida. O mtt_split_cu_flag igual a um especifica que uma unidade de codificação é repartida em duas unidades de codificação usando uma repartição binária ou em três unidades de codificação usando uma repartição ternária, conforme indicado pelo elemento de sintaxe mtt_split_cu_binary_flag. A repartição binária ou ternária pode ser vertical ou horizontal, conforme indicado pelo elemento de sintaxe mtt_split_cu_vertical_flag. Quando mtt_split_cu_flag não está presente, infere-se que o valor de mtt_split_cu_flag seja da maneira a seguir. Se uma ou mais dentre as condições a seguir forem verdadeiras, infere-se que o valor de mtt_split_cu_flag seja igual a 1: x0 + cbWidth é maior do que SubPicRightBorderInPic, e y0 + cbHeight é maior do que SubPicBottomBorderInPic. De outro modo, infere-se que o valor de mtt_split_cu_flag seja igual a zero.
[0152] O processo de derivação para predição de vetor de movimento de luma temporal é da maneira a seguir. As saídas desse processo são: a predição de vetor de movimento mvLXCol em acurácia de amostra fracionada de 1/16, e a flag de disponibilidade availableFlagLXCol. A variável currCb especifica o bloco de codificação de luma atual em localização de luma ( xCb, yCb ). As variáveis mvLXCol e availableFlagLXCol são derivadas da maneira a seguir. Se tile_group_temporal_mvp_enabled_flag for igual a zero, ou se a imagem de referência for a imagem atual, ambos os componentes de mvLXCol são definidos como iguais a zero e availableFlagLXCol é definido como igual a zero. De outro modo, (tile_group_temporal_mvp_enabled_flag é igual a um e a imagem de referência não é a imagem atual), as etapas ordenadas a seguir se aplicam. O vetor de movimento colocalizado direito inferior é derivado da seguinte maneira: xColBr = xCb + cbWidth (8-355) yColBr = yCb + cbHeight (8-356)
[0153] Se yCb >> CtbLog2SizeY for igual a yColBr >> CtbLog2SizeY, yColBr for menor do que SubPicBottomBorderInPic e xColBr for menor do que SubPicRightBorderInPic, o conteúdo a seguir se aplica. A variável colCb especifica o bloco de codificação de luma que cobre a localização modificada fornecida por ( ( xColBr >> 3 ) << 3, ( yColBr >> 3 ) << 3 ) dentro da imagem colocalizada especificada por ColPic. A localização de luma ( xColCb, yColCb ) é definida como igual à amostra esquerda-superior do bloco de codificação de luma colocalizado especificado por colCb em relação à amostra de luma esquerda-superior da imagem colocalizada especificada por ColPic. O processo de derivação para vetores de movimento colocalizados é invocado com currCb, colCb, ( xColCb, yColCb ), refIdxLX e sbFlag definidos como iguais a zero como entradas, e a saída é atribuída a mvLXCol e availableFlagLXCol. De outro modo, ambos os componentes de mvLXCol são definidos como iguais a zero e availableFlagLXCol é definido como igual a zero.
[0154] O processo de derivação para candidatos de fusão de triângulo temporais é da maneira a seguir. As variáveis mvLXColC0, mvLXColC1, availableFlagLXColC0 e availableFlagLXColC1 são derivadas da maneira a seguir. Se tile_group_temporal_mvp_enabled_flag for igual a zero, ambos os componentes de mvLXColC0 e mvLXColC1 são definidos como iguais a zero e availableFlagLXColC0 e availableFlagLXColC1 são definidos como iguais a zero. De outro modo, (tile_group_temporal_mvp_enabled_flag é igual a 1), as etapas ordenadas a seguir se aplicam. O vetor de movimento colocalizado direito inferior mvLXColC0 é derivado da seguinte maneira: xColBr = xCb + cbWidth (8-392) yColBr = yCb + cbHeight (8-393)
[0155] Se yCb >> CtbLog2SizeY for igual a yColBr >> CtbLog2SizeY, yColBr for menor do que SubPicBottomBorderInPic e xColBr for menor do que SubPicRightBorderInPic, o conteúdo a seguir se aplica. A variável colCb especifica o bloco de codificação de luma que cobre a localização modificada fornecida por ( ( xColBr >> 3 ) << 3, ( yColBr >> 3 ) << 3 ) dentro da imagem colocalizada especificada por ColPic. A localização de luma ( xColCb, yColCb ) é definida como igual à amostra esquerda-superior do bloco de codificação de luma colocalizado especificado por colCb em relação à amostra de luma esquerda-superior da imagem colocalizada especificada por ColPic. O processo de derivação para vetores de movimento colocalizados é invocado com currCb, colCb, ( xColCb, yColCb ), refIdxLXC0 e sbFlag definidos como iguais a zero como entradas, e a saída é atribuída a mvLXColC0 e availableFlagLXColC0. De outro modo, ambos os componentes de mvLXColC0 são definidos como iguais a zero e availableFlagLXColC0 é definido como igual a zero.
[0156] O processo de derivação para candidatos de fusão de vetor de movimento de ponto de controle afim construídos é da maneira a seguir. O quarto vetor de movimento de ponto de controle (colocalizado direito-inferior) cpMvLXCorner[ 3 ], índice de referência refIdxLXCorner[ 3 ], flag de utilização de lista de predição predFlagLXCorner[ 3 ] e a flag de disponibilidade availableFlagCorner[ 3 ] com X sendo 0 e 1 são derivados da maneira a seguir. Os índices de referência para o candidato de fusão temporal, refIdxLXCorner[ 3 ], com X sendo zero ou um, são definidos como iguais a zero. As variáveis mvLXCol e availableFlagLXCol, com X sendo zero ou um, são derivadas da maneira a seguir. Se tile_group_temporal_mvp_enabled_flag for igual a zero, ambos os componentes de mvLXCol são definidos como iguais a zero e availableFlagLXCol é definido como igual a zero. De outro modo
(tile_group_temporal_mvp_enabled_flag é igual a um), o seguinte se aplica: xColBr = xCb + cbWidth (8-566) yColBr = yCb + cbHeight (8-567)
[0157] Se yCb >> CtbLog2SizeY for igual a yColBr >> CtbLog2SizeY, yColBr for menor do que SubPicBottomBorderInPic e xColBr for menor do que SubPicRightBorderInPic, o conteúdo a seguir se aplica. A variável colCb especifica o bloco de codificação de luma que cobre a localização modificada fornecida por ( ( xColBr >> 3 ) << 3, ( yColBr >> 3 ) << 3 ) dentro da imagem colocalizada especificada por ColPic. A localização de luma ( xColCb, yColCb ) é definida como igual à amostra esquerda-superior do bloco de codificação de luma colocalizado especificado por colCb em relação à amostra de luma esquerda-superior da imagem colocalizada especificada por ColPic. O processo de derivação para vetores de movimento colocalizados é invocado com currCb, colCb, ( xColCb, yColCb ), refIdxLX e sbFlag definidos como iguais a zero como entradas, e a saída é atribuída a mvLXCol e availableFlagLXCol. De outro modo, ambos os componentes de mvLXCol são definidos como iguais a 0 e availableFlagLXCol é definido como igual a zero. Substituir todas as ocorrências de pic_width_in_luma_samples por PicWidthInLumaSamples. Substituir todas as ocorrências de pic_height_in_luma_samples por PicHeightInLumaSamples.
[0158] Em uma segunda modalidade exemplificativa, a sintaxe e semântica de RBSP de conjunto de parâmetros de sequência são da maneira a seguir. seq_parameter_set_rbsp( ) { Descritor sps_seq_parameter_set_id ue(v) pic_width_in_luma_samples ue(v) pic_height_in_luma_samples ue(v) num_subpic_minus1 ue(v) subpic_id_len_minus1 ue(v) for ( i = 0; i <= num_subpic_minus1; i++ ) { subpic_id[ i ] u(v) if( num_subpic_minus1 > 0 ) {
subpic_level_idc[ i ] u(8) subpic_x_offset[ i ] ue(v) subpic_y_offset[ i ] ue(v) subpic_width_in_luma_samples[ i ] ue(v) subpic_height_in_luma_samples[ i ] ue(v) } } ... }
[0159] A subpic_id_len_minus1 mais um especifica o número de bits usado para representar o elemento de sintaxe subpic_id[ i ] em SPS, spps_subpic_id em SPPS que se refere ao SPS e tile_group_subpic_id em cabeçalhos de grupo de tiles que se referem ao SPS. O valor de subpic_id_len_minus1 deve estar na faixa de Ceil( Log2( num_subpic_minus1 + 3 ) a oito, inclusive. É uma exigência de conformidade de fluxo de bits que não haja sobreposição entre subimagem[i] para i de 0 a num_subpic_minus1, inclusive. Cada subimagem pode ser uma subimagem com restrição de movimento temporal.
[0160] As semânticas de cabeçalho de grupo de tiles gerais são da maneira a seguir. O tile_group_subpic_id identifica a subimagem a qual o grupo de tiles pertence. O comprimento de tile_group_subpic_id é subpic_id_len_minus1 + 1 bits. O tile_group_subpic_id igual a um indica que o grupo de tiles não pertence a qualquer subimagem.
[0161] Em uma terceira modalidade exemplificativa, a sintaxe e semântica de cabeçalho de unidade NAL são da maneira a seguir. nal_unit_header( ) { Descritor forbidden_zero_bit f(1) nal_unit_type u(5) nuh_temporal_id_plus1 u(3) nuh_subpicture_id_len u(4) nuh_reserved_zero_4bits u(3) }
[0162] O nuh_subpicture_id_len especifica o número de bits usado para representar o elemento de sintaxe que especifica ID de subimagem. Quando o valor de nuh_subpicture_id_len for maior do que zero, os primeiros nuh_subpicture_id_len-ésimos bits após nuh_reserved_zero_4bits especificam o ID da subimagem a qual a carga útil da unidade NAL pertence. Quando nuh_subpicture_id_len for maior do que zero, o valor de nuh_subpicture_id_len deve ser igual ao valor de subpic_id_len_minus1 no SPS ativo. O valor de nuh_subpicture_id_len para unidades não-VCL NAL é restrito da maneira a seguir. Se nal_unit_type for igual a SPS_NUT ou PPS_NUT, nuh_subpicture_id_len deve ser igual a zero. O nuh_reserved_zero_3bits deve ser igual a '000'. Decodificadores devem ignorar (por exemplo, remover do fluxo de bits e descartar) unidades de NAL com valores de nuh_reserved_zero_3bits diferentes de '000'.
[0163] Em uma quarta modalidade exemplificativa, sintaxe que aninha subimagem é da maneira a seguir. sub-picture_nesting( payloadSize ) { Descritor all_sub_pictures_flag u(1) if( !all_sub_pictures_flag ) { nesting_num_sub_pictures_minus1 ue(v) for( i = 0; i <= nesting_num_sub_pictures_minus1; i++ ) nesting_sub_picture_id[ i ] u(v) } while( !byte_aligned( ) ) sub_picture_nesting_zero_bit /* equal to 0 */ u(1) do sei_message( ) while( more_rbsp_data( ) ) }
[0164] O all_sub_pictures_flag igual a um especifica que as mensagens de SEI aninhadas se aplicam a todas as subimagens. all_sub_pictures_flag igual a um especifica que as subimagens às quais as mensagens de SEI aninhadas se aplicam são sinalizadas de maneira explícita pelos elementos de sintaxe subsequentes. O nesting_num_sub_pictures_minus1 mais 1 especifica o número de subimagens às quais as mensagens de SEI aninhadas se aplicam. O nesting_sub_picture_id[ i ] indica o ID de subimagem da i-ésima subimagem à qual as mensagens de SEI aninhadas se aplicam. O elemento de sintaxe nesting_sub_picture_id[ i ] é representado por Ceil( Log2( nesting_num_sub_pictures_minus1 + 1 ) ) bits. O sub_picture_nesting_zero_bit deve ser igual a zero.
[0165] A Figura 9 é um diagrama esquemático de um dispositivo de codificação de vídeo exemplificativo 900. O dispositivo de codificação de vídeo 900 é adequado para implementar os exemplos/modalidades revelados, conforme descrito na presente invenção. O dispositivo de codificação de vídeo 900 compreende portas a jusante 920, portas a montante 950 e/ou unidades transceptoras (Tx/Rx) 910, incluindo transmissores e/ou receptores para comunicar dados a montante e/ou a jusante através de uma rede. O dispositivo de codificação de vídeo 900 também inclui um processador 930 que inclui uma unidade lógica e/ou unidade central de processamento (CPU) para processar os dados e uma memória 932 para armazenar os dados. O dispositivo de codificação de vídeo 900 também pode compreender componentes elétricos, ópticos para elétricos (OE), componentes elétricos para ópticos (EO) e/ou componentes de comunicação sem fio acoplados às portas a montante 950 e/ou portas a jusante 920 para comunicação de dados através de redes de comunicação elétricas, ópticas ou sem fio. O dispositivo de codificação de vídeo 900 também pode incluir dispositivos de entrada e/ou saída (I/O) 960 para comunicar dados a partir de um usuário e para o mesmo. Os dispositivos de I/O 960 podem incluir dispositivos de saída, tais como um display para exibir dados de vídeo, alto-falantes para emitir dados de áudio, etc. Os dispositivos de I/O 960 também podem incluir dispositivos de entrada, tais como um teclado, mouse, trackball, etc., e/ou interfaces correspondentes para interagir com tais dispositivos de saída.
[0166] O processador 930 é implementado por hardware e software. O processador 930 pode ser implementado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de múltiplos núcleos), arranjos de portas programáveis em campo (FPGAs), circuitos integrados de aplicação específica (ASICs) e processadores de sinal digital (DSPs). O processador 930 está em comunicação com as portas a jusante 920, Tx/Rx 910, portas a montante 950 e a memória 932. O processador 930 compreende um módulo de codificação 914. O módulo de codificação 914 implementa as modalidades reveladas descritas acima, tais como os métodos 100, 1000, 1100, e/ou mecanismo 700, que podem empregar um fluxo de bits 500, uma imagem 600 e/ou uma imagem 800. O módulo de codificação 914 também pode implementar qualquer outro método/mecanismo descrito na presente invenção. Além disso, o módulo de codificação 914 pode implementar um sistema codec 200, um codificador 300 e/ou um decodificador
400. Por exemplo, o módulo de codificação 914 pode ser empregado para sinalizar e/ou obter localizações e tamanhos de subimagem em um SPS. Em outro exemplo, o módulo de codificação 914 pode restringir larguras de subimagem e alturas de subimagem para que sejam múltiplos de tamanho de CTU a menos que tais subimagens sejam posicionadas na borda direita da imagem ou na borda inferior da imagem, respectivamente. Em outro exemplo, o módulo de codificação 914 pode restringir subimagens para cobrir uma imagem sem gap ou sobreposição. Em outro exemplo, o módulo de codificação 914 pode ser empregado para sinalizar e/ou obter dados que indicam que algumas subimagens são subimagens com restrição de movimento temporal e outras subimagens não são. Em outro exemplo, o módulo de codificação 914 pode sinalizar um conjunto completo de IDs de subimagem no SPS e incluir um ID de subimagem em cada cabeçalho de fatia para indicar a subimagem que contém fatias correspondentes. Em outro exemplo, o módulo de codificação 914 pode sinalizar níveis para cada subimagem. Como tal, o módulo de codificação 914 faz com que o dispositivo de codificação de vídeo 900 forneça funcionalidade adicional, evite certo processamento para reduzir sobrecarga de processamento e/ou aumente a eficiência de codificação ao particionar e codificar dados de vídeo. Assim, o módulo de codificação 914 aperfeiçoa a funcionalidade do dispositivo de codificação de vídeo 900 bem como aborda problemas que são específicos às técnicas de codificação de vídeo. Além disso, o módulo de codificação 914 realiza uma transformação do dispositivo de codificação de vídeo 900 para um estado diferente. De modo alternativo, o módulo de codificação 914 pode ser implementado como instruções armazenadas na memória 932 e executadas pelo processador 930 (por exemplo, como um produto de programa de computador armazenado em uma mídia não transitória).
[0167] A memória 932 compreende um ou mais tipos de memória, tais como discos, unidades de fita, unidades de estado sólido, memória somente leitura (ROM), memória de acesso aleatório (RAM), memória flash, memória ternária de conteúdo endereçável (TCAM), memória de acesso aleatório estática
(SRAM), etc. A memória 932 pode ser usada como um dispositivo de armazenamento de dados de sobrefluxo, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lidos durante a execução de programa.
[0168] A Figura 10 é um fluxograma de um método exemplificativo 1000 de codificação de um fluxo de bits, tal como fluxo de bits 500 e/ou subfluxo de bits 501, de subimagens com restrição de movimento temporal, tais como subimagens 522, 523, 622, 722 e/ou 822. O método 1000 pode ser empregado por um codificador, tal como um sistema codec 200, um codificador 300 e/ou um dispositivo de codificação de vídeo 900 ao realizar o método 100.
[0169] O método 1000 pode começar quando um codificador recebe uma sequência de vídeo incluindo uma pluralidade de imagens e determina codificar aquela sequência de vídeo em um fluxo de bits, por exemplo, com base em entrada de usuário. A sequência de vídeo é particionada em imagens/figuras/quadros para particionamento adicional antes de codificação. Na etapa 1001, uma imagem é particionada em uma pluralidade de subimagens. Na etapa 1003, uma subimagem atual é codificada em um fluxo de bits como uma subimagem com restrição de movimento temporal.
[0170] Na etapa 1005, um conjunto de parâmetros é codificado no fluxo de bits. O conjunto de parâmetros compreende uma flag que indica que a subimagem atual é a subimagem com restrição de movimento temporal que pode ser extraída do fluxo de bits independentemente da imagem. Em alguns exemplos, o conjunto de parâmetros que inclui a flag é um SPS. Em alguns exemplos, o conjunto de parâmetros compreende pelo menos uma flag para cada uma dentre a uma ou mais subimagens que são subimagens com restrição de movimento temporal. Em alguns exemplos, flags são omitidas para cada uma dentre a uma ou mais subimagens que não são subimagens com restrição de movimento temporal a fim de aumentar a eficiência de codificação. Em tal caso, pode-se inferir que flags omitidas sejam zero no decodificador, que indica que subimagens associadas não são subimagens com restrição de movimento temporal. Em alguns exemplos, a flag é uma subpic_motion_constrained_flag[ i ] em que i é um índice da subimagem atual.
[0171] Na etapa 1007, IDs de subimagem para cada uma dentre a uma ou mais subimagens podem ser codificados no conjunto de parâmetros. De modo adicional, um tamanho de subimagem para cada uma dentre a uma ou mais subimagens pode ser codificado no conjunto de parâmetros. Além disso, uma localização de subimagem para cada uma dentre a uma ou mais subimagens pode ser codificada no conjunto de parâmetros. O fluxo de bits é armazenado para comunicação em direção a um decodificador na etapa 1009. O fluxo de bits pode, então, ser transmitido em direção ao decodificador, conforme desejado. Em alguns exemplos, um subfluxo de bits pode ser extraído do fluxo de bits codificado. Em tal caso, o fluxo de bits transmitido é um subfluxo de bits. Em outros exemplos, o fluxo de bits codificado pode ser transmitido para extração de subfluxo de bits no decodificador. Em ainda outros exemplos, o fluxo de bits codificado pode ser decodificado e exibido sem extração de subfluxo de bits. Em qualquer um dentre esses exemplos, uma flag pode ser codificada para permitir que imagens possam ser codificadas para incluir uma mistura de subimagens com restrição de movimento temporal e subimagens com restrição de movimento não temporal. Isso permite uma mistura de subimagens com restrição de movimento temporal que fornece funcionalidade de extração independente e subimagens sem restrição de movimento para eficiência de codificação aumentada quando extração independente não é desejada. Portanto, a flag permite funcionalidade aumentada e/ou eficiência de codificação aumentada, que reduz o uso de recursos de rede, recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0172] A Figura 11 é um fluxograma de um método exemplificativo 1100 de decodificação de um fluxo de bits, tal como fluxo de bits 500 e/ou subfluxo de bits 501, de subimagens com restrição de movimento temporal, tais como subimagens 522, 523, 622, 722 e/ou 822. O método 1100 pode ser empregado por um decodificador, tal como um sistema codec 200, um decodificador 400 e/ou um dispositivo de codificação de vídeo 900 ao realizar o método 100. Por exemplo, o método 1100 pode ser aplicado para decodificar um fluxo de bits criado como resultado do método 1000.
[0173] O método 1100 pode iniciar quando um decodificador começa a receber um fluxo de bits contendo subimagens. O fluxo de bits pode incluir uma sequência de vídeo completa ou o fluxo de bits pode ser um subfluxo de bits contendo um conjunto reduzido de subimagens para extração separada. Na etapa 1101, um fluxo de bits é recebido. O fluxo de bits compreende um conjunto de parâmetros e uma ou mais subimagens particionadas a partir de uma imagem. O conjunto de parâmetros compreende uma flag que indica que a subimagem atual é a subimagem com restrição de movimento temporal que pode ser extraída do fluxo de bits independentemente da imagem. Em alguns exemplos, o conjunto de parâmetros que inclui a flag é um SPS. Em alguns exemplos, o conjunto de parâmetros compreende pelo menos uma flag para cada uma dentre a uma ou mais subimagens que são subimagens com restrição de movimento temporal. Em alguns exemplos, flags são omitidas para cada uma dentre a uma ou mais subimagens que não são subimagens com restrição de movimento temporal a fim de aumentar a eficiência de codificação. Em tal caso, pode-se inferir que um valor de cada flag omitida seja zero, que indica que subimagens associadas não são subimagens com restrição de movimento temporal. Em alguns exemplos, a flag é uma subpic_motion_constrained_flag[ i ] em que i é um índice da subimagem atual.
[0174] Na etapa 1103, o conjunto de parâmetros é analisado para obter uma flag que indica que uma subimagem atual é uma subimagem com restrição de movimento temporal. A subimagem atual pode, então, ser extraída do fluxo de bits independentemente da imagem e com base na flag. O parâmetro pode compreender adicionalmente IDs de subimagem para cada uma dentre a uma ou mais subimagens, um tamanho de subimagem para cada uma dentre a uma ou mais subimagens e/ou uma localização de subimagem para cada uma dentre a uma ou mais subimagens. O conjunto de parâmetros também pode ser analisado para obter tais informações.
[0175] Na etapa 1105, a subimagem atual pode ser decodificada para criar uma sequência de vídeo, por exemplo com base na flag, nos IDs de subimagem, no tamanho de subimagem e/ou na localização de subimagem.
[0176] Na etapa 1107, a sequência de vídeo pode, então, ser encaminhada para exibição. A flag pode ser usada para indicar que uma imagem codificada inclui uma mistura de subimagens com restrição de movimento temporal e subimagens com restrição de movimento não temporal. Isso permite uma mistura de subimagens com restrição de movimento temporal que fornece funcionalidade de extração independente e subimagens sem restrição de movimento para eficiência de codificação aumentada quando extração independente não é desejada. Portanto, a flag permite funcionalidade aumentada e/ou eficiência de codificação aumentada, que reduz o uso de recursos de rede, recursos de memória e/ou recursos de processamento no codificador e no decodificador.
[0177] A Figura 12 é um diagrama esquemático de um sistema exemplificativo 1200 para sinalização de um fluxo de bits, tal como fluxo de bits 500 e/ou subfluxo de bits 501, de subimagens com restrição de movimento temporal, tais como subimagens 522, 523, 622, 722 e/ou 822. O sistema 1200 pode ser implementado por um codificador e um decodificador, tal como um sistema codec 200, um codificador 300, um decodificador 400 e/ou um dispositivo de codificação de vídeo 900. Além disso, o sistema 1200 pode ser empregado ao implementar o método 100, 1000 e/ou 1100.
[0178] O sistema 1200 inclui um codificador de vídeo 1202. O codificador de vídeo 1202 compreende um módulo de particionamento 1201 para particionar uma imagem em uma pluralidade de subimagens. O codificador de vídeo 1202 compreende adicionalmente um módulo de codificação 1203 para codificar uma subimagem atual em um fluxo de bits como uma subimagem com restrição de movimento temporal, e para codificar, no fluxo de bits, um conjunto de parâmetros que compreende uma flag que indica que a subimagem atual é a subimagem com restrição de movimento temporal que pode ser extraída do fluxo de bits independentemente da imagem. O codificador de vídeo 1202 compreende adicionalmente um módulo de armazenamento 1205 para armazenar o fluxo de bits para comunicação em direção a um decodificador. O codificador de vídeo 1202 compreende adicionalmente um módulo de transmissão 1207 para transmitir o fluxo de bits que inclui a subimagem atual para o decodificador. O codificador de vídeo 1202 pode ser adicionalmente configurado para realizar qualquer uma das etapas do método 1000.
[0179] O sistema 1200 também inclui um decodificador de vídeo 1210. O decodificador de vídeo 1210 compreende um módulo de recebimento 1211 para receber um fluxo de bits que compreende um conjunto de parâmetros e uma ou mais subimagens particionadas a partir de uma imagem. O decodificador de vídeo 1210 compreende adicionalmente um módulo de análise 1213 para analisar o conjunto de parâmetros para obter uma flag que indica que uma subimagem atual é uma subimagem com restrição de movimento temporal. O decodificador de vídeo 1210 compreende adicionalmente um módulo de extração 1215 para extrair a subimagem atual do fluxo de bits independentemente da imagem e com base na flag. O decodificador de vídeo 1210 compreende adicionalmente um módulo de decodificação 1217 para decodificar a subimagem atual para criar uma sequência de vídeo. O decodificador de vídeo 1210 compreende adicionalmente um módulo de encaminhamento 1219 para encaminhar a sequência de vídeo para exibição. O decodificador de vídeo 1210 pode ser configurado adicionalmente para realizar qualquer uma das etapas do método 1100.
[0180] Um primeiro componente é acoplado diretamente a um segundo componente quando não houver componentes intermediários, exceto uma linha, um traço ou outro meio entre o primeiro componente e o segundo componente. O primeiro componente é acoplado indiretamente ao segundo componente quando houver componentes intermediários diferentes de uma linha, um traço ou outro meio entre o primeiro componente e o segundo componente. O termo “acoplado” e suas variantes incluem tanto acoplado diretamente quanto acoplado indiretamente. O uso do termo “cerca de” significa uma faixa que inclui ±10% do número subsequente, a menos que estabelecido de outra maneira.
[0181] Deve-se entender também que não é exigido que as etapas dos métodos exemplificativos estabelecidos na presente invenção sejam necessariamente realizadas na ordem descrita, e a ordem das etapas de tais métodos deve ser entendida apenas como exemplificativa. Da mesma maneira, as etapas adicionais podem ser incluídas em tais métodos, e determinadas etapas podem ser omitidas ou combinadas, em métodos consistentes com várias modalidades da presente revelação.
[0182] Embora diversas modalidades tenham sido fornecidas na presente revelação, pode-se entender que os sistemas e métodos revelados podem ser incorporados a muitas outras formas específicas sem se afastar do espírito ou escopo da presente revelação. Os presentes exemplos devem ser considerados como ilustrativos e não restritivos, e a intenção não deve ser limitada aos detalhes fornecidos no presente documento. Por exemplo, os vários elementos ou componentes podem ser combinados ou integrados em outro sistema ou determinados atributos podem ser omitidos, ou não implementados.
[0183] Além disso, técnicas, sistemas, subsistemas e métodos descritos e ilustrados nas várias modalidades como distintos ou separados podem ser combinados ou integrados a outros sistemas, componentes, técnicas ou métodos sem se afastar do escopo da presente revelação.
Outros exemplos de mudanças, substituições e alterações são verificados por um técnico no assunto e podem ser realizados sem se afastar do espírito e escopo revelados no presente documento.

Claims (28)

REIVINDICAÇÕES
1. Método implementado em um decodificador, CARACTERIZADO pelo fato de que o método compreende: receber, por um receptor do decodificador, um fluxo de bits que compreende um conjunto de parâmetros e uma ou mais subimagens particionadas a partir de uma imagem; decodificar, por um processador do decodificador, o conjunto de parâmetros para obter uma flag que indica se operações de filtragem in-loop através de delimitações de subimagem são habilitadas; gerar, pelo processador, a subimagem atual para criar uma sequência de vídeo com base na flag.
2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o conjunto de parâmetros inclui adicionalmente uma flag que indica que uma subimagem atual é uma subimagem com restrição de movimento temporal.
3. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que o conjunto de parâmetros inclui pelo menos uma flag para cada uma dentre a uma ou mais subimagens que são subimagens com restrição de movimento temporal.
4. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que flags são omitidas para cada uma dentre a uma ou mais subimagens que não são subimagens com restrição de movimento temporal, e compreende adicionalmente, inferir, pelo processador, que um valor de cada flag omitida é igual a zero.
5. Método, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que a flag é uma subpic_motion_constrained_flag[ i ] em que i é um índice da subimagem atual.
6. Método, de acordo com qualquer uma das reivindicações 1 a 5, CARACTERIZADO pelo fato de que o parâmetro compreende adicionalmente identificadores (IDs) de subimagem para cada uma dentre a uma ou mais subimagens.
7. Método, de acordo com qualquer uma das reivindicações 1 a 6, CARACTERIZADO pelo fato de que o conjunto de parâmetros inclui adicionalmente um tamanho de subimagem para cada uma dentre a uma ou mais subimagens e uma localização de subimagem para cada uma dentre a uma ou mais subimagens.
8. Método implementado em um codificador, CARACTERIZADO pelo fato de que o método compreende: particionar, por um processador do codificador, uma imagem em uma pluralidade de subimagens; codificar, pelo processador, uma subimagem atual em um fluxo de bits; codificar no fluxo de bits, pelo processador, um conjunto de parâmetros que compreende uma flag que indica se operações de filtragem in-loop através de delimitações de subimagem são habilitadas.
9. Método, de acordo com a reivindicação 8, CARACTERIZADO pelo fato de que o método compreende adicionalmente: armazenar, em uma memória do codificador, o fluxo de bits para comunicação em direção a um decodificador.
10. Método, de acordo com qualquer uma das reivindicações 8 a 9, CARACTERIZADO pelo fato de que o conjunto de parâmetros inclui adicionalmente uma flag que indica que uma subimagem atual é uma subimagem com restrição de movimento temporal.
11. Método, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que o conjunto de parâmetros compreende pelo menos uma flag para cada uma dentre a uma ou mais subimagens que são subimagens com restrição de movimento temporal.
12. Método, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que flags são omitidas para cada uma dentre a uma ou mais subimagens que não são subimagens com restrição de movimento temporal.
13. Método, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que a flag é uma subpic_motion_constrained_flag[ i ] em que i é um índice da subimagem atual.
14. Método, de acordo com qualquer uma das reivindicações 8 a 13, CARACTERIZADO pelo fato de que compreende adicionalmente codificar, pelo processador, identificadores (IDs) de subimagem para cada uma dentre a uma ou mais subimagens no conjunto de parâmetros.
15. Método, de acordo com qualquer uma das reivindicações 8 a 14, CARACTERIZADO pelo fato de que compreende adicionalmente codificar no conjunto de parâmetros, pelo processador, um tamanho de subimagem para cada uma dentre a uma ou mais subimagens e uma localização de subimagem para cada uma dentre a uma ou mais subimagens.
16. Dispositivo de codificação de vídeo, CARACTERIZADO pelo fato de que compreende: um processador, uma memória, um receptor acoplado ao processador, e um transmissor acoplado ao processador, o processador, memória, receptor, e transmissor configurados para realizar o método conforme definido em qualquer uma das reivindicações 1 a 15.
17. Mídia legível por computador não transitória, CARACTERIZADA pelo fato de que compreende um produto de programa de computador para uso por um dispositivo de codificação de vídeo, o produto de programa de computador compreendendo instruções executáveis por computador armazenadas na mídia legível por computador não transitória tal que quando executadas por um processador fazem com que o dispositivo de codificação de vídeo realize o método conforme definido em qualquer uma das reivindicações 1 a 15.
18. Decodificador, CARACTERIZADO pelo fato de que compreende: uma unidade de recebimento, configurada para receber um fluxo de bits que compreende um conjunto de parâmetros e uma ou mais subimagens particionadas a partir de uma imagem; uma unidade de decodificação, configurada para decodificar o conjunto de parâmetros para obter uma flag que indica que uma subimagem atual é uma subimagem com restrição de movimento temporal; uma unidade de geração, configurada para gerar a subimagem atual para criar uma sequência de vídeo com base na flag.
19. Decodificador, de acordo com a reivindicação 18, CARACTERIZADO pelo fato de que o decodificador é adicionalmente configurado para realizar o método conforme definido em qualquer uma das reivindicações 1 a 7.
20. Codificador, CARACTERIZADO pelo fato de que compreende: uma unidade de particionamento, configurada para particionar uma imagem em uma pluralidade de subimagens; uma unidade de codificação, configurada para: codificar uma subimagem atual em um fluxo de bits; e codificar no fluxo de bits um conjunto de parâmetros que compreende uma flag que indica se operações de filtragem in-loop através de delimitações de subimagem são habilitadas.
21. Codificador, de acordo com a reivindicação 20, CARACTERIZADO pelo fato de que o codificador compreende adicionalmente: uma unidade de armazenamento, configurada para armazenar o fluxo de bits para comunicação em direção a um decodificador.
22. Codificador, de acordo com qualquer uma das reivindicações 20 a 21, CARACTERIZADO pelo fato de que o codificador é adicionalmente configurado para realizar o método conforme definido em qualquer uma das reivindicações 8 a 15.
23. Mídia de armazenamento não transitória, CARACTERIZADA pelo fato de que inclui um fluxo de bits codificado, o fluxo de bits compreendendo uma ou mais subimagens particionadas a partir de uma imagem, e compreendendo uma flag que indica se operações de filtragem in-loop através de delimitações de subimagem são habilitadas.
24. Dispositivo para codificação, CARACTERIZADO pelo fato de que compreende: unidade de recebimento, configurada para receber um fluxo de bits para decodificação; unidade de transmissão acoplada à unidade de recebimento, a unidade de transmissão, configurada para transmitir uma imagem decodificada a uma unidade de exibição; unidade de armazenamento acoplada a pelo menos uma dentre a unidade de recebimento ou a unidade de transmissão, a unidade de armazenamento, configurada para armazenar instruções; e unidade de processamento acoplada à unidade de armazenamento, a unidade de processamento, configurada para executar as instruções armazenadas na unidade de armazenamento para realizar o método conforme definido em qualquer uma das reivindicações 1 a 15.
25. Decodificador, CARACTERIZADO pelo fato de que compreende circuitos de processamento para realizar o método conforme definido nas reivindicações 1 a 7.
26. Codificador, CARACTERIZADO pelo fato de que compreende circuitos de processamento para realizar o método conforme definido em qualquer uma das reivindicações 8 a 15.
27. Produto de programa de computador, CARACTERIZADO pelo fato de que compreende código de programa para realizar o método conforme definido em qualquer uma das reivindicações 1 a 15 quando executado em um computador ou em um processador.
28. Mídia legível por computador não transitória, CARACTERIZADA pelo fato de que porta um código de programa que, quando executado por um dispositivo de computador, faz com que o dispositivo de computador realize o método conforme definido em qualquer uma das reivindicações 1 a 15.
Codificador Decodificador
Sinal de Vídeo de Entrada
Determinar Partições Particionamento de Bloco
Decodificação de Bloco Compressão de Bloco
Filtragem Filtragem
Sinal de Vídeo de Saída Fluxo de bits
Controle de Controle Geral Codificador Geral Coeficientes de Transformada Quantizados
Escalonamento Escalonamento e Transformada Sinal de Vídeo Inversa de Transformada Particionado e Quantização Análise de Estimação de Imagem Intra Controle de Filtro CABAC e Predição Intra Formatação de Cabeçalho Controle de Filtro Predição de Imagem Intra Filtros in-loop Fluxo de Bits Compensação Codificado de Movimento Movimento Buffer de Sinal de Estimação de Imagem Vídeo de Movimento Decodificada Saída
Codificador Fluxo de bits Sinal de Vídeo Transformada Codificação Particionado e Quantização de Entropia
Predição de Transformada Imagem Intra Inversa e Quantização
Compensação de Movimento
Filtros in-loop Buffer de Imagem Decodificada
Decodificador Fluxo de bits Transformada Decodificação Inversa e de Entropia Quantização
Compensação de Movimento
Predição de Imagem Intra
Buffer de Imagem Filtros in-loop Decodificada Sinal de Vídeo de Saída
Fluxo de bits
Cabeçalho Dados de Mensagem 636 336 de Fatia Imagem de SEI
Nível de Tamanho de Subimagem Subimagem IDs de Subimagem Localização de Subimagem Imagem
IDs de Subimagem Subimagens com Restrição de Movimento Subimagens
Fatias Subfluxo de bits Extração
Cabeçalho Mensagem 636 336 Subimagem(ns) de Fatia de SEI
Fatias
Imagem
ID de ID de ID de Subimagem Subimagem Subimagem
ID de Subimagem ID de com Restrição de ID de Subimagem Movimento Subimagem
Altura
Localização
ID de ID de ID de Subimagem Subimagem Subimagem
Largura
Imagem
Canto Esquerdo Superior
Fatias
ID de Subimagem Primeira Fatia
ID de Subimagem Segunda Fatia
ID de Subimagem Terceira Fatia
Subimagem
Imagem
Borda Direita de Imagem Borda Inferior Subimagem de Imagem
Dispositivo de Codificação de Vídeo Dispositivos de I/O
Processador
Módulo de Codificação 7[5[ 7[5[
Memória Portas a Portas a Jusante Montante
Particionar uma imagem em uma pluralidade de subimagens.
Codificar uma subimagem atual em um fluxo de bits como uma subimagem com restrição de movimento.
Codificar no fluxo de bits um conjunto de parâmetros que compreende uma flag que indica que a subimagem atual é a subimagem com restrição de movimento que pode ser extraída do fluxo de bits independentemente da imagem.
Codificar IDs de subimagem para cada uma dentre a uma ou mais subimagens no conjunto de parâmetros. Codificar no conjunto de parâmetros um tamanho de subimagem para cada uma dentre a uma ou mais subimagens e uma localização de subimagem para cada uma dentre a uma ou mais subimagens.
Armazenar o fluxo de bits para comunicação em direção a um decodificador.
Receber um fluxo de bits que compreende um conjunto de parâmetros e uma ou mais subimagens particionadas a partir de uma imagem.
Analisar o conjunto de parâmetros para obter uma flag que indica que uma subimagem atual é uma subimagem com restrição de movimento. Extrair a subimagem atual do fluxo de bits independentemente da imagem e com base na flag.
Decodificar a subimagem atual para criar uma sequência de vídeo.
Encaminhar a sequência de vídeo para exibição.
Codificador de Vídeo
Particionamento
Armazenamento Codificação
Transmissor
Receptor
Análise
Extração
Decodificação Encaminhamento
Decodificador de Vídeo
BR112021013499-9A 2019-01-09 2020-01-09 Codificador de vídeo, decodificador de vídeo e métodos correspondentes BR112021013499A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962790207P 2019-01-09 2019-01-09
US62/790,207 2019-01-09
PCT/US2020/012907 WO2020146614A1 (en) 2019-01-09 2020-01-09 Temporal motion constrained sub-picture signaling in video coding

Publications (1)

Publication Number Publication Date
BR112021013499A2 true BR112021013499A2 (pt) 2021-09-14

Family

ID=71520341

Family Applications (5)

Application Number Title Priority Date Filing Date
BR112021013531-6A BR112021013531A2 (pt) 2019-01-09 2020-01-09 Codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021013512-0A BR112021013512A2 (pt) 2019-01-09 2020-01-09 Codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021013499-9A BR112021013499A2 (pt) 2019-01-09 2020-01-09 Codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021013521-9A BR112021013521A2 (pt) 2019-01-09 2020-01-09 Codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021013436-0A BR112021013436A2 (pt) 2019-01-09 2020-01-09 Sinalização de identificador de subimagem em codificação de vídeo

Family Applications Before (2)

Application Number Title Priority Date Filing Date
BR112021013531-6A BR112021013531A2 (pt) 2019-01-09 2020-01-09 Codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021013512-0A BR112021013512A2 (pt) 2019-01-09 2020-01-09 Codificador de vídeo, decodificador de vídeo e métodos correspondentes

Family Applications After (2)

Application Number Title Priority Date Filing Date
BR112021013521-9A BR112021013521A2 (pt) 2019-01-09 2020-01-09 Codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021013436-0A BR112021013436A2 (pt) 2019-01-09 2020-01-09 Sinalização de identificador de subimagem em codificação de vídeo

Country Status (21)

Country Link
US (7) US20210337200A1 (pt)
EP (9) EP4221215A1 (pt)
JP (9) JP7223146B2 (pt)
KR (7) KR20210109630A (pt)
CN (9) CN114584770B (pt)
AU (2) AU2020206246B2 (pt)
BR (5) BR112021013531A2 (pt)
CY (3) CY1126078T1 (pt)
DK (3) DK3909246T3 (pt)
ES (3) ES2951060T3 (pt)
FI (3) FI3909246T3 (pt)
HR (3) HRP20230702T1 (pt)
HU (3) HUE062613T2 (pt)
LT (3) LT3909246T (pt)
MX (6) MX2021008344A (pt)
PL (3) PL3909244T3 (pt)
PT (3) PT3909246T (pt)
RS (3) RS64374B1 (pt)
SG (5) SG11202107546UA (pt)
SI (3) SI3909244T1 (pt)
WO (6) WO2020146623A1 (pt)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102619997B1 (ko) * 2019-01-02 2024-01-02 애플 인크. 영상 신호 부호화/복호화 방법 및 이를 위한 장치
HRP20230702T1 (hr) * 2019-01-09 2023-10-13 Huawei Technologies Co., Ltd. Signaliziranje identifikatora podslike kod kodiranja videa
CN113396586A (zh) * 2019-02-11 2021-09-14 北京字节跳动网络技术有限公司 条件依赖的视频块分割
AU2020234972A1 (en) * 2019-03-11 2021-09-30 Vid Scale, Inc. Sub-picture bitstream extraction and reposition
US20220182681A1 (en) * 2019-03-24 2022-06-09 Lg Electronics Inc. Image or video coding based on sub-picture handling structure
WO2020249124A1 (en) 2019-06-14 2020-12-17 Beijing Bytedance Network Technology Co., Ltd. Handling video unit boundaries and virtual boundaries based on color format
US20220272321A1 (en) * 2019-06-19 2022-08-25 Electronics And Telecommunications Research Institute Method, device, and recording medium for encoding/decoding image using reference picture
EP3997869A4 (en) 2019-08-10 2022-10-26 Beijing Bytedance Network Technology Co., Ltd. SUBPICTURE DEPENDENT SIGNALING IN VIDEO STREAMS
US11930170B2 (en) 2019-08-20 2024-03-12 Apple Inc. Method for encoding/decoding image signal and device therefor
KR20220050877A (ko) * 2019-08-29 2022-04-25 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 부호화 장치, 복호 장치, 부호화 방법, 복호 방법 및 기록 매체
JP2021044708A (ja) * 2019-09-11 2021-03-18 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
BR112022005046A2 (pt) 2019-09-18 2022-07-05 Beijing Bytedance Network Tech Co Ltd Método de processamento de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador e meio de gravação não transitório legível por computador
CN114503594B (zh) 2019-09-22 2024-04-05 北京字节跳动网络技术有限公司 自适应环路滤波中样点填充的选择性应用
EP4035372A4 (en) * 2019-09-23 2022-11-23 Telefonaktiebolaget LM Ericsson (publ) SEGMENT POSITION SIGNALING WITH SUB-PICTURE SLICE POSITION DERIVATION
EP4022910A4 (en) 2019-09-27 2022-11-16 Beijing Bytedance Network Technology Co., Ltd. ADAPTIVE LOOP FILTERING BETWEEN DIFFERENT VIDEO UNITS
EP4022917A4 (en) * 2019-10-02 2022-11-30 Beijing Bytedance Network Technology Co., Ltd. SYNTAX FOR SUBPICTURE SIGNALING IN A VIDEO BITSTREAM
WO2021068906A1 (en) 2019-10-10 2021-04-15 Beijing Bytedance Network Technology Co., Ltd. Padding process at unavailable sample locations in adaptive loop filtering
WO2021073630A1 (en) 2019-10-18 2021-04-22 Beijing Bytedance Network Technology Co., Ltd. Syntax constraints in parameter set signaling of subpictures
CN117528097A (zh) 2019-10-29 2024-02-06 抖音视界(北京)有限公司 跨分量自适应环路滤波器
US11509938B2 (en) * 2019-11-05 2022-11-22 Hfi Innovation Inc. Method and apparatus of signaling subpicture information in video coding
US20210176475A1 (en) * 2019-12-05 2021-06-10 Mediatek Inc. Specifying Layout In Video Pictures
US20230048070A1 (en) * 2019-12-11 2023-02-16 Sharp Kabushiki Kaisha Systems and methods for signaling output layer set information in video coding
MX2022006734A (es) 2019-12-11 2022-06-09 Beijing Bytedance Network Tech Co Ltd Relleno de muestra para filtrado de circuito adaptivo de componente cruzado.
GB2590632B (en) * 2019-12-20 2023-07-26 Canon Kk Video coding and decoding
WO2021134019A1 (en) 2019-12-26 2021-07-01 Bytedance Inc. Constraints on coding of layered video
KR20220115958A (ko) 2019-12-26 2022-08-19 바이트댄스 아이엔씨 코딩된 비트스트림들에서의 비디오 계층들의 시그널링에 대한 제약들
WO2021134055A1 (en) 2019-12-27 2021-07-01 Bytedance Inc. Subpicture signaling in parameter sets
US11778169B2 (en) * 2019-12-27 2023-10-03 Electronics And Telecommunications Research Institute Method, apparatus and storage medium for image encoding/decoding using reference picture
US20210306650A1 (en) * 2020-03-31 2021-09-30 Tencent America LLC Method for signaling subpicture partitioning in coded video stream
JP2023531223A (ja) 2020-06-30 2023-07-21 北京字節跳動網絡技術有限公司 適応ループフィルタリングのための境界位置
US20220086457A1 (en) 2020-09-17 2022-03-17 Lemon Inc. Subpicture track referencing and processing
US20220086385A1 (en) * 2020-09-17 2022-03-17 Lemon Inc. Profile, tier, level and general constraints indication in coded video
EP3972273A1 (en) 2020-09-17 2022-03-23 Lemon Inc. Handling of non-vcl nal units in picture unit construction
US20240064323A1 (en) * 2020-12-23 2024-02-22 Lg Electronics Inc. Media file generation/reception method and device for signaling subpicture id information, and computer-readable recording medium in which media file is stored
US20220345725A1 (en) 2021-04-15 2022-10-27 Lemon Inc. Level Indicator For Sub-Picture Entity Group
WO2023244022A1 (ko) * 2022-06-16 2023-12-21 엘지전자 주식회사 스캔 오더(scan order) 정보에 기반한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장하는 기록 매체

Family Cites Families (97)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69721483T2 (de) * 1996-09-27 2004-03-18 Matsushita Electric Industrial Co., Ltd., Kadoma Edier-und Autorensystem für einen Multimedia-Datenstrom mit Überprüfung der Edierbefehle
GB2382940A (en) * 2001-11-27 2003-06-11 Nokia Corp Encoding objects and background blocks
US20030112868A1 (en) * 2001-12-17 2003-06-19 Koninklijke Philips Electronics N.V. Shape assisted padding for object-based coding
JP2004128761A (ja) * 2002-10-01 2004-04-22 Pioneer Electronic Corp 情報記録媒体、情報記録装置及び方法、情報再生装置及び方法、情報記録再生装置及び方法、記録又は再生制御用のコンピュータプログラム、並びに制御信号を含むデータ構造
KR100539886B1 (ko) 2004-09-10 2005-12-28 삼성전자주식회사 디지털 방송 수신 장치 및 그 방법
JP2010505318A (ja) * 2006-09-26 2010-02-18 エーエムビーエックス ユーケー リミテッド ビデオフレームと補助データを含むビットストリームの形成及び処理
US20140072058A1 (en) * 2010-03-05 2014-03-13 Thomson Licensing Coding systems
JP2010041494A (ja) * 2008-08-06 2010-02-18 Sumitomo Electric Ind Ltd ネットワーク端末
US9602821B2 (en) * 2008-10-01 2017-03-21 Nvidia Corporation Slice ordering for video encoding
CN104768031B (zh) * 2009-01-26 2018-02-09 汤姆森特许公司 用于视频解码的装置
KR20110061468A (ko) * 2009-12-01 2011-06-09 (주)휴맥스 고해상도 영상의 부호화/복호화 방법 및 이를 수행하는 장치
EP2577489A4 (en) * 2010-06-02 2014-09-10 Onmobile Global Ltd METHOD AND APPARATUS FOR ADAPTING MULTIMEDIA CONTENT
US8780973B2 (en) * 2010-08-13 2014-07-15 Texas Instruments Incorporated Limiting the maximum size of an encoded video picture using sub-picture based rate control
US8891889B2 (en) * 2011-04-13 2014-11-18 Huawei Technologies Co., Ltd. Image encoding and decoding methods and related devices
US20130016769A1 (en) 2011-07-17 2013-01-17 Qualcomm Incorporated Signaling picture size in video coding
US9584819B2 (en) * 2011-10-24 2017-02-28 Qualcomm Incorporated Grouping of tiles for video coding
US20130107973A1 (en) * 2011-10-28 2013-05-02 Qualcomm Incorporated Loop filtering control over tile boundaries
US20130136180A1 (en) * 2011-11-29 2013-05-30 Futurewei Technologies, Inc. Unified Partitioning Structures and Signaling Methods for High Efficiency Video Coding
US9819949B2 (en) * 2011-12-16 2017-11-14 Microsoft Technology Licensing, Llc Hardware-accelerated decoding of scalable video bitstreams
US9288506B2 (en) * 2012-01-05 2016-03-15 Qualcomm Incorporated Signaling view synthesis prediction support in 3D video coding
US9332259B2 (en) * 2012-01-18 2016-05-03 Qualcomm Incorporated Indication of use of wavefront parallel processing in video coding
US10244246B2 (en) * 2012-02-02 2019-03-26 Texas Instruments Incorporated Sub-pictures for pixel rate balancing on multi-core platforms
US9756327B2 (en) * 2012-04-03 2017-09-05 Qualcomm Incorporated Quantization matrix and deblocking filter adjustments for video coding
US9565431B2 (en) * 2012-04-04 2017-02-07 Qualcomm Incorporated Low-delay video buffering in video coding
JP5888278B2 (ja) * 2012-04-06 2016-03-16 株式会社Jvcケンウッド 動画像復号装置、動画像復号方法、動画像復号プログラム、受信装置、受信方法及び受信プログラム
US20150063466A1 (en) 2012-04-06 2015-03-05 Sony Corporation Decoding device and decoding method, and encoding device and encoding method
JP6055080B2 (ja) * 2012-04-16 2016-12-27 テレフオンアクチーボラゲット エルエム エリクソン(パブル) 圧縮動画のシーケンスにおける並列処理の可能性を示す固定タイル構造フラグ
US20130287093A1 (en) * 2012-04-25 2013-10-31 Nokia Corporation Method and apparatus for video coding
JP6376719B2 (ja) * 2012-06-29 2018-08-22 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
RU2720534C2 (ru) * 2012-06-29 2020-04-30 ДжиИ Видео Компрешн, ЭлЭлСи Концепция потока видеоданных
US9716892B2 (en) * 2012-07-02 2017-07-25 Qualcomm Incorporated Video parameter set including session negotiation information
US20140003504A1 (en) * 2012-07-02 2014-01-02 Nokia Corporation Apparatus, a Method and a Computer Program for Video Coding and Decoding
EP2871567A4 (en) * 2012-07-06 2016-01-06 Samsung Electronics Co Ltd METHOD AND APPARATUS FOR ENCODING MULTILAYER VIDEO, AND METHOD AND APPARATUS FOR DECODING MULTILAYER VIDEO
JP2014027371A (ja) * 2012-07-24 2014-02-06 Nippon Hoso Kyokai <Nhk> イントラ予測処理装置及びプログラム
US9491457B2 (en) * 2012-09-28 2016-11-08 Qualcomm Incorporated Signaling of regions of interest and gradual decoding refresh in video coding
US8989508B2 (en) * 2012-09-28 2015-03-24 Sharp Kabushiki Kaisha Electronic device for signaling a sub-picture buffer parameter
CN108429917B (zh) 2012-09-29 2022-04-29 华为技术有限公司 视频编码及解码方法、装置及系统
MY189391A (en) * 2013-01-04 2022-02-09 Samsung Electronics Co Ltd Method for entropy-encoding slice segment and apparatus therefor, and method for entropy-decoding slice segment and apparatus therefor
CN105144720B (zh) * 2013-01-04 2018-12-28 Ge视频压缩有限责任公司 高效可伸缩编码概念
WO2014141142A1 (en) 2013-03-14 2014-09-18 Gamesys Ltd Systems and methods for detection of gaming experience management implementations
GB2512829B (en) * 2013-04-05 2015-05-27 Canon Kk Method and apparatus for encoding or decoding an image with inter layer motion information prediction according to motion information compression scheme
US9749627B2 (en) 2013-04-08 2017-08-29 Microsoft Technology Licensing, Llc Control data for motion-constrained tile set
US9635371B2 (en) * 2013-05-31 2017-04-25 Qualcomm Incorporated Determining rounding offset using scaling factor in picture resampling
US8923640B1 (en) 2013-06-07 2014-12-30 Apple Inc. Coherence groups: region descriptors for low bit rate encoding
WO2015004924A1 (en) 2013-07-10 2015-01-15 Sharp Kabushiki Kaisha Scaling list signaling and parameter sets activation
WO2015009693A1 (en) * 2013-07-15 2015-01-22 Sony Corporation Layer based hrd buffer management for scalable hevc
CN109862373B (zh) * 2013-07-15 2021-10-15 索尼公司 用于对比特流进行编码的方法和装置
GB2516824A (en) 2013-07-23 2015-02-11 Nokia Corp An apparatus, a method and a computer program for video coding and decoding
WO2015052979A1 (ja) * 2013-10-11 2015-04-16 ソニー株式会社 画像処理装置及び画像処理方法
US10187662B2 (en) * 2013-10-13 2019-01-22 Sharp Kabushiki Kaisha Signaling parameters in video parameter set extension and decoder picture buffer operation
KR102281282B1 (ko) * 2013-12-26 2021-07-23 삼성전자주식회사 서브블록 기반 예측을 수행하는 인터 레이어 비디오 복호화 방법 및 그 장치 및 서브블록 기반 예측을 수행하는 인터 레이어 비디오 부호화 방법 및 그 장치
KR101851479B1 (ko) * 2014-01-03 2018-04-23 노키아 테크놀로지스 오와이 파라미터 세트 코딩
EP3092796B1 (en) * 2014-01-07 2020-06-17 Canon Kabushiki Kaisha Method, device, and computer program for encoding inter-layer dependencies
JP6224516B2 (ja) * 2014-05-07 2017-11-01 日本電信電話株式会社 エンコード方法およびエンコードプログラム
US9699480B2 (en) * 2014-06-13 2017-07-04 Sharp Laboratories Of America, Inc. Level limits
EP4002851A1 (en) 2014-06-20 2022-05-25 Sony Group Corporation Image encoding device and method, and image decoding device and method
US10477204B2 (en) * 2014-06-20 2019-11-12 Sharp Kabushiki Kaisha Harmonized palette coding
SG11201706531UA (en) * 2015-02-16 2017-09-28 Hfi Innovation Inc Method and apparatus for palette predictor initialization for palette coding in video and image compression
GB2535990A (en) * 2015-02-26 2016-09-07 Univ Antwerpen Computer program and method of determining a personalized head-related transfer function and interaural time difference function
EP3128485A1 (en) * 2015-08-05 2017-02-08 Thomson Licensing Method and apparatus for hierarchical motion estimation using dfd-based image segmentation
WO2017088093A1 (en) 2015-11-23 2017-06-01 Mediatek Singapore Pte. Ltd. On the smallest allowed block size in video coding
US20170180758A1 (en) * 2015-12-22 2017-06-22 Vallabhajosyula S. Somayazulu Tiled Wireless Display
WO2017137444A1 (en) * 2016-02-09 2017-08-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Concept for picture/video data streams allowing efficient reducibility or efficient random access
EP3249928A1 (en) 2016-05-23 2017-11-29 Thomson Licensing Method, apparatus and stream of formatting an immersive video for legacy and immersive rendering devices
US10812791B2 (en) * 2016-09-16 2020-10-20 Qualcomm Incorporated Offset vector identification of temporal motion vector predictor
EP3975559A1 (en) * 2016-10-04 2022-03-30 B1 Institute of Image Technology, Inc. Image data encoding/decoding method and apparatus
US10250776B2 (en) * 2016-10-04 2019-04-02 International Business Machines Corporation Enhancing graph visualization with supplemental data
WO2018071666A1 (en) * 2016-10-12 2018-04-19 Arris Enterprises Llc Coding schemes for virtual reality (vr) sequences
US11140417B2 (en) * 2016-11-01 2021-10-05 Nokia Technologies Oy Apparatus, a method and a computer program for video coding and decoding
GB2594615B (en) * 2017-03-20 2022-11-30 Canon Kk Method and apparatus for encoding and transmitting at least a spatial part of a video sequence
EP3603074A2 (en) * 2017-03-20 2020-02-05 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Advanced video data stream extraction and multi-resolution video transmission
WO2018221368A1 (ja) * 2017-05-31 2018-12-06 シャープ株式会社 動画像復号装置、及び動画像符号化装置
EP3422724B1 (en) * 2017-06-26 2024-05-01 Nokia Technologies Oy An apparatus, a method and a computer program for omnidirectional video
WO2019007493A1 (en) 2017-07-04 2019-01-10 Huawei Technologies Co., Ltd. ENHANCEMENT OF FORCED LIMIT PARTITION
TW202344049A (zh) * 2017-07-13 2023-11-01 美商松下電器(美國)知識產權公司 編碼裝置、解碼裝置及記錄媒體
CN118018761A (zh) * 2017-12-28 2024-05-10 韩国电子通信研究院 图像编码和解码的方法和装置以及存储比特流的记录介质
EP3780624A4 (en) 2018-04-19 2021-02-17 LG Electronics Inc. IMAGE PROCESSING AND DEVICE FOR ITS IMPLEMENTATION
EP3796659A4 (en) * 2018-05-15 2022-05-11 Sharp Kabushiki Kaisha IMAGE CODING DEVICE, CODED STREAM EXTRACTION DEVICE AND IMAGE DECODING DEVICE
AU2019276189B2 (en) * 2018-05-30 2022-07-28 Huawei Technologies Co., Ltd. Multi-type tree depth extension for picture boundary handling
JP2021153213A (ja) 2018-06-29 2021-09-30 シャープ株式会社 動画像符号化装置および動画像復号装置
CN112369021A (zh) * 2018-06-29 2021-02-12 韩国电子通信研究院 用于吞吐量增强的图像编码/解码方法和设备以及存储比特流的记录介质
EP3818710A4 (en) * 2018-07-02 2022-06-29 Nokia Technologies Oy Method and apparatus for tile-relative addressing in video coding
KR102545728B1 (ko) * 2018-07-16 2023-06-20 엘지전자 주식회사 서브블록 단위의 시간적 움직임 정보 예측을 위한 인터 예측 방법 및 그 장치
WO2020050705A1 (ko) * 2018-09-07 2020-03-12 가온미디어 주식회사 그룹 단위 양자화 파라미터를 처리하는 영상 복호화 및 부호화 방법
JP2022500914A (ja) * 2018-09-14 2022-01-04 ヴィド スケール インコーポレイテッド フレキシブルグリッドリージョンのための方法および装置
US11057636B2 (en) * 2018-09-17 2021-07-06 Qualcomm Incorporated Affine motion prediction
KR20200033211A (ko) * 2018-09-19 2020-03-27 한국전자통신연구원 경계 처리를 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
EP3891983A1 (en) * 2018-12-04 2021-10-13 VID SCALE, Inc. Tile group partitioning
US11102513B2 (en) * 2018-12-06 2021-08-24 Tencent America LLC One-level transform split and adaptive sub-block transform
US11606555B2 (en) * 2018-12-20 2023-03-14 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for video coding using uniform segment split in pictures
CA3125318A1 (en) * 2018-12-28 2020-07-02 B1 Institute Of Image Technology, Inc. Intra prediction-based video encoding/decoding method and device
WO2020135482A1 (en) * 2018-12-29 2020-07-02 Beijing Bytedance Network Technology Co., Ltd. Construction method for default motion candidate in sub-block based inter prediction
WO2020141248A1 (en) * 2019-01-02 2020-07-09 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
HRP20230702T1 (hr) * 2019-01-09 2023-10-13 Huawei Technologies Co., Ltd. Signaliziranje identifikatora podslike kod kodiranja videa
GB2584295A (en) * 2019-05-28 2020-12-02 Canon Kk Method and apparatus for encoding and decoding a video bitstream for merging regions of interest
WO2021073630A1 (en) * 2019-10-18 2021-04-22 Beijing Bytedance Network Technology Co., Ltd. Syntax constraints in parameter set signaling of subpictures
CN115104317A (zh) * 2019-12-12 2022-09-23 Lg电子株式会社 图像编码装置和用于控制环路滤波的方法

Also Published As

Publication number Publication date
CN115550647B (zh) 2024-01-30
KR20210109630A (ko) 2021-09-06
EP3909246A1 (en) 2021-11-17
JP2022516997A (ja) 2022-03-03
LT3909246T (lt) 2023-07-10
US11949893B2 (en) 2024-04-02
KR20210107129A (ko) 2021-08-31
MX2021008346A (es) 2021-10-13
MX2021008348A (es) 2021-10-13
EP3906687A1 (en) 2021-11-10
CN113287313A (zh) 2021-08-20
EP3909246A4 (en) 2022-03-23
WO2020146614A1 (en) 2020-07-16
US20210337199A1 (en) 2021-10-28
JP7467480B2 (ja) 2024-04-15
KR20210110710A (ko) 2021-09-08
PT3909246T (pt) 2023-07-05
BR112021013436A2 (pt) 2021-10-19
ES2951060T3 (es) 2023-10-17
SG11202107548WA (en) 2021-08-30
SG11202107549XA (en) 2021-08-30
EP3909245A4 (en) 2022-03-30
PL3906665T3 (pl) 2023-09-04
WO2020146623A1 (en) 2020-07-16
BR112021013521A2 (pt) 2021-09-14
EP3909244A4 (en) 2022-03-30
CN114584770A (zh) 2022-06-03
EP3909245A1 (en) 2021-11-17
US11917173B2 (en) 2024-02-27
LT3906665T (lt) 2023-07-25
RS64330B1 (sr) 2023-08-31
DK3909246T3 (da) 2023-07-10
CY1126094T1 (el) 2023-11-15
LT3909244T (lt) 2023-07-10
KR20210107128A (ko) 2021-08-31
EP3906684A1 (en) 2021-11-10
SG11202107545TA (en) 2021-08-30
HUE062631T2 (hu) 2023-11-28
CN113508591A (zh) 2021-10-15
MX2021008344A (es) 2021-09-30
SG11202107546UA (en) 2021-08-30
AU2020206246A1 (en) 2021-08-12
EP3909246B1 (en) 2023-06-07
JP2024019510A (ja) 2024-02-09
JP2022516996A (ja) 2022-03-03
MX2021008347A (es) 2021-10-13
CN113302933A (zh) 2021-08-24
JP2022518168A (ja) 2022-03-14
JP2022516998A (ja) 2022-03-03
BR112021013512A2 (pt) 2021-09-14
WO2020146616A1 (en) 2020-07-16
EP3906684A4 (en) 2022-03-16
CN115550648B (zh) 2023-09-01
EP3906665A4 (en) 2022-03-23
EP4221214A1 (en) 2023-08-02
WO2020146662A1 (en) 2020-07-16
AU2020206246B2 (en) 2024-01-04
PT3909244T (pt) 2023-07-05
DK3909244T3 (da) 2023-07-24
US20210337200A1 (en) 2021-10-28
ES2951004T3 (es) 2023-10-17
KR102661006B1 (ko) 2024-04-24
EP4221213A1 (en) 2023-08-02
BR112021013531A2 (pt) 2021-09-14
JP2022518169A (ja) 2022-03-14
JP7467706B2 (ja) 2024-04-15
EP3909244A1 (en) 2021-11-17
CN115550647A (zh) 2022-12-30
SI3909246T1 (sl) 2023-08-31
US20210337227A1 (en) 2021-10-28
CN113302930A (zh) 2021-08-24
JP2022518170A (ja) 2022-03-14
CN114584770B (zh) 2023-11-03
FI3909244T3 (fi) 2023-07-13
CN113330745A (zh) 2021-08-31
SI3906665T1 (sl) 2023-09-29
EP3906665A1 (en) 2021-11-10
KR102650474B1 (ko) 2024-03-21
JP7404373B2 (ja) 2023-12-25
HUE062613T2 (hu) 2023-11-28
US20230319299A1 (en) 2023-10-05
PT3906665T (pt) 2023-08-01
FI3906665T3 (fi) 2023-07-31
JP2023101529A (ja) 2023-07-21
ES2952079T3 (es) 2023-10-26
CN115550648A (zh) 2022-12-30
SI3909244T1 (sl) 2023-08-31
HRP20230682T1 (hr) 2023-10-13
FI3909246T3 (fi) 2023-07-18
JP2023059882A (ja) 2023-04-27
RS64353B1 (sr) 2023-08-31
EP3906687B1 (en) 2024-04-24
KR20210107127A (ko) 2021-08-31
JP7223146B2 (ja) 2023-02-15
DK3906665T3 (da) 2023-07-31
HRP20230707T1 (hr) 2023-10-13
EP4221215A1 (en) 2023-08-02
WO2020146665A1 (en) 2020-07-16
MX2021008345A (es) 2021-10-13
PL3909246T3 (pl) 2023-08-21
HUE062301T2 (hu) 2023-10-28
EP3906665B1 (en) 2023-06-07
CN113330451A (zh) 2021-08-31
AU2024202115A1 (en) 2024-05-02
EP3909244B1 (en) 2023-06-07
US20210337226A1 (en) 2021-10-28
RS64374B1 (sr) 2023-08-31
MX2021008339A (es) 2021-09-30
US20210337198A1 (en) 2021-10-28
US20210337228A1 (en) 2021-10-28
CY1126078T1 (el) 2023-11-15
SG11202107543SA (en) 2021-08-30
EP3906687A4 (en) 2022-03-23
KR20240056798A (ko) 2024-04-30
CY1126131T1 (el) 2023-11-15
PL3909244T3 (pl) 2023-08-14
HRP20230702T1 (hr) 2023-10-13
KR102648032B1 (ko) 2024-03-14
WO2020146582A1 (en) 2020-07-16
KR20210107126A (ko) 2021-08-31

Similar Documents

Publication Publication Date Title
BR112021013499A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR122022009674A2 (pt) Método implementado por um codificador, dispositivo e aparelho de codificação, sistema e meio para codificação
BR112021011398A2 (pt) Método e aparelho de codificação de vídeo
BR122024003872A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes
JP2024071391A (ja) ビデオエンコーダ、ビデオデコーダ、および対応する方法