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

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

Info

Publication number
BR112021008659A2
BR112021008659A2 BR112021008659-5A BR112021008659A BR112021008659A2 BR 112021008659 A2 BR112021008659 A2 BR 112021008659A2 BR 112021008659 A BR112021008659 A BR 112021008659A BR 112021008659 A2 BR112021008659 A2 BR 112021008659A2
Authority
BR
Brazil
Prior art keywords
hps
parameters
slice
encoding
type
Prior art date
Application number
BR112021008659-5A
Other languages
English (en)
Inventor
Fnu HENDRY
Ye-Kui Wang
Jianle Chen
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 BR112021008659A2 publication Critical patent/BR112021008659A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods 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 colour or a chrominance component
    • 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/187Methods 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 scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

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

Abstract

codificador de vídeo, decodificador de vídeo e métodos correspondente. um mecanismo de codificação de vídeo é divulgado. o mecanismo inclui receber um fluxo de bits compreendendo um primeiro conjunto de parâmetros de cabeçalho (hps) contendo um primeiro tipo de parâmetros de ferramenta de codificação, um segundo hps contendo um segundo tipo de parâmetros de ferramenta de codificação, um cabeçalho de fatia e uma fatia associada com o cabeçalho de fatia. o mecanismo inclui adicionalmente determinar que o cabeçalho de fatia contém uma primeira referência para o primeiro hps e uma segunda referência para o segundo hps. o mecanismo inclui adicionalmente decodificar a fatia usando o primeiro tipo de parâmetros de ferramenta de codificação e o segundo tipo de parâmetros de ferramenta de codificação com base na determinação de que o cabeçalho de fatia contém a primeira referência e a segunda referência. o mecanismo inclui adicionalmente encaminhar a fatia para exibição como parte de uma sequência de vídeo decodificada.

Description

CODIFICADOR DE VÍDEO, DECODIFICADOR DE VÍDEO E MÉTODOS CORRESPONDENTES CAMPO TÉCNICO
[001] A presente divulgação de uma maneira geral diz respeito à codificação de vídeo, e especificamente diz respeito à sinalização eficiente de parâmetros de ferramenta de codificação usados para comprimir dados de vídeo em codificação de vídeo.
ANTECEDENTES
[002] A quantidade de dados de vídeo necessários para representar um vídeo mesmo que relativamente curto pode ser substancial, o que pode resultar em dificuldades quando os dados têm que ser transferidos em fluxo contínuo ou comunicados de outro modo através de uma rede de comunicações com capacidade de largura de banda limitada. Assim, dados de vídeo de uma maneira geral são comprimidos antes de serem transmitidos através de redes de telecomunicações atuais. O tamanho de um vídeo também pode ser um problema quando o vídeo é armazenado em um dispositivo de armazenamento porque recursos de memória podem ser limitados. Dispositivos de compressão de vídeo frequentemente usam software e/ou hardware na origem para codificar os dados de vídeo antes da transmissão ou armazenamento, diminuindo desse modo a quantidade de dados necessários para representar imagens de vídeo digital. Os dados comprimidos são então recebidos no destino por um dispositivo de descompressão de vídeo que decodifica os dados de vídeo. Com recursos de rede limitados e demandas sempre crescentes de maior qualidade de vídeo, técnicas de compressão e descompressão aperfeiçoadas que melhorem a taxa de compressão com pouco ou nenhum sacrifício em qualidade de imagem são desejáveis.
SUMÁRIO
[003] Em uma modalidade, a divulgação inclui um método implementado em um decodificador, o método compreendendo: receber, por um receptor do decodificador, um fluxo de bits compreendendo um primeiro conjunto de parâmetros de cabeçalho (HPS) contendo um primeiro tipo de parâmetros de ferramenta de codificação, um segundo HPS contendo um segundo tipo de parâmetros de ferramenta de codificação, um cabeçalho de fatia, e uma fatia associada ao cabeçalho de fatia; determinar, por um processador do decodificador, que o cabeçalho de fatia contém uma primeira referência para o primeiro HPS e uma segunda referência para o segundo HPS; decodificar, pelo processador, a fatia usando o primeiro tipo de parâmetros de ferramenta de codificação e o segundo tipo de parâmetros de ferramenta de codificação com base na determinação de que o cabeçalho de fatia contém a primeira referência e a segunda referência; e encaminhar, pelo processador, a fatia para exibição como parte de uma sequência de vídeo decodificada. Um HPS, também conhecido como um conjunto de parâmetros de adaptação (APS), pode ser empregado para descrever dados de vídeo em granularidade menor que um conjunto de parâmetros de imagem (PPS) e granularidade maior que um cabeçalho de fatia. Os aspectos divulgados permitem que um único cabeçalho de fatia se refira a vários tipos de HPS. Ao fornecer um mecanismo para permitir que um único cabeçalho de fatia se refira a vários tipos de HPS, uma variedade de parâmetros de ferramenta de codificação pode ser sinalizada no nível de HPS. Isto permite que os parâmetros de ferramenta de codificação mudem entre fatias na mesma imagem/quadro sem carregar os cabeçalhos de fatia com dados extras. Portanto, um codificador tem maior flexibilidade ao realizar otimização de distorção de taxa (RDO) já que parâmetros de ferramenta de codificação que variam entre fatias na mesma imagem podem não ser carregados em cada cabeçalho de fatia. Adicionalmente, eficiência de codificação média é aumentada já que o codificador pode ter acesso a mais opções de codificação ao encontrar uma solução de codificação ideal. Isto por sua vez reduz uso de recurso de memória e uso de recursos de rede, em tanto o codificador quanto o decodificador, ao armazenar os dados de vídeo e ao transmitir os dados de vídeo.
[004] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, em que o primeiro HPS e o segundo HPS incluem um HPS de filtro de laço adaptativo (ALF), um HPS de mapeamento de luma com escalamento de croma (LMCS), um HPS de parâmetros de lista de escalamentos, ou combinações dos mesmos.
[005] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, em que o fluxo de bits compreende adicionalmente uma pluralidade de HPSs incluindo o primeiro HPS e o segundo HPS, e em que cada um da pluralidade de HPSs é restringido de referenciar parâmetros de ferramenta de codificação a partir de outro HPS na pluralidade de HPSs. Em alguns sistemas, um HPS atual pode herdar parâmetros de codificação por referência a HPS anterior. Em teoria, isto permite que um HPS atual inclua somente a diferença entre o HPS atual e um HPS anterior. Entretanto, na prática, esta abordagem frequentemente cria cadeias de herança longas, o que por sua vez exige que o decodificador mantenha um número grande de HPSs velhos no armazenamento temporário desde que um HPS subsequente possa se referir de volta ao HPS velho. Isto tanto cria problemas de memória de armazenamento temporário quanto aumenta a possibilidade de erros de codificação se um HPS for perdido em trânsito. Alguns aspectos da presente divulgação abordam esta questão ao exigir que cada HPS contenha todos os parâmetros de codificação pertinentes sem referenciar outro HPS.
[006] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, em que o primeiro HPS é contido em uma unidade de acesso associada a um identificador (ID) temporal, e em que o primeiro HPS contém o ID temporal associado à unidade de acesso que contém o primeiro HPS. Em um exemplo, cada HPS pode ser exigido manter o mesmo ID temporal da unidade de acesso que contém o HPS.
[007] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, em que a fatia é parte de uma imagem, em que a imagem é associada a um ID temporal, e em que o primeiro HPS contém o ID temporal associado à imagem. Em alguns exemplos, cada HPS pode ser exigido manter o mesmo ID temporal da imagem associada com a primeira fatia que se refere ao HPS.
[008] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, em que o fluxo de bits inclui uma pluralidade de imagens, cada uma contendo uma ou mais fatias incluindo a fatia, em que o fluxo de bits compreende adicionalmente uma pluralidade de HPSs incluindo o primeiro HPS e o segundo HPS, em que cada um dos
HPSs e cada uma das fatias são associados a um de uma pluralidade de IDs temporais, e em que cada fatia com um primeiro ID temporal é restringida de se referir a qualquer HPS com um segundo ID temporal que é maior que o primeiro ID temporal. Em alguns exemplos, um fluxo de bits de imagens e fatias pode ser associado a um de uma pluralidade de IDs temporais (por exemplo, um de três). Cada um dos IDs temporais é associado a uma taxa de quadros correspondente. Itens de dados com taxas de quadros maiores podem ser ignorados quando taxas de quadros menores são renderizadas. No presente exemplo, uma fatia é impedida de se referir um HPS com um ID temporal maior e consequentemente uma taxa de quadros maior. Esta abordagem assegura que as fatias não se referem ao HPS de taxa de quadros maior, as quais são ignoradas quando a taxa de quadros inferior da fatia é renderizada. Isto pode assegurar que o HPS está realmente disponível para a fatia e não ignorado devido a uma divergência de taxa de quadros.
[009] Em uma modalidade, a divulgação inclui um método implementado em um codificador, o método compreendendo: particionar, por um processador do codificador, uma pluralidade de imagens em uma pluralidade de fatias; codificar, pelo processador, a pluralidade de fatias em um fluxo de bits, em que as fatias são codificadas por pelo menos um primeiro tipo de ferramentas de codificação com base em um primeiro tipo de parâmetros de ferramenta de codificação e um segundo tipo de ferramentas de codificação com base em um segundo tipo de parâmetros de ferramenta de codificação; codificar, pelo processador, um primeiro HPS e um segundo HPS no fluxo de bits, o primeiro HPS contendo o primeiro tipo de parâmetros de ferramenta de codificação e o segundo HPS contendo o segundo tipo de parâmetros de ferramenta de codificação; codificar, pelo processador, um primeiro cabeçalho de fatia no fluxo de bits descrevendo uma codificação de uma primeira fatia da pluralidade de fatias, em que o primeiro cabeçalho de fatia contém uma primeira referência para o primeiro HPS e uma segunda referência para o segundo HPS; e armazenar, por uma memória acoplada ao processador, o fluxo de bits para comunicação em direção a um decodificador.
Um HPS, também conhecido como um APS, pode ser empregado para descrever dados de vídeo em granularidade menor que um PPS e granularidade maior que um cabeçalho de fatia.
Os aspectos divulgados permitem que um único cabeçalho de fatia se refira a vários tipos de HPS.
Ao fornecer um mecanismo para permitir a um único cabeçalho de fatia se referir a vários tipos de HPS, uma variedade de parâmetros de ferramenta de codificação pode ser sinalizada no nível de HPS.
Isto permite que os parâmetros de ferramenta de codificação mudem entre fatias na mesma imagem/quadro sem carregar os cabeçalhos de fatia com dados extras.
Portanto, um codificador tem maior flexibilidade ao realizar RDO já que parâmetros de ferramenta de codificação que variam entre fatias na mesma imagem podem não ser carregados em cada cabeçalho de fatia.
Adicionalmente, eficiência de codificação média é aumentada já que o codificador pode ter acesso a mais opções de codificação para encontrar uma solução de codificação ideal.
Isto por sua vez reduz uso de recurso de memória e uso de recursos de rede, em tanto o codificador quanto o decodificador, ao armazenar os dados de vídeo e ao transmitir os dados de vídeo.
[010] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, em que o primeiro HPS e o segundo HPS incluem um HPS de ALF, um HPS de LMCS, um HPS de parâmetros de lista de escalamentos, ou combinações dos mesmos.
[011] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, compreendendo adicionalmente codificar, pelo processador, uma pluralidade de HPSs no fluxo de bits, em que a pluralidade de HPSs inclui o primeiro HPS e o segundo HPS, e em que cada um da pluralidade de HPSs é restringido de referenciar parâmetros de ferramenta de codificação a partir de outro HPS na pluralidade de HPSs. Em alguns sistemas, um HPS atual pode herdar parâmetros de codificação por referência a HPS anterior. Em teoria, isto permite que um HPS atual inclua somente a diferença entre o HPS atual e um HPS anterior. Entretanto, na prática, esta abordagem frequentemente cria cadeias de herança longas, o que por sua vez exige que o decodificador mantenha um número grande de HPSs velhos no armazenamento temporário desde que um HPS subsequente possa se referir de volta ao HPS velho. Isto tanto cria problemas de memória de armazenamento temporário quanto aumenta a possibilidade de erros de codificação se um HPS for perdido em trânsito. Alguns aspectos da presente divulgação abordam esta questão ao exigir que cada HPS contenha todos os parâmetros de codificação pertinentes sem referenciar outro HPS.
[012] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, em que o primeiro HPS é contido em uma unidade de acesso associada a um ID temporal, e em que o primeiro HPS contém o ID temporal associado à unidade de acesso que contém o primeiro HPS. Em um exemplo, cada HPS pode ser exigido manter o mesmo ID temporal da unidade de acesso que contém o HPS.
[013] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, em que a primeira fatia é particionada a partir de uma primeira imagem, em que a primeira imagem é associada a um ID temporal, e em que o primeiro HPS contém o ID temporal associado à imagem. Em alguns exemplos, cada HPS pode ser exigido manter o mesmo ID temporal da imagem associada com a primeira fatia que se refere ao HPS.
[014] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, em que uma pluralidade de HPSs é codificada incluindo o primeiro HPS e o segundo HPS, em que cada um da pluralidade de HPSs e cada uma das fatias são associados a um de uma pluralidade de IDs temporais, e em que cada fatia com um primeiro ID temporal é restringida de se referir a qualquer HPS com um segundo ID temporal que é maior que o primeiro ID temporal. Em alguns exemplos, um fluxo de bits de imagens e fatias pode ser associado a um de uma pluralidade de IDs temporais (por exemplo, um de três). Cada um dos IDs temporais é associado com uma taxa de quadros correspondente. Itens de dados com taxas de quadros maiores podem ser ignorados quando taxas de quadros menores são renderizadas. No presente exemplo, uma fatia é impedida de se referir a um HPS com um ID temporal maior e consequentemente uma taxa de quadros maior. Esta abordagem assegura que as fatias não se referem ao HPS de taxa de quadros maior, as quais são ignoradas quando a taxa de quadros inferior da fatia é renderizada. Isto pode assegurar que o HPS está realmente disponível para a fatia e não ignorado devido a uma divergência de taxa de quadros.
[015] Em uma modalidade, a divulgaçã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 anteriores.
[016] Em uma modalidade, a divulgação inclui um meio legível por computador não transitório compreendendo 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 no meio legível por computador não transitório, de tal maneira que quando executadas por um processador fazem o dispositivo de codificação de vídeo realizar o método de qualquer um dos aspectos anteriores.
[017] Em uma modalidade, a divulgação inclui um decodificador compreendendo: um meio de recebimento para receber um fluxo de bits compreendendo um primeiro HPS contendo um primeiro tipo de parâmetros de ferramenta de codificação, um segundo HPS contendo um segundo tipo de parâmetros de ferramenta de codificação, um cabeçalho de fatia, e uma fatia associada ao cabeçalho de fatia; um meio de determinação para determinar que o cabeçalho de fatia contém uma primeira referência para o primeiro HPS e uma segunda referência para o segundo HPS; um meio de decodificação para decodificar a fatia usando o primeiro tipo de parâmetros de ferramenta de codificação e o segundo tipo de parâmetros de ferramenta de codificação com base na determinação de que o cabeçalho de fatia contém a primeira referência e a segunda referência; e um meio de encaminhamento para encaminhar a fatia para exibição como parte de uma sequência de vídeo decodificada.
[018] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, em que o decodificador é configurado adicionalmente para realizar o método de qualquer um dos aspectos anteriores.
[019] Em uma modalidade, a divulgação inclui um codificador compreendendo: um meio de particionamento para particionar uma pluralidade de imagens em uma pluralidade de fatias; um meio de codificação para: codificar a pluralidade de fatias em um fluxo de bits, em que as fatias são codificadas por pelo menos um primeiro tipo de ferramentas de codificação com base em um primeiro tipo de parâmetros de ferramenta de codificação e um segundo tipo de ferramentas de codificação com base em um segundo tipo de parâmetros de ferramenta de codificação; codificar um primeiro HPS e um segundo HPS no fluxo de bits, o primeiro HPS contendo o primeiro tipo de parâmetros de ferramenta de codificação e o segundo HPS contendo o segundo tipo de parâmetros de ferramenta de codificação; e codificar um primeiro cabeçalho de fatia no fluxo de bits descrevendo uma codificação de uma primeira fatia da pluralidade de fatias, em que o primeiro cabeçalho de fatia contém uma primeira referência para o primeiro HPS e uma segunda referência para o segundo HPS; e um meio de armazenamento para armazenar o fluxo de bits para comunicação em direção a um decodificador.
[020] Opcionalmente, em qualquer um dos aspectos anteriores, outra implementação do aspecto fornece, em que o codificador é configurado adicionalmente para realizar o método de qualquer um dos aspectos anteriores.
[021] Para propósito de clareza, qualquer uma das modalidades expostas anteriormente pode ser combinada com qualquer uma ou mais das outras modalidades expostas anteriormente para criar uma nova modalidade dentro do escopo da presente divulgação.
[022] Estes e outros recursos serão entendidos mais claramente a partir da descrição detalhada a seguir considerada em combinação com os desenhos anexos e reivindicações.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[023] Para um entendimento mais completo desta divulgação, referência agora é feita para a descrição resumida seguinte, considerada em conexão com os desenhos anexos e descrição detalhada, em que números de referência semelhantes representam partes semelhantes.
[024] A figura 1 é um fluxograma de um método de exemplo de codificar um sinal de vídeo.
[025] A figura 2 é um diagrama esquemático de um sistema de codificação e decodificação (codec) de exemplo para codificação de vídeo.
[026] A figura 3 é um diagrama esquemático ilustrando um codificador de vídeo de exemplo.
[027] A figura 4 é um diagrama esquemático ilustrando um decodificador de vídeo de exemplo.
[028] A figura 5 é um diagrama esquemático ilustrando um fluxo de bits de exemplo contendo uma sequência de vídeo codificada com um conjunto de parâmetros de cabeçalho (HPS).
[029] A figura 6 é um diagrama esquemático ilustrando um mecanismo de exemplo para escalamento temporal.
[030] A figura 7 é um diagrama esquemático de um dispositivo de codificação de vídeo de exemplo.
[031] A figura 8 é um fluxograma de um método de exemplo de codificação de uma sequência de vídeo em um fluxo de bits ao usar um HPS.
[032] A figura 9 é um fluxograma de um método de exemplo de decodificar uma sequência de vídeo de um fluxo de bits ao usar um HPS.
[033] A figura 10 é um diagrama esquemático de um sistema de exemplo para codificar uma sequência de vídeo de imagens em um fluxo de bits ao usar um HPS.
DESCRIÇÃO DETALHADA
[034] Deve ser entendido no início que, embora uma implementação ilustrativa de uma ou mais modalidades seja fornecida a seguir, os sistemas e/ou métodos divulgados podem ser implementados usando qualquer número de técnicas, se atualmente conhecidas ou em existência. A divulgação não deve ser limitada em nenhum modo às implementações ilustrativas, desenhos e técnicas ilustradas a seguir, incluindo os projetos e implementações exemplares ilustrados e descritos neste documento, mas pode ser modificada dentro do escopo das reivindicações anexas junto com seu escopo total de equivalentes.
[035] Os acrônimos seguintes são usados neste documento: Filtro de Laço Adaptativo (ALF), Bloco de Árvore de Codificação (CTB), Unidade de Árvore de Codificação (CTU),
Unidade de Codificação (CU), Sequência de Vídeo Codificada (CVS), Transmissão Contínua Adaptativa Dinâmica sobre Protocolo de Transferência de Hipertexto (DASH), Equipe Conjunta de Especialistas em Vídeo (JVET), Conjunto de Peças de Movimento Restringido (MCTS), Unidade de Transferência Máxima (MTU), Camada de Abstração de Rede (NAL), Contagem de Ordem de Imagem (POC), Carga Útil de Sequência de Bytes Bruta (RBSP), Deslocamento Adaptativo de Amostra (SAO), Conjunto de Parâmetros de Sequência (SPS), Codificação de Vídeo Versátil (VVC) e Rascunho de Trabalho (WD).
[036] 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, técnicas de compressão de vídeo podem incluir realizar predição espacial (por exemplo, intraimagem) e/ou predição temporal (por exemplo, interimagem) para reduzir ou remover redundância de dados em sequências de vídeo. Para codificação de vídeo baseada em blocos, 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, os quais também podem ser referidos como 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 intracodificada (I) de uma imagem são codificados usando predição espacial em relação às amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia de predição unidirecional (P) ou de predição bidirecional (B) intercodificada de uma imagem podem ser codificados ao empregar predição espacial em relação às amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação às amostras de referência em outras imagens de referência. Imagens podem ser referidas como quadros e/ou imagens, e imagens de referência podem ser referidas como quadros de referência e/ou imagens de referência. A predição espacial ou temporal resulta em um bloco preditivo representando um bloco de imagem. Os dados residuais representam diferenças de pixels entre o bloco de imagem original e o bloco preditivo. Portanto, um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco preditivo e os dados residuais indicando a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada. Estes resultam em coeficientes de transformada residuais, os quais podem ser quantizados. Os coeficientes de transformada quantizados inicialmente podem ser arranjados em um arranjo bidimensional. Os coeficientes de transformada quantizados podem ser varridos 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 com mais detalhes a seguir.
[037] Para assegurar que um vídeo codificado pode ser decodificado precisamente, 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
H.261 do Setor de Padronização (ITU-T) da União Internacional de Telecomunicações (ITU), Parte 2 do Grupo de Especialistas de Imagens em Movimento (MPEG)-1 da Organização Internacional de Normalização/Comissão Internacional de Eletrotécnica (ISO/IEC), ITU-T H.262 ou ISO/IEC MPEG-2 Parte 2, ITU-T H.263, ISO/IEC MPEG-4 Parte 2, Codificação Avançada de Vídeo (AVC), também conhecida como ITU-T H.264 ou ISO/IEC MPEG-4 Parte 10, e Codificação de Vídeo de Alta Eficiência (HEVC), também conhecida como ITU-T H.265 ou MPEG-H Parte 2. AVC inclui extensões tais como Codificação de Vídeo Escalável (SVC), Codificação de Vídeo de Múltiplas Vistas (MVC) e Codificação de Vídeo de Múltiplas Vistas 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 conjunta de especialistas em vídeo (JVET) do ITU-T e ISO/IEC começou a desenvolver um padrão de codificação de vídeo referido como Codificação de Vídeo Versátil (VVC). A VVC está incluída em um Rascunho de Trabalho (WD), o qual inclui JVET-L1001-v1 e JVET-K1002-v3, o que fornece uma descrição de algoritmo, uma descrição de lado de codificador do WD de VVC, e software de referência.
[038] A fim de codificar uma imagem de vídeo, a imagem é primeiro particionada, e as partições são codificadas em um fluxo de bits. Vários esquemas de particionamento de imagem estão disponíveis. Por exemplo, uma imagem pode ser particionada em fatias regulares, fatias dependentes, peças (“tiles”) e/ou de acordo com Processamento Paralelo de Frente de Onda (WPP). Para simplicidade, HEVC restringe codificadores de maneira que somente fatias regulares,
fatias dependentes, peças, WPP e combinações dos mesmos possam ser usadas ao particionar uma fatia em grupos de CTBs para codificação de vídeo. Tal particionamento pode ser aplicado para suportar correspondência de tamanho de Unidade de Transferência Máxima (MTU), processamento paralelo e atraso de ponta a ponta reduzido. MTU denota a quantidade máxima de dados que podem ser transmitidos em um único pacote. Se uma carga útil de pacote estiver acima da MTU, essa carga útil é dividida em dois pacotes por meio de um processo chamado fragmentação.
[039] Uma fatia regular, também referida simplesmente como uma fatia, é uma parte particionada de uma imagem que pode ser reconstruída independentemente de outras fatias regulares dentro da mesma imagem, apesar de algumas interdependências devido a operações de filtragem de laço. Cada fatia regular é encapsulada na sua própria unidade de Camada de Abstração de Rede (NAL) para transmissão. Adicionalmente, predição em imagem (intrapredição de amostra, predição de informação de movimento, predição de modo de codificação) e dependência de codificação de entropia através de limites de fatia podem ser desabilitadas para suportar reconstrução independente. Tal reconstrução independente suporta paralelização. Por exemplo, paralelização baseada em fatia regular emprega comunicação mínima interprocessador ou internúcleo. Entretanto, como cada fatia regular é independente, cada fatia é associada a um cabeçalho de fatia separado. O uso de fatias regulares pode incorrer em uma sobrecarga de codificação substancial devido ao custo de bits do cabeçalho de fatia para cada fatia e devido à falta de predição através dos limites de fatia.
Adicionalmente, fatias regulares podem ser empregadas para suportar correspondência para exigências de tamanho de MTU. Especificamente, como uma fatia regular é encapsulada em uma unidade de NAL separada e pode ser codificada independentemente, cada fatia regular deve ser menor que a MTU em esquemas de MTU para evitar quebrar a fatia em múltiplos pacotes. Como tal, o objetivo de paralelização e o objetivo de correspondência de tamanho de MTU podem colocar demandas contraditórias para um esquema de fatia em uma imagem.
[040] Fatias dependentes são similares às fatias regulares, mas têm cabeçalhos de fatia encurtados e permitem particionamento dos limites de bloco de árvore de imagem sem quebrar predição em imagem. Portanto, fatias dependentes permitem que uma fatia regular seja fragmentada em múltiplas unidades de NAL, o que fornece atraso de ponta a ponta reduzido ao permitir que uma parte de uma fatia regular seja enviada antes de a codificação da fatia regular total estar completa.
[041] Uma peça é uma porção particionada de uma imagem criada por meio de limites horizontais e verticais que criam colunas e linhas de peças. Peças podem ser codificadas em ordem de varredura de raster (da direita para a esquerda e da parte superior para a parte inferior). A ordem de varredura de CTBs é local dentro de uma peça. Portanto, CTBs em uma primeira peça são codificados em ordem de varredura de raster, antes de prosseguir para os CTBs na próxima peça. Similares às fatias regulares, peças quebram dependências de predição em imagem assim como dependências de decodificação de entropia. Entretanto, peças não podem ser incluídas em unidades de NAL individuais, e consequentemente peças não podem ser usadas para correspondência de tamanho de MTU. Cada peça pode ser processada por um processador/núcleo, e a comunicação interprocessador/internúcleo empregada para predição em imagem entre unidades de processamento decodificando peças vizinhas pode ser limitada para transportar um cabeçalho de fatia compartilhado (quando peças adjacentes estão na mesma fatia), e realizar compartilhamento relacionado com filtragem de laço de amostras reconstruídas e metadados. Quando mais de uma peça são incluídas em uma fatia, o deslocamento de byte de ponto de entrada para cada peça exceto o primeiro deslocamento de ponto de entrada na fatia pode ser sinalizado no cabeçalho de fatia. Para cada fatia e peça, pelo menos uma das seguintes condições deve ser satisfeita: 1) todos os blocos de árvore codificados em uma fatia pertencem à mesma peça; e 2) todos os blocos de árvore codificados em uma peça pertencem à mesma fatia.
[042] Em WPP, a imagem é particionada em linhas únicas de CTBs. Os mecanismos de decodificação e predição de entropia podem usar dados a partir de CTBs em outras linhas. O processamento paralelo torna-se possível por meio de decodificação paralela de linhas de CTBs. Por exemplo, uma linha atual pode ser decodificada em paralelo com uma linha precedente. Entretanto, a decodificação da linha atual é atrasada a partir do processo de decodificação das linhas precedentes por dois CTBs. Este atraso assegura que dados relacionados com o CTB acima e o CTB acima e à direita do CTB atual na linha atual estão disponíveis antes de o CTB atual ser codificado. Esta abordagem aparece como uma frente de onda quando representada graficamente. Este início escalonado permite paralelização com tantos processadores/núcleos até quantas linhas de CTBs a imagem contém. Como a predição em imagem entre linhas de blocos de árvore vizinhos dentro de uma imagem é permitida, a comunicação interprocessador/internúcleo para habilitar predição em imagem pode ser substancial. O particionamento de WPP considera tamanhos de unidades de NAL. Consequentemente, WPP não suporta correspondência de tamanho de MTU. Entretanto, fatias regulares podem ser usadas em combinação com WPP, com certa sobrecarga de codificação, para implementar correspondência de tamanho de MTU tal como desejado.
[043] Peças definem limites horizontais e verticais que particionam uma imagem em colunas e linhas de peça. A ordem de varredura de CTBs pode ser mudada para ser local dentro de uma peça antes de decodificar o CTB superior esquerdo da próxima peça na ordem de varredura de raster de peças de uma imagem. Uma ordem de varredura local indica a ordem de uma varredura por raster de CTB de uma peça. Similares às fatias regulares, peças podem quebrar dependências de predição em imagem assim como dependências de decodificação de entropia. Entretanto, peças não podem ser incluídas em unidades de NAL individuais. Consequentemente peças não podem ser usadas para correspondência de tamanho de MTU. Cada peça pode ser processada por um processador/núcleo. A comunicação interprocessador/internúcleo usada para predição em imagem entre unidades de processamento decodificando peças vizinhas pode ser limitada para transportar o cabeçalho de fatia compartilhado nos casos onde uma fatia abrange mais de uma peça. A comunicação interprocessador/internúcleo também pode ser usada para compartilhamento relacionado com filtragem de laço de amostras reconstruídas e metadados. Quando mais de uma peça ou segmento de WPP é incluído em uma fatia, o deslocamento de byte de ponto de entrada para cada peça ou segmento de WPP exceto o primeiro na fatia pode ser sinalizado no cabeçalho de fatia. Restrições na aplicação dos quatro esquemas de particionamento de imagem diferentes podem ser empregadas para suportar simplicidade. Por exemplo, uma sequência de vídeo codificada (CVS) pode não incluir tanto peças quanto frentes de onda para a maioria dos perfis especificados em HEVC. Para cada fatia e peça, uma ou outra ou ambas as condições seguintes também podem ser satisfeitas. Todos os blocos de árvore codificados em uma fatia podem pertencer à mesma peça, e todos os blocos de árvore codificados em uma peça podem pertencer à mesma fatia. Adicionalmente, um segmento de frente de onda pode conter exatamente uma linha de CTB. Além disso, quando WPP está em uso, uma fatia iniciando dentro de uma linha de CTB deve terminar na mesma linha de CTB.
[044] VVC pode incluir esquemas de particionamento de imagem de peça e de grupo de peças. Uma peça em VVC pode ser o mesmo que uma peça em HEVC. A VVC pode empregar grupos de peças no lugar de fatias. Uma fatia é definida como contendo um grupo de CTUs, enquanto um grupo de peças é definido como contendo um grupo de peças. Uma imagem codificada pode ser constituída de uma ou mais fatias (ou grupos de peças). Cada fatia/grupo de peças tem um cabeçalho de fatia que contém um elemento de sintaxe representando informação usada para decodificar a fatia. Cada cabeçalho de fatia pode conter informação para decodificar somente a fatia. Entretanto, é provável que a informação de um cabeçalho de fatia seja a mesma para outras fatias na mesma imagem. Isto ocorre porque as ferramentas de codificação podem operar em um nível de imagem, e consequentemente os parâmetros para todas as fatias dentro de uma imagem podem ser os mesmos. Esta situação pode resultar em informação redundante em cabeçalhos de fatia.
[045] Um conjunto de parâmetros de cabeçalho (HPS), também conhecido como um APS, pode ser empregado para superar questões relacionadas com informação de cabeçalho de fatia redundante. Um HPS pode conter informação de nível de fatia que é compartilhada por múltiplas fatias. Um HPS pode ser gerado por um codificador e pode conter parâmetros de ferramenta de codificação que são empregados ao decodificar fatias correspondentes em um decodificador. Alguns sistemas implementam o esquema de HPS ao empregar HPS e HPS de referência. Neste esquema, um HPS inicial em ordem de codificação contém todos os parâmetros de ferramenta de codificação pertinentes para as fatias correspondentes. Quando tais parâmetros mudam para uma fatia subsequente, um HPS subsequente inclui somente os parâmetros que mudaram. O HPS subsequente então se refere de volta ao HPS inicial. Consequentemente, o HPS inicial age como um HPS de referência para o HPS subsequente. HPSs adicionais podem então ser empregados para ter como referência os HPSs anteriores, etc.
[046] HPS fazendo referência neste modo inclui vários problemas. Por exemplo, permitir a um HPS se referir a outro(s) HPS(s) resulta em um mecanismo complexo. Como um exemplo particular, este mecanismo pode resultar em uma série de referências de HPS. Em alguns casos, esta abordagem pode resultar em cadeias longas de HPS, já que pode não existir limite explícito para o número de referências de HPS usadas em um fluxo de bits contendo dados de vídeo. A fim de gerenciar um esquema como este, pode ser exigido do decodificador manter um número arbitrário para o HPS em um armazenamento temporário de imagens decodificadas a fim de se preparar para possíveis referências subsequentes. A fim de abordar esta questão, um mecanismo de reset de HPS pode ser adicionado para quebrar quaisquer tais cadeias de referências de HPSs estendidas, o que também adiciona complexidade. Adicionalmente, esta abordagem é potencialmente propensa a erro. Por exemplo, se um HPS inicial fosse perdido devido a um erro de transmissão, o HPS de referência subsequente não conteria dados suficientes para decodificar as fatias correspondentes. Além disso, esta abordagem pode resultar em um número grande de HPSs em um fluxo de bits. Entretanto, o número de identificadores (IDs) de HPS pode ser limitado para evitar codificação de valores grandes de IDs de HPSs. Como tal, ID de HPS pode ser reutilizado no fluxo de bits. Isto pode resultar em ambiguidade, por exemplo, quando um HPS faz referência para um ID de HPS usado por mais de um HPS de referência. Adicionalmente, HPS pode ser sinalizado dentro do fluxo de bits codificado, o que é referido como sinalização dentro de banda. O HPS também pode ser sinalizado por meio de mecanismos externos, tal como em informação de metadados. Tal sinalização é referida como sinalização fora de banda. Tais mecanismos de sinalização duplos aumentam ainda mais a complexidade do esquema de HPS.
[047] São divulgados neste documento vários mecanismos para reduzir a complexidade de sinalização de HPS.
O HPS é referido como o HPS na documentação de padrões mais recentes.
Portanto, a divulgação a seguir se refere de uma maneira geral a HPS para clareza de discussão.
Entretanto, os termos HPS e APS podem ser usados de modo permutável na maioria dos aspectos.
A presente divulgação remove a complexidade e natureza de propensão a erro de HPS ao impedir HPS de referenciar outro HPS.
Como o HPS não pode referenciar outro HPS, a perda de um único HPS causa somente erros localizados.
Adicionalmente, pode não ser exigido que o decodificador mantenha HPS em memória já que HPS subsequente substitui HPS anterior.
Como um exemplo específico, vários tipos de HPS podem ser empregados onde um tipo de HPS indica o tipo de parâmetros de ferramenta de codificação contidos no HPS.
Tais tipos de HPSs podem incluir um HPS de filtro de laço adaptativo (ALF), um HPS de mapeamento de luma com escalamento de croma (LMCS) e/ou um HPS de parâmetros de lista de escalamentos.
Em um exemplo como este, quando um HPS atual de um primeiro tipo é obtido por um decodificador, HPS anterior do primeiro tipo pode ser descartado já que o HPS atual substitui tal HPS anterior.
Adicionalmente, para permitir vários tipos de HPS, um único cabeçalho de fatia pode se referir a mais de um HPS para referenciar todos os parâmetros de ferramenta de codificação para uma fatia correspondente.
Isto está em contraste com outros esquemas que permitem a um cabeçalho de fatia se referir a um único HPS, o qual então se refere a outro HPS.
Portanto, permitir a um único cabeçalho de fatia se referir a múltiplos HPSs resulta em uma implementação que evita cadeias de referências de HPSs.
Além disso, a presente divulgação descreve um mecanismo que permite que HPS opere com escalamento temporal. Em escalamento temporal, um fluxo de bits é configurado para permitir que um decodificador e/ou usuário selecione a partir de uma pluralidade de taxas de quadros. Para implementar um esquema como este, cada um de imagens/quadros é designado com um ID temporal. Quadros com IDs temporais menores são exibidos em cada taxa de quadros. Quadros com IDs temporais maiores são omitidos em taxas de quadros menores e exibidos somente em taxas de quadros maiores. Para suportar tal escalamento temporal, HPS é designado com um ID temporal. Um HPS pode receber o ID temporal da imagem que contém a primeira fatia à qual se refere o HPS. Em outros exemplos, o HPS pode receber o ID temporal da unidade de acesso que contém o HPS. Uma unidade de acesso é um agrupamento de dados de fluxo de bits que contém dados de vídeo suficientes para decodificar uma imagem correspondente. Para suportar adicionalmente o escalamento temporal, fatias associadas com IDs temporais menores podem ser restringidas de se referir a HPSs que contêm IDs temporais maiores. Isto assegura que configurações de taxas de quadros inferiores não fazem uma fatia se referir a um HPS que é ignorado devido a escalamento temporal, e consequentemente impede que parâmetros de ferramenta de codificação fiquem indisponíveis ao decodificar certas fatias em taxas de quadros menores.
[048] A figura 1 é um fluxograma de um método de operação de exemplo 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 ao empregar vários mecanismos para reduzir o tamanho de arquivo de vídeo. Um tamanho de arquivo menor permite que o arquivo de vídeo comprimido seja transmitido em direção a um usuário enquanto reduzindo sobrecarga de largura de banda associada. O decodificador então decodifica o arquivo de vídeo comprimido para reconstruir o sinal de vídeo original para exibição para um usuário final. O processo de decodificação de uma maneira geral espelha o processo de codificação para permitir ao decodificador reconstruir de modo consistente o sinal de vídeo.
[049] Na etapa 101, o sinal de vídeo é introduzido no codificador. Por exemplo, o sinal de vídeo pode ser um arquivo de vídeo não comprimido armazenado em memória. Como 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 contínua ao vivo 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 vistos em uma sequência dão a impressão visual de movimento. Os quadros contêm pixels que são expressados em termos de luz, referidos neste documento como componentes de luma (ou amostras de luma), e de cor, que são referidos como componentes de croma (ou amostras de cores). Em alguns exemplos, os quadros também podem conter valores de profundidade para suportar visualização tridimensional.
[050] Na etapa 103, o vídeo é particionado em blocos. Particionar inclui subdividir os pixels em cada quadro em blocos quadrados e/ou retangulares para compressão. Por exemplo, em Codificação de Vídeo de Alta Eficiência (HEVC) (também conhecida como H.265 e MPEG-H Parte 2) o quadro pode ser primeiro dividido em unidades de árvore de codificação
(CTUs), as quais são blocos de um tamanho predefinido (por exemplo, sessenta e quatro pixels por sessenta e quatro pixels). As CTUs contêm amostras tanto de luma quanto de croma. Árvores de codificação podem ser empregadas para dividir as CTUs em blocos e então subdividir recursivamente os blocos até que as configurações sejam alcançadas que suportem codificação adicional. Por exemplo, os componentes de luma de um quadro podem ser subdivididos até que os blocos individuais contenham valores de iluminação relativamente homogêneos. Adicionalmente, componentes de croma de um quadro podem ser subdivididos até que os blocos individuais contenham valores de cores relativamente homogêneos. Portanto, mecanismos de particionamento variam dependendo do conteúdo dos quadros de vídeo.
[051] Na etapa 105, vários mecanismos de compressão são empregados para comprimir os blocos de imagem particionados na etapa 103. Por exemplo, interpredição e/ou intrapredição pode ser empregada. A interpredição é projetada para tirar proveito do fato de que objetos em uma cena comum tendem a aparecer em quadros sucessivos. Portanto, um bloco representando um objeto em um quadro de referência não precisa ser descrito repetidamente em quadros adjacentes. Especificamente, um objeto, tal como uma tabela, pode permanecer em uma posição constante em múltiplos quadros. Consequentemente a tabela é descrita uma vez e quadros adjacentes podem se referir de volta ao quadro de referência. Mecanismos de correspondência padrões podem ser empregados para corresponder objetos em múltiplos quadros. Adicionalmente, objetos em movimento podem ser representados através de múltiplos quadros, por exemplo, devido a movimento de objeto ou de movimento de câmera. Como um exemplo particular, um vídeo pode mostrar um automóvel que se desloca na tela em múltiplos quadros. Vetores de movimento podem ser empregados para descrever tal movimento. Um vetor de movimento é um vetor bidimensional que fornece um deslocamento das coordenadas de um objeto em um quadro para as coordenadas do objeto em um quadro de referência. Como tal, interpredição pode codificar um bloco de imagem em um quadro atual como um conjunto de vetores de movimento indicando um deslocamento de um bloco correspondente em um quadro de referência.
[052] A intrapredição codifica blocos em um quadro comum. A intrapredição tira proveito do fato de que componentes de luma e de croma tendem a se agrupar em um quadro. Por exemplo, um fragmento de verde em uma parte de uma árvore tende a ficar posicionada adjacente aos fragmentos similares de verde. A intrapredição emprega múltiplos modos de predição direcional (por exemplo, trinta e três em HEVC), um modo planar, e um modo atual direto (DC). Os modos direcionais indicam que um bloco atual é similar/igual às amostras de um bloco vizinho em uma direção correspondente. Modo planar 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. Modo planar, de fato, indica uma transição suave de luz/cor através de uma linha/coluna ao empregar uma inclinação relativamente constante ao mudar valores. Modo DC é empregado para suavização de limites e indica que um bloco é similar/igual a um valor médio associado com amostras de todos os blocos vizinhos associados com as direções angulares dos modos de predição direcional. Portanto, blocos de intrapredição podem representar blocos de imagem como vários valores de modo de predição relacional em vez de os valores reais. Adicionalmente, blocos de interpredição podem representar blocos de imagem como valores de vetor de movimento em vez de os valores reais. Em qualquer caso, os blocos de predição podem não representar exatamente os blocos de imagem em alguns casos. Quaisquer diferenças são armazenadas em blocos residuais. Transformadas podem ser aplicadas aos blocos residuais para comprimir adicionalmente o arquivo.
[053] 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 em laço. A predição baseada em bloco discutida acima pode resultar na criação de imagens como um bloco no decodificador. Adicionalmente, o esquema de predição baseada 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 em laço aplica iterativamente filtros de supressão de ruído, filtros de desblocagem, filtros de laço adaptativos e filtros de deslocamento adaptativo de amostra (SAO) para os blocos/quadros. Estes filtros mitigam tais artefatos de blocagem de maneira que o arquivo codificado possa ser reconstruído precisamente. Adicionalmente, estes filtros mitigam artefatos nos blocos de referência reconstruídos de tal maneira que é menos provável que artefatos criem artefatos adicionais em blocos subsequentes que são codificados com base nos blocos de referência reconstruídos.
[054] Uma vez que o sinal de vídeo tenha 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 anteriormente assim como quaisquer dados de sinalização desejados para dar suporte para reconstrução apropriada de sinal de vídeo no decodificador. Por exemplo, tais dados podem incluir dados de partição, dados de predição, blocos residuais e várias sinalizações fornecendo instruções de codificação para o 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 meio de difusão e/ou multidifusão em direção a uma pluralidade de decodificadores. A criação do fluxo de bits é um processo iterativo. Portanto, as etapas 101, 103, 105, 107 e 109 podem ocorrer continuamente e/ou simultaneamente ao longo de muitos quadros e blocos. A ordem mostrada na figura 1 é apresentada para clareza e facilidade de discussão, e não é proposta para limitar o processo de codificação de vídeo a uma ordem particular.
[055] O decodificador recebe o fluxo de bits e começa 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 sintaxe e de vídeo correspondentes. O decodificador emprega os dados de sintaxe do fluxo de bits para determinar as partições para os quadros na etapa 111. O particionamento deve corresponder os resultados de partição de bloco na etapa
103. A codificação/decodificação de entropia tal como empregada na etapa 111 é agora descrita. O codificador faz muitas escolhas durante o processo de compressão, tais como selecionar esquemas de partição de bloco de várias escolhas possíveis com base no posicionamento espacial de valores na(s) imagem(s) de entrada. Sinalização das escolhas exatas pode empregar um número grande de binários. Tal como usado neste documento, um binário é um valor binário que é tratado como uma variável (por exemplo, um valor de bits que pode variar dependendo de contexto). A codificação de entropia permite ao codificador descartar quaisquer opções que claramente não são viáveis para um caso particular, deixando um conjunto de opções admissíveis. A cada opção admissível é então designada uma palavra de código. O comprimento das palavras de código é baseado no número de opções admissíveis (por exemplo, um binário para duas opções, dois binários para três a quatro opções, etc.). O codificador então codifica a palavra de código para a opção selecionada. Este esquema reduz o tamanho das palavras de código já que as palavras de código são tão grandes como desejado para indicar exclusivamente uma seleção de um pequeno subconjunto de opções admissíveis, tal como o oposto a indicar exclusivamente a seleção de um conjunto potencialmente grande de todas as opções possíveis. O decodificador então decodifica a seleção ao determinar o conjunto de opções admissíveis em um modo similar ao do codificador. Ao determinar o conjunto de opções admissíveis, o decodificador pode ler a palavra de código e determinar a seleção feita pelo codificador.
[056] 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 tanto blocos de intrapredição quanto blocos de interpredição como gerados no codificador na etapa 105. Os blocos de imagem reconstruídos são então posicionados em quadros de um sinal de vídeo reconstruído de acordo com os dados de particionamento determinados na etapa 111. Sintaxe para a etapa 113 também pode ser sinalizada no fluxo de bits via codificação de entropia tal como discutido anteriormente.
[057] Na etapa 115, filtragem é realizada nos quadros do sinal de vídeo reconstruído em um modo similar ao da etapa 107 no codificador. Por exemplo, filtros de supressão de ruído, filtros de desblocagem, filtros de laço adaptativos e filtros SAO podem ser aplicados aos quadros para remover artefatos de blocagem. Uma vez que os quadros sejam filtrados, o sinal de vídeo pode ser enviado para uma exibição na etapa 117 para visualização por um usuário final.
[058] A figura 2 é um diagrama esquemático de um sistema de codificação e decodificação (codec) de exemplo 200 para codificação de vídeo. Especificamente, o sistema codec 200 fornece funcionalidade para dar suporte para a implementação do método de operação 100. O sistema codec 200 é generalizado para representar componentes empregados tanto em um codificador quanto um decodificador. O sistema codec 200 recebe e particiona um sinal de vídeo tal como discutido com relação às etapas 101 e 103 no método de operação 100, o que resulta em um sinal de vídeo particionado 201. O sistema codec 200 então comprime o sinal de vídeo particionado 201 em um fluxo de bits codificado ao agir como um codificador tal como discutido com relação às etapas 105, 107 e 109 no método 100. Ao agir como um decodificador, o sistema codec 200 gera um sinal de vídeo de saída do fluxo de bits tal como discutido com relação às etapas 111, 113, 115 e 117 no método de operação 100. O sistema codec 200 inclui um componente de controle de codificador geral 211, um componente de escalamento e quantização de transformada 213, um componente de estimativa de intraimagem 215, um componente de predição de intraimagem 217, um componente de compensação de movimento 219, um componente de estimativa de movimento 221, um componente de escalamento e transformada inversa 229, um componente de análise de controle de filtro 227, um componente de filtros em laço 225, um componente de armazenamento temporário (buffer) de imagens decodificadas 223 e um componente de formatação de cabeçalho e codificação aritmética binária adaptativa ao contexto (CABAC) 231. Tais componentes são acoplados tal como mostrado. Na figura 2, linhas contínuas 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. Todos os componentes do sistema codec 200 podem estar 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 intraimagem 217, o componente de compensação de movimento 219, o componente de escalamento e transformada inversa 229, o componente de filtros em laço 225 e o componente de armazenamento temporário de imagens decodificadas 223. Estes componentes são descritos agora.
[059] O sinal de vídeo particionado 201 é uma sequência de vídeo capturada que tenha sido particionada em blocos de pixels por uma árvore de codificação. Uma árvore de codificação emprega vários modos de divisão para subdividir um bloco de pixels em blocos menores de pixels. Estes blocos podem então ser subdivididos adicionalmente em blocos menores. Os blocos podem ser referidos como nós na árvore de codificação. Nós pais maiores são divididos em nós filhos menores. O número de vezes em que um nó é subdividido é referido como a profundidade do nó/árvore de codificação. Os blocos divididos podem ser incluídos em unidades de codificação (CUs) em alguns casos. Por exemplo, uma CU pode ser uma subporção de uma CTU que contém um bloco de luma, bloco(s) de croma de diferença de vermelho (Cr) e bloco(s) de croma de diferença de azul (Cb) junto com instruções de sintaxe correspondentes para a CU. Os modos de divisão podem incluir uma árvore binária (BT), árvore tripla (TT) e uma árvore quaternária (QT), empregadas para particionar um nó em dois, três ou quatro nós filhos, respectivamente, de formas variáveis dependendo dos modos de divisão empregados. O sinal de vídeo particionado 201 é encaminhado para o componente de controle de codificador geral 211, o componente de escalamento e quantização de transformada 213, o componente de estimativa de intraimagem 215, o componente de análise de controle de filtro 227 e para o componente de estimativa de movimento 221 para compressão.
[060] O componente de controle de codificador geral 211 é configurado para tomar decisões relacionadas com 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 otimização de tamanho de taxa de bits/fluxo de bits versus qualidade de reconstrução. Tais decisões podem ser tomadas com base em disponibilidade de espaço de armazenamento/largura de banda e em solicitações de resolução de imagem. O componente de controle de codificador geral 211 também gerencia utilização de armazenamento temporário considerando velocidade de transmissão para mitigar questões de esvaziamento (“underrun”) e superação (“overrun”) de armazenamento temporário. Para gerenciar estas 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 complexidade de compressão para aumentar resolução e aumentar uso de largura de banda ou diminuir complexidade de compressão para diminuir resolução e uso de largura de banda. Consequentemente, o componente de controle de codificador geral 211 controla os outros componentes do sistema codec 200 para equilibrar qualidade de reconstrução de sinal de vídeo com preocupações de taxas de bits. O componente de controle de codificador geral 211 cria dados de controle, os quais controlam a operação dos outros componentes. Os dados de controle são também 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.
[061] O sinal de vídeo particionado 201 é também enviado para o componente de estimativa de movimento 221 e para o componente de compensação de movimento 219 para interpredição. Um quadro ou fatia do sinal de vídeo particionado 201 pode ser dividido em múltiplos blocos de vídeo. O componente de estimativa de movimento 221 e o componente de compensação de movimento 219 realizam codificação interpreditiva do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer predição temporal. O sistema codec 200 pode realizar múltiplas passagens de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[062] O componente de estimativa de movimento 221 e o componente de compensação de movimento 219 podem ser altamente integrados, mas estão ilustrados separadamente para propósitos conceituais. Estimativa de movimento, realizada pelo componente de estimativa de movimento 221, é o processo de gerar vetores de movimento, os quais estimam movimento para os blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de um objeto codificado em relação a um bloco preditivo. Um bloco preditivo é um bloco que é descoberto corresponder rigorosamente com o bloco a ser codificado, em termos de diferença de pixel. Um bloco preditivo também pode ser referido como um bloco de referência. Tal diferença de pixel pode ser determinada por meio de soma de diferença absoluta (SAD), soma dos quadrados das diferenças (SSD) ou por outras métricas de diferenças. 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, os quais podem então ser divididos em CBs para inclusão em CUs. Uma CU pode ser codificada como uma unidade de predição (PU) contendo dados de predição e/ou como uma unidade de transformada (TU) contendo dados residuais transformados para a CU. O componente de estimativa de movimento 221 gera vetores de movimento, PUs e TUs ao usar uma análise de distorção de taxa como parte de um processo de otimização de distorção de taxa. Por exemplo, o componente de estimativa de movimento 221 pode determinar múltiplos blocos de referência, múltiplos vetores de movimento, etc. para um bloco/quadro atual, e pode selecionar os blocos de referência, vetores de movimento, etc. tendo as melhores características de distorção de taxa. As melhores características de distorção de taxa equilibram tanto qualidade de reconstrução de vídeo (por exemplo, quantidade de perda de dados por compressão) quanto eficiência de codificação (por exemplo, tamanho da codificação final).
[063] Em alguns exemplos, o sistema codec 200 pode calcular valores para posições de pixels subinteiros de imagens de referência armazenadas no componente de armazenamento temporário de imagens decodificadas 223. Por exemplo, o sistema codec de vídeo 200 pode interpolar valores de posições de um quarto de pixels, posições de um oitavo de pixels ou de outras posições fracionárias de pixels da imagem de referência. Portanto, o componente de estimativa de movimento 221 pode realizar uma pesquisa de movimento em relação às posições de pixels inteiros e posições de pixels fracionários e produzir um vetor de movimento com precisão de pixel fracionário. O componente de estimativa de movimento 221 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada ao comparar a posição da PU com a posição de um bloco preditivo de uma imagem de referência. O componente de estimativa de movimento 221 emite o vetor de movimento calculado como dados de movimento para o componente de formatação de cabeçalho e CABAC 231 para codificação e para o componente de compensação de movimento
219.
[064] Compensação de movimento, realizada pelo componente de compensação de movimento 219, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pelo componente de estimativa de movimento 221. De novo, o componente de estimativa de movimento 221 e o componente de compensação de movimento 219 podem ser integrados funcionalmente, em alguns exemplos. Ao receber o vetor de movimento para a PU do bloco de vídeo atual, o componente de compensação de movimento 219 pode localizar o bloco preditivo para o qual o vetor de movimento aponta. Um bloco de vídeo residual é então formado ao subtrair valores de pixels do bloco preditivo dos valores de pixels do bloco de vídeo atual sendo codificado, formando valores de diferenças de pixels. De uma maneira geral, o componente de estimativa de movimento 221 realiza estimativa 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 tanto para componentes de croma quanto para componentes de luma. O bloco preditivo e o bloco residual são encaminhados para o componente de escalamento e quantização de transformada 213.
[065] O sinal de vídeo particionado 201 é também enviado para o componente de estimativa de intraimagem 215 e para o componente de predição de intraimagem 217. Tal como com o componente de estimativa de movimento 221 e o componente de compensação de movimento 219, o componente de estimativa de intraimagem 215 e o componente de predição de intraimagem
217 podem ser altamente integrados, mas estão ilustrados separadamente para propósitos conceituais. O componente de estimativa de intraimagem 215 e o componente de predição de intraimagem 217 realizam intrapredição de um bloco atual em relação a blocos em um quadro atual, como uma alternativa para a interpredição realizada pelo componente de estimativa de movimento 221 e pelo componente de compensação de movimento 219 entre quadros, tal como descrito acima. Em particular, o componente de estimativa de intraimagem 215 determina um modo de intrapredição para usar para codificar um bloco atual. Em alguns exemplos, o componente de estimativa de intraimagem 215 seleciona um modo de intrapredição apropriado para codificar um bloco atual a partir de múltiplos modos de intrapredição testados. Os modos de intrapredição selecionados são então encaminhados para o componente de formatação de cabeçalho e CABAC 231 para codificação.
[066] Por exemplo, o componente de estimativa de intraimagem 215 calcula valores de distorção de taxa usando uma análise de distorção de taxa para os vários modos de intrapredição testados, e seleciona o modo de intrapredição tendo as melhores características de distorção de taxa dentre os modos testados. Análise de distorção de taxa de uma maneira geral 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, assim como uma taxa de bits (por exemplo, um número de bits) usada para produzir o bloco codificado. O componente de estimativa de intraimagem 215 calcula razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo de intrapredição exibe o melhor valor de distorção de taxa para o bloco. Além disso, o componente de estimativa de intraimagem 215 pode ser configurado para codificar blocos de profundidade de um mapa de profundidades usando um modo de modelagem de profundidade (DMM) com base em otimização de distorção de taxa (RDO).
[067] O componente de predição de intraimagem 217 pode gerar um bloco residual a partir do bloco preditivo com base nos modos de intrapredição selecionados determinados pelo componente de estimativa de intraimagem 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 escalamento e quantização de transformada
213. O componente de estimativa de intraimagem 215 e o componente de predição de intraimagem 217 podem operar em componentes tanto de luma quanto de croma.
[068] O componente de escalamento e quantização de transformada 213 é configurado para comprimir adicionalmente o bloco residual. O componente de escalamento e quantização de transformada 213 aplica uma transformada, tal como uma transformada discreta de cosseno (DCT), uma transformada discreta de seno (DST) ou uma transformada similar conceitualmente, ao bloco residual, produzindo um bloco de vídeo compreendendo valores residuais de coeficientes de transformada. Transformadas de ondeletas (“wavelet”), transformadas inteiras, transformadas de sub-bandas ou outros tipos de transformadas também podem ser usados. A transformada pode converter a informação residual de um domínio do valor de pixel para um domínio da transformada, tal como um domínio da frequência. O componente de escalamento e quantização de transformada 213 é também configurado para escalar a informação residual transformada, por exemplo, com base em frequência. Tal escalamento envolve aplicar um fator de escala à informação residual de maneira que informação de frequência diferente seja quantizada em granularidades diferentes, o que pode afetar qualidade visual final do vídeo reconstruído. O componente de escalamento e quantização de transformada 213 é também configurado para quantizar os coeficientes de transformada para reduzir adicionalmente a taxa de bits. O processo de quantização pode reduzir a profundidade de bits associada com todos ou com alguns dos coeficientes. O grau de quantização pode ser modificado ao ajustar um parâmetro de quantização. Em alguns exemplos, o componente de escalamento e quantização de transformada 213 pode então realizar uma varredura da matriz incluindo os coeficientes de transformada quantizados. Os coeficientes de transformada quantizados são encaminhados para o componente de formatação de cabeçalho e CABAC 231 para serem codificados no fluxo de bits.
[069] O componente de escalamento e transformada inversa 229 aplica uma operação inversa àquela do componente de escalamento e quantização de transformada 213 para suportar estimativa de movimento. O componente de escalamento e transformada inversa 229 aplica escalamento, transformação e/ou quantização inversa para reconstruir o bloco residual no domínio do pixel, por exemplo, para uso posterior como um bloco de referência que pode se tornar um bloco preditivo para outro bloco atual. O componente de estimativa de movimento 221 e/ou o componente de compensação de movimento 219 pode calcular um bloco de referência ao adicionar o bloco residual de volta a um bloco preditivo correspondente para uso em estimativa de movimento de um bloco/quadro posterior. Filtros são aplicados aos blocos de referência reconstruídos para mitigar artefatos criados durante escalamento, quantização e transformada. Tais artefatos de outro modo podem causar predição imprecisa (e criar artefatos adicionais) quando blocos subsequentes são previstos.
[070] O componente de análise de controle de filtro 227 e o componente de filtros em laço 225 aplicam os filtros aos blocos residuais e/ou aos blocos de imagem reconstruídos. Por exemplo, o bloco residual transformado pelo componente de escalamento e transformada inversa 229 pode ser combinado com um bloco de predição correspondente do componente de predição de intraimagem 217 e/ou do componente de compensação de movimento 219 para reconstruir o bloco de imagem original. Os filtros podem então ser aplicados ao bloco de imagem reconstruído. Em alguns exemplos, os filtros em vez disto podem ser aplicados aos blocos residuais. Tal como com outros componentes na figura 2, o componente de análise de controle de filtro 227 e o componente de filtros em laço 225 são altamente integrados e podem ser implementados conjuntamente, mas estão representados separadamente para propósitos conceituais. 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 como tais filtros são aplicados. O componente de análise de controle de filtro 227 analisa os blocos de referência reconstruídos para determinar onde tais filtros devem ser aplicados e estabelece parâmetros correspondentes. Tais dados são encaminhados para o componente de formatação de cabeçalho e CABAC 231 como dados de controle de filtro para codificação. O componente de filtros em laço 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 de laço adaptativo. Tais filtros podem ser aplicados no domínio do pixel/espacial (por exemplo, em um bloco de pixels reconstruído) ou no domínio da frequência, dependendo do exemplo.
[071] Ao operar como um codificador, o bloco de imagem reconstruído filtrado, bloco residual e/ou bloco de predição são armazenados no componente de armazenamento temporário de imagens decodificadas 223 para uso posterior em estimativa de movimento tal como discutido anteriormente. Ao operar como um decodificador, o componente de armazenamento temporário de imagens decodificadas 223 armazena e encaminha os blocos reconstruídos e filtrados em direção a uma exibição como parte de um sinal de vídeo de saída. O componente de armazenamento temporário de imagens decodificadas 223 pode ser qualquer dispositivo de memória capaz de armazenar blocos de predição, blocos residuais e/ou blocos de imagem reconstruídos.
[072] O componente de formatação de cabeçalho e CABAC 231 recebe os dados a partir dos vários componentes do sistema codec 200 e codifica tais dados em um fluxo de bits codificado para transmissão em direção a um decodificador.
Especificamente, o componente de formatação de cabeçalho e CABAC 231 gera vários cabeçalhos para codificar dados de controle, tais como dados de controle geral e dados de controle de filtro. Adicionalmente, dados de predição, incluindo dados de intrapredição e de movimento, assim como dados residuais na forma de dados de coeficientes de transformada quantizados são todos codificados no fluxo de bits. O fluxo de bits final inclui toda informação desejada pelo decodificador para reconstruir o sinal de vídeo particionado original 201. Tal informação também pode incluir tabelas de índices de modo de intrapredição (também referidas como tabelas de mapeamentos de palavras de código), definições de contextos de codificação para vários blocos, indicações de modos de intrapredição mais prováveis, uma indicação de informação de partição, etc. Tais dados podem ser codificados ao empregar codificação de entropia. Por exemplo, a informação pode ser codificada ao empregar codificação de comprimento variável adaptativa ao contexto (CAVLC), CABAC, codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra técnica de codificação de entropia. Seguinte à 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.
[073] A figura 3 é um diagrama de blocos ilustrando um codificador de vídeo de exemplo 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 de operação 100. O codificador 300 particiona um sinal de vídeo de entrada, resultando em um sinal de vídeo particionado 301, o qual é 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.
[074] Especificamente, o sinal de vídeo particionado 301 é encaminhado para um componente de predição de intraimagem 317 para intrapredição. O componente de predição de intraimagem 317 pode ser substancialmente similar ao componente de estimativa de intraimagem 215 e ao componente de predição de intraimagem 217. O sinal de vídeo particionado 301 é também encaminhado para um componente de compensação de movimento 321 para interpredição com base em blocos de referência em um componente de armazenamento temporário de imagens decodificadas 323. O componente de compensação de movimento 321 pode ser substancialmente similar ao componente de estimativa de movimento 221 e ao componente de compensação de movimento 219. Os blocos de predição e blocos residuais provenientes do componente de predição de intraimagem 317 e do componente de compensação de movimento 321 são encaminhados para um componente de transformada e quantização 313 para transformada e quantização dos blocos residuais. O componente de transformada e quantização 313 pode ser substancialmente similar ao componente de escalamento e quantização de transformada 213. Os blocos residuais transformados e quantizados e os blocos de predição correspondentes (juntamente com dados de controle associados) são encaminhados para um componente de codificação 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.
[075] 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 para 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 escalamento e transformada inversa 229. Filtros em laço em um componente de filtros em laço 325 também são aplicados aos blocos residuais e/ou blocos de referência reconstruídos, dependendo do exemplo. O componente de filtros em laço 325 pode ser substancialmente similar ao componente de análise de controle de filtro 227 e ao componente de filtros em laço
225. O componente de filtros em laço 325 pode incluir múltiplos filtros tal como discutido em relação ao componente de filtros em laço 225. Os blocos filtrados são então armazenados em um componente de armazenamento temporário de imagens decodificadas 323 para uso como blocos de referência pelo componente de compensação de movimento 321. O componente de armazenamento temporário de imagens decodificadas 323 pode ser substancialmente similar ao componente de armazenamento temporário de imagens decodificadas 223.
[076] A figura 4 é um diagrama de blocos ilustrando um decodificador de vídeo de exemplo 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 de operação 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.
[077] 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ção de cabeçalho para fornecer um contexto para interpretar dados adicionais codificados como palavras de código no fluxo de bits. A informação decodificada inclui qualquer informação desejada para decodificar o sinal de vídeo, tal como dados de controle geral, dados de controle de filtro, informação de partição, dados de movimento, dados de predição, e coeficientes de transformada quantizados de blocos residuais. Os coeficientes de transformada quantizados são encaminhados para um componente de transformada inversa e quantização 429 para reconstrução para blocos residuais. O componente de transformada inversa e quantização 429 pode ser similar ao componente de transformada inversa e quantização 329.
[078] Os blocos residuais e/ou blocos de predição reconstruídos são encaminhados para o componente de predição de intraimagem 417 para reconstrução para blocos de imagem com base em operações de intrapredição. O componente de predição de intraimagem 417 pode ser similar ao componente de estimativa de intraimagem 215 e a um componente de predição de intraimagem 217. Especificamente, o componente de predição de intraimagem 417 emprega modos de predição para localizar um bloco de referência no quadro e aplica um bloco residual ao resultado para reconstruir blocos de imagem intraprevistos.
Os blocos de imagem intraprevistos e/ou os blocos residuais reconstruídos e dados de interpredição correspondentes são encaminhados para um componente de armazenamento temporário de imagens decodificadas 423 por meio de um componente de filtros em laço 425, os quais podem ser substancialmente similares ao componente de armazenamento temporário de imagens decodificadas 223 e ao componente de filtros em laço 225, respectivamente.
O componente de filtros em laço 425 filtra os blocos de imagem, blocos residuais e/ou blocos de predição reconstruídos, e tal informação é armazenada no componente de armazenamento temporário de imagens decodificadas 423. Os blocos de imagem reconstruídos provenientes do componente de armazenamento temporário de imagens decodificadas 423 são encaminhados para um componente de compensação de movimento 421 para interpredição.
O componente de compensação de movimento 421 pode ser substancialmente similar ao componente de estimativa de movimento 221 e/ou ao componente de compensação de movimento 219. Especificamente, o componente de compensação de movimento 421 emprega vetores de movimento de um bloco de referência para gerar um bloco de predição e aplica um bloco residual ao resultado para reconstruir um bloco de imagem.
Os blocos reconstruídos resultantes também podem ser encaminhados por meio do componente de filtros em laço 425 para o componente de armazenamento temporário de imagens decodificadas 423. O componente de armazenamento temporário de imagens decodificadas 423 continua a armazenar blocos de imagem reconstruídos adicionais, os quais podem ser reconstruídos para quadros por meio da informação de partição. Tais quadros também podem ser colocados em uma sequência. A sequência é enviada em direção a uma tela como um sinal de vídeo de saída reconstruído.
[079] A figura 5 é um diagrama esquemático ilustrando um fluxo de bits de exemplo 500 contendo uma sequência de vídeo codificada com um HPS 513. Por exemplo, o fluxo de bits 500 pode ser gerado por um sistema codec 200 e/ou por um codificador 300 para decodificação por um sistema codec 200 e/ou por um decodificador 400. Como outro exemplo, o fluxo de bits 500 pode ser gerado por um codificador na etapa 109 do método 100 para uso por um decodificador na etapa 111.
[080] O fluxo de bits 500 inclui um conjunto de parâmetros de sequência (SPS) 510, uma pluralidade de conjuntos de parâmetros de imagem (PPSs) 512, uma pluralidade de HPSs 513, uma pluralidade de cabeçalhos de fatia 514 e os dados de imagem 520. Um SPS 510 contém dados de sequência comuns a todas as imagens na sequência de vídeo contida no fluxo de bits 500. Tais dados podem incluir dimensionamento de imagem, profundidade de bits, parâmetros de ferramenta de codificação, restrições de taxa de bits, etc. O PPS 512 contém parâmetros que se aplicam a uma imagem total. Consequentemente, cada imagem na sequência de vídeo pode se referir a um PPS 512. Deve ser notado que, embora cada imagem se refira a um PPS 512, um único PPS 512 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 um caso como este, um único PPS 512 pode conter dados para tais imagens similares. O PPS 512 pode indicar ferramentas de codificação disponíveis para fatias em imagens correspondentes, parâmetros de quantização, deslocamentos, etc. O cabeçalho de fatia 514 contém parâmetros que são específicos para cada fatia em uma imagem. Consequentemente, pode existir um cabeçalho de fatia 514 por fatia na sequência de vídeo. O cabeçalho de fatia 514 pode conter informação de tipo de fatia, contagens de ordem de imagem (POCs), listas de imagens de referência, pesos de predição, pontos de entrada de peça, parâmetros de desblocagem, etc.
[081] Um HPS 513 é uma estrutura de sintaxe contendo elementos de sintaxe que se aplicam para zero ou mais fatias tal como determinado por zero ou mais elementos de sintaxe encontrados em cabeçalhos de fatia. Consequentemente, o HPS 513 contém elementos de sintaxe para parâmetros da ferramenta de codificação relacionados para múltiplas fatias. O HPS 513 também pode ser referido como um HPS em alguns sistemas. Por exemplo, uma ou mais fatias podem se referir a um HPS 513. Portanto, um decodificador pode obter o HPS 513 com base em tais referências, obter os parâmetros de ferramenta de codificação a partir do HPS 513, e empregar os parâmetros de ferramenta de codificação para decodificar as fatias correspondentes. O HPS 513 conceitualmente ocupa uma posição hierárquica entre o PPS 512 e o cabeçalho de fatia 514. Por exemplo, certos dados podem ser relevantes para múltiplas fatias sem ser relevantes para uma imagem total. Tais dados podem não ser armazenados em um PPS 512 já que os dados não são relevantes para a imagem total. Entretanto, tais dados de outro modo seriam incluídos nos múltiplos cabeçalhos de fatia 514. O HPS 513 pode aceitar tais dados para evitar sinalização redundante através dos múltiplos cabeçalhos de fatia 514. A estrutura de codificação do HPS 513 é introduzida em VVC e não tem estrutura análoga em HEVC ou em padrões de codificação anteriores. Várias implementações do HPS 513 são discutidas a seguir.
[082] Os dados de imagem 520 contêm dados de vídeo codificados de acordo com interpredição e/ou intrapredição assim como dados residuais transformados e quantizados correspondentes. Por exemplo, uma sequência de vídeo inclui uma pluralidade das imagens 521 codificadas como dados de imagem. Uma imagem 521 é um único quadro de uma sequência de vídeo e consequentemente de uma maneira geral é exibida como uma única unidade ao exibir a sequência de vídeo. Entretanto, imagens parciais podem ser exibidas para implementar certas tecnologias tais como realidade virtual, imagem dentro de imagem, etc. Cada uma das imagens 521 faz referência para um PPS 512. As imagens 521 são divididas nas fatias 523. Uma fatia 523 pode ser definida como uma seção horizontal de uma imagem 521. Por exemplo, uma fatia 523 pode conter uma porção da altura da imagem 521 e a largura completa da imagem 521. Em alguns sistemas as fatias 523 são subdivididas nas peças
525. Em outros sistemas, as fatias 523 são substituídas por grupos de peças contendo as peças 525. As fatias 523 e/ou grupos de peças das peças 525 fazem referência para um cabeçalho de fatia 514 e/ou para um HPS 513. As peças 525 podem incluir uma parte retangular da imagem 521 e/ou uma parte da imagem 521 tal como definida por uma coluna e linha. As peças 525 são divididas adicionalmente em unidades de árvore de codificação (CTUs). As CTUs são divididas adicionalmente em blocos de codificação com base em árvores de codificação. Os blocos de codificação podem então ser codificados/decodificados de acordo com mecanismos de predição.
[083] O fluxo de bits 500 é codificado em unidades de NAL de VCL 533 e unidades de NAL não VCL 531. Uma unidade de NAL é uma unidade de dados codificada dimensionada para ser colocada como uma carga útil para um único pacote para transmissão por meio de uma rede. Uma unidade de NAL de VCL 533 é uma unidade de NAL que contém dados de vídeo codificados. Por exemplo, cada unidade de NAL de VCL 533 pode conter uma fatia 523 e/ou grupo de peças de dados incluindo peças 525, CTUs e/ou blocos de codificação correspondentes. Uma unidade de NAL não VCL 531 é uma unidade de NAL que contém sintaxe de suporte, mas não contém dados de vídeo codificados. Por exemplo, uma unidade de NAL não VCL 531 pode conter o SPS 510, um PPS 512, um HPS 513, um cabeçalho de fatia 514, etc. Como tal, o decodificador recebe o fluxo de bits 500 em unidades de NAL de VCL 533 e unidades de NAL não VCL 531 distintas. Uma unidade de acesso 535 é um grupo das unidades de NAL de VCL 533 e/ou das unidades de NAL não VCL 531 que incluem dados suficientes para codificar uma única imagem 521.
[084] Em alguns exemplos, o HPS 513 pode ser implementado como segue. O HPS 513 pode estar disponível dentro de banda e/ou fora de banda, onde sinalização dentro de banda é incluída no fluxo de bits 500 e fora de banda é incluída em metadados de suporte. O HPS 513 é incluído em uma unidade de NAL, tal como uma unidade de NAL não VCL 531, onde o HPS 513 é identificado por tipo de unidade de NAL. Um HPS 513 pode conter parâmetros para ferramentas de codificação tais como, mas não limitados a isto, ALF, SAO, desblocagem, matrizes de quantização, parâmetros de interpredição, parâmetros relacionados com construção de conjunto de imagens de referência, e/ou parâmetros relacionados com construção de lista de imagens de referência. O HPS 513 pode incluir um tipo. O tipo define quais parâmetros de ferramenta de codificação são contidos no HPS 513. Cada HPS 513 pode conter somente um tipo de parâmetros de ferramenta de codificação. HPSs 513 de tipos diferentes podem ser agrupados conjuntamente em um Grupo de Conjuntos de Parâmetros (GPS). Em vez de se referir a um único HPS 513, uma fatia 523 pode se referir a um GPS. Um HPS 513 pode ser tornado disponível no decodificador antes de ser referenciado por uma fatia 523 e/ou grupo de peças correspondente. Fatias 523 diferentes de uma imagem codificada 521 podem se referir a HPSs 513 diferentes. Um HPS 513 pode ser colocado em qualquer limite da fatia 523 no fluxo de bits 500. Isto permite a reutilização dos parâmetros no HPS 513 (por exemplo, parâmetros de ALF) mesmo para todas as fatias 523 da imagem atual 521 seguintes ao HPS 513.
[085] Referência a partir de um cabeçalho de fatia 514 para um HPS 513 pode ser opcional. Por exemplo, fatias 523 podem ter como referência um HPS 513 quando um ou outro do seguinte é verdadeiro. Primeiro, tal referência pode ser indicada no PPS 512 correspondente que o HPS 513 está disponível para o fluxo de bits 500. Segundo, fatias 523 podem ter referenciar um HPS 513 quando pelo menos uma das ferramentas de codificação cujos parâmetros são contidos no
HPS 513 é habilitada para o fluxo de bits 500. Cada HPS 513 pode ser associado a um ID de HPS. Uma fatia 523 que se refere a um HPS 513 deve conter o ID de HPS do HPS 513 referenciado. O ID de HPS pode ser codificado com elemento de sintaxe Exp-Golomb codificado de ordem zero de número inteiro não assinado com o primeiro bit esquerdo (por exemplo, ue(v)). O valor do ID de HPS pode ser restringido, por exemplo, na faixa de zero a sessenta e três inclusivo. Para cada parâmetro de uma ferramenta de codificação, uma sinalização pode estar presente no HPS 513 para indicar se o parâmetro está presente no HPS 513. Quando uma ferramenta de codificação é habilitada para uma fatia 523 e os parâmetros para a ferramenta de codificação estão presentes no HPS 513 referido pela fatia 523, os parâmetros podem não ser sinalizados no cabeçalho de fatia 514 correspondente. Um HPS 513 pode ser fragmentado em uma ou mais unidades de NAL e cada fragmento de um HPS 513 pode ser analisado e aplicado independentemente. Uma fatia 523 pode se referir a um único HPS 513 ou a múltiplos HPSs 513. Quando é permitido ter múltiplos HPSs 513 como referência, cada referência para um HPS 513 pode ser empregada para resolver parâmetros de uma ferramenta de codificação particular.
[086] As implementações seguintes permitem ao HPS 513 referenciar outro HPS 513 e herdar parâmetros de ferramenta de codificação por meio de tais referências. Um HPS 513 pode conter uma ou mais referências para outro HPS 513. Em tais exemplos, um HPS 513 pode ser referido como um intra-HPS quando o HPS 513 não tem como referência qualquer outro HPS
513. Quando um HPS 513 se refere a outro HPS 513, o HPS 513 se referindo pode copiar um ou mais parâmetros a partir do
HPS de referência 513. Um HPS 513 pode ter múltiplas referências para outro HPS 513 com um HPS de referência 513 para cada grupo de parâmetros. Em alguns exemplos, uma lista ligada de HPSs 513 pode ser formada como uma série de HPSs 513 que são conectados por um mecanismo referenciamento. Quando parâmetros de uma ferramenta de codificação são especificados como não presentes em um HPS 513 (por exemplo, o valor da sinalização de presença é igual a zero), uma sinalização adicional pode estar presente para indicar se os parâmetros podem ser ou não inferidos a partir de um HPS de referência 513. A referência a partir de um HPS 513 para outro HPS 513 pode ser especificada implicitamente de tal maneira que, quando parâmetros de uma ferramenta de codificação não estão presentes em um HPS 513, tais parâmetros são inferidos para serem os mesmos parâmetros da ferramenta de codificação para o HPS anterior 513.
[087] Em alguns casos um HPS 513 pode não estar mais presente ao chamar acesso aleatório para uma Restauração de Decodificador Instantânea (IDR) e/ou uma imagem de Acesso Aleatório Limpo (CRA). Portanto, dois armazenamentos temporários de HPS podem ser empregados para armazenar o HPS 513 com cada armazenamento temporário ativado alternativamente no começo de cada imagem de Ponto de Acesso Aleatório Intra (IRAP). Em um caso como este os HPSs 513 recebidos são armazenados no armazenamento temporário de HPS ativo. Para melhorar resiliência de erro, uma faixa de IDs de HPSs pode ser especificada para indicar os IDs de HPSs que estão em uso atual. Quando um HPS 513 tem um ID de HPS fora da faixa de IDs de HPSs em uso, um HPS 513 adicional pode usar o ID de HPS. O ID de HPS em uso pode então ser atualizado seguinte a uma abordagem de janela deslizante. Quando esta técnica é usada, um HPS 513 pode se referir somente a outro HPS 513 cujo ID de HPS está dentro da faixa em uso. Um limite do número de HPSs ativos 513 pode ser definido a fim de limitar as exigências de armazenamento de HPS 513 na memória de decodificador. Quando o limite é alcançado e um novo HPS 513 é recebido, o HPS mais velho 513 (por exemplo, o mais cedo recebido) no armazenamento temporário pode ser removido e o novo HPS 513 é inserido.
[088] Em alguns casos, todas as referências de HPS 513 podem ser analisadas assim que um HPS 513 é recebido pelo decodificador. Por exemplo, parâmetros de ferramenta de codificação podem ser copiados imediatamente quando o decodificador recebe um HPS 513 e os parâmetros de ferramenta de codificação não estão disponíveis no HPS atual 513, mas estão disponíveis em um HPS de referência 513. Outra abordagem para melhorar resiliência de erro pode exigir que um intra-HPS 513 esteja presente durante um período especificado. Quando um intra-HPS 513 é recebido, todos os HPSs 513 disponíveis do mesmo tipo no armazenamento temporário podem ser descartados. Quando parâmetros de uma ferramenta de codificação não estão presentes em um HPS 513, uma sinalização pode estar presente para indicar se a ferramenta de codificação está desabilitada para as fatias 523 que se referem ao HPS 513. Adicionalmente, uma sinalização em um cabeçalho de unidade de NAL (por exemplo, nal_ref_flag) pode especificar se o HPS 513 contido na unidade de NAL pode ser referido pelas fatias 523 a partir de uma imagem 521 que é usada como referência. Por exemplo, o HPS 513 pode ser referido somente pelas fatias 523 das imagens não referenciadas 521 quando nal_ref_flag da unidade de NAL contendo um HPS 513 é igual a zero. Esta sinalização também pode ser usada para determinar que o HPS 513 pode ser usado como referência para outro HPS 513. Por exemplo, um HPS 513 pode não se referir a outro HPS 513 que é contido em uma unidade de NAL com nal_ref_flag igual a zero. Um período de reset para um armazenamento temporário de HPS pode ser especificado no SPS 510. O armazenamento temporário do HPS 513 pode ser resetado na ocorrência de uma imagem de IRAP.
[089] Tal como pode ser percebido ao analisar as implementações precedentes, permitir que o HPS 513 referencie outro HPS 513 pode ser muito complicado. Portanto, nos exemplos divulgados, o HPS 513 pode ser restringido de se referir a outro HPS 513. Em vez disso, vários tipos de HPS 513 podem ser empregados. Um tipo de HPS 513 indica o tipo dos parâmetros de ferramenta de codificação contidos no HPS 513. Tais tipos de HPS 513 podem incluir um HPS de ALF, um HPS de LMCS e/ou um HPS de parâmetros de lista de escalamentos. Um HPS de ALF é um HPS que contém parâmetros de ferramenta de codificação usados como parte de filtragem de laço adaptativa de fatias correspondentes. Um HPS de LMCS contém parâmetros de ferramenta de codificação empregados para mecanismos de LMCS. LMCS é uma técnica de filtragem que remodela componentes de luma com base em mapeamentos para componentes de croma correspondentes a fim de reduzir distorção de taxa. Um HPS de parâmetros de lista de escalamentos contém parâmetros de ferramenta de codificação associados com matrizes de quantização usadas por filtros especificados. Em um exemplo como este, quando um HPS atual 513 de um primeiro tipo é obtido por um decodificador, o HPS anterior 513 do primeiro tipo pode ser descartado já que o HPS atual 513 substitui tal HPS anterior 513. Adicionalmente, para permitir vários tipos de HPS 513, um único cabeçalho de fatia 514 pode se referir a mais de um HPS 513 para referenciar todos os parâmetros de ferramenta de codificação para uma fatia 523 e/ou grupo de peças correspondente. Isto está em contraste com outros esquemas que permitem a um cabeçalho de fatia 514 se referir a um único HPS 513, o qual então se refere a outro HPS 513. Portanto, permitir a um único cabeçalho de fatia 514 se referir a múltiplos HPSs 513 resulta em uma implementação que evita cadeias de referência de HPS 513. Esta abordagem reduz significativamente a complexidade, e consequentemente reduz uso de recurso de processamento tanto no codificador quanto no decodificador. Adicionalmente, este processo reduz o número de HPSs 513 que são armazenados temporariamente em um decodificador. Por exemplo, somente um HPS 513 de cada tipo pode ser armazenado temporariamente no decodificador. Isto reduz uso de memória no decodificador. Adicionalmente, ao evitar cadeias de referência de HPS 513, potenciais erros são localizados e reduzidos consequentemente. Isto ocorre porque a perda de um HPS 513 durante um erro de transmissão pode afetar somente as fatias 523 que referenciam diretamente o HPS 513. Como tal, os mecanismos divulgados criam melhoramentos tanto no codificador quanto no decodificador ao empregar um HPS 513 em um fluxo de bits 500.
[090] A figura 6 é um diagrama esquemático ilustrando um mecanismo de exemplo 600 para escalamento temporal. Por exemplo, o mecanismo 600 pode ser empregado por um decodificador, tal como o sistema codec 200 e/ou o decodificador 400, ao exibir um fluxo de bits decodificado, tal como o fluxo de bits 500. Adicionalmente, o mecanismo 600 pode ser empregado como parte da etapa 117 do método 100 ao enviar um vídeo para exibição. Além disso, um codificador, tal como o sistema codec 200 e/ou o codificador 300, pode codificar dados no fluxo de bits para permitir que mecanismo 600 ocorra no decodificador.
[091] O mecanismo 600 opera em uma pluralidade das imagens decodificadas 601, 603 e 605. As imagens 601, 603 e 605 fazem parte de uma sequência de vídeo ordenada e que tenha sido decodificada a partir de um fluxo de bits, por exemplo, ao empregar os mecanismos descritos acima. O fluxo de bits é codificado para permitir a um decodificador exibir a sequência de vídeo em uma de uma pluralidade de taxas de quadros, incluindo uma primeira taxa de quadros (FR0) 610, uma segunda taxa de quadros (FR1) 611 e uma terceira taxa de quadros (FR2) 612. Uma taxa de quadros é uma medida de uma frequência na qual quadros/imagens de uma sequência de vídeo são exibidos. A taxa de quadros pode ser medida em quadros ao longo do tempo. As diferenças em taxas de quadros permitem a decodificadores diferentes exibir a mesma sequência de vídeo em qualidade diferente para considerar variações em capacidade de decodificador. Por exemplo, decodificadores com capacidade de hardware reduzida e/ou decodificadores para transmissão contínua a partir de uma conexão de rede de qualidade inferior podem exibir em FR0 610. Como outro exemplo, decodificadores de alta qualidade com acesso a uma conexão de rede rápida podem exibir em FR2 612. Como mais um exemplo, decodificadores com certas deficiências podem ser capazes de exibir em FR1 611, mas podem não ser capazes de exibir em FR2 612. Portanto, escalamento temporal (por exemplo, mecanismo 600) é empregado para permitir a cada decodificador exibir vídeo na taxa de quadros mais alta possível para a melhor experiência de usuário com base em capacidades e restrições de lado de decodificador variáveis. Na maioria dos sistemas, cada taxa de quadros é o dobro da frequência da taxa de quadros anterior. Por exemplo, FR0 610, FR1 611 e a FR2 612 podem ser definidas como quinze quadros por segundo (FPS), trinta FPS e sessenta FPS, respectivamente.
[092] A fim de implementar escalamento temporal, as imagens 601, 603 e 605 são codificadas no fluxo de bits pelo codificador na taxa de quadros mais alta possível, neste caso a FR2 612. O codificador também designa para cada imagem 601, 603 e 605 um identificador temporal (TID). As imagens 601, 603 e 605 receberam um TID de zero, um e dois, respectivamente. Ao exibir o vídeo decodificado resultante, o decodificador seleciona uma taxa de quadros, determina um TID de taxa de quadros correspondente, e exibe todos os quadros com um TID que é igual ou menor que o TID de taxa de quadros. Imagens com um TID que é maior que o TID de taxa de quadros da taxa de quadros selecionada são ignoradas. Por exemplo, um decodificador selecionando a FR2 612 exibe todas as imagens com um TID de dois ou menos, e consequentemente exibe todas as imagens 601, 603 e 605. Como outro exemplo, um decodificador selecionando FR1 611 exibe todas as imagens com um TID de um ou menos, e consequentemente exibe as imagens 601 e 603, enquanto ignorando as imagens 605. Como outro exemplo, um decodificador selecionando FR0 610 exibe todas as imagens com um TID de zero ou menos, e consequentemente exibe as imagens 601, enquanto ignorando as imagens 603 e 605. Ao empregar este mecanismo 600, a sequência de vídeo pode ser escalada temporalmente por um decodificador para uma taxa de quadros selecionada.
[093] O HPS 513, tal como descrito na figura 5, pode ser implementado para suportar o escalamento temporal do mecanismo 600. Isto pode ser realizado ao designar um TID, tal como o TID zero, TID um ou TID dois, para cada HPS. Quando escalamento temporal é realizado, HPS com um TID igual ou menor que o TID de taxa de quadros selecionado é decodificado e HPS com um TID que é maior que o TID de taxa de quadros selecionado é descartado. O TID pode ser designado para o HPS de acordo com várias modalidades.
[094] Referindo-se à figura 5, em um exemplo, um HPS 513 pode receber o ID temporal da imagem 521 que contém a primeira fatia 523 que se refere ao HPS 513. Em outros exemplos, o HPS 513 pode receber o ID temporal da unidade de acesso 535 que contém o HPS 513. Para suportar adicionalmente o escalamento temporal, fatias 523 associadas com IDs temporais menores podem ser restringidas de se referir aos HPSs 513 que contêm IDs temporais maiores. Isto assegura que configurações de taxas de quadros inferiores não fazem uma fatia 523 se referir a um HPS 513 que é ignorado devido a escalamento temporal do mecanismo 600, e consequentemente impede que parâmetros de ferramenta de codificação fiquem indisponíveis ao decodificar certas fatias 523 em taxas de quadros menores, tais como a FR0 610 e/ou a FR1 611.
[095] Os mecanismos expostos anteriormente podem ser implementados como segue. Os aspectos seguintes podem ser aplicados individualmente e/ou em combinação. Um Conjunto de
Parâmetros de Adaptação (APS) é outro nome para um HPS. A disponibilidade de HPS para um fluxo de bits pode ser todo disponível dentro de banda, todo disponível fora de banda e/ou parte disponível dentro de banda e parte disponível fora de banda. Quando fornecido fora de banda, HPS pode estar presente no exposto a seguir. No formato de arquivo de mídia baseado em ISO, HPS pode estar presente em uma entrada de amostra (por exemplo, em uma caixa de descrição de amostra). No formato de arquivo de mídia baseado em ISO, HPS pode estar presente em uma trilha sincronizada no tempo, tal como uma trilha de conjunto de parâmetros ou uma trilha de metadados temporizada.
[096] Em uma implementação particular, quando fornecidos fora de banda, HPSs podem ser carregados como segue. No formato de arquivo de mídia baseado em ISO, quando não existe atualização de HPS, HPSs podem estar presentes somente na entrada de amostra (por exemplo, na caixa de descrição de amostra). Nenhuma atualização de HPS pode existir quando um identificador (ID) de HPS é reutilizado enquanto outros parâmetros de HPS são diferentes do HPS enviado anteriormente com o mesmo ID de HPS. Quando uma atualização de HPS existe, por exemplo, quando o HPS contém parâmetros de filtro de laço adaptativo (ALF), no formato de arquivo de mídia baseado na Organização Internacional de Normalização (ISO), HPSs podem ser carregados em uma trilha sincronizada no tempo, tal como uma trilha de conjunto de parâmetros ou uma trilha de metadados temporizada. Deste modo, cada uma das fatias contendo um grupo de peças completas pode ser carregada na sua própria trilha de formato de arquivo. Adicionalmente, os HPSs podem ser carregados em uma trilha sincronizada no tempo. Consequentemente, cada uma destas trilhas pode ser carregada em uma representação de Transmissão Contínua Adaptativa Dinâmica de Protocolo de Transferência de Hipertexto (DASH). Para decodificação e renderização de um subconjunto das trilhas de fatias/peças, as representações de DASH contendo o subconjunto das trilhas de fatias/peças assim como a representação de DASH contendo os HPSs podem ser solicitadas pelo cliente em um modo de segmento por segmento.
[097] Em outro exemplo, HPSs podem ser especificados como sempre fornecidos dentro de banda. Os HPSs também podem ser carregados em uma trilha sincronizada no tempo, tal como uma trilha de conjunto de parâmetros ou uma trilha de metadados temporizada. Consequentemente, o HPS pode ser entregue tal como descrito acima. Além disso, na especificação do formato de arquivo para o codec de vídeo, um processo de reconstrução de fluxo de bits pode construir um fluxo de bits de saída externo a um subconjunto das trilhas de fatias/peças e da trilha sincronizada no tempo contendo os HPSs de tal maneira que os HPSs fazem parte do fluxo de bits de saída.
[098] Um HPS deve estar presente e/ou disponível para o decodificador em ordem de decodificação e antes da primeira fatia que se refere ao HPS. Por exemplo, se um HPS estiver disponível dentro de banda, o HPS pode preceder, em ordem de decodificação, a primeira fatia que se refere ao HPS. De outro modo, o tempo de decodificação de HPS deve ser igual ou menor que o tempo de decodificação da primeira fatia que se refere ao HPS.
[099] Um HPS pode incluir o ID de um conjunto de parâmetros de nível de sequência, tal como um SPS. Quando um ID de SPS não está presente em HPS, as restrições seguintes podem se aplicar. Quando a primeira fatia que se refere ao HPS é parte de uma imagem de Ponto de Acesso Aleatório Intra (IRAP) e o HPS é carregado dentro de banda, o HPS pode estar presente na unidade de acesso de IRAP. Quando a primeira fatia que se refere ao HPS é parte de uma imagem de IRAP e o HPS é carregado fora de banda, o tempo de decodificação do HPS pode ser o mesmo tempo de decodificação da imagem de IRAP. Quando a primeira fatia que se refere ao HPS não é parte de uma imagem de IRAP e o HPS é carregado dentro de banda, o HPS pode estar presente em uma das unidades de acesso entre a unidade de acesso de IRAP que inicia a sequência de vídeo codificada e a unidade de acesso que contém a fatia, inclusivamente. Quando a primeira fatia que se refere ao HPS não é parte de uma imagem de IRAP e o HPS é carregado fora de banda, o tempo de decodificação do HPS pode estar entre o tempo de decodificação da unidade de acesso de IRAP que inicia a sequência de vídeo codificada e o tempo de decodificação da unidade de acesso que contém a fatia, inclusivamente.
[0100] Quando um ID de SPS está presente em HPS, o seguinte pode se aplicar. Se fornecido dentro de banda, um HPS pode estar presente no começo de um fluxo de bits ou em qualquer sequência codificada desde que o HPS preceda a primeira fatia que se refere ao HPS em ordem de decodificação. De outro modo, um HPS pode estar presente na entrada de amostra ou em uma trilha sincronizada no tempo desde que o tempo de decodificação de HPS seja menor que o tempo de decodificação da primeira fatia que se refere ao
HPS.
[0101] Para a referência de fatia para HPS, o seguinte pode se aplicar. Se um ID de SPS estiver presente em HPS, cada fatia e o HPS ao qual a fatia se refere podem se referir ao mesmo SPS. De outro modo, uma fatia pode não se referir a um HPS que está presente na unidade de acesso que precede a unidade de acesso de IRAP com a qual a fatia está associada. Uma fatia também pode ser restringida de se referir a um HPS que tem um tempo de decodificação menor que o tempo de decodificação da unidade de acesso de IRAP com a qual a fatia está associada.
[0102] Como uma alternativa a usar uma sinalização para especificar a presença de parâmetros de uma ferramenta de codificação em um HPS, um indicador de dois bits pode ser usado (por exemplo, codificado como u(2)). A semântica do indicador é definida como segue. Um valor do indicador (por exemplo, valor zero) especifica que os parâmetros não estão presentes no HPS e nenhuma outra referência de HPS está presente para derivar os parâmetros. Outro valor do indicador (por exemplo, valor um) especifica que os parâmetros não estão presentes no HPS e uma referência para outro HPS está presente para derivar os parâmetros. Outro valor do indicador (por exemplo, valor dois) especifica que os parâmetros estão presentes no HPS e nenhuma referência para outro HPS está presente. Outro valor do indicador pode ser reservado. Em outro exemplo, outro valor do indicador (por exemplo, valor três) especifica que os parâmetros estão presentes no HPS e um HPS de referência está presente para derivar os parâmetros. Neste caso, os parâmetros finais são derivados com entrada a partir dos parâmetros que são sinalizados explicitamente no HPS e os parâmetros que estão presentes no HPS de referência.
[0103] Quando uma ferramenta de codificação é especificada para ser desabilitada para a sequência de vídeo codificada por quaisquer meios de indicação (por exemplo, a sinalização de habilitação na sinalização de parâmetro de sequência especifica que a ferramenta de codificação está desabilitada), as restrições seguintes podem se aplicar, individualmente ou em combinação. A sinalização ou a indicação da presença dos parâmetros para a ferramenta de codificação e os parâmetros para as ferramentas de codificação podem não estar presentes no HPS associado com a sequência de vídeo codificada. A sinalização ou a indicação da presença dos parâmetros para a ferramenta de codificação pode estar presente, mas restringida de tal maneira que o valor especifica que os parâmetros para a ferramenta de codificação não estão presentes e nenhum HPS de referência para derivar e/ou inferir os parâmetros está presente.
[0104] Quando uma fatia se refere a um HPS que pode conter parâmetros de uma ferramenta de codificação, as restrições seguintes podem se aplicar individualmente ou em combinação. Quando a ferramenta de codificação está habilitada para a fatia e os parâmetros da ferramenta de codificação estão disponíveis no HPS, os parâmetros da ferramenta de codificação podem não estar presentes no cabeçalho de fatia. Isto pode ocorrer quando os parâmetros de ferramenta de codificação são sinalizados diretamente e/ou estão presentes no HPS ou disponíveis por meio de um HPS de referência. Quando a ferramenta de codificação está habilitada para a fatia e os parâmetros da ferramenta de codificação não estão disponíveis no HPS, os parâmetros da ferramenta de codificação podem estar presentes no cabeçalho de fatia. Isto pode ocorrer quando os parâmetros de ferramenta de codificação não são sinalizados diretamente e/ou não estão presentes no HPS ou disponíveis por meio de um HPS de referência. Quando a ferramenta de codificação está habilitada para a fatia e os parâmetros da ferramenta de codificação estão disponíveis no HPS, os parâmetros da ferramenta de codificação também podem estar presentes no cabeçalho de fatia. Isto pode ocorrer quando os parâmetros de ferramenta de codificação são sinalizados diretamente e/ou estão presentes no HPS ou disponíveis por meio de um HPS de referência. Neste caso, os parâmetros que são usados para chamar a ferramenta de codificação durante decodificação da fatia são os parâmetros que estão presentes no cabeçalho de fatia.
[0105] Quando transporte tanto dentro de banda quanto fora de banda de HPS são usados, o seguinte pode se aplicar. Se um HPS for carregado dentro de banda, o HPS pode não se referir a outro HPS que é carregado fora de banda. De outro modo, o HPS pode não se referir a outro HPS que é carregado dentro de banda.
[0106] Quando transporte de HPS tanto dentro de banda quanto fora de banda são usados, as restrições seguintes podem se aplicar adicionalmente de forma individual ou em combinação. OS HPSs que são carregados fora de banda podem ser carregados somente em uma trilha sincronizada no tempo. Os HPSs podem ser carregados fora de banda somente quando existe uma atualização de HPS.
[0107] Alternativa para codificar ID de HPS como um elemento de sintaxe Exp-Golomb codificado de ordem zero de número inteiro não assinado (ue(v)) com o primeiro bit esquerdo, um ID de HPS pode ser codificado como u(v). O número de bits para sinalizar um ID de HPS pode ser especificado no SPS.
[0108] Dois HPSs na mesma sequência de vídeo codificada podem ter o mesmo ID de HPS, em cujo caso o seguinte pode se aplicar. Quando um HPS A e um HPS B têm o mesmo ID de HPS, o HPS B vem depois do HPS A em ordem de decodificação, e SPS contém um ID tendo como referência o ID de HPS, então o HPS B substitui o HPS A. Quando o HPS A e o HPS B têm o mesmo ID de HPS, um tempo de decodificação do HPS B é maior que o tempo de decodificação do HPS A, e SPS contém um ID referenciando o ID de HPS, então o HPS B substitui o HPS A. Deixe o HPS A, HPS B, HPS C e o HPS D serem HPSs que estão incluídos na mesma sequência de vídeo codificada, um ou outro por ter o mesmo ID de SPS (por exemplo, quando ID de SPS está presente em HPS) ou pela associação das unidades de acesso que contêm os HPSs. Quando ID de HPS do HPS A e do HPS D são iguais e IDs de HPSs do HPS A, HPS B e do HPS C são exclusivos, o valor de IDs de HPSs do HPS A, HPS B e do HPS C pode ser restringido para ser crescente uniformemente. Uma sinalização pode estar presente no SPS para especificar se um HPS pode se referir a outro HPS de referência.
[0109] Quando a referência entre HPSs não está autorizada, um cabeçalho de fatia pode ter múltiplas referências para o mesmo HPS ou HPSs diferentes. Neste caso, o seguinte pode se aplicar. Uma referência de HPS pode estar presente para cada ferramenta de codificação que é habilitada para a fatia e os parâmetros da ferramenta de codificação podem ser inferidos do HPS. Quando a fatia se refere a um HPS para inferir os parâmetros de uma ferramenta de codificação, os parâmetros da ferramenta de codificação devem estar presentes nesse HPS.
[0110] Quando parâmetros de uma ferramenta de codificação não estão presentes em um HPS e uma referência para outro HPS está presente para os parâmetros, os parâmetros devem estar presentes nesse HPS de referência. Um HPS pode não se referir a outro HPS partir de sequência de vídeo codificada diferente. Se um ID de SPS estiver presente em um HPS o valor do ID de SPS de tanto o HPS atual quanto um HPS de referência correspondente deve ser o mesmo. De outro modo, um HPS pode não se referir a outro HPS que está presente na unidade de acesso que precede a última unidade de acesso de IRAP que precede o HPS em ordem de decodificação. Um HPS também pode não se referir a outro HPS com um tempo de decodificação menor que o tempo de decodificação da última unidade de acesso de IRAP que precede o HPS em ordem de decodificação ou a última unidade de acesso de IRAP com um tempo de decodificação que é o mais próximo e menor que o tempo de decodificação do HPS.
[0111] Quando um HPS se refere a outro HPS, o ID de HPS do HPS de referência deve ser menor que o ID de HPS do HPS. Quando um ID de SPS está presente em qualquer HPS, todos de um HPS A, HPS B, HPS C e HPS D podem ter o mesmo ID de SPS. Quando o HPS B vem depois do HPS A em ordem de decodificação, o HPS C vem depois do HPS B em ordem de decodificação, e o HPS D vem depois do HPS C em ordem de decodificação, as restrições seguintes podem se aplicar,
individualmente ou em combinação. Quando o HPS C se refere ao HPS A, o ID de HPS do HPS B não pode ser o mesmo que o ID de HPS do HPS A. Quando o HPS B se refere ao HPS A e o HPS C tem o mesmo ID de HPS do HPS A, então o HPS D pode não se referir a um HPS A nem ao HPS B. Quando o HPS B e o HPS A têm o mesmo ID de HPS, pode não existir fatia que vem depois do HPS B em ordem de decodificação que se refere ao HPS A. Quando o HPS B se refere ao HPS A e o HPS C tem o mesmo ID de HPS do HPS A, pode não existir fatia que vem depois do HPS C em ordem de decodificação que se refere ao HPS A ou ao HPS B.
[0112] Quando escalabilidade temporal é usada, o ID temporal para um HPS pode ser especificado como segue. O ID temporal de um HPS pode ser definido para ser o mesmo que o ID temporal da unidade de acesso que contém o HPS. Em um exemplo, ID temporal de um HPS pode ser definido para ser o mesmo que o ID temporal da imagem da primeira fatia que se refere ao HPS.
[0113] Uma fatia em uma imagem com ID temporal (Tid) A pode não se referir a um HPS com ID Tid B onde Tid B é maior que Tid A. Um HPS com Tid A pode não se referir a um HPS de referência com Tid B onde Tid B é maior que Tid A. Um HPS com Tid A não pode substituir outro HPS com Tid B onde Tid A é maior que Tid B.
[0114] Uma sinalização no parâmetro de nível de sequência (por exemplo, SPS) pode estar presente para especificar se fatias têm referência para o HPS. O valor da sinalização, quando estabelecido igual a um, pode especificar que uma fatia se refere a um HPS e pode especificar que um ID de HPS está presente no cabeçalho da fatia. O valor da sinalização, quando estabelecido igual a zero, pode especificar que a fatia não se refere a um HPS e que nenhum ID de HPS está presente no cabeçalho da fatia.
[0115] Os aspectos expostos anteriormente podem ser implementados de acordo com a sintaxe seguinte. seq_parameter_set_rbsp( ) { Descritor ... hps_present_flag u(1) ... }
[0116] O hps_present_flag pode ser definido igual a um para especificar que um hps_id está presente em um cabeçalho de fatia. O hps_present_flag pode ser definido igual a zero para especificar que o hps_id não está presente em cabeçalho de fatia. header_parameter_set_rbsp( ) { Descrito r header_parameter_set_id ue(v) hps_seq_parameter_set_id ue(v) ... alf_parameters_idc[header_parameter_set_id u(1) ] if( alf_parameters_idc[header_parameter_set_id] = = 2 ) alf_data( ) else if (alf_parameters_idc[header_parameter_set_id] = = 1 ) ue(v)
alf_ref_hps_id[header_parameter_set_id] ... }
[0117] O header_parameter_set_id pode identificar o HPS para referência por meio de outros elementos de sintaxe. O valor de hdr_parameter_set_id pode estar na faixa de zero a sessenta e três, inclusivo. O hps_seq_parameter_set_id especifica o valor de sps_seq_parameter_set_id para o SPS ativo. O valor de pps_seq_parameter_set_id pode estar na faixa de zero a quinze, inclusivo. O alf_parameters_idc [header_parameter_set_id] pode ser definido igual a dois para especificar que alf_data( ) está presente no HPS. O alf_parameters_idc [header_parameter_set_id] pode ser definido igual a um para especificar que alf_data( ) não está presente no HPS, mas inferido para ser o mesmo que alf_data( ) que está presente no HPS de referência especificado por alf_ref_hps_id [header_parameter_set_id]. O alf_parameters_idc [header_parameter_set_id] pode ser definido igual a zero para especificar que nem alf_data( ) nem alf_ref_hps_id [header_parameter_set_id] estão presentes no HPS. O valor de alf_parameters_idc [header_parameter_set_id] igual a três pode ser reservado. O alf_ref_hps_id [header_parameter_set_id] pode especificar o header_parameter_set_id do HPS de referência para inferir o valor de alf_data( ).
[0118] Uma verificação de conformidade de fluxo de bits de exemplo pode exigir que as restrições seguintes se apliquem. Quando presente, o valor de alf_ref_hps_id [header_parameter_set_id] pode ser menor que o valor de header_parameter_set_id. O valor de hps_seq_parameter_set_id no HPS atual e no HPS especificado por alf_ref_hps_id [header_parameter_set_id] pode ser o mesmo. O valor de alf_parameters_idc[alf_ref_hps_id [header_parameter_set_id]] pode ser igual a dois.
[0119] Dados o HPS A com header_parameter_set_id igual ao hpsA, o HPS B com header_parameter_set_id igual a hpsB, o HPS C com header_parameter_set_id igual a hpsC, e o HPS atual, quando as condições seguintes são verdadeiras, o valor de alf_ref_hps_id [header_parameter_set_id] não pode ser igual a hpsA ou hpsB. Tais condições são que o HPS A precede o HPS B em ordem de decodificação, o HPS B precede o HPS C em ordem de decodificação e o HPS C precede o HPS atual em ordem de decodificação. Tais condições também incluem que o valor de alf_ref_id[hpsB] é igual a hpsA e o valor de hpsC é igual a hpsA. slice_header( ) { Descritor ... if( hps_present_flag ) slice_hps_id ue(v) ... se ( sps_alf_enabled_flag ) { slice_alf_enabled_flag u(1) if( slice_alf_enabled_flag && alf_parameters_idc slice_hps_id] = = 0 ) alf_data( ) } ... } .
[0120] O slice_hps_id especifica o header_parameter_set_id do HPS ao qual a fatia se refere.
Quando slice_hps_id não está presente, alf_parameters_idc[slice_hps_id] é inferido para ser igual a zero. Uma verificação de conformidade de fluxo de bits de exemplo pode exigir que as restrições seguintes se apliquem. O HPS com header_parameter_set_id igual ao slice_hps_id deve estar disponível antes de analisar o cabeçalho de fatia. Quando o HPS com header_parameter_set_id igual ao slice_hps_id está disponível dentro de banda, header_parameter_set_id deve estar presente em uma das unidades de acesso seguintes. A unidade de acesso de IRAP que está associada com a imagem da fatia atual, ou qualquer unidade de acesso que segue à unidade de acesso de IRAP, mas precede a unidade de acesso atual, em ordem de decodificação, ou a unidade de acesso atual. Dado o HPS A com header_parameter_set_id igual a hpsA, HPS B com header_parameter_set_id igual a hpsB, HPS C com header_parameter_set_id igual a hpsC, e a fatia atual, quando ambas as condições seguintes são verdadeiras, então o valor de slice_hps_id não deve ser igual a hpsA ou hpsB. As condições incluem que HPS A precede HPS B em ordem de decodificação, HPS B precede HPS C em ordem de decodificação, e HPS C precede a fatia atual em ordem de decodificação. As condições também incluem que o valor de alf_ref_id[hpsB] é igual a hpsA e o valor de hpsC é igual a hpsA.
[0121] Outra implementação de exemplo é descrita a seguir. header_parameter_set_rbsp( ) { Descrito r header_parameter_set_id ue(v) hps_seq_parameter_set_id ue(v)
... if( sps_alf_enabled_flag ) { u(1) alf_parameters_idc[header_parameter_set_id ] if( alf_parameters_idc[header_parameter_set_id] = = 2 ) alf_data( ) else if (alf_parameters_idc[header_parameter_set_id] = = ) ue(v) alf_ref_hps_id[header_parameter_set_id] } ... }
[0122] O alf_parameters_idc [header_parameter_set_id] pode ser definido igual a dois para especificar que alf_data( ) está presente no HPS. O alf_parameters_idc [header_parameter_set_id] pode ser definido igual a um para especificar que alf_data( ) não está presente no HPS, mas inferido para ser o mesmo que alf_data( ) que está presente no HPS de referência especificado por alf_ref_hps_id [header_parameter_set_id]. O alf_parameters_idc [header_parameter_set_id] pode ser definido igual a zero especifica que nem alf_data( ) nem alf_ref_hps_id [header_parameter_set_id] estão presentes no HPS. Quando não presente, alf_parameters_idc [header_parameter_set_id] pode ser inferido para ser igual a zero. O valor de alf_parameters_idc [header_parameter_set_id] igual a três pode ser reservado.
[0123] Outra implementação de exemplo é incluída a seguir.
[0124] Um cabeçalho de fatia pode se referir a múltiplos HPSs. Fatias de uma imagem podem se referir a HPS para parâmetros de ALF (por exemplo, pic_alf_HPS_id_luma[i]), HPS para parâmetros de LMCS (por exemplo, pic_lmcs_aps_id), e HPS para parâmetro de lista de escalamentos (por exemplo, pic_scaling_list_aps_id). Um pic_alf_aps_id_luma[i] especifica o adaptation_parameter_set_id do i-ésimo HPS de ALF ao qual o componente de luminância das fatias associadas com o HPS se refere. Um slice_alf_aps_id_luma[i] especifica o adaptation_parameter_set_id do i-ésimo HPS de ALF ao qual o componente de luminância da fatia se refere. O TemporalId da unidade de NAL de HPS tendo aps_params_type igual a ALF_APS e adaptation_parameter_set_id igual a slice_alf_aps_id_luma[i] deve ser igual ou menor que o TemporalId da unidade de NAL de fatia codificada. Quando slice_alf_enabled_flag é igual a 1 e slice_alf_aps_id_luma[i] não está presente, o valor de slice_alf_aps_id_luma[i] é inferido para ser igual ao valor de pic_alf_aps_id_luma[i]. Um pic_lmcs_aps_id especifica o adaptation_parameter_set_id do HPS de LMCS ao qual as fatias associadas com o PHS se referem. O TemporalId da unidade de NAL de HPS tendo aps_params_type igual a LMCS_APS e adaptation_parameter_set_id igual a pic_lmcs_aps_id deve ser igual ou menor que o TemporalId da imagem associada com HPS. Um pic_scaling_list_aps_id especifica o adaptation_parameter_set_id do HPS de lista de escalamentos. O TemporalId da unidade de NAL de HPS tendo aps_params_type igual a SCALING_APS e adaptation_parameter_set_id igual a pic_scaling_list_aps_id deve ser igual ou menor que o TemporalId da imagem associada com HPS.
[0125] O TemporalId de uma unidade de NAL de HPS deve ser o mesmo que o da unidade de acesso (AU) contendo o HPS. O TemporalId de uma unidade de NAL de HPS deve ser igual ou menor que o TemporalId de uma unidade de NAL de fatia codificada que se refere ao HPS. Em um exemplo específico, o valor de TemporalId para unidades de NAL não VCL é restringido como segue. Se nal_unit_type for igual ao DPS_NUT, VPS_NUT ou SPS_NUT, TemporalId deve ser igual a zero e o TemporalId da AU contendo a unidade de NAL deve ser igual a zero. De outro modo, se nal_unit_type for igual ao HPS_NUT, TemporalId deve ser igual ao TemporalId da PU contendo a unidade de NAL. 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 AU contendo a unidade de NAL. De outro modo, quando nal_unit_type é igual a PPS_NUT, PREFIX_APS_NUT ou SUFFIX_APS_NUT, TemporalId deve ser igual ou maior que o TemporalId da PU contendo a unidade de NAL. Quando a unidade de NAL é uma unidade de NAL não VCL, o valor de TemporalId é igual ao valor mínimo dos valores TemporalId de todas as AUs às quais a unidade de NAL não VCL se aplica. Quando nal_unit_type é igual a PPS_NUT, PREFIX_APS_NUT ou SUFFIX_APS_NUT, TemporalId pode ser igual ou maior que o TemporalId da AU contendo, já que todos os PPSs e HPSs podem ser incluídos no começo do fluxo de bits (por exemplo, quando eles são transportados fora de banda, e o receptor os coloca no começo do fluxo de bits), em que a primeira imagem codificada tem TemporalId igual a zero.
[0126] A figura 7 é um diagrama esquemático de um dispositivo de codificação de vídeo de exemplo 700. O dispositivo de codificação de vídeo 700 é adequado para implementar os exemplos/modalidades divulgados tais como descritos neste documento. O dispositivo de codificação de vídeo 700 compreende portas a jusante 720, portas a montante 750 e/ou as unidades transceptoras (Tx/Rx) 710, incluindo transmissores e/ou receptores para comunicar dados a montante e/ou a jusante por meio de uma rede. O dispositivo de codificação de vídeo 700 também inclui um processador 730 incluindo uma unidade lógica e/ou unidade de processamento central (CPU) para processar os dados e uma memória 732 para armazenar os dados. O dispositivo de codificação de vídeo 700 também pode compreender componentes, óticos para elétricos (OE) elétricos, componentes elétricos para óticos (EO) e/ou componentes de comunicação sem fio acoplados às portas a montante 750 e/ou às portas a jusante 720 para comunicação de dados via redes de comunicação elétricas, óticas ou sem fio. O dispositivo de codificação de vídeo 700 também pode incluir os dispositivos de entrada e/ou saída (E/S) 760 para comunicar dados para um usuário e a partir dele. Os dispositivos de E/S 760 podem incluir dispositivos de saída tais como uma exibição para exibir dados de vídeo, alto-falantes para produzir dados de áudio, etc. Os dispositivos de E/S 760 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.
[0127] O processador 730 é implementado por meio de hardware e software. O processador 730 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 sinais digitais (DSPs). O processador 730 está em comunicação com as portas a jusante 720, o Tx/Rx 710, as portas a montante 750 e com a memória 732. O processador 730 compreende um módulo de codificação 714. O módulo de codificação 714 implementa as modalidades divulgadas descritas acima, tais como os métodos 100, 800 e 900, o que pode empregar um fluxo de bits 500 e/ou o mecanismo 600. O módulo de codificação 714 também pode implementar qualquer outro método/mecanismo descrito neste documento. Adicionalmente, o módulo de codificação 714 pode implementar um sistema codec 200, um codificador 300 e/ou um decodificador 400. Por exemplo, o módulo de codificação 714 pode codificar/decodificar imagens em um fluxo de bits e codificar/decodificar parâmetros associados com fatias das imagens em uma pluralidade de HPSs. Vários tipos de HPS podem ser incluídos com tipos correspondentes de parâmetros de ferramenta de codificação. Cabeçalhos de fatia podem então se referir aos vários tipos de HPS para obter parâmetros de ferramenta de codificação para fatias correspondentes. Tais HPSs também podem ser designados com IDs temporais para funcionar com algoritmos de escalamento temporal. O uso de HPS leva em conta parâmetros de ferramenta de codificação que são empregados por múltiplas fatias para agregação em uma única localização (por exemplo, com HPS adicional quando parâmetros mudam). Portanto, sinalização redundante é removida, o que aumenta eficiência de codificação, reduz uso de recurso de memória ao armazenar o fluxo de bits, e reduz uso de recurso de rede ao comunicar o fluxo de bits. Consequentemente, o módulo de codificação 714 faz o dispositivo de codificação de vídeo 700 fornecer funcionalidade e/ou eficiência de codificação adicional ao codificar dados de vídeo. Como tal, o módulo de codificação 714 melhora a funcionalidade do dispositivo de codificação de vídeo 700 assim como aborda problemas que são específicos para as técnicas de codificação de vídeo. Adicionalmente, o módulo de codificação 714 efetua uma transformação do dispositivo de codificação de vídeo 700 para um estado diferente. Alternativamente, o módulo de codificação 714 pode ser implementado como instruções armazenadas na memória 732 e executadas pelo processador 730 (por exemplo, como um produto de programa de computador armazenado em um meio não transitório).
[0128] A memória 732 compreende um ou mais tipos de memórias tais como discos, unidades de fita, unidades de estado sólido, memória somente de leitura (ROM), memória de acesso aleatório (RAM), memória flash, memória endereçável de conteúdo ternário (TCAM), memória estática de acesso aleatório (SRAM), etc. A memória 732 pode ser usada como um dispositivo de armazenamento de dados de sobrecarga, para armazenar programas quando tais programas são selecionados para execução, e para armazenar instruções e dados que são lidos durante execução de programa.
[0129] A figura 8 é um fluxograma de um método de exemplo 800 de codificar uma sequência de vídeo em um fluxo de bits, tal como o fluxo de bits 500, ao usar um HPS. O método 800 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 700 ao realizar o método 100. O método 800 também pode codificar um fluxo de bits para suportar escalamento temporal de acordo com o mecanismo 600 em um decodificador, tal como o decodificador 400.
[0130] O método 800 pode começar quando um codificador recebe uma sequência de vídeo incluindo uma pluralidade de imagens e determina para codificar essa sequência de vídeo em um fluxo de bits, por exemplo, com base em entrada de usuário. A sequência de vídeo é particionada em imagens (pictures) / imagens (images) / quadros para particionamento adicional antes da codificação. Na etapa 801, uma pluralidade de imagens é particionada em uma pluralidade de fatias incluindo uma primeira fatia.
[0131] Na etapa 803, a pluralidade de fatias, incluindo a primeira fatia, é codificada em um fluxo de bits. As fatias podem ser codificadas por meio de uma pluralidade de parâmetros de ferramenta de codificação. Em alguns exemplos, uma fatia é codificada por pelo menos um primeiro tipo de ferramentas de codificação e um segundo tipo de ferramentas de codificação. Especificamente, a fatia é codificada pelo primeiro tipo de ferramentas de codificação com base em um primeiro tipo de parâmetros de ferramenta de codificação. A fatia é também codificada por um segundo tipo de ferramentas de codificação com base em um segundo tipo de parâmetros de ferramenta de codificação. Por exemplo, tais ferramentas de codificação podem incluir ferramentas de codificação de ALF, ferramentas de codificação de LMCS e/ou ferramentas de codificação de parâmetros de lista de escalamentos.
[0132] Na etapa 805, uma pluralidade de HPSs é codificada no fluxo de bits. A pluralidade de HPSs pode incluir pelo menos um primeiro HPS e um segundo HPS. O primeiro HPS contém o primeiro tipo de parâmetros de ferramenta de codificação e o segundo HPS contém o segundo tipo de parâmetros de ferramenta de codificação tais como empregados para codificar a fatia na etapa 803.
[0133] Na etapa 807, um primeiro cabeçalho de fatia é codificado no fluxo de bits. O primeiro cabeçalho de fatia descreve a codificação de uma primeira fatia da pluralidade de fatias para suportar decodificação no decodificador. Por exemplo, o primeiro cabeçalho de fatia pode conter uma primeira referência para o primeiro HPS e uma segunda referência para o segundo HPS. Consequentemente, o cabeçalho de fatia pode herdar parâmetros de ferramenta de codificação de uma pluralidade de HPSs de tipos diferentes. Isto permite que tais parâmetros de ferramenta de codificação sejam omitidos a partir dos cabeçalhos de fatia e aumenta eficiência de codificação do fluxo de bits ao reduzir sinalização de parâmetro de ferramenta de codificação redundante. Como um exemplo específico, o primeiro HPS e o segundo HPS podem incluir um HPS de ALF, um HPS de LMCS, um HPS de parâmetros de lista de escalamentos, ou combinações dos mesmos.
[0134] Para reduzir complexidade de métodos de codificação relacionados com HPS, o HPS pode ser restringido de referenciar parâmetros de ferramenta de codificação armazenados em outro HPS. Portanto, a pluralidade de HPSs codificados na etapa 805, os quais incluem o primeiro HPS e o segundo HPS, é restringida de referenciar parâmetros de ferramenta de codificação a partir de outro HPS na pluralidade de HPSs. Além disso, o HPS pode ser codificado para suportar escalamento temporal ao incluir um ID temporal em cada HPS. Em um exemplo, o primeiro HPS é contido em uma unidade de acesso associada a um ID temporal. Adicionalmente, o primeiro HPS contém o mesmo ID temporal que está associado à unidade de acesso que contém o primeiro HPS. Em outro exemplo, a primeira fatia é particionada a partir de uma primeira imagem, e a primeira imagem é associada a um ID temporal. Neste exemplo, o primeiro HPS contém o ID temporal associado à imagem. Adicionalmente, para suportar escalamento temporal, cada um da pluralidade de HPSs e cada uma das fatias são associados a um de uma pluralidade de IDs temporais. Adicionalmente, cada fatia com um primeiro ID temporal é restringida de se referir a qualquer HPS com um segundo ID temporal que é maior (por exemplo, associado com uma taxa de quadros maior) que o primeiro ID temporal. Isto assegura que fatias associadas com taxas de quadros menores não se referem a HPSs associados com taxas de quadros maiores, já que tais HPSs são ignorados quando taxas de quadros menores são empregadas de acordo com mecanismos de escalamento temporal.
[0135] Na etapa 809, o fluxo de bits é armazenado em memória. Mediante solicitação, o fluxo de bits pode então ser comunicado em direção a um decodificador, por exemplo, por meio de um transmissor.
[0136] A figura 9 é um fluxograma de um método de exemplo 900 de decodificar uma sequência de vídeo a partir de um fluxo de bits, tal como o fluxo de bits 500, ao usar um HPS. O método 900 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 700 ao realizar o método
100. Os resultados do método 900 também podem ser empregados para suportar escalamento temporal de acordo com o mecanismo 600 em um decodificador. O método 900 pode ser empregado em resposta a receber um fluxo de bits a partir de um codificador, tal como o codificador 300, e consequentemente o método 900 pode ser empregado em resposta ao método 800.
[0137] O método 900 pode começar quando um decodificador começa a receber um fluxo de bits de dados codificados representando uma sequência de vídeo, por exemplo, como um resultado do método 800. Na etapa 901, um fluxo de bits é recebido em um decodificador. O fluxo de bits compreende uma pluralidade de HPSs incluindo um primeiro HPS e um segundo HPS. O primeiro HPS é um primeiro tipo de HPS e contém um primeiro tipo de parâmetros de ferramenta de codificação. O segundo HPS é um segundo tipo de HPS e contém um segundo tipo de parâmetros de ferramenta de codificação. O fluxo de bits também inclui um cabeçalho de fatia, e uma fatia associada ao cabeçalho de fatia.
[0138] Na etapa 903, o decodificador determina que o cabeçalho de fatia contém uma primeira referência para o primeiro HPS e uma segunda referência para o segundo HPS. Consequentemente, o cabeçalho de fatia pode herdar parâmetros de ferramenta de codificação a partir de uma pluralidade de HPSs de tipos diferentes. Isto permite que tais parâmetros de ferramenta de codificação sejam omitidos a partir dos cabeçalhos de fatia e aumenta eficiência de codificação do fluxo de bits ao reduzir sinalização de parâmetro de ferramenta de codificação redundante. Como um exemplo específico, o primeiro HPS e o segundo HPS podem incluir um HPS de ALF, um HPS de LMCS, um HPS de parâmetros de lista de escalamentos, ou combinações dos mesmos.
[0139] Na etapa 905, o decodificador pode decodificar a fatia usando o primeiro tipo de parâmetros de ferramenta de codificação e o segundo tipo de parâmetros de ferramenta de codificação com base na determinação de que o cabeçalho de fatia contém a primeira referência e a segunda referência. Para reduzir complexidade de métodos de codificação relacionados com HPS, o HPS pode ser restringido de referenciar parâmetros de ferramenta de codificação armazenados em outro HPS. Portanto, a pluralidade de HPSs recebidos no fluxo de bits na etapa 901, os quais incluem o primeiro HPS e o segundo HPS, é restringida de referenciar parâmetros de ferramenta de codificação a partir de outro HPS na pluralidade de HPSs. Além disso, o HPS pode ser codificado para suportar escalamento temporal ao incluir um ID temporal em cada HPS. Em um exemplo, o primeiro HPS é contido em uma unidade de acesso associada a um ID temporal. Adicionalmente, o primeiro HPS contém o mesmo ID temporal que está associado à unidade de acesso que contém o primeiro HPS. Em outro exemplo, a primeira fatia é particionada a partir de uma primeira imagem, e a primeira imagem é associada a um ID temporal. Neste exemplo, o primeiro HPS contém o ID temporal associado à imagem. Adicionalmente, para suportar escalamento temporal, cada um da pluralidade de HPSs e cada uma das fatias são associados a um de uma pluralidade de IDs temporais. Adicionalmente, cada fatia com um primeiro ID temporal é restringida de se referir a qualquer HPS com um segundo ID temporal que é maior (por exemplo, associado com uma taxa de quadros maior) que o primeiro ID temporal. Isto assegura que fatias associadas com taxas de quadros menores não se referem a HPSs associados com taxas de quadros maiores, já que tais HPSs são ignorados quando taxas de quadros menores são empregadas de acordo com mecanismos de escalamento temporal.
[0140] Na etapa 907, o decodificador pode encaminhar a fatia para exibição como parte de uma sequência de vídeo decodificada.
[0141] A figura 10 é um diagrama esquemático de um sistema de exemplo 1000 para codificar uma sequência de vídeo de imagens em um fluxo de bits, tal o como fluxo de bits 500, ao usar um HPS. O sistema 1000 pode ser implementado por meio de 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 700. Adicionalmente, o sistema 1000 pode ser empregado ao implementar o método 100, 800 e/ou 900. Além disso, o sistema 1000 pode ser empregado para suportar escalamento temporal tal como discutido em relação ao mecanismo 600.
[0142] O sistema 1000 inclui um codificador de vídeo
1002. O codificador de vídeo 1002 compreende um módulo de particionamento 1001 para particionar uma pluralidade de imagens em uma pluralidade de fatias. O codificador de vídeo 1002 compreende adicionalmente um módulo de codificação 1003 para codificar a pluralidade de fatias em um fluxo de bits, em que as fatias são codificadas por pelo menos um primeiro tipo de ferramentas de codificação com base em um primeiro tipo de parâmetros de ferramenta de codificação e um segundo tipo de ferramentas de codificação com base em um segundo tipo de parâmetros de ferramenta de codificação. O módulo de codificação 1003 é adicionalmente para codificar um primeiro HPS e um segundo HPS no fluxo de bits, o primeiro HPS contendo o primeiro tipo de parâmetros de ferramenta de codificação e o segundo HPS contendo o segundo tipo de parâmetros de ferramenta de codificação. O módulo de codificação 1003 é adicionalmente para codificar um primeiro cabeçalho de fatia no fluxo de bits descrevendo uma codificação de uma primeira fatia da pluralidade de fatias, em que o primeiro cabeçalho de fatia contém uma primeira referência para o primeiro HPS e uma segunda referência para o segundo HPS. O codificador de vídeo 1002 compreende adicionalmente um módulo de armazenamento 1005 para armazenar o fluxo de bits para comunicação em direção a um decodificador. O codificador de vídeo 1002 compreende adicionalmente o módulo de transmissão 1005 para transmitir o fluxo de bits com o primeiro HPS e o segundo HPS para suportar decodificação das fatias em um decodificador com base no primeiro tipo de ferramentas de codificação e no segundo tipo de ferramentas de codificação. O codificador de vídeo 1002 pode ser configurado adicionalmente para realizar qualquer uma das etapas do método 800.
[0143] O sistema 1000 também inclui um decodificador de vídeo 1010. O decodificador de vídeo 1010 compreende um módulo de recebimento 1011 para receber um fluxo de bits compreendendo um HPS contendo um primeiro tipo de parâmetros de ferramenta de codificação, um segundo HPS contendo um segundo tipo de parâmetros de ferramenta de codificação, um cabeçalho de fatia, e uma fatia associada ao cabeçalho de fatia. O decodificador de vídeo 1010 compreende adicionalmente um módulo de determinação 1013 para determinar que o cabeçalho de fatia contém uma primeira referência para o primeiro HPS e uma segunda referência para o segundo HPS. O decodificador de vídeo 1010 compreende adicionalmente um módulo de decodificação 1015 para decodificar a fatia usando o primeiro tipo de parâmetros de ferramenta de codificação e o segundo tipo de parâmetros de ferramenta de codificação com base na determinação de que o cabeçalho de fatia contém a primeira referência e a segunda referência. O decodificador de vídeo 1010 compreende adicionalmente um módulo de encaminhamento 1017 para encaminhar a fatia para exibição como parte de uma sequência de vídeo decodificada. O decodificador de vídeo 1010 pode ser configurado adicionalmente para realizar qualquer uma das etapas do método 900.
[0144] Um primeiro componente é acoplado diretamente a um segundo componente quando não existem componentes intervenientes, exceto por 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 existem componentes intervenientes exceto 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 incluindo ±10% do número subsequente a não ser que relatado de outro modo.
[0145] Também deve ser entendido que as etapas dos métodos exemplares expostos neste documento não precisam ser necessariamente realizadas na ordem descrita, e a ordem das etapas de tais métodos deve ser entendida como sendo meramente exemplar. Igualmente, etapas adicionais podem ser incluídas em tais métodos, e certas etapas podem ser omitidas ou combinadas em métodos consistentes com várias modalidades da presente divulgação.
[0146] Embora diversas modalidades tenham sido fornecidas na presente divulgação, pode ser entendido que os sistemas e métodos divulgados podem ser incorporados em muitas outras formas específicas sem divergir do espírito ou escopo da presente divulgação. Os presentes exemplos devem ser considerados como ilustrativos e não restritivos, e a intenção não é ficar limitado aos detalhes dados neste documento. Por exemplo, os vários elementos ou componentes podem ser combinados ou integrados em outro sistema ou certos recursos podem ser omitidos ou não implementados.
[0147] 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 com outros sistemas, componentes, técnicas ou métodos sem divergir do escopo da presente divulgação. Outros exemplos de mudanças, substituições e alterações são determináveis por uma pessoa versada na técnica e podem ser obtidos sem divergir do espírito e escopo divulgados neste documento.

Claims (24)

REIVINDICAÇÕES EMENDADAS
1. Método implementado em um decodificador, o método caracterizado pelo fato de que compreende: receber, por um receptor do decodificador, um fluxo de bits compreendendo um primeiro conjunto de parâmetros contendo um primeiro tipo de parâmetros de ferramenta de codificação, um segundo conjunto de parâmetros contendo um segundo tipo de parâmetros de ferramenta de codificação, um cabeçalho de fatia e dados representando uma fatia associada com o cabeçalho de fatia; determinar, por um processador do decodificador, que o cabeçalho de fatia contém uma primeira referência para o primeiro conjunto de parâmetros e uma segunda referência para o segundo conjunto de parâmetros; decodificar, pelo processador, a fatia usando dados representando a fatia, o primeiro tipo de parâmetros de ferramenta de codificação e o segundo tipo de parâmetros de ferramenta de codificação com base na determinação de que o cabeçalho de fatia contém a primeira referência e a segunda referência.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: encaminhar, pelo processador, a fatia para exibição como parte de uma sequência de vídeo decodificada.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o primeiro conjunto de parâmetros inclui um conjunto de parâmetros de filtro de laço adaptativo (ALC), um conjunto de parâmetros de mapeamento de luma com escalamento de croma (LMCS), um conjunto de parâmetros de parâmetros de lista de escalamento ou combinações dos mesmos.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que o segundo conjunto de parâmetros inclui um conjunto de parâmetros de filtro de laço adaptativo (ALC), um conjunto de parâmetros de mapeamento de luma com escalamento de croma (LMCS), um conjunto de parâmetros de parâmetros de lista de escalamento ou combinações dos mesmos.
5. Método, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o fluxo de bits compreende uma pluralidade de HPSs incluindo o primeiro conjunto de parâmetros e o segundo conjunto de parâmetros, e em que cada um da pluralidade de HPSs é restringido de fazer referência para parâmetros de ferramenta de codificação de outro conjunto de parâmetros na pluralidade de conjuntos de parâmetros.
6. Método, de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que o primeiro conjunto de parâmetros é contido em uma unidade de acesso associada com um identificador temporal (ID), e em que o primeiro conjunto de parâmetros contém o ID temporal associado com a unidade de acesso que contém o primeiro conjunto de parâmetros.
7. Método, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que a fatia é parte de uma imagem, em que a imagem é associada com um identificador temporal (ID), e em que o primeiro conjunto de parâmetros contém o ID temporal associado com a imagem.
8. Método, de acordo com qualquer uma das reivindicações 1 a 7, caracterizado pelo fato de que o fluxo de bits inclui uma pluralidade de imagens, cada uma contendo uma ou mais fatias incluindo a fatia, em que o fluxo de bits compreende uma pluralidade de conjuntos de parâmetros incluindo o primeiro conjunto de parâmetros e o segundo conjunto de parâmetros, em que cada um do conjunto de parâmetros e cada uma das fatias são associados com um de uma pluralidade de IDs temporais, e em que cada fatia com um primeiro ID temporal é restringida de fazer referência para qualquer conjunto de parâmetros com um segundo ID temporal que é maior que o primeiro ID temporal.
9. Método implementado em um codificador, o método caracterizado pelo fato de que compreende: particionar, por um processador do codificador, uma pluralidade de imagens em uma pluralidade de fatias; codificar, pelo processador, a pluralidade de fatias em um fluxo de bits, em que as fatias são codificadas por pelo menos um primeiro tipo de ferramentas de codificação com base em um primeiro tipo de parâmetros de ferramenta de codificação e um segundo tipo de ferramentas de codificação com base em um segundo tipo de parâmetros de ferramenta de codificação; codificar, pelo processador, um primeiro conjunto de parâmetros e um segundo conjunto de parâmetros no fluxo de bits, o primeiro conjunto de parâmetros contendo o primeiro tipo de parâmetros de ferramenta de codificação e o segundo conjunto de parâmetros contendo o segundo tipo de parâmetros de ferramenta de codificação; codificar, pelo processador, um cabeçalho de fatia no fluxo de bits descrevendo uma codificação de uma primeira fatia da pluralidade de fatias, em que o cabeçalho de fatia contém uma primeira referência para o primeiro conjunto de parâmetros e uma segunda referência para o segundo conjunto de parâmetros.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende adicionalmente: armazenar, por uma memória acoplada ao processador, o fluxo de bits para comunicação em direção a um decodificador.
11. Método, de acordo com a reivindicação 9 ou 10, caracterizado pelo fato de que o primeiro conjunto de parâmetros inclui um conjunto de parâmetros de filtro de laço adaptativo (ALC), um conjunto de parâmetros de mapeamento de luma com escalamento de croma (LMCS), um conjunto de parâmetros de parâmetros de lista de escalamento ou combinações dos mesmos.
12. Método, de acordo com qualquer uma das reivindicações 9 a 11, caracterizado pelo fato de que o segundo conjunto de parâmetros inclui um conjunto de parâmetros de filtro de laço adaptativo (ALC), um conjunto de parâmetros de mapeamento de luma com escalamento de croma (LMCS), um conjunto de parâmetros de parâmetros de lista de escalamento ou combinações dos mesmos.
13. Método, de acordo com qualquer uma das reivindicações 9 a 12, caracterizado pelo fato de que compreende codificar, pelo processador, uma pluralidade de HPSs no fluxo de bits, em que a pluralidade de conjuntos de parâmetros inclui o primeiro conjunto de parâmetros e o segundo conjunto de parâmetros, e em que cada um da pluralidade de conjuntos de parâmetros é restringido de fazer referência para parâmetros de ferramenta de codificação de outro conjunto de parâmetros na pluralidade de conjuntos de parâmetros.
14. Método, de acordo com qualquer uma das reivindicações 9 a 13, caracterizado pelo fato de que o primeiro conjunto de parâmetros é contido em uma unidade de acesso associada com um identificador temporal (ID), e em que o primeiro conjunto de parâmetros contém o ID temporal associado com a unidade de acesso que contém o primeiro conjunto de parâmetros.
15. Método, de acordo com qualquer uma das reivindicações 9 a 14, caracterizado pelo fato de que a primeira fatia é particionada de uma primeira imagem, em que a primeira imagem é associada com um identificador temporal (ID), e em que o primeiro conjunto de parâmetros contém o ID temporal associado com a imagem.
16. Método, de acordo com qualquer uma das reivindicações 9 a 15, caracterizado pelo fato de que uma pluralidade de conjuntos de parâmetros é codificada incluindo o primeiro conjunto de parâmetros e o segundo conjunto de parâmetros, em que cada um da pluralidade de conjuntos de parâmetros e cada uma das fatias são associados com um de uma pluralidade de IDs temporais, e em que cada fatia com um primeiro ID temporal é restringida de fazer referência para qualquer conjunto de parâmetros com um segundo ID temporal que é maior que o primeiro ID temporal.
17. 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, o receptor, a memória e o transmissor são configurados para realizar o método conforme definido em qualquer uma das reivindicações 1 a 16.
18. Meio não transitório legível por computador, caracterizado pelo fato de que compreende instruções para uso por um dispositivo de codificação de vídeo, as instruções compreendendo instruções executáveis por computador armazenadas no meio não transitório legível por computador de tal maneira que quando executadas por um processador fazem o dispositivo de codificação de vídeo realizar o método conforme definido em qualquer uma das reivindicações 1 a 16.
19. Decodificador, caracterizado pelo fato de que compreende: uma unidade de recebimento, configurada para receber um fluxo de bits compreendendo um primeiro conjunto de parâmetros contendo um primeiro tipo de parâmetros de ferramenta de codificação, um segundo conjunto de parâmetros contendo um segundo tipo de parâmetros de ferramenta de codificação, um cabeçalho de fatia e dados representando uma fatia associada com o cabeçalho de fatia; uma unidade de determinação, configurada para determinar que o cabeçalho de fatia contém uma primeira referência para o primeiro conjunto de parâmetros e uma segunda referência para o segundo conjunto de parâmetros; uma unidade de decodificação, configurada para decodificar a fatia usando dados representando a fatia, o primeiro tipo de parâmetros de ferramenta de codificação e o segundo tipo de parâmetros de ferramenta de codificação com base na determinação de que o cabeçalho de fatia contém a primeira referência e a segunda referência.
20. Decodificador, de acordo com a reivindicação 19, caracterizado pelo fato de que compreende adicionalmente: uma unidade de encaminhamento, configurada para encaminhar a fatia para exibição como parte de uma sequência de vídeo decodificada.
21. Codificador, caracterizado pelo fato de que compreende: uma unidade de partição, configurada para particionar uma pluralidade de imagens em uma pluralidade de fatias; uma unidade de codificação, configurada para codificar a pluralidade de fatias em um fluxo de bits, em que as fatias são codificadas por pelo menos um primeiro tipo de ferramentas de codificação com base em um primeiro tipo de parâmetros de ferramenta de codificação e um segundo tipo de ferramentas de codificação com base em um segundo tipo de parâmetros de ferramenta de codificação; codificar um primeiro conjunto de parâmetros de cabeçalho (HPS) e um segundo HPS no fluxo de bits, o primeiro HPS contendo o primeiro tipo de parâmetros de ferramenta de codificação e o segundo HPS contendo o segundo tipo de parâmetros de ferramenta de codificação; e codificar um cabeçalho de fatia no fluxo de bits descrevendo uma codificação de uma primeira fatia da pluralidade de fatias, em que o cabeçalho de fatia contém uma primeira referência para o primeiro HPS e uma segunda referência para o segundo HPS.
22. Codificador, de acordo com a reivindicação 21,
caracterizado pelo fato de que compreende adicionalmente: uma unidade de armazenamento, configurada para armazenar o fluxo de bits para comunicação em direção a um decodificador.
23. Dispositivo de codificação de vídeo, caracterizado pelo fato de que compreende conjunto de circuitos de processamento para executar o método conforme definido em qualquer uma das reivindicações 1 a 16.
24. Meio de armazenamento não transitório, caracterizado pelo fato de que inclui um fluxo de bits codificados, o fluxo de bits compreende um primeiro conjunto de parâmetros contendo um primeiro tipo de parâmetros de ferramenta de codificação, um segundo conjunto de parâmetros contendo um segundo tipo de parâmetros de ferramenta de codificação, um cabeçalho de fatia e dados representando uma fatia associada com o cabeçalho de fatia, em que o cabeçalho de fatia contém uma primeira referência para o primeiro conjunto de parâmetros e uma segunda referência para o segundo conjunto de parâmetros.
BR112021008659-5A 2018-11-07 2019-11-06 Codificador de vídeo, decodificador de vídeo e métodos correspondentes BR112021008659A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862756983P 2018-11-07 2018-11-07
US62/756,983 2018-11-07
PCT/US2019/060113 WO2020097232A1 (en) 2018-11-07 2019-11-06 Header parameter set for video coding

Publications (1)

Publication Number Publication Date
BR112021008659A2 true BR112021008659A2 (pt) 2021-08-31

Family

ID=70611094

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021008659-5A BR112021008659A2 (pt) 2018-11-07 2019-11-06 Codificador de vídeo, decodificador de vídeo e métodos correspondentes

Country Status (8)

Country Link
US (1) US20210258598A1 (pt)
EP (1) EP3864842A4 (pt)
JP (2) JP7354241B2 (pt)
KR (2) KR102670878B1 (pt)
CN (2) CN114189694B (pt)
BR (1) BR112021008659A2 (pt)
MX (1) MX2021005355A (pt)
WO (1) WO2020097232A1 (pt)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3900362A4 (en) 2019-02-01 2022-03-02 Beijing Bytedance Network Technology Co., Ltd. SIGNALING LOOP SHAPED INFORMATION USING PARAMETER SETS
CN113424528A (zh) 2019-02-01 2021-09-21 北京字节跳动网络技术有限公司 环路整形和块差分脉冲编解码调制之间的相互作用
WO2020156540A1 (en) 2019-02-02 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Buffer management for intra block copy in video coding
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 北京字节跳动网络技术有限公司 解码器侧细化工具的选择性应用
KR102688366B1 (ko) 2019-03-01 2024-07-24 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 방향 기반 예측
WO2020177662A1 (en) 2019-03-01 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Implementation aspects in intra block copy in video coding
KR20210125506A (ko) 2019-03-04 2021-10-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 관리
WO2020181434A1 (en) 2019-03-08 2020-09-17 Zte Corporation Parameter set signaling in digital video
CN113574889B (zh) 2019-03-14 2024-01-12 北京字节跳动网络技术有限公司 环路整形信息的信令和语法
CN113632476B (zh) 2019-03-23 2024-03-19 北京字节跳动网络技术有限公司 默认的环内整形参数
WO2020204413A1 (ko) * 2019-04-03 2020-10-08 엘지전자 주식회사 복원 픽처를 수정하는 비디오 또는 영상 코딩
JP7391109B2 (ja) 2019-05-11 2023-12-04 北京字節跳動網絡技術有限公司 ビデオ処理におけるコーディングツールの選択的使用
KR20220024142A (ko) * 2019-06-24 2022-03-03 인터디지털 브이씨 홀딩스 인코포레이티드 하이 레벨 구문 요소들을 이용하여 디코딩 데이터를 시그널링하기 위한 방법 및 장치
CN117294841A (zh) 2019-07-06 2023-12-26 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的虚拟预测缓冲
JP7303367B2 (ja) * 2019-07-08 2023-07-04 エルジー エレクトロニクス インコーポレイティド スケーリングリストデータのシグナリングに基づくビデオまたは画像コーディング
JP7359934B2 (ja) 2019-07-10 2023-10-11 北京字節跳動網絡技術有限公司 映像符号化におけるイントラブロックコピーのためのサンプル識別
WO2021018031A1 (en) 2019-07-27 2021-02-04 Beijing Bytedance Network Technology Co., Ltd. Restrictions of usage of tools according to reference picture types
TW202118300A (zh) * 2019-09-24 2021-05-01 法商內數位Vc控股法國公司 同質語法
EP4029245A4 (en) 2019-10-12 2022-11-23 Beijing Bytedance Network Technology Co., Ltd. HIGH LEVEL SYNTAX FOR VIDEO CODING TOOLS
US11451811B2 (en) * 2020-04-05 2022-09-20 Tencent America LLC Method and apparatus for video coding
US11711518B2 (en) 2020-09-17 2023-07-25 Lemon Inc. Decoding capability information storage in video coding
US12041246B2 (en) * 2020-10-06 2024-07-16 Samsung Electronics Co., Ltd. Access of essential video coding (EVC) slices in a file
US11611752B2 (en) * 2020-10-07 2023-03-21 Lemon Inc. Adaptation parameter set storage in video coding
WO2024079334A1 (en) * 2022-10-13 2024-04-18 Telefonaktiebolaget Lm Ericsson (Publ) Video encoder and video decoder
CN117492702B (zh) * 2023-12-29 2024-04-02 成都凯迪飞研科技有限责任公司 一种大小端数据流的转换方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2051527A1 (en) * 2007-10-15 2009-04-22 Thomson Licensing Enhancement layer residual prediction for bit depth scalability using hierarchical LUTs
US10244239B2 (en) * 2010-12-28 2019-03-26 Dolby Laboratories Licensing Corporation Parameter set for picture segmentation
CN103096054B (zh) * 2011-11-04 2015-07-08 华为技术有限公司 一种视频图像滤波处理方法和装置
WO2013109505A2 (en) * 2012-01-19 2013-07-25 Vid Scale, Inc. Methods, apparatus and systems for signaling video coding adaptation parameters
US9351016B2 (en) * 2012-04-13 2016-05-24 Sharp Kabushiki Kaisha Devices for identifying a leading picture
RU2584501C1 (ru) * 2012-04-16 2016-05-20 Нокиа Текнолоджиз Ой Способ и устройство для видеокодирования
US9813705B2 (en) * 2012-04-26 2017-11-07 Qualcomm Incorporated Parameter set coding
US20130343465A1 (en) * 2012-06-26 2013-12-26 Qualcomm Incorporated Header parameter sets for video coding
US9602827B2 (en) * 2012-07-02 2017-03-21 Qualcomm Incorporated Video parameter set including an offset syntax element
EP3090558A4 (en) * 2014-01-03 2017-08-16 Nokia Technologies OY Parameter set coding
WO2016168529A1 (en) 2015-04-17 2016-10-20 Vid Scale, Inc. Chroma enhancement filtering for high dynamic range video coding
US11323711B2 (en) * 2019-09-20 2022-05-03 Alibaba Group Holding Limited Method and system for signaling chroma quantization parameter offset
US20220394301A1 (en) * 2019-10-25 2022-12-08 Sharp Kabushiki Kaisha Systems and methods for signaling picture information in video coding

Also Published As

Publication number Publication date
EP3864842A4 (en) 2021-12-08
JP2023156358A (ja) 2023-10-24
MX2021005355A (es) 2021-06-30
CN114189694B (zh) 2022-11-08
US20210258598A1 (en) 2021-08-19
JP2022506623A (ja) 2022-01-17
KR102670878B1 (ko) 2024-05-29
WO2020097232A1 (en) 2020-05-14
JP7354241B2 (ja) 2023-10-02
EP3864842A1 (en) 2021-08-18
CN114189694A (zh) 2022-03-15
KR20210080533A (ko) 2021-06-30
CN113056911A (zh) 2021-06-29
KR20240091060A (ko) 2024-06-21

Similar Documents

Publication Publication Date Title
US20210258598A1 (en) Header Parameter Set For Video Coding
US12058383B2 (en) Slicing and tiling for sub-image signaling in video coding
JP7454657B2 (ja) ピクチャーレベルでの非ピクチャーレベルの構文要素のシグナリング
US11284092B2 (en) Tile group signaling in video coding
US20220030253A1 (en) Slice entry points in video coding
US11729384B2 (en) Explicit address signaling in video coding
US11425377B2 (en) Arbitrary and wrap-around tile grouping
BR122022009499A2 (pt) Método de codificação implementado por um codificador de vídeo, dispositivo de codificação, sistema e meio legível por computador não transitório
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
BR122022009674A2 (pt) Método implementado por um codificador, dispositivo e aparelho de codificação, sistema e meio para codificação
BR112021011413A2 (pt) Método e aparelho de codificação de vídeo
US20220159285A1 (en) Alf aps constraints in video coding
BR122024006612A2 (pt) Fluxo de bits codificado e aparelho para armazenar um fluxo de bits
BR122023004245B1 (pt) Imagens com tipos de unidade nal mista
BR112021017889B1 (pt) Imagens com tipos de unidade nal mista
BR122024004652A2 (pt) Codificador, decodificador e métodos correspondentes
BR122024004671A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes