BR122023003915B1 - Fluxo de bits, método e dispositivo para armazenar um fluxo de bits,sistema e método para transmitir um fluxo de bits, e sistema para processar um fluxo de bits - Google Patents

Fluxo de bits, método e dispositivo para armazenar um fluxo de bits,sistema e método para transmitir um fluxo de bits, e sistema para processar um fluxo de bits Download PDF

Info

Publication number
BR122023003915B1
BR122023003915B1 BR122023003915-7A BR122023003915A BR122023003915B1 BR 122023003915 B1 BR122023003915 B1 BR 122023003915B1 BR 122023003915 A BR122023003915 A BR 122023003915A BR 122023003915 B1 BR122023003915 B1 BR 122023003915B1
Authority
BR
Brazil
Prior art keywords
sps
pps
indicator
mapping
bit stream
Prior art date
Application number
BR122023003915-7A
Other languages
English (en)
Inventor
Ye-Kui Wang
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 BR122023003915B1 publication Critical patent/BR122023003915B1/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/172Methods 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 picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • 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/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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/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/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data

Abstract

um método de decodificação de vídeo compreende receber um fluxo de bits incluindo um sps, um pps e subimagens associadas a um mapeamento de id de subimagem. uma determinação é feita se um indicador sps tem um primeiro ou segundo valor. o indicador sps tendo o primeiro valor especifica que o mapeamento de id de subimagem é sinalizado no sps, e o segundo valor especifica que o mapeamento de id de subimagem é sinalizado no pps. o mapeamento de id de subimagem é obtido do sps quando o indicador sps tem o primeiro valor e do pps quando o indicador sps tem o segundo valor ou o indicador pps tem o primeiro valor.

Description

REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[0001] Este pedido de patente reivindica o benefício do Pedido de Patente Provisório dos Estados Unidos N°. 62/901,552, depositado em 17 de setembro de 2019 por Ye-Kui Wang e intitulado "Sinalização de IDs de Subimagem na Codificação de Vídeo Com Base em Subimagem" ("Signaling Subpicture IDs in Subpicture Based Video Coding"), o qual é incorporado neste documento por referência.
CAMPO TÉCNICO
[0002] A presente divulgação está geralmente relacionada à codificação de vídeo e está especificamente relacionada à sinalização de identificadores (IDs) de subimagem na codificação de vídeo baseada em subimagem.
ANTECEDENTES
[0003] A quantidade de dados de vídeo necessária para representar até mesmo um vídeo relativamente curto pode ser substancial, a qual pode resultar em dificuldades quando os dados devem ser transmitidos em fluxo ou, de outra forma, comunicados através de uma rede de comunicações com capacidade de largura de banda limitada. Assim, os dados de vídeo são geralmente comprimidos antes de serem comunicados pelas redes de telecomunicações atuais. O tamanho de um vídeo também pode ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento porque os recursos de memória podem ser limitados. Dispositivos de compressão de vídeo frequentemente usam software e / ou hardware na origem para codificar os dados de vídeo antes da transmissão ou armazenamento, diminuindo assim a quantidade de dados necessária para representar imagens de vídeo digital. 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 cada vez maiores de qualidade de vídeo superior, são desejáveis técnicas de compressão e descompressão aprimoradas que melhoram a razão de compressão com pouco ou nenhum sacrifício na qualidade da imagem.
SUMÁRIO
[0004] Um primeiro aspecto refere-se a uma método implementado por um decodificador, compreendendo receber, pelo decodificador, um fluxo de bits incluindo um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS) e uma pluralidade de subimagens associadas a um mapeamento de identificador (ID) de subimagem, em que o SPS inclui um indicador SPS; determinar, pelo decodificador, se o indicador SPS tem um primeiro valor ou um segundo valor, em que o indicador SPS tendo o primeiro valor especifica que o mapeamento de ID de subimagem é sinalizado no SPS e em que o indicador SPS tendo o segundo valor especifica que o mapeamento de ID de subimagem é sinalizado no PPS; obter, pelo decodificador, o mapeamento de ID de subimagem do SPS quando o indicador SPS tiver o primeiro valor e do PPS quando o indicador SPS tiver o segundo valor; e decodificar, pelo decodificador, a pluralidade de subimagens usando o mapeamento de ID de subimagem.
[0005] O método fornece técnicas que garantem a sinalização eficiente de identificadores (IDs) de subimagem mesmo quando os IDs de subimagem alteram dentro da sequência de vídeo codificada (CVS) em cenários de aplicação envolvendo extração de subfluxo de bits e mesclagem de subfluxo de bits. A sinalização eficiente é alcançada definindo indicadores no conjunto de parâmetros de sequência (SPS) ou no conjunto de parâmetros de imagem (SPS) para indicar se os IDs de subimagem na CVS podem alterar e, em caso afirmativo, onde os IDs de subimagem estão localizados. Isso reduz a redundância e aumenta a eficiência de codificação. Assim, o codificador/decodificador (também conhecido como “codec”) na codificação de vídeo é aprimorado em relação aos codecs atuais. Na prática, o processo de codificação de vídeo aprimorado oferece ao usuário uma melhor experiência de usuário quando os vídeos são enviados, recebidos e/ou visualizados.
[0006] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o PPS inclui um indicador PPS, e o método compreende ainda determinar, pelo decodificador, se o indicador PPS tem o primeiro valor ou o segundo valor, em que o indicador PPS tendo o primeiro valor especifica que o mapeamento de ID de subimagem é sinalizado no PPS e em que o indicador PPS tendo o segundo valor especifica que o mapeamento de ID de subimagem não é sinalizado no PPS; e obter, pelo decodificador, o mapeamento de ID de subimagem do PPS quando o indicador PPS tem o primeiro valor.
[0007] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o indicador SPS tem o primeiro valor quando o indicador PPS tem o segundo valor e em que o indicador SPS tem o segundo valor quando o indicador PPS tem o primeiro valor.
[0008] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o primeiro valor é um e o segundo valor é zero.
[0009] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o SPS inclui um segundo indicador SPS e em que o segundo indicador SPS especifica se o mapeamento de ID de subimagem é explicitamente sinalizado no SPS ou no PPS.
[0010] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o fluxo de bits compreende ainda um indicador de alteração de sequência de vídeo codificada (CVS) e em que o indicador de alteração de CVS indica se o mapeamento de ID de subimagem é permitido ser alterado dentro de uma sequência de vídeo codificada (CVS) do fluxo de bits.
[0011] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o fluxo de bits compreende um fluxo de bits mesclado e em que o mapeamento de ID de subimagem alterou dentro da CVS do fluxo de bits.
[0012] Um segundo aspecto refere-se a um método implementado por um codificador, o método compreendendo codificar, pelo decodificador, um fluxo de bits incluindo um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS) e uma pluralidade de subimagens associadas a um mapeamento de identificador (ID) de subimagem, em que o SPS inclui um indicador SPS; definir, pelo decodificador, o indicador SPS para um primeiro valor quando o mapeamento de ID de subimagem é sinalizado no SPS e para um segundo valor quando o mapeamento de ID de subimagem é sinalizado no PPS; e armazenar, pelo decodificador, o fluxo de bits para comunicação em direção a um decodificador.
[0013] O método fornece técnicas que garantem a sinalização eficiente de identificadores (IDs) de subimagem mesmo quando os IDs de subimagem alteram dentro da sequência de vídeo codificada (CVS) em cenários de aplicação envolvendo extração de subfluxo de bits e mesclagem de subfluxo de bits. A sinalização eficiente é alcançada definindo indicadores no conjunto de parâmetros de sequência (SPS) ou no conjunto de parâmetros de imagem (SPS) para indicar se os IDs de subimagem na CVS podem alterar e, em caso afirmativo, onde os IDs de subimagem estão localizados. Isso reduz a redundância e aumenta a eficiência de codificação. Assim, o codificador/decodificador (também conhecido como “codec”) na codificação de vídeo é aprimorado em relação aos codecs atuais. Na prática, o processo de codificação de vídeo aprimorado oferece ao usuário uma melhor experiência de usuário quando os vídeos são enviados, recebidos e/ou visualizados.
[0014] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o decodificador, um indicador PPS no PPS para o primeiro valor quando o mapeamento de ID de subimagem é sinalizado no PPS e para o segundo valor quando o mapeamento de ID de subimagem não é sinalizado no PPS.
[0015] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o indicador SPS tem o primeiro valor quando o indicador PPS tem o segundo valor e em que o indicador SPS tem o segundo valor quando o indicador PPS tem o primeiro valor.
[0016] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o primeiro valor é um e o segundo valor é zero.
[0017] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o SPS inclui um segundo indicador SPS e em que o segundo indicador SPS especifica se o mapeamento de subimagem é explicitamente sinalizado no SPS ou no PPS.
[0018] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o fluxo de bits compreende ainda um indicador de alteração de sequência de vídeo codificada (CVS) e em que o indicador de alteração de CVS indica se o mapeamento de ID de subimagem pode ser alterado dentro de uma sequência de vídeo codificada (CVS) do fluxo de bits.
[0019] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o fluxo de bits compreende um fluxo de bits mesclado e em que o mapeamento de ID de subimagem alterou dentro da CVS do fluxo de bits.
[0020] Um terceiro aspecto refere-se a um dispositivo de decodificação, compreendendo um receptor configurado para receber um fluxo de bits de vídeo incluindo um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS) e uma pluralidade de subimagens associadas a um mapeamento de identificador (ID) de subimagem, em que o SPS inclui um indicador SPS; uma memória acoplada ao receptor, a memória armazenando instruções; e um processador acoplado à memória, o processador configurado para executar as instruções para fazer com que o dispositivo de decodificação determine se o indicador SPS tem um primeiro valor ou um segundo valor, em que o indicador SPS tendo o primeiro valor especifica que o mapeamento de ID de subimagem é sinalizado no SPS e em que o indicador SPS tendo o segundo valor especifica que o mapeamento de ID de subimagem é sinalizado no PPS; obter o mapeamento de ID de subimagem do SPS quando o indicador SPS tiver o primeiro valor e do PPS quando o indicador SPS tiver o segundo valor; e decodificar a pluralidade de subimagens usando o mapeamento de ID de subimagem.
[0021] O dispositivo de decodificação fornece técnicas que garantem a sinalização eficiente de identificadores (IDs) de subimagem mesmo quando os IDs de subimagem alteram dentro da sequência de vídeo codificada (CVS) em cenários de aplicação envolvendo extração de subfluxo de bits e mesclagem de subfluxo de bits. A sinalização eficiente é alcançada definindo indicadores no conjunto de parâmetros de sequência (SPS) ou no conjunto de parâmetros de imagem (SPS) para indicar se os IDs de subimagem na CVS podem alterar e, em caso afirmativo, onde os IDs de subimagem estão localizados. Isso reduz a redundância e aumenta a eficiência de codificação. Assim, o codificador/decodificador (também conhecido como “codec”) na codificação de vídeo é aprimorado em relação aos codecs atuais. Na prática, o processo de codificação de vídeo aprimorado oferece ao usuário uma melhor experiência de usuário quando os vídeos são enviados, recebidos e/ou visualizados.
[0022] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o indicador SPS tem o primeiro valor quando o indicador PPS tem o segundo valor, em que o indicador SPS tem o segundo valor quando o indicador PPS tem o primeiro valor e em que o primeiro valor é um e o segundo valor é zero.
[0023] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o SPS inclui um segundo indicador SPS e em que o segundo indicador SPS especifica se o mapeamento de subimagem é explicitamente sinalizado no SPS ou no PPS.
[0024] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o fluxo de bits compreende ainda um indicador de alteração de sequência de vídeo codificada (CVS) e em que o indicador de alteração de CVS indica se o mapeamento de ID de subimagem pode ser alterado dentro de uma sequência de vídeo codificada (CVS) do fluxo de bits.
[0025] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o fluxo de bits compreende um fluxo de bits mesclado e em que o mapeamento de ID de subimagem alterou dentro da CVS do fluxo de bits.
[0026] Um quarto aspecto refere-se a um dispositivo de codificação, compreendendo uma memória contendo instruções; um processador acoplado à memória, o processador configurado para implementar as instruções para fazer com que o dispositivo de codificação codifique um fluxo de bits incluindo um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS) e uma pluralidade de subimagens associadas a um mapeamento de identificador (ID) de subimagem, em que o SPS inclui um indicador SPS; definir o indicador SPS para um primeiro valor quando o mapeamento de ID de subimagem é sinalizado no SPS e para um segundo valor quando o mapeamento de ID de subimagem é sinalizado no PPS; definir um indicador PPS no PPS para o primeiro valor quando o mapeamento de ID de subimagem é sinalizado no PPS e para o segundo valor quando o mapeamento de ID de subimagem não é sinalizado no PPS; e um transmissor acoplado ao processador, o transmissor configurado para transmitir o fluxo de bits em direção a um decodificador de vídeo.
[0027] O dispositivo de codificação fornece técnicas que garantem a sinalização eficiente de identificadores (IDs) de subimagem mesmo quando os IDs de subimagem alteram dentro da sequência de vídeo codificada (CVS) em cenários de aplicação envolvendo extração de subfluxo de bits e mesclagem de subfluxo de bits. A sinalização eficiente é alcançada definindo indicadores no conjunto de parâmetros de sequência (SPS) ou no conjunto de parâmetros de imagem (SPS) para indicar se os IDs de subimagem na CVS podem alterar e, em caso afirmativo, onde os IDs de subimagem estão localizados. Isso reduz a redundância e aumenta a eficiência de codificação. Assim, o codificador/decodificador (também conhecido como “codec”) na codificação de vídeo é aprimorado em relação aos codecs atuais. Na prática, o processo de codificação de vídeo aprimorado oferece ao usuário uma melhor experiência de usuário quando os vídeos são enviados, recebidos e/ou visualizados.
[0028] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o indicador SPS tem o primeiro valor quando o indicador PPS tem o segundo valor e em que o indicador SPS tem o segundo valor quando o indicador PPS tem o primeiro valor.
[0029] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o primeiro valor é um e o segundo valor é zero.
[0030] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o fluxo de bits compreende ainda um indicador de alteração de sequência de vídeo codificada (CVS) e em que o indicador de alteração de CVS indica se o mapeamento de ID de subimagem pode ser alterado dentro de uma sequência de vídeo codificada (CVS) do fluxo de bits.
[0031] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o ID PPS especifica um valor de um segundo ID PPS para um PPS em uso e em que o segundo ID PPS identifica o PPS para referência pelos elementos de sintaxe.
[0032] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece que o fluxo de bits compreende um fluxo de bits mesclado e em que o mapeamento de ID de subimagem alterou dentro da CVS do fluxo de bits.
[0033] Um quinto aspecto refere-se a um aparelho de codificação. O aparelho de codificação inclui um receptor configurado para receber uma imagem para codificar ou para receber um fluxo de bits para decodificar; um transmissor acoplado ao receptor, o transmissor configurado para transmitir o fluxo de bits para um decodificador ou para transmitir uma imagem decodificada para uma tela de exibição; uma memória acoplada a pelo menos um dentre o receptor ou o transmissor, a memória configurada para armazenar instruções; e um processador acoplado à memória, o processador configurado para executar as instruções armazenadas na memória para realizar qualquer um dos métodos divulgados neste documento.
[0034] O aparelho de codificação fornece técnicas que garantem a sinalização eficiente de identificadores (IDs) de subimagem mesmo quando os IDs de subimagem alteram dentro da sequência de vídeo codificada (CVS) em cenários de aplicação envolvendo extração de subfluxo de bits e mesclagem de subfluxo de bits. A sinalização eficiente é alcançada definindo indicadores no conjunto de parâmetros de sequência (SPS) ou no conjunto de parâmetros de imagem (SPS) para indicar se os IDs de subimagem na CVS podem alterar e, em caso afirmativo, onde os IDs de subimagem estão localizados. Isso reduz a redundância e aumenta a eficiência de codificação. Assim, o codificador/decodificador (também conhecido como “codec”) na codificação de vídeo é aprimorado em relação aos codecs atuais. Na prática, o processo de codificação de vídeo aprimorado oferece ao usuário uma melhor experiência de usuário quando os vídeos são enviados, recebidos e/ou visualizados.
[0035] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece uma tela de exibição configurada para exibir uma imagem decodificada.
[0036] Um sexto aspecto refere-se a um sistema. O sistema inclui um codificador; e um decodificador em comunicação com o codificador, em que o codificador ou o decodificador inclui o dispositivo de decodificação, o dispositivo de codificação ou o aparelho de codificação divulgado neste documento.
[0037] O sistema fornece técnicas que garantem a sinalização eficiente de identificadores (IDs) de subimagem mesmo quando os IDs de subimagem alteram dentro da sequência de vídeo codificada (CVS) em cenários de aplicação envolvendo extração de subfluxo de bits e mesclagem de subfluxo de bits. A sinalização eficiente é alcançada definindo indicadores no conjunto de parâmetros de sequência (SPS) ou no conjunto de parâmetros de imagem (SPS) para indicar se os IDs de subimagem na CVS podem alterar e, em caso afirmativo, onde os IDs de subimagem estão localizados. Isso reduz a redundância e aumenta a eficiência de codificação. Assim, o codificador/decodificador (também conhecido como “codec”) na codificação de vídeo é aprimorado em relação aos codecs atuais. Na prática, o processo de codificação de vídeo aprimorado oferece ao usuário uma melhor experiência de usuário quando os vídeos são enviados, recebidos e/ou visualizados.
[0038] Um sétimo aspecto refere-se a um meio para codificação. Os meios para codificação incluem meios de recebimento configurados para receber uma imagem para codificar ou para receber um fluxo de bits para decodificar; meios de transmissão acoplados aos meios de recebimento, os meios de transmissão configurados para transmitir o fluxo de bits para um meio de decodificação ou para transmitir uma imagem decodificada para um meio de exibição; meios de armazenamento acoplados a pelo menos um dos meios de recebimento ou os meios de transmissão, os meios de armazenamento configurados para armazenar instruções; e meios de processamento acoplados aos meios de armazenamento, os meios de processamento configurados para executar as instruções armazenadas nos meios de armazenamento para realizar qualquer um dos métodos divulgados neste documento.
[0039] Os meios para codificação fornecem técnicas que garantem a sinalização eficiente de identificadores (IDs) de subimagem mesmo quando os IDs de subimagem alteram dentro da sequência de vídeo codificada (CVS) em cenários de aplicação envolvendo extração de subfluxo de bits e mesclagem de subfluxo de bits. A sinalização eficiente é alcançada definindo indicadores no conjunto de parâmetros de sequência (SPS) ou no conjunto de parâmetros de imagem (SPS) para indicar se os IDs de subimagem na CVS podem alterar e, em caso afirmativo, onde os IDs de subimagem estão localizados. Isso reduz a redundância e aumenta a eficiência de codificação. Assim, o codificador/decodificador (também conhecido como “codec”) na codificação de vídeo é aprimorado em relação aos codecs atuais. Na prática, o processo de codificação de vídeo aprimorado oferece ao usuário uma melhor experiência de usuário quando os vídeos são enviados, recebidos e/ou visualizados.
[0040] Para fins de clareza, qualquer uma das modalidades anteriores pode ser combinada com qualquer uma ou mais das outras modalidades anteriores para criar uma nova modalidade dentro do escopo da presente divulgação.
[0041] Estas e outras características serão mais claramente compreendidas a partir da descrição detalhada seguinte tomada em conjunto com os desenhos e reivindicações anexos.
BREVE DESCRIÇÃO DOS DESENHOS
[0042] Para uma compreensão mais completa desta divulgação, é feita agora referência à breve descrição seguinte, tomada em conexão com os desenhos anexos e a descrição detalhada, em que numerais de referência semelhantes representam partes semelhantes.
[0043] A FIG. 1 é um fluxograma de um método de exemplo de codificação de um sinal de vídeo.
[0044] A FIG. 2 é um diagrama esquemático de um sistema de codificação e decodificação (codec) de exemplo para codificação de vídeo.
[0045] A FIG. 3 é um diagrama esquemático que ilustra um codificador de vídeo de exemplo.
[0046] A FIG. 4 é um diagrama esquemático que ilustra um decodificador de vídeo de exemplo.
[0047] A FIG. 5 é um diagrama esquemático que ilustra um fluxo de bits de exemplo contendo uma sequência de vídeo codificada.
[0048] As FIGS. 6A-6E ilustram um mecanismo de exemplo para criar uma trilha extratora para combinar subimagens de múltiplas resoluções de diferentes fluxos de bits em uma única imagem para uso em aplicações de realidade virtual (VR).
[0049] As FIGS. 7A-7E ilustram um mecanismo de exemplo para atualizar a trilha extratora com base em uma alteração na orientação de visualização em aplicações de VR.
[0050] A FIG. 8 é uma modalidade de um método de decodificação de um fluxo de bits de vídeo codificado.
[0051] A FIG. 9 é uma modalidade de um método de codificação de um fluxo de bits de vídeo codificado.
[0052] A FIG. 10 é um diagrama esquemático de um dispositivo de codificação de vídeo.
[0053] A FIG. 11 é um diagrama esquemático de uma modalidade de um meio para codificação.
DESCRIÇÃO DETALHADA
[0054] Deve ser entendido desde o início que, embora uma implementação ilustrativa de uma ou mais modalidades seja fornecida abaixo, os sistemas e / ou métodos divulgados podem ser implementados usando qualquer número de técnicas, sejam atualmente conhecidas ou existentes. A divulgação não deve, de forma alguma, ser limitada às implementações, desenhos e técnicas ilustrativos ilustrados abaixo, incluindo os projetos e implementações exemplares ilustrados e descritos neste documento, mas pode ser modificada dentro do escopo das reivindicações anexas, juntamente com seu escopo completo de equivalentes.
[0055] Os termos a seguir são definidos como segue, a menos que sejam usados em um contexto contrário neste documento. Especificamente, as seguintes definições destinam- se a fornecer clareza adicional à presente divulgação. No entanto, os termos podem ser descritos de forma diferente em diferentes contextos. Consequentemente, as seguintes definições devem ser consideradas como um suplemento e não devem ser consideradas como limitantes de quaisquer outras definições de descrições fornecidas para tais termos neste documento.
[0056] Um fluxo de bits é uma sequência de bits incluindo dados de vídeo que são comprimidos para transmissão entre um codificador e um decodificador. Um codificador é um dispositivo configurado para empregar processos de codificação para compactar dados de vídeo em um fluxo de bits. Um decodificador é um dispositivo configurado para empregar processos de decodificação para reconstruir dados de vídeo de um fluxo de bits para exibição. Uma imagem é um arranjo de amostras de luma e/ou um arranjo de amostras de croma que criam um quadro ou um campo do mesmo. Uma imagem que está sendo codificada ou decodificada pode ser chamada de imagem atual para maior clareza da discussão. Uma imagem de referência é uma imagem que contém amostras de referência que podem ser usadas ao codificar outras imagens por referência de acordo com a predição inter e/ou predição intercamada. Uma lista de imagens de referência é uma lista de imagens de referência usadas para predição inter e/ou predição intercamada. Alguns sistemas de codificação de vídeo utilizam duas listas de imagens de referência, as quais podem ser denotadas como lista de imagens de referência um e lista de imagens de referência zero. Uma estrutura de lista de imagens de referência é uma estrutura de sintaxe endereçável que contém múltiplas listas de imagens de referência. A predição inter é um mecanismo de codificação de amostras de uma imagem atual por referência para amostras indicadas em uma imagem de referência que é diferente da imagem atual onde a imagem de referência e a imagem atual estão na mesma camada. Uma entrada de estrutura de lista de imagens de referência é uma localização endereçável em uma estrutura de lista de imagens de referência que indica uma imagem de referência associada a uma lista de imagens de referência. Um cabeçalho de fatia é uma parte de uma fatia codificada que contém elementos de dados pertencentes a todos os dados de vídeo dentro de um bloquete representado na fatia. Um conjunto de parâmetros de sequência (SPS) é um conjunto de parâmetros que contém dados relacionados a uma sequência de imagens. Um conjunto de parâmetros de imagem (PPS) é uma estrutura de sintaxe que contém elementos de sintaxe que se aplicam a zero ou mais imagens codificadas inteiras conforme determinado por um elemento de sintaxe encontrado em cada cabeçalho de imagem.
[0057] Um indicador é uma variável ou elemento de sintaxe de bit único que pode assumir um dos dois valores possíveis: 0 e 1. Uma subimagem é uma região retangular de uma ou mais fatias dentro de uma imagem. Um identificador (ID) de subimagem é um número, letra ou outro indício que identifica exclusivamente uma subimagem. Os IDs de subimagem (também conhecidos como identificadores de bloquete) são usados para identificar subimagens específicas usando um índice de subimagem, o qual pode ser referido neste documento como um mapeamento de ID de subimagem. Dito de outra forma, o mapeamento de ID de subimagem é uma tabela que fornece um mapeamento um para um entre uma lista de índices de subimagem e IDs de subimagem. Ou seja, um mapeamento de ID de subimagem fornece um ID de subimagem distinto para cada subimagem.
[0058] Uma unidade de acesso (AU) é um conjunto de uma ou mais imagens codificadas associadas ao mesmo tempo de exibição (por exemplo, a mesma contagem de ordem de imagem) para saída de um armazenamento temporário de imagem decodificada (DPB) (por exemplo, para exibição para um usuário). Um delimitador de unidade de acesso (AUD) é um indicador ou estrutura de dados usado para indicar o início de uma AU ou a fronteira entre AUs. Uma sequência de vídeo decodificada é uma sequência de imagens que foram reconstruídas por um decodificador em preparação para exibição para um usuário.
[0059] Uma CVS é uma sequência de unidades de acesso (AUs) que incluem, em ordem de decodificação, uma AU de início de sequência de vídeo codificada (CVSS), seguida por zero ou mais AUs que não são AUs CVSS, incluindo todas as AUs subsequentes mas não incluindo qualquer AU subsequente que seja uma AU CVSS. Uma AU CVSS é uma AU na qual há uma unidade de predição (PU) para cada camada especificada pelo conjunto de parâmetros de vídeo (VPS) e a imagem codificada em cada PU é uma imagem de CLVSS. Em uma modalidade, cada imagem está dentro de uma AU. Uma PU é um conjunto de unidades de Camada de Abstração de Rede (NAL) que estão associadas umas às outras de acordo com uma regra de classificação especificada, são consecutivas em ordem de decodificação e contêm exatamente uma imagem codificada.
[0060] As seguintes siglas são usadas neste documento: Filtro de Circuito Adaptativo (ALF), 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), Armazenamento temporário de imagem decodificada (DPB), Atualização de decodificação instantânea (IDR), Ponto de Acesso Intra-Aleatório (IRAP), Equipe Conjunta de Especialistas em Vídeo (JVET), Bit Menos Significativo (LSB), Bit Mais Significativo (MSB), Conjunto de Bloquetes 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), Conjunto de Parâmetros de Imagem (PPS), Payload de sequência de bytes brutos (RBSP), Deslocamento Adaptativo de Amostra (SAO), Conjunto de Parâmetros de Sequência (SPS), Predição de Vetor de Movimento Temporal (TMVP), Codificação de Vídeo Versátil (VVC), e Versão de Trabalho (WD).
[0061] Muitas técnicas de compressão de vídeo podem ser empregadas para reduzir o tamanho dos arquivos de vídeo com perda mínima de dados. Por exemplo, as técnicas de compressão de vídeo podem incluir a realização de predição espacial (por exemplo, intraimagem) e/ou predição temporal (por exemplo, interimagem) para reduzir ou remover a redundância de dados em sequências de vídeo. Para codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, uma imagem de vídeo ou uma porção de uma imagem de vídeo) pode ser particionada em blocos de vídeo, que também podem ser chamados de 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. Blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia de predição unidirecional (P) ou predição bidirecional (B) intercodificada de uma imagem podem ser codificados empregando predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e/ou imagens, e as imagens de referência podem ser referidas como quadros de referência e/ou imagens de referência. A predição espacial ou temporal resulta em um bloco preditivo representando um bloco de imagem. Os dados residuais representam as diferenças de pixel entre o bloco de imagem original e o bloco preditivo. Consequentemente, bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco preditivo e os dados residuais indicando a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação 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. Estes resultam em coeficientes de transformada residuais, que podem ser quantizados. Os coeficientes de transformada quantizados podem inicialmente ser dispostos em um arranjo bidimensional. Os coeficientes de transformada quantizados podem ser varridos para produzir um vetor unidimensional de coeficientes de transformada. A codificação por entropia pode ser aplicada para alcançar ainda mais compressão. Tais técnicas de compressão de vídeo são discutidas em mais detalhes abaixo.
[0062] Para garantir que um vídeo codificado possa ser decodificado com precisão, o vídeo é codificado e decodificado de acordo com os padrões de codificação de vídeo correspondentes. Os padrões de codificação de vídeo incluem Setor de Padronização de União de Telecomunicação Internacional (ITU) (ITU-T) H.261, Grupo de Especialistas em Imagens 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 da Organização Internacional de Padronização / Comissão Eletrotécnica Internacional (ISO / IEC), 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 como Codificação de Vídeo Escalonável (SVC), Codificação de Vídeo de Multivisualização (MVC) e Codificação de Vídeo de Multivisualização mais Profundidade (MVC+D), e AVC tridimensional (3D) (3D-AVC). HEVC inclui extensões como HEVC escalonável (SHVC), HEVC de Multivisualização (MV-HEVC) e HEVC 3D (3D-HEVC).
[0063] Há também um novo padrão de codificação de vídeo, chamado Codificação de Vídeo Versátil (VVC), sendo desenvolvido pela equipe conjunta de especialistas em vídeo (JVET) da ITU-T e ISO/IEC. Embora o padrão VVC tenha diversas versões de trabalho, uma Versão de Trabalho (WD) do VVC em particular, a saber, B. Bross, J. Chen e S. Liu, “Codificação de Vídeo Versátil (Versão 5)”, JVET-N1001-v3, 13a Reunião JVET, 27 de março de 2019 (Versão de VVC 5) (B. Bross, J. Chen, and S. Liu, “Versatile Video Coding (Draft 5),” JVET- N1001-v3, 13th JVET Meeting, March 27, 2019 (VVC Draft 5)) é referenciada neste documento.
[0064] O HEVC inclui quatro esquemas de particionamento de imagem diferentes, ou seja, fatias regulares, fatias dependentes, bloquetes e Processamento Paralelo de Frente de Onda (WPP), que podem ser aplicados para correspondência de tamanho de Unidade de Transferência Máxima (MTU), processamento paralelo e atraso de ponta a ponta reduzido.
[0065] As fatias regulares são semelhantes às do H.264/AVC. Cada fatia regular é encapsulada em sua própria unidade NAL, e a predição na imagem (predição intra amostra, predição de informação de movimento, predição de modo de codificação) e dependência de codificação por entropia entre as fronteiras da fatia são desabilitadas. Assim, uma fatia regular pode ser reconstruída independentemente de outras fatias regulares dentro da mesma imagem (embora ainda possa haver interdependências devido a operações de filtragem de circuito).
[0066] A fatia regular é a única ferramenta que pode ser usada para paralelização que também está disponível, de forma praticamente idêntica, em H.264/AVC. A paralelização regular baseada em fatia não requer muita comunicação interprocessadores ou internúcleos (exceto para compartilhamento de dados interprocessadores ou internúcleos para compensação de movimento ao decodificar uma imagem codificada de forma preditiva, a qual normalmente é muito mais pesada que compartilhamento de dados interprocessadores ou internúcleos devido à predição na imagem). No entanto, pela mesma razão, o uso de fatias regulares pode incorrer em um overhead de codificação substancial devido ao custo de bits do cabeçalho de fatia e à falta de predição nas fronteiras de fatia. Além disso, as fatias regulares (em contraste com as outras ferramentas mencionadas abaixo) também servem como o mecanismo chave para o particionamento de fluxo de bits para corresponder aos requisitos de tamanho de MTU, devido à independência na imagem das fatias regulares e que cada fatia regular é encapsulada em sua própria unidade NAL. Em muitos casos, a meta de paralelização e a meta de correspondência de tamanho de MTU colocam demandas contraditórias para a disposição de fatia em uma imagem. A constatação desta situação levou ao desenvolvimento das ferramentas de paralelização mencionadas abaixo.
[0067] As fatias dependentes têm cabeçalhos de fatia curtos e permitem o particionamento do fluxo de bits nas fronteiras do bloco de árvore sem quebrar nenhuma predição na imagem. Basicamente, as fatias dependentes fornecem fragmentação de fatias regulares em várias unidades NAL para fornecer atraso de ponta a ponta reduzido, permitindo que uma parte de uma fatia regular seja enviada antes que a codificação de toda a fatia regular seja concluída.
[0068] No WPP, a imagem é particionada em linhas únicas de blocos de árvore de codificação (CTBs). A decodificação e a predição por entropia podem usar dados de CTBs em outras partições. O processamento paralelo é possível através da decodificação paralela de linhas de CTB, onde o início da decodificação de uma linha de CTB é atrasado em dois CTBs, para garantir que os dados relacionados a um CTB acima e à direita do CTB do assunto estejam disponíveis antes do CTB de assunto estar sendo decodificado. Usando este início defasado (o qual parece como uma frente de onda quando representado graficamente), a paralelização é possível com tantos processadores/núcleos quanto as linhas de CTB que a imagem contém. Como a predição na imagem entre linhas de blocos de árvore vizinhos dentro de uma imagem é permitida, a comunicação necessária interprocessador/internúcleo para habilitar a predição na imagem pode ser substancial. O particionamento de WPP não resulta na produção de unidades NAL adicionais em comparação com quando não é aplicado, portanto, o WPP não é uma ferramenta para correspondência de tamanho de MTU. No entanto, se a correspondência de tamanho de MTU for necessária, fatias regulares podem ser usadas com WPP, com certo overhead de codificação.
[0069] Bloquetes definem fronteiras horizontais e verticais que particionam uma imagem em colunas e linhas de bloquetes. A ordem de varredura de CTBs é alterada para ser local dentro de um bloquete (na ordem de uma varredura de raster de CTB de um bloquete), antes de decodificar o CTB superior esquerdo do próximo bloquete na ordem de varredura de raster de bloquete de uma imagem. Semelhante às fatias regulares, os bloquetes quebram as dependências de predição na imagem, assim como as dependências de decodificação por entropia. No entanto, eles não precisam ser incluídos em unidades NAL individuais (o mesmo que WPP nesse aspecto); portanto, os bloquetes não podem ser usados para correspondência de tamanho de MTU. Cada bloquete pode ser processado por um processador/núcleo, e a comunicação interprocessador/internúcleo necessária para predição na imagem entre unidades de processamento decodificando bloquetes vizinhos é limitada a transferir o cabeçalho de fatia compartilhado nos casos onde uma fatia abrange mais de um bloquete, e compartilhamento relacionado à filtragem de circuito de amostras e metadados reconstruídos. Quando mais de um bloquete ou segmento WPP é incluído em uma fatia, o deslocamento de bytes do ponto de entrada para cada bloquete ou segmento WPP diferente do primeiro na fatia é sinalizado no cabeçalho de fatia.
[0070] Para simplificar, as restrições na aplicação dos quatro esquemas de particionamento de imagem diferentes foram especificadas no HEVC. Uma determinada sequência de vídeo codificada não pode incluir ambos os bloquetes e frentes de onda para a maioria dos perfis especificados em HEVC. Para cada fatia e bloquete, uma ou ambas as condições a seguir devem ser atendidas: 1) todos os blocos de árvore codificados em uma fatia pertencem ao mesmo bloquete; 2) todos os blocos de árvore codificados em um bloquete pertencem à mesma fatia. Finalmente, um segmento de frente de onda contém exatamente uma linha de CTB e, quando o WPP está em uso, se uma fatia começa dentro de uma linha de CTB, ela deve terminar na mesma linha de CTB.
[0071] Uma emenda recente ao HEVC é especificada no documento de saída JCT-VC JCTVC-AC1005, J. Boyce, A. Ramasubramonian, R. Skupin, GJ Sullivan, A. Tourapis, Y.-K. Wang (editores), "Informação de Aprimoramento Suplementar Adicional de HEVC (Versão 4)", 24 de outubro de 2017, disponível publicamente em: http://phenix.int- evry.fr/jct/doc_end_user/documents/29_Macau/wg11/JCTVC- AC1005-v2.zip (JCT-VC output document JCTVC-AC1005, J. Boyce, A. Ramasubramonian, R. Skupin, G. J. Sullivan, A. Tourapis, Y.-K. Wang (editors), "HEVC Additional Supplemental Enhancement Information (Draft 4)," Oct. 24, 2017, publically available at: http://phenix.int- evry.fr/jct/doc_end_user/documents/29_Macau/wg11/JCTVC- AC1005-v2.zip). Com esta emenda incluída, o HEVC especifica três mensagens de informação de aprimoramento suplementar (SEI) MCTS, nomeadamente mensagem SEI de MCTSs temporais, mensagem SEI de conjunto de informações de extração de MCTSs e mensagem SEI de aninhamento de informações de extração de MCTSs.
[0072] A mensagem SEI de MCTSs temporais indica a existência de MCTSs no fluxo de bits e sinaliza os MCTSs. Para cada MCTS, os vetores de movimento são restritos a apontar para localizações de amostra completa dentro do MCTS e para localizações de amostra fracionária que requerem apenas localizações de amostra completa dentro do MCTS para interpolação, e não é permitido o uso de candidatos a vetor de movimento para predição de vetor de movimento temporal derivado de blocos fora do MCTS. Desta forma, cada MCTS pode ser decodificado independentemente sem a existência de bloquetes não incluídos no MCTS.
[0073] A mensagem SEI de conjunto de informações de extração de MCTSs fornece informações suplementares que podem ser usadas na extração de subfluxo de bits MCTS (especificada como parte da semântica da mensagem SEI) para gerar um fluxo de bits em conformidade para um conjunto de MCTS. A informação consiste em um número de conjuntos de informações de extração, cada um definindo um número de conjuntos de MCTS e contendo bytes RBSP dos conjuntos de parâmetros de vídeo de substituição (VPSs), SPSs e 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, os conjuntos de parâmetros (VPSs, SPSs e PPSs) precisam ser reescritos ou substituídos, os cabeçalhos de fatia precisam ser ligeiramente atualizados porque um ou todos os endereços de fatia relacionados aos elementos de sintaxe (incluindo first_slice_segment_in_pic_flag e slice_segment_address) normalmente precisariam ter valores diferentes.
[0074] Na última especificação de versão de VVC, uma imagem pode ser particionada em múltiplas subimagens, cada uma cobrindo uma região retangular e contendo um número inteiro de fatias completas. O particionamento de subimagem persiste em todas as imagens dentro de uma sequência de vídeo codificada (CVS), e a informação de particionamento (ou seja, as posições e tamanhos de subimagem) é sinalizada no SPS. Uma subimagem pode ser indicada como sendo codificada sem usar valores de amostra de qualquer outra subimagem para compensação de movimento.
[0075] Na contribuição JVET JVET-O0141, a qual está disponível publicamente em: http://phenix.it- sudparis.eu/jvet/doc_end_user/documents/13_Marrakech/wg11/J VET-M0261-v1.zip, o projeto da subimagem é semelhante ao da especificação de versão de VVC mais recente com algumas diferenças, uma das quais é a sinalização explícita de um ID de subimagem para cada subimagem no SPS, bem como a sinalização do ID de subimagem em cada cabeçalho de fatia para habilitar a extração de subfluxo de bits com base em subimagem sem a necessidade de alterar as unidades NAL de fatia codificadas. Nesta abordagem, o ID da subimagem para cada subimagem permanece inalterado em todas as imagens em uma CVS.
[0076] Durante as discussões anteriores, foi mencionado que uma abordagem diferente para sinalização de IDs de subimagem deve ser usada para também habilitar a mesclagem de subfluxo de bits com base em subimagem sem a necessidade de alterar as unidades NAL de fatia codificadas.
[0077] Por exemplo, e como será explicado mais detalhadamente abaixo, no streaming de vído de 360 graus dependente da janela de visualização, o cliente seleciona quais subimagens são recebidas e mescladas ao fluxo de bits a ser decodificado. Quando a orientação de visualização é alterada, alguns valores de ID de subimagem podem permanecer os mesmos enquanto outros valores de ID de subimagem são alterados em comparação com os valores de ID de subimagem recebidos antes da alteração de orientação de visualização. Assim, os IDs de subimagem que o decodificador recebe no fluxo de bits mesclado são alterados quando a orientação de visualização é alterada.
[0078] Uma abordagem que foi considerada é a seguinte.
[0079] As posições e tamanhos de subimagem são indicados no SPS usando, por exemplo, a sintaxe na especificação de versão de VVC mais recente. São atribuídos índices de subimagens (0 a N-1, onde N é o número de subimagens). O mapeamento de ID de subimagem para índice de subimagem reside no PPS porque esse mapeamento pode precisar ser alterado no meio de uma CVS. Isso pode ser um circuito i = 0 a N-1, fornecendo o subpicture_id[ i ] que mapeia para o índice de subimagem i. Esse mapeamento de ID de subimagem precisa ser reescrito pelo cliente quando o cliente seleciona um novo conjunto de subimagens a serem decodificadas. O cabeçalho de fatia contém o ID de subimagem (por exemplo, subpicture_id), que o codificador selecionou (e isso não precisa ser reescrito na mesclagem de subfluxo de bits).
[0080] Infelizmente, existem problemas com as abordagens de sinalização de identificação de subimagem existentes. Muitos cenários de aplicações que usam codificação de vídeo baseada em subimagem envolvem extração de subfluxo de bits, mas não mesclagem de subfluxo de bits. Por exemplo, cada subfluxo de bits extraído pode ser decodificado por sua própria instância de decodificador. Como tal, não há necessidade de mesclar os subfluxos de bits extraídos em um fluxo de bits a ser decodificado por apenas uma instância do decodificador. Nesses cenários, o ID de subimagem para cada subimagem não será alterado em uma CVS. Assim, os IDs de subimagem podem ser sinalizados no SPS. A sinalização de tais IDs de subimagem no SPS em vez do PPS é benéfica tanto do ponto de vista de economia de bits quanto do ponto de vista de negociação de sessão.
[0081] Em cenários de aplicação envolvendo extração de subfluxo de bits e mesclagem de subfluxo de bits, os IDs de subimagem não alteram em uma CVS nos fluxos de bits originais. Portanto, a sinalização de IDs de subimagem no SPS permite o uso de IDs de subimagem no SPS e nos cabeçalhos de fatia, o que é útil para a parte de extração de subfluxo de bits do processo. No entanto, essa abordagem só é viável quando os IDs de subimagem não são alterados dentro da CVS no fluxo de bits original.
[0082] São divulgadas neste documento técnicas que garantem a sinalização eficiente de identificadores (IDs) de subimagem mesmo quando os IDs de subimagem alteram dentro da sequência de vídeo codificada (CVS) em cenários de aplicação envolvendo extração de subfluxo de bits e mesclagem de subfluxo de bits. A sinalização eficiente é alcançada definindo indicadores no conjunto de parâmetros de sequência (SPS) ou no conjunto de parâmetros de imagem (SPS) para indicar se os IDs de subimagem na CVS podem alterar e, em caso afirmativo, onde os IDs de subimagem estão localizados. Isso reduz a redundância e aumenta a eficiência de codificação. Assim, o codificador/decodificador (também conhecido como “codec”) na codificação de vídeo é aprimorado em relação aos codecs atuais. Na prática, o processo de codificação de vídeo aprimorado oferece ao usuário uma melhor experiência de usuário quando os vídeos são enviados, recebidos e/ou visualizados.
[0083] A FIG. 1 é um fluxograma de um método operacional 100 de exemplo 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 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, reduzindo o overhead de largura de banda associada. O decodificador então decodifica 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 espelha o processo de codificação para permitir que o decodificador reconstrua consistentemente o sinal de vídeo.
[0084] Na etapa 101, o sinal de vídeo é introduzido no codificador. Por exemplo, o sinal de vídeo pode ser um arquivo de vídeo não comprimido armazenado na memória. Como outro exemplo, o arquivo de vídeo pode ser capturado por um dispositivo de captura de vídeo, como uma câmera de vídeo, e codificado para suportar streaming ao vivo do vídeo. O arquivo de vídeo pode incluir um componente de áudio e um componente de vídeo. O componente de vídeo contém uma série de quadros de imagem que, quando vistos em sequência, dão a impressão visual de movimento. Os quadros contêm pixels que são expressos em termos de luz, referidos neste documento como componentes de luma (ou amostras de luma), e cor, o qual é referido como componentes de croma (ou amostras de cores). Em alguns exemplos, os quadros também podem conter valores de profundidade para suportar a visualização tridimensional.
[0085] Na etapa 103, o vídeo é particionado em blocos. O particionamento inclui subdividir os pixels em cada quadro em blocos quadrados 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 primeiro ser dividido em unidades de árvore de codificação (CTUs), as quais são blocos de 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 recursivamente os blocos até que sejam alcançadas configurações que suportem codificação adicional. Por exemplo, os 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, os componentes de croma de um quadro podem ser subdivididos até que os blocos individuais contenham valores de cor relativamente homogêneos. Consequentemente, os mecanismos de particionamento variam dependendo do conteúdo dos quadros de vídeo.
[0086] 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 podem ser empregadas. A predição inter é projetada para aproveitar do fato de que objetos em uma cena comum tendem a aparecer em quadros sucessivos. Consequentemente, um bloco representando um objeto em um quadro de referência não precisa ser descrito repetidamente em quadros adjacentes. Especificamente, um objeto, como uma tabela, pode permanecer em uma posição constante em múltiplos quadros. Portanto, a tabela é descrita uma vez e os quadros adjacentes podem se referir ao quadro de referência. Mecanismos de correspondência de padrões podem ser empregados para corresponder objetos em múltiplos quadros. Além disso, objetos em movimento podem ser representados em múltiplos quadros, por exemplo, devido ao movimento do objeto ou movimento da câmera. Como um exemplo específico, um vídeo pode mostrar um automóvel que se move pela tela em 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 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 de um bloco correspondente em um quadro de referência.
[0087] A predição intra codifica blocos em um quadro comum. A predição intra aproveita o fato de que os componentes de luma e croma tendem a se agrupar em um quadro. Por exemplo, uma mancha verde em uma porção de uma árvore tende a ser posicionada adjacente a manchas verdes semelhantes. A predição intra emprega múltiplos modos de predição direcional (por exemplo, trinta e três em HEVC), um modo planar e um modo de corrente contínua (DC). Os modos direcionais indicam que um bloco atual é semelhante/igual às amostras de um bloco vizinho em uma direção correspondente. O modo planar indica que uma série de blocos ao longo de uma linha/coluna (por exemplo, um plano) podem ser interpolados com base em blocos vizinhos nas bordas da linha. O modo planar, na verdade, indica uma transição suave de luz/cor ao longo de uma linha/coluna, empregando uma inclinação relativamente constante na alteração de valores. O modo DC é empregado para suavização de fronteira e indica que um bloco é semelhante/igual a um valor médio associado a amostras de todos os blocos vizinhos associados às direções angulares dos modos de predição direcional. Consequentemente, os 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, os blocos de predição inter podem representar blocos de imagem como valores de vetor de movimento em vez dos valores reais. Em ambos os casos, 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 ainda mais o arquivo.
[0088] Na etapa 107, várias técnicas de filtragem podem ser aplicadas. No HEVC, os filtros são aplicados de acordo com um esquema de filtragem em circuito. A predição baseada em bloco discutida acima pode resultar na criação de imagens em bloco no decodificador. Além disso, o esquema de predição baseado em bloco pode codificar um bloco e, em seguida, reconstruir o bloco codificado para uso posterior como um bloco de referência. O esquema de filtragem em circuito aplica iterativamente filtros de supressão de ruído, filtros de deblocagem, filtros de circuito adaptativos e filtros de deslocamento adaptativo de amostra (SAO) aos blocos/quadros. Esses filtros atenuam esses artefatos de blocagem para que o arquivo codificado possa ser reconstruído com precisão. Além disso, esses filtros atenuam os artefatos nos blocos de referência reconstruídos para que os artefatos tenham menos probabilidade de criar artefatos adicionais nos blocos subsequentes que são codificados com base nos blocos de referência reconstruídos.
[0089] Uma vez que o sinal de vídeo foi 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 adequada do sinal de vídeo no decodificador. Por exemplo, esses dados podem incluir dados de partição, dados de predição, blocos residuais e vários indicadores que fornecem instruções de codificação ao decodificador. O fluxo de bits pode ser armazenado na memória para transmissão em direção a um decodificador mediante solicitação. O fluxo de bits também pode ser difundido e/ou multidifundido em direção a uma pluralidade de decodificadores. A criação do fluxo de bits é um processo iterativo. Consequentemente, as etapas 101, 103, 105, 107 e 109 podem ocorrer continuamente e/ou simultaneamente em muitos quadros e blocos. A ordem mostrada na FIG. 1 é apresentada para clareza e facilidade de discussão e não se destina a limitar o processo de codificação de vídeo a uma ordem específica.
[0090] 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 por entropia para converter o fluxo de bits em sintaxe e dados de vídeo correspondentes. O decodificador emprega os dados de sintaxe do fluxo de bits para determinar as partições para os quadros na etapa 111. O particionamento deve corresponder aos resultados do particionamento de bloco na etapa 103. A codificação/decodificação por entropia, como empregada na etapa 111, é agora descrita. O codificador faz muitas escolhas durante o processo de compressão, tal como selecionar esquemas de particionamento de bloco de várias escolhas possíveis com base no posicionamento espacial dos valores na(s) imagem(ns) de entrada. A sinalização das escolhas exatas pode empregar um grande número de binários. Conforme usado neste documento, um binário (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 por entropia permite que o codificador descarte quaisquer opções que claramente não sejam viáveis para um caso específico, deixando um conjunto de opções permitidas. Cada opção permitida é então atribuída a uma palavra-código. O comprimento das palavras-código é baseado no número de opções permitidas (por exemplo, um binário para duas opções, dois binários para três a quatro opções, etc.). O codificador então codifica a palavra-código para a opção selecionada. Esse esquema reduz o tamanho das palavras-código, pois as palavras-código são tão grandes quanto desejado para indicar exclusivamente uma seleção de um pequeno subconjunto de opções permitidas, em vez de indicar exclusivamente a seleção de um conjunto potencialmente grande de todas as opções possíveis. O decodificador então decodifica a seleção determinando o conjunto de opções permitidas de maneira semelhante 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.
[0091] Na etapa 113, o decodificador realiza a decodificação de bloco. Especificamente, o decodificador emprega transformadas reversas para gerar blocos residuais. Em seguida, o decodificador emprega os blocos residuais e os 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 gerados 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 por meio de codificação por entropia, conforme discutido acima.
[0092] Na etapa 115, a filtragem é realizada nos quadros do sinal de vídeo reconstruído de uma maneira semelhante à etapa 107 no codificador. Por exemplo, filtros de supressão de ruído, filtros de deblocagem, filtros de circuito adaptativos 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 para uma tela de exibição na etapa 117 para visualização por um usuário final.
[0093] A FIG. 2 é um diagrama esquemático de um sistema de codificação e decodificação (codec) 200 de exemplo para codificação de vídeo. Especificamente, o sistema de codec 200 fornece funcionalidade para suportar a implementação do método operacional 100. O sistema de codec 200 é generalizado para representar componentes empregados tanto em um codificador quanto em um decodificador. O sistema de 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, o qual resulta em um sinal de vídeo particionado 201. O sistema de codec 200 então comprime 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 sistema de codec decodificador 200 gera um sinal de vídeo de saída do fluxo de bits conforme discutido em relação às etapas 111, 113, 115 e 117 no método operacional 100. O sistema de codec 200 inclui um componente de controle de codificador geral 211, um componente de quantização e escalonamento de transformada 213, um componente de estimativa intraimagem 215, um componente de predição intraimagem 217, um componente de compensação de movimento 219, um componente de estimativa de movimento 221, um componente de escalonamento e transformada inversa 229, um componente de análise de controle de filtro 227, um componente de filtros em circuito 225, um componente de armazenamento temporário de imagem decodificada 223 e um componente de formatação de cabeçalho e codificação aritmética binária adaptativa ao contexto (CABAC) 231. Tais componentes são acoplados como mostrado. Na FIG. 2, as linhas pretas indicam o movimento dos dados a serem codificados/decodificados enquanto as linhas tracejadas indicam o movimento dos dados de controle que controlam a operação de outros componentes. Os componentes do sistema de codec 200 podem estar todos presentes no codificador. O decodificador pode incluir um subconjunto dos componentes do sistema de codec 200. Por exemplo, o decodificador pode incluir o componente de predição intraimagem 217, o componente de compensação de movimento 219, o componente de escalonamento e transformada inversa 229, o componente de filtros em circuito 225 e o componente de armazenamento temporário de imagem decodificada 223. Esses componentes são agora descritos.
[0094] 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 divisão para subdividir um bloco de pixels em blocos menores de pixels. Esses blocos podem então ser subdivididos em blocos menores. Os blocos podem ser referidos como nós na árvore de codificação. Os nós pais maiores são divididos em nós filhos menores. O número de vezes que um nó é subdividido é referido como 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 de diferença vermelha (Cr) e um(uns) bloco(s) de croma de diferença azul (Cb) juntamente com as instruções de sintaxe correspondentes para a CU. Os modos de divisão podem incluir uma árvore binária (BT), árvore tripla (TT) e uma árvore quádrupla (QT) empregada para particionar um nó em dois, três ou quatro nós filhos, respectivamente, de formas variadas, dependendo dos modos de divisã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 estimativa intraimagem 215, o componente de análise de controle de filtro 227 e o componente de estimativa de movimento 221 para compressão.
[0095] 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 as restrições de aplicação. Por exemplo, o componente de controle de codificador geral 211 gerencia a otimização da taxa de bits/tamanho do fluxo de bits contra qualidade de reconstrução. Essas decisões podem ser tomadas com base na disponibilidade de espaço de armazenamento/largura de banda e solicitações de resolução de imagem. O componente de controle de codificador geral 211 também gerencia a utilização de armazenamento temporário à luz da velocidade de transmissão para mitigar problemas underrun e overrun de armazenamento temporário. Para gerenciar esses problemas, o componente de controle de codificador geral 211 gerencia o 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. Assim, o componente de controle de codificador geral 211 controla os outros componentes do sistema de codec 200 para equilibrar a qualidade de reconstrução do sinal de vídeo com preocupações de taxa de bits. O componente de controle de codificador geral 211 cria dados de controle, os quais controlam a operação dos outros componentes. Os dados de controle também são encaminhados para o componente de formatação de cabeçalho e CABAC 231 para serem codificados no fluxo de bits para sinalizar parâmetros para decodificação no decodificador.
[0096] O sinal de vídeo particionado 201 também é enviado para o componente de estimativa de movimento 221 e o 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 estimativa 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 de codec 200 pode realizar múltiplas passagens de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0097] O componente de estimativa de movimento 221 e o componente de compensação de movimento 219 podem ser altamente integrados, mas são ilustrados separadamente para fins conceituais. A estimativa de movimento, realizada pelo componente de estimativa de movimento 221, é o processo de geração de vetores de movimento, que estimam o 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. Um bloco preditivo é um bloco que corresponde ao bloco a ser codificado, em termos de diferença de pixel. Um bloco preditivo também pode ser referido como um bloco de referência. Essa diferença de pixel pode ser determinada pela soma da diferença absoluta (SAD), soma da diferença quadrada (SSD) ou outras métricas de diferença. O 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 estimativa de movimento 221 gera vetores de movimento, PUs e TUs usando uma análise de distorção de taxa como parte de um processo de otimização de distorção de taxa. Por exemplo, o componente de estimativa 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. com as melhores características de taxa-distorção. As melhores características de taxa-distorção equilibram a qualidade da reconstrução de vídeo (por exemplo, quantidade de perda de dados por compressão) com a eficiência de codificação (por exemplo, tamanho da codificação final).
[0098] Em alguns exemplos, o sistema de codec 200 pode calcular valores para posições de pixel subinteiro de imagens de referência armazenadas no componente de armazenamento temporário de imagem decodificada 223. Por exemplo, o sistema de codec de vídeo 200 pode interpolar valores de posições de um quarto de pixel, posições de um oitavo de pixel ou outras posições de pixel fracionárias da imagem de referência. Portanto, o componente de estimativa de movimento 221 pode realizar uma pesquisa de movimento em relação às posições de pixel completas e posições de pixel fracionárias e emitir um vetor de movimento com precisão de pixel fracionário. O componente de estimativa de movimento 221 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. O componente de estimativa de movimento 221 emite o vetor de movimento calculado como dados de movimento para componente de formatação de cabeçalho e CABAC 231 para codificação e movimento para o componente de compensação de movimento 219.
[0099] 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 estimativa de movimento 221. Novamente, o componente de estimativa de movimento 221 e o componente de compensação de movimento 219 podem ser funcionalmente integrados, em alguns exemplos. Ao receber o 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 qual o vetor de movimento aponta. Um bloco de vídeo residual é então formado subtraindo os valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo atual que está sendo codificado, formando valores de diferença de pixel. Em geral, o componente de estimativa de movimento 221 realiza estimativa de movimento em relação aos componentes de luma e o componente de compensação de movimento 219 usa vetores de movimento calculados com base nos componentes de luma para ambos os componentes de croma e componentes de luma. O bloco preditivo e o bloco residual são encaminhados para o componente de quantização e escalonamento de transformada 213.
[00100] O sinal de vídeo particionado 201 também é enviado para o componente de estimativa intraimagem 215 e componente de predição intraimagem 217. Tal como acontece com o componente de estimativa de movimento 221 e o componente de compensação de movimento 219, o componente de estimativa intraimagem 215 e o componente de predição intraimagem 217 podem ser altamente integrados, mas são ilustrados separadamente para fins conceituais. O componente de estimativa intraimagem 215 e o componente de predição intraimagem 217 predizem de modo intra um bloco atual em relação aos blocos em um quadro atual, como uma alternativa à predição inter realizada pelo componente de estimativa de movimento 221 e componente de compensação de movimento 219 entre quadros, como descrito acima. Em particular, o componente de estimativa intraimagem 215 determina um modo de predição intra a ser usado para codificar um bloco atual. Em alguns exemplos, o componente de estimativa intraimagem 215 seleciona um modo de predição intra apropriado para codificar um bloco atual de múltiplos modos de predição intra testados. Os modos de predição intra selecionados são então encaminhados para o componente de formatação de cabeçalho e CABAC 231 para codificação.
[00101] Por exemplo, o componente de estimativa intraimagem 215 calcula os valores de distorção de taxa usando uma análise de distorção de taxa para os vários modos de predição intra testados e seleciona o modo de predição intra com as melhores características de taxa-distorção dentre os modos testados. A análise de distorção de taxa 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 estimativa intraimagem 215 calcula as 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 estimativa intraimagem 215 pode ser configurado para codificar blocos de profundidade de um mapa de profundidade usando um modo de modelagem de profundidade (DMM) com base na otimização de taxa-distorção (RDO).
[00102] O componente de predição intraimagem 217 pode gerar um bloco residual do bloco preditivo com base nos modos de predição intra selecionados determinados pelo componente de estimativa intraimagem 215 quando implementado em um codificador ou ler o bloco residual do fluxo de bits quando implementado em um decodificador. O bloco residual inclui a diferença de valores entre o bloco preditivo e o bloco original, representado como uma matriz. O bloco residual é então encaminhado para o componente de quantização e escalonamento de transformada 213. O componente de estimativa intraimagem 215 e o componente de predição intraimagem 217 podem operar em componentes de luma e croma.
[00103] O componente de quantização e escalonamento de transformada 213 é configurado para comprimir ainda mais 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 semelhante, ao bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficiente de transformada residuais. Transformadas de onduleta, transformadas inteiras, transformadas de subbanda ou outros tipos de transformadas também podem ser usadas. A transformada pode converter a informação residual de um domínio de valor de pixel em um domínio de transformada, 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 de transformada, por exemplo, com base na frequência. Tal escalonamento envolve aplicar um fator de escalonamento às informações residuais para que informações de frequência diferentes 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 ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. O grau de quantização pode ser modificado ajustando um parâmetro de quantização. Em alguns exemplos, o componente de quantização e escalonamento de transformada 213 pode então realizar uma varredura da matriz incluindo os coeficientes de transformada quantizados. Os coeficientes de transformada quantizados são encaminhados para o componente de formatação de cabeçalho e CABAC 231 para serem codificados no fluxo de bits.
[00104] O componente de escalonamento e transformada inversa 229 aplica uma operação reversa do componente de quantização e escalonamento de transformada 213 para suportar a estimativa de movimento. O componente de escalonamento e transformada inversa 229 aplica escalonamento inverso, transformada 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 estimativa de movimento 221 e/ou componente de compensação de movimento 219 podem calcular um bloco de referência adicionando o bloco residual de volta a um bloco preditivo correspondente para uso na estimativa de movimento de um bloco/quadro posterior. Os filtros são aplicados aos blocos de referência reconstruídos para mitigar os artefatos criados durante o escalonamento, a quantização e a transformada. Esses artefatos podem causar predição imprecisa (e criar artefatos adicionais) quando blocos subsequentes são preditos.
[00105] O componente de análise de controle de filtro 227 e o componente de filtros em circuito 225 aplicam os filtros aos blocos residuais e/ou aos blocos de imagem reconstruídos. Por exemplo, o bloco residual transformado do componente de escalonamento e transformada inversa 229 pode ser combinado com um bloco de predição correspondente do componente de predição intraimagem 217 e/ou componente de compensação de movimento 219 para reconstruir o bloco de imagem original. Os filtros podem então ser aplicados ao bloco de imagem reconstruído. Em alguns exemplos, os filtros podem ser aplicados aos blocos residuais. Tal como acontece com outros componentes na FIG. 2, o componente de análise de controle de filtro 227 e o componente de filtros em circuito 225 são altamente integrados e podem ser implementados juntos, mas são representados separadamente para fins conceituais. Os filtros aplicados aos blocos de referência reconstruídos são aplicados a regiões espaciais específicas e incluem múltiplos parâmetros para ajustar como esses 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 os parâmetros correspondentes. Tais dados são encaminhados para o componente de formatação de cabeçalho e CABAC 231 como dados de controle de filtro para codificação. O componente de filtros em circuito 225 aplica tais filtros com base nos dados de controle de filtro. Os filtros podem incluir um filtro de deblocagem, um filtro de supressão de ruído, um filtro SAO e um filtro de circuito adaptativo. Tais filtros podem ser aplicados no domínio espacial/pixel (por exemplo, em um bloco de pixel reconstruído) ou no domínio da frequência, dependendo do exemplo.
[00106] Ao operar como um codificador, o bloco de imagem reconstruído filtrado, bloco residual e/ou bloco de predição são armazenados no componente de armazenamento temporário de imagem decodificada 223 para uso posterior na estimativa de movimento conforme discutido acima. Ao operar como um decodificador, o componente de armazenamento temporário de imagem decodificada 223 armazena e encaminha os blocos reconstruídos e filtrados em direção a uma tela de exibição como parte de um sinal de vídeo de saída. O componente de armazenamento temporário 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.
[00107] O componente de formatação de cabeçalho e CABAC 231 recebe os dados dos vários componentes do sistema de codec 200 e codifica esses dados em um fluxo de bits codificado para transmissão em direção a um decodificador. Especificamente, o componente de formatação de cabeçalho e CABAC 231 gera vários cabeçalhos para codificar dados de controle, 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. Essas informações também podem incluir tabelas de índice de modo predição intra (também referidas como tabelas de mapeamento de palavra-código), definições de contextos de codificação para vários blocos, indicações de modos predição intra mais prováveis, uma indicação de informação de partição, etc. Esses dados podem ser codificados empregando codificação por entropia. Por exemplo, as informações podem ser codificadas empregando codificação de comprimento variável adaptativa ao contexto (CAVLC), CABAC, codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação por entropia de particionamento de intervalo de probabilidade (PIPE) ou outra técnica de codificação por entropia. Após a codificação por 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.
[00108] A FIG. 3 é um diagrama de blocos que ilustra um codificador de vídeo 300 de exemplo. O codificador de vídeo 300 pode ser empregado para implementar as funções de codificação do sistema de 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, o qual é substancialmente semelhante 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.
[00109] Especificamente, o sinal de vídeo particionado 301 é encaminhado para um componente de predição intraimagem 317 para predição intra. O componente de predição intraimagem 317 pode ser substancialmente semelhante ao componente de estimativa intraimagem 215 e ao componente de predição intraimagem 217. O sinal de vídeo particionado 301 também é encaminhado para um componente de compensação de movimento 321 para predição inter com base em blocos de referência em um componente de armazenamento temporário de imagem decodificada 323. O componente de compensação de movimento 321 pode ser substancialmente semelhante ao componente de estimativa de movimento 221 e ao componente de compensação de movimento 219. Os blocos de predição e blocos residuais do componente de predição intraimagem 317 e do componente de compensação de movimento 321 são encaminhados para 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 semelhante ao componente de quantização e escalonamento de transformada 213. Os blocos residuais transformados e quantizados e os blocos de predição correspondentes (juntamente com dados de controle associados) são encaminhados para um componente de codificação por entropia 331 para codificação em um fluxo de bits. O componente de codificação por entropia 331 pode ser substancialmente semelhante ao componente de formatação de cabeçalho e CABAC 231.
[00110] Os blocos residuais transformados e quantizados e/ou os blocos de predição correspondentes também são encaminhados do componente de transformada e quantização 313 para um componente de transformada inversa e quantização 329 para reconstrução em blocos de referência para uso pelo componente de compensação de movimento 321. O componente de transformada inversa e quantização 329 pode ser substancialmente semelhante ao componente de escalonamento e transformada inversa 229. Os filtros em circuito em um componente de filtros em circuito 325 também são aplicados aos blocos residuais e/ou blocos de referência reconstruídos, dependendo do exemplo. O componente de filtros em circuito 325 pode ser substancialmente semelhante ao componente de análise de controle de filtro 227 e ao componente de filtros em circuito 225. O componente de filtros em circuito 325 pode incluir múltiplos filtros conforme discutido em relação ao componente de filtros em circuito 225. Os blocos filtrados são então armazenados em um componente de armazenamento temporário de imagem decodificada 323 para uso como blocos de referência pelo componente de compensação de movimento 321. O componente de armazenamento temporário de imagem decodificada 323 pode ser substancialmente semelhante ao componente de armazenamento temporário de imagem decodificada 223.
[00111] A FIG. 4 é um diagrama de blocos que ilustra um decodificador de vídeo 400 de exemplo. O decodificador de vídeo 400 pode ser empregado para implementar as funções de decodificação do sistema de 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, 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.
[00112] O fluxo de bits é recebido por um componente de decodificação por entropia 433. O componente de decodificação por entropia 433 é configurado para implementar um esquema de decodificação por entropia, tal como codificação CAVLC, CABAC, SBAC, PIPE ou outras técnicas de codificação por entropia. Por exemplo, o componente de decodificação por entropia 433 pode empregar informações de cabeçalho para fornecer um contexto para interpretar dados codificados adicionais como palavras-código no fluxo de bits. As informações decodificadas incluem qualquer informação desejada para decodificar o sinal de vídeo, como dados de controle gerais, dados de controle de filtro, informação de partição, dados de movimento, dados de predição e coeficientes de transformada quantizados de blocos residuais. Os coeficientes de transformada quantizados são encaminhados para um componente de transformada inversa e quantização 429 para reconstrução em blocos residuais. O componente de transformada inversa e quantização 429 podem ser semelhantes ao componente de transformada inversa e quantização 329.
[00113] Os blocos residuais reconstruídos e/ou blocos de predição são encaminhados para o componente de predição intraimagem 417 para reconstrução em blocos de imagem com base em operações de predição intra. O componente de predição intraimagem 417 pode ser semelhante ao componente de estimativa intraimagem 215 e um componente de predição intraimagem 217. Especificamente, o componente de predição intraimagem 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 os dados de predição inter correspondentes são encaminhados para um componente de armazenamento temporário de imagem decodificada 423 por meio de um componente de filtros em circuito 425, os quais podem ser substancialmente semelhantes ao componente de armazenamento temporário de imagem decodificada 223 e componente de filtros em circuito 225, respectivamente. O componente de filtros em circuito 425 filtra os blocos de imagem reconstruídos, blocos residuais e/ou blocos de predição, e tal informação é armazenada no componente de armazenamento temporário de imagem decodificada 423. Blocos de imagem reconstruídos do componente de armazenamento temporário 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 semelhante ao componente de estimativa 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 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 por meio do componente de filtros em circuito 425 para o componente de armazenamento temporário de imagem decodificada 423. O componente de armazenamento temporário de imagem decodificada 423 continua a armazenar blocos de imagem reconstruídos adicionais, que podem ser reconstruídos em quadros por meio da informação de partição. Tais quadros também podem ser colocados em sequência. A sequência é emitida em direção a uma tela de exibição como um sinal de vídeo de saída reconstruído.
[00114] A FIG. 5 é um diagrama esquemático que ilustra um fluxo de bits 500 de exemplo contendo uma sequência de vídeo codificada. Por exemplo, o fluxo de bits 500 pode ser gerado por um sistema de codec 200 e/ou um codificador 300 para decodificação por um sistema de codec 200 e/ou um decodificador 400. Como 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.
[00115] O fluxo de bits 500 inclui um conjunto de parâmetros de sequência (SPS) 510, uma pluralidade de conjuntos de parâmetros de imagem (PPSs) 512, cabeçalhos de grupo de bloquetes 514 e dados de imagem 520. 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 dimensionamento de imagem, profundidade de bits, parâmetros de ferramenta de codificação, restrições de taxa de bits, etc. Em uma modalidade, o SPS 510 inclui um indicador SPS 565. Em uma modalidade, o indicador SPS 565 tem um primeiro valor (por exemplo, um) ou um segundo valor (por exemplo, zero). O indicador SPS 565 com o primeiro valor especifica que um mapeamento de ID de subimagem 575 é sinalizado no SPS 510 e o indicador SPS 565 com o segundo valor especifica que o mapeamento de ID de subimagem 575 é sinalizado no PPS 512.
[00116] O PPS 512 contém parâmetros específicos para uma ou mais imagens correspondentes. Assim, 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 bloquetes 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. Em uma modalidade, o PPS 512 inclui um indicador PPS 567. Em uma modalidade, o indicador PPS 567 tem um primeiro valor (por exemplo, um) ou um segundo valor (por exemplo, zero). O indicador PPS 567 com o primeiro valor especifica que o mapeamento de ID de subimagem 575 é sinalizado no PPS 512 e o indicador PPS 567 com o segundo valor especifica que o mapeamento de ID de subimagem 575 não é sinalizado no PPS 512.
[00117] O cabeçalho de grupo de bloquetes 514 contém parâmetros que são específicos para cada grupo de bloquetes em uma imagem. Desta forma, pode haver um cabeçalho de grupo de bloquete 514 por grupo de bloquete na sequência de vídeo. O cabeçalho de grupo de bloquetes 514 pode conter informações do grupo de bloquetes, contagens de ordem de imagem (POCs), listas de imagens de referência, pesos de predição, pontos de entrada de bloquete, parâmetros de deblocagem, etc. Deve- se notar que alguns sistemas se referem ao cabeçalho de grupo de bloquetes 514 como um cabeçalho de fatia, e usam tais informações para suportar fatias em vez de grupos de bloquetes.
[00118] Os dados de imagem 520 contêm dados de vídeo codificados de acordo com predição inter e/ou predição intra, assim como dados residuais transformados e quantizados correspondentes. Tais dados de imagem 520 são classificados de acordo com o particionamento usado para particionar a imagem antes da codificação. Por exemplo, a imagem nos dados de imagem 520 inclui uma ou mais imagens 521. A sequência ou série de imagens 527 pode ser referida como CVS 527. Conforme usado neste documento, a CVS 527 é uma sequência de unidades de acesso (AUs) que incluem, em ordem de decodificação, uma AU de início de sequência de vídeo codificada (CVSS), seguida por zero ou mais AUs que não são AUs CVSS, incluindo todas as AUs subsequentes, mas não incluindo qualquer AU subsequente que seja uma AU CVSS. Uma AU CVSS é uma AU na qual há uma unidade de predição (PU) para cada camada especificada pelo conjunto de parâmetros de vídeo (VPS) e a imagem codificada em cada PU é uma imagem de CLVSS. Em uma modalidade, cada imagem 521 está dentro de uma AU. Uma PU é um conjunto de unidades NAL que estão associadas umas às outras de acordo com uma regra de classificação especificada, são consecutivas em ordem de decodificação e contêm exatamente uma imagem codificada.
[00119] A CVS é uma sequência de vídeo codificada para cada sequência de vídeo de camada codificada (CLVS) no fluxo de bits de vídeo. Notavelmente, a CVS e a CLVS são as mesmas quando o fluxo de bits de vídeo inclui uma única camada. A CVS e a CLVS são apenas diferentes quando o fluxo de bits de vídeo inclui múltiplas camadas.
[00120] Cada uma das imagens 521 pode ser dividida em bloquetes 523. Um bloquete 523 é uma porção particionada de uma imagem criada por fronteiras horizontais e verticais. Os bloquetes 523 podem ser retangulares e/ou quadrados. Especificamente, um bloquete 523 inclui quatro lados que estão conectados em ângulos retos. Os quatro lados incluem dois pares de lados paralelos. Além disso, os lados de um par de lados paralelos têm o mesmo comprimento. Como tal, um bloquete 523 pode ter qualquer forma retangular, onde um quadrado é um caso especial de um retângulo onde todos os quatro lados têm o mesmo comprimento. Uma imagem (image)/imagem (picture) pode conter um ou mais bloquetes 523.
[00121] Uma imagem (por exemplo, imagem 521) pode ser particionada em linhas e colunas de bloquetes 523. Uma linha de bloquetes é um conjunto de bloquetes 523 posicionados de maneira horizontalmente adjacente para criar uma linha contínua da fronteira esquerda à fronteira direita de uma imagem (ou vice-versa). Uma coluna de bloquetes é um conjunto de bloquetes 523 posicionados de maneira verticalmente adjacente para criar uma linha contínua da fronteira superior à fronteira inferior da imagem (ou vice-versa).
[00122] Os bloquetes 523 podem ou não permitir a predição com base em outros bloquetes 523, dependendo do exemplo. Cada bloquete 523 pode ter um índice de bloquete único na imagem. Um índice de bloquete é um identificador numérico selecionado processualmente que pode ser usado para distinguir um bloquete 523 de outro. Por exemplo, os índices de bloquete podem aumentar numericamente na ordem de varredura de raster. A ordem de varredura de raster é da esquerda para a direita e de cima para baixo.
[00123] Deve-se notar que, em alguns exemplos, os bloquetes 523 também podem ser atribuídos de identificadores (IDs) de bloquete. Um ID de bloquete é um identificador atribuído que pode ser usado para distinguir um bloquete 523 de outro. Os cálculos podem empregar IDs de bloquete em vez de índices de bloquete em alguns exemplos. Além disso, os IDs de bloquete podem ser atribuídos para terem os mesmos valores que os índices de bloquete em alguns exemplos. Índices e/ou IDs de bloquetes podem ser sinalizados para indicar grupos de bloquetes contendo os bloquetes 523. Por exemplo, os índices e/ou IDs de bloquetes podem ser empregados para mapear dados de imagem associados a um bloquete 523 para uma posição adequada para exibição. Um grupo de bloquetes é um conjunto relacionado de bloquetes 523 que podem ser extraídos e codificados separadamente, por exemplo, para suportar a exibição de uma região de interesse e/ou para suportar o processamento paralelo. Os bloquetes 523 em um grupo de bloquetes podem ser codificados sem referência aos bloquetes 523 fora do grupo de bloquetes. Cada bloquete 523 pode ser atribuído a um grupo de bloquetes correspondente e, portanto, uma imagem pode conter uma pluralidade de grupos de bloquetes.
[00124] Os bloquetes 523 são ainda divididos em unidades de árvore de codificação (CTUs). As CTUs são divididas adicionalmente em blocos de codificação baseados em árvores de codificação. Os blocos de codificação podem então ser codificados/decodificados de acordo com mecanismos de predição.
[00125] As FIGS. 6A-6E ilustram um mecanismo 600 de exemplo para criar uma trilha extratora 610 (também conhecida como fluxo de bits mesclado) para combinar subimagens de múltiplas resoluções de diferentes fluxos de bits em uma única imagem para uso em aplicações de realidade virtual (VR). O mecanismo 600 pode ser empregado para dar suporte a um exemplo de caso de uso do método 100. Por exemplo, o mecanismo 600 pode ser empregado para gerar um fluxo de bits 500 para transmissão de um sistema de codec 200 e/ou um codificador 300 em direção a um sistema de codec 200 e/ou um decodificador 400. Como exemplo específico, o mecanismo 600 pode ser empregado para uso em conjunto com VR, Formato de Mídia Ominidirecional (OMAF), vídeo de trezentos e sessenta graus, etc.
[00126] Em VR, apenas uma porção do vídeo é exibida para um usuário. Por exemplo, o vídeo de VR pode ser filmado para incluir uma esfera em torno de um usuário. O usuário pode empregar uma tela de exibição montada na cabeça (HMD) para visualizar o vídeo de VR. O usuário pode apontar a HMD em direção a uma região de interesse. A região de interesse é exibida ao usuário e outros dados de vídeo são descartados. Dessa forma, um usuário visualiza apenas uma porção selecionada de usuário do vídeo de VR em qualquer instante. Essa abordagem imita as percepções do usuário e, portanto, faz com que o usuário experimente um ambiente virtual de uma maneira que imita um ambiente real. Um dos problemas com essa abordagem é que todo o vídeo de VR pode ser transmitido ao usuário, mas apenas uma janela de visualização atual do vídeo é realmente usada e o restante é descartado. Para aumentar a eficiência de sinalização para aplicações de streaming, a janela de visualização atual do usuário pode ser transmitida em uma primeira resolução mais alta e outras janelas de visualização podem ser transmitidas em uma segunda resolução mais baixa. Dessa forma, as janelas de visualização que provavelmente serão descartadas ocupam menos largura de banda do que a(s) janela(s) de visualização que provavelmente será(ão) visualizada(s) pelo usuário. No caso do usuário selecionar uma nova janela de visualização, o conteúdo de resolução mais baixa pode ser mostrado até que o decodificador possa solicitar que uma janela de visualização atual diferente seja transmitida na primeira resolução mais alta. O mecanismo 600 pode ser empregado para criar uma trilha extratora 610, como mostrado na FIG. 6E, para suportar esta funcionalidade. Uma trilha extratora 610 é uma trilha de dados de imagem que encapsula uma imagem (por exemplo, imagem 521) em múltiplas resoluções para uso conforme descrito acima.
[00127] O mecanismo 600 codifica o mesmo conteúdo de vídeo em uma primeira resolução 611 e uma segunda resolução 612, como mostrado nas FIGS. 6A e 6B, respectivamente. Como exemplo específico, a primeira resolução 611 pode ser amostras de luma de 5120x2560 e a segunda resolução 612 pode ser amostras de luma de 2560x1280. As imagens do vídeo podem ser particionadas em bloquetes 601 na primeira resolução 611 e bloquetes 603 na segunda resolução 612, respectivamente. Conforme usado neste documento, os bloquetes podem ser referidos como subimagens. No exemplo mostrado, os bloquetes 601 e 603 são cada um particionado em uma grade 4x2. Além disso, um MCTS pode ser codificado para cada posição de bloquete 601 e 603. As imagens na primeira resolução 611 e na segunda resolução 612 resultam cada uma em uma sequência de MCTS que descreve o vídeo ao longo do tempo em uma resolução correspondente. Cada sequência de MCTS codificada é armazenada como uma trilha de subimagem ou uma trilha de bloquete. O mecanismo 600 pode então usar as imagens para criar segmentos para suportar a seleção de MCTS adaptativa à janela de visualização. Por exemplo, é considerada cada faixa de orientações de visualização que causa uma seleção diferente de MCTSs de alta e baixa resolução. No exemplo ilustrado, são obtidos quatro bloquetes 601 contendo MCTSs na primeira resolução 611 e quatro bloquetes 603 contendo MCTSs na segunda resolução 612.
[00128] O mecanismo 600 pode então criar uma trilha extratora 610 para cada seleção de MCTS adaptativa à janela de visualização possível. As FIGS. 6C e 6D ilustram um exemplo de seleção de MCTS adaptativa à janela de visualização. Especificamente, um conjunto de bloquetes selecionados 605 e 607 são selecionados na primeira resolução 611 e na segunda resolução 612, respectivamente. Os bloquetes selecionados 605 e 607 são ilustrados em sombreamento cinza. No exemplo mostrado, os bloquetes selecionados 605 são os bloquetes 601 na primeira resolução 611 que devem ser mostrados ao usuário e os bloquetes selecionados 607 são os bloquetes 603 na segunda resolução 612 que provavelmente serão descartados, mas mantidos para suportar a exibição no caso do usuário selecionar uma nova janela de visualização. Os bloquetes selecionados 605 e 607 são então combinados em uma única imagem contendo dados de imagem tanto na primeira resolução 611 quanto na segunda resolução 612. Tais imagens são combinadas para criar uma trilha extratora 610. A FIG. 6E ilustra uma única imagem de uma trilha extratora 610 correspondente para fins de ilustração. Conforme mostrado, a imagem na trilha extratora 610 contém os bloquetes selecionados 605 e 607 da primeira resolução 611 e segunda resolução 612. Como observado acima, as FIGS. 6C-6E ilustram uma única seleção de MCTS adaptativa à janela de visualização. A fim de permitir a seleção do usuário de qualquer janela de visualização, uma trilha extratora 610 deve ser criada para cada combinação possível de bloquetes selecionados 605 e 607.
[00129] No exemplo mostrado, cada seleção de bloquetes 603 encapsulando conteúdo do segundo fluxo de bits de resolução 612 contém duas fatias. Uma RegionWisePackingBox pode ser incluída na trilha extratora 610 para criar um mapeamento entre a imagem empacotada e uma imagem projetada do formato de projeção equirretangular (ERP). No exemplo apresentado, os fluxos de bits resolvidos das trilhas extratoras 610 têm resolução 3200x2560. Consequentemente, um decodificador com capacidade para quatro mil amostras (4K) pode decodificar o conteúdo onde a janela de visualização é extraída de um fluxo de bits codificado com resolução de cinco mil amostras 5K (5120x2560).
[00130] Como mostrado na FIG. 6C, os bloquetes selecionados 605 (mostrados em cinza) na primeira resolução 611 têm os seguintes identificadores de bloquete: 10, 11, 14 e 15. Conforme usado neste documento, os identificadores de bloquete também podem ser referidos como identificadores de subimagem. Os bloquetes selecionados 607 na segunda resolução 612 têm os seguintes identificadores: 1, 5, 4 e 8. Assim, a trilha extratora 610 contém os seguintes identificadores de bloquete: 10, 11, 14, 15, 1, 5, 4 e 8. Os identificadores de bloquete são usados para identificar subimagens específicas usando um índice de subimagem, que pode ser referido neste documento como mapeamento de ID de subimagem.
[00131] As FIGS. 7A-7E ilustram um mecanismo 700 de exemplo para criar uma trilha extratora 710 para combinar subimagens de múltiplas resoluções de diferentes fluxos de bits em uma única imagem para uso em aplicações de VR quando o usuário alterou as janelas de visualização em relação à janela de visualização que foi escolhida para as FIGS. 6A- 6E. Isto é, as FIGS. 7A-7E ilustram como uma nova trilha extratora 710 é criada quando há uma alteração na orientação de visualização dentro da CVS, que inclui a trilha extratora 610 e a trilha extratora 710.
[00132] Como mostrado na FIGS. 7A-7B, as imagens do vídeo foram particionadas em bloquetes 701 na primeira resolução 711 e bloquetes 703 na segunda resolução 712, respectivamente. No entanto, houve uma alteração na orientação de visualização no mecanismo 700 em relação ao mecanismo 600. Portanto, como mostrado nas FIGS. 7C-7D, os bloquetes selecionados 705 (mostrados em cinza) na primeira resolução 711 agora têm os seguintes identificadores de bloquete: 9, 10, 13 e 14, e os bloquetes selecionados 707 na segunda resolução 712 agora têm os seguintes identificadores: 3, 4, 7 e 8. Assim, a trilha extratora 710 contém os seguintes identificadores de bloquete: 3, 4, 7, 8, 9, 10, 13 e 14 devido à alteração na orientação de visualização.
[00133] Quando uma CVS sendo transmitida inclui um conjunto constante de subimagens, então os IDs de subimagens relevantes são deixados no SPS (todos os outros são removidos). Quando ocorre uma mesclagem (por exemplo, para formar uma das trilhas extratoras 610 ou 710), os IDs de subimagem são movidos para o PPS. Em ambos os casos, o indicador é definido no fluxo de bits para indicar onde os IDs de subimagem estão localizados atualmente.
[00134] Normalmente, quando ocorre a alteração na orientação de visualização, novas imagens IRAP devem ser enviadas. Uma imagem IRAP é uma imagem codificada para qual todas as unidades VCL NAL têm o mesmo valor de tipo de unidade NAL. Uma imagem IRAP fornece as seguintes duas funcionalidades/benefícios importantes. Em primeiro lugar, a presença de uma imagem IRAP indica que o processo de decodificação pode começar a partir dessa imagem. Esta funcionalidade permite uma característica de acesso aleatório na qual o processo de decodificação começa nessa posição no fluxo de bits, não necessariamente no começo do fluxo de bits, desde que uma imagem IRAP esteja presente nessa posição. Em segundo lugar, a presença de uma imagem IRAP atualiza o processo de decodificação, de modo que uma imagem codificada começando na imagem IRAP, excluindo imagens de liderança de acesso aleatório pulado (RASL), são codificadas sem qualquer referência às imagens anteriores. Ter uma imagem IRAP presente no fluxo de bits, consequentemente, interromperia qualquer erro que pudesse ocorrer durante a decodificação de imagens codificadas antes da imagem IRAP para propagar para a imagem IRAP e aquelas imagens que seguem a imagem IRAP na ordem de decodificação.
[00135] Embora as imagens IRAP forneçam funcionalidades importantes, elas vêm com uma penalidade na eficiência da compressão. A presença de uma imagem IRAP causa um aumento na taxa de bits. Esta penalidade para a eficiência de compressão deve-se a duas razões. Em primeiro lugar, como uma imagem IRAP é uma imagem predita de modo intra, a própria imagem exigiria relativamente mais bits para representar quando comparada a outras imagens (por exemplo, imagens de liderança, imagens de rastreio) que são imagens preditas de modo inter. Em segundo lugar, como a presença de uma imagem IRAP quebra a predição temporal (isso porque o decodificador atualizaria o processo de decodificação, no qual uma das ações do processo de decodificação para isso é remover imagens de referência anteriores no armazenamento temporário de imagem decodificada (DPB)), a imagem IRAP faz com que a codificação de imagens que seguem a imagem IRAP na ordem de decodificação seja menos eficiente (isto é, precisa de mais bits para representar) porque elas têm menos imagens de referência para sua codificação de predição inter.
[00136] Em uma modalidade, a imagem IRAP é referida como uma imagem de acesso aleatório limpo (CRA) ou como uma imagem de atualização de decodificador instantânea (IDR) com imagem decodificável de acesso aleatório (RADL). Em HEVC, imagens IDR, imagens CRA e imagens de Acesso de Enlace Quebrado (BLA) são todas consideradas imagens IRAP. Para o VVC, durante a 12a reunião do JVET em outubro de 2018, foi acordado ter ambas as imagens IDR e CRA como imagens IRAP. Em uma modalidade, as imagens de Acesso de Enlace Quebrado (BLA) e imagens de Atualização de Decodificador Gradual (GDR) também podem ser consideradas imagens IRAP. O processo de decodificação de uma sequência de vídeo codificada sempre começa em uma imagem IRAP.
[00137] Em contraste com o envio de novas imagens IRAP conforme descrito acima, uma abordagem melhor é continuar enviando quaisquer bloquetes (também conhecidos como subimagens) compartilhados entre a trilha extratora 610 e a trilha extratora 710. Ou seja, continuar a enviar os bloquetes com os seguintes IDs de bloquete: 4, 8, 10 e 14, uma vez que esses bloquetes estão na trilha extratora 610 e na trilha extratora 710. Ao fazer isso, novas imagens IRAP precisam ser enviadas apenas para os bloquetes na trilha extratora 710 que não estavam também na trilha extratora 610. Ou seja, novas imagens IRAP só precisam ser enviadas para bloquetes com os seguintes IDs de bloquete: 1, 5, 9 e 13 quando a orientação de visualização foi alterada. No entanto, a alteração nos IDs de subimagens dentro da CVS pode causar problemas na sinalização.
[00138] A fim de resolver pelo menos o problema de sinalização, uma indicação (por exemplo, um indicador) é sinalizada no fluxo de bits para indicar se o ID de bloquete (também conhecido como ID de subimagem) para cada bloquete (também conhecido como subimagem) pode alterar dentro da CVS. Tal indicador pode ser sinalizado no SPS ou no PPS. Além de sinalizar se o ID de bloquete pode alterar dentro da CVS, o indicador também pode fornecer outras funcionalidades.
[00139] Em uma abordagem, os IDs de subimagem são sinalizados na sintaxe SPS (quando é indicado que o ID de subimagem para cada subimagem não altera dentro de uma CVS) ou na sintaxe PPS (quando é indicado que o ID de subimagem para cada subimagem pode alterar dentro de uma CVS). Em uma modalidade, os IDs de subimagem nunca são sinalizados na sintaxe SPS e na sintaxe PPS.
[00140] Em outra abordagem, os IDs de subimagem são sempre sinalizados na sintaxe SPS, e quando o indicador indica que o ID de subimagem para cada subimagem pode alterar dentro de uma CVS, os valores de ID de subimagem sinalizados no SPS podem ser substituídos pelos IDs de subimagem sinalizados na sintaxe PPS.
[00141] Ainda em outra abordagem, os IDs de subimagem não são sinalizados na sintaxe SPS, mas apenas na sintaxe PPS, e a indicação de se o ID de subimagem para cada subimagem pode alterar dentro de uma CVS também é sinalizada apenas na sintaxe PPS.
[00142] Nesta abordagem, outras informações de subimagem, como a posição e o tamanho de cada subimagem, o comprimento de IDs de subimagem em bits, assim como os indicadores subpic_treated_as_pic_flag[ i ] e loop_filter_across_subpic_enabled_flag[ i ] como na especificação de versão de VVC mais recente, podem também ser sinalizados no PPS em vez de no SPS, mas todos são iguais para todos os PPSs referenciados por imagens codificadas dentro da CVS.
[00143] Quando as posições e tamanhos de subimagem são sinalizados no PPS, em vez de serem sinalizados da mesma forma que na especificação de versão de VVC mais recente, eles podem ser sinalizados com base nas fatias incluídas em cada subimagem. Por exemplo, para cada subimagem, o índice ou ID de fatia da fatia localizada no canto superior esquerdo da subimagem e o índice ou ID de fatia ou a fatia localizada no canto inferior direito da subimagem podem ser sinalizados, para derivação da posição e tamanho da subimagem, em que a sinalização pode ser baseada em delta e, em algumas ocasiões específicas, a sinalização do índice ou ID de fatia ou seu delta pode ser evitada e o valor é inferido, por exemplo, da mesma forma que o canto superior esquerdo e os índices de peça no canto inferior direito são sinalizados para fatias retangulares na especificação de versão de VVC mais recente.
[00144] Nesta modalidade, os IDs de subimagem são sinalizados como se segue.
[00145] Na sintaxe SPS, quando é indicado que o número de subimagens em cada figura na CVS é maior que 1, aplica-se o seguinte.
[00146] Um indicador (por exemplo, designado subpicture_ids_signalled_in_sps_flag ou sps_subpic_id_mapping_present_flag) é sinalizado no SPS. Em uma modalidade, o indicador tem a seguinte semântica: subpicture_ids_signalled_in_sps_flag igual a 1 especifica que os IDs de subimagem são sinalizados no SPS, um para cada subimagem, e que o valor de ID de subimagem para cada subimagem específica não altera dentro da CVS. O subpicture_ids_signalled_in_sps_flag igual a 0 especifica que os IDs de subimagem não são sinalizados no SPS, mas sim no PPS, e o valor de ID de subimagem para cada subimagem específica pode alterar dentro da CVS. Quando subpicture_ids_signalled_in_sps_flag é igual a 1, um ID de subimagem é sinalizado para cada subimagem no SPS.
[00147] Na sintaxe PPS, um indicador (por exemplo, designado subpicture_ids_signalled_in_pps_flag ou pps_subpic_id_mapping_present_flag) é sinalizado no PPS. O indicador tem a seguinte semântica: subpicture_ids_signalled_in_pps_flag igual a 1 especifica que os IDs de subimagem são sinalizados no PPS, um para cada subimagem, e o valor do ID de subimagem para cada subimagem específica pode alterar dentro da CVS. O subpicture_ids_signalled_in_pps_flag igual a 0 especifica que os IDs de subimagem não são sinalizados no PPS, mas sim no SPS, e o valor do ID de subimagem para cada subimagem específica não altera dentro da CVS.
[00148] Em uma modalidade, o valor de subpicture_ids_signalled_in_pps_flag deve ser igual a 1 - subpicture_ids_signalled_in_sps_flag. Quando subpicture_ids_signalled_in_pps_flag é igual a 1, um ID de subimagem é sinalizado para cada subimagem no PPS.
[00149] Na sintaxe de cabeçalho de fatia, um ID de subimagem é sinalizado independentemente do número de subimagens especificadas pelo SPS referenciado.
[00150] Alternativamente, quando o número de subimagens em cada imagem é maior que 1, a sintaxe SPS sempre inclui os IDs de subimagem, um para cada subimagem, e a sintaxe SPS também inclui um indicador especificando se os IDs de subimagem podem ser substituídos pelos IDs de subimagem sinalizados na sintaxe PPS e se o valor de ID de subimagem para cada subimagem específica pode alterar dentro da CVS. A substituição dos IDs de subimagem pode ser realizada sempre para todos os IDs de subimagem ou apenas para um subconjunto selecionado de todos os IDs de subimagem.
[00151] A FIG. 8 é uma modalidade de um método 800 de decodificação implementado por um decodificador de vídeo (por exemplo, decodificador de vídeo 400). O método 800 pode ser realizado após o fluxo de bits decodificado ter sido recebido direta ou indiretamente de um codificador de vídeo (por exemplo, codificador de vídeo 300). O método 800 melhora o processo de decodificação garantindo a sinalização eficiente de IDs de subimagem mesmo quando os IDs de subimagem alteram dentro da CVS em cenários de aplicação envolvendo extração de subfluxo de bits e mesclagem de subfluxo de bits. Isso reduz a redundância e aumenta a eficiência de codificação. Assim, o codificador/decodificador (também conhecido como “codec”) na codificação de vídeo é aprimorado em relação aos codecs atuais. Na prática, o processo de codificação de vídeo aprimorado oferece ao usuário uma melhor experiência de usuário quando os vídeos são enviados, recebidos e/ou visualizados.
[00152] No bloco 802, o decodificador de vídeo recebe um fluxo de bits de vídeo (por exemplo, fluxo de bits 500) incluindo um SPS (por exemplo, SPS 510), um PPS (por exemplo, PPS 512) e uma pluralidade de subimagens (por exemplo, bloquetes 605 e 607) associadas a um mapeamento de identificador (ID) de subimagem 575. Conforme observado acima, o mapeamento de ID de subimagem 575 é um mapeamento de IDs de subimagem para subimagens específicas por meio de um índice de subimagem (por exemplo, ID de subimagem 8 corresponde ao índice de subimagem 8, que identifica uma subimagem específica da pluralidade de subimagens). Em uma modalidade, o SPS 510 contém um indicador SPS 565. Em uma modalidade, o PPS 512 contém um indicador PPS 567.
[00153] No bloco 804, o decodificador de vídeo determina se o indicador SPS 565 tem um primeiro valor ou um segundo valor. O indicador SPS 565 com o primeiro valor especifica que o mapeamento de ID de subimagem 575 é incluído no SPS 510 e o indicador SPS 565 com o segundo valor especifica que o mapeamento de ID de subimagem 575 é sinalizado no PPS 512.
[00154] Quando o indicador SPS 565 tem o segundo valor, no bloco 806, o decodificador de vídeo determina se o indicador PPS 567 tem o primeiro valor ou o segundo valor. O indicador PPS 567 com o primeiro valor especifica que o mapeamento de ID de subimagem 575 é incluído no PPS 512 e o indicador PPS 567 com o segundo valor especifica que o mapeamento de ID de subimagem 575 não é sinalizado no PPS 512.
[00155] Em uma modalidade, o indicador SPS 656 tem o primeiro valor quando o indicador PPS 567 tem o segundo valor. Em uma modalidade, o indicador SPS 565 tem o segundo valor quando o indicador PPS 567 tem o primeiro valor. Em uma modalidade, o primeiro valor é um e o segundo valor é zero.
[00156] Em uma modalidade, o SPS 510 contém um segundo indicador SPS 569. O segundo indicador SPS 569 especifica se o mapeamento de subimagem 575 é explicitamente sinalizado no SPS 510 ou no PPS 512. Em uma modalidade, o fluxo de bits 500 compreende ainda um indicador de alteração de CVS 571. O indicador de alteração de CVS 571 indica se o mapeamento de ID de subimagem 575 pode alterar dentro da CVS 590 do fluxo de bits 500. Em uma modalidade, o indicador de alteração de CVS 571 está incluído no SPS 510, o PPS 512 ou outro conjunto de parâmetros ou cabeçalho no fluxo de bits 500.
[00157] No bloco 808, o decodificador de vídeo obtém o mapeamento de ID de subimagem 575 do SPS 510 quando o indicador SPS 565 tiver o primeiro valor e do PPS 512 quando o SPS tiver o segundo valor e/ou quando o indicador PPS 567 tiver o primeiro valor. Em uma modalidade, o fluxo de bits compreende um fluxo de bits mesclado. Em uma modalidade, o mapeamento de ID de subimagem 575 foi alterado dentro da CVS 590 do fluxo de bits 500.
[00158] No bloco 810, o decodificador de vídeo decodifica a pluralidade de subimagens usando o mapeamento de ID de subimagem 575. Uma vez decodificada, a pluralidade de subimagens pode ser usada para gerar ou produzir uma imagem ou sequência de vídeo para exibição para um usuário em uma tela de exibição ou tela de um dispositivo eletrônico (por exemplo, um smartphone, tablet, laptop, computador pessoal, etc.).
[00159] A FIG. 9 é uma modalidade de um método 900 de codificação de um fluxo de bits de vídeo implementado por um codificador de vídeo (por exemplo, codificador de vídeo 300). O método 900 pode ser realizado quando uma imagem (por exemplo, de um vídeo) deve ser codificada em um fluxo de bits de vídeo e então transmitida em direção a um decodificador de vídeo (por exemplo, decodificador de vídeo 400). O método 900 melhora o processo de codificação garantindo a sinalização eficiente de IDs de subimagem mesmo quando os IDs de subimagem alteram dentro da CVS em cenários de aplicação envolvendo extração de subfluxo de bits e mesclagem de subfluxo de bits. Isso reduz a redundância e aumenta a eficiência de codificação. Assim, o codificador/decodificador (também conhecido como “codec”) na codificação de vídeo é aprimorado em relação aos codecs atuais. Na prática, o processo de codificação de vídeo aprimorado oferece ao usuário uma melhor experiência de usuário quando os vídeos são enviados, recebidos e/ou visualizados.
[00160] No bloco 902, o codificador de vídeo codifica um fluxo de bits incluindo um SPS (por exemplo, SPS 510), um PPS (por exemplo, PPS 512) e uma pluralidade de subimagens (por exemplo, bloquetes 605 e 607) associadas a um mapeamento de identificador (ID) de subimagem. Conforme observado acima, o mapeamento de ID de subimagem 575 é um mapeamento de IDs de subimagem para subimagens específicas por meio de um índice de subimagem (por exemplo, ID de subimagem 8 corresponde ao índice de subimagem 8, que identifica uma subimagem específica da pluralidade de subimagens). Em uma modalidade, o SPS 510 contém um indicador SPS 565 e o PPS 512 contém um indicador PPS 567.
[00161] No bloco 904, o codificador de vídeo define o indicador SPS 565 para um primeiro valor quando o mapeamento de ID de subimagem 575 é incluído no SPS 510 e para um segundo valor quando o mapeamento de ID de subimagem 575 é sinalizado no PPS 512.
[00162] No bloco 906, o codificador de vídeo define o indicador PPS 567 para o primeiro valor quando o mapeamento de ID de subimagem 575 é incluído no PPS 512 e para o segundo valor quando o mapeamento de ID de subimagem 575 não é sinalizado no PPS 512.
[00163] Em uma modalidade, o indicador SPS 565 tem o primeiro valor quando o indicador PPS 567 tem o segundo valor. Em uma modalidade, o indicador SPS 565 tem o segundo valor quando o indicador PPS 567 tem o primeiro valor. Em uma modalidade, o primeiro valor é um e o segundo valor é zero.
[00164] Em uma modalidade, o SPS 510 contém um segundo indicador SPS 569. O segundo indicador SPS 569 especifica se o mapeamento de ID de subimagem 575 é explicitamente sinalizado no SPS 510 ou no PPS 512. Em uma modalidade, o fluxo de bits 500 compreende ainda um indicador de alteração de CVS 571. O indicador de alteração de CVS 571 indica se o mapeamento de ID de subimagem 575 pode alterar dentro da CVS 590 do fluxo de bits 500. Em uma modalidade, o indicador de alteração de CVS 571 está incluído no SPS 510, o PPS 512 ou outro conjunto de parâmetros ou cabeçalho no fluxo de bits 500.
[00165] No bloco 908, o codificador de vídeo armazena o fluxo de bits para comunicação em direção a um decodificador. O fluxo de bits pode ser armazenado na memória até que o fluxo de bits de vídeo seja transmitido em direção ao decodificador de vídeo. Uma vez recebido pelo decodificador de vídeo, o fluxo de bits de vídeo codificado pode ser decodificado (por exemplo, conforme descrito acima) para gerar ou produzir uma imagem ou sequência de vídeo para exibição para um usuário na tela de exibição ou tela de um dispositivo eletrônico (por exemplo, um smartphone, tablet, laptop, computador pessoal, etc.).
[00166] Em uma modalidade, os IDs de subimagem são sinalizados como se segue.
[00167] A sintaxe SPS não inclui sinalização de IDs de subimagem.
[00168] Na sintaxe PPS, um valor que indica o número de subimagens é sinalizado, que deve ser o mesmo para todos os PPSs referenciados por imagens codificadas dentro da CVS, e quando o número indicado de subimagens for maior que 1, aplica-se o seguinte: um indicador, por exemplo, chamado subpicture_id_unchanging_in_cvs_flag, é sinalizado no PPS, com a seguinte semântica: subpicture_id_unchanging_in_cvs_flag igual a 1 especifica que o ID de subimagem para cada subimagem específica sinalizada no PPS não altera dentro da CVS. subpicture_id_unchanging_in_cvs_flag igual a 0 especifica que o ID de subimagem para cada subimagem específica sinalizada no PPS pode alterar dentro da CVS.
[00169] Um valor que indica o número de subimagens é sinalizado no PPS. O número indicado de subimagens deve ser o mesmo para todos os PPSs referenciados por imagens codificadas dentro de uma CVS.
[00170] Um ID de subimagem é sinalizado para cada subimagem no PPS. Quando subpicture_id_unchanging_in_cvs_flag é igual a 1, o ID de subimagem para cada subimagem específica deve ser o mesmo para todos os PPSs referenciados por imagens codificadas dentro da CVS.
[00171] Na sintaxe de cabeçalho de fatia, um ID de subimagem é sinalizado, independentemente do número de subimagens especificadas pelo SPS referenciado.
[00172] Também deve ser entendido que as etapas dos métodos exemplares estabelecidos neste documento não precisam necessariamente ser realizadas na ordem descrita, e a ordem das etapas de tais métodos deve ser entendida como meramente exemplar. Da mesma forma, etapas adicionais podem ser incluídas em tais métodos e certas etapas podem ser omitidas ou combinadas, em métodos consistentes com várias modalidades da presente divulgação.
[00173] A FIG. 10 é um diagrama esquemático de um dispositivo de codificação de vídeo 1000 (por exemplo, um codificador de vídeo 300 ou um decodificador de vídeo 400) de acordo com uma modalidade da divulgação. O dispositivo de codificação de vídeo 1000 é adequado para implementar as modalidades divulgadas, conforme descrito neste documento. O dispositivo de codificação de vídeo 1000 compreende portas de ingresso 1010 e unidades receptoras (Rx) 1020 para receber dados; um processador, unidade lógica ou unidade central de processamento (CPU) 1030 para processar os dados; unidades transmissoras (Tx) 1040 e portas de egresso 1050 para transmitir os dados; e uma memória 1060 para armazenar os dados. O dispositivo de codificação de vídeo 1000 também pode compreender componentes ópticos para elétricos (OE) e componentes elétricos para ópticos (EO) acoplados às portas de ingresso 1010, as unidades receptoras 1020, as unidades transmissoras 1040 e as portas de egresso 1050 para egresso ou ingresso de sinais ópticos ou elétricos.
[00174] O processador 1030 é implementado por hardware e software. O processador 1030 pode ser implementado como um ou mais chips de CPU, núcleos (por exemplo, como um processador multinúcleo), arranjos de portas programáveis em campo (FPGAs), circuitos integrados de aplicação específica (ASICs) e processadores de sinais digital (DSPs). O processador 1030 está em comunicação com as portas de ingresso 1010, unidades receptoras 1020, unidades transmissoras 1040, portas de egresso 1050 e memória 1060. O processador 1030 compreende um módulo de codificação 1070. O módulo de codificação 1070 implementa as modalidades divulgadas descritas acima. Por exemplo, o módulo de codificação 1070 implementa, processa, prepara ou fornece as várias funções de codec. A inclusão do módulo de codificação 1070, portanto, fornece uma melhoria substancial para a funcionalidade do dispositivo de codificação de vídeo 1000 e efetua uma transformação do dispositivo de codificação de vídeo 1000 para um estado diferente. Alternativamente, o módulo de codificação 1070 é implementado como instruções armazenadas na memória 1060 e executadas pelo processador 1030.
[00175] O dispositivo de codificação de vídeo 1000 também pode incluir dispositivos de entrada e / ou saída (I / O) 1080 para comunicar dados para e de um usuário. Os dispositivos I / O 1080 podem incluir dispositivos de saída, como uma tela de exibição para exibir dados de vídeo, alto- falantes para saída de dados de áudio, etc. Os dispositivos I / O 1080 também podem incluir dispositivos de entrada, como um teclado, mouse, trackball, etc. e / ou interfaces correspondentes para interagir com tais dispositivos de saída.
[00176] A memória 1060 compreende um ou mais discos, unidades de fita e unidades de estado sólido, e pode ser usada como um dispositivo de armazenamento de dados de fluxo em excesso (over-flow), 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 do programa. A memória 1060 pode ser volátil e/ou não volátil e pode ser memória somente de leitura (ROM), memória de acesso aleatório (RAM), memória endereçável por conteúdo ternário (TCAM) e/ou memória de acesso aleatório estática (SRAM).
[00177] A FIG. 11 é um diagrama esquemático de uma modalidade de um meio para codificação 1100. Em uma modalidade, os meios para codificação 1100 são implementados em um dispositivo de codificação de vídeo 1102 (por exemplo, um codificador de vídeo 300 ou um decodificador de vídeo 400). O dispositivo de codificação de vídeo 1102 inclui meios de recebimento 1101. Os meios de recebimento 1101 são configurados para receber uma imagem para codificar ou para receber um fluxo de bits para decodificar. O dispositivo de codificação de vídeo 1102 inclui meios de transmissão 1107 acoplados aos meios de recebimento 1101. Os meios de transmissão 1107 são configurados para transmitir o fluxo de bits para um decodificador ou para transmitir uma imagem decodificada para um meio de exibição (por exemplo, um dos dispositivos I / O 1080).
[00178] O dispositivo de codificação de vídeo 1102 inclui um meio de armazenamento 1103. Os meios de armazenamento 1103 são acoplados a pelo menos um dos meios de recebimento 1101 ou os meios de transmissão 1107. Os meios de armazenamento 1103 são configurados para armazenar instruções. O dispositivo de codificação de vídeo 1102 também inclui meios de processamento 1105. Os meios de processamento 1105 são acoplados aos meios de armazenamento 1103. Os meios de processamento 1105 são configurados para executar as instruções armazenadas nos meios de armazenamento 1103 para realizar os métodos divulgados neste documento.
[00179] Embora várias modalidades tenham sido fornecidas na presente divulgação, pode ser entendido que os sistemas e métodos divulgados podem ser incorporados em muitas outras formas específicas sem se afastar do espírito ou escopo da presente divulgação. Os presentes exemplos devem ser considerados ilustrativos e não restritivos, e a intenção não se limita aos detalhes fornecidos neste documento. Por exemplo, os vários elementos ou componentes podem ser combinados ou integrados em outro sistema ou certas características podem ser omitidas ou não implementadas.
[00180] Além disso, técnicas, sistemas, subsistemas e métodos descritos e ilustrados nas várias modalidades como discretos ou separados podem ser combinados ou integrados com outros sistemas, componentes, técnicas ou métodos sem se afastar do escopo da presente divulgação. Outros exemplos de mudanças, substituições e alterações são verificáveis por um técnico no assunto e podem ser feitos sem se afastar do espírito e escopo aqui divulgados.

Claims (19)

1. Fluxo de bits, em que o fluxo de bits é caracterizado pelo fato de que compreende: um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), e uma pluralidade de subimagens associadas a um mapeamento de identificador (ID) de subimagem, em que o SPS inclui um indicador SPS; em que quando o indicador SPS tem um primeiro valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no SPS, e em que quando o indicador SPS tem um segundo valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no PPS.
2. Fluxo de bits, de acordo com a reivindicação 1, caracterizado pelo fato de que o PPS inclui um indicador PPS, quando o indicador PPS tem um primeiro valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no PPS, e quando o indicador PPS tem um segundo valor, isto especifica que o mapeamento de ID de subimagem não é sinalizado no PPS.
3. Fluxo de Bits, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o SPS inclui um segundo indicador SPS, e em que o segundo indicador SPS especifica que o mapeamento de ID de subimagem é explicitamente sinalizado no SPS ou no PPS, ou o mapeamento de ID de subimagem não é explicitamente sinalizado.
4. Método para armazenar um fluxo de bits, caracterizado pelo fato de que compreende: obter um fluxo de bits, em que o fluxo de bits compreende: um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), e uma pluralidade de subimagens associadas a um mapeamento de identificador (ID) de subimagem, em que o SPS inclui um indicador SPS; em que quando o indicador SPS tem um primeiro valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no SPS, e em que quando o indicador SPS tem um segundo valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no PPS; armazenar o fluxo de bit em pelo menos um dispositivo de armazenamento.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que o PPS inclui um indicador PPS, quando o indicador PPS tem um primeiro valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no PPS, e quando o indicador PPS tem um segundo valor, isto especifica que o mapeamento de ID de subimagem não é sinalizado no PPS.
6. Método, de acordo com a reivindicação 4 ou 5, caracterizado pelo fato de que compreende ainda: receber o fluxo de bits através de uma interface de comunicação.
7. Método, de acordo com qualquer uma das reivindicações 4 a 6, caracterizado pelo fato de que compreende ainda: selecionar um fluxo de bits alvo a partir do pelo menos um dispositivo de armazenamento; transmitir o fluxo de bits alvo para um dipositivo de destino.
8. Método, de acordo com qualquer uma das reivindicações 4 a 7, caracterizado pelo fato de que compreende ainda: combinar subimagens de múltiplas resoluções a partir de diferentes fluxos de bits para gerar um fluxo de bits mesclado; transmitir o fluxo de bits mesclado para um dispositivo usuário.
9. Dispositivo para armazenar um fluxo de bits, caracterizado pelo fato de que compreende pelo menos um dispositivo de armazenamento e pelo menos uma interface de comunicação; em que a pelo menos uma interface de comunicação é configurada para receber ou transmitir o fluxo de bits; o pelo menos um dispositivo de armazenamento é configurado para armazenar o fluxo de bits; em que o fluxo de bits compreende: um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), e uma pluralidade de subimagens associadas a um mapeamento de identificador (ID) de subimagem, em que o SPS inclui um indicador SPS; em que quando o indicador SPS tem um primeiro valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no SPS, e em que quando o indicador SPS tem um segundo valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no PPS.
10. Dispositivo, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende ainda pelo menos um processador, configurado para: selecionar um fluxo de bits alvo a partir do pelo menos um dispositivo de armazenamento; transmitir o fluxo de bits alvo para um dispositivo de destino através da interface de comunicação.
11. Dispositivo, de acordo com a reivindicação 10, caracterizado pelo fato de que o pelo menos um processador é configurado ainda para: combinar subimagens de múltiplas resoluções a partir de diferentes fluxos de bits para gerar um fluxo de bits mesclado; transmitir o fluxo de bits mesclado para um dispositivo usuário através da interface de comunicação.
12. Sistema para transmitir um fluxo de bits, caracterizado pelo fato de que compreende: pelo menos um dispositivo de armazenamento, configurado para armazenar pelo menos um fluxo de bits, em que o fluxo de bits compreende: um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), e uma pluralidade de subimagens associadas a um mapeamento de identificador (ID) de subimagem, em que o SPS inclui um indicador SPS; em que quando o indicador SPS tem um primeiro valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no SPS, e em que quando o indicador SPS tem um segundo valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no PPS; pelo menos um processador, configurado para obter um fluxo de bits alvo a partir de um do pelo menos um dispositivo de armazenamento, e transmitir o fluxo de bits alvo para um dispositivo de destino.
13. Sistema, de acordo com a reivindicação 12, caracterizado pelo fato de que o pelo menos um processador é configurado ainda para: combinar subimagens de múltiplas resoluções a partir de diferentes fluxos de bits para gerar um fluxo de bits mesclado; transmitir o fluxo de bits mesclado para um dispositivo usuário através da interface de comunicação.
14. Método para transmitir um fluxo de bits, caracterizado pelo fato de que compreende: armazenar pelo menos um fluxo de bits em pelo menos um dispositivo de armazenamento, em que o fluxo de bits compreende: um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), e uma pluralidade de subimagens associadas ao mapeamento de identificador (ID) de subimagem, em que o SPS inclui um indicador SPS; em que quando o indicador SPS tem um primeiro valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no SPS, e em que quando o indicador SPS tem um segundo valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no PPS; obter um ou mais fluxos de bits a partir de um do pelo menos um dispositivo de armazenamento; e transmitir o um ou mais fluxos de bits alvo para um dispositivo de destino.
15. Método, de acordo com a reivindicação 14, caracterizado pelo fato de que compreende ainda: combinar subimagens de múltiplas resoluções a partir de diferentes fluxos de bits para gerar um fluxo de bits mesclado; transmitir o fluxo de bits mesclado para um dispositivo usuário através da interface de comunicação.
16. Sistema para processar um fluxo de bits, caracterizado pelo fato de que compreende: um dispositivo de codificação, um ou mais dispositivos de armazenamento e um dispositivo de decodificação, em que: o dispositivo de codificação é configurado para obter sinal de vídeo e codificar o sinal de vídeo para obter um ou mais fluxos de bits; o fluxo de bits compreende um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), e uma pluralidade de subimagens associadas a um mapeamento de identificador (ID) de subimagem, em que o SPS inclui um indicador SPS; em que quando o indicador SPS tem um primeiro valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no SPS, e em que quando o indicador SPS tem um segundo valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no PPS; o um ou mais dispositivos de armazenamento são usados para armazenar o um ou mais fluxos de bits; e o dispositivo de decodificação é usado para decodificar o um ou mais fluxos de bits.
17. Sistema, de acordo com a reivindicação 16, caracterizado pelo fato de que o PPS inclui um sinalizador PPS, quando o indicador PPS tem um primeiro valor, isto especifica que o mapeamento de ID de subimagem é sinalizado no PPS e quando o indicador PPS tem um segundo valor, isto especifica que o mapeamento de ID de subimagem não é sinalizado no PPS.
18. Sistema, de acordo com a reivindicação 16 ou 17, caracterizado pelo fato de que o SPS inclui um segundo indicador SPS e em que o segundo indicador SPS especifica que o mapeamento de ID de subimagem é explicitamente sinalizado no SPS ou no PPS, ou que o mapeamento de ID de subimagem não é explicitamente sinalizado.
19. Sistema, de acordo com qualquer uma das reivindicações 16 a 18, caracterizado pelo fato de compreender ainda um dispositivo de captura de vídeo configurado para capturar o sinal de vídeo.
BR122023003915-7A 2019-09-17 2020-09-15 Fluxo de bits, método e dispositivo para armazenar um fluxo de bits,sistema e método para transmitir um fluxo de bits, e sistema para processar um fluxo de bits BR122023003915B1 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962901552P 2019-09-17 2019-09-17
US62/901,552 2019-09-17
BR112022004859A BR112022004859A2 (pt) 2019-09-17 2020-09-15 Sinalização de ids de subimagem na codificação de vídeo com base em subimagem
PCT/US2020/050835 WO2021035225A1 (en) 2019-09-17 2020-09-15 Signaling subpicture ids in subpicture based video coding

Publications (1)

Publication Number Publication Date
BR122023003915B1 true BR122023003915B1 (pt) 2024-02-15

Family

ID=74660755

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112022004859A BR112022004859A2 (pt) 2019-09-17 2020-09-15 Sinalização de ids de subimagem na codificação de vídeo com base em subimagem
BR122023003915-7A BR122023003915B1 (pt) 2019-09-17 2020-09-15 Fluxo de bits, método e dispositivo para armazenar um fluxo de bits,sistema e método para transmitir um fluxo de bits, e sistema para processar um fluxo de bits

Family Applications Before (1)

Application Number Title Priority Date Filing Date
BR112022004859A BR112022004859A2 (pt) 2019-09-17 2020-09-15 Sinalização de ids de subimagem na codificação de vídeo com base em subimagem

Country Status (23)

Country Link
US (1) US20220210477A1 (pt)
EP (2) EP4213487A1 (pt)
JP (1) JP7460760B2 (pt)
KR (1) KR20220053676A (pt)
CN (7) CN116600125A (pt)
AU (1) AU2020332002A1 (pt)
BR (2) BR112022004859A2 (pt)
CA (1) CA3151255A1 (pt)
CL (1) CL2022000640A1 (pt)
CY (1) CY1126045T1 (pt)
DK (1) DK4018658T3 (pt)
ES (1) ES2944451T3 (pt)
FI (1) FI4018658T3 (pt)
HR (1) HRP20230554T1 (pt)
HU (1) HUE061642T2 (pt)
IL (1) IL291464A (pt)
LT (1) LT4018658T (pt)
MX (1) MX2022003221A (pt)
PL (1) PL4018658T3 (pt)
PT (1) PT4018658T (pt)
RS (1) RS64175B1 (pt)
SI (1) SI4018658T1 (pt)
WO (1) WO2021035225A1 (pt)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4138401A1 (en) * 2021-08-17 2023-02-22 Nokia Technologies Oy A method, an apparatus and a computer program product for video encoding and video decoding

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9648352B2 (en) * 2012-09-24 2017-05-09 Qualcomm Incorporated Expanded decoding unit definition
JP6505026B2 (ja) * 2013-07-10 2019-04-24 シャープ株式会社 符号化方法
US9860540B2 (en) * 2014-01-03 2018-01-02 Qualcomm Incorporated Inference of nooutputofpriorpicsflag in video coding
KR101851479B1 (ko) * 2014-01-03 2018-04-23 노키아 테크놀로지스 오와이 파라미터 세트 코딩
US9998742B2 (en) * 2015-01-27 2018-06-12 Qualcomm Incorporated Adaptive cross component residual prediction
CN107615763B (zh) * 2015-05-28 2020-09-11 寰发股份有限公司 一种管理解码图像缓存器的方法及装置
WO2017051072A1 (en) * 2015-09-23 2017-03-30 Nokia Technologies Oy A method, an apparatus and a computer program product for coding a 360-degree panoramic video
US10523966B2 (en) * 2017-03-31 2019-12-31 Mediatek Inc. Coding transform blocks
US10623738B2 (en) * 2017-04-06 2020-04-14 Futurewei Technologies, Inc. Noise suppression filter
US11153607B2 (en) * 2018-01-29 2021-10-19 Mediatek Inc. Length-adaptive deblocking filtering in video coding
EP3939278A4 (en) 2019-03-11 2023-03-22 Tencent America LLC TILE AND SUB-DIVISION

Also Published As

Publication number Publication date
EP4018658B1 (en) 2023-03-29
CN116828191A (zh) 2023-09-29
ES2944451T3 (es) 2023-06-21
RS64175B1 (sr) 2023-05-31
PT4018658T (pt) 2023-05-12
CN115567713A (zh) 2023-01-03
LT4018658T (lt) 2023-05-10
EP4213487A1 (en) 2023-07-19
CN114556938A (zh) 2022-05-27
CL2022000640A1 (es) 2022-10-21
AU2020332002A1 (en) 2022-04-07
FI4018658T3 (fi) 2023-05-02
CA3151255A1 (en) 2021-02-25
CY1126045T1 (el) 2023-11-15
PL4018658T3 (pl) 2023-06-05
HRP20230554T1 (hr) 2023-08-18
MX2022003221A (es) 2022-04-26
EP4018658A1 (en) 2022-06-29
JP2022548663A (ja) 2022-11-21
CN114556938B (zh) 2023-04-11
EP4018658A4 (en) 2022-10-12
CN116600126A (zh) 2023-08-15
IL291464A (en) 2022-05-01
CN115567713B (zh) 2023-07-07
SI4018658T1 (sl) 2023-06-30
US20220210477A1 (en) 2022-06-30
JP7460760B2 (ja) 2024-04-02
KR20220053676A (ko) 2022-04-29
BR112022004859A2 (pt) 2022-06-07
CN116600125A (zh) 2023-08-15
CN116567252A (zh) 2023-08-08
WO2021035225A1 (en) 2021-02-25
CN116567251A (zh) 2023-08-08
HUE061642T2 (hu) 2023-07-28
DK4018658T3 (da) 2023-04-24

Similar Documents

Publication Publication Date Title
BR112021013499A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112021012632A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes
CN114845116B (zh) 在多层视频码流中支持在接入单元内包括混合irap图像和非irap图像
BR122022009680A2 (pt) Método implementado em um codificador, dispositivo de codificação de vídeo, meio legível por computador não transitório e codificador
JP7469464B2 (ja) サブピクチャベースのビデオコーディングにおけるサブピクチャごとの1つのスライスの指示
CN114650428B (zh) 使用标识符指示的视频译码码流提取的方法、设备和介质
US20230344999A1 (en) Explicit Address Signaling In Video Coding
BR112021011413A2 (pt) Método e aparelho de codificação de vídeo
BR112021012649A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes
US20220210477A1 (en) Signaling subpicture ids in subpicture based video coding
BR122024003872A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes

Legal Events

Date Code Title Description
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 15/09/2020, OBSERVADAS AS CONDICOES LEGAIS