BR122022007954A2 - Simplificação de dependência de mensagem sei em codificação de vídeo - Google Patents

Simplificação de dependência de mensagem sei em codificação de vídeo Download PDF

Info

Publication number
BR122022007954A2
BR122022007954A2 BR122022007954-7A BR122022007954A BR122022007954A2 BR 122022007954 A2 BR122022007954 A2 BR 122022007954A2 BR 122022007954 A BR122022007954 A BR 122022007954A BR 122022007954 A2 BR122022007954 A2 BR 122022007954A2
Authority
BR
Brazil
Prior art keywords
hrd
sei
flag
level
sei message
Prior art date
Application number
BR122022007954-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 BR122022007954A2 publication Critical patent/BR122022007954A2/pt

Links

Images

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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • 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
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

IMPLIFICAÇÃO DE DEPENDÊNCIA DE MENSAGEM SEI EM CODIFICAÇÃO DE VÍDEO. Um mecanismo de codificação de vídeo é revelado. O mecanismo inclui codificar uma imagem codificada em um fluxo de bits. Uma mensagem de informações suplementares de enriquecimento (SEI) atual que compreende uma flag de parâmetros presentes de decodificador de referência hipotético (HRD) de unidade de decodificação (DU) (du_hrd_params_present_flag) também é codificada no fluxo de bits. A du_hrd_params_present_flag especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits. Um conjunto de testes de conformidade de fluxo de bits é realizado no fluxo de bits com base na mensagem SEI atual. O fluxo de bits é armazenado para comunicação em direção a um decodificador.

Description

SIMPLIFICAÇÃO DE DEPENDÊNCIA DE MENSAGEM SEI EM CODIFICAÇÃO DE VÍDEO Dividido do BR 112022005394-0, de 17/09/2020. REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[0001] Este pedido de patente reivindica o benefício ao Pedido de Patente Provisório no U.S. 62/905.236, depositado em 24 de setembro de 2019 por Ye-Kui Wang, e intitulado “Video Coding Improvements”, o qual é incorporado no presente documento a título de referência.
CAMPO DA TÉCNICA
[0002] A presente revelação se refere, de modo geral, à codificação de vídeo e se refere, de maneira específica, a aperfeiçoamentos em parâmetros de sinalização para suportar codificação de fluxos de bits de múltiplas camadas.
FUNDAMENTOS
[0003] A quantidade de dados de vídeo necessária para representar até mesmo um vídeo relativamente curto pode ser substancial, que pode resultar em dificuldades quando os dados precisam ser transmitidos por streaming ou comunicados de outro modo por meio de uma rede de comunicações com capacidade limitada de largura de banda. Desse modo, os dados de vídeo são geralmente comprimidos antes de serem comunicados por meio de redes de telecomunicações atuais. O tamanho de um vídeo também pode ser uma questão quando o vídeo é armazenado em um dispositivo de armazenamento, visto que os recursos de memória podem ser limitados. Os dispositivos de compressão de vídeo normalmente usam software e/ou hardware na origem para codificar os dados de vídeo antes de transmissão ou armazenamento, diminuindo, desse modo, a quantidade de dados necessária para representar imagens de vídeo digitais. Os dados comprimidos são, então, recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas crescentes por maior qualidade de vídeo, as técnicas de compressão e descompressão aperfeiçoadas que aperfeiçoam a razão de compressão com pouco ou nenhum comprometimento na qualidade de imagem são desejáveis.
SUMÁRIO
[0004] Em uma modalidade, a revelação inclui um método implementado por um decodificador, o método compreende: receber, por um receptor do decodificador, um fluxo de bits que compreende uma imagem codificada e uma mensagem informações suplementares de enriquecimento atual que compreende uma flag de parâmetros presentes de decodificador de referência hipotético (HRD) de unidade de decodificação (DU) (du_hrd_params_present_flag) que especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits; e decodificar, por um processador do decodificador, a imagem codificada para produzir uma imagem decodificada.
[0005] Os sistemas de codificação de vídeo podem codificar uma sequência de vídeo em um fluxo de bits como uma série de imagens codificadas. Vários parâmetros também podem ser codificados para suportar decodificação da sequência de vídeo. Por exemplo, um conjunto de parâmetros de vídeo (VPS) pode conter parâmetros relacionados à configuração de camadas, subcamadas e/ou conjuntos de camada de saída (OLSs) na sequência de vídeo. Além disso, a sequência de vídeo pode ser verificada por um HRD quanto à conformidade com padrões. Para suportar tal teste de conformidade, o VPS e/ou o SPS podem conter parâmetros de HRD. Os parâmetros relacionados a HRD também podem estar contidos em mensagens SEI. Uma mensagem SEI contém informações que não são necessárias pelo processo de decodificação a fim de determinar os valores das amostras em imagens decodificadas. Por exemplo, as mensagens SEI podem conter parâmetros de HRD que descrevem adicionalmente o processo de HRD à luz dos parâmetros de HRD contidos no VPS. Em alguns sistemas de codificação de vídeo, as mensagens SEI podem conter parâmetros que diretamente se referir ao VPS. Essa dependência cria certas dificuldades. Por exemplo, o VPS pode ser removido de um fluxo de bits ao transmitir um OLS que contém uma única camada. Essa abordagem pode ser benéfica em alguns casos visto que o VPS não contém informações úteis quando o decodificador recebe apenas uma camada. Entretanto, a omissão do VPS pode impedir que as mensagens SEI sejam analisadas de maneira apropriada devido à dependência do VPS. Especificamente, a omissão do VPS pode fazer com que as mensagens SEI retornem um erro visto que os dados dos quais as mesmas dependem no VPS não são recebidos no decodificador.
[0006] O presente exemplo inclui um mecanismo para remover dependências entre o VPS e as mensagens SEI. Por exemplo, uma du_hrd_params_present_flag pode ser codificada em uma mensagem SEI atual. A du_hrd_params_present_flag especifica se o HRD deve operar em um nível de unidade de acesso (AU) ou um nível de DU. Além disso, a mensagem SEI atual pode incluir uma flag de parâmetros de buffer de imagem codificada de DU em SEI de temporização de imagem (PT) (du_cpb_params_in_pic_timing_sei_flag) que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI ou uma mensagem SEI de informações de unidade de decodificação (DUI). Incluindo-se essas flags na mensagem SEI atual, a mensagem SEI atual não depende do VPS. Portanto, a mensagem SEI atual pode ser analisada até mesmo quando o VPS é omitido do fluxo de bits. Assim, vários erros podem ser evitados. Como resultado, a funcionalidade do codificador e do decodificador é aumentada. Além disso, remover a dependência entre as mensagens SEI e o VPS suporta remoção do VPS em certos casos, que aumenta a eficiência de codificação e, portanto, reduz uso de recurso de processador, memória e/ou sinalização de rede tanto no codificador quanto no decodificador.
[0007] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a du_hrd_params_present_flag especifica adicionalmente se um HRD opera em um nível de unidade de acesso (AU) ou em um nível de DU.
[0008] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a du_hrd_params_present_flag é definida como um ao especificar que parâmetros de HRD de nível de DU estão presentes e o HRD pode ser operado no nível de AU ou no nível de DU, e em que a du_hrd_params_present_flag é definida como zero ao especificar que parâmetros de HRD de nível de DU não estão presentes e o HRD opera no nível de AU.
[0009] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a mensagem SEI atual compreende adicionalmente uma flag de parâmetros de buffer de imagem codificada de DU em SEI de temporização de imagem (PT) (du_cpb_params_in_pic_timing_sei_flag) que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI.
[0010] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a du_cpb_params_in_pic_timing_sei_flag especifica adicionalmente se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem SEI de informações de unidade de decodificação (DUI).
[0011] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a du_cpb_params_in_pic_timing_sei_flag é definida como um ao especificar que parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI e mensagem DUI SEI não está disponível, e em que a du_cpb_params_in_pic_timing_sei_flag é definida como zero ao especificar que parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem DUI SEI e mensagens PT SEI não incluem parâmetros de atraso de remoção de CPB de nível de DU.
[0012] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a mensagem SEI atual é uma mensagem SEI de período de buffering (BP), uma mensagem PT SEI ou uma mensagem DUI SEI
[0013] Em uma modalidade, a revelação inclui um método implementado por um codificador, o método compreende: codificar, por um processador do codificador, uma imagem codificada em um fluxo de bits; codificar, no fluxo de bits, pelo processador, uma mensagem SEI atual que compreende uma du_hrd_params_present_flag que especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits; realizar, pelo processador, um conjunto de testes de conformidade de fluxo de bits no fluxo de bits com base na mensagem SEI atual; e armazenar, por uma memória acoplada ao processador, o fluxo de bits para comunicação em direção a um decodificador.
[0014] Os sistemas de codificação de vídeo podem codificar uma sequência de vídeo em um fluxo de bits como uma série de imagens codificadas. Vários parâmetros também podem ser codificados para suportar decodificação da sequência de vídeo. Por exemplo, um VPS pode conter parâmetros relacionados à configuração de camadas, subcamadas e/ou OLSs na sequência de vídeo. Além disso, a sequência de vídeo pode ser verificada por um HRD quanto à conformidade com padrões. Para suportar tal teste de conformidade, o VPS e/ou o SPS podem conter parâmetros de HRD. Os parâmetros relacionados a HRD também podem estar contidos em mensagens SEI. Uma mensagem SEI contém informações que não são necessárias pelo processo de decodificação a fim de determinar os valores das amostras em imagens decodificadas. Por exemplo, as mensagens SEI podem conter parâmetros de HRD que descrevem adicionalmente o processo de HRD à luz dos parâmetros de HRD contidos no VPS. Em alguns sistemas de codificação de vídeo, as mensagens SEI podem conter parâmetros que diretamente se referir ao VPS. Essa dependência cria certas dificuldades. Por exemplo, o VPS pode ser removido de um fluxo de bits ao transmitir um OLS que contém uma única camada. Essa abordagem pode ser benéfica em alguns casos visto que o VPS não contém informações úteis quando o decodificador recebe apenas uma camada. Entretanto, a omissão do VPS pode impedir que as mensagens SEI sejam analisadas de maneira apropriada devido à dependência do VPS. Especificamente, a omissão do VPS pode fazer com que as mensagens SEI retornem um erro visto que os dados dos quais as mesmas dependem no VPS não são recebidos no decodificador.
[0015] O presente exemplo inclui um mecanismo para remover dependências entre o VPS e as mensagens SEI. Por exemplo, uma du_hrd_params_present_flag pode ser codificada em uma mensagem SEI atual. A du_hrd_params_present_flag especifica se o HRD deve operar em um nível de AU ou um nível de DU. Além disso, a mensagem SEI atual pode incluir uma du_cpb_params_in_pic_timing_sei_flag que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI ou uma mensagem DUI SEI. Incluindo-se essas flags na mensagem SEI atual, a mensagem SEI atual não depende do VPS. Portanto, a mensagem SEI atual pode ser analisada até mesmo quando o VPS é omitido do fluxo de bits. Assim, vários erros podem ser evitados. Como resultado, a funcionalidade do codificador e do decodificador é aumentada. Além disso, remover a dependência entre as mensagens SEI e o VPS suporta remoção do VPS em certos casos, que aumenta a eficiência de codificação e, portanto, reduz uso de recurso de processador, memória e/ou sinalização de rede tanto no codificador quanto no decodificador.
[0016] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a du_hrd_params_present_flag especifica adicionalmente se um HRD opera em um nível de AU ou em um nível de DU.
[0017] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a du_hrd_params_present_flag é definida como um ao especificar que parâmetros de HRD de nível de DU estão presentes e o HRD pode ser operado no nível de AU ou no nível de DU, e em que a du_hrd_params_present_flag é definida como zero ao especificar que parâmetros de HRD de nível de DU não estão presentes e o HRD opera no nível de AU.
[0018] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a mensagem SEI atual compreende adicionalmente uma du_cpb_params_in_pic_timing_sei_flag que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI.
[0019] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a du_cpb_params_in_pic_timing_sei_flag especifica adicionalmente se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem DUI SEI.
[0020] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a du_cpb_params_in_pic_timing_sei_flag é definida como um ao especificar que parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI e mensagem DUI SEI não está disponível, e em que a du_cpb_params_in_pic_timing_sei_flag é definida como zero ao especificar que parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem DUI SEI e mensagens PT SEI não incluem parâmetros de atraso de remoção de CPB de nível de DU.
[0021] De maneira opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que a mensagem SEI atual é uma mensagem BP SEI, uma mensagem PT SEI ou uma mensagem DUI SEI.
[0022] Em uma modalidade, a revelação inclui um dispositivo de codificação de vídeo compreendendo: um processador, um receptor acoplado ao processador, uma memória acoplada ao processador, e um transmissor acoplado ao processador, em que o processador, receptor, memória e transmissor são configurados para realizar o método de qualquer um dos aspectos antecedentes.
[0023] Em uma modalidade, a revelação inclui uma mídia legível por computador não transitória que compreende um produto de programa de computador para uso por um dispositivo de codificação de vídeo, o produto de programa de computador compreende instruções executáveis em computador armazenadas na mídia legível por computador não transitória de modo que, quando executadas por um processador, fazem com que o dispositivo de codificação de vídeo realize o método de qualquer um dos aspectos antecedentes.
[0024] Em uma modalidade, a revelação inclui um decodificador que compreende: um meio de recebimento para receber um fluxo de bits que compreende uma imagem codificada e uma mensagem SEI atual que compreende uma du_hrd_params_present_flag que especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits; um meio de decodificação para decodificar a imagem codificada para produzir uma imagem decodificada; e um meio de encaminhamento para encaminhar a imagem decodificada para exibição como parte de uma sequência de vídeo decodificada.
[0025] Os sistemas de codificação de vídeo podem codificar uma sequência de vídeo em um fluxo de bits como uma série de imagens codificadas. Vários parâmetros também podem ser codificados para suportar decodificação da sequência de vídeo. Por exemplo, um VPS pode conter parâmetros relacionados à configuração de camadas, subcamadas e/ou OLSs na sequência de vídeo. Além disso, a sequência de vídeo pode ser verificada por um HRD quanto à conformidade com padrões. Para suportar tal teste de conformidade, o VPS e/ou o SPS podem conter parâmetros de HRD. Os parâmetros relacionados a HRD também podem estar contidos em mensagens SEI. Uma mensagem SEI contém informações que não são necessárias pelo processo de decodificação a fim de determinar os valores das amostras em imagens decodificadas. Por exemplo, as mensagens SEI podem conter parâmetros de HRD que descrevem adicionalmente o processo de HRD à luz dos parâmetros de HRD contidos no VPS. Em alguns sistemas de codificação de vídeo, as mensagens SEI podem conter parâmetros que diretamente se referir ao VPS. Essa dependência cria certas dificuldades. Por exemplo, o VPS pode ser removido de um fluxo de bits ao transmitir um OLS que contém uma única camada. Essa abordagem pode ser benéfica em alguns casos visto que o VPS não contém informações úteis quando o decodificador recebe apenas uma camada. Entretanto, a omissão do VPS pode impedir que as mensagens SEI sejam analisadas de maneira apropriada devido à dependência do VPS. Especificamente, a omissão do VPS pode fazer com que as mensagens SEI retornem um erro visto que os dados dos quais as mesmas dependem no VPS não são recebidos no decodificador.
[0026] O presente exemplo inclui um mecanismo para remover dependências entre o VPS e as mensagens SEI. Por exemplo, uma du_hrd_params_present_flag pode ser codificada em uma mensagem SEI atual. A du_hrd_params_present_flag especifica se o HRD deve operar em um nível de AU ou um nível de DU. Além disso, a mensagem SEI atual pode incluir uma du_cpb_params_in_pic_timing_sei_flag que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI ou uma mensagem DUI SEI. Incluindo-se essas flags na mensagem SEI atual, a mensagem SEI atual não depende do VPS. Portanto, a mensagem SEI atual pode ser analisada até mesmo quando o VPS é omitido do fluxo de bits. Assim, vários erros podem ser evitados. Como resultado, a funcionalidade do codificador e do decodificador é aumentada. Além disso, remover a dependência entre as mensagens SEI e o VPS suporta remoção do VPS em certos casos, que aumenta a eficiência de codificação e, portanto, reduz uso de recurso de processador, memória e/ou sinalização de rede tanto no codificador quanto no decodificador.
[0027] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que o decodificador é adicionalmente configurado para realizar o método de qualquer um dos aspectos antecedentes.
[0028] Em uma modalidade, a revelação inclui um codificador que compreende: um meio de codificação para: codificar uma imagem codificada em um fluxo de bits; e codificar, no fluxo de bits, uma mensagem SEI atual que compreende uma du_hrd_params_present_flag que especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits; um meio de HRD para realizar um conjunto de testes de conformidade de fluxo de bits no fluxo de bits com base na mensagem SEI atual; e um meio de armazenamento para armazenar o fluxo de bits para comunicação em direção a um decodificador.
[0029] Os sistemas de codificação de vídeo podem codificar uma sequência de vídeo em um fluxo de bits como uma série de imagens codificadas. Vários parâmetros também podem ser codificados para suportar decodificação da sequência de vídeo. Por exemplo, um VPS pode conter parâmetros relacionados à configuração de camadas, subcamadas e/ou OLSs na sequência de vídeo. Além disso, a sequência de vídeo pode ser verificada por um HRD quanto à conformidade com padrões. Para suportar tal teste de conformidade, o VPS e/ou o SPS podem conter parâmetros de HRD. Os parâmetros relacionados a HRD também podem estar contidos em mensagens SEI. Uma mensagem SEI contém informações que não são necessárias pelo processo de decodificação a fim de determinar os valores das amostras em imagens decodificadas. Por exemplo, as mensagens SEI podem conter parâmetros de HRD que descrevem adicionalmente o processo de HRD à luz dos parâmetros de HRD contidos no VPS. Em alguns sistemas de codificação de vídeo, as mensagens SEI podem conter parâmetros que diretamente se referir ao VPS. Essa dependência cria certas dificuldades. Por exemplo, o VPS pode ser removido de um fluxo de bits ao transmitir um OLS que contém uma única camada. Essa abordagem pode ser benéfica em alguns casos visto que o VPS não contém informações úteis quando o decodificador recebe apenas uma camada. Entretanto, a omissão do VPS pode impedir que as mensagens SEI sejam analisadas de maneira apropriada devido à dependência do VPS. Especificamente, a omissão do VPS pode fazer com que as mensagens SEI retornem um erro visto que os dados dos quais as mesmas dependem no VPS não são recebidos no decodificador.
[0030] O presente exemplo inclui um mecanismo para remover dependências entre o VPS e as mensagens SEI. Por exemplo, uma du_hrd_params_present_flag pode ser codificada em uma mensagem SEI atual. A du_hrd_params_present_flag especifica se o HRD deve operar em um nível de AU ou um nível de DU. Além disso, a mensagem SEI atual pode incluir uma du_cpb_params_in_pic_timing_sei_flag que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI ou uma mensagem DUI SEI. Incluindo-se essas flags na mensagem SEI atual, a mensagem SEI atual não depende do VPS. Portanto, a mensagem SEI atual pode ser analisada até mesmo quando o VPS é omitido do fluxo de bits. Assim, vários erros podem ser evitados. Como resultado, a funcionalidade do codificador e do decodificador é aumentada. Além disso, remover a dependência entre as mensagens SEI e o VPS suporta remoção do VPS em certos casos, que aumenta a eficiência de codificação e, portanto, reduz uso de recurso de processador, memória e/ou sinalização de rede tanto no codificador quanto no decodificador.
[0031] De modo opcional, em qualquer um dos aspectos antecedentes, outra implementação do aspecto fornece, em que o codificador é adicionalmente configurado para realizar o método de qualquer um dos aspectos antecedentes.
[0032] Para fins de clareza, qualquer uma dentre as modalidades antecedentes pode ser combinada com qualquer uma ou mais dentre as outras modalidades antecedentes para criar uma nova modalidade dentro do escopo da presente revelação.
[0033] Esses e outros atributos serão mais claramente entendidos a partir da descrição detalhada a seguir obtida em conjunto com os desenhos anexos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0034] Para um entendimento mais completo desta revelação, referência é feita à breve descrição a seguir, obtida em conjunto com os desenhos anexos e descrição detalhada, em que referências numéricas similares representam partes similares.
[0035] A Figura 1 é um fluxograma de um método exemplificativo de codificação de um sinal de vídeo.
[0036] A Figura 2 é um diagrama esquemático de um sistema de codificação e decodificação (codec) exemplificativo para codificação de vídeo.
[0037] A Figura 3 é um diagrama esquemático ilustrando um codificador de vídeo exemplificativo.
[0038] A Figura 4 é um diagrama esquemático ilustrando um decodificador de vídeo exemplificativo.
[0039] A Figura 5 é um diagrama esquemático ilustrando um decodificador de referência hipotético (HRD) exemplificativo.
[0040] A Figura 6 é um diagrama esquemático ilustrando uma sequência de vídeo de múltiplas camadas exemplificativa.
[0041] A Figura 7 é um diagrama esquemático ilustrando um fluxo de bits exemplificativo
[0042] A Figura 8 é um diagrama esquemático de um dispositivo de codificação de vídeo exemplificativo.
[0043] A Figura 9 é um fluxograma de um método exemplificativo de codificação de uma sequência de vídeo em um fluxo de bits empregando-se uma mensagem informações suplementares de enriquecimento (SEI) que pode não depender de um conjunto de parâmetros de vídeo (VPS).
[0044] A Figura 10 é um fluxograma de um método exemplificativo de decodificação de uma sequência de vídeo a partir de um fluxo de bits que emprega uma mensagem SEI que pode não depender de um VPS.
[0045] A Figura 11 é um diagrama esquemático de um sistema exemplificativo para codificar uma sequência de vídeo usando um fluxo de bits que emprega uma mensagem SEI que pode não depender de um VPS.
DESCRIÇÃO DETALHADA
[0046] Deve-se entender inicialmente que, embora uma implementação ilustrativa de uma ou mais modalidades seja fornecida abaixo, os sistemas e/ou métodos revelados podem ser implementados com o uso de qualquer número de técnicas, sejam atualmente conhecidas ou em existência. A revelação não deve, de modo algum, ser limitada às implementações ilustrativas, desenhos e técnicas ilustrados abaixo, incluindo os projetos e implementações exemplificativos ilustrados e descritos no presente documento, mas pode ser modificada dentro do escopo das reivindicações anexas em conjunto com seu escopo inteiro de equivalentes.
[0047] Os termos abaixo são definidos da maneira a seguir, a menos que usado em um contexto contrário na presente invenção. Especificamente, as definições a seguir se destinam a fornecer clareza adicional à presente revelação. Entretanto, termos podem ser descritos de maneira diferente em diferentes contextos. Assim, as definições a seguir devem ser consideradas um complemento e não devem ser consideradas uma limitação de quaisquer outras definições de descrições fornecidas para tais termos na presente invenção.
[0048] 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 que é configurado para empregar processos de codificação para comprimir dados de vídeo em um fluxo de bits. Um decodificador é um dispositivo que é configurado para empregar processos de decodificação para reconstruir dados de vídeo a partir de um fluxo de bits para display. Uma imagem é um arranjo de amostras de luma e/ou um arranjo de amostras de croma que criam um quadro ou um campo das mesmas. Uma fatia é um número inteiro de tiles completos ou um número inteiro de linhas de unidade de árvore de codificação (CTU) completas consecutivas (por exemplo, dentro de um tile) de uma imagem que estão exclusivamente contidas em uma única unidade de camada de abstração de rede (NAL). Uma imagem que está sendo codificada ou decodificada pode ser denominada uma imagem atual para fins de clareza de discussão. Uma imagem codificada é uma representação codificada de uma imagem que compreende unidades NAL de camada de codificação de vídeo (VCL) com um valor particular de identificador de camada de cabeçalho de unidade NAL (nuh_layer_id) dentro de uma unidade de acesso (AU) e contendo todas as unidades de árvore de codificação (CTUs) da imagem. Uma imagem decodificada é uma imagem produzida aplicando-se um processo de decodificação a uma imagem codificada.
[0049] Uma AU é um conjunto de imagens codificadas que são incluídas em diferentes camadas e são associadas a um mesmo tempo para emissão a partir de um buffer de imagem decodificada (DPB). Uma unidade de decodificação (DU) é uma AU ou um subconjunto de uma AU incluindo uma ou mais unidades VCL NAL em uma AU e unidades não VCL NAL associadas. Uma unidade NAL é uma estrutura de sintaxe contendo dados na forma de uma Carga Útil de Sequência de Byte Bruto (RBSP), uma indicação do tipo de dados, e intercalados conforme desejado com bytes de prevenção de emulação. Uma unidade VCL NAL é uma unidade NAL codificada para conter dados de vídeo, tais como uma fatia codificada de uma imagem. Uma unidade não VCL NAL é uma unidade NAL que contém dados não vídeo, tais como sintaxe e/ou parâmetros que suportam decodificação dos dados de vídeo, realização de verificação de conformidade ou outras operações. Uma camada é um conjunto de unidades VCL NAL que compartilham uma característica especificada (por exemplo, uma resolução comum, taxa de quadro, tamanho de imagem, etc.), conforme indicado por ID de camada e unidades não VCL NAL associadas
[0050] Um decodificador de referência hipotético (HRD) é um modelo de decodificador que opera em um codificador que verifica a variabilidade de fluxos de bits produzidos por um processo de codificação para verificar conformidade com restrições especificadas. Um teste de conformidade de fluxo de bits é um teste para determinar se um fluxo de bits codificado está em conformidade com um padrão, tal como Codificação de Vídeo Versátil (VVC). Os parâmetros de HRD são elementos de sintaxe que inicializam e/ou definem condições operacionais de um HRD. Os parâmetros de HRD podem ser incluídos em mensagens informações suplementares de enriquecimento (SEI), em um conjunto de parâmetros de sequência (SPS) e/ou em um conjunto de parâmetros de vídeo (VPS). Uma flag de parâmetros presentes de HRD de DU (du_hrd_params_present_flag) é um elemento de sintaxe que especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits. Um nível de AU é uma descrição de uma operação como sendo aplicada a uma ou mais AUs inteiras (por exemplo, aplicada a um ou mais grupos inteiros de imagens que compartilham o mesmo tempo de emissão). Um nível de DU é uma descrição de uma operação como sendo aplicada a uma ou mais DUs inteiras (por exemplo, aplicada a uma ou mais imagens).
[0051] Uma mensagem SEI é uma estrutura de sintaxe com semântica especificada que transporta informações que não são necessárias pelo processo de decodificação a fim de determinar os valores das amostras em imagens decodificadas. Uma unidade SEI NAL é uma unidade NAL que contém uma ou mais mensagens SEI. Uma unidade SEI NAL específica pode ser denominada uma unidade SEI NAL atual. Uma mensagem SEI de período de buffering (BP) é um tipo de mensagem SEI que contém parâmetros de HRD para inicializar um HRD para gerenciar um buffer de imagem codificada (CPB). Uma mensagem SEI de temporização de imagem (PT) é um tipo de mensagem SEI que contém parâmetros de HRD para gerenciar informações de entrega para AUs no CPB e/ou um buffer de imagem decodificada (DPB). Uma mensagem SEI de informações de unidade de decodificação (DUI) é um tipo de mensagem SEI que contém parâmetros de HRD para gerenciar informações de entrega para DUs no CPB e/ou no DPB. Uma flag de parâmetros de DU CPB em PT SEI (du_cpb_params_in_pic_timing_sei_flag) é um elemento de sintaxe que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI e/ou uma mensagem DUI SEI. Um CPB é um buffer primeiro a entrar primeiro a sair em um HRD que contém DUs em ordem de decodificação. Um atraso de remoção de CPB é uma duração de tempo que uma ou mais imagens podem permanecer em um CPB antes de transferência para um DPB em um HRD. Um VPS é uma estrutura de sintaxe que contém dados relacionados a todo o fluxo de bits. Um SPS é uma estrutura de sintaxe uma estrutura de sintaxe contendo elementos de sintaxe que se aplicam a zero ou mais sequências de vídeo de camada codificada inteira. Uma sequência de vídeo codificada é um conjunto de uma ou mais imagens codificadas. Uma sequência de vídeo decodificada é um conjunto de uma ou mais imagens decodificadas.
[0052] Os acrônimos a seguir são usados na presente invenção, Unidade de Acesso (AU), Bloco de Árvore de Codificação (CTB), Unidade de Árvore de Codificação (CTU), Unidade de Codificação (CU), Sequência de Vídeo de Camada Codificada (CLVS), Início de Sequência de Vídeo de Camada Codificada (CLVSS), Sequência de Vídeo Codificada (CVS), Início de Sequência de Vídeo Codificada (CVSS), Equipe de Especialistas em Vídeo Conjunta (JVET), Decodificador de Referência Hipotético HRD, Conjunto de Tiles de Movimento Restringido (MCTS), Unidade de Transferência Máxima (MTU), Camada de Abstração de Rede (NAL), Conjunto de Camadas de Saída (OLS), Contagem de Ordem de Imagem (POC), Ponto de Acesso Aleatório (RAP), Carga Útil de Sequência de Byte Bruto (RBSP), Conjunto de Parâmetros de Sequência (SPS), Conjunto de Parâmetros de Vídeo (VPS), Codificação de Vídeo Versátil (VVC).
[0053] Muitas técnicas de compressão de vídeo podem ser empregadas para reduzir o tamanho de arquivos de vídeo com perda mínima de dados. Por exemplo, as técnicas de compressão de vídeo podem incluir realizar predição espacial (por exemplo, imagens intra) e/ou predição temporal (por exemplo, imagens inter) para reduzir ou remover redundância de dados em sequências de vídeo. Para codificação de vídeo com base em bloco, uma fatia de vídeo (por exemplo, uma imagem de vídeo ou uma porção de uma imagem de vídeo) pode ser particionada em blocos de vídeo, que também podem ser denominados blocos de árvore, blocos de árvore de codificação (CTBs), unidades de árvore de codificação (CTUs), unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia codificada de modo intra (I) de uma imagem são codificados com o uso de predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia de predição unidirecional (P) ou predição bidirecional (B) codificada de modo inter de uma imagem podem ser codificados empregando-se predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação a amostras de referência em outras imagens de referência. As imagens podem ser denominadas quadros e/ou pictures, e imagens de referência podem ser denominadas quadros de referência e/ou imagens de referência. A predição espacial ou temporal resulta em um bloco preditivo que representa um bloco de imagem. Os dados residuais representam diferenças de pixel entre o bloco de imagem original e o bloco preditivo. Assim, um bloco codificado de modo inter é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco codificado de modo intra é codificado de acordo com um modo de codificação intra e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada. Isso resulta em coeficientes de transformada residuais, que podem ser quantizados. Os coeficientes de transformada quantizados podem ser inicialmente dispostos em um arranjo bidimensional. Os coeficientes de transformada quantizados podem ser submetidos à varredura a fim de produzir um vetor unidimensional de coeficientes de transformada. A codificação de entropia pode ser aplicada para alcançar ainda mais compressão. Tais técnicas de compressão de vídeo são discutidas e mais detalhes abaixo
[0054] Para garantir que um vídeo codificado possa ser decodificado de maneira acurada, o vídeo é codificado e decodificado de acordo com padrões de codificação de vídeo correspondentes. Os padrões de codificação de vídeo incluem Setor de Padronização de União Internacional de Telecomunicação (ITU) (ITU-T) H.261, Organização Internacional para Padronização/Comissão Eletrotécnica Internacional (ISO/IEC) Grupo de Especialistas em Imagem em Movimento (MPEG)-1 Parte 2, ITU-T H.262 ou ISO/IEC MPEG-2 Parte 2, ITU-T H.263, ISO/IEC MPEG-4 Parte 2, Codificação de Vídeo Avançada (AVC), também conhecida como ITU-T H.264 ou ISO/IEC MPEG-4 Parte 10 e Codificação de Vídeo de Alta Eficiência (HEVC), também conhecida como ITU-T H.265 ou MPEGH Parte 2. AVC inclui extensões, tais como Codificação de Vídeo Escalável (SVC), Codificação de Vídeo Multivista (MVC) e Codificação de Vídeo Multivista mais Profundidade (MVC+D), e AVC tridimensional (3D) (3D-AVC). HEVC inclui extensões, tais como HEVC Escalável (SHVC), HEVC Multivista (MV-HEVC) e HEVC 3D (3D-HEVC). A equipe de especialistas em vídeo conjunta (JVET) de ITU-T e ISO/IEC deu início ao desenvolvimento de um padrão de codificação de vídeo denominado Codificação de Vídeo Versátil (VVC). A VVC está incluída em um Projeto de Trabalho (WD), que inclui JVET-O2001-v14.
[0055] Os sistemas de codificação de vídeo podem codificar uma sequência de vídeo em um fluxo de bits como uma série de imagens codificadas. Vários parâmetros também podem ser codificados para suportar decodificação da sequência de vídeo. Por exemplo, um conjunto de parâmetros de vídeo (VPS) pode conter parâmetros relacionados à configuração de camadas, subcamadas e/ou conjuntos de camada de saída (OLSs) na sequência de vídeo. Além disso, a sequência de vídeo pode ser verificada por um decodificador de referência hipotético (HRD) quanto à conformidade com padrões. Para suportar tal teste de conformidade, o VPS e/ou o SPS podem conter parâmetros de HRD. Os parâmetros relacionados a HRD também podem estar contidos em mensagens informações suplementares de enriquecimento (SEI). Uma mensagem SEI contém informações que não são necessárias pelo processo de decodificação a fim de determinar os valores das amostras em imagens decodificadas. Por exemplo, as mensagens SEI podem conter parâmetros de HRD que descrevem adicionalmente o processo de HRD à luz dos parâmetros de HRD contidos no VPS. Em alguns sistemas de codificação de vídeo, as mensagens SEI podem conter parâmetros que diretamente se referir ao VPS. Essa dependência cria certas dificuldades. Por exemplo, o VPS pode ser removido de um fluxo de bits ao transmitir um OLS que contém uma única camada. Essa abordagem pode ser benéfica em alguns casos visto que o VPS não contém informações úteis quando o decodificador recebe apenas uma camada. Entretanto, a omissão do VPS pode impedir que as mensagens SEI sejam analisadas de maneira apropriada devido à dependência do VPS. Especificamente, a omissão do VPS pode fazer com que as mensagens SEI retornem um erro visto que os dados dos quais as mesmas dependem no VPS não são recebidos no decodificador.
[0056] É revelado, na presente invenção, um mecanismo para remover dependências entre o VPS e as mensagens SEI. Por exemplo, uma flag de parâmetros presentes de decodificador de referência hipotético (HRD) de unidade de decodificação (DU) (du_hrd_params_present_flag) pode ser codificada em uma mensagem SEI atual. A du_hrd_params_present_flag especifica se o HRD deve operar em um nível de unidade de acesso (AU) ou um nível de unidade de decodificação (DU). Além disso, a mensagem SEI atual pode incluir uma flag de parâmetros de buffer de imagem codificada de DU em SEI de temporização de imagem (PT) (du_cpb_params_in_pic_timing_sei_flag) que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI ou uma mensagem SEI de informações de unidade de decodificação (DUI). Incluindo-se essas flags na mensagem SEI atual, a mensagem SEI atual não depende do VPS. Portanto, a mensagem SEI atual pode ser analisada até mesmo quando o VPS é omitido do fluxo de bits. Assim, vários erros podem ser evitados. Como resultado, a funcionalidade do codificador e do decodificador é aumentada. Além disso, remover a dependência entre as mensagens SEI e o VPS suporta remoção do VPS em certos casos, que aumenta a eficiência de codificação e, portanto, reduz uso de recurso de processador, memória e/ou sinalização de rede tanto no codificador quanto no decodificador.
[0057] A Figura 1 é um fluxograma de um método operacional exemplificativo 100 de codificação de um sinal de vídeo. Especificamente, um sinal de vídeo é codificado em um codificador. O processo de codificação comprime o sinal de vídeo empregando-se vários mecanismos para reduzir o tamanho de arquivo de vídeo. Um tamanho de arquivo menor permite que o arquivo de vídeo comprimido seja transmitido para um usuário, enquanto reduz sobrecarga de largura de banda associada. O decodificador decodifica, então, o arquivo de vídeo comprimido para reconstruir o sinal de vídeo original para exibição a um usuário final. O processo de decodificação geralmente reflete o processo de codificação para permitir que o decodificador reconstrua, de maneira consistente, o sinal de vídeo.
[0058] Na etapa 101, o sinal de vídeo é inserido no codificador. Por exemplo, o sinal de vídeo pode ser um arquivo de vídeo não comprimido armazenado na memória. Conforme outro exemplo, o arquivo de vídeo pode ser capturado por um dispositivo de captura de vídeo, tal como uma câmera de vídeo, e codificado para suportar transmissão por streaming em tempo real do vídeo. O arquivo de vídeo pode incluir tanto um componente de áudio quanto um componente de vídeo. O componente de vídeo contém uma série de quadros de imagem que, quando vista em uma sequência, proporciona a impressão visual de movimento. Os quadros contêm pixels que são expressos em termos de luz, denominados, na presente invenção, componentes de luma (ou amostras de luma), e cor, denominados componentes de croma (ou amostras de cor). Em alguns exemplos, os quadros também podem conter valores de profundidade para suportar visualização tridimensional.
[0059] Na etapa 103, o vídeo é particionado em blocos. O particionamento inclui subdividir os pixels em cada quadro em blocos quadrangulares e/ou retangulares para compressão. Por exemplo, em Codificação de Vídeo de Alta Eficiência (HEVC) (também conhecida como H.265 e MPEG-H Parte 2) o quadro pode ser primeiro dividido em unidades de árvore de codificação (CTUs), que são blocos de um tamanho predefinido (por exemplo, sessenta e quatro pixels por sessenta e quatro pixels). As CTUs contêm amostras de luma e de croma. As árvores de codificação podem ser empregadas para dividir as CTUs em blocos e, então, subdividir, de modo recursivo, os blocos até que configurações sejam alcançadas que suportam codificação adicional. Por exemplo, 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, componentes de croma de um quadro podem ser subdivididos até que os blocos individuais contenham valores de cor relativamente homogêneos. Assim, os mecanismos de particionamento variam dependendo do conteúdo dos quadros de vídeo.
[0060] Na etapa 105, vários mecanismos de compressão são empregados para comprimir os blocos de imagem particionados na etapa 103. Por exemplo, predição inter e/ou predição intra pode ser empregada. A predição inter é projetada para obter vantagem do fato de que objetos em uma cena comum tendem a aparecer em quadros sucessivos. Assim, um bloco que retrata um objeto em um quadro de referência não precisa ser descrito de maneira repetida em quadros adjacentes. Especificamente, um objeto, tal como uma tabela, pode permanecer em uma posição constante através de múltiplos quadros. Portanto, a tabela é descrita uma vez e quadros adjacentes podem se referir novamente ao quadro de referência. Os mecanismos de compatibilidade padrão podem ser empregados para compatibilizar objetos através de múltiplos quadros. Além disso, objetos em movimento podem ser representados através de múltiplos quadros, por exemplo, devido a movimento de objeto ou movimento de câmera. Conforme um exemplo particular, um vídeo pode mostrar um automóvel que se move através da tela através de múltiplos quadros. Os vetores de movimento podem ser empregados para descrever tal movimento. Um vetor de movimento é um vetor bidimensional que fornece um deslocamento a partir das coordenadas de um objeto em um quadro para as coordenadas do objeto em um quadro de referência. Como tal, a predição inter pode codificar um bloco de imagem em um quadro atual como um conjunto de vetores de movimento indicando um deslocamento a partir de um bloco correspondente em um quadro de referência.
[0061] A predição intra codifica blocos em um quadro comum. A predição intra obtém vantagem do fato de que componentes de luma e de croma tendem a se aglomerar em um quadro. Por exemplo, um patch de verde em uma porção de uma árvore tende a ser posicionado de modo adjacente a patches similares de verde. A predição intra emprega múltiplos modos de predição direcionais (por exemplo, trinta e três em HEVC), um modo plano e um modo de corrente contínua (DC). Os modos direcionais indicam que um bloco atual é similar/igual a amostras de um bloco vizinho em uma direção correspondente. O modo plano indica que uma série de blocos ao longo de uma linha/coluna (por exemplo, um plano) pode ser interpolada com base em blocos vizinhos nas bordas da linha. O modo plano, de fato, indica uma transição suave de luz/cor através de uma linha/coluna empregando-se uma inclinação relativamente constante na mudança de valores. O modo DC é empregado para suavização de delimitação e indica que um bloco é similar/igual a um valor médio associado a amostras de todos os blocos vizinhos associados às direções angulares dos modos de predição direcionais. Assim, blocos de predição intra podem representar blocos de imagem como vários valores de modo de predição relacional em vez dos valores reais. Além disso, blocos de predição inter podem representar blocos de imagem como valores de vetor de movimento em vez dos valores reais. Em qualquer um dos 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 adicionalmente o arquivo.
[0062] Na etapa 107, várias técnicas de filtragem podem ser aplicadas. Em HEVC, os filtros são aplicados de acordo com um esquema de filtragem inloop. A predição com base em bloco discutida acima pode resultar na criação de imagens em bloco no decodificador. Além disso, o esquema de predição com base em bloco pode codificar um bloco e, então, reconstruir o bloco codificado para uso posterior como um bloco de referência. O esquema de filtragem in-loop aplica, de modo iterativo, filtros de supressão de ruído, filtros de desblocagem, filtros loop adaptativo e filtros de deslocamento adaptativo de amostra (SAO) aos blocos/quadros. Esses filtros mitigam tais artefatos de blocagem de modo que o arquivo codificado possa ser reconstruído de maneira acurada. Além disso, esses filtros mitigam artefatos nos blocos de referência reconstruídos de modo que seja menos provável que artefatos criem artefatos adicionais em blocos subsequentes que são codificados com base nos blocos de referência reconstruídos.
[0063] Uma vez que o sinal de vídeo tiver sido particionado, comprimido e filtrado, os dados resultantes são codificados em um fluxo de bits na etapa 109. O fluxo de bits inclui os dados discutidos acima bem como quaisquer dados de sinalização desejados para suportar a reconstrução de sinal de vídeo apropriada no decodificador. Por exemplo, tais dados podem incluir dados de partição, dados de predição, blocos residuais e várias flags que fornecem instruções de codificação ao decodificador. O fluxo de bits pode ser armazenado em memória para transmissão em direção a um decodificador mediante solicitação. O fluxo de bits também pode ser transmitido por broadcast e/ou transmitido por multicast em direção a uma pluralidade de decodificadores. A criação do fluxo de bits é um processo iterativo. Assim, as etapas 101, 103, 105, 107 e 109 podem ocorrer de maneira contínua e/ou simultânea através de muitos quadros e blocos. A ordem mostrada na Figura 1 é apresentada por questão de clareza e para facilitar a discussão, e não se destina a limitar o processo de codificação de vídeo a uma ordem particular.
[0064] O decodificador recebe o fluxo de bits e inicia o processo de decodificação na etapa 111. Especificamente, o decodificador emprega um esquema de decodificação de entropia para converter o fluxo de bits em dados de vídeo e sintaxe correspondentes. O decodificador emprega os dados de sintaxe a partir do fluxo de bits para determinar as partições para os quadros na etapa 111. O particionamento deve ser compatível com os resultados de particionamento de bloco na etapa 103. A codificação/decodificação de entropia, conforme empregado na etapa 111, é descrita. O codificador faz muitas escolhas durante o processo de compressão, tais como seleção de esquemas de particionamento de bloco a partir de várias escolhas possíveis com base no posicionamento espacial de valores na(s) imagem(ns) de entrada. A sinalização das escolhas exatas pode empregar um grande número de bins. Conforme usado na presente invenção, um bin é um valor binário que é tratado como uma variável (por exemplo, um valor de bit que pode variar dependendo do contexto). A codificação de entropia permite que o codificador descarte quaisquer opções que sejam claramente inviáveis para um caso particular, deixando um conjunto de opções permitidas. Atribui-se, então, a cada opção permitida, uma palavra-código. O comprimento das palavras-código se baseia no número de opções permitidas (por exemplo, um bin para duas opções, dois bins para três a quatro opções, etc.) O codificador codifica, então, a palavra-código para a opção selecionada. Esse esquema reduz o tamanho das palavras-código, visto que as palavras-código são tão grandes quanto desejado para indicar unicamente uma seleção a partir de um subconjunto pequeno de opções permitidas em oposição à indicação única da seleção a partir de um conjunto potencialmente grande de todas as opções possíveis. O decodificador decodifica, então, a seleção determinando-se o conjunto de opções permitidas de um modo similar ao codificador. Ao determinar o conjunto de opções permitidas, o decodificador pode ler a palavra-código e determinar a seleção feita pelo codificador.
[0065] Na etapa 113, o decodificador realiza decodificação de bloco. Especificamente, o decodificador emprega transformadas inversas para gerar blocos residuais. Então, o decodificador emprega os blocos residuais e blocos de predição correspondentes para reconstruir os blocos de imagem de acordo com o particionamento. Os blocos de predição podem incluir blocos de predição intra e blocos de predição inter, conforme gerado no codificador na etapa 105. Os blocos de imagem reconstruídos são, então, posicionados em quadros de um sinal de vídeo reconstruído de acordo com os dados de particionamento determinados na etapa 111. A sintaxe para a etapa 113 também pode ser sinalizada no fluxo de bits através de codificação de entropia, conforme discutido acima.
[0066] Na etapa 115, a filtragem é realizada nos quadros do sinal de vídeo reconstruído de um modo similar à etapa 107 no codificador. Por exemplo, filtros de supressão de ruído, filtros de desblocagem, filtros loop adaptativo e filtros SAO podem ser aplicados aos quadros para remover artefatos de blocagem. Uma vez que os quadros são filtrados, o sinal de vídeo pode ser emitido a um display na etapa 117 para visualização por um usuário final.
[0067] A Figura 2 é um diagrama esquemático de um sistema de codificação e decodificação (codec) exemplificativo 200 para codificação de vídeo. Especificamente, o sistema codec 200 fornece funcionalidade para suportar a implementação do método operacional 100. O sistema codec 200 é generalizado para retratar componentes empregados tanto em um codificador quanto em um decodificador. O sistema codec 200 recebe e particiona um sinal de vídeo conforme discutido em relação às etapas 101 e 103 no método operacional 100, que resulta em um sinal de vídeo particionado 201. O sistema codec 200 comprime, então, o sinal de vídeo particionado 201 em um fluxo de bits codificado ao atuar como um codificador, conforme discutido em relação às etapas 105, 107 e 109 no método 100. Ao atuar como um decodificador, o sistema codec 200 gera um sinal de vídeo de saída a partir do fluxo de bits, conforme discutido em relação às etapas 111, 113, 115 e 117 no método operacional 100. O sistema codec 200 inclui um componente de controle de codificador geral 211, um componente de escalonamento de transformada e quantização 213, um componente de estimação de imagem intra 215, um componente de predição de imagem intra 217, um componente de compensação de movimento 219, um componente de estimação de movimento 221, um componente de escalonamento e transformada inversa 229, um componente de análise de controle de filtro 227, um componente de filtros in-loop 225, um componente de buffer de imagem decodificada 223 e um componente de codificação aritmética binária adaptativa ao contexto (CABAC) e formatação de cabeçalho 231. Tais componentes são acoplados conforme mostrado. Na Figura 2, linhas pretas indicam movimento de dados a serem codificados/decodificados enquanto linhas tracejadas indicam movimento de dados de controle que controlam a operação de outros componentes. Os componentes do sistema codec 200 podem estar todos presentes no codificador. O decodificador pode incluir um subconjunto dos componentes do sistema codec 200. Por exemplo, o decodificador pode incluir o componente de predição de imagem intra 217, o componente de compensação de movimento 219, o componente de escalonamento e transformada inversa 229, o componente de filtros in-loop 225 e o componente de buffer de imagem decodificada 223. Esses componentes serão descritos a seguir.
[0068] O sinal de vídeo particionado 201 é uma sequência de vídeo capturada que foi particionada em blocos de pixels por uma árvore de codificação. Uma árvore de codificação emprega vários modos de repartição para subdividir um bloco de pixels em blocos menores de pixels. Esses blocos podem ser, então, subdivididos adicionalmente em blocos menores. Os blocos podem ser denominados nós na árvore de codificação. Nós-pai maiores são repartidos em nós-filho menores. O número de vezes que um nó é subdividido é denominado a profundidade do nó/árvore de codificação. Os blocos divididos podem ser incluídos em unidades de codificação (CUs) em alguns casos. Por exemplo, uma CU pode ser uma subporção de uma CTU que contém um bloco de luma, bloco(s) de croma (Cr) de diferença de vermelho e um bloco(s) de croma (Cb) de diferença de azul em conjunto com instruções de sintaxe correspondentes para a CU. Os modos de repartição podem incluir uma árvore binária (BT), árvore tripla (TT) e uma árvore quaternária (QT) empregadas para particionar um nó em dois, três ou quatro nós-filho, respectivamente, de formatos variados dependendo dos modos de repartição empregados. O sinal de vídeo particionado 201 é encaminhado para o componente de controle de codificador geral 211, o componente de escalonamento de transformada e quantização 213, o componente de estimação de imagem intra 215, o componente de análise de controle de filtro 227 e o componente de estimação de movimento 221 para compressão.
[0069] O componente de controle de codificador geral 211 é configurado para tomar decisões relacionadas à codificação das imagens da sequência de vídeo no fluxo de bits de acordo com restrições de aplicação. Por exemplo, o componente de controle de codificador geral 211 gerencia a otimização de tamanho de taxa de bit/fluxo de bits versus qualidade de reconstrução. Tais decisões podem ser tomadas com base em disponibilidade de largura de banda/espaço de armazenamento e solicitações de resolução de imagem. O componente de controle de codificador geral 211 também gerencia a utilização de buffer à luz de velocidade de transmissão para mitigar questões de insuficiência e de saturação de buffer. Para gerenciar essas questões, o componente de controle de codificador geral 211 gerencia particionamento, predição e filtragem pelos outros componentes. Por exemplo, o componente de controle de codificador geral 211 pode aumentar dinamicamente a complexidade de compressão para aumentar a resolução e aumentar o uso de largura de banda ou diminuir a complexidade de compressão para diminuir a resolução e o uso de largura de banda. Portanto, o componente de controle de codificador geral 211 controla os outros componentes do sistema codec 200 para equilibrar a qualidade de reconstrução de sinal de vídeo com preocupações de taxa de bits. O componente de controle de codificador geral 211 cria dados de controle, que controlam a operação dos outros componentes. Os dados de controle também são encaminhados para o componente de formatação de cabeçalho e CABAC 231 para serem codificados no fluxo de bits para sinalizar parâmetros para decodificação no decodificador.
[0070] O sinal de vídeo particionado 201 também é enviado ao componente de estimação de movimento 221 e ao componente de compensação de movimento 219 para predição inter. Um quadro ou fatia do sinal de vídeo particionado 201 pode ser dividido em múltiplos blocos de vídeo. O componente de estimação de movimento 221 e o componente de compensação de movimento 219 realizam codificação preditiva inter do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer predição temporal. O sistema codec 200 pode realizar múltiplos passes de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0071] O componente de estimação de movimento 221 e o componente de compensação de movimento 219 podem ser altamente integrados, mas são ilustrados de forma separada para fins conceituais. A estimação de movimento, realizada pelo componente de estimação de movimento 221, é o processo de geração de vetores de movimento, que estimam movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de um objeto codificado em relação a um bloco preditivo. Constata-se que um bloco preditivo é um bloco que é estritamente compatível com o bloco a ser codificado, em termos de diferença de pixel. Um bloco preditivo também pode ser denominado um bloco de referência. Tal diferença de pixel pode ser determinada pela soma da diferença absoluta (SAD), soma da diferença quadrática (SSD) ou outra métrica de diferença. HEVC emprega vários objetos codificados incluindo uma CTU, blocos de árvore de codificação (CTBs) e CUs. Por exemplo, uma CTU pode ser dividida em CTBs, que podem, então, ser divididos em CBs para inclusão em CUs. Uma CU pode ser codificada como uma unidade de predição contendo dados de predição e/ou uma unidade de transformada (TU) contendo dados residuais transformados para a CU. O componente de estimação de movimento 221 gera vetores de movimento, unidades de predição e TUs usando-se uma análise de distorção-taxa como parte de um processo de otimização de distorção de taxa. Por exemplo, o componente de estimação de movimento 221 pode determinar múltiplos blocos de referência, múltiplos vetores de movimento, etc. para um bloco/quadro atual, e pode selecionar os blocos de referência, vetores de movimento, etc. que têm as melhores características de distorção-taxa. As melhores características de distorção-taxa equilibram qualidade de reconstrução de vídeo (por exemplo, quantidade de perda de dados por compressão) com eficiência de codificação (por exemplo, tamanho da codificação final).
[0072] Em alguns exemplos, o sistema codec 200 pode calcular valores para posições de pixel subinteiras de imagens de referência armazenadas no componente de buffer de imagem decodificada 223. Por exemplo, o sistema codec de vídeo 200 pode interpolar valores de um quarto de posições de pixel, um oitavo de posições de pixel ou outras posições de pixel fracionadas da imagem de referência. Portanto, o componente de estimação de movimento 221 pode realizar uma busca de movimento em relação às posições de pixel inteiras e posições de pixel fracionadas e emitir um vetor de movimento com precisão de pixel fracionada. O componente de estimação de movimento 221 calcula um vetor de movimento para uma unidade de predição de um bloco de vídeo em uma fatia codificada de modo inter comparando-se a posição da unidade de predição à posição de um bloco preditivo de uma imagem de referência. O componente de estimação de movimento 221 emite o vetor de movimento calculado como dados de movimento para o componente de formatação de cabeçalho e CABAC 231 para codificação e movimento para o componente de compensação de movimento 219.
[0073] A compensação de movimento, realizada pelo componente de compensação de movimento 219, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pelo componente de estimação de movimento 221. Novamente, o componente de estimação de movimento 221 e o componente de compensação de movimento 219 podem ser funcionalmente integrados, em alguns exemplos. Mediante o recebimento do vetor de movimento para a unidade de predição do bloco de vídeo atual, o componente de compensação de movimento 219 pode localizar o bloco preditivo para onde o vetor de movimento aponta. Um bloco de vídeo residual é, então, formado subtraindose valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo atual sendo codificado, formando valores de diferença de pixel. Em geral, o componente de estimação de movimento 221 realiza estimação de movimento em relação a componentes de luma, e o componente de compensação de movimento 219 usa vetores de movimento calculados com base nos componentes de luma para componentes de croma e componentes de luma. O bloco preditivo e o bloco residual são encaminhados ao componente de escalonamento de transformada e quantização 213.
[0074] O sinal de vídeo particionado 201 também é enviado ao componente de estimação de imagem intra 215 e ao componente de predição de imagem intra 217. Assim como com o componente de estimação de movimento 221 e com o componente de compensação de movimento 219, o componente de estimação de imagem intra 215 e o componente de predição de imagem intra 217 podem ser altamente integrados, mas são ilustrados de maneira separada para fins conceituais. O componente de estimação de imagem intra 215 e o componente de predição de imagem intra 217 predizem de modo intra um bloco atual em relação a blocos em um quadro atual, como uma alternativa à predição inter realizada pelo componente de estimação de movimento 221 e pelo componente de compensação de movimento 219 entre quadros, conforme descrito acima. Em particular, o componente de estimação de imagem intra 215 determina um modo de predição intra a ser usado para codificar um bloco atual. Em alguns exemplos, o componente de estimação de imagem intra 215 seleciona um modo de predição intra apropriado para codificar um bloco atual a partir de múltiplos modos de predição intra testados. Os modos de predição intra selecionados são, então, encaminhados ao componente de CABAC 231 e formatação de cabeçalho para codificação.
[0075] Por exemplo, o componente de estimação de image intra 215 calcula valores de distorção-taxa usando uma análise de distorção-taxa para os vários modos de predição intra testados, e seleciona o modo de predição intra que tem as melhores características de distorção-taxa entre os modos testados. A análise de distorção-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 estimação de imagem intra 215 calcula razões das distorções e taxas para os vários blocos codificados para determinar qual modo de predição intra exibe o melhor valor de distorção-taxa para o bloco. Além disso, o componente de estimação de imagem intra 215 pode ser configurado para codificar blocos de profundidade de um mapa de profundidade usando um modo de modelagem de profundidade (DMM) com base em otimização de distorçãotaxa (RDO).
[0076] O componente de predição de imagem intra 217 pode gerar um bloco residual a partir do bloco preditivo com base nos modos de predição intra selecionados determinados pelo componente de estimação de imagem intra 215 quando implementado em um codificador ou ler o bloco residual a partir do fluxo de bits quando implementado em um decodificador. O bloco residual inclui a diferença em valores entre o bloco preditivo e o bloco original, representada como uma matriz. O bloco residual é, então, encaminhado para o componente de escalonamento de transformada e quantização 213. O componente de estimação de imagem intra 215 e o componente de predição de imagem intra 217 podem operar em componentes de luma e de croma.
[0077] O componente de escalonamento de transformada e quantização 213 é configurado para comprimir adicionalmente o bloco residual. O componente de escalonamento de transformada e quantização 213 aplica uma transformada, tal como uma transformada discreta de cosseno (DCT), uma transformada discreta de seno (DST) ou uma transformada conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo que compreende valores de coeficiente de transformada residual. As transformadas wavelet, transformadas de número inteiro, transformadas de sub-banda ou outros tipos de transformadas também podem ser usados. A transformada pode converter as informações residuais de um domínio de valor de pixel para um domínio de transformada, tal como um domínio de frequência. O componente de escalonamento de transformada e quantização 213 também é configurado para escalonar as informações residuais transformadas, por exemplo, com base em frequência. Tal escalonamento envolve aplicar um fator de escala às informações residuais de modo que diferentes informações de frequência sejam quantizadas em diferentes granularidades, o que pode afetar a qualidade visual final do vídeo reconstruído. O componente de escalonamento de transformada e quantização 213 também é configurado para quantizar os coeficientes de transformada para reduzir adicionalmente taxa de bits. O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes. O grau de quantização pode ser modificado ajustando-se um parâmetro de quantização. Em alguns exemplos, o componente de escalonamento de transformada e quantização 213 pode realizar, então, uma varredura da matriz incluindo os coeficientes de transformada quantizados. Os coeficientes de transformada quantizados são encaminhados para o componente de formatação de cabeçalho e CABAC 231 para serem codificados no fluxo de bits.
[0078] O componente de escalonamento e transformada inversa 229 aplica uma operação inversa do componente de escalonamento de transformada e quantização 213 para suportar estimação de movimento. O componente de escalonamento e transformada inversa 229 aplica escalonamento inverso, transformação e/ou quantização para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso posterior como um bloco de referência que pode se tornar um bloco preditivo para outro bloco atual. O componente de estimação de movimento 221 e/ou o componente de compensação de movimento 219 pode calcular um bloco de referência adicionando-se o bloco residual novamente a um bloco preditivo correspondente para uso em estimação de movimento de um bloco/quadro posterior. Os filtros são aplicados aos blocos de referência reconstruídos para mitigar artefatos criados durante escalonamento, quantização e transformada. Tais artefatos podem causar, de outro modo, predição não acurada (e criar artefatos adicionais) quando blocos subsequentes são preditos.
[0079] O componente de análise de controle de filtro 227 e o componente de filtros in-loop 225 aplicam os filtros aos blocos residuais e/ou a blocos de imagem reconstruídos. Por exemplo, o bloco residual transformado do componente de escalonamento e transformada inversa 229 pode ser combinado com um bloco de predição correspondente do componente de predição de imagem intra 217 e/ou componente de compensação de movimento 219 para reconstruir o bloco de imagem original. Os filtros podem ser aplicados, então, ao bloco de imagem reconstruído. Em alguns exemplos, em vez disso, os filtros podem ser aplicados aos blocos residuais. Assim como com outros componentes na Figura 2, o componente de análise de controle de filtro 227 e o componente de filtros in-loop 225 são altamente integrados e podem ser implementados em conjunto, mas são retratados de maneira separada para fins conceituais. Os filtros aplicados aos blocos de referência reconstruídos são aplicados a regiões espaciais particulares e incluem múltiplos parâmetros para ajustar o modo que tais filtros são aplicados. O componente de análise de controle de filtro 227 analisa os blocos de referência reconstruídos para determinar onde tais filtros devem ser aplicados e define parâmetros correspondentes. Tais dados são encaminhados para o componente de formatação de cabeçalho e CABAC 231 como dados de controle de filtro para codificação. O componente de filtros in-loop 225 aplica tais filtros com base nos dados de controle de filtro. Os filtros podem incluir um filtro de desblocagem, um filtro de supressão de ruído, um filtro SAO e um filtro in-loop adaptativo. Tais filtros podem ser aplicados no domínio espacial/pixel (por exemplo, em um bloco de pixel reconstruído) ou no domínio de frequência, dependendo do exemplo.
[0080] Ao operar como um codificador, o bloco de predição, bloco residual e/ou bloco de imagem reconstruído filtrado são armazenados no componente de buffer de imagem decodificada 223 para uso posterior em estimação de movimento, conforme discutido acima. Ao operar como um decodificador, o componente de buffer de imagem decodificada 223 armazena e encaminha os blocos reconstruídos e filtrados para um display como parte de um sinal de vídeo de saída. O componente de buffer de imagem decodificada 223 pode ser qualquer dispositivo de memória capaz de armazenar blocos de predição, blocos residuais e/ou blocos de imagem reconstruídos.
[0081] O componente de formatação de cabeçalho e CABAC 231 recebe os dados dos vários componentes do sistema codec 200 e codifica tais dados em um fluxo de bits codificado para transmissão para um decodificador. Especificamente, o componente de formatação de cabeçalho e CABAC 231 gera vários cabeçalhos para codificar dados de controle, tais como dados de controle gerais e dados de controle de filtro. Além disso, dados de predição, incluindo dados de predição intra e movimento, bem como dados residuais na forma de dados de coeficiente de transformada quantizado são todos codificados no fluxo de bits. O fluxo de bits final inclui todas as informações desejadas pelo decodificador para reconstruir o sinal de vídeo particionado original 201. Tais informações também podem incluir tabelas de índice de modo de predição intra (também denominadas tabelas de mapeamento de palavra-código), definições de contextos de codificação para vários blocos, indicações de modos de predição intra mais prováveis, uma indicação de informações de partição, etc. Tais dados podem ser codificados empregando-se codificação de entropia. Por exemplo, as informações podem ser codificadas empregando-se codificação de comprimento variável adaptativa ao contexto (CAVLC), CABAC, codificação aritmética binária com base em sintaxe adaptativa ao contexto (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra técnica de codificação de entropia. Após a codificação de entropia, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo, um decodificador de vídeo) ou arquivado para transmissão ou recuperação posterior.
[0082] A Figura 3 é um diagrama de blocos ilustrando um codificador de vídeo exemplificativo 300. O codificador de vídeo 300 pode ser empregado para implementar as funções de codificação do sistema codec 200 e/ou implementar as etapas 101, 103, 105, 107 e/ou 109 do método operacional 100. O codificador 300 particiona um sinal de vídeo de entrada, resultando em um sinal de vídeo particionado 301, que é substancialmente similar ao sinal de vídeo particionado 201. O sinal de vídeo particionado 301 é, então, comprimido e codificado em um fluxo de bits por componentes do codificador 300.
[0083] Especificamente, o sinal de vídeo particionado 301 é encaminhado para um componente de predição de imagem intra 317 para predição intra. O componente de predição de imagem intra 317 pode ser substancialmente similar ao componente de estimação de imagem intra 215 e ao componente de predição de imagem intra 217. O sinal de vídeo particionado 301 também é encaminhado a um componente de compensação de movimento 321 para predição inter com base em blocos de referência em um componente de buffer de imagem decodificada 323. O componente de compensação de movimento 321 pode ser substancialmente similar ao componente de estimação de movimento 221 e ao componente de compensação de movimento 219. Os blocos de predição e os blocos residuais do componente de predição de imagem intra 317 e do componente de compensação de movimento 321 são encaminhados a um componente de transformada e quantização 313 para transformada e quantização dos blocos residuais. O componente de transformada e quantização 313 pode ser substancialmente similar ao componente de escalonamento de transformada e quantização 213. Os blocos residuais transformados e quantizados e os blocos de predição correspondentes (em conjunto com dados de controle associados) são encaminhados a um componente de codificação de entropia 331 para codificação em um fluxo de bits. O componente de codificação de entropia 331 pode ser substancialmente similar ao componente de formatação de cabeçalho e CABAC 231.
[0084] Os blocos residuais transformados e quantizados e/ou os blocos de predição correspondentes também são encaminhados a partir do componente de transformada e quantização 313 para um componente de 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 similar ao componente de escalonamento e transformada inversa 229. Os filtros in-loop em um componente de filtros in-loop 325 também são aplicados aos blocos residuais e/ou blocos de referência reconstruídos, dependendo do exemplo. O componente de filtros inloop 325 pode ser substancialmente similar ao componente de análise de controle de filtro 227 e ao componente de filtros in-loop 225. O componente de filtros inloop 325 pode incluir múltiplos filtros, conforme discutido em relação ao componente de filtros in-loop 225. Os blocos filtrados são, então, armazenados em um componente de buffer de imagem decodificada 323 para uso como blocos de referência pelo componente de compensação de movimento 321. O componente de buffer de imagem decodificada 323 pode ser substancialmente similar ao componente de buffer de imagem decodificada 223.
[0085] A Figura 4 é um diagrama de blocos ilustrando um decodificador de vídeo exemplificativo 400. O decodificador de vídeo 400 pode ser empregado para implementar as funções de decodificação do sistema codec 200 e/ou implementar as etapas 111, 113, 115 e/ou 117 do método operacional 100. O decodificador 400 recebe um fluxo de bits, por exemplo, a partir de um codificador 300, e gera um sinal de vídeo de saída reconstruído com base no fluxo de bits para exibição para um usuário final.
[0086] O fluxo de bits é recebido por um componente de decodificação de entropia 433. O componente de decodificação de entropia 433 é configurado para implementar um esquema de decodificação de entropia, tal como codificação CAVLC, CABAC, SBAC, PIPE ou outras técnicas de codificação de entropia. Por exemplo, o componente de decodificação de entropia 433 pode empregar informações de cabeçalho para fornecer um contexto para interpretar dados adicionais codificados como palavras-código no fluxo de bits. As informações decodificadas incluem quaisquer informações desejadas para decodificar o sinal de vídeo, tais como dados de controle gerais, dados de controle de filtro, informações de partição, dados de movimento, dados de predição e coeficientes de transformada quantizados a partir de blocos residuais. Os coeficientes de transformada quantizados são encaminhados para um componente de transformada inversa e quantização 429 para reconstrução em blocos residuais. O componente de transformada inversa e quantização 429 pode ser similar ao componente de transformada inversa e quantização 329.
[0087] Os blocos de predição e/ou blocos residuais reconstruídos são encaminhados para o componente de predição de imagem intra 417 para reconstrução em blocos de imagem com base em operações de predição intra. O componente de predição de imagem intra 417 pode ser similar ao componente de estimação de imagem intra 215 e a um componente de predição de imagem intra 217. Especificamente, o componente de predição de imagem intra 417 emprega modos de predição para localizar um bloco de referência no quadro e aplica um bloco residual ao resultado para reconstruir blocos de imagem preditos de modo intra. Os blocos de imagem preditos de modo intra reconstruídos e/ou os blocos residuais e dados de predição inter correspondentes são encaminhados para um componente de buffer de imagem decodificada 423 através de um componente de filtros in-loop 425, que pode ser substancialmente similar ao componente de buffer de imagem decodificada 223 e ao componente de filtros in-loop 225, respectivamente. O componente de filtros in-loop 425 filtra os blocos residuais, blocos de predição e/ou blocos de imagem reconstruídos, e tais informações são armazenadas no componente de buffer de imagem decodificada 423. Os blocos de imagem reconstruídos do componente de buffer de imagem decodificada 423 são encaminhados para um componente de compensação de movimento 421 para predição inter. O componente de compensação de movimento 421 pode ser substancialmente similar ao componente de estimação de movimento 221 e/ou ao componente de compensação de movimento 219. Especificamente, o componente de compensação de movimento 421 emprega vetores de movimento a partir de um bloco de referência para gerar um bloco de predição e aplica um bloco residual ao resultado para reconstruir um bloco de imagem. Os blocos reconstruídos resultantes também podem ser encaminhados através do componente de filtros in-loop 425 ao componente de buffer de imagem decodificada 423. O componente de buffer de imagem decodificada 423 continua a armazenar blocos de imagem reconstruídos adicionais, que podem ser reconstruídos em quadros através das informações de partição. Tais quadros também podem ser colocados em uma sequência. A sequência é emitida para um display como um sinal de vídeo de saída reconstruído.
[0088] A Figura 5 é um diagrama esquemático ilustrando um HRD exemplificativo 500. Um HRD 500 pode ser empregado em um codificador, tal como o sistema codec 200 e/ou o codificador 300. O HRD 500 pode verificar o fluxo de bits criado na etapa 109 do método 100 antes de o fluxo de bits ser encaminhado para um decodificador, tal como decodificador 400. Em alguns exemplos, o fluxo de bits pode ser continuamente encaminhado através do HRD 500 à medida que o fluxo de bits é codificado. No caso em que uma porção do fluxo de bits não entra em conformidade com restrições associadas, o HRD 500 pode indicar tal falha a um codificador para fazer com que o codificador codifique novamente a seção correspondente do fluxo de bits com diferentes mecanismos.
[0089] O HRD 500 inclui um agendador de fluxo hipotético (HSS) 541. Um HSS 541 é um componente configurado para realizar um mecanismo de entrega hipotético. O mecanismo de entrega hipotético é usado para verificar a conformidade de um fluxo de bits ou um decodificador a respeito da temporização e fluxo de dados de um fluxo de bits 551 inserido no HRD 500. Por exemplo, o HSS 541 pode receber um fluxo de bits 551 emitido a partir de um codificador e gerenciar o processo de teste de conformidade no fluxo de bits 551. Em um exemplo particular, o HSS 541 pode controlar a taxa que imagens codificadas se movem através do HRD 500 e verificar que o fluxo de bits 551 não contém dados que não estão em conformidade.
[0090] O HSS 541 pode encaminhar o fluxo de bits 551 a um CPB 543 a uma taxa predefinida. O HRD 500 pode gerenciar dados em unidades de decodificação (DU) 553. Uma DU 553 é uma Unidade de Acesso (AU) ou um subconjunto de uma AU e unidades de camada de abstração de rede (NAL) de camada de codificação não vídeo (VCL) associadas. Especificamente, uma AU contém uma ou mais imagens associadas a um tempo de emissão. Por exemplo, uma AU pode conter uma única imagem em um fluxo de bits de camada única, e pode conter uma imagem para cada camada em um fluxo de bits de múltiplas camadas. Cada imagem de uma AU pode ser dividida em fatias que são incluídas, cada uma, em uma unidade VCL NAL correspondente. Portanto, uma DU 553 pode conter uma ou mais imagens, uma ou mais fatias de uma imagem, ou combinações das mesmas. Além disso, parâmetros usados para decodificar a AU, imagens e/ou fatias podem ser incluídos em unidades não VCL NAL. Como tal, a DU 553 contém unidades não VCL NAL que contêm dados necessários para suportar decodificação das unidades VCL NAL na DU 553. O CPB 543 é um buffer primeiro a entrar primeiro a sair no HRD 500. O CPB 543 contém DUs 553 incluindo dados de vídeo em ordem de decodificação. O CPB 543 armazena os dados de vídeo para uso durante verificação de conformidade de fluxo de bits.
[0091] O CPB 543 encaminha as DUs 553 para um componente de processo de decodificação 545. O componente de processo de decodificação 545 é um componente que está em conformidade com o padrão de VVC. Por exemplo, o componente de processo de decodificação 545 pode emular um decodificador 400 empregado por um usuário final. O componente de processo de decodificação 545 decodifica as DUs 553 a uma taxa que pode ser alcançada por um decodificador de usuário final exemplificativo. Se o componente de processo de decodificação 545 não puder decodificar as DUs 553 de maneira rápida o bastante para evitar um sobrefluxo do CPB 543, então, o fluxo de bits 551 não está em conformidade com o padrão e deve ser codificado novamente.
[0092] O componente de processo de decodificação 545 decodifica as DUs 553, que cria DUs decodificadas 555. Uma DU decodificada 555 contém uma imagem decodificada. As DUs decodificadas 555 são encaminhadas para um DPB 547. O DPB 547 pode ser substancialmente similar a um componente de buffer de imagem decodificada 223, 323 e/ou 423. Para suportar predição inter, imagens que são marcadas para uso como imagens de referência 556 que são obtidas a partir das DUs decodificadas 555 retornam ao componente de processo de decodificação 545 para suportar decodificação adicional. O DPB 547 emite a sequência de vídeo decodificada como uma série de imagens 557. As imagens 557 são imagens reconstruídas que geralmente espelham imagens codificadas no fluxo de bits 551 pelo codificador.
[0093] As imagens 557 são encaminhadas para um componente de cropping de emissão 549. O componente de cropping de emissão 549 é configurado para aplicar uma janela de cropping de conformidade às imagens 557. Isso resulta em imagens recortadas (cropped) de emissão 559. Uma imagem recortada de emissão 559 é uma imagem completamente reconstruída. Assim, a imagem recortada de emissão 559 imita o que um usuário final veria mediante decodificação do fluxo de bits 551. Como tal, o codificador pode rever as imagens recortadas de emissão 559 para garantir que a codificação seja satisfatória.
[0094] O HRD 500 é inicializado com base em parâmetros de HRD no fluxo de bits 551. Por exemplo, o HRD 500 pode ler parâmetros de HRD a partir de um VPS, um SPS e/ou mensagens SEI. O HRD 500 pode, então, realizar operações de teste de conformidade no fluxo de bits 551 com base nas informações em tais parâmetros de HRD. Conforme um exemplo específico, o HRD 500 pode determinar um ou mais agendamentos de entrega de CPB a partir dos parâmetros de HRD. Um agendamento de entrega especifica temporização para entrega de dados de vídeo de e/ou para uma localização de memória, tal como um CPB e/ou um DPB. Portanto, um agendamento de entrega de CPB especifica temporização para entrega de AUs, DUs 553 e/ou imagens, de/para o CPB 543. Deve-se observar que o HRD 500 pode empregar agendamentos de entrega de DPB para o DPB 547 que são similares aos agendamentos de entrega de CPB.
[0095] O vídeo pode ser codificado em diferentes camadas e/ou OLSs para uso por decodificadores com níveis variados de capacidades de hardware bem como condições de rede variadas. Os agendamentos de entrega de CPB são selecionados para refletir essas questões. Assim, subfluxos de bits de camada superior são designados para condições de rede e hardware ideais e, portanto, camadas superiores podem receber um ou mais agendamentos de entrega de CPB que empregam uma grande quantidade de memória no CPB 543 e atrasos curtos para transferências das DUs 553 para o DPB 547. Da mesma maneira, subfluxos de bits de camada inferior são designados para capacidades de hardware de decodificador limitadas e/ou condições de rede ruins. Portanto, camadas inferiores podem receber um ou mais agendamentos de entrega de CPB que empregam uma pequena quantidade de memória no CPB 543 e atrasos mais longos para transferências das DUs 553 para o DPB 547. Os OLSs, camadas, subcamadas ou combinações dos mesmos podem, então, ser testados de acordo com o agendamento de entrega correspondente para garantir que o subfluxo de bits resultante possa ser corretamente decodificado sob as condições que são esperadas para o subfluxo de bits. Assim, os parâmetros de HRD no fluxo de bits 551 podem indicar os agendamentos de entrega de CPB bem como incluir dados suficientes para permitir que o HRD 500 determine os agendamentos de entrega de CPB e correlacione os agendamentos de entrega de CPB aos OLSs, camadas e/ou subcamadas correspondentes.
[0096] A Figura 6 é um diagrama esquemático ilustrando uma sequência de vídeo de múltiplas camadas exemplificativa 600. A sequência de vídeo de múltiplas camadas 600 pode ser codificada por um codificador, tal como sistema codec 200 e/ou codificador 300 e decodificada por um decodificador, tal como sistema codec 200 e/ou decodificador 400, por exemplo, de acordo com o método 100. Além disso, a sequência de vídeo de múltiplas camadas 600 pode ser verificada quanto à conformidade com padrão por um HRD, tal como HRD 500. A sequência de vídeo de múltiplas camadas 600 é incluída para retratar uma aplicação exemplificativa para camadas em uma sequência de vídeo codificada. Uma sequência de vídeo de múltiplas camadas 600 é qualquer sequência de vídeo que emprega uma pluralidade de camadas, tal como camada N 631 e camada N+1 632.
[0097] Em um exemplo, a sequência de vídeo de múltiplas camadas 600 pode empregar predição de camada inter 621. A predição de camada inter 621 é aplicada entre imagens 611, 612, 613 e 614 e imagens 615, 616, 617 e 618 em diferentes camadas. No exemplo mostrado, as imagens 611, 612, 613 e 614 são parte da camada N+1 632 e as imagens 615, 616, 617 e 618 são parte da camada N 631. Uma camada, tal como a camada N 631 e/ou a camada N+1 632, é um grupo de imagens que são todas associadas a um valor similar de uma característica, tal como um tamanho, qualidade, resolução, razão entre sinal e ruído, capacidade similares, etc. Uma camada pode ser definida formalmente como um conjunto de unidades VCL NAL que compartilham o mesmo ID de camada e unidades não VCL NAL associadas. Uma unidade VCL NAL é uma unidade NAL codificada para conter dados de vídeo, tais como uma fatia codificada de uma imagem. Uma unidade não VCL NAL é uma unidade NAL que contém dados não vídeo, tais como sintaxe e/ou parâmetros que suportam decodificação dos dados de vídeo, realização de verificação de conformidade ou outras operações.
[0098] No exemplo mostrado, a camada N+1 632 é associada a um tamanho de imagem maior do que a camada N 631. Assim, as imagens 611, 612, 613 e 614 na camada N+1 632 têm um tamanho de imagem maior (por exemplo, altura e largura maiores e, portanto, mais amostras) do que as imagens 615, 616, 617 e 618 na camada N 631 neste exemplo. Entretanto, tais imagens podem ser separadas entre a camada N+1 632 e a camada N 631 por outras características. Embora apenas duas camadas, camada N+1 632 e camada N 631, sejam mostradas, um conjunto de imagens pode ser separado em qualquer número de camadas com base em características associadas. A camada N+1 632 e a camada N 631 também podem ser denotadas por um ID de camada. Um ID de camada é um item de dados que é associado a uma imagem e denota que a imagem é parte de uma camada indicada. Assim, cada imagem 611 a 618 pode ser associada a um ID de camada correspondente para indicar qual camada N+1 632 ou camada N 631 inclui a imagem correspondente. Por exemplo, um ID de camada pode incluir um ID de camada de cabeçalho de unidade NAL (nuh_layer_id), que é um elemento de sintaxe que especifica um identificador de uma camada que inclui uma unidade NAL (por exemplo, que inclui fatias e/ou parâmetros das imagens em uma camada). Atribui-se, de modo geral, a uma camada associada a uma qualidade inferior/tamanho de imagem menor/tamanho de fluxo de bits menor, tal como a camada N 631, um ID de camada inferior e é denominada uma camada inferior. Além disso, atribui-se, de modo geral, a uma camada associada a uma qualidade superior/tamanho de imagem maior/tamanho de fluxo de bits maior, tal como camada N+1 632, um ID de camada superior e é denominada uma camada superior.
[0099] As imagens 611 a 618 em diferentes camadas 631 a 632 são configuradas para ser exibidas em alternativa. Conforme um exemplo específico, um decodificador pode decodificar e exibir a imagem 615 em um tempo de exibição atual se uma imagem menor for desejada ou o decodificador pode decodificar e exibir a imagem 611 no tempo de exibição atual se uma imagem maior for desejada. Como tal, as imagens 611 a 614 na camada superior N+1 632 contêm substancialmente os mesmos dados de imagem que as imagens correspondentes 615 a 618 na camada inferior N 631 (apesar da diferença de tamanho de imagem). Especificamente, a imagem 611 contém substancialmente os mesmos dados de imagem que a imagem 615, a imagem 612 contém substancialmente os mesmos dados de imagem que a imagem 616, etc.
[0100] As imagens 611 a 618 podem ser codificadas por referência a outras imagens 611 a 618 na mesma camada N 631 ou N+1 632. A codificação de uma imagem em referência a outra imagem na mesma camada resulta em predição inter 623. A predição inter 623 é retratada por setas de linha contínua. Por exemplo, a imagem 613 pode ser codificada empregando-se predição inter 623 usando uma ou duas dentre as imagens 611, 612 e/ou 614 na camada N+1 632 como uma referência, em que uma imagem é referida para predição inter unidirecional e/ou duas imagens são referidas para predição inter bidirecional. Além disso, a imagem 617 pode ser codificada empregando-se predição inter 623 usando uma ou duas dentre as imagens 615, 616 e/ou 618 na camada N 631 como uma referência, em que uma imagem é referida para predição inter unidirecional e/ou duas imagens são referidas para predição inter bidirecional. Quando uma imagem é usada como uma referência para outra imagem na mesma camada ao realizar predição inter 623, a imagem pode ser denominada uma imagem de referência. Por exemplo, a imagem 612 pode ser uma imagem de referência usada para codificar a imagem 613 de acordo com a predição inter 623. A predição inter 623 também pode ser denominada predição de camadas intra em um contexto de múltiplas camadas. Como tal, a predição inter 623 é um mecanismo de codificação de amostras de uma imagem atual por referência a amostras indicadas em uma imagem de referência que é diferente da imagem atual em que a imagem de referência e a imagem atual estão na mesma camada.
[0101] As imagens 611 a 618 também podem ser codificadas por referência a outras imagens 611 a 618 em diferentes camadas. Esse processo é conhecido como predição de camada inter 621, e é retratado por setas tracejadas. A predição de camada inter 621 é um mecanismo de codificação de amostras de uma imagem atual por referência a amostras indicadas em uma imagem de referência em que a imagem atual e a imagem de referência estão em diferentes camadas e, portanto, têm diferentes valores de nuh_layer_id. Por exemplo, uma imagem em uma camada inferior N 631 pode ser usada como uma imagem de referência para codificar uma imagem correspondente em uma camada superior N+1 632. Conforme um exemplo específico, a imagem 611 pode ser codificada por referência à imagem 615 de acordo com predição de camada inter 621. Em tal caso, a imagem 615 é usada como uma imagem de referência camadas inter. Uma imagem de referência camadas inter é uma imagem de referência usada para predição de camada inter 621. Na maioria dos casos, a predição de camada inter 621 é restrita de modo que uma imagem atual, tal como a imagem 611, só possa usar imagem(ns) de referência camadas inter que são incluídas na mesma AU 627 e que estão em uma camada inferior, tal como a imagem 615. Quando múltiplas camadas (por exemplo, mais de duas) estiverem disponíveis, a predição de camada inter 621 pode codificar/decodificar uma imagem atual com base em múltiplas imagens de referência camadas inter em níveis mais baixos do que a imagem atual.
[0102] Um codificador de vídeo pode empregar uma sequência de vídeo de múltiplas camadas 600 para codificar imagens 611 a 618 por meio de muitas combinações e/ou permutações diferentes de predição inter 623 e predição de camada inter 621. Por exemplo, a imagem 615 pode ser codificada de acordo com predição intra. As imagens 616 a 618 podem, então, ser codificadas de acordo com predição inter 623 usando-se a imagem 615 como uma imagem de referência. Além disso, a imagem 611 pode ser codificada de acordo com predição de camada inter 621 usando-se a imagem 615 como uma imagem de referência camadas inter. As imagens 612 a 614 podem ser, então, codificadas de acordo com predição inter 623 usando-se a imagem 611 como uma imagem de referência. Como tal, uma imagem de referência pode servir tanto como uma imagem de referência de camada única quanto como uma imagem de referência camadas inter para diferentes mecanismos de codificação. Codificando-se imagens de camada superior N+1 632 com base em imagens de camada inferior N 631, a camada superior N+1 632 pode evitar o emprego de predição intra, que tem eficiência de codificação muito mais baixa do que predição inter 623 e predição de camada inter 621. Como tal, a baixa eficiência de codificação de predição intra pode ser limitada às imagens de qualidade menor/mais baixa possível e, portanto, limitada à codificação da menor quantidade possível de dados de vídeo. As imagens usadas como imagens de referência e/ou imagens de referência camadas inter podem ser indicadas em entradas de lista(s) de imagens de referência contida em uma estrutura de lista de imagens de referência.
[0103] As imagens 611 a 618 também podem ser incluídas em unidades de acesso (AUs) 627. Uma AU 627 é um conjunto de imagens codificadas que são incluídas em diferentes camadas e são associadas a um mesmo tempo de emissão durante a decodificação. Assim, imagens codificadas na mesma AU 627 são agendadas para emissão a partir de um DPB em um decodificador ao mesmo tempo. Por exemplo, as imagens 614 e 618 estão na mesma AU 627. As imagens 613 e 617 estão em uma AU 627 diferente das imagens 614 e 618. As imagens 614 e 618 na mesma AU 627 podem ser exibidas em alternativa. Por exemplo, a imagem 618 pode ser exibida quando um tamanho de imagem pequeno é desejado e a imagem 614 pode ser exibida quando um tamanho de imagem grande é desejado. Quando o tamanho de imagem grande é desejado, a imagem 614 é emitida e a imagem 618 é usada apenas para predição de camada inter 621. Neste caso, a imagem 618 é descartada sem ser emitida uma vez que a predição de camada inter 621 estiver concluída.
[0104] Para fins de teste de conformidade, as AUs 627 podem ser adicionalmente divididas em DUs 628. Uma DU 628 pode ser definida como uma AU 627 ou um subconjunto de uma AU 627 incluindo uma ou mais unidades VCL NAL em uma AU 627 e unidades não VCL NAL associadas. Estabelecido de maneira diferente, uma DU 628 pode conter uma única imagem codificada em conjunto com elementos de sintaxe conforme desejado para suportar decodificação da imagem. Em um fluxo de bits de camada única, uma DU 628 é uma AU 627. Em um fluxo de bits de múltiplas camadas, uma DU 628 é um subconjunto de uma AU 627. A distinção entre AUs 627 e DUs 628 pode ser empregada ao realizar testes de conformidade em um HRD. Por exemplo, alguns testes de conformidade são configurados para serem aplicados a cada AUs 627, enquanto outros testes de conformidade são configurados para serem aplicados a cada DU 628 em cada AU 627. Um teste de conformidade que é aplicado a uma ou mais AUs inteiras 627 pode ser denominado uma operação de nível de AU. Um teste de conformidade que é aplicado a uma ou mais DUs 628 pode ser denominado uma operação de nível de DU. Assim, nível de AU é uma descrição de uma operação como sendo aplicada a uma ou mais AUs inteiras 627 e, portanto, aplicada a um ou mais grupos inteiros de imagens que compartilham o mesmo tempo de emissão. Além disso, nível de DU é uma descrição de uma operação como sendo aplicada a uma ou mais DUs inteiras 628 e, portanto, que é aplicada a uma ou mais imagens.
[0105] A Figura 7 é um diagrama esquemático ilustrando um fluxo de bits exemplificativo 700. Por exemplo, o fluxo de bits 700 pode ser gerado por um sistema codec 200 e/ou um codificador 300 para decodificação por um sistema codec 200 e/ou um decodificador 400 de acordo com o método 100. Além disso, o fluxo de bits 700 pode incluir uma sequência de vídeo de múltiplas camadas 600. Além disso, o fluxo de bits 700 pode incluir vários parâmetros para controlar a operação de um HRD, tal como HRD 500. Com base em tais parâmetros, o HRD pode verificar o fluxo de bits 700 quanto à conformidade com padrões antes de transmissão para um decodificador para decodificação.
[0106] O fluxo de bits 700 inclui um VPS 711, um ou mais SPSs 713, uma pluralidade de conjuntos de parâmetros de imagem (PPSs) 715, uma pluralidade de cabeçalhos de fatia 717, dados de imagem 720, uma mensagem SEI de período de buffering (BP) 716, uma mensagem PT SEI 718 e/ou uma mensagem DUI SEI 719. Um VPS 711 contém dados relacionados a todo o fluxo de bits 700. Por exemplo, o VPS 711 pode conter OLSs, camadas, e/ou subcamadas relacionadas a dados usadas no fluxo de bits 700. Um SPS 713 contém dados de sequência comuns a todas as imagens em uma sequência de vídeo codificada contida no fluxo de bits 700. Por exemplo, cada camada pode conter uma ou mais sequências de vídeo codificadas, e cada sequência de vídeo codificada pode se referir a um SPS 713 para parâmetros correspondentes. Os parâmetros em um SPS 713 podem incluir dimensionamento de imagem, profundidade de bit, parâmetros de ferramenta de codificação, restrições de taxa de bit, etc. Deve-se observar que, embora cada sequência se refira a um SPS 713, um único SPS 713 pode conter dados para múltiplas sequências em alguns exemplos. O PPS 715 contém parâmetros que se aplicam a toda uma imagem. Portanto, cada imagem na sequência de vídeo pode se referir a um PPS 715. Deve-se observar que, embora cada imagem se refira a um PPS 715, um único PPS 715 pode conter dados para múltiplas imagens em alguns exemplos. Por exemplo, múltiplas imagens similares podem ser codificadas de acordo com parâmetros similares. Em tal caso, um único PPS 715 pode conter dados para tais imagens similares. O PPS 715 pode indicar ferramentas de codificação disponíveis para fatias em imagens correspondentes, parâmetros de quantização, desvios, etc.
[0107] O cabeçalho de fatia 717 contém parâmetros que são específicos a cada fatia em uma imagem. Portanto, pode haver um cabeçalho de fatia 717 por fatia 727 na sequência de vídeo. O cabeçalho de fatia 717 pode conter informações de tipo de fatia, informações de filtragem, pesos de predição, pontos de entrada de tile, parâmetros de desblocagem, etc. Deve-se observar que, em alguns exemplos, um fluxo de bits 700 também pode incluir um cabeçalho de imagem, que é uma estrutura de sintaxe que contém parâmetros que se aplicam a todas as fatias 727 em uma única imagem 725. Por essa razão, um cabeçalho de imagem e um cabeçalho de fatia 717 podem ser usados de maneira intercambiável em alguns contextos. Por exemplo, certos parâmetros podem ser movidos entre o cabeçalho de fatia 717 e um cabeçalho de imagem dependendo de tais parâmetros serem ou não comuns a todas as fatias 727 em uma imagem 725.
[0108] Os dados de imagem 720 contêm dados de vídeo codificados de acordo com predição inter e/ou predição intra bem como dados residuais transformados e quantizados correspondentes. Por exemplo, os dados de imagem 720 podem incluir camadas 723, imagens 725 e/ou fatias 727. Uma camada 723 é um conjunto de unidades VCL NAL que compartilham uma característica especificada (por exemplo, uma resolução comum, taxa de quadro, tamanho de imagem, etc.), conforme indicado por um ID de camada, tal como um nuh_layer_id, e unidades não VCL NAL associadas. Por exemplo, uma camada 723 pode incluir um conjunto de imagens 725 que compartilham o mesmo nuh_layer_id bem como conjuntos de parâmetros e/ou mensagens SEI associadas. Uma camada 723 pode ser substancialmente similar às camadas 631 e/ou 632. Um nuh_layer_id é um elemento de sintaxe que especifica um identificador de uma camada 723 que inclui pelo menos uma unidade NAL. Por exemplo, a camada de qualidade mais baixa possível 723, conhecida como uma camada base, pode incluir o menor valor de nuh_layer_id com valores crescentes de nuh_layer_id para camadas 723 de qualidade mais alta. Portanto, uma camada inferior é uma camada 723 com um valor menor de nuh_layer_id e uma camada superior é uma camada 723 com um valor maior de nuh_layer_id. As camadas 723 também podem ser incluídas em um OLS. Um OLS é um conjunto de camadas 723 em que uma ou mais camadas 723 são especificadas como uma camada(s) de saída. Uma camada de saída é qualquer camada 723 que é designada para emissão e exibição em um decodificador. As camadas 723 que não são camadas de saída podem ser incluídas em um OLS para suportar decodificação de uma camada de saída, por exemplo, por meio de predição de camada inter.
[0109] Uma imagem 725 é um arranjo de amostras de luma e/ou um arranjo de amostras de croma que criam um quadro ou um campo das mesmas. Por exemplo, uma imagem 725 é uma imagem codificada que pode ser emitida para exibição ou usada para suportar codificação de outra(s) imagem(ns) 725 para emissão. Uma imagem 725 contém uma ou mais fatias 727. Uma fatia 727 pode ser definida como um número inteiro de tiles completos ou um número inteiro de linhas de unidade de árvore de codificação (CTU) completas consecutivas (por exemplo, dentro de um tile) de uma imagem 725 que estão exclusivamente contidas em uma única unidade NAL. As fatias 727 são adicionalmente divididas em CTUs e/ou blocos de árvore de codificação (CTBs). Uma CTU é um grupo de amostras de um tamanho predefinido que podem ser particionadas por uma árvore de codificação. Um CTB é um subconjunto de uma CTU e contém componentes de luma ou componentes de croma da CTU. As CTUs /CTBs são adicionalmente divididas em blocos de codificação com base em árvores de codificação. Os blocos de codificação podem ser, então, codificados/decodificados de acordo com mecanismos de predição.
[0110] Uma mensagem SEI é uma estrutura de sintaxe com semântica especificada que transporta informações que não são necessárias pelo processo de decodificação a fim de determinar os valores das amostras em imagens decodificadas. Por exemplo, as mensagens SEI podem conter dados para suportar processos de HRD ou outros dados de suporte que não são diretamente relevantes para decodificar o fluxo de bits 700 em um decodificador. Uma mensagem BP SEI 716 é uma mensagem SEI que contém parâmetros de HRD para inicializar um HRD para gerenciar um CPB para testar OLSs e/ou camadas 723 correspondentes. Uma mensagem PT SEI 718 é uma mensagem SEI que contém parâmetros de HRD para gerenciar informações de entrega para AUs no CPB e/ou no DPB para testar OLSs e/ou camadas 723 correspondentes. Uma mensagem DUI SEI 719 é uma mensagem SEI que contém parâmetros de HRD para gerenciar informações de entrega para DUs no CPB e/ou no DPB para testar OLSs e/ou camadas 723 correspondentes.
[0111] Deve-se observar que o fluxo de bits 700 pode ser codificado como uma sequência de unidades NAL. Uma unidade NAL é um recipiente para dados de vídeo e/ou sintaxe de suporte. Uma unidade NAL pode ser uma unidade VCL NAL ou uma unidade não VCL NAL. Uma unidade VCL NAL é uma unidade NAL codificada para conter dados de vídeo. Especificamente, uma unidade VCL NAL contém uma fatia 727 e um cabeçalho de fatia associado 717. Uma unidade não VCL NAL é uma unidade NAL que contém dados não vídeo, tais como sintaxe e/ou parâmetros que suportam decodificação dos dados de vídeo, realização de verificação de conformidade ou outras operações. As unidades não VCL NAL podem incluir uma unidade de VPS NAL, uma unidade de SPS NAL e uma unidade PPS NAL, que contêm um VPS 711, um SPS 713 e um PPS 715, respectivamente. A unidade não VCL NAL também pode incluir uma unidade SEI NAL que pode conter uma mensagem BP SEI 716, uma mensagem PT SEI 718 e/ou uma mensagem DUI SEI 719. Assim, uma unidade SEI NAL é uma unidade NAL que contém uma mensagem SEI. Deve-se observar que a lista antecedente de unidades NAL é exemplificativa e não abrangente.
[0112] Um HRD, tal como HRD 500, pode ser empregado para verificar o fluxo de bits 700 quanto à conformidade com padrões. O HRD pode empregar parâmetros de HRD para realizar testes de conformidade no fluxo de bits 700. Os parâmetros de HRD 735 podem ser armazenados em uma estrutura de sintaxe no VPS 711 e/ou no SPS 713. Os parâmetros de HRD 735 são elementos de sintaxe que inicializam e/ou definem condições operacionais de um HRD. A mensagem BP SEI 716, mensagem PT SEI 718 e/ou uma mensagem DUI SEI 719 contêm parâmetros que definem adicionalmente operações do HRD para sequências particulares, AUs e/ou DUs com base nos parâmetros de HRD 735 no VPS 711 e/ou no SPS 713.
[0113] Em alguns sistemas de codificação de vídeo, a mensagem BP SEI 716, mensagem PT SEI 718, e/ou uma mensagem DUI SEI 719 podem conter parâmetros que diretamente se referir ao VPS 711. Essa dependência cria certas dificuldades. Por exemplo, o fluxo de bits 700 pode ser codificado em várias camadas 723 e/ou OLSs. Quando um decodificador solicita um OLS, o codificador, um fatiador e/ou um servidor de armazenamento intermediário podem transmitir um OLS das camadas 723 ao decodificador com base em capacidades de decodificador e/ou com base em condições de rede atuais. Especificamente, o codificador, fatiador e/ou servidor de armazenamento emprega um processo de extração de fluxo de bits para remover as camadas 723 fora do OLS do fluxo de bits 700, e transmite as camadas remanescentes 723 ao decodificador. Esse processo permite que muitos decodificadores diferentes obtenham, cada um, diferentes representações do fluxo de bits 700 com base em condições de lado de decodificador. Conforme observado acima, o VPS 711 contém dados relacionados aos OLSs e/ou camadas 723. Entretanto, alguns OLSs contêm uma única camada 723. Quando um OLS com uma única camada 723 é transmitido a um decodificador, o decodificador pode não ter necessidade dos dados no VPS 711 visto que os dados no SPS 713, PPS 715 e cabeçalhos de fatia 717 podem ser suficientes para decodificar um fluxo de bits de camada única 723. A fim de evitar transmissão de dados desnecessários, o codificador, fatiador e/ou servidor de armazenamento podem remover o VPS 711 como parte do processo de extração de fluxo de bits. Essa abordagem pode ser benéfica visto que essa abordagem pode aumentar a eficiência de codificação do subfluxo de bits que extraído e transmitido ao decodificador. Entretanto, a dependência da mensagem BP SEI 716, mensagem PT SEI 718 e/ou uma mensagem DUI SEI 719 pode criar erros quando o VPS 711 é removido. Especificamente, omitir o VPS 711 pode fazer com que as mensagens SEI retornem um erro visto que os dados dos quais as mesmas dependem no VPS 711 não são recebidos no decodificador quando o VPS 711 é removido. Além disso, o HRD verifica o fluxo de bits quanto à conformidade imitando-se o decodificador. Como tal, o HRD pode verificar um OLS com uma única camada 723 sem analisar o VPS 711. Assim, o HRD, em alguns sistemas, pode ser incapaz de solucionar os parâmetros na mensagem BP SEI 716, na mensagem PT SEI 718 e/ou na mensagem DUI SEI 719 e, portanto, o HRD pode ser incapaz de verificar tais OLSs quanto à conformidade
[0114] O fluxo de bits 700 é aperfeiçoado para corrigir os problemas descritos acima. Especificamente, parâmetros são adicionados à mensagem BP SEI 716, mensagem PT SEI 718 e/ou uma mensagem DUI SEI 719 para remover a dependência no VPS 711. Assim, a mensagem BP SEI 716, mensagem PT SEI 718 e/ou uma mensagem DUI SEI 719 podem ser completamente analisadas e solucionadas pelo HRD e/ou decodificador até mesmo quando o VPS 711 for omitido para OLSs que incluem uma única camada 723. A dependência pode ser removida incluindo-se uma du_hrd_params_present_flag 731 e uma du_cpb_params_in_pic_timing_sei_flag 733 em uma ou mais das mensagens SEI. No exemplo mostrado, a du_hrd_params_present_flag 731 e a du_cpb_params_in_pic_timing_sei_flag 733 são incluídas na mensagem BP SEI 716.
[0115] A du_hrd_params_present_flag 731 é um elemento de sintaxe que especifica se o HRD deve operar em um nível de AU ou um nível de DU. Um nível de AU é uma descrição de uma operação como sendo aplicada a uma ou mais AUs inteiras (por exemplo, aplicada a um ou mais grupos inteiros de imagens que compartilham o mesmo tempo de emissão). Um nível de DU é uma descrição de uma operação como sendo aplicada a uma ou mais DUs inteiras (por exemplo, aplicada a uma ou mais imagens). Em um exemplo específico, a du_hrd_params_present_flag 731 é definida como um ao especificar que parâmetros de HRD de nível de DU estão presentes e o HRD pode ser operado no nível de AU ou no nível de DU, e é definida como zero ao especificar que parâmetros de HRD de nível de DU não estão presentes e o HRD opera no nível de AU.
[0116] Quando o HRD operar no nível de DU (por exemplo, quando du_hrd_params_present_flag 731 for definida como um), o HRD deve se referir a parâmetros de DU, tais como um atraso de remoção de CPB 737. O atraso de remoção de CPB 737 é um elemento de sintaxe que especifica um atraso de remoção de CPB para DUs, que é uma duração de tempo que uma ou mais DUs (imagens 725) podem permanecer em um CPB antes de transferência para um DPB em um HRD. Entretanto, o atraso de remoção de CPB 737 relevante pode ser incluído na mensagem PT SEI 718, ou na mensagem DUI SEI 719, dependendo do exemplo. A du_cpb_params_in_pic_timing_sei_flag 733 é um elemento de sintaxe que especifica se parâmetros de atraso de remoção de CPB 737 de nível de DU estão presentes na mensagem PT SEI 718 ou na mensagem DUI SEI 719. Em um exemplo específico, a du_cpb_params_in_pic_timing_sei_flag 733 é definida como um ao especificar que parâmetros de atraso de remoção de CPB 737 de nível de DU estão presentes em uma mensagem PT SEI 718 e mensagem DUI SEI 719 não está disponível. Além disso, a du_cpb_params_in_pic_timing_sei_flag 733 pode ser definida como zero ao especificar que parâmetros de atraso de remoção de CPB 737 de nível de DU estão presentes em uma mensagem DUI SEI 719 e mensagens PT SEI 718 não incluem parâmetros de atraso de remoção de CPB 737 de nível de DU.
[0117] Incluindo-se a du_hrd_params_present_flag 731 e a du_cpb_params_in_pic_timing_sei_flag 733 nas mensagens SEI, as mensagens SEI não dependem do VPS 711. Portanto, a mensagem BP SEI 716, a mensagem PT SEI 718 e/ou a mensagem DUI SEI 719 podem ser analisadas até mesmo quando o VPS 711 for omitido do fluxo de bits 700. Assim, o HRD pode analisar, de maneira apropriada, a mensagem BP SEI 716, a mensagem PT SEI 718 e/ou a mensagem DUI SEI 719 e realizar testes de conformidade em OLSs com uma única camada. Além disso, o decodificador pode analisar e usar os elementos de sintaxe na mensagem BP SEI 716, na mensagem PT SEI 718 e/ou na mensagem DUI SEI 719, conforme desejado para suportar processos de decodificação. Como resultado, a funcionalidade do codificador e do decodificador é aumentada e erros são evitados. Além disso, remover a dependência entre as mensagens SEI e o VPS 711 suporta remoção do VPS 711 em certos casos, que aumenta a eficiência de codificação e, portanto, reduz uso de recurso de processador, memória e/ou sinalização de rede tanto no codificador quanto no decodificador em tais casos.
[0118] As informações antecedentes são descritas em mais detalhes abaixo na presente invenção. A codificação de vídeo em camadas também é denominada codificação de vídeo escalável ou codificação de vídeo com escalabilidade. A escalabilidade em codificação de vídeo pode ser suportada usando-se técnicas de codificação de múltiplas camadas. Um fluxo de bits de múltiplas camadas compreende uma camada de base (BL) e uma ou mais camadas de aprimoramento (ELs). Exemplo de escalabilidades inclui escalabilidade espacial, escalabilidade de qualidade / razão entre sinal e ruído (SNR), escalabilidade de múltiplas vistas, escalabilidade de taxa de quadro, etc. Quando uma técnica de codificação de múltiplas camadas é usada, uma imagem ou uma parte da mesma pode ser codificada sem usar uma imagem de referência (predição intra), pode ser codificada referindo-se a imagens de referência que estão na mesma camada (predição inter) e/ou pode ser codificada referindo-se a imagens de referência que estão em outra(s) camada(s) (predição de camada inter). Uma imagem de referência usada para predição de camada inter da imagem atual é denominada uma imagem de referência camadas inter (ILRP). A Figura 6 ilustra um exemplo de codificação de múltiplas camadas para escalabilidade espacial em que imagens em diferentes camadas têm diferentes resoluções.
[0119] Algumas famílias de codificação de vídeo fornecem suporte para escalabilidade em perfil(is) separado(s) do(s) perfil(is) para codificação de camada única. A codificação de vídeo escalável (SVC) é uma extensão escalável da codificação de vídeo avançada (AVC) que fornece suporte para escalabilidades espacial, temporal e de qualidade. Para SVC, uma flag é sinalizada em cada macrobloco (MB) em imagens EL para indicar se o EL MB é predito usando o bloco colocalizado a partir de uma camada inferior. A predição a partir do bloco colocalizado pode incluir textura, vetores de movimento e/ou modos de codificação. As implementações de SVC podem não reusar diretamente implementações de AVC não modificadas em seu projeto. A sintaxe de macrobloco de SVC EL e processo de decodificação diferem da sintaxe de AVC e processo de decodificação.
[0120] HEVC Escalável (SHVC) é uma extensão de HEVC que fornece suporte para escalabilidades espacial e de qualidade. HEVC de múltiplas vistas (MV-HEVC) é uma extensão de HEVC que fornece suporte para escalabilidade de múltiplas vistas. HEVC 3D (3D-HEVC) é uma extensão de HEVC que fornece suporte para codificação de vídeo 3D que é mais avançada e mais eficiente do que MV-HEVC. A escalabilidade temporal pode ser incluída como uma parte integral de um codec HEVC de única camada. Na extensão de múltiplas camadas de HEVC, imagens decodificadas usadas para predição de camada inter são provenientes apenas da mesma AU e são tratadas como imagens de referência de longo prazo (LTRPs). Atribui-se, a tais imagens, índices de referência na(s) lista(s) de imagens de referência em conjunto com outras imagens de referência temporais na camada atual. A predição de camada inter (ILP) é alcançada no nível de unidade de predição definindo-se o valor do índice de referência para se referir à(s) imagem(ns) de referência camadas inter na(s) lista(s) de imagens de referência. A escalabilidade espacial reamostra uma imagem de referência ou parte da mesma quando uma ILRP tiver uma resolução espacial diferente da imagem atual sendo codificada ou decodificada. A reamostragem de imagem de referência pode ser realizada no nível de imagem ou no nível de bloco de codificação
[0121] VVC também pode suportar codificação de vídeo em camadas. Um fluxo de bits de VVC pode incluir múltiplas camadas. As camadas podem ser todas independentes umas das outras. Por exemplo, cada camada pode ser codificada sem usar predição de camada inter. Neste caso, as camadas também são denominadas camadas simulcast. Em alguns casos, algumas dentre as camadas são codificadas usando ILP. Uma flag no VPS pode indicar se as camadas são camadas simulcast ou se algumas camadas usam ILP. Quando algumas camadas usarem ILP, a relação de dependência de camada entre camadas também é sinalizada no VPS. Diferentemente de SHVC e MV-HEVC, VVC pode não especificar OLSs. Um OLS inclui um conjunto especificado de camadas, em que uma ou mais camadas, no conjunto de camadas, são especificadas para ser camadas de saída. Uma camada de saída é uma camada de um OLS que é emitida. Em algumas implementações de VVC, apenas uma camada pode ser selecionada para decodificação e emissão quando as camadas forem camadas simulcast. Em algumas implementações de VVC, todo o fluxo de bits incluindo todas as camadas é especificado para ser decodificado quando qualquer camada usar ILP. Além disso, certas camadas entre as camadas são especificadas para ser camadas de saída. As camadas de saída podem ser indicadas para ser apenas a camada mais alta, todas as camadas ou a camada mais alta mais um conjunto de camadas inferiores indicadas.
[0122] Os aspectos antecedentes contêm certos problemas. Por exemplo, os valores de nuh_layer_id para unidades NAL SPS, PPS e APS podem não ser restritos de maneira apropriada. Além disso, o valor de TemporalId para unidades SEI NAL pode não ser restrito de maneira apropriada. Além disso, a definição de NoOutputOfPriorPicsFlag pode não ser especificada de maneira apropriada quando reamostragem de imagem de referência for habilitada e imagens dentro de uma CLVS tiverem diferentes resoluções espaciais. Além disso, em alguns sistemas de codificação de vídeo, mensagens SEI de sufixo não podem estar contidas em uma mensagem SEI de aninhamento escalável. Conforme outro exemplo, período de buffering, temporização de imagem e mensagens SEI de informações de unidade de decodificação podem incluir dependências de análise em VPS e/ou SPS.
[0123] Em geral, esta revelação descreve abordagens de aperfeiçoamento de codificação de vídeo. As descrições das técnicas se baseiam em VVC. Entretanto, as técnicas também se aplicam à codificação de vídeo em camadas com base em outras especificações de codec de vídeo.
[0124] Um ou mais dos problemas supracitados podem ser solucionados do modo a seguir. Os valores de nuh_layer_id para unidades NAL SPS, PPS e APS são restritos de maneira apropriada na presente invenção. O valor de TemporalId para unidades SEI NAL é restrito de maneira apropriada na presente invenção. A definição do NoOutputOfPriorPicsFlag é especificada de maneira apropriada quando reamostragem de imagem de referência for habilitada e imagens dentro de uma CLVS tiverem diferentes resoluções espaciais. Permitese que as mensagens SEI de sufixo estejam contidas em uma mensagem SEI de aninhamento escalável. Dependências de análise de mensagens SEI BP, PT e DUI em VPS ou SPS podem ser removidas repetindo-se o elemento de sintaxe decoding_unit_hrd_params_present_flag na sintaxe de mensagem BP SEI, os elementos de sintaxe decoding_unit_hrd_params_present_flag e decoding_unit_cpb_params_in_pic_timing_sei_flag na sintaxe de mensagem PT SEI, e o elemento de sintaxe decoding_unit_cpb_params_in_pic_timing_sei_flag na mensagem DUI SEI.
[0125] Uma implementação exemplificativa dos mecanismos antecedentes é conforme a seguir. Uma semântica de unidade NAL geral exemplificativa é conforme a seguir.
[0126] Um nuh_temporal_id_plus1 menos 1 especifica um identificador temporal para a unidade NAL. O valor de nuh_temporal_id_plus1 não deve ser igual a zero. A variável TemporalId pode ser derivada da seguinte maneira: TemporalId = nuh_temporal_id_plus1 − 1 Quando nal_unit_type estiver na faixa de IDR_W_RADL a RSV_IRAP_13, inclusive, TemporalId deve ser igual a zero. Quando nal_unit_type for igual a STSA_NUT, TemporalId não deve ser igual a zero.
[0127] O valor de TemporalId deve ser o mesmo para todas as unidades VCL NAL de uma unidade de acesso. O valor de TemporalId de uma imagem codificada, uma unidade de acesso de camada ou uma unidade de acesso pode ser o valor do TemporalId das unidades VCL NAL da imagem codificada, da unidade de acesso de camada ou da unidade de acesso. O valor de TemporalId de uma representação de subcamada pode ser o maior valor de TemporalId de todas as unidades VCL NAL na representação de subcamada.
[0128] O valor de TemporalId para unidades não VCL NAL é restrito da maneira a seguir. Se nal_unit_type for igual a DPS_NUT, VPS_NUT ou SPS_NUT, TemporalId é igual a zero e o TemporalId da unidade de acesso contendo a unidade NAL deve ser igual a zero. De outro modo, se nal_unit_type for igual a EOS_NUT ou EOB_NUT, TemporalId deve ser igual a zero. De outro modo, se nal_unit_type for igual a AUD_NUT, FD_NUT, PREFIX_SEI_NUT ou SUFFIX_SEI_NUT, TemporalId deve ser igual ao TemporalId da unidade de acesso contendo a unidade NAL. De outro modo, quando nal_unit_type for igual a PPS_NUT ou APS_NUT, TemporalId deve ser maior do que ou igual ao TemporalId da unidade de acesso contendo a unidade NAL. Quando a unidade NAL for uma unidade não VCL NAL, o valor de TemporalId deve ser igual ao valor mínimo dos valores de TemporalId de todas as unidades de acesso às quais a unidade não VCL NAL se aplica. Quando nal_unit_type for igual a PPS_NUT ou APS_NUT, TemporalId pode ser maior do que ou igual ao TemporalId da unidade de acesso que contém. Isso se deve ao fato de que todos PPSs e APSs podem ser incluídos no início de um fluxo de bits. Além disso, a primeira imagem codificada tem TemporalId igual a zero.
[0129] Uma semântica de RBSP de conjunto de parâmetros de sequência exemplificativa é da maneira a seguir. Uma SPS RBSP deve estar disponível para o processo de decodificação antes de ser referida. O SPS pode ser incluído em pelo menos uma unidade de acesso com TemporalId igual a zero ou fornecido através de mecanismo externo. A unidade de SPS NAL contendo o SPS pode ser restrita para ter um nuh_layer_id igual ao menor valor de nuh_layer_id de unidades PPS NAL que se referem ao SPS.
[0130] Uma semântica de RBSP de conjunto de parâmetros de imagem exemplificativa é da maneira a seguir. Uma PPS RBSP deve estar disponível para o processo de decodificação antes de ser referida. O PPS deve ser incluído em pelo menos uma unidade de acesso com TemporalId menor do que ou igual ao TemporalId da unidade PPS NAL ou fornecido através de mecanismo externo. A unidade PPS NAL contendo a PPS RBSP deve ter um nuh_layer_id igual ao menor valor de nuh_layer_id das unidades NAL de fatia codificada que se referem ao PPS.
[0131] Uma semântica de conjunto de parâmetros de adaptação exemplificativa é da maneira a seguir. Cada APS RBSP deve estar disponível para o processo de decodificação antes de ser referida. O APS também deve ser incluído em pelo menos uma unidade de acesso com TemporalId menor ou igual ao TemporalId da unidade NAL de fatia codificada que se refere ao APS ou fornecido através de um mecanismo externo. Permite-se que uma unidade de APS NAL seja compartilhada por imagens/fatias de múltiplas camadas. O nuh_layer_id de uma unidade de APS NAL deve ser igual ao menor valor de nuh_layer_id das unidades NAL de fatia codificada que se referem à unidade de APS NAL. Alternativamente, uma unidade de APS NAL pode não ser compartilhada por imagens/fatias de múltiplas camadas. O nuh_layer_id de uma unidade de APS NAL deve ser igual ao nuh_layer_id de fatias que se referem ao APS.
[0132] Em um exemplo, a remoção de imagens do DPB antes de decodificação da imagem atual é discutida conforme a seguir. A remoção de imagens do DPB antes de decodificação da imagem atual (mas após analisar o cabeçalho de fatia da primeira fatia da imagem atual) pode ocorrer no tempo de remoção de CPB da primeira unidade de decodificação de unidade de acesso n (contendo a imagem atual). Isso prossegue da maneira a seguir. O processo de decodificação para construção de lista de imagens de referência é invocado e o processo de decodificação para marcação de imagem de referência é invocado.
[0133] Quando a imagem atual for uma imagem de início de sequência de vídeo de camada codificada (CLVSS) que não é imagem zero, as etapas ordenadas a seguir são aplicadas. A variável NoOutputOfPriorPicsFlag é derivada para o decodificador em teste da maneira a seguir. Se o valor de pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 ou sps_max_dec_pic_buffering_minus1[ Htid] derivados do SPS for diferente do valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 ou sps_max_dec_pic_buffering_minus1[ Htid] , respectivamente, derivados do SPS referido pela imagem antecedente, NoOutputOfPriorPicsFlag pode ser definida como um pelo decodificador em teste, independentemente do valor de no_output_of_prior_pics_flag. Deve-se observar que, embora a definição de NoOutputOfPriorPicsFlag igual a no_output_of_prior_pics_flag possa ser preferencial sob essas condições, permite-se que o decodificador em teste defina NoOutputOfPriorPicsFlag para um, neste caso. De outro modo, NoOutputOfPriorPicsFlag pode ser definido como igual a no_output_of_prior_pics_flag.
[0134] O valor de NoOutputOfPriorPicsFlag derivado para o decodificador em teste é aplicado para o HRD, de modo que, quando o valor de NoOutputOfPriorPicsFlag for igual a 1, todos os buffers de armazenamento de imagem no DPB sejam esvaziados sem emissão das imagens contidas nos mesmos, e a totalidade de DPB é definida como igual a zero. Quando ambas as condições a seguir forem verdadeiras para quaisquer imagens k no DPB, todas as tais imagens k no DPB são removidas do DPB. A imagem k é marcada como não usada para referência, e imagem k tem PictureOutputFlag igual a zero ou um tempo de emissão de DPB correspondente é menor do que ou igual ao tempo de remoção de CPB da primeira unidade de decodificação (denotada como unidade de decodificação m) da imagem atual n. Isso pode ocorrer quando DpbOutputTime[ k] for menor do que ou igual a DuCpbRemovalTime[ m] . Para cada imagem que é removida do DPB, a totalidade de DPB é decrementada em um.
[0135] Em um exemplo, emissão e remoção de imagens do DPB são discutidas da maneira a seguir. A emissão e remoção de imagens do DPB antes da decodificação da imagem atual (mas após analisar o cabeçalho de fatia da primeira fatia da imagem atual) podem ocorrer quando a primeira unidade de decodificação da unidade de acesso contendo a imagem atual é removida do CPB e prossegue da maneira a seguir. O processo de decodificação para construção de lista de imagens de referência e o processo de decodificação para marcação de imagem de referência são invocados.
[0136] Se a imagem atual for uma imagem de CLVSS que não é imagem zero, as etapas ordenadas a seguir são aplicadas. A variável NoOutputOfPriorPicsFlag pode ser derivada para o decodificador em teste da maneira a seguir. Se o valor de pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 ou sps_max_dec_pic_buffering_minus1[ Htid] derivados do SPS for diferente do valor de pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 ou sps_max_dec_pic_buffering_minus1[ Htid] , respectivamente, derivados do SPS referido pela imagem antecedente, NoOutputOfPriorPicsFlag pode ser definida como um pelo decodificador em teste, independentemente do valor de no_output_of_prior_pics_flag. Deve-se observar que, embora a definição de NoOutputOfPriorPicsFlag como igual a no_output_of_prior_pics_flag seja preferencial sob essas condições, o decodificador em teste pode definir NoOutputOfPriorPicsFlag como um neste caso. De outro modo, NoOutputOfPriorPicsFlag pode ser definido como igual a no_output_of_prior_pics_flag.
[0137] O valor de NoOutputOfPriorPicsFlag derivado para o decodificador em teste pode ser aplicado para o HRD da maneira a seguir. Se NoOutputOfPriorPicsFlag for igual a um, todos os buffers de armazenamento de imagem no DPB são esvaziados sem emissão das imagens contidas nos mesmos e a totalidade de DPB é definida como igual a zero. De outro modo (NoOutputOfPriorPicsFlag é igual a zero), todos os buffers de armazenamento de imagem contendo uma imagem que é marcada como não necessária para emissão e não usada para referência são esvaziados (sem emissão) e todos os buffers de armazenamento de imagem não vazios no DPB são esvaziados invocando-se repetidamente um processo de bumping e a totalidade de DPB é definida como igual a zero.
[0138] De outro modo (a imagem atual não é uma imagem de CLVSS), todos os buffers de armazenamento de imagem contendo uma imagem que são marcados como não necessários para emissão e não usados para referência são esvaziados (sem emissão). Para cada buffer de armazenamento de imagem que é esvaziado, a totalidade de DPB é decrementada em um. Quando uma ou mais das condições a seguir forem verdadeiras, o processo de bumping é invocado repetidamente enquanto decrementa a totalidade de DPB em um para cada buffer de armazenamento de imagem adicional que é esvaziado até que nenhuma das condições a seguir seja verdadeira. Uma condição é que o número de imagens no DPB que são marcadas como necessárias para emissão seja maior do que sps_max_num_reorder_pics[ Htid] . Outra condição é que um sps_max_latency_increase_plus1[ Htid] não é igual a zero e há pelo menos uma imagem no DPB que é marcada como necessária para emissão em que a variável associada PicLatencyCount é maior do que ou igual a SpsMaxLatencyPictures[ Htid] . Outra condição é que o número de imagens no DPB é maior do que ou igual a SubDpbSize[ Htid] .
[0139] Uma sintaxe de mensagem SEI geral exemplificativa é da maneira a seguir.
Figure img0001
Figure img0002
[0140] Uma sintaxe de mensagem SEI de aninhamento escalável exemplificativa é da maneira a seguir.
Figure img0003
[0141] Uma semântica de mensagem SEI de aninhamento escalável exemplificativa é da maneira a seguir. Uma mensagem SEI de aninhamento escalável fornece um mecanismo para associar mensagens SEI a camadas específicas no contexto de OLSs específicos ou a camadas específicas não no contexto de um OLS. Uma mensagem SEI de aninhamento escalável contém uma ou mais mensagens SEI. As mensagens SEI contidas na mensagem SEI de aninhamento escalável também são denominadas as mensagens SEI aninhadas escaláveis. A conformidade de fluxo de bits pode exigir que as restrições a seguir se apliquem quando mensagens SEI estiverem contidas em uma mensagem SEI de aninhamento escalável.
[0142] Uma mensagem SEI que tem payloadType igual a cento e trinta e dois (hash de imagem decodificada) ou cento e trinta e três (aninhamento escalável) não deve estar contida em uma mensagem SEI de aninhamento escalável. Quando uma mensagem SEI de aninhamento escalável contiver um período de buffering, temporização de imagem ou mensagem SEI de informações de unidade de decodificação, a mensagem SEI de aninhamento escalável não deve conter qualquer outra mensagem SEI com payloadType não igual a zero (período de buffering), uma (temporização de imagem) ou cento e trinta (informações de unidade de decodificação).
[0143] A conformidade de fluxo de bits também pode exigir que as restrições a seguir se apliquem no valor do nal_unit_type da unidade SEI NAL contendo uma mensagem SEI de aninhamento escalável. Quando uma mensagem SEI de aninhamento escalável contiver uma mensagem SEI que tem payloadType igual a zero (período de buffering), uma (temporização de imagem), cento e trinta (informações de unidade de decodificação), cento e quarenta e cinco (indicação de RAP dependente) ou cento e sessenta e oito (informações de campo de quadro), a unidade SEI NAL contendo a mensagem SEI de aninhamento escalável deve ter um nal_unit_type definido como igual a PREFIX_SEI_NUT. Quando uma mensagem SEI de aninhamento escalável contiver uma mensagem SEI que tem payloadType igual a cento e trinta e dois (hash de imagem decodificada), a unidade SEI NAL contendo a mensagem SEI de aninhamento escalável deve ter um nal_unit_type definido como igual a SUFFIX_SEI_NUT.
[0144] Um nesting_ols_flag pode ser definido como igual a um para especificar que as mensagens SEI aninhadas escaláveis se aplicam a camadas específicas no contexto de OLSs específicos. O nesting_ols_flag pode ser definido como igual a zero para especificar que as mensagens SEI aninhadas escaláveis geralmente se aplicam (por exemplo, não no contexto de um OLS) a camadas específicas.
[0145] A conformidade de fluxo de bits pode exigir que as restrições a seguir sejam aplicadas ao valor de nesting_ols_flag. Quando a mensagem SEI de aninhamento escalável contiver uma mensagem SEI que tem payloadType igual a zero (período de buffering), um (temporização de imagem) ou cento e trinta (informações de unidade de decodificação), o valor de nesting_ols_flag deve ser igual a um. Quando a mensagem SEI de aninhamento escalável contiver uma mensagem SEI que tem payloadType igual a um valor em VclAssociatedSeiList, o valor de nesting_ols_flag deve ser igual a zero.
[0146] Um nesting_num_olss_minus1 mais um especifica o número de OLSs aos quais as mensagens SEI aninhadas escaláveis se aplicam. O valor de nesting_num_olss_minus1 deve estar na faixa de zero a TotalNumOlss − 1, inclusive. O nesting_ols_idx_delta_minus1[ i] é usado para derivar a variável NestingOlsIdx[ i] que especifica o índice de OLS do i-ésimo OLS ao qual as mensagens SEI aninhadas escaláveis se aplicam quando nesting_ols_flag for igual a um. O valor de nesting_ols_idx_delta_minus1[ i] deve estar na faixa de zero a TotalNumOlss − 2, inclusive. A variável NestingOlsIdx[ i] pode ser derivada da seguinte maneira:
if( i = = 0 ) NestingOlsIdx[ i] = nesting_ols_idx_delta_minus1[ i] else NestingOlsIdx[ i] = NestingOlsIdx[ i − 1] + nesting_ols_idx_delta_minus1[ i] + 1
[0147] O nesting_num_ols_layers_minus1[ i] mais um especifica o número de camadas às quais as mensagens SEI aninhadas escaláveis se aplicam no contexto do NestingOlsIdx[ i] -ésimo OLS. O valor de nesting_num_ols_layers_minus1[ i] deve estar na faixa de zero a NumLayersInOls[ NestingOlsIdx[ i]] − 1, inclusive.
[0148] O nesting_ols_layer_idx_delta_minus1[ i] [ j] é usado para derivar a variável NestingOlsLayerIdx[ i] [ j] que especifica o índice de camada de OLS da j-ésima camada à qual as mensagens SEI aninhadas escaláveis se aplicam no contexto do NestingOlsIdx[ i] -ésimo OLS quando nesting_ols_flag for igual a um. O valor de nesting_ols_layer_idx_delta_minus1[ i] deve estar na faixa de zero a NumLayersInOls[ nestingOlsIdx[ i]] − dois, inclusive.
[0149] A variável NestingOlsLayerIdx[ i] [ j] pode ser derivada da seguinte maneira:
if( j = = 0 ) NestingOlsLayerIdx[ i] [ j] = nesting_ols_layer_idx_delta_minus1[ i] [ j] else NestingOlsLayerIdx[ i] [ j] = NestingOlsLayerIdx[ i] [ j − 1] + nesting_ols_layer_idx_delta_minus1[ i] [ j] + 1
[0150] O menor valor entre todos os valores de LayerIdInOls[ NestingOlsIdx[ i]] [ NestingOlsLayerIdx[ i] [ 0]] para i na faixa de zero a nesting_num_olss_minus1, inclusive, deve ser igual a nuh_layer_id da unidade SEI NAL atual (por exemplo, a unidade SEI NAL contendo a mensagem SEI de aninhamento escalável). O nesting_all_layers_flag pode ser definido como igual a um para especificar que as mensagens SEI aninhadas escaláveis geralmente se aplicam a todas as camadas que têm nuh_layer_id maior do que ou igual ao nuh_layer_id da unidade SEI NAL atual. O nesting_all_layers_flag pode ser definido como igual a zero para especificar que as mensagens SEI aninhadas escaláveis podem geralmente se aplicar ou não a todas as camadas que têm nuh_layer_id maior do que ou igual ao nuh_layer_id da unidade SEI NAL atual.
[0151] O nesting_num_layers_minus1 mais um especifica o número de camadas às quais as mensagens SEI aninhadas escaláveis geralmente se aplicam. O valor de nesting_num_layers_minus1 deve estar na faixa de zero a vps_max_layers_minus1 − GeneralLayerIdx[ nuh_layer_id] , inclusive, em que nuh_layer_id é o nuh_layer_id da unidade SEI NAL atual. O nesting_layer_id[ i] especifica o valor de nuh_layer_id da i-ésima camada à qual as mensagens SEI aninhadas escaláveis geralmente se aplicam quando nesting_all_layers_flag for igual a zero. O valor de nesting_layer_id[ i] deve ser maior do que nuh_layer_id, em que nuh_layer_id é o nuh_layer_id da unidade SEI NAL atual
[0152] Quando o nesting_ols_flag for igual a um, a variável NestingNumLayers, que especifica o número de camada à qual as mensagens SEI aninhadas escaláveis geralmente se aplicam, e a lista NestingLayerId[ i] para i na faixa de zero a NestingNumLayers − 1, inclusive, que especifica a lista de valores de nuh_layer_id das camadas às quais as mensagens SEI aninhadas escaláveis geralmente se aplicam, são derivadas conforme a seguir, em que nuh_layer_id é o nuh_layer_id da unidade SEI NAL atual:
if( nesting_all_layers_flag ) { NestingNumLayers = vps_max_layers_minus1 + 1 − GeneralLayerIdx[ nuh_layer_id] for( i = 0; i < NestingNumLayers; i ++) NestingLayerId[ i] = vps_layer_id[ GeneralLayerIdx[ nuh_layer_id] + i] (D-2) } else { NestingNumLayers = nesting_num_layers_minus1 + 1 for( i = 0; i < NestingNumLayers; i ++) NestingLayerId[ i] = ( i = = 0 ) ? nuh_layer_id : nesting_layer_id[ i] }
[0153] O nesting_num_seis_minus1 mais um especifica o número de mensagens SEI aninhadas escaláveis. O valor de nesting_num_seis_minus1 deve estar na faixa de zero a sessenta e três, inclusive. O nesting_zero_bit deve ser definido como igual a zero.
[0154] A Figura 8 é um diagrama esquemático de um dispositivo de codificação de vídeo exemplificativo 800. O dispositivo de codificação de vídeo 800 é adequado para implementar os exemplos/modalidades revelados, conforme descrito na presente invenção. O dispositivo de codificação de vídeo 800 compreende portas a jusante 820, portas a montante 850 e/ou unidades transceptoras (Tx/Rx) 810, incluindo transmissores e/ou receptores para comunicar dados a montante e/ou a jusante através de uma rede. O dispositivo de codificação de vídeo 800 também inclui um processador 830 que inclui uma unidade lógica e/ou unidade central de processamento (CPU) para processar os dados e uma memória 832 para armazenar os dados. O dispositivo de codificação de vídeo 800 também pode compreender componentes elétricos, ópticos para elétricos (OE), componentes elétricos para ópticos (EO) e/ou componentes de comunicação sem fio acoplados às portas a montante 850 e/ou portas a jusante 820 para comunicação de dados através de redes de comunicação elétricas, ópticas ou sem fio. O dispositivo de codificação de vídeo 800 também pode incluir dispositivos de entrada e/ou saída (I/O) 860 para comunicar dados de/para um usuário. Os dispositivos de I/O 860 podem incluir dispositivos de saída, tais como um display para exibir dados de vídeo, alto-falantes para emitir dados de áudio, etc. Os dispositivos de I/O 860 também podem incluir dispositivos de entrada, tais como um teclado, mouse, trackball, etc., e/ou interfaces correspondentes para interagir com tais dispositivos de saída.
[0155] O processador 830 é implementado por hardware e software. O processador 830 pode ser implementado como um ou mais chips de CPU, núcleos (por exemplo, como um processador de múltiplos núcleos), arranjos de portas programáveis em campo (FPGAs), circuitos integrados de aplicação específica (ASICs) e processadores de sinal digital (DSPs). O processador 830 está em comunicação com as portas a jusante 820, Tx/Rx 810, portas a montante 850 e a memória 832. O processador 830 compreende um módulo de codificação 814. O módulo de codificação 814 implementa as modalidades reveladas descritas na presente invenção, tais como os métodos 100, 900 e 1000, que podem empregar uma sequência de vídeo de múltiplas camadas 600 e/ou um fluxo de bits 700. O módulo de codificação 814 também pode implementar qualquer outro método/mecanismo descrito na presente invenção. Além disso, o módulo de codificação 814 pode implementar um sistema codec 200, um codificador 300, um decodificador 400 e/ou um HRD 500. Por exemplo, o módulo de codificação 814 pode ser empregado para sinalizar e/ou ler vários parâmetros, conforme descrito na presente invenção. Além disso, o módulo de codificação pode ser empregado para codificar e/ou decodificar uma sequência de vídeo com base em tais parâmetros. Como tal, as mudanças de sinalização descritas na presente invenção podem aumentar a eficiência e/ou evitar erros no módulo de codificação 814. Assim, o módulo de codificação 814 pode ser configurado para realizar mecanismos para abordar um ou mais dos problemas discutidos acima. Portanto, o módulo de codificação 814 faz com que o dispositivo de codificação de vídeo 800 forneça funcionalidade adicional e/ou eficiência de codificação ao codificar dados de vídeo. Como tal, o módulo de codificação 814 aperfeiçoa a funcionalidade do dispositivo de codificação de vídeo 800 bem como aborda problemas que são específicos às técnicas de codificação de vídeo. Além disso, o módulo de codificação 814 realiza uma transformação do dispositivo de codificação de vídeo 800 para um estado diferente. De modo alternativo, o módulo de codificação 814 pode ser implementado como instruções armazenadas na memória 832 e executadas pelo processador 830 (por exemplo, como um produto de programa de computador armazenado em uma mídia não transitória).
[0156] A memória 832 compreende um ou mais tipos de memória, tais como discos, unidades de fita, unidades de estado sólido, memória somente leitura (ROM), memória de acesso aleatório (RAM), memória flash, memória ternária de conteúdo endereçável (TCAM), memória de acesso aleatório estática (SRAM), etc. A memória 832 pode ser usada como um dispositivo de armazenamento de dados de sobrefluxo, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lidos durante a execução de programa.
[0157] A Figura 9 é um fluxograma de um método exemplificativo 900 de codificação de uma sequência de vídeo em um fluxo de bits, tal como fluxo de bits 700, empregando-se uma mensagem SEI que pode não depender de um VPS. O método 900 pode ser empregado por um codificador, tal como um sistema codec 200, um codificador 300 e/ou um dispositivo de codificação de vídeo 800 ao realizar o método 100. Além disso, o método 900 pode ser operado em um HRD 500 e, portanto, pode realizar testes de conformidade em uma sequência de vídeo de múltiplas camadas 600.
[0158] O método 900 pode iniciar quando um codificador recebe uma sequência de vídeo e determina codificar essa sequência de vídeo em um fluxo de bits de múltiplas camadas, por exemplo, com base em entrada de usuário. Na etapa 901, o codificador codifica uma pluralidade de imagens codificadas em um fluxo de bits. Por exemplo, as imagens codificadas podem ser organizadas em camadas para criar um fluxo de bits de múltiplas camadas. Além disso, cada imagem codificada pode ser incluída em uma DU. As imagens codificadas também podem ser incluídas em AUs, em que uma AU contém um conjunto de imagens de diferentes camadas que têm o mesmo tempo de emissão. Uma camada pode incluir um conjunto de unidades VCL NAL com o mesmo ID de camada e unidades não VCL NAL associadas. Por exemplo, o conjunto de unidades VCL NAL é parte de uma camada quando o conjunto de unidades VCL NAL tiver, todas, um valor particular de nuh_layer_id. Uma camada pode incluir um conjunto de unidades VCL NAL, em que cada unidade VCL NAL contém uma fatia de uma imagem codificada. A camada também pode conter quaisquer conjuntos de parâmetros usados para codificar tais imagens em que tais parâmetros são incluídos em unidades não VCL NAL. As camadas podem ser incluídas em um ou mais OLSs. Uma ou mais dentre as camadas podem ser camadas de saída (por exemplo, cada OLS contém pelo menos uma camada de saída). As camadas que não são uma camada de saída são codificadas para suportar reconstrução da(s) camada(s) de saída, mas tais camadas de suporte não são destinadas para emissão em um decodificador. Desse modo, o codificador pode codificar várias combinações de camadas para transmissão a um decodificador mediante solicitação. A camada pode ser transmitida conforme desejado para permitir que o decodificador obtenha diferentes representações da sequência de vídeo dependendo de condições de rede, capacidades de hardware e/ou definições de usuário.
[0159] Na etapa 903, o codificador pode codificar uma mensagem SEI atual no fluxo de bits. A mensagem SEI atual pode ser uma mensagem BP SEI, uma mensagem PT SEI ou uma mensagem DUI SEI, dependendo do exemplo. A mensagem SEI atual compreende uma du_hrd_params_present_flag que especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits. A du_hrd_params_present_flag pode especificar adicionalmente se um HRD opera em um nível de AU ou um nível de DU. Um nível de AU indica que processos de HRD são aplicados a AUs inteiras e um nível de DU indica que processos de HRD são aplicados a DUs individuais. Como tal, a du_hrd_params_present_flag pode especificar uma granularidade de testes de conformidade (por exemplo, granularidade de AU ou granularidade de DU). Em um exemplo específico, a du_hrd_params_present_flag pode ser definida como um ao especificar que parâmetros de HRD de nível de DU estão presentes e o HRD pode ser operado no nível de AU ou no nível de DU. Além disso, a du_hrd_params_present_flag pode ser definida como zero ao especificar que parâmetros de HRD de nível de DU não estão presentes e o HRD opera no nível de AU.
[0160] A mensagem SEI atual também pode incluir uma du_cpb_params_in_pic_timing_sei_flag que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI. A du_cpb_params_in_pic_timing_sei_flag pode especificar adicionalmente se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem DUI SEI. Em um exemplo específico, a du_cpb_params_in_pic_timing_sei_flag pode ser definida como um ao especificar que os parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI e mensagem DUI SEI não está disponível. Além disso, a du_cpb_params_in_pic_timing_sei_flag pode ser definida como zero ao especificar que parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem DUI SEI e mensagens PT SEI não incluem parâmetros de atraso de remoção de CPB de nível de DU. As restrições e/ou exigências antecedentes garantem que o fluxo de bits esteja em conformidade com, por exemplo, VVC ou algum outro padrão, modificado conforme indicado na presente invenção. Entretanto, o codificador também pode ser capaz de operar em outros modos em que o mesmo não é restrito dessa maneira, tais como ao operar em um padrão diferente ou em uma versão diferente do mesmo padrão.
[0161] Na etapa 905, um HRD pode realizar um conjunto de testes de conformidade de fluxo de bits no fluxo de bits com base na mensagem SEI atual. Por exemplo, o HRD pode ler a du_hrd_params_present_flag para determinar testar ou não o fluxo de bits no nível de AU ou se parâmetros de DU estão presentes que permitirão teste também no nível de DU. Além disso, o HRD pode ler a du_cpb_params_in_pic_timing_sei_flag para determinar se os parâmetros de DU, caso presentes, podem ser encontrados em uma mensagem DUI SEI ou uma mensagem PT SEI. O HRD pode, então, obter os parâmetros desejados a partir das mensagens SEI indicadas e realizar os testes de conformidade com base nesses parâmetros. Com base nas flags antecedentes, a mensagem SEI atual não depende de um VPS. Como tal, a mensagem SEI atual pode ser completamente analisada e solucionada até mesmo quando um VPS não estiver disponível. Assim, os testes de conformidade operam de maneira apropriada até mesmo quando teste é realizado em um OLS com uma única camada e, portanto, um VPS não está disponível no HRD visto que o VPS não é configurado para transmissão como parte do OLS
[0162] Na etapa 907, o codificador pode armazenar o fluxo de bits para comunicação em direção a um decodificador mediante solicitação. O codificador também pode transmitir o fluxo de bits para o decodificador, conforme desejado.
[0163] A Figura 10 é um fluxograma de um método exemplificativo 1000 de decodificação de uma sequência de vídeo a partir de um fluxo de bits, tal como o fluxo de bits 700, que emprega uma mensagem SEI que pode não depender de um VPS. O método 1000 pode ser empregado por um decodificador, tal como um sistema codec 200, um decodificador 400 e/ou um dispositivo de codificação de vídeo 800 ao realizar o método 100. Além disso, o método 1000 pode ser empregado em uma sequência de vídeo de múltiplas camadas 600 que foi verificada quanto à conformidade por um HRD, tal como HRD 500.
[0164] O método 1000 pode começar quando um decodificador começa a receber um fluxo de bits de dados codificados representando uma sequência de vídeo de múltiplas camadas, por exemplo, como resultado do método 900 e/ou em resposta a uma solicitação pelo decodificador. Na etapa 1001, o decodificador recebe um fluxo de bits que compreende uma imagem codificada em uma ou mais unidades VCL NAL. Por exemplo, o fluxo de bits pode incluir uma ou mais camadas incluindo a imagem codificada. Além disso, cada imagem codificada pode ser incluída em uma DU. As imagens codificadas também podem ser incluídas em AUs, em que uma AU contém um conjunto de imagens de diferentes camadas que têm o mesmo tempo de emissão. Uma camada pode incluir um conjunto de unidades VCL NAL com o mesmo ID de camada e unidades não VCL NAL associadas. Por exemplo, o conjunto de unidades VCL NAL é parte de uma camada quando o conjunto de unidades VCL NAL tiver, todas, um valor particular de nuh_layer_id. Uma camada pode incluir um conjunto de unidades VCL NAL em que cada unidade VCL NAL contém uma fatia de uma imagem codificada. A camada também pode conter quaisquer conjuntos de parâmetros usados para codificar tais imagens em que tais parâmetros são incluídos em unidades não VCL NAL. As camadas podem ser incluídas em um OLS. Uma ou mais dentre as camadas podem ser camadas de saída. As camadas que não são uma camada de saída são codificadas para suportar reconstrução da(s) camada(s) de saída, mas tais camadas de suporte não são destinadas para emissão. Desse modo, o decodificador pode obter diferentes representações da sequência de vídeo dependendo de condições de rede, capacidades de hardware e/ou definições de usuário.
[0165] O fluxo de bits também compreende uma mensagem SEI atual. A mensagem SEI atual pode ser uma mensagem BP SEI, uma mensagem PT SEI ou uma mensagem DUI SEI, dependendo do exemplo. A mensagem SEI atual compreende uma du_hrd_params_present_flag que especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits. A du_hrd_params_present_flag pode especificar adicionalmente se um HRD no codificador opera em um nível de AU ou um nível de DU. Um nível de AU indica que processos de HRD são aplicados a AUs inteiras e um nível de DU indica que processos de HRD são aplicados a DUs individuais. Como tal, a du_hrd_params_present_flag pode especificar uma granularidade de testes de conformidade (por exemplo, granularidade de AU ou granularidade de DU). Em um exemplo específico, a du_hrd_params_present_flag pode ser definida como um ao especificar que parâmetros de HRD de nível de DU estão presentes e o HRD pode ser operado no nível de AU ou no nível de DU. Além disso, a du_hrd_params_present_flag pode ser definida como zero ao especificar que parâmetros de HRD de nível de DU não estão presentes e o HRD opera no nível de AU.
[0166] A mensagem SEI atual também pode incluir uma du_cpb_params_in_pic_timing_sei_flag que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI. A du_cpb_params_in_pic_timing_sei_flag pode especificar adicionalmente se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem DUI SEI. Em um exemplo específico, a du_cpb_params_in_pic_timing_sei_flag pode ser definida como um ao especificar que parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI e mensagem DUI SEI não está disponível. Além disso, a du_cpb_params_in_pic_timing_sei_flag pode ser definida como zero ao especificar que parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem DUI SEI e mensagens PT SEI não incluem parâmetros de atraso de remoção de CPB de nível de DU.
[0167] Em uma modalidade, o decodificador de vídeo espera que uma du_hrd_params_present_flag e uma du_cpb_params_in_pic_timing_sei_flag indiquem a presença e/ou localização de parâmetros de nível de DU, conforme descrito acima com base em VVC ou algum outro padrão. Se, no entanto, o decodificador determinar que essa condição não é verdadeira, o decodificador pode detectar um erro, sinalizar um erro, solicitar que um fluxo de bits revisado (ou uma porção do mesmo) seja reenviado, ou tomar alguma outra medida corretiva para garantir que um fluxo de bits em conformidade seja recebido
[0168] Na etapa 1003, o decodificador pode decodificar a imagem codificada a partir das unidades VCL NAL para produzir uma imagem decodificada. Por exemplo, o decodificador pode determinar que o fluxo de bits foi verificado quanto à conformidade com padrões com base na presença da mensagem SEI atual. Assim, o decodificador pode determinar que o fluxo de bits é decodificável com base na presença da mensagem SEI atual. Deve-se observar que, em alguns casos, o OLS recebido no decodificador pode conter uma única camada. Em tais casos, a camada/OLS pode não incluir um VPS. Devido à presença da du_hrd_params_present_flag e da du_cpb_params_in_pic_timing_sei_flag, a mensagem SEI atual não depende do VPS. Como tal, a falta de VPS não causa erros quando mensagem SEI atual é analisada. Na etapa 1005, o decodificador pode encaminhar a imagem decodificada para display como parte de uma sequência de vídeo decodificada.
[0169] A Figura 11 é um diagrama esquemático de um sistema exemplificativo 1100 para codificar uma sequência de vídeo usando um fluxo de bits que emprega uma mensagem SEI que pode não depender de um VPS. O sistema 1100 pode ser implementado por um codificador e um decodificador, tal como um sistema codec 200, um codificador 300, um decodificador 400 e/ou um dispositivo de codificação de vídeo 800. Além disso, o sistema 1100 pode empregar um HRD 500 para realizar testes de conformidade em uma sequência de vídeo de múltiplas camadas 600 e/ou um fluxo de bits 700. Além disso, o sistema 1100 pode ser empregado ao implementar o método 100, 900 e/ou 1000.
[0170] O sistema 1100 inclui um codificador de vídeo 1102. O codificador de vídeo 1102 compreende um módulo de codificação 1103 para codificar uma imagem codificada em um fluxo de bits. O módulo de codificação 1103 é adicionalmente para codificar, no fluxo de bits, uma mensagem SEI atual que compreende uma du_hrd_params_present_flag que especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits. O codificador de vídeo 1102 compreende adicionalmente um módulo de HRD 1105 para realizar um conjunto de testes de conformidade de fluxo de bits no fluxo de bits com base na mensagem SEI atual. O codificador de vídeo 1102 compreende adicionalmente um módulo de armazenamento 1106 para armazenar o fluxo de bits para comunicação em direção a um um decodificador. O codificador de vídeo 1102 compreende adicionalmente um módulo de transmissão 1107 para transmitir o fluxo de bits para um decodificador de vídeo 1110. O codificador de vídeo 1102 pode ser adicionalmente configurado para realizar qualquer uma das etapas do método 900.
[0171] O sistema 1100 também inclui um decodificador de vídeo 1110. O decodificador de vídeo 1110 compreende um módulo de recebimento 1111 para receber um fluxo de bits que compreende uma imagem codificada e uma mensagem SEI atual que compreende uma du_hrd_params_present_flag que especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits. O decodificador de vídeo 1110 compreende adicionalmente um módulo de decodificação 1113 para decodificar a imagem codificada para produzir uma imagem decodificada. O decodificador de vídeo 1110 compreende adicionalmente um módulo de encaminhamento 1115 para encaminhar a imagem decodificada para exibição como parte de uma sequência de vídeo decodificada. O decodificador de vídeo 1110 pode ser adicionalmente configurado para realizar qualquer uma das etapas do método 1000.
[0172] Um primeiro componente é acoplado diretamente a um segundo componente quando não houver componentes intermediários, exceto uma linha, um traço ou outro meio entre o primeiro componente e o segundo componente. O primeiro componente é acoplado indiretamente ao segundo componente quando houver componentes intermediários diferentes de uma linha, um traço ou outro meio entre o primeiro componente e o segundo componente. O termo “acoplado” e suas variantes incluem tanto acoplado diretamente quanto acoplado indiretamente. O uso do termo “cerca de” significa uma faixa que inclui ±10% do número subsequente, a menos que estabelecido de outra maneira.
[0173] Deve-se entender também que não é exigido que as etapas dos métodos exemplificativos estabelecidos na presente invenção sejam necessariamente realizadas na ordem descrita, e a ordem das etapas de tais métodos deve ser entendida apenas como exemplificativa. Da mesma maneira, as etapas adicionais podem ser incluídas em tais métodos, e determinadas etapas podem ser omitidas ou combinadas, em métodos consistentes com várias modalidades da presente revelação.
[0174] Embora diversas modalidades tenham sido fornecidas na presente revelação, pode-se entender que os sistemas e métodos revelados podem ser incorporados a muitas outras formas específicas sem se afastar da essência ou escopo da presente revelação. Os presentes exemplos devem ser considerados como ilustrativos e não restritivos, e a intenção não deve ser limitada aos detalhes fornecidos no presente documento. Por exemplo, os vários elementos ou componentes podem ser combinados ou integrados em outro sistema ou determinados atributos podem ser omitidos, ou não implementados.
[0175] Além disso, técnicas, sistemas, subsistemas e métodos descritos e ilustrados nas várias modalidades como distintos ou separados podem ser combinados ou integrados a outros sistemas, componentes, técnicas ou métodos sem se afastar do escopo da presente revelação. Outros exemplos de mudanças, substituições e alterações são verificados por um técnico no assunto e podem ser realizados sem se afastar da essência e escopo revelados no presente documento.

Claims (16)

  1. Método implementado por um codificador, CARACTERIZADO pelo fato de que o método compreende: codificar, por um processador do codificador, uma imagem codificada em um fluxo de bits; codificar no fluxo de bits, pelo processador, uma mensagem de informações suplementares de enriquecimento (SEI) atual que compreende uma flag de parâmetros presentes de decodificador de referência hipotético (HRD) de unidade de decodificação (DU) (du_hrd_params_present_flag) que especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits; realizar, pelo processador, um conjunto de testes de conformidade de fluxo de bits no fluxo de bits com base na mensagem SEI atual; e armazenar, por uma memória acoplada ao processador, o fluxo de bits para comunicação em direção a um decodificador.
  2. Método, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a du_hrd_params_present_flag especifica adicionalmente se um HRD opera em um nível de unidade de acesso (AU) ou em um nível de DU.
  3. Método, de acordo com qualquer uma das reivindicações 1 a 2, CARACTERIZADO pelo fato de que a du_hrd_params_present_flag é definida como um ao especificar que parâmetros de HRD de nível de DU estão presentes e o HRD pode ser operado no nível de AU ou no nível de DU, e em que a du_hrd_params_present_flag é definida como zero ao especificar que parâmetros de HRD de nível de DU não estão presentes e o HRD opera no nível de AU.
  4. Método, de acordo com qualquer uma das reivindicações 1 a 3, CARACTERIZADO pelo fato de que a mensagem SEI atual compreende adicionalmente uma flag de parâmetros de buffer de imagem codificada (CPB) de DU em SEI de temporização de imagem (PT) (du_cpb_params_in_pic_timing_sei_flag) que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI.
  5. Método, de acordo com qualquer uma das reivindicações 1 a 4, CARACTERIZADO pelo fato de que a du_cpb_params_in_pic_timing_sei_flag especifica adicionalmente se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem SEI de informações de unidade de decodificação (DUI).
  6. Método, de acordo com qualquer uma das reivindicações 1 a 5, CARACTERIZADO pelo fato de que a du_cpb_params_in_pic_timing_sei_flag é definida como um ao especificar que parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI e nenhuma mensagem DUI SEI está disponível, e em que a du_cpb_params_in_pic_timing_sei_flag é definida como zero ao especificar que parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem DUI SEI e mensagens PT SEI não incluem parâmetros de atraso de remoção de CPB de nível de DU.
  7. Método, de acordo com qualquer uma das reivindicações 1 a 6, CARACTERIZADO pelo fato de que a mensagem SEI atual é uma mensagem SEI de Período de Buffering (BP), uma mensagem PT SEI, ou uma mensagem DUI SEI.
  8. Dispositivo de codificação de vídeo, CARACTERIZADO pelo fato de que compreende: um processador, um receptor acoplado ao processador, uma memória acoplada ao processador, e um transmissor acoplado ao processador, em que o processador, receptor, memória, e transmissor são configurados para realizar o método conforme definido em qualquer uma das reivindicações 1 a 7.
  9. Mídia legível por computador não transitória, CARACTERIZADA pelo fato de que compreende um produto de programa de computador para uso por um dispositivo de codificação de vídeo, o produto de programa de computador compreendendo instruções executáveis por computador armazenadas na mídia legível por computador não transitória tal que quando executadas por um processador fazem com que o dispositivo de codificação de vídeo realize o método conforme definido em qualquer uma das reivindicações 1 a 7.
  10. Codificador, CARACTERIZADO pelo fato de que compreende: um meio de codificação para: codificar uma imagem codificada em um fluxo de bits; e codificar no fluxo de bits uma mensagem de informações suplementares de enriquecimento (SEI) atual que compreende uma flag de parâmetros presentes de decodificador de referência hipotético (HRD) de unidade de decodificação (DU) (du_hrd_params_present_flag) que especifica se parâmetros de HRD de nível de DU estão presentes no fluxo de bits;um meio de decodificador de referência hipotético (HRD) para realizar um conjunto de testes de conformidade de fluxo de bits no fluxo de bits com base na mensagem SEI atual; e um meio de armazenamento para armazenar o fluxo de bits para comunicação em direção a um decodificador
  11. Codificador, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que a du_hrd_params_present_flag especifica adicionalmente se um HRD opera em um nível de unidade de acesso (AU) ou em um nível de DU.
  12. Codificador, de acordo com qualquer uma das reivindicações 10 a 11, CARACTERIZADO pelo fato de que a du_hrd_params_present_flag é definida como um ao especificar que parâmetros de HRD de nível de DU estão presentes e o HRD pode ser operado no nível de AU ou no nível de DU, e em que a du_hrd_params_present_flag é definida como zero ao especificar que parâmetros de HRD de nível de DU não estão presentes e o HRD opera no nível de AU.
  13. Codificador, de acordo com qualquer uma das reivindicações 10 a 12, CARACTERIZADO pelo fato de que a mensagem SEI atual compreende adicionalmente uma flag de parâmetros de buffer de imagem codificada (CPB) de DU em SEI de temporização de imagem (PT) (du_cpb_params_in_pic_timing_sei_flag) que especifica se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI.
  14. Codificador, de acordo com qualquer uma das reivindicações 10 a 13, CARACTERIZADO pelo fato de que a du_cpb_params_in_pic_timing_sei_flag especifica adicionalmente se parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem SEI de informações de unidade de decodificação (DUI).
  15. Codificador, de acordo com qualquer uma das reivindicações 10 a 14, CARACTERIZADO pelo fato de que a du_cpb_params_in_pic_timing_sei_flag é definida como um ao especificar que parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem PT SEI e nenhuma mensagem DUI SEI está disponível, e em que a du_cpb_params_in_pic_timing_sei_flag é definida como zero ao especificar que parâmetros de atraso de remoção de CPB de nível de DU estão presentes em uma mensagem DUI SEI e mensagens PT SEI não incluem parâmetros de atraso de remoção de CPB de nível de DU.
  16. Codificador, de acordo com qualquer uma das reivindicações 10 a 15, CARACTERIZADO pelo fato de que a mensagem SEI atual é uma mensagem SEI de Período de Buffering (BP), uma mensagem PT SEI, ou uma mensagem DUI SEI.
BR122022007954-7A 2019-09-24 2020-09-17 Simplificação de dependência de mensagem sei em codificação de vídeo BR122022007954A2 (pt)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962905236P 2019-09-24 2019-09-24
US62/905,236. 2019-09-24
BR112022005394-0 2020-09-17
PCT/US2020/051316 WO2021061496A1 (en) 2019-09-24 2020-09-17 Sei message dependency simplification in video coding

Publications (1)

Publication Number Publication Date
BR122022007954A2 true BR122022007954A2 (pt) 2022-07-05

Family

ID=75166352

Family Applications (6)

Application Number Title Priority Date Filing Date
BR122022007954-7A BR122022007954A2 (pt) 2019-09-24 2020-09-17 Simplificação de dependência de mensagem sei em codificação de vídeo
BR112022004883A BR112022004883A2 (pt) 2019-09-24 2020-09-17 Método implementado por um decodificador, mídia legível por computador não transitória, e dispositivo de decodificação
BR112022005394A BR112022005394A2 (pt) 2019-09-24 2020-09-17 Simplificação de dependência de mensagem sei em codificação de vídeo
BR112022004873A BR112022004873A2 (pt) 2019-09-24 2020-09-17 Método implementado por decodificador, mídia legível por computador não transitória e dispositivo de decodificação
BR112022005000A BR112022005000A2 (pt) 2019-09-24 2020-09-17 Método implementado por um decodificador, mídia legível por computador não transitória e dispositivo de decodificação
BR112022004862A BR112022004862A2 (pt) 2019-09-24 2020-09-17 Método implementado por um decodificador, mídia legível por computador não transitória e dispositivo de decodificação

Family Applications After (5)

Application Number Title Priority Date Filing Date
BR112022004883A BR112022004883A2 (pt) 2019-09-24 2020-09-17 Método implementado por um decodificador, mídia legível por computador não transitória, e dispositivo de decodificação
BR112022005394A BR112022005394A2 (pt) 2019-09-24 2020-09-17 Simplificação de dependência de mensagem sei em codificação de vídeo
BR112022004873A BR112022004873A2 (pt) 2019-09-24 2020-09-17 Método implementado por decodificador, mídia legível por computador não transitória e dispositivo de decodificação
BR112022005000A BR112022005000A2 (pt) 2019-09-24 2020-09-17 Método implementado por um decodificador, mídia legível por computador não transitória e dispositivo de decodificação
BR112022004862A BR112022004862A2 (pt) 2019-09-24 2020-09-17 Método implementado por um decodificador, mídia legível por computador não transitória e dispositivo de decodificação

Country Status (11)

Country Link
US (6) US20220217410A1 (pt)
EP (5) EP4035377A4 (pt)
JP (9) JP7416921B2 (pt)
KR (5) KR20220063269A (pt)
CN (11) CN114467262A (pt)
AU (5) AU2020354926A1 (pt)
BR (6) BR122022007954A2 (pt)
CA (2) CA3152353A1 (pt)
CL (2) CL2022000702A1 (pt)
MX (2) MX2022003548A (pt)
WO (5) WO2021061495A1 (pt)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020156538A1 (en) 2019-02-03 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Interaction between mv precisions and mv difference coding
CN113424538A (zh) 2019-02-14 2021-09-21 北京字节跳动网络技术有限公司 解码器侧细化工具的选择性应用
WO2021051047A1 (en) 2019-09-14 2021-03-18 Bytedance Inc. Chroma quantization parameter in video coding
KR20220063269A (ko) * 2019-09-24 2022-05-17 후아웨이 테크놀러지 컴퍼니 리미티드 해상도 변경들을 위한 디코딩된 픽처 버퍼 동작
WO2021072177A1 (en) * 2019-10-09 2021-04-15 Bytedance Inc. Cross-component adaptive loop filtering in video coding
EP4029245A4 (en) * 2019-10-12 2022-11-23 Beijing Bytedance Network Technology Co., Ltd. HIGH LEVEL SYNTAX FOR VIDEO CODING TOOLS
WO2021076475A1 (en) 2019-10-14 2021-04-22 Bytedance Inc. Joint coding of chroma residual and filtering in video processing
JP7508558B2 (ja) 2019-12-09 2024-07-01 バイトダンス インコーポレイテッド ビデオコーディングにおける量子化グループの使用
JP7431330B2 (ja) 2019-12-26 2024-02-14 バイトダンス インコーポレイテッド ビデオコーディングにおけるプロファイル、層及びレイヤの指示
EP4062319A4 (en) 2019-12-26 2023-01-11 ByteDance Inc. REPORTING DECODED FRAME BUFFER PARAMETERS IN LAYERED VIDEO
CN114930825A (zh) 2019-12-26 2022-08-19 字节跳动有限公司 用于在编解码图片中实现解码顺序的技术
KR20220121804A (ko) 2019-12-27 2022-09-01 바이트댄스 아이엔씨 파라미터 세트들에서의 서브픽처 시그널링
CN114902657A (zh) 2019-12-31 2022-08-12 字节跳动有限公司 视频编解码中的自适应颜色变换
CN114946174A (zh) 2020-01-09 2022-08-26 字节跳动有限公司 层间参考图片的存在的信令通知
KR20220155293A (ko) * 2020-03-17 2022-11-22 바이트댄스 아이엔씨 비디오 코딩에서 픽처 출력 플래그 표시
JP2023526661A (ja) 2020-05-22 2023-06-22 バイトダンス インコーポレイテッド 適合出力サブビットストリームの生成技術
WO2021233422A1 (en) 2020-05-22 2021-11-25 Beijing Bytedance Network Technology Co., Ltd. Subpicture sub-bitstream extraction improvements
WO2021252533A1 (en) 2020-06-09 2021-12-16 Bytedance Inc. Sub-bitstream extraction of multi-layer video bitstreams
CN117296317A (zh) * 2021-04-19 2023-12-26 Lg 电子株式会社 媒体文件处理方法及其设备
EP4329308A1 (en) * 2021-04-23 2024-02-28 LG Electronics Inc. Image encoding/decoding method and device based on sei message including layer identifier information, and method for transmitting bitstream

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8374238B2 (en) * 2004-07-13 2013-02-12 Microsoft Corporation Spatial scalability in 3D sub-band decoding of SDMCTF-encoded video
US7852353B1 (en) * 2005-03-31 2010-12-14 Apple Inc. Encoding a transparency (alpha) channel in a video bitstream
CN101317459A (zh) * 2005-10-11 2008-12-03 诺基亚公司 用于可伸缩视频编码的有效解码图像缓存管理
US7903737B2 (en) * 2005-11-30 2011-03-08 Mitsubishi Electric Research Laboratories, Inc. Method and system for randomly accessing multiview videos with known prediction dependency
JP2007166129A (ja) 2005-12-13 2007-06-28 Victor Co Of Japan Ltd 符号化データ生成装置
US7535383B2 (en) * 2006-07-10 2009-05-19 Sharp Laboratories Of America Inc. Methods and systems for signaling multi-layer bitstream data
KR101101965B1 (ko) * 2006-10-16 2012-01-02 노키아 코포레이션 멀티뷰 비디오 코딩에 대한 병렬 디코딩가능 슬라이스들을 이용하기 위한 시스템 및 방법
US9826243B2 (en) * 2007-04-12 2017-11-21 Thomson Licensing Methods and apparatus for video usability information (VUI) for scalable video coding (SVC)
US20100142613A1 (en) * 2007-04-18 2010-06-10 Lihua Zhu Method for encoding video data in a scalable manner
US9131033B2 (en) * 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
CN103748884A (zh) * 2011-08-30 2014-04-23 索尼公司 图像处理装置和图像处理方法
US9106927B2 (en) * 2011-09-23 2015-08-11 Qualcomm Incorporated Video coding with subsets of a reference picture set
US9565431B2 (en) * 2012-04-04 2017-02-07 Qualcomm Incorporated Low-delay video buffering in video coding
RU2584501C1 (ru) * 2012-04-16 2016-05-20 Нокиа Текнолоджиз Ой Способ и устройство для видеокодирования
US9979959B2 (en) * 2012-04-20 2018-05-22 Qualcomm Incorporated Video coding with enhanced support for stream adaptation and splicing
US20130343465A1 (en) * 2012-06-26 2013-12-26 Qualcomm Incorporated Header parameter sets for video coding
US10110890B2 (en) 2012-07-02 2018-10-23 Sony Corporation Video coding system with low delay and method of operation thereof
US9912941B2 (en) * 2012-07-02 2018-03-06 Sony Corporation Video coding system with temporal layers and method of operation thereof
US9584804B2 (en) 2012-07-10 2017-02-28 Qualcomm Incorporated Coding SEI NAL units for video coding
US9380289B2 (en) 2012-07-20 2016-06-28 Qualcomm Incorporated Parameter sets in video coding
US9014051B2 (en) 2012-08-30 2015-04-21 Abb Inc. Updating multicast group information of a client device of a wireless mesh network
US9686542B2 (en) * 2012-09-05 2017-06-20 Qualcomm Incorporated Network abstraction layer header design
US9426462B2 (en) * 2012-09-21 2016-08-23 Qualcomm Incorporated Indication and activation of parameter sets for video coding
US9503753B2 (en) * 2012-09-24 2016-11-22 Qualcomm Incorporated Coded picture buffer arrival and nominal removal times in video coding
US9241158B2 (en) * 2012-09-24 2016-01-19 Qualcomm Incorporated Hypothetical reference decoder parameters in video coding
KR20140048802A (ko) * 2012-10-08 2014-04-24 삼성전자주식회사 멀티 레이어 비디오 부호화 방법 및 장치, 멀티 레이어 비디오 복호화 방법 및 장치
US9154785B2 (en) * 2012-10-08 2015-10-06 Qualcomm Incorporated Sub-bitstream applicability to nested SEI messages in video coding
EP2907318A1 (en) * 2012-10-09 2015-08-19 Cisco Technology, Inc. Output management of prior decoded pictures at picture format transitions in bitstreams
US9521393B2 (en) 2013-01-07 2016-12-13 Qualcomm Incorporated Non-nested SEI messages in video coding
US20140269896A1 (en) * 2013-03-13 2014-09-18 Futurewei Technologies, Inc. Multi-Frame Compression
US10003815B2 (en) 2013-06-03 2018-06-19 Qualcomm Incorporated Hypothetical reference decoder model and conformance for cross-layer random access skipped pictures
WO2015008477A1 (en) * 2013-07-14 2015-01-22 Sharp Kabushiki Kaisha Tile alignment signaling and conformance constraints
CN105379273B (zh) * 2013-07-14 2019-03-15 夏普株式会社 对来自比特流的视频进行解码的方法和设备
US20150016547A1 (en) * 2013-07-15 2015-01-15 Sony Corporation Layer based hrd buffer management for scalable hevc
KR20200045012A (ko) * 2013-07-15 2020-04-29 소니 주식회사 상호작용성을 위한 모션-구속된 타일 세트들 sei 메시지의 확장들
CN105580370A (zh) * 2013-10-08 2016-05-11 夏普株式会社 图像解码装置、图像编码装置以及编码数据变换装置
EP3056004A2 (en) 2013-10-11 2016-08-17 VID SCALE, Inc. High level syntax for hevc extensions
US10187662B2 (en) * 2013-10-13 2019-01-22 Sharp Kabushiki Kaisha Signaling parameters in video parameter set extension and decoder picture buffer operation
WO2015056182A2 (en) 2013-10-15 2015-04-23 Nokia Technologies Oy Video encoding and decoding
US9860540B2 (en) * 2014-01-03 2018-01-02 Qualcomm Incorporated Inference of nooutputofpriorpicsflag in video coding
WO2015125489A1 (en) * 2014-02-24 2015-08-27 Sharp Kabushiki Kaisha Restrictions on signaling
US9866869B2 (en) * 2014-03-17 2018-01-09 Qualcomm Incorporated POC value design for multi-layer video coding
US20150264404A1 (en) * 2014-03-17 2015-09-17 Nokia Technologies Oy Method and apparatus for video coding and decoding
US9894370B2 (en) * 2014-03-24 2018-02-13 Qualcomm Incorporated Generic use of HEVC SEI messages for multi-layer codecs
US9712871B2 (en) * 2014-05-01 2017-07-18 Qualcomm Incorporated Determination bitstream decoding capability in video coding
US20170324981A1 (en) 2014-06-19 2017-11-09 Sharp Kabushiki Kaisha Method for decoding a video bitstream
US20150373343A1 (en) * 2014-06-20 2015-12-24 Qualcomm Incorporated Representation format update in multi-layer codecs
US20160112724A1 (en) * 2014-10-15 2016-04-21 Qualcomm Incorporated Hrd descriptor and buffer model of data streams for carriage of hevc extensions
US10455242B2 (en) * 2015-03-04 2019-10-22 Qualcomm Incorporated Signaling output indications in codec-hybrid multi-layer video coding
US9961350B2 (en) * 2015-04-09 2018-05-01 Arris Enterprises Llc Method and apparatus for automatic discovery of elements in a system of encoders
US10200690B2 (en) * 2015-09-22 2019-02-05 Qualcomm Incorporated Video decoder conformance for high dynamic range (HDR) video coding using a core video standard
WO2017067429A1 (en) * 2015-10-19 2017-04-27 Mediatek Inc. Method and apparatus for decoded picture buffer management in video coding system using intra block copy
CN109963176B (zh) 2017-12-26 2021-12-07 中兴通讯股份有限公司 视频码流处理方法、装置、网络设备和可读存储介质
US11321516B2 (en) 2018-01-19 2022-05-03 Qualcomm Incorporated Processing dynamic web content of an ISO BMFF web resource track
CN118827977A (zh) 2018-12-20 2024-10-22 瑞典爱立信有限公司 恢复点的规范指示
BR112021016953A2 (pt) * 2019-02-27 2021-11-23 Huawei Tech Co Ltd Codificador, decodificador e métodos correspondentes
WO2020175893A1 (ko) * 2019-02-28 2020-09-03 엘지전자 주식회사 Aps 시그널링 기반 비디오 또는 영상 코딩
GB2584295A (en) * 2019-05-28 2020-12-02 Canon Kk Method and apparatus for encoding and decoding a video bitstream for merging regions of interest
US11166033B2 (en) * 2019-06-06 2021-11-02 Qualcomm Incorporated Adaptation parameter set in access unit in video coding
CN114391252A (zh) * 2019-07-08 2022-04-22 Lg电子株式会社 基于自适应环路滤波器的视频或图像编码
WO2021032747A1 (en) * 2019-08-19 2021-02-25 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Usage of access unit delimiters and adaptation parameter sets
BR112022005046A2 (pt) * 2019-09-18 2022-07-05 Beijing Bytedance Network Tech Co Ltd Método de processamento de dados de vídeo, aparelho para processar dados de vídeo, meio de armazenamento não transitório legível por computador e meio de gravação não transitório legível por computador
US11375223B2 (en) * 2019-09-20 2022-06-28 Tencent America LLC Method for signaling output layer set with sub-picture
AU2020352900A1 (en) * 2019-09-24 2022-04-14 Huawei Technologies Co., Ltd. Scalable Nesting SEI Messages For OLSs
KR20220063269A (ko) * 2019-09-24 2022-05-17 후아웨이 테크놀러지 컴퍼니 리미티드 해상도 변경들을 위한 디코딩된 픽처 버퍼 동작
EP4042684A4 (en) * 2019-10-29 2022-11-30 Beijing Bytedance Network Technology Co., Ltd. SIGNALING AN ADAPTIVE CROSS-COMPONENT LOOP FILTER

Also Published As

Publication number Publication date
US20220217411A1 (en) 2022-07-07
WO2021061493A1 (en) 2021-04-01
US20220217410A1 (en) 2022-07-07
EP4022777A1 (en) 2022-07-06
JP2022550320A (ja) 2022-12-01
JP2022549010A (ja) 2022-11-22
WO2021061496A1 (en) 2021-04-01
US20220217387A1 (en) 2022-07-07
CN114467262A (zh) 2022-05-10
CN114968894B (zh) 2023-08-04
US20220217390A1 (en) 2022-07-07
EP4022451A1 (en) 2022-07-06
JP2022548404A (ja) 2022-11-18
CA3152353A1 (en) 2021-04-01
JP2022548405A (ja) 2022-11-18
JP2024028383A (ja) 2024-03-04
JP2024023566A (ja) 2024-02-21
JP2024096147A (ja) 2024-07-12
BR112022004862A2 (pt) 2022-06-07
EP4035377A1 (en) 2022-08-03
CN115002467A (zh) 2022-09-02
KR20220065054A (ko) 2022-05-19
MX2022003547A (es) 2022-05-30
KR20220065055A (ko) 2022-05-19
CN116744002A (zh) 2023-09-12
WO2021061494A1 (en) 2021-04-01
CN114968894A (zh) 2022-08-30
KR20220063269A (ko) 2022-05-17
CN114979663B (zh) 2023-08-04
CN114424559A (zh) 2022-04-29
CN114979663A (zh) 2022-08-30
CA3152357A1 (en) 2021-04-01
KR20220065051A (ko) 2022-05-19
EP4022772A1 (en) 2022-07-06
EP4022772A4 (en) 2022-11-23
CN114514703A (zh) 2022-05-17
AU2020352453A1 (en) 2022-04-21
AU2020352914A1 (en) 2022-04-14
JP2022548330A (ja) 2022-11-17
AU2020354368A1 (en) 2022-04-14
CN114845112A (zh) 2022-08-02
CN114450962A (zh) 2022-05-06
CL2022000703A1 (es) 2022-11-18
US20220217388A1 (en) 2022-07-07
EP4035377A4 (en) 2022-11-23
AU2020356300A1 (en) 2022-04-14
BR112022004883A2 (pt) 2022-06-07
JP2024074856A (ja) 2024-05-31
EP4022778A4 (en) 2022-11-23
CN114978232A (zh) 2022-08-30
US20230269389A1 (en) 2023-08-24
BR112022005000A2 (pt) 2022-06-14
MX2022003548A (es) 2022-06-02
CN114450675A (zh) 2022-05-06
AU2020354926A1 (en) 2022-04-07
WO2021061492A1 (en) 2021-04-01
CN114978232B (zh) 2023-04-04
JP7416921B2 (ja) 2024-01-17
US11800130B2 (en) 2023-10-24
BR112022004873A2 (pt) 2022-06-07
CL2022000702A1 (es) 2022-11-18
CN115002467B (zh) 2023-04-04
EP4022777A4 (en) 2022-11-23
WO2021061495A1 (en) 2021-04-01
EP4022451A4 (en) 2022-11-23
JP7400088B2 (ja) 2023-12-18
KR20220062657A (ko) 2022-05-17
BR112022005394A2 (pt) 2022-06-21
CN114845112B (zh) 2023-04-04
EP4022778A1 (en) 2022-07-06

Similar Documents

Publication Publication Date Title
BR122022007954A2 (pt) Simplificação de dependência de mensagem sei em codificação de vídeo
US12022125B2 (en) Error avoidance in sub-bitstream extraction
US12058356B2 (en) Sequence-level HRD parameters
BR122022009715A2 (pt) Método implementado por um codificador, dispositivo de codificação de vídeo, meio legível por computador não transitório, e codificador
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
RU2823614C1 (ru) Ограничения временного идентификатора для сообщений sei

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]