BR112018007529B1 - Alinhamento de grupo de amostra de ponto de operação em formato de arquivo de fluxos de bits de multicamada - Google Patents

Alinhamento de grupo de amostra de ponto de operação em formato de arquivo de fluxos de bits de multicamada Download PDF

Info

Publication number
BR112018007529B1
BR112018007529B1 BR112018007529-9A BR112018007529A BR112018007529B1 BR 112018007529 B1 BR112018007529 B1 BR 112018007529B1 BR 112018007529 A BR112018007529 A BR 112018007529A BR 112018007529 B1 BR112018007529 B1 BR 112018007529B1
Authority
BR
Brazil
Prior art keywords
sample
operating point
file
additional
range
Prior art date
Application number
BR112018007529-9A
Other languages
English (en)
Other versions
BR112018007529A2 (pt
Inventor
Fnu HENDRY
Ye-Kui Wang
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112018007529A2 publication Critical patent/BR112018007529A2/pt
Publication of BR112018007529B1 publication Critical patent/BR112018007529B1/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/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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Landscapes

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

Abstract

alinhamento de grupo de amostra de ponto de operação em formato de arquivo de fluxos de bits de multicamada. um aparelho obtém uma faixa de referência de ponto de operação no arquivo e uma ou mais faixas adicionais no arquivo. nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais. para cada respectiva amostra de cada respectiva faixa adicional de uma ou mais faixas adicionais, o aparelho determina se deve considerar a parte de respectiva amostra do grupo de amostras de informação de ponto de operação. com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional.

Description

[001] Este pedido reivindica o benefício do Pedido de Patente Provisório U.S. 62/241.691, depositado em 14 de outubro de 2015, cujo conteúdo total é aqui incorporado por referência.
CAMPO TÉCNICO
[002] Esta divulgação refere-se à codificação e decodificação de vídeo.
FUNDAMENTOS
[003] As capacidades de vídeo digital podem ser incorporadas a uma ampla gama de dispositivos, incluindo televisores digitais, sistemas digitais de broadcast direto, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, computadores tablet, leitores de e-books, câmeras digitais dispositivos de gravação digitais, reprodutores de mídia digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones de rádio celular ou por satélite, os chamados "smartphones", dispositivos de teleconferência de vídeo, dispositivos de streaming de vídeo e semelhantes. Os dispositivos de vídeo digital implementam técnicas de compressão de vídeo, como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital mais eficientemente implementando tais técnicas de compressão de vídeo.
[004] Técnicas de compressão de vídeo realizam predição espacial (intraimagem) e/ou temporal (interimagem) para reduzir ou remover a redundância inerente às sequências de vídeo. Para codificação de vídeo com base em bloco, uma fatia de vídeo (isto é, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser particionada em blocos de vídeo. Blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando a predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem. Blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar a predição espacial em relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal em relação a amostras de referência em outras imagens de referência. Imagens podem ser referidas como quadros.
[005] A predição espacial ou temporal resulta em um bloqueio preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixels entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo, e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes residuais, que então podem ser quantificados.
SUMÁRIO
[006] Em geral, esta divulgação refere-se ao armazenamento de conteúdos de vídeo em formatos de arquivo de mídia baseados em ISO e formatos de arquivo derivados baseados nele. Mais especificamente, esta divulgação descreve técnicas para definir grupos de amostras de pontos de operação quando amostras de faixas dentro de um arquivo não estão alinhadas. Observe que os termos "ponto de operação" e "ponto operacional" são usados de maneira intercambiável neste documento.
[007] Em um exemplo, esta divulgação descreve um método de processamento de um arquivo, o método compreendendo: obter uma faixa de referência de ponto de operação no arquivo, em que um ponto de operação disponível para um fluxo de bits no arquivo é descrito no arquivo usando um grupo de amostra de informação de ponto de operação que é sinalizado na faixa de referência de ponto de operação; obter uma ou mais faixas adicionais no arquivo, em que nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais; para cada respectiva amostra de cada respectiva faixa adicional das uma ou mais faixas adicionais, determinar se deve considerar a respectiva parte de amostra do grupo de amostra de informação de ponto de operação, em que: com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação, e com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional; e realizar um processo de extração de subfluxo de bits que extrai o ponto de operação do fluxo de bits.
[008] Em outro exemplo, esta divulgação descreve um método de geração de um arquivo, o método compreendendo: gerar uma faixa de referência de ponto de operação no arquivo, em que gerar a faixa de referência de ponto de operação compreende sinalizar, na faixa de referência de ponto de operação, um grupo de amostra de informação de ponto de operação que descreve um ponto de operação disponível para um fluxo de bits no arquivo; e gerar uma ou mais faixas adicionais no arquivo, em que: nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais, com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação e, com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional.
[009] Em outro exemplo, esta descrição descreve um aparelho para processar um arquivo, o aparelho compreendendo: uma memória configurada para armazenar o arquivo; e um ou mais processadores acoplados à memória, um ou mais processadores configurados para: obter uma faixa de referência de ponto de operação no arquivo, em que um ponto de operação disponível para um fluxo de bits no arquivo é descrito no arquivo usando um grupo de amostra de informação de ponto de operação que é sinalizado na faixa de referência de ponto de operação; obter uma ou mais faixas adicionais no arquivo, em que nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais; para cada respectiva amostra de cada respectiva faixa adicional da uma ou mais faixas adicionais, determinar se deve considerar a respectiva parte de amostra do grupo de amostra de informação de ponto de operação, em que: com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação, e com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional; e realizar um processo de extração de subfluxo de bits que extrai o ponto de operação do fluxo de bits.
[0010] Em outro exemplo, esta descrição descreve um aparelho para gerar um arquivo, o aparelho compreendendo: uma memória configurada para armazenar o arquivo; e um ou mais processadores acoplados à memória, um ou mais processadores configurados para: gerar uma faixa de referência de ponto de operação no arquivo, em que gerar a faixa de referência de ponto de operação compreende sinalizar, na faixa de referência de ponto de operação, um grupo de amostra de informação de ponto de operação que descreve um ponto de operação disponível para um fluxo de bits no arquivo; e gerar uma ou mais faixas adicionais no arquivo, em que: nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais, o grupo de amostra de informação de ponto de operação, com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação, e com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional.
[0011] Em outro exemplo, esta divulgação descreve um aparelho para processar um arquivo, o aparelho compreendendo: meios para obter uma faixa de referência de ponto de operação no arquivo, em que um ponto de operação disponível para um fluxo de bits no arquivo é descrito no arquivo utilizando um grupo de amostras de informação de ponto de operação que é sinalizado na faixa de referência de ponto de operação; meios para obter uma ou mais faixas adicionais no arquivo, em que nenhum grupo de amostras de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais; meios para determinar, para cada respectiva amostra de cada respectiva faixa adicional da uma ou mais faixas adicionais, se deve considerar a respectiva parte de amostra do grupo de amostra de informação de ponto de operação, em que: com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação, e com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional; e meios para realizar um processo de extração de subfluxo de bits que extrai o ponto de operação.
[0012] Em outro exemplo, esta divulgação descreve um aparelho para gerar um arquivo, o aparelho compreendendo: meios para gerar uma faixa de referência de ponto de operação no arquivo, em que a geração da faixa de referência de ponto de operação compreende a sinalizar, na faixa de referência de ponto de operação, um grupo de amostra de informação de ponto de operação que descreve um ponto de operação disponível para um fluxo de bits no arquivo; e meios para gerar uma ou mais faixas adicionais no arquivo, em que: nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais, com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação e, com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional.
[0013] Em Outro Exemplo, Esta Descrição Descreve Um Meio De Armazenamento Legível Por Computador Que Armazena Instruções Que, Quando Executadas, Fazem Com Que Um Ou Mais Processadores Obtenham Uma Faixa De Referência De Ponto De Operação No Arquivo, Em Que Um Ponto De Operação Disponível Para Um Fluxo De Bits No Arquivo É Descrito No Arquivo Usando Um Grupo De Amostra De Informação De Ponto De Operação Que É Sinalizado Na Faixa De Referência De Ponto De Operação; Obtenham Uma Ou Mais Faixas Adicionais No Arquivo, Em Que Nenhum Grupo De Amostra De Informação De Ponto De Operação É Sinalizado Em Qualquer Uma Das Faixas Adicionais; Para Cada Respectiva Amostra De Cada Faixa Adicional Da Uma Ou Mais Faixas Adicionais, Determinem Se Deve Considerar A Respectiva Parte Da Amostra Do Grupo De Amostra De Informação De Ponto De Operação, Em Que: Com Base Na Faixa De Referência De Ponto De Operação Que Contém Uma Amostra Que É Temporalmente Colocalizada Com A Respectiva Amostra Na Respectiva Faixa Adicional, A Respectiva Amostra Na Respectiva Faixa Adicional É Considerada Parte Do Grupo De Amostra De Informação De Ponto De Operação, E Com Base Na Faixa De Referência De Ponto De Operação Que Não Contém Uma Amostra Que É Temporalmente Colocalizada Com A Respectiva Amostra Na Respectiva Faixa Adicional, A Respectiva Amostra Na Respectiva Faixa Adicional É Considerada Parte De Um Grupo De Amostra De Informação De Ponto De Operação Da Última Amostra Na Faixa De Referência De Ponto De Operação Antes Da Respectiva Amostra Da Respectiva Faixa Adicional; E Realizem Um Processo De Extração De Subfluxo De Bits Que Extrai O Ponto De Operação Do Fluxo De Bits.
[0014] Em outro exemplo, esta descrição descreve um meio de armazenamento legível por computador que armazena instruções que, quando executadas, fazem com que um ou mais processadores: gerem uma faixa de referência de ponto de operação no arquivo, em que gerar a faixa de referência de ponto de operação compreende sinalizar, na faixa de referência de ponto de operação, um grupo de amostra de informação de ponto de operação que descreve um ponto de operação disponível para um fluxo de bits no arquivo; e gerem uma ou mais faixas adicionais no arquivo, em que: nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais, o grupo de amostra de informação de ponto de operação, com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação, e com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional.
[0015] Os detalhes de um ou mais exemplos da divulgação são apresentados nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0016] A figura 1 é um diagrama de blocos ilustrando um exemplo de sistema de codificação de vídeo que pode utilizar as técnicas descritas nesta divulgação.
[0017] A figura 2 é um diagrama conceitual ilustrando um exemplo de cobertura de grupos de amostras ‘oinf’.
[0018] A figura 3 é um diagrama conceitual que ilustra um exemplo de problema de grupo de amostra ‘oinf’ quando se lida com faixas de taxa de quadros diferente.
[0019] A figura 4 é um diagrama conceitual que ilustra um exemplo de problema de grupo de amostra ‘oinf’ quando se lida com nenhuma amostra em 'sbas' para um determinado período temporal.
[0020] A figura 5 é um diagrama de blocos ilustrando um exemplo de codificador de vídeo.
[0021] A figura 6 é um diagrama de blocos que ilustra um exemplo de decodificador de vídeo.
[0022] A figura 7 é um diagrama de blocos ilustrando um exemplo de estruturas de um arquivo, de acordo com uma ou mais técnicas desta divulgação.
[0023] A figura 8 é um diagrama conceitual que ilustra exemplo de estruturas de um arquivo, de acordo com uma ou mais técnicas desta divulgação.
[0024] A figura 9 é um diagrama de blocos que ilustra exemplo de estruturas de um arquivo, incluindo uma entrada de amostra fictícia, de acordo com uma ou mais técnicas desta divulgação.
[0025] A figura 10 é um diagrama de blocos que ilustra exemplo de estruturas de um arquivo no qual as entradas de amostra incluem índices de ponto de operação, de acordo com uma ou mais técnicas desta divulgação.
[0026] A figura 11 é um fluxograma que ilustra um exemplo de operação de um dispositivo para processamento de um arquivo, de acordo com uma técnica desta divulgação.
[0027] A figura 12 é um fluxograma que ilustra um exemplo de operação de um dispositivo para processamento de um arquivo, de acordo com uma técnica desta divulgação.
DESCRIÇÃO DETALHADA
[0028] Em geral, esta divulgação refere-se a técnicas para gerar e processar arquivos para armazenar fluxos de bits de múltiplas camadas de dados de vídeo codificados, tais como fluxos de bits de Codificação de Vídeo de Alta Eficiência em Camadas (L-HEVC). Um fluxo de bits de multicamadas compreende múltiplas camadas. Cada camada compreende uma sequência de imagens codificadas que ocorrem em diferentes tempos de saída. No caso de codificação de vídeo escalonável, as camadas de um fluxo de bits de multicamadas podem incluir uma camada de base e uma ou mais camadas de melhoria. A camada de base é decodificável sem referência a nenhuma das camadas de melhoria. As camadas de melhoria podem melhorar espacialmente ou temporalmente as imagens da camada de base. Por exemplo, uma camada de melhoria pode ter uma taxa de quadros maior que a camada de base. Assim, uma camada de melhoria pode incluir uma imagem codificada para um tempo de saída e a camada de base não inclui uma imagem codificada para esse tempo de saída. No caso em que uma primeira camada de um fluxo de bits de multicamadas inclui uma imagem codificada em um tempo de saída e uma segunda camada do fluxo de bits de multicamadas não inclui uma imagem codificada para o tempo de saída, a imagem codificada na primeira camada é dita ser desalinhada com uma imagem codificada na segunda camada. Em codificação de vídeo mutivista, as camadas de um fluxo de bits de multicamadas podem correspondr a imagens codificadas em diferentes vistas.
[0029] Um ponto de operação de um fluxo de bits de multicamadas pode ser definido por um conjunto de uma ou mais camadas no fluxo de bits de multicamadas e um identificador temporal máximo. Por exemplo, um determinado ponto de operação pode ser definido como um subconjunto particular do conjunto completo de camadas em um fluxo de bits de multicamadas e um identificador temporal máximo que é menor ou igual a um identificador temporal máximo no fluxo de bits de multicamadas. As imagens codificadas em um ponto de operação de um fluxo de bits de multicamadas podem ser decodificadas sem decodificar imagens codificadas do fluxo de bits de multicamadas, não estando no de operação.
[0030] Os pontos de operação são úteis por vários motivos. Por exemplo, um dispositivo pode optar por encaminhar para um dispositivo cliente um determinado ponto de operação de um fluxo de bits de multicamadas enquanto não encaminha partes do fluxo de bits de multicamadas não estando no de operação. Como resultado, a quantidade de dados encaminhados pode ser reduzida. Isso pode ser desejável em ambientes com restrição de largura de banda. Além disso, diferentes pontos de operação do mesmo fluxo de bits de multicamadas podem requerer diferentes capacidades de decodificação. Assim, se um decodificador é capaz de decodificar um primeiro ponto de operação de um fluxo de bits de multicamadas, mas não um segundo ponto de operação do mesmo fluxo de bits de multicamadas, pode ser um desperdício enviar dados do fluxo de bits de multicamadas no segundo ponto de operação que não estão no primeiro ponto de operação.
[0031] O formato de arquivo de mídia de base da International Standards Organization (ISO) é um formato de arquivo para armazenamento de dados de mídia, como dados de áudio e vídeo. O formato de arquivo de mídia de base ISO foi estendido para cenários específicos. Por exemplo, estão em andamento esforços para estender o formato de arquivo de mídia de base ISO para armazenamento de fluxos de bits L- HEVC. No formato de arquivo de mídia de base ISO, os dados de mídia podem ser organizados em uma ou mais faixas. Além disso, no formato de arquivo de mídia de base ISO e suas extensões, o termo "amostra" aplica-se a uma unidade de acesso ao meio, tal como uma unidade de acesso a vídeo ou uma unidade de acesso a áudio. No entanto, no nível do codec, o termo "amostra" pode se aplicar a um valor de um componente de cor de um pixel. Uma unidade de acesso de vídeo pode incluir uma ou mais imagens codificadas com o mesmo tempo de saída. Faixas diferentes podem incluir amostras que compreendem imagens codificadas de diferentes camadas de um fluxo de bits de multicamadas. Em alguns casos, uma faixa pode incluir amostras que compreendem imagens codificadas de duas ou mais camadas do fluxo de bits de multicamadas. Em outros casos, uma faixa pode incluir amostras que incluem apenas imagens codificadas de uma única camada do fluxo de bits de multicamadas.
[0032] O formato de arquivo de mídia de base ISO provê um mecanismo para agrupar amostras em "grupos de amostra". Por exemplo, o formato de arquivo de mídia de base ISO é estruturado em termos de estruturas de dados chamadas de "caixas", que podem ser aninhadas umas nas outras. As caixas de um arquivo podem incluir caixas de faixa para as faixas do arquivo. Uma caixa de faixa para uma faixa inclui metadados sobre a faixa. Por exemplo, uma caixa de faixa pode incluir uma caixa de descrição de amostra que inclui um conjunto de entradas de descrição de grupo de amostra, cada uma das quais inclui uma descrição de um grupo de amostra. Além disso, uma caixa de faixa para uma faixa pode incluir uma caixa de amostra para grupo que indica um conjunto de amostras na faixa e especifica um índice de uma entrada de descrição de grupo de amostra na caixa de entrada de descrição de grupo de amostra, especificando um grupo de amostra às quais as amostras indicadas pertencem.
[0033] Um rascunho da extensão do formato de arquivo de mídia de base ISO para L-HEVC provê um grupo de amostra de informação de ponto de operação. As amostras pertencentes a um grupo de amostra de informação de ponto de operação incluem amostras que compreendem imagens codificadas de um ponto de operação. Uma entrada de descrição de grupo de amostra para o grupo de amostra de informação de ponto de operação pode especificar informações para o ponto de operação, tal como qualquer combinação de um conjunto de camadas de saída do ponto de operação, um identificador temporal máximo do ponto de operação e perfil, camada e informações de nível para o ponto de operação. A especificação de um grupo de amostra de informação de ponto de operação em um arquivo pode permitir que um dispositivo extraia um ponto de operação do arquivo sem precisar interpretar os dados de vídeo codificados subjacentes, tal como dados L-HEVC. Como tal, o precedente pode simplificar o dispositivo e aumentar a capacidade de resposta.
[0034] O rascunho da extensão do formato de arquivo de mídia de base ISO base para L-HEVC especifica que as caixas de amostra para grupo e as caixas de descrição de grupo de amostra em um arquivo estão contidas nos metadados para apenas uma faixa do arquivo (ou seja, a faixa de referência de ponto de operação). Como observado acima, uma caixa de amostra para grupo em uma caixa de faixa para uma faixa especifica amostras na faixa. No entanto, como também referido acima, as camadas de um fluxo de bits de multicamadas podem ser incluídas em diferentes faixas e as camadas podem incluir imagens codificadas não alinhadas. Assim, uma caixa de amostra para grupo na caixa de faixa para a faixa de referência de ponto de operação pode não ser capaz de indicar que amostras específicas de faixas adicionais estão em um grupo de amostra de informação de ponto de operação. Por exemplo, quando a faixa de referência de ponto de operação inclui amostras nos tempos de saída 1, 3 e 5, e uma faixa adicional inclui amostras nos tempos de saída 1, 2, 3, 4, 5 e 6, a caixa de amostra para grupo pode não ser capaz de especificar que a amostra da faixa adicional no tempo de saída 6 faz parte de um grupo de amostras de ponto de operação, apesar das imagens codificadas na amostra da faixa adicional no tempo de saída 6 serem parte de um ponto de operação ao qual o grupo de amostras do ponto de operação corresponde. Como resultado, um dispositivo pode conseguir extrair o ponto de operação do arquivo corretamente. Nesta divulgação, pode-se dizer que uma faixa contém um grupo de amostra quando a faixa inclui amostras pertencentes ao grupo de amostra.
[0035] Esta divulgação descreve várias técnicas que abordam este problema. Por exemplo, para cada respectiva amostra de cada respectiva faixa adicional de uma ou mais faixas adicionais, um dispositivo pode determinar se deve considerar a parte de respectiva amostra do grupo de amostras de informação de ponto de operação. Neste exemplo, com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação. Além disso, neste exemplo, baseado na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional. Assim, no exemplo do parágrafo anterior, a amostra da faixa adicional no tempo de saída 6 seria considerada parte do grupo de amostras do ponto de operação.
[0036] A figura 1 é um diagrama de blocos ilustrando um exemplo de sistema de codificação de vídeo 10 que pode utilizar as técnicas desta divulgação. Como aqui utilizado, o termo "codificador de vídeo" refere-se geneticamente a codificadores de vídeo e decodificadores de vídeo. Nesta divulgação, os termos "codificação de vídeo" ou "codificação" podem referir-se genericamente a codificação de vídeo ou decodificação de vídeo.
[0037] Como mostrado na figura 1, o sistema de codificação de vídeo 10 inclui um dispositivo de origem 12 e um dispositivo de destino 14. O dispositivo de origem 12 gera dados de vídeo codificados. Por conseguinte, o dispositivo de origem 12 pode ser referido como um dispositivo de codificação de vídeo ou um aparelho de codificação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo codificados gerados pelo dispositivo de origem 12. Por conseguinte, o dispositivo de destino 14 pode ser referido como um dispositivo de decodificação de vídeo ou um aparelho de decodificação de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 podem ser exemplos de dispositivos de codificação de vídeo ou aparelhos de codificação de vídeo. Esta divulgação pode usar o termo "dispositivo de processamento de vídeo" para se referir a um dispositivo que processa dados de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 são exemplos de dispositivos de processamento de vídeo. Outros tipos de dispositivos de processamento de vídeo incluem dispositivos que multiplexam e demultiplexam dados de mídia, tais como fluxos de dados MPEG-2.
[0038] Os dispositivo de origem 12 e dispositivo de destino 14 podem compreender uma vasta gama de dispositivos, incluindo computadores desktop, dispositivos de computação móvel, computadores portáteis (por exemplo, portáteis), computadores tablet, set-top boxes, telefones tais como os chamados "smartphones", televisões, câmaras, dispositivos de exibição, reprodutores de multimídia digitais, consoles de jogos de vídeo, computadores no automóvel ou semelhantes.
[0039] O dispositivo de destino 14 pode receber dados de vídeo codificados do dispositivo de origem 12 através de um canal 16. O canal 16 pode compreender um ou mais meios ou dispositivos capazes de mover os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, o canal 16 pode compreender um ou mais meios de comunicação que permitem que o dispositivo de origem 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Neste exemplo, o dispositivo de origem 12 pode modular os dados de vídeo codificados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e pode transmitir os dados de vídeo modulados para o dispositivo de destino 14. Um ou mais meios de comunicação podem incluir meios de comunicação sem fio e/ou com fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. Os um ou mais meios de comunicação podem fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla ou uma rede global (por exemplo, a Internet). Um ou mais meios de comunicação podem incluir roteadores, comutadores, estações de base ou outros equipamentos que facilitam a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0040] Em outro exemplo, o canal 16 pode incluir um meio de armazenamento que armazena dados de vídeo codificados gerados pelo dispositivo de origem 12. Neste exemplo, o dispositivo de destino 14 pode acessar o meio de armazenamento, por exemplo, via acesso ao disco ou acesso ao cartão. O meio de armazenamento pode incluir uma variedade de meios de armazenamento de dados acessados localmente, tais como discos Blu-ray, DVDs, CD-ROMs, memória flash ou outros meios de armazenamento digital adequados para armazenar dados de vídeo codificados.
[0041] Em um outro exemplo, o canal 16 pode incluir um servidor de arquivos ou outro dispositivo de armazenamento intermediário que armazena dados de vídeo codificados gerados pelo dispositivo de origem 12. Neste exemplo, o dispositivo de destino 14 pode acessar dados de vídeo codificados armazenados no servidor de arquivos ou outro dispositivo de armazenamento intermediário via streaming ou download. O servidor de arquivos pode ser um tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir os dados de vídeo codificados para o dispositivo de destino 14. Exemplos de servidores de arquivos incluem servidores de web (por exemplo, para um site), servidores de protocolo de transferência de arquivos (FTP), dispositivos de armazenamento conectado à rede (NAS), e unidades de disco locais. O servidor de arquivos pode transmitir dados de vídeo codificados armazenados em um arquivo gerado de acordo com as técnicas desta divulgação.
[0042] O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de uma conexão de dados padrão, tal como uma conexão com a Internet. Exemplos de tipos de conexões de dados podem incluir canais sem fio (por exemplo, conexões Wi-Fi), conexões com fio (por exemplo, DSL, modem a cabo, etc.) ou combinações de ambos adequados para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados do servidor de arquivos pode ser uma transmissão de streaming, uma transmissão de download ou uma combinação de ambos.
[0043] As técnicas desta divulgação não se limitam a aplicativos ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte a uma variedade de aplicações multimídia, tais como transmissões de televista por via aérea, transmissões de televista a cabo, difusão de televista por satélite, transmissões de vídeo por streaming, por exemplo, via Internet, codificação de dados de vídeo para armazenamento em um meio de armazenamento de dados, decodificação de dados de vídeo armazenados em um meio de armazenamento de dados ou outros aplicativos. Em alguns exemplos, o sistema de codificação de vídeo 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicações tais como streaming de vídeo, reprodução de vídeo, difusão de vídeo e/ou telefonia de vídeo.
[0044] O sistema de codificação de vídeo 10 ilustrado na figura 1 é meramente um exemplo e as técnicas desta divulgação podem ser aplicadas a configurações de codificação de vídeo (por exemplo, codificação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados são recuperados de uma memória local, transmitidos por uma rede ou algo semelhante. Um dispositivo de codificação de vídeo pode codificar e armazenar dados na memória, e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados da memória. Em muitos exemplos, a codificação e a decodificação são realizadas por dispositivos que não se comunicam entre si, mas simplesmente codificam dados para a memória e/ou recuperam e decodificam dados da memória.
[0045] No exemplo da figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20 e uma interface de saída 22. Em alguns exemplos, a interface de saída 22 pode incluir um modulador / demodulador (modem) e/ou um transmissor. A fonte de vídeo 18 pode incluir um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo contendo dados de vídeo previamente capturados, uma interface de vídeo para receber dados de vídeo de um provedor de conteúdo de vídeo e/ou um sistema de computação gráfica para gerar vídeo dados, ou uma combinação de tais fontes de dados de vídeo.
[0046] O codificador de vídeo 20 pode codificar dados de vídeo provenientes da fonte de vídeo 18. Em alguns exemplos, o dispositivo de origem 12 transmite diretamente os dados de vídeo codificados para o dispositivo de destino 14 através da interface de saída 22. Em outros exemplos, os dados de vídeo codificados também podem ser armazenados em um meio de armazenamento ou em um servidor de arquivos para acesso posterior pelo dispositivo de destino 14 para decodificação e/ou reprodução.
[0047] No exemplo da figura 1, o dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. Em alguns exemplos, a interface de entrada 28 inclui um receptor e/ou um modem. A interface de entrada 28 pode receber dados de vídeo codificados através do canal 16. O dispositivo de exibição 32 pode ser integrado com ou pode ser externo ao dispositivo de destino 14. Em geral, o dispositivo de exibição 32 exibe dados de vídeo decodificados. O dispositivo de exibição 32 pode compreender uma variedade de dispositivos de exibição, tais como uma tela de crital líquido (LCD), uma tela plasma, uma tela de emissor de luz orgânica (OLED) ou outro tipo de dispositivo de exibição.
[0048] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser implementados como qualquer um de vários circuitos adequados, como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, hardware ou quaisquer combinações dos mesmos. Se as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento legível por computador não transitório adequado e pode realizar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta divulgação. Qualquer um dos itens acima (incluindo hardware, software, uma combinação de hardware e software, etc.) pode ser considerado como um ou mais processadores. Cada um do codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador / decodificador combinado (CODEC) em um respectivo dispositivo.
[0049] Esta divulgação pode geralmente referir-se a codificador de vídeo 20 "sinalizando" ou "transmitindo" determinadas informações para outro dispositivo, tal como decodificador de vídeo 30. O termo "sinalizando" ou "transmitindo" pode geralmente se referir à comunicação de elementos de sintaxe e/ou outros dados usados para decodificar os dados de vídeo comprimidos. Tal comunicação pode ocorrer em tempo real ou quase em tempo real. Alternativamente, tal comunicação pode ocorrer ao longo de um período de tempo, tal como pode ocorrer ao armazenar elementos de sintaxe em um meio de armazenamento legível por computador em um fluxo de bits codificado no momento da codificação, que pode ser recuperado por um dispositivo de decodificação a qualquer momento sendo armazenado neste meio.
[0050] Além disso, no exemplo da figura 1, o sistema de codificação de vídeo 10 inclui um dispositivo de geração de arquivos 34. O dispositivo de geração de arquivos 34 pode receber dados de vídeo codificados gerados pelo dispositivo de origem 12. O dispositivo de geração de arquivos 34 pode gerar um arquivo que inclui os dados de vídeo codificados. O dispositivo de destino 14 pode receber o arquivo gerado pelo dispositivo de geração de arquivos 34. Em vários exemplos, o dispositivo de origem 12 e/ou o dispositivo de geração de arquivos 34 podem incluir vários tipos de dispositivos de computação. Por exemplo, o dispositivo de origem 12 e/ou o dispositivo de geração de arquivos 34 pode compreender um dispositivo de codificação de vídeo, um Elemento de Rede Ciente de Mídia (MANE), um dispositivo de computação de servidor, um dispositivo de computação pessoal, um dispositivo de computação de finalidade especial, um dispositivo de computação comercial ou outro tipo de dispositivo de computação. Em alguns exemplos, o dispositivo de geração de arquivos 34 faz parte de uma rede de entrega de conteúdo. O dispositivo de origem 12 e/ou o dispositivo de geração de arquivos 34 pode receber os dados de vídeo codificados do dispositivo de origem 12 por meio de um canal, tal como o link 16. Além disso, o dispositivo de destino 14 pode receber o arquivo do dispositivo de geração de arquivos 34 através de um canal tal como o link 16. O dispositivo de geração de arquivos 34 pode ser considerado um dispositivo de vídeo. Como mostrado no exemplo da figura 1, o dispositivo de geração de arquivos 34 pode compreender uma memória 31 configurada para armazenar um arquivo que contém conteúdo de vídeo codificado.
[0051] Em alguns exemplos, o dispositivo de origem 12 ou outro dispositivo de computação pode gerar um arquivo que inclui os dados de vídeo codificados. Para facilitar a explicação, esta divulgação pode descrever o dispositivo de origem 12 ou o dispositivo de geração de arquivo 34 como gerando o arquivo. No entanto, deve ser entendido que tais descrições são aplicáveis a dispositivos de computação em geral.
[0052] As técnicas descritas nesta divulgação podem ser utilizáveis com vários padrões de codificação de vídeo, incluindo técnicas de codificação de vídeo que não estão relacionadas com um padrão de codificação de vídeo específico. Exemplos dos padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo as extensões SVC (Codificação de Video Escalonável) e MVC (Codificação de vídeo Multivista). Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 operam de acordo com um padrão de compressão de vídeo, tal como o padrão HEVC. Além do padrão base HEVC, há esforços contínuos para produzir codificação de vídeo escalonável, codificação de vídeo com várias exibições e extensões de codificação 3D para HEVC. HEVC, uma extensão multivista para HEVC, chamada MV-HEVC, e uma extensão escalável para HEVC, chamada SHVC, foram finalizadas recentemente pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T. (VCEG) e ISO/IEC Motion Picture Experts Group (MPEG). O padrão HEVC também pode ser referido como Rec. ITU-T H.265 | ISO/IEC 23008-2.
[0053] Uma especificação proposta de HEVC intitulada "Codificação de vídeo de alta eficiência proposta (HEVC) versão 2, extensões de faixa de formato combinadas (RExt), escalabilidade (SHVC) e extensões multivista (MV-HEVC)" para JCT-VC de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11 18a Encontro: Sapporo, JP, 30 de junho a 9 de julho de 2014 (JCTVC-R1013_v6), (doravante denominado "JCTVC-R1013" ou "Rec. ITU-T H.265 | ISO/IEC 23008-2") está disponível em http://phenix.int- evry.fr/jct/doc_end_user/documents /18_Sapporo/wg11/JCTVC- R1013-v6.zip. MV-HEVC é incorporado como Anexo G de Rec. ITU-T H.265 | ISO/IEC 23008-2. SHVC é incorporado como Anexo H do Rec. ITU-T H.265 | ISO/IEC 23008-2.
[0054] Em HEVC e outros padrões de codificação de vídeo, uma sequência de vídeo tipicamente inclui uma série de imagens. As imagens também podem ser chamadas de "quadros". Uma imagem pode incluir um ou mais arranjos de amostra. Por exemplo, uma imagem pode incluir três arranjos de amostra, denotado SL, SCb e SCr. SL é um arranjo bidimensional (isto é, um bloco) de amostras de luma. SCb é um arranjos bidimensional de amostras de crominância Cb. SCr é um arranjos bidimensional de amostras de crominância Cr. As amostras de crominância também podem ser referidas aqui como amostras de "croma". Em outros casos, uma imagem pode ser monocromática e pode incluir apenas um arranjo de amostras de luma.
[0055] Para gerar uma representação codificada de uma imagem, o codificador de vídeo 20 pode gerar um conjunto de unidades de codificação em árvore (CTUs). Cada uma das CTUs pode ser um bloco de árvore de codificação de amostras de luma, dois blocos de árvore de codificação correspondentes de amostras de croma e estruturas de sintaxe usadas para codificar as amostras dos blocos de árvore de codificação. Um bloco de árvore de codificação pode ser um bloco de amostras NxN. Uma CTU também pode ser referida como um "bloco de árvore" ou uma "unidade de codificação maior" (LCU). As CTUs de HEVC podem ser amplamente análogas aos macroblocos de outros padrões, como H.264/AVC. No entanto, uma CTU não está necessariamente limitada a um tamanho específico e pode incluir uma ou mais unidades de codificação (CUs). Uma fatia pode incluir um número inteiro de CTUs ordenadas consecutivamente em uma ordem de varredura, como uma ordem de varredura raster. Nesta divulgação, o termo "imagem codificada" ou "imagem encodificada" pode referir-se a uma representação codificada de uma imagem contendo todas as unidades de árvore de codificação da imagem.
[0056] Para gerar uma CTU codificada, o codificador de vídeo 20 pode realizar recursivamente o particionamento quad-tree nos blocos de árvore de codificação de uma CTU para dividir os blocos de árvore de codificação em blocos de codificação, daí o nome "unidades de árvore de codificação". Um bloco de codificação é um bloco NxN de amostras. Uma CU pode ser um bloco de codificação de amostras de luma e dois blocos de codificação correspondentes de amostras de croma de uma imagem que tenha um arranjo de amostra de luma, um arranjo de amostra de Cb e um arranjo de amostra de Cr e estruturas de sintaxe usadas para codificar as amostras dos blocos de codificação. Em imagens monocromáticas ou imagens tendo três planos de cor separados, uma CU pode compreender um único bloco de codificação e estruturas de sintaxe usadas para codificar as amostras do bloco de codificação.
[0057] O codificador de vídeo 20 pode particionar um bloco de codificação de uma CU em um ou mais blocos de predição. Um bloco de predição pode ser um bloco de amostras retangulares (isto é, quadradas ou não quadradas) nas quais a mesma predição é aplicada. Uma unidade de predição (PU) de uma CU pode ser um bloco de predição de amostras de luma, dois blocos de predição correspondentes de amostras de croma de uma imagem e estruturas de sintaxe usadas para prever as amostras de blocos de predição. O codificador de vídeo 20 pode gerar blocos preditivos de luma, Cb e Cr para blocos de predição de luma, Cb e Cr de cada PU da CU. Em imagens monocromáticas ou imagens tendo três planos de cores separados, uma PU pode incluir um único bloco de predição e estruturas de sintaxe usadas para prever o bloco de predição.
[0058] O codificador de vídeo 20 pode usar intrapredição ou interpredição para gerar os blocos preditivos para uma PU. Se o codificador de vídeo 20 utiliza intrapredição para gerar os blocos preditivos de uma PU, o codificador de vídeo 20 pode gerar os blocos preditivos da PU com base em amostras decodificadas da imagem associada à PU. Se o codificador de vídeo 20 utiliza interpredição para gerar os blocos preditivos de uma PU, o codificador de vídeo 20 pode gerar os blocos preditivos da PU com base em amostras decodificadas de uma ou mais imagens diferentes da imagem associada à PU.
[0059] Após o codificador de vídeo 20 gerar blocos preditivos para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar um bloco residual da CU. Cada amostra em um bloco residual da CU indica uma diferença entre uma amostra em um bloco preditivo para uma PU da CU e uma amostra correspondente em um bloco de codificação da CU. Por exemplo, o codificador de vídeo 20 pode gerar um bloco residual de luma da CU. Cada amostra no bloco residual de luma da CU indica uma diferença entre uma amostra de luma em um bloco preditivo de luma de uma PU da CU e uma amostra correspondente no bloco de codificação de luma da CU. Além disso, o codificador de vídeo 20 pode gerar um bloco residual de Cb da CU. Cada amostra no bloco residual de Cb da CU pode indicar uma diferença entre uma amostra de Cb em um bloco de Cb preditivo de uma PU da CU e uma amostra correspondente no bloco de codificação de Cb da CU. O codificador de vídeo 20 também pode gerar um bloco residual de Cr da CU. Cada amostra no bloco residual de Cr da CU pode indicar uma diferença entre uma amostra de Cr em um bloco de Cr preditivo para uma PU da CU e uma amostra correspondente no bloco de codificação de Cr da CU.
[0060] Além disso, o codificador de vídeo 20 pode usar o particionamento de quadtree para decompor os blocos residuais de uma CU em um ou mais blocos de transformada. Um bloco de transformada pode ser um bloco retangular de amostras nas quais a mesma transformada é aplicada. Uma unidade de transformada (TU) de uma CU pode ser um bloco de transformada de amostras de luma, dois blocos de transformada correspondentes de amostras de croma e estruturas de sintaxe utilizadas para transformar as amostras de bloco de transformada. Assim, cada TU de uma CU pode estar associada a um bloco de transformada de luma, um bloco de transformada de Cb e um bloco de transformada de Cr. O bloco de transformada de luma associado à TU pode ser um sub-bloco do bloco residual de luma da CU. O bloco de transformada de Cb pode ser um sub-bloco do bloco de Cb residual da CU. O bloco de transformada de Cr pode ser um sub-bloco do bloco residual de Cr da CU. Em imagens monocromáticas ou imagens tendo três planos de cores separados, uma TU pode compreender um único bloco de transformada e estruturas de sintaxe usadas para transformar as amostras do bloco de transformada.
[0061] O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada para uma TU para gerar um bloco de coeficiente para a TU. Por exemplo, o codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de luma para uma TU para gerar um bloco de coeficiente de luma para a TU. O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de Cb de uma TU para gerar um bloco de coeficiente de Cb para a TU. O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de Cr de uma TU para gerar um bloco de coeficiente de Cr para a TU. Um bloco de coeficiente pode ser um arranjo bidimensional de coeficientes de transformada. Um coeficiente de transformada pode ser uma grandeza escalar.
[0062] Depois de gerar um bloco de coeficiente, o codificador de vídeo 20 pode quantizar o bloco de coeficiente. A quantização geralmente se refere a um processo no qual os coeficientes de transformada são quantificados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes de transformada, provendo uma compressão adicional. Depois que o codificador de vídeo 20 quantifica um bloco de coeficiente, o codificador de vídeo 20 pode codificar por entropia elementos de sintaxe indicando os coeficientes de transformada quantificados. Por exemplo, o codificador de vídeo 20 pode realizar Codificação Aritmética Binária Adaptativa de Contexto (CABAC) nos elementos de sintaxe indicando os coeficientes de transformada quantificados. O codificador de vídeo 20 pode emitir os elementos de sintaxe codificados por entropia em um fluxo de bits.
[0063] O codificador de vídeo 20 pode emitir um fluxo de bits que inclui uma sequência de bits que forma uma representação de imagens codificadas e dados associados. O fluxo de bits pode compreender uma sequência de unidades de camada de abstração de rede (NAL). Cada uma das unidades NAL inclui um cabeçalho de unidade NAL e encapsula uma carga útil de sequência de bytes brutos (RBSP). O cabeçalho da unidade NAL pode incluir um elemento de sintaxe que indica um código de tipo de unidade NAL. O código do tipo de unidade NAL especificado pelo cabeçalho da unidade NAL de uma unidade NAL indica o tipo da unidade NAL. Uma RBSP pode ser uma estrutura de sintaxe contendo um número inteiro de bytes que é encapsulado em uma unidade NAL. Em alguns casos, uma RBSP inclui zero bits.
[0064] Diferentes tipos de unidades NAL podem encapsular diferentes tipos de RBSPs. Por exemplo, diferentes tipos de unidade NAL podem encapsular diferentes RBSPs para conjuntos de parâmetros de vídeo (VPSs), conjuntos de parâmetros de sequência (SPSs), conjuntos de parâmetros de imagem (PPSs), fatias codificadas, informações complementares de melhoria (SEI) e assim por diante. Por exemplo, um primeiro tipo de unidade NAL pode encapsular uma RBSP para um PPS, um segundo tipo de unidade NAL pode encapsular uma RBSP para uma fatia codificada, um terceiro tipo de unidade NAL pode encapsular uma RBSP para Informação de Melhoria Suplementar (SEI), e assim por diante. Unidades NAL que encapsulam RBSPs para dados de codificação de vídeo (em oposição a RBSPs para conjuntos de parâmetros e mensagens SEI) podem ser referidas como unidades NAL de camada de codificação de vídeo (VCL). Por exemplo, JCTVC-R1013 define o termo Unidade NAL VCL como sendo um termo coletivo para unidades NAL de segmento de fatia codificada e o subconjunto de unidades NAL que possuem valores reservados de tipo de unidade NAL que são classificadas como unidades NAL VCL em JCTVC-R1013. SEI contém informações que não são necessárias para decodificar as amostras de imagens codificadas das unidades NAL VCL.
[0065] No exemplo da figura 1, o decodificador de vídeo 30 recebe um fluxo de bits gerado pelo codificador de vídeo 20. Em alguns exemplos, o decodificador de vídeo 30 recebe o fluxo de bits após o dispositivo de destino 14 ou outro dispositivo obter o fluxo de bits proveniente de um arquivo. Além disso, o decodificador de vídeo 30 pode analisar o fluxo de bits para obter elementos de sintaxe proveniente do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base, pelo menos em parte, nos elementos de sintaxe obtidos a partir do fluxo de bits. O processo para reconstruir os dados de vídeo pode ser geralmente recíproco ao processo realizado pelo codificador de vídeo 20. Por exemplo, o decodificador de vídeo 30 pode usar intrapredição ou interpredição para determinar blocos preditivos das PUs de uma CU atual. Além disso, o decodificador de vídeo 30 pode inversamente quantizar blocos de coeficientes para TUs da CU atual. O decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficientes para reconstruir blocos de transformadas para as TUs da CU atual. O decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual, adicionando as amostras dos blocos preditivos para PUs da CU atual às amostras correspondentes dos blocos de transformada para as TUs da CU atual. Ao reconstruir os blocos de codificação para cada CU de uma imagem, o decodificador de vídeo 30 pode reconstruir a imagem.
[0066] Como indicado brevemente acima, as unidades NAL podem encapsular RBSPs para conjuntos de parâmetros de vídeo (VPSs), conjuntos de parâmetros de sequência (SPSs), conjuntos de parâmetros de imagem (PPSs). Um VPS é uma estrutura de sintaxe que compreende elementos de sintaxe que se aplicam a zero ou mais sequências de vídeo codificadas inteiras (CVSs). Um SPS também é uma estrutura de sintaxe que compreende elementos de sintaxe que se aplicam a zero ou mais CVSs inteiros. Um SPS pode incluir um elemento de sintaxe que identifica um VPS que está ativo quando o SPS está ativo. Assim, os elementos de sintaxe de um VPS podem ser mais geralmente aplicáveis do que os elementos de sintaxe de um SPS. Um PPS é uma estrutura de sintaxe que compreende elementos de sintaxe que se aplicam a zero ou mais imagens codificadas. Um PPS pode incluir um elemento de sintaxe que identifica um SPS que está ativo quando o PPS está ativo. Um cabeçalho de fatia de uma fatia pode incluir um elemento de sintaxe que indica um PPS que está ativo quando a fatia está sendo codificada.
[0067] O termo "unidade de acesso" pode ser usado para se referir ao conjunto de imagens que correspondem à mesma instância de tempo. Assim, os dados de vídeo podem ser conceituados como uma série de unidades de acesso que ocorrem ao longo do tempo. Um "componente de vista " pode ser uma representação codificada de uma vista em uma única unidade de acesso. Nesta divulgação, uma "vista" pode referir-se a uma sequência de componentes de vista associados ao mesmo identificador de vista. Em alguns exemplos, um componente de vista pode ser um componente de vista de textura (isto é, uma imagem de textura) ou um componente de vista de profundidade (isto é, uma imagem de profundidade).
[0068] Em MV-HEVC e SHVC, um codificador de vídeo pode gerar um fluxo de bits que compreende uma série de unidades NAL. Diferentes unidades NAL do fluxo de bits podem ser associadas a diferentes camadas do fluxo de bits. Uma camada pode ser definida como um conjunto de unidades NAL VCL e unidades NAL não-VCL associadas que possuem o mesmo identificador de camada. Uma camada pode ser equivalente a uma vista em codificação de vídeo multivista. Na codificação de vídeo multivista, uma camada pode conter todos os componentes de vista da mesma camada com instâncias de tempo diferentes. Cada componente de vista pode ser uma imagem codificada da cena de vídeo pertencente a uma vista específica em uma instância de tempo específica. Em alguns exemplos de codificação de vídeo multivista ou tridimensional, uma camada pode conter todas as imagens de profundidade codificadas de uma vista específica ou imagens de textura codificadas de uma vista específica. Em outros exemplos de codificação de vídeo 3D, uma camada pode conter componentes de vista de textura e componentes de vista de profundidade de uma vista específica. Da mesma forma, no contexto de codificação de vídeo escalonável, uma camada corresponde tipicamente a imagens codificadas com características de vídeo diferentes das imagens codificadas em outras camadas. Tais características de vídeo incluem tipicamente resolução espacial e nível de qualidade (por exemplo, relação sinal/ruído). Em HEVC e suas extensões, escalabilidade temporal pode ser alcançada dentro de uma camada definindo um grupo de imagens com um nível temporal particular como uma subcamada.
[0069] Para cada camada respectiva do fluxo de bits, os dados em uma camada inferior podem ser decodificados sem referência a dados em qualquer camada superior. Na codificação de vídeo escalonável, por exemplo, os dados em uma camada de base podem ser decodificados sem referência a dados em uma camada de melhoria. Em geral, as unidades NAL só podem encapsular dados de uma única camada. Assim, as unidades NAL que encapsulam dados da camada superior remanescente do fluxo de bits podem ser removidas do fluxo de bits sem afetar a capacidade de decodificação dos dados nas camadas restantes do fluxo de bits. Na codificação multivista, camadas superiores podem incluir componentes de vista adicionais. Em SHVC, as camadas superiores podem incluir dados de melhoria da relação sinal/ruído (SR), dados de melhoria espacial e/ou dados de melhoria temporal. Em MV-HEVC e SHVC, uma camada pode ser chamada de "camada de base" se um decodificador de vídeo puder decodificar imagens na camada sem referência a dados de qualquer outra camada. A camada de base pode estar em conformidade com a especificação da base de HEVC (por exemplo, Rec. ITU-T H.265 | ISO/IEC 23008-2).
[0070] Na codificação de vídeo escalonável, outras camadas além da camada de base podem ser chamadas de "camadas de melhoria" e podem prover informações que aprimoram a qualidade visual dos dados de vídeo decodificados a partir do fluxo de bits. A codificação de vídeo escalável pode melhorar a resolução espacial, relação sinal/ruído (isto qualidade) ou taxa temporal. Na codificação de vídeo escalável (por exemplo, SHVC), uma "representação de camada" pode ser uma representação codificada de uma camada espacial em uma única unidade de acesso. Para facilitar a explicação, esta divulgação pode referir-se a visualizar componentes e/ou representações de camadas como "componentes de vista / representações de camadas" ou simplesmente "imagens".
[0071] A codificação multivista suporta a interprediçãovista. A interprediçãovista é semelhante à interpredição usada em HEVC e pode usar os mesmos elementos de sintaxe. No entanto, quando um codificador de vídeo realiza uma interprediçãovista em uma unidade de vídeo atual (como uma PU), o codificador de vídeo 20 pode usar como uma imagem de referência uma imagem que está na mesma unidade de acesso que a unidade de vídeo atual, mas em uma vista diferente. Em contraste, a interpredição convencional apenas usa imagens em diferentes unidades de acesso como imagens de referência.
[0072] Na codificação multivista, uma vista pode ser referida como uma "vista de base" se um decodificador de vídeo (por exemplo, decodificador de vídeo 30) pode decodificar imagens na vista sem referência a imagens em qualquer outra vista. Ao codificar uma imagem em uma das vistas não básicas, um codificador de vídeo (como codificador de vídeo 20 ou decodificador de vídeo 30) pode adicionar uma imagem a uma lista de imagens de referência se a imagem estiver em uma vista diferente, mas em uma mesma instância de tempo (isto é, unidade de acesso) como a imagem que o codificador de vídeo está codificando atualmente. Tal como outras imagens de referência de interpredição, o codificador de vídeo pode inserir uma imagem de referência de interprediçãovista em qualquer posição de uma lista de imagens de referência.
[0073] Por exemplo, as unidades NAL podem incluir cabeçalhos (isto é, cabeçalhos de unidade NAL) e cargas úteis (por exemplo, RBSPs). Os cabeçalhos da unidade NAL podem incluir os elementos de sintaxe nuh_reserved_zero_6bits, que também podem ser chamados de elementos de sintaxe nuh_layer_id. Unidades NAL que possuem elementos de sintaxe nuh_layer_id que especificam valores diferentes pertencem a diferentes "camadas" de um fluxo de bits. Assim, na codificação multivista, MV-HEVC, SVC ou SHVC, o elemento de sintaxe nuh_layer_id da unidade NAL especifica um identificador de camada (i.e., um ID de camada) da unidade NAL. O elemento de sintaxe nuh_layer_id de uma unidade NAL é igual a 0 se a unidade NAL se relacionar a uma camada de base em codificação multivista, MV-HEVC ou SHVC. Dados em uma camada de base de um fluxo de bits podem ser decodificados sem referência a dados em qualquer outra camada do fluxo de bits. Se a unidade NAL não estiver relacionada a uma camada de base na codificação multivista, MV-HEVC ou SHVC, o elemento de sintaxe de nuh_layer_id pode ter um valor diferente de zero. Na codificação multivista, diferentes camadas de um fluxo de bits podem corresponder a diferentes vistas. Em SVC ou SHVC, outras camadas além da camada de base podem ser chamadas de "camadas de melhoria" e podem prover informações que aprimoram a qualidade visual dos dados de vídeo decodificados a partir do fluxo de bits.
[0074] Além disso, algumas imagens dentro de uma camada podem ser decodificadas sem referência a outras imagens dentro da mesma camada. Assim, as unidades NAL que encapsulam dados de certas imagens de uma camada podem ser removidas do fluxo de bits sem afetar a capacidade de decodificação de outras imagens na camada. A remoção de unidades NAL que encapsulam dados de tais imagens pode reduzir a taxa de quadros do fluxo de bits. Um subconjunto de imagens dentro de uma camada que pode ser decodificada sem referência a outras imagens dentro da camada pode ser aqui referida como uma "subcamada" ou uma "subcamada temporal".
[0075] As Unidades NAL podem incluir elementos de sintaxe temporal_id. O elemento de sintaxe temporal_id de uma unidade NAL especifica um identificador temporal da unidade NAL. O identificador temporal de uma unidade NAL identifica uma subcamada temporal com a qual a unidade NAL está associada. Assim, cada subcamada temporal de um fluxo de bits pode estar associada a um identificador temporal diferente. Se o identificador temporal de uma primeira unidade NAL for inferior ao identificador temporal de uma segunda unidade NAL, os dados encapsulados pela primeira unidade NAL podem ser decodificados sem referência aos dados encapsulados pela segunda unidade NAL.
[0076] Um fluxo de bits pode estar associado a uma pluralidade de pontos de operação. Em alguns exemplos, cada ponto de operação de um fluxo de bits pode estar associado a um conjunto de identificadores de camada (isto é, um conjunto de valores nuh_reserved_zero_6bits) e um identificador temporal. O conjunto de identificadores de camada pode ser denotado como OpLayerldSet e o identificador temporal pode ser denotado como TemporallD. Se o identificador de camada de uma unidade NAL estiver no conjunto de identificadores de camada de um ponto de operação e o identificador temporal da unidade NAL for menor ou igual ao identificador temporal do ponto de operação, a unidade NAL será associada ao ponto de operação. Assim, um ponto de operação pode ser um fluxo de bits criado a partir de outro fluxo de bits por operação do processo de extração de subfluxo de bits com outro fluxo de bits, uma lista de identificadores de camada de destino como entradas para o processo de extração de subfluxo de bits. O ponto de operação pode incluir cada unidade NAL associada ao ponto de operação. O ponto de operação não inclui unidades NAL VCL que não estão associadas ao ponto de operação.
[0077] Um conjunto de camadas de saída (OLS) é um conjunto de camadas que consiste nas camadas de um dos conjuntos de camadas especificados no VPS, em que uma ou mais camadas no conjunto de camadas são indicadas como camadas de saída. Particularmente, o elemento de sintaxe layer_set_idx_for_ols_minus1 [i], mais 1, especifica um índice do i-ésimo conjunto de camadas de saída. O elemento de sintaxe output_layer_flag[i][j] igual a 1 especifica que a camada j no i-ésimo OLS é uma camada de saída. O elemento de sintaxe output_layer_flag[i][j] igual a 0 especifica que a j-ésima camada no i-ésimo OLS não é uma camada de saída.
[0078] HEVC e outros padrões de codificação de vídeo especificam perfis, camadas e níveis. Perfis, camadas e níveis especificam restrições sobre fluxos de bits e, portanto, limitam os recursos necessários para decodificar os fluxos de bits. Perfis, camadas e níveis também podem ser usados para indicar pontos de interoperabilidade entre implementações de decodificadores individuais. Cada perfil especifica um subconjunto de recursos e limites algorítmicos que é suportado por todos os decodificadores de vídeo em conformidade com esse perfil. Os codificadores de vídeo não precisam usar todos os recursos suportados em um perfil.
[0079] Cada nível de uma camada pode especificar um conjunto de limites nos valores que os elementos e variáveis de sintaxe podem ter. O mesmo conjunto de definições de camada e nível pode ser usado com todos os perfis, mas implementações individuais podem suportar uma camada diferente e, dentro de uma camada, um nível diferente para cada perfil suportado. Para qualquer perfil, um nível de uma camada geralmente pode corresponder a uma carga de processamento de decodificador e capacidade de memória particulares. As capacidades de decodificadores de vídeo podem ser especificados em termos da capacidade de decodificar fluxos de vídeo em conformidade com as restrições de perfis, camadas e níveis específicos. Para tal perfil, a camada e o nível suportados para esse perfil também podem ser expressos. Alguns decodificadores de vídeo podem não ser capazes de decodificar determinados perfis, camadas ou níveis.
[0080] Em FIEVC, perfis, camadas e níveis podem ser sinalizados pela estrutura de sintaxe da estrutura de sintaxe profile_tier_level(). A estrutura de sintaxe profile_tier_level() pode ser incluída em um VPS e/ou um SPS. A estrutura de sintaxe profile_tier_level() pode incluir um elemento de sintaxe general_profile_idc, um elemento de sintaxe general_tier_flag, e um elemento de sintaxe general_level_idc. O elemento de sintaxe general_profile_idc pode indicar um perfil com o qual um CVS está em conformidade. O elemento de sintaxe general_tier_flag pode indicar um contexto de nível para interpretação do elemento de sintaxe general_level_idc. O elemento de sintaxe general_level_idc pode indicar uma camada aao qual um CVS está em conformidade. Outros valores para esses elementos de sintaxe podem ser reservados.
[0081] As capacidades dos decodificadores de vídeo podem ser especificadas em termos da capacidade de decodificar fluxos de vídeo em conformidade com as restrições de perfis, camadas e níveis. Para cada perfil, a camada e o nível suportados para esse perfil também podem ser expressos. Em alguns exemplos, os decodificadores de vídeo não inferem que um valor reservado do elemento de sintaxe general_profile_idc entre os valores especificados em HEVC indica recursos intermediários entre os perfis especificados. No entanto, os decodificadores de vídeo podem inferir que um valor reservado do elemento de sintaxe general_level_idc associado a um valor particular do elemento de sintaxe general_tier_flag entre os valores especificados em HEVC indica recursos intermediários entre os níveis especificados da camada.
[0082] Os padrões de formato de arquivo incluem o formato de arquivo de mídia de base ISO (ISOBMFF, ISO/IEC 14496-12) e outros derivados do ISOBMFF, incluindo formato de arquivo MPEG-4 (ISO/IEC 14496-15), formato de arquivo 3GPP (3GPP TS 26.244) e formato de arquivo AVC (ISO/IEC 14496-15). Os textos propostas das novas edições da ISO/IEC 14496-12 e 14496-15 estão disponíveis em http: //phenix.int-evry.fr/mpeg/doc_end_user/documents/111_Geneva /wg11/ l5177-v6-wl5177.zip e http://phenix.int-vry.fr/mpeg/doc_end_user/documents /112_Warsaw/wg11/wl5479-v2-wl5479.zip, respectivamente.
[0083] O ISOBMFF é usado como base para muitos formatos de encapsulamento de codec, tal como o formato de arquivo AVC, assim como para muitos formatos de recipiente multimídia, tal como o formato de arquivo MPEG-4, o formato de arquivo 3GPP (3GPP) e formato de arquivo DVB. Embora originalmente concebido para armazenamento, o ISOBMFF provou ser muito valioso para a transmissão, por exexemplo, para download progressivo ou DASH. Para propósitos de streaming, os fragmentos de filme definidos em ISOBMFF podem ser usados.
[0084] Além da mídia contínua, como áudio e vídeo, a mídia estática, como imagens, bem como os metadados, podem ser armazenados em um arquivo em conformidade com ISOBMFF. Os arquivos estruturados de acordo com o ISOBMFF podem ser usados para muitas finalidades, incluindo reprodução de arquivos de mídia local, download progressivo de um arquivo remoto, segmentos para Streaming Adaptativo Dinâmico sobre HTTP (DASH), recipientes para conteúdo a ser transmitido e suas instruções de empacotamento e gravação de fluxos de mídia em tempo real recebidos.
[0085] Uma caixa é a estrutura de sintaxe elementar no ISOBMFF. Uma caixa inclui um tipo de caixa codificada de quatro caracteres, a contagem de bytes da caixa e a carga útil. Um arquivo ISOBMFF consiste em uma sequência de caixas e as caixas podem conter outras caixas. Uma caixa de filme ("moov") contém os metadados para os fluxos de mídia que estão presentes no arquivo, cada um representado no arquivo como uma faixa. Os metadados de uma faixa são colocados em uma caixa de faixa ("faixa"), enquanto o conteúdo de mídia de uma faixa é colocado em uma caixa de dados de mídia ("mdat") ou diretamente em um arquivo separado. O conteúdo de mídia para faixas pode compreender ou consistir em uma sequência de amostras, como unidades de acesso de áudio ou vídeo.
[0086] O ISOBMFF especifica os seguintes tipos de faixas: uma faixa de mídia, que contém um fluxo de mídia elementar, uma faixa de dicas, que inclui instruções de transmissão de mídia ou representa um fluxo de pacote recebido e uma faixa de metadados temporizados, que inclui metadados sincronizados com o tempo. Os metadados de cada faixa incluem uma lista de entradas de descrição de amostra, cada uma fornecendo o formato de codificação ou encapsulamento usado na faixa e os dados de inicialização necessários para processar esse formato. Cada amostra é associada a uma das entradas de descrição da amostra da faixa.
[0087] O ISOBMFF permite especificar metadados específicos de amostra com vários mecanismos. Por exemplo, uma caixa de faixa inclui uma caixa de Tabela de Amostra ('stbl'). Uma caixa de Tabela de Amostra de uma faixa contém uma tabela de amostra que contém todo a indexação de tempo e dados das amostras de mídia da faixa. A tabela de amostra inclui entradas de amostra para amostras específicas da faixa. Uma amostra de uma faixa pode incluir um elemento de sintaxe identificando uma entrada de amostra aplicável à amostra. Assim, quando um dispositivo está processando uma amostra (por exemplo, preparando para decodificar imagens codificadas da amostra, encaminhar a amostra, extrair a amostra, etc.), o dispositivo pode ser capaz de se referir a uma entrada de amostra na caixa de Tabela de Amostra para determinar como processar a amostra.
[0088] Mais especificamente, uma caixa de tabela de amostra pode incluir uma caixa de Descrição de Amostra ('stbl'). A caixa Descrição da Amostra pode incluir informações detalhadas sobre um tipo de codificação usado e qualquer informação de inicialização necessária para essa decodificação. Para realizar isso, a caixa Descrição da Amostra inclui um conjunto de caixas de Entrada de Amostra (ou seja, entradas de amostra). O código a seguir define as classes de caixa de entrada de amostra e descrição de amostra de caixas no ISOBMFF. aligned(8) abstract class SampleEntry (unsigned int(32) format) extends Box(format){ const unsigned int(8)[6] reserved = 0; unsigned int(16) data_reference_index; aligned(8) class SampleDescriptionBox (unsigned int(32) handler_type) extends FullBox(*stsd', version, 0){ int i ; unsigned int (32) entry_count; for (i = 1 ; i <= entry_count ; i++){ SampleEntry(); // an instance of a class derived from SampleEntry }}
[0089] No ISOBMFF, uma classe de Entrada de Amostra é uma classe abstrata que é estendida para tipos de mídia específicos. Por exemplo, uma classe VisualSampleEntry estende a classe SampleEntry e contém informações para dados de vídeo. Da mesma forma, uma classe AudioSampleEntry estende a classe SampleEntry e contém informações para dados de áudio. O código a seguir define a classe AudioSampleEntry no ISOBMFF. class VisualSampleEntry(codingname) extends SampleEntry (codingname){ unsigned int(16) pre_defined = 0; const unsigned int(16) reserved = 0; unsigned int(32)[3] pre_defined = 0; unsigned int(lβ) width; unsigned int(16) height; template unsigned int(32) horizresolution = 0x00480000; // 72 dpi template unsigned int(32) vertresclution = 0x00480000; // 72 dpi const unsigned int(32) reserved = 0; template unsigned int(16) frame_count = 1; string[32] compressorname; template unsigned int(16) depth = 0x0018; int(16) pre_defined - -1; // other boxes from derived specifications CleanApertureBox clap; // optional PixelAspectRatioBox pasp; // optional }
[0090] Além disso, a classe VisualSampleEntry pode ser estendida para propósitos ainda mais específicos, como a definição de dados para codecs específicos. Por exemplo, o código a seguir define uma classe HEVCSampleEntry que estende a classe VisualSampleEntry e contém informações específicas para HEVC. class HEVCSampleEntry() extends VisualSampleEntry ('hvcl' I or 'hevl'){ HEVCConfigurationBox config; MPEG4BitRateBox (); // optional MPEG4ExtensionDescriptorsBox (); // optional Box extra_boxes[]; // optional }
[0091] Conforme mostrado no código acima, a classe HEVCSampleEntry inclui uma instância da classe HEVCConfigurationBox. O HEVCConfigurationBox inclui uma instância de uma classe HEVCDecoderConfigurationRecord. Instâncias da classe HEVCDecoderConfigurationRecord podem incluir elementos de sintaxe especificando informações que um decodificador pode usar para decodificar imagens codificadas em uma amostra à qual se aplica uma entrada de amostra que contém a instância do HEVCDecoderConfigurationRecord.
[0092] Além disso, foi definida uma classe LHEVCSampleEntry que estende a classe VisualSampleEntry e contém informações específicas para L-HEVC. O LHEVCSampleEntry pode ser usado em faixas que não são compatíveis com HEVC. Por exemplo, se uma faixa de um arquivo incluir apenas uma camada de base de um fluxo de bits de várias camadas, a faixa poderá incluir instâncias da classe HEVCSampleEntry. No entanto, neste exemplo, outras faixas do arquivo carregando outras camadas do fluxo de bits de várias camadas podem incluir instâncias da classe LHEVCSampleEntry. Conforme mostrado no código a seguir, a classe LHEVCSampleEntry inclui uma instância de um LHEVCConfigurationBox e o LHEVCConfigurationBox inclui uma caixa LHEVCDecoderConfigurationRecord. class LHEVCConfigurationBox extends Box('lhvC') { LHEVCDecoderConfigurationRecord() LHEVCConfig; } class HEVCLHVCSampleEntry() extends HEVCSampleEntry() { LHEVCConfigurationBox Ihvcconfig; } // Use this if track is not HEVC compatible class LHEVCSampleEntry() extends VisualSampleEntry ('Ihvl', or ’lhel') { LHEVCConfigurationBox Ihvcconfig; MPEG4ExtensionDescriptorsBox (); // optional }
[0093] Caixas específicas dentro de uma caixa de tabela de amostra ("stbl") foram padronizadas para responder às necessidades comuns. Por exemplo, uma caixa de Amostra de Sinc ("stss") é usada para listar as amostras de acesso aleatório da faixa. O mecanismo de agrupamento de amostra permite o mapeamento de amostras de acordo com um tipo de agrupamento de quatro caracteres em grupos de amostras que compartilham a mesma propriedade especificada como uma entrada de descrição de grupo de amostra no arquivo. Vários tipos de agrupamento foram especificados no ISOBMFF.
[0094] Outro exemplo de grupo de amostra é um grupo de amostra de informação de camada ("linf"). Uma entrada de descrição de grupo de amostra para um grupo de amostra de informação de camada compreende uma lista de camadas e subcamadas que uma faixa contém. Cada amostra de uma faixa que contém uma imagem codificada de uma camada pode fazer parte de um grupo de amostra de ‘linf’ da faixa. Pode haver uma ou mais entradas de grupos de amostras ‘linf’ in em uma caixa de descrição de grupo de amostra para uma faixa. No entanto, pode ser um requisito que exista uma entrada de descrição de grupo de amostra ‘linf’ para cada faixa que inclua dados do L-FIEVC. A seguir, são providas uma sintaxe e semânticas para uma entrada de descrição de grupo de amostra para um grupo de amostra ‘linf’. Sintaxe 9.8.2.2 class LayerlnfoGroupEntry extends VisualSampleGroupEntry (‘linf)) { unsigned int (2) reserved; unsigned int (6) num layers in track; for (i=0; i<num_layers_in_track; i++) { unsigned int (4) reserved; unsigned int (6) layer id; unsigned int (3) minsublayerid; unsigned int (3) max sub layer id; }} Semânticas 9.8.2.3 num_layers_in_track: O número de camadas transportadas em qualquer amostra dessa faixa associada a esse grupo de amostra, layer_id: IDs de camada para as camadas transportadas em amostras associadas. As instâncias deste campo devem estar em ordem crescente no loop. min_sub_layer_id: O valor TemporalID mínimo para as subcamadas na camada dentro da faixa. 1. Max_sub_layer_id: O valor máximo de Temporalld para as subcamadas na camada dentro da faixa. 2. Seja layerList a lista de IDs de camadas que são transportadas nessa faixa e os IDs de camada de camadas que são transportadas em outras faixas e que são referidas por camadas transportadas nesta faixa direta ou indiretamente. Os IDs de camada no layerList são ordenados em ordem crescente de valores de ID de camada. Por exemplo, suponha que essa faixa carregue camadas com IDs de camada 4 e 5 e se refira a camadas com ID de camada igual a 0 e 1, em seguida, o layerList associado a essa faixa é {0, 1, 4, 5}.
[0095] A especificação ISOBMFF especifica seis tipos de Pontos de Acesso ao Fluxo (SAPs) para uso com o DASH. Os dois primeiros tipos de SAP (tipos 1 e 2), correspondem a imagens de Renovação de decodificação Instantânea (IDR) em H.264/AVC e HEVC. O terceiro tipo de SAP (tipo 3) corresponde a pontos de acesso aleatório de grupo de imagens (GOP) abertos, portanto, imagens de acesso quebrado ao link quebrado (BLA) ou imagens de acesso aleatório limpo (CRA) no HEVC. O quarto tipo de SAP (tipo 4) corresponde a pontos de acesso aleatório de GDR.
[0096] Na especificação proposta atual para 14496-15 para armazenamento de camadas L-HEVC no formato de arquivo, uma lista de pontos de operação disponíveis para um fluxo de bits em um arquivo é descrita usando o grupo de amostra de ponto de operação (‘oinf’) que é sinalizado em uma das as faixas que transportam o fluxo de bits. O grupo de amostras de pontos de operação também pode ser referido aqui como o "grupo de amostra de informação de ponto de operação". Um aplicativo pode encontrar essa faixa seguindo uma referência de faixa ‘oref’. Para simplificar, a faixa que contém o grupo de amostras ‘oinf’ também é chamada de faixa ‘oref’. Embora o grupo de amostras ‘oinf’ seja sinalizado apenas em uma faixa, na especificação proposta atual para 14496-15 para armazenamento de camadas L-HEVC, o escopo do grupo de amostras ‘oinf’ abrange todas as faixas que transportam dados codificados em L-FIEVC. Sinalizar a lista de pontos de operação usando um grupo de amostra tem uma consequência tal que a lista de pontos de operação pode não cobrir todo o fluxo de bits na dimensão temporal. Mais de um grupo de amostras ‘oinf’ pode estar presente e cada grupo de amostras inclui um conjunto diferente de amostras.
[0097] A figura 2 é um diagrama conceitual ilustrando um exemplo de cobertura de grupos de amostras ‘oinf’. A figura 2 ilustra a cobertura de dois grupos de amostras ‘oinf’ (40 e 42) de acordo com a especificação preliminar atual para 14496-15 para armazenamento de camadas L-HEVC. Como mostrado no exemplo da figura 2, o grupo de amostras 40 e o grupo de amostras 42 incluem, cada um, amostras na faixa 01, na faixa 02 e na faixa 03. No exemplo da figura 2, a faixa 01 inclui uma camada de base (BL). A faixa 02 inclui um fluxo elementar EL1, que pode conter uma ou mais camadas. A faixa 03 inclui um fluxo elementar EL2, que pode conter uma ou mais camadas adicionais. No exemplo da figura 2, cada respectivo retângulo sombreado corresponde a uma única respectiva amostra. A faixa 01 é a faixa ‘oref’ na figura 2. Em outros exemplos, uma faixa diferente de uma faixa carregando uma camada de base pode ser a faixa ‘oref’. Cada respectiva amostra da faixa de referência de ponto de operação e cada respectiva amostra das faixas adicionais compreendem uma unidade de acesso respectiva que compreende uma ou mais imagens codificadas correspondentes à mesma instância de tempo
[0098] As técnicas acima de sinalizar pontos de operação podem ter problemas quando amostras em faixas diferentes não estão alinhadas, no sentido de que para algumas unidades de acesso (ou algumas instâncias de tempo de decodificação) existem unidades NAL em algumas faixas mas não nas outras faixas. Como um ponto de operação é sinalizado no nível do arquivo usando um grupo de amostra, na dimensão temporal, o grupo de amostra pode incluir apenas amostras presentes na faixa que contém o grupo de amostras ou no máximo amostras com tempos de decodificação com determinados intervalos. Assim, pode haver amostras em outras faixas com tempos de decodificação fora dos intervalos que podem ser claramente especificados pelos grupos de amostra em uma faixa específica. Detalhes dos problemas são descritos no texto abaixo.
[0099] Por exemplo, quando as taxas de quadro ou imagem de camadas em um fluxo de bits são diferentes e o EL é transportado em uma faixa diferente do BL, há amostras na faixa carregando o EL que não são cobertas por nenhum grupo de amostra ‘oinf’ e pode haver amostras na faixa que transportam o EL fora do intervalo de tempo de decodificação de qualquer um dos grupos de amostras ‘oinf’. Por exemplo, quando uma taxa de quadros de um EL é o dobro da taxa de quadros, há amostras na faixa carregando o EL que não são cobertos por nenhum grupo de amostras ‘oinf’.
[00100] A figura 3 ilustra um exemplo de problema que ocorre quando as faixas contêm camadas com diferentes taxas de quadros ou imagens. No exemplo da figura 3, um fluxo de bits inclui uma camada de base e uma ou mais camadas de melhoria. Uma faixa de referência de ponto de operação (isto é, a faixa ‘oref’) contém a camada de base e cada faixa respectiva de uma ou mais faixas adicionais contém uma respectiva camada de melhoria de uma ou mais camadas de melhoria. Particularmente, na figura 3, a faixa 01 contém a camada de base e a faixa 02 contém uma camada de melhoria (denotada EL1 na figura 3).
[00101] No exemplo da figura 3, um arquivo inclui um primeiro grupo de amostras ‘oinf’ 46 e um segundo grupo de amostras ‘oinf’ 48. No ponto de transição de agrupamento de um grupo de amostra ‘oinf’ para outro ‘oinf’, uma amostra 50 na faixa 02 com um tempo de decodificação entre a última amostra do primeiro grupo de amostra ‘oinf’ e a primeira amostra do segundo grupo de amostra ‘oinf’ não tem uma amostra temporalmente colocalizada na Faixa 01 e não pertence a nenhum grupo de amostra ‘oinf’.
[00102] Assim, no exemplo da figura 3 e outros exemplos, um ponto de operação disponível em um fluxo de bits em um arquivo é descrito no arquivo usando um primeiro grupo de amostra de informação de ponto de operação (por exemplo, grupo de amostras ‘oinf’ 46 na Figura 3) que é sinalizado na faixa de referência de ponto de operação (por exemplo, faixa 01 na figura 3). O primeiro grupo de amostra de informação de ponto de operação compreende um primeiro conjunto de amostras na faixa de referência de ponto de operação. Além disso, a faixa de referência de ponto de operação contém um segundo grupo de amostras de pontos de operação que compreende um segundo conjunto de amostras na faixa de referência de ponto de operação. Neste exemplo, não há amostra na faixa de referência de ponto de operação ocorrendo em um tempo de decodificação entre um tempo de decodificação de uma amostra com um último tempo de decodificação entre o primeiro conjunto de amostras (por exemplo, amostra 52 na Figura 3) e uma amostra tendo um tempo de decodificação mais precoce entre o segundo conjunto de amostras (por exemplo, a amostra 54 na figura 3). Além disso, há uma ou mais amostras (por exemplo, amostra 50 na figura 3) em uma faixa adicional particular (por exemplo, faixa 02 na figura 3) da uma ou mais faixas adicionais que têm tempos de decodificação entre o tempo de decodificação da amostra tendo o último tempo de decodificação entre o primeiro conjunto de amostras e a amostra tendo o tempo de decodificação mais antigo entre o segundo conjunto de amostras. Em alguns casos, a faixa adicional particular (por exemplo, a faixa 02 na figura 3) tem uma taxa de quadros mais alta do que a faixa de referência de ponto de operação.
[00103] O fato de a faixa ‘oref’ designada que contém grupos de amostras ‘oinf’ ser encontrada seguindo a referência de faixa ‘oref’ tem uma consequência de que pode haver apenas uma faixa para todo o fluxo de bits que pode conter grupos de amostras ‘oinf’, já que a referência de faixa não pode ser alterada uma vez que a referência de faixa é especificada no cabeçalho da faixa. Devido a essa designação fixa da faixa que pode conter o grupo de amostras ‘oinf’ e ao fato de que o grupo de amostras ‘oinf’ pode incluir apenas amostras presentes na faixa que contém o grupo de amostras ‘oinf’, algumas amostras em faixas diferentes da faixa ‘oref’ podem não pertencer a nenhum grupo de amostra ‘oinf’ se não houver amostra em determinado período temporal na faixa ‘oref’.
[00104] A figura 4 ilustra um exemplo de problema que ocorre quando a faixa ‘oref’ não possui amostra para determinado período temporal. No exemplo da figura 4, um arquivo inclui um primeiro grupo de amostras ‘oinf’ 56 e um segundo grupo de amostras ‘oinf’ 58. Como mostrado no exemplo da figura 4, todas as amostras 60 na faixa diferente da faixa ‘oref’ no período temporal, onde não há amostra na faixa ‘oref’, não pertencem a nenhum grupo de amostra ‘oinf’. Adicionalmente, como mostrado na figura 4, não é possível ter um grupo de amostras ‘oinf’ na Faixa 02, pois a faixa ‘oref’ não pode ser alterada quando a faixa ‘oref’ é especificada por uma referência de faixa ‘oref’ no cabeçalho da faixa.
[00105] Esta divulgação propõe várias técnicas para resolver os problemas acima. Algumas das técnicas podem ser aplicadas independentemente e algumas delas podem ser aplicadas em combinação. As técnicas podem ser benéficas por razões além de resolver os problemas acima descritos.
[00106] De acordo com uma primeira técnica desta divulgação, o seguinte pode ser aplicado para amostras nas faixas que não são a faixa ‘oref’: a. Uma amostra em uma faixa diferente da faixa ‘oref’ é parte do mesmo grupo de amostra ‘oinf’ como sua amostra temporalmente colocalizada na faixa ‘oref’. Para uma amostra particular em uma faixa, a amostra temporalmente colocalizada em outra faixa é aquela com o mesmo tempo de decodificação daquela amostra particular. b. Se uma amostra spA em uma faixa diferente da faixa ‘oref’ não tiver uma amostra temporalmente colocalizada na faixa ‘oref’, a amostra será considerada como parte do grupo de amostras ‘oinf’ da última amostra na faixa ‘oref’ antes de spA. Este processo pode ser aplicado recursivamente. Em alternatiiva ou adicionalmente, neste caso a amostra é considerada como parte do grupo de amostras ‘oinf’ da primeira amostra na faixa ‘oref’ após spA.
[00107] Ao aplicar as afirmações acima, a amostra 50 da figura 3 está incluída no grupo de amostras ‘oinf’ 46 porque a amostra 50 está em uma faixa (isto é, na faixa 02) diferente da faixa ‘oref’ (isto é, faixa 01) e não tem nenhuma amostra temporalmente colocalizada na faixa ‘oref’. Assim, a amostra 50 é considerada como parte do grupo de amostras ‘oinf’ da última amostra (isto é, amostra 52) antes da amostra 50. Similarmente, na amostra da figura 4, as amostras 60 estão em uma faixa (isto é, na faixa 02) diferente da faixa ‘oref’ (isto é, na faixa 01) e não têm amostras temporalmente colocalizadas na faixa ‘oref’. Assim, as amostras 60 são consideradas como parte do grupo de amostras ‘oinf’ da última amostra da faixa ‘oref’ antes das amostras 60.
[00108] Assim, em um exemplo da primeira técnica, um dispositivo, tal como o dispositivo de origem 12, o dispositivo de geração de arquivos 34 ou outro dispositivo, pode gerar uma faixa de referência de ponto de operação no arquivo. Em geral, a geração de uma faixa pode incluir o armazenamento de dados, como amostras de uma faixa e/ou metadados da faixa, em um arquivo. Como parte da geração da faixa de referência de ponto de operação, o dispositivo pode sinalizar, na faixa de referência de ponto de operação, um grupo de amostra de informação de ponto de operação que descreve um ponto de operação disponível para um fluxo de bits no arquivo. Em geral, a sinalização de um grupo de amostra pode compreender o armazenamento, em um arquivo, de uma caixa de amostra para grupo indicando amostras do grupo de amostra e uma entrada de descrição de grupo de amostra descrevendo o grupo de amostra. Além disso, o dispositivo pode gerar uma ou mais faixas adicionais no arquivo. Nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais. Além disso, com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação. Com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional.
[00109] Similarmente, em um exemplo da primeira técnica, um dispositivo, como o dispositivo de destino 14, um MANE ou outro dispositivo, pode obter uma faixa de referência de ponto de operação no arquivo. A obtenção de dados, como a faixa de referência de ponto de operação, pode incluir a leitura dos dados, a análise dos dados ou a execução de alguma ação para obter, adquirir ou possuir os dados. Um ponto de operação disponível para um fluxo de bits no arquivo é descrito no arquivo usando um grupo de amostra de informação de ponto de operação que é sinalizado na faixa de referência de ponto de operação. Além disso, o dispositivo pode obter uma ou mais faixas adicionais no arquivo. Nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais. Para cada respectiva amostra de cada respectiva faixa adicional de uma ou mais faixas adicionais, o dispositivo pode determinar se deve considerar a parte da respectiva amostra do grupo de amostra de informação de ponto de operação. Com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação. Com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional. Além disso, em alguns exemplos, o dispositivo pode realizar um processo de extração de subfluxo de bits que extrai o ponto de operação do fluxo de bits.
[00110] Este texto a seguir descreve um exemplo de implementação da primeira técnica. Ao longo desta divulgação, inserções no formato de arquivo L-FEVC atual (por exemplo, a especificação de rascunho atual para 1449615) são colocadas em tags <ins> ... </ins> (por exemplo, <ins> texto adicionado </ins>) e o texto removido é colocado em tags <dlt> ... </dlt> (por exemplo, <dlt> texto removido </dlt>). 9.8.1 O Grupo de Amostra de Informação de Pontos de Operação 9.8.1.1 Definição Tipo de caixa: 'oinf Recipiente: SampleGroupDescriptionBox ('sgpd') da faixa referenciada do tipo ‘oref’ Obrigatório: Sim em uma e apenas uma faixa de um fluxo de bits L-FEVC Quantidade: uma ou mais entradas de grupo de amostra ‘oinf’ As aplicações são informadas sobre os diferentes pontos de operação relevantes para uma dada amostra e a sua constituição, utilizando o grupo de amostra de informação de ponto de operação (‘oinf’). Cada ponto de operação está relacionado a um conjunto de camadas de saída, um valor máximo de T-ID e um perfil, nível e sinalização de camada. Todas essas informações são capturadas pelo grupo de amostra ‘oinf’. Além dessas informações, esse grupo de amostra também provê as informações de dependência entre camadas, os tipos de escalabilidade codificada no fluxo de bits L-HEVC e os identificadores de dimensão relacionados a qualquer camada específica para um determinado tipo de escalabilidade. Para todas as faixas de um fluxo de bits de L- HEVC, deve existir apenas uma faixa entre esse conjunto que contém um grupo de amostras ‘oinf’. Todas as faixas de um fluxo de bits de L-HEVC devem ter uma referência de faixa do tipo ‘oref’ para a faixa que transporta o grupo de amostras ‘oinf’. Quando vários VPSs estão presentes em um fluxo de bits de L-HEVC, pode ser necessário declarar vários grupos de amostras de Informações de Pontos Operacionais. Para casos mais comuns em que um único VPS está presente, recomenda-se usar o mecanismo de grupo de amostra padrão definido na ISO/IEC 14496-12 e incluir o grupo de amostra de informação de ponto de operação na tabela de amostra da faixa, em vez de declará-lo em cada fragmento de faixa. <ins> Para uma amostra particular em uma faixa, a amostra temporalmente colocalizada em outra faixa é aquela com o mesmo tempo de decodificação daquela amostra particular. Para faixas diferentes da faixa ‘oref’, o seguinte se aplica: - Uma amostra em uma faixa diferente da faixa ‘oref’ faz parte do mesmo grupo de amostras ‘oinf’ como sua amostra temporalmente colocalizada na faixa ‘oref’. - Se uma amostra spA em uma faixa diferente da faixa ‘oref’ não tiver uma amostra temporalmente colocalizada na faixa ‘oref’, a amostra será considerada como parte do grupo de amostras ‘oinf’ da última amostra na faixa ‘oref’ antes de spA. Este processo pode ser aplicado recursivamente. </ins>
[00111] De acordo com uma segunda técnica desta divulgação, em vez de usar uma referência de faixa ‘oref’ para resolver a faixa que contém grupos de amostra ‘oinf’, a faixa que contém o grupo de amostra ‘oinf’ é indicada em um grupo de amostra de informação de camada ('linf). Isso pode permitir que o grupo de amostras ‘oinf’ esteja presente em diferentes faixas por diferentes períodos temporais.
[00112] Por exemplo, com referência à figura 4, as caixas de descrição de grupo de amostra para Faixa 01 e Faixa 02 podem incluir cada uma das respectivas entradas de descrição de grupo de amostra ‘linf’ que incluem os respectivos elementos identificadores de faixa que especificam os respectivos identificadores de faixa que contêm grupos de amostra ‘oinf’ associados à Faixa 01 e à Faixa 02. Além disso, na figura 4, o elemento identificador de faixa ‘oinf’ na entrada de descrição de grupo de amostra ‘linf’ para a Faixa 02 pode indicar que a Faixa 02 inclui o grupo de amostras ‘oinf’. Assim, o grupo de amostras ‘oinf’ da faixa 02 pode incluir amostras 56. No entanto, se cada amostra em uma primeira faixa estiver alinhada com uma respectiva amostra em uma segunda faixa e um grupo de amostra ‘oinf’ for definido para a segunda faixa, pode ser mais eficiente para a primeira faixa referir-se ao grupo de amostra ‘oinf’ da segunda faixa do que a um grupo de amostra ‘oinf’ para ser definido diretamente na primeira faixa.
[00113] Assim, em um exemplo da segunda técnica, um dispositivo, tal como o dispositivo de origem 12 ou outro dispositivo, pode gerar uma primeira faixa em um arquivo. Neste exemplo, a primeira faixa contém uma entrada de descrição de grupo de amostra para um grupo de amostra de informação de camada. Além disso, neste exemplo, o dispositivo gera uma segunda faixa no arquivo. A segunda faixa contém uma entrada de descrição de grupo de amostra para um grupo de amostra de informação de ponto de operação que lista os pontos de operação disponíveis para um fluxo de bits no arquivo. Neste exemplo, o dispositivo pode usar os dados indicados na primeira faixa para identificar a segunda faixa como contendo a entrada de descrição de grupo de amostra para o grupo de amostra de informação de ponto de operação.
[00114] Em outro exemplo da segunda técnica, um dispositivo, como o dispositivo de destino 14 ou outro dispositivo, obtém uma primeira faixa em um arquivo. A primeira faixa contém uma entrada de descrição de grupo de amostra para um grupo de amostra de informação de camada. Além disso, o dispositivo obtém uma segunda faixa no arquivo. Neste exemplo, a segunda faixa contém uma entrada de descrição de grupo de amostra para um grupo de amostra de informação de ponto de operação que lista os pontos de operação disponíveis para um fluxo de bits no arquivo. Além disso, neste exemplo, o dispositivo pode utilizar dados indicados na primeira faixa para identificar a segunda faixa como contendo a entrada de descrição de grupo de amostra para o grupo de amostra de informação de ponto de operação.
[00115] Em uma terceira técnica, o grupo de amostras ‘oinf’ e o grupo de amostras de ‘linf’ estão temporalmente alinhados, de forma que as amostras pertencentes ao mesmo grupo de amostras ‘oinf’ também pertencem ao mesmo grupo de amostras de linf. Por exemplo, baseando-se na segunda técnica descrita acima, pode ser um requisito ou restrição em um formato de arquivo que, para cada amostra sA na faixa tA que pertence a um grupo de amostra ‘linf’ 1A e amostra sB na faixa tB que pertence a um grupo de amostra ‘linf’ 1B, onde sA e sB são temporalmente colocalizados, uma amostra de sC que está na faixa tA e também pertence ao grupo de amostra de linf 1A é temporalmente colocalizada com uma amostra sD que está na faixa tB, então a amostra sD deve pertencer ao grupo de amostras ‘linf’ 1B. Além disso, pode ser um requisito ou restrição em um formato de arquivo que, para cada amostra sA na faixa tA que pertence a um grupo de amostras ‘oref’ oA e amostra sB na faixa tB que pertence a um grupo de amostras ‘oref’ oB, onde sA e sB temporalmente colocalizadas, uma amostra sC que está na faixa tA e também pertence ao grupo de amostras ‘oref’ oA é temporalmente colocalizada com uma amostra sD que está na faixa 1B, então a amostra sD deve pertencer ao grupo de amostras ‘oref’ oB.
[00116] Assim, em um exemplo da terceira técnica, um dispositivo, tal como o dispositivo de origem 12 ou outro dispositivo, pode gerar uma primeira faixa em um arquivo. Neste exemplo, a primeira faixa contém uma entrada de descrição de grupo de amostra para um grupo de amostra de informação de camada. Além disso, neste exemplo, o dispositivo gera uma segunda faixa no arquivo. Neste exemplo, a segunda faixa contém uma entrada de descrição de grupo de amostra para um grupo de amostra de informação de ponto de operação que lista os pontos de operação disponíveis para um fluxo de bits no arquivo. Neste exemplo, o grupo de amostras de informações de camada e o grupo de amostra de informação de ponto de operação são alinhados temporalmente, de modo que as amostras pertencentes ao grupo de amostra de informação de ponto de operação também pertencem ao mesmo grupo de amostra de informação de camada.
[00117] Da mesma forma, em um exemplo da terceira técnica, um dispositivo, como o dispositivo de destino 14 ou outro dispositivo, pode obter uma primeira faixa em um arquivo. Neste exemplo, a primeira faixa contém uma entrada de descrição de grupo de amostra para um grupo de amostra de informação de camada. Além disso, neste exemplo, o dispositivo obtém uma segunda faixa no arquivo. Neste exemplo, a segunda faixa contém uma entrada de descrição de grupo de amostra para um grupo de amostra de informação de ponto de operação que lista os pontos de operação disponíveis para um fluxo de bits no arquivo. Neste exemplo, o grupo de amostras de informações de camada e o grupo de amostra de informação de ponto de operação são alinhados temporalmente, de modo que as amostras pertencentes ao grupo de amostra de informação de ponto de operação também pertencem ao mesmo grupo de amostra de informação de camada.
[00118] O texto abaixo mostra as alterações da especificação proposta atual de 14496-15 para uma implementação das segunda e terceira técnicas descritas acima. 9.8.1 O Grupo de Amostra de Informação de Pontos de Operação 9.8.1.1 Definição Tipo de Caixa: ‘oinf’ Recipiente: SampleGroupDescriptionBox ('sgpd') da faixa referenciada ao tipo ‘oref’ Obrigatório: Sim em uma e somente uma faixa de um fluxo de bits de L-HEVC Quantidade: uma ou mais entradas de grupo de amostra ‘oinf’ As aplicações são informadas sobre os diferentes pontos de operação relevantes para uma dada amostra e a sua constituição, utilizando o grupo de amostra de informação de ponto de operação (‘oinf’). Cada ponto de operação está relacionado a um conjunto de camadas de saída, um valor máximo de T-ID e um perfil, nível e sinalização de camada. Todas essas informações são capturadas pelo grupo de amostra ‘oinf’. Além dessas informações, esse grupo de amostra também provê as informações de dependência entre camadas, os tipos de escalabilidade codificadas no fluxo de bits L-HEVC e os identificadores de dimensão relacionados a qualquer camada específica para um determinado tipo de escalabilidade. <dlt> Para todas as faixas de um fluxo de bits de L-HEVC, deve haver apenas uma faixa entre esse conjunto que contém um grupo de amostras ‘oinf’. Todas as faixas de um fluxo de bits dde L-HEVC devem ter uma referência de faixa do tipo ‘oref’ para a faixa que transporta o grupo de amostras ‘oinf’. </dlt> <ins> Uma faixa que transporta o grupo de amostras ‘oinf’ é identificada pelo campo oinf_track_id sinalizado no grupo de amostras Informações de Camada ('linf'). O grupo de amostras ‘linf’ e o grupo de amostras ‘oinf’ são alinhados temporalmente, de modo que as amostras que pertencem ao mesmo grupo de amostras ‘oinf’ também pertencem ao mesmo grupo de amostras ‘linf’. </ ins> Quando vários VPSs estão presentes em um fluxo de bits de L-HEVC, pode ser necessário declarar vários grupos de amostras de Informações de Pontos Operacionais. Para casos mais comuns em que um único VPS está presente, recomenda-se usar o mecanismo de grupo de amostra padrão definido na ISO/IEC 14496-12 e incluir o grupo de amostra de informação de ponto de operação na tabela de amostra de faixa, em vez de declará-lo em cada fragmento de faixa. 9.8.1 O Grupo de Amostra de informação da Camada 9.8.1.1 Definição Tipo de Caixa: 'linf’ Recipiente: SampleGroupDescriptionBox ('sgpd') Obrigatório: Sim em todas as faixas do L-HEVC Quantidade: Uma ou mais entradas de grupos de amostras de ‘linf’ A lista de camadas e subcamadas que uma faixa transporta é sinalizada na Camada Grupo de Amostra de informação. Cada faixa L-HEVC deve ter um grupo de amostra de linf. 9.8.2.2 Sintaxe Classe LayerinfoGroupEntry estende VisualSampleGroupEntry 9.8.2.3 Semântica num_layers_in_track: O número de camadas transportadas em qualquer amostra dessa faixa associada a esse grupo de amostra. layer_id: IDs de camadas para as camadas transportadas em amostras associadas. As instâncias deste campo devem estar em ordem crescente no loop. min_sub_layer_id: O valor de Temporalld mínimo para as subcamadas na camada dentro da faixa. max_sub_layer_id: O valor de Temporalld máximo para as subcamadas na camada dentro da faixa. <ins> ‘oinf’_track_id: O ID da faixa que contém a faixa associada grupo de amostras ‘oinf’. </ins>
[00119] Em uma quarta técnica, uma entrada de amostra "fictícia" pode ser gerada para uma faixa. A entrada de amostra "fictícia" não é aplicável a nenhuma amostra na faixa e pode conter conjuntos de parâmetros que podem ser usados apenas por algumas outras faixas contendo camadas que dependem das camadas nessa faixa. Em alguns exemplos, a entrada de amostra "fictícia" inclui informações que descrevem pontos de operação ou valores de índice que apontam para pontos de operação sinalizados em uma caixa ‘oinf’. Assim, no exemplo da figura 4, a caixa Tabela de Amostra da Track 01 pode incluir uma entrada de amostra "dummy" e um dispositivo que interpreta o arquivo pode se referir à entrada de amostra "dummy" da Faixa 01 ao interpretar a Faixa 02.
[00120] Em um exemplo da quarta técnica, um dispositivo, como o dispositivo de origem 12 ou outro dispositivo, gera uma ou mais faixas em um arquivo. Além disso, neste exemplo, o dispositivo gera uma faixa adicional no arquivo. Neste exemplo, a faixa adicional contém uma entrada de amostra específica que não é aplicável a nenhuma amostra na faixa adicional. Neste exemplo, a entrada de amostra específica contém um conjunto de parâmetros que pode ser usado somente por uma ou mais faixas que contêm camadas que dependem das camadas na faixa adicional.
[00121] Da mesma forma, em um exemplo da quarta técnica, um dispositivo, como o dispositivo de destino 14 ou outro dispositivo, obtém uma ou mais faixas em um arquivo. Além disso, neste exemplo, o dispositivo obtém uma faixa adicional no arquivo. Neste exemplo, a faixa adicional contém uma entrada de amostra específica que não é aplicável a nenhuma amostra na faixa adicional. Além disso, neste exemplo, a entrada de amostra específica contém um conjunto de parâmetros que pode ser usado somente por uma ou mais faixas que contêm camadas que dependem das camadas na faixa adicional.
[00122] Em uma quinta técnica, a lista de pontos de operação não é sinalizada por meio de um grupo de amostras. Em vez disso, a lista de pontos de operação é sinalizada em sua própria caixa (por exemplo, uma caixa ‘oinf’) dentro da faixa ‘oref’. Por exemplo, como referido acima, uma caixa de Tabela de Amostra de uma faixa pode incluir entradas de amostra contendo informação relativa às respectivas amostras da faixa. No rascunho da extensão do formato de arquivo de mídia de base de ISO para L-HEVC, um exemplo de entrada pode incluir uma instância de classe LUEVCDecoderConfigurationRecord. De acordo com um exemplo da quinta técnica, uma entrada de amostra de cada faixa pode incluir uma lista de índices para a lista de pontos de operação sinalizados na caixa de ‘oinf’. A lista de pontos de operação na entrada de amostra é a lista de pontos de operação que se aplicam às amostras às quais a entrada de amostra se aplica.
[00123] Assim, em um exemplo da quinta técnica, como parte da geração de um arquivo, um dispositivo (por exemplo, dispositivo de origem 12 ou outro dispositivo) pode sinalizar uma lista de pontos de operação em uma caixa dentro de uma faixa contendo uma entrada de descrição de grupo de amostra especificando um grupo de amostra de informação de ponto de operação que lista os pontos de operação disponíveis para um fluxo de bits no arquivo. Neste exemplo, as caixas de um tipo ao qual a caixa pertence são designadas apenas para conter entradas de descrição de grupo de amostra, especificando grupos de amostra de informação de ponto de operação. Da mesma forma, em outro exemplo da quinta técnica, como parte da geração de um arquivo, um dispositivo (por exemplo, dispositivo de destino 14 ou outro dispositivo) pode obter uma lista de pontos de operação em uma caixa dentro de uma faixa contendo uma entrada de descrição de grupo de amostra especificando um grupo de amostra de informação de ponto de operação que lista os pontos de operação disponíveis para um fluxo de bits no arquivo. Neste exemplo, as caixas de um tipo ao qual a caixa pertence são designadas apenas para conter entradas de descrição de grupo de amostra especificando grupos de amostra de ponto de operação.
[00124] O texto abaixo mostra exemplos de alterações na especificação preliminar atual para 14496-15 para implementar a quinta técnica. 9.6.3 Registro de Configuração de Decodificador Quando o registro de configuração do decodificador definido na cláusula 8.3.3.1 é usado para um fluxo que pode ser interpretado como um fluxo de L-HEVC ou de HEVC, o registro de configuração do decodificador de HEVC deve aplicar-se à camada de base compatível com HEVC e deve conter apenas conjuntos de parâmetros necessários para decodificar a camada de base de HEVC. A sintaxe do LHEVCDecoderConfigurationRecord é a seguinte: aligned(8) class LHEVCDecoderConfigurationRecord { unsigned int(8) configurationversion = 1; bit(4) reserved = ‘ 111 l’b; unsigned int(12) min spatial segmentation idc; bit(6) reserved = ‘ 11111 l’b; unsigned int(2) parallelismType; bit(2) reserved = ‘ 1 l’b; bit(3) numTemporalLayers; bit(l) temporalldNested; unsigned int(2) lengthSizeMinusOne; unsigned int(8) numOfArrays; for (j=0; j < numOfArrays; j++) { bit(l) array completeness; unsigned int(l) reserved = 0; unsigned int(6) NAL_unit_type; unsigned int(16) numNalus; for (i=0; i< numNalus; i++) { unsigned int(16) nalUnitLength; bit(8*nalUnitLength) nalUnit; } } <ins>unsigned int(16) numOfAvailableOPs; for (j=0; j < numOfAvailableOPs; j++) { unsigned int(16) op_idx;</ins> 1 } As semânticas dos campos comuns a LHEVCDecoderConfigurationRecord e HEVCDecoderConfigurationRecord permanecem inalteradas. NOTA Uma faixa pode representar mais de um conjunto de camadas de saída. NOTA Para cada camada de imagem auxiliar incluída na faixa, recomenda-se incluir, dentro de nalUnit, uma unidade NAL SEI contendo uma mensagem SEI declarativa, como a mensagem SEI de informação de representação de profundidade para camadas auxiliares de profundidade, especificando características da camada de imagem auxiliar. <ins> num_operating_points: Dá o número de pontos de operação que se aplicam às amostras às quais essa entrada de amostra se aplica. Op_idx: Dá o índice à lista de pontos de operação sinalizados na caixa ‘oinf’. </ins>
[00125] Esta divulgação propõe várias técnicas. Algumas destas técnicas podem ser aplicadas independentemente e algumas delas podem ser aplicadas em combinação.
[00126] As técnicas desta divulgação para gerar ou processar um arquivo podem ser realizadas pelo dispositivo de origem 12, dispositivo de destino 14 ou outro dispositivo. Por exemplo, um dispositivo pode receber dados de vídeo codificados do dispositivo de origem 12 e gerar um arquivo com base nos dados de vídeo codificados. Da mesma forma, um dispositivo pode receber e processar um arquivo. Este dispositivo pode prover dados de vídeo codificados do arquivo para o dispositivo de destino 14.
[00127] A figura 5 é um diagrama de blocos ilustrando um exemplo de codificador de vídeo 20. A figura 5 é provida para fins de explicação e não deve ser considerado como limitativo das técnicas como amplamente exemplificado e descrito nesta divulgação. Para fins de explicação, esta divulgação descreve o codificador de vídeo 20 no contexto da codificação de HEVC. Contudo, as técnicas desta divulgação podem ser aplicáveis a outros padrões ou métodos de codificação.
[00128] No exemplo da figura 5, o codificador de vídeo 20 inclui uma unidade de processamento de predição 100, memória de dados de vídeo 101, uma unidade de geração residual 102, uma unidade de processamento de transformada 104, uma unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de processamento de transformada inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 114, um buffer de imagem decodificada 116 e uma unidade de codificação de entropia 118. A unidade de processamento de predição 100 inclui uma unidade de processamento interpredição 120 e uma unidade de processamento de intrapredição 126. A unidade de processamento de interpredição 120 inclui uma unidade de estimativa de movimento e uma unidade de compensação de movimento (não mostrada). Em outros exemplos, o codificador de vídeo 20 pode incluir mais, menos ou diferentes componentes funcionais.
[00129] A memória de dados de vídeo 101 pode armazenar dados de vídeo a serem codificados pelos componentes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 101 podem ser obtidos, por exemplo, da fonte de vídeo 18. O buffer de imagem decodificada 116 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso na codificação de dados de vídeo pelo codificador de vídeo 20, por exemplo, nos modos de intra ou intercodificação. A memória de dados de vídeo 101 e buffer de imagem decodificada 116 podem ser formados por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 101 e o buffer de imagem decodificada 116 podem ser providos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 101 pode estar no chip com outros componentes do codificador de vídeo 20, ou fora do chip em relação a esses componentes.
[00130] O codificador de vídeo 20 recebe dados de vídeo. O codificador de vídeo 20 pode codificar cada CTU em uma fatia de uma imagem dos dados de vídeo. Cada uma das CTUs pode estar associada a blocos de árvores de codificação de luma (CTBs) de tamanho igual e CTBs correspondentes da imagem. Como parte da codificação de uma CTU, a unidade de processamento de predição 100 pode realizar o particionamento quad-tree para dividir os CTBs da CTU em blocos progressivamente menores. O bloco menor pode ser blocos de codificação de CUs. Por exemplo, a unidade de processamento de predição 100 pode particionar um CTB associado a uma CTU em quatro sub-blocos de tamanho igual, particionar um ou mais dos sub-blocos em quatro sub- sub-blocos de tamanho igual, e assim por diante.
[00131] O codificador de vídeo 20 pode codificar as CUs de uma CTU para gerar representações codificadas das CUs (isto é, CUs codificadas). Como parte da codificação de uma UC, a unidade de processamento de predição 100 pode particionar os blocos de codificação associados à CU entre uma ou mais PUs da CU. Assim, cada PU pode estar associada a um bloco de predição da luma e a blocos correspondentes de predição de corma. A unidade de processamento de interpredição 120 pode gerar dados preditivos para uma PU realizando interpredição em cada PU de uma CU. Os dados preditivos para a PU podem incluir blocos preditivos da PU e informações de movimento para a PU. Unidade de processamento de intrapredição 126 pode gerar dados preditivos para uma PU realizando intrapredição na PU. Os dados preditivos para a PU podem incluir blocos preditivos da PU e vários elementos da sintaxe. A unidade de processamento de intrapredição 126 pode realizar intrapredição em PUs em fatias I, fatias P e fatias B.
[00132] A unidade de processamento de predição 100 pode selecionar os dados preditivos para PUs de uma CU entre os dados preditivos gerados pela unidade de processamento de interpredição 120 para as PUs ou os dados preditivos gerados pela unidade de processamento de intrapredição 126 para as PUs. Em alguns exemplos, a unidade de processamento de predição 100 seleciona os dados preditivos para as PUs da CU com base nas métricas de taxa / distorção dos conjuntos de dados preditivos. Os blocos preditivos dos dados preditivos selecionados podem ser aqui referidos como os blocos preditivos selecionados. A unidade de geração residual 102 pode gerar, com base nos blocos de codificação para uma CU e os blocos preditivos selecionados para as PUs da CU, blocos residuais para a CU.
[00133] A unidade de processamento de transformada 104 pode realizar o particionamento quadtree para particionar os blocos residuais associados a uma CU para transformar blocos associados com TUs da CU. Uma TU pode estar associada a um bloco de transformada de luma e dois blocos de transformada de croma. Os tamanhos e posições dos blocos de transformada de luma e croma de TUs de uma CU podem ou não ser baseados nos tamanhos e posições dos blocos de predição das PUs da CU.
[00134] A unidade de processamento de transformada 104 pode gerar blocos de coeficiente de transformada para cada TU de uma CU aplicando uma ou mais transformadas nos blocos de transformada da TU. A unidade de processamento de transformada 104 pode aplicar várias transformadas a um bloco de transformada associado a uma TU. Por exemplo, a unidade de processamento de transformada 104 pode aplicar uma transformada de cosseno discreta (DCT), uma transformada direcional ou uma transformada conceitualmente semelhante a um bloco de transformada. Em alguns exemplos, a unidade de processamento de transformada 104 não aplica transformadas a um bloco de transformada. Em tais exemplos, o bloco de transformada pode ser tratado como um bloco de coeficiente de transformada.
[00135] A unidade de quantização 106 pode quantificar os coeficientes de transformada em um bloco de coeficiente. O processo de quantização pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes de transformada.
[00136] A unidade de quantização inversa 108 e a unidade de processamento de transformada inversa 110 podem aplicar a quantização inversa e transformadas inversas a um bloco de coeficiente, respectivamente, para reconstruir um bloco residual do bloco de coeficiente. A unidade de reconstrução 112 pode adicionar o bloco residual reconstruído a amostras correspondentes de um ou mais blocos preditivos gerados pela unidade de processamento de predição 100 para produzir um bloco de transformada reconstruído associado a uma TU. Ao reconstruir os blocos de transformada para cada TU de uma CU deste modo, o codificador de vídeo 20 pode reconstruir os blocos de codificação da CU.
[00137] A unidade de filtro 114 pode realizar uma ou mais operações de desbloqueio para reduzir artefatos de bloqueio nos blocos de codificação associados a uma CU. O buffer de imagem decodificada 116 pode armazenar os blocos de codificação reconstruídos após a unidade de filtro 114 realizar a uma ou mais operações de desbloqueio nos blocos de codificação reconstruídos. A unidade de processamento de interpredição 120 pode utilizar uma imagem de referência que contém os blocos de codificação reconstruídos para realizar a interpredição em PUs de outras imagens. Além disso, a unidade de processamento de intrapredição 126 pode usar blocos de codificação reconstruídos no buffer de imagem decodificada 116 para realizar intrapredição em outras PUs na mesma imagem que a CU.
[00138] A unidade de codificação de entropia 118 pode receber dados de outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação de entropia 118 pode receber blocos de coeficiente da unidade de quantização 106 e pode receber elementos de sintaxe da unidade de processamento de predição 100. A unidade de codificação de entropia 118 pode realizar uma ou mais operações de codificação de entropia nos dados para gerar dados codificados por entropia. Por exemplo, a unidade de codificação de entropia 118 pode realizar uma operação CABCA, uma operação de codificação de comprimento variável adaptativa de contexto (CAVLC), uma operação de codificação de comprimento variável a variável (V2V), uma operação de codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), uma operação de codificação de Entropia de Particionamento de Intervalo de Probabiliade (PIPE), uma operação de codificação Exponencial-Golomb ou outro tipo de operação de codificação de entropia nos dados. O codificador de vídeo 20 pode emitir um fluxo de bits que inclui dados codificados por entropia gerados pela unidade de codificação de entropia 118. Por exemplo, o fluxo de bits pode incluir dados que representam um RQT para uma CU.
[00139] Além disso, no exemplo da figura 5, uma unidade de processamento de arquivos 128 pode obter o fluxo de bits gerado pelo codificador de vídeo 20. A unidade de processamento de arquivos 128 pode ser implementada por um ou mais processadores de um dispositivo, tal como o dispositivo de origem 12, o dispositivo de geração de arquivos 34, um dispositivo de rede de fornecimento de conteúdo ou outro tipo de dispositivo. A unidade de processamento de arquivos 128 pode gerar um arquivo que armazena o fluxo de bits gerado pelo codificador de vídeo 20. O meio legível por computador 130 pode receber o arquivo gerado pela unidade de processamento de arquivos 128. Em alguns exemplos, o meio legível por computador 130 compreende um meio de armazenamento legível por computador, tal como uma memória, um disco óptico, um disco magnético ou outro tipo de meio de armazenamento não transitório a partir do qual um dispositivo de computação é capaz de ler dados. Em alguns exemplos onde o meio legível por computador 130 compreende um meio de armazenamento legível por computador, o meio de armazenamento legível por computador pode fazer parte de um dispositivo, tais como dispositivo de origem 12, dispositivo de geração de arquivo 34, um dispositivo de rede de entrega de conteúdo ou outro tipo de dispositivo. Em alguns exemplos, o meio legível por computador 130 compreende um meio de comunicação legível por computador, tal como uma fibra óptica, um cabo de comunicação, uma onda eletromagnética ou outros tipos de mídia a partir dos quais um dispositivo de computação é capaz de ler dados.
[00140] De acordo com uma técnica desta divulgação, a unidade de processamento de arquivos 128 pode gerar uma faixa de referência de ponto de operação no arquivo. Como parte da geração da faixa de referência de ponto de operação, a unidade de processamento de arquivos 128 pode sinalizar, na faixa de referência de ponto de operação, um grupo de amostras de informação de ponto de operação que descreve um ponto de operação disponível para um fluxo de bits no arquivo. Além disso, como parte da geração do arquivo, a unidade de processamento de arquivos 128 pode gerar uma ou mais faixas adicionais no arquivo. Neste exemplo, nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais. Além disso, com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a unidade de processamento de arquivo 128 pode considerar a respectiva amostra na respectiva parte de faixa adicional do grupo de amostra de informação de ponto de operação. Além disso, com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a unidade de processamento de arquivo 128 pode considerar a respectiva amostra na respectiva parte de faixa adicional de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional.
[00141] A figura 6 é um diagrama de blocos ilustrando um exemplo de decodificador de vídeo 30. A figura 6 é provida para fins de explicação e não limita as técnicas como amplamente exemplificadas e descritas nesta divulgação. Para fins de explicação, esta divulgação descreve o decodificador de vídeo 30 no contexto da codificação de HEVC. Contudo, as técnicas desta divulgação podem ser aplicáveis a outros padrões ou métodos de codificação.
[00142] No exemplo da figura 6, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 150, memória de dados de vídeo 151, uma unidade de processamento de predição 152, uma unidade de quantização inversa 154, uma unidade de processamento de transformada inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 160 e um buffer de imagem decodificada 162. A unidade de processamento de predição 152 inclui uma unidade de compensação de movimento 164 e uma unidade de processamento de intrapredição 166. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos ou diferentes componentes funcionais.
[00143] A memória de dados de vídeo 151 pode armazenar dados de vídeo, tal como um fluxo de bits de vídeo codificado, a ser decodificado pelos componentes do decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 151 podem ser obtidos, por exemplo, a partir do canal 16, por exemplo, a partir de uma fonte de vídeo local, tal como uma câmera, através de comunicação de dados de vídeo com ou sem fio ou acessando mídia de armazenamento de dados físicos. A memória de dados de vídeo 151 pode formar um buffer de imagem codificada (CPB) que armazena dados de vídeo codificados a partir de um fluxo de bits de vídeo codificado. O buffer de imagem decodificada 162 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso na decodificação de dados de vídeo pelo decodificador de vídeo 30, por exemplo, em modos intra ou intercodificação. A memória de dados de vídeo 151 e o buffer de imagem decodificada 162 podem ser formados por qualquer um de uma variedade de dispositivos de memória, tais como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM síncrona (SDRAM), RAM magnetorresistive (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 151 e o buffer de imagem decodificada 162 podem ser providos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 151 pode estar no chip com outros componentes do decodificador de vídeo 30, ou fora do chip em relação a esses componentes.
[00144] A memória de dados de vídeo 151 recebe e armazena dados de vídeo codificados (por exemplo, unidades NAL) de um fluxo de bits. A unidade de decodificação de entropia 150 pode receber dados de vídeo codificados (por exemplo, unidades NAL) do CPB e analisar as unidades NAL para obter elementos de sintaxe. A unidade de decodificação de entropia 150 pode decodificar por entropia elementos de sintaxe codificados por entropia nas unidades NAL. Unidade de processamento de predição 152, unidade de quantização inversa 154, unidade de processamento de transformada inversa 156, unidade de reconstrução 158 e unidade de filtro 160 podem gerar dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits. A unidade de decodificação de entropia 150 pode realizar um processo geralmente recíproco ao da unidade de codificação de entropia 118.
[00145] Além de obter elementos de sintaxe a partir do fluxo de bits, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em uma CU não particionada. Para realizar a operação de reconstrução em uma CU, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Ao realizar a operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir blocos residuais da CU.
[00146] Como parte da realização de uma operação de reconstrução em uma UT de uma CU, a unidade de quantização inversa 154 pode quantizar inversamente, isto é dequantizar, blocos de coeficiente associados com a TU. Após a unidade de quantização inversa 154 quantizar inversamente um bloco de coeficientes, a unidade de processamento de transformada inversa 156 pode aplicar uma ou mais transformadas inversas ao bloco de coeficiente para gerar um bloco residual associado à TU. Por exemplo, a unidade de processamento de transformada inversa 156 pode aplicar uma DCT inversa, uma transformada inversa inteira, uma transformada inversa de Karhunen-Loeve (KLT), uma transformada rotacional inversa, uma transformada direcional inversa, ou outra transformada inversa ao bloco de coeficiente.
[00147] Se uma PU é codificada usando intrapredição, unidade de processamento de intrapredição 166 pode realizar intrapredição para gerar blocos preditivos da PU. Unidade de processamento de intrapredição 166 pode usar um modo de intrapredição para gerar os blocos preditivos da PU com base em amostras de blocos espacialmente vizinhos. Unidade de processamento de intrapredição 166 pode determinar o modo de intrapredição para a PU com base em um ou mais elementos de sintaxe obtidos a partir do fluxo de bits.
[00148] Se uma PU é codificada utilizando interpredição, a unidade de decodificação de entropia 150 pode determinar informação de movimento para a PU. Unidade de compensação de movimento 164 pode determinar, com base na informação de movimento da PU, um ou mais blocos de referência. Unidade de compensação de movimento 164 pode gerar, com base em um ou mais blocos de referência, blocos preditivos (por exemplo, blocos preditivos de luma, Cb e Cr) para a PU.
[00149] A unidade de reconstrução 158 pode usar blocos de transformada (por exemplo, blocos de transformada de luma, Cb e Cr) para TUs de uma CU e os blocos preditivos (por exemplo, blocos de luma, Cb e Cr) das PUs da CU, ou seja, dados de intrapredição ou dados de interpredição, conforme aplicável, para reconstruir os blocos de codificação (por exemplo, blocos de codificação de luma, Cb e Cr) para a CU. Por exemplo, a unidade de reconstrução 158 pode adicionar amostras dos blocos de transformada (por exemplo, blocos de transformada de luma, Cb e Cr) a amostras correspondentes dos blocos preditivos (por exemplo, blocos preditivos de luma, Cb e Cr) para reconstruir os blocos de codificação (por exemplo, blocos de codificação de luma, Cb e Cr) da CU.
[00150] A unidade de filtro 160 pode realizar uma operação de desbloqueio para reduzir os artefatos de bloqueio associados aos blocos de codificação da CU. O decodificador de vídeo 30 pode armazenar os blocos de codificação da CU no buffer de imagem decodificada 162. O buffer de imagem decodificada 162 pode prover imagens de referência para compensação de movimento subsequente, intrapredição e apresentação em um dispositivo de exibição, tal como o dispositivo de exibição 32 da figura 1. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos no buffer de imagem decodificada 162, operações de intrapredição ou interpredição para PUs de outras CUs.
[00151] No exemplo da figura 6, um meio legível por computador 148 compreende um meio de armazenamento legível por computador, tal como uma memória, disco óptico, disco magnético, ou outro tipo de meio de armazenamento não transitório a partir do qual um dispositivo de computação é capaz de ler dados. Em alguns exemplos onde o meio legível por computador 148 compreende um meio de armazenamento legível por computador, o meio de armazenamento legível por computador pode fazer parte de um dispositivo, tais como dispositivo de origem 12, dispositivo de geração de arquivo 34, um dispositivo de rede de entrega de conteúdo ou outro tipo de dispositivo. Em alguns exemplos, o meio legível por computador 148 compreende um meio de comunicação legível por computador, tal como uma fibra ótica, um cabo de comunicação, uma onda eletromagnética ou outros tipos de mídia dos quais um dispositivo de computação é capaz de ler dados.
[00152] Além disso, no exemplo da figura 6, uma unidade de processamento de arquivos 149 recebe um arquivo ou porções de um arquivo de um meio legível por computador 148. A unidade de processamento de arquivos 149 pode ser implementada por um ou mais processadores de um dispositivo, tal como o dispositivo de destino 14, um MANE, um dispositivo de rede de entrega de conteúdo ou outro tipo de dispositivo.
[00153] A unidade de processamento de arquivos 149 pode processar o arquivo. Por exemplo, a unidade de processamento de arquivos 149 pode obter unidades NAL a partir do arquivo. No exemplo da figura 6, o fluxo de bits de vídeo codificado recebido pelo decodificador de vídeo 30 pode compreender unidades NAL obtidas a partir do arquivo.
[00154] De acordo com uma técnica desta divulgação, a unidade de processamento de arquivos 149 pode obter uma faixa de referência de ponto de operação no arquivo. Um ponto de operação disponível para um fluxo de bits no arquivo é descrito no arquivo usando um grupo de amostra de informação de ponto de operação que é sinalizado na faixa de referência de ponto de operação. Além disso, a unidade de processamento de arquivos 149 pode obter uma ou mais faixas adicionais no arquivo. Nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais. Além disso, para cada respectiva amostra de cada respectiva faixa adicional de uma ou mais faixas adicionais, a unidade de processamento de arquivos 149 pode determinar se deve considerar a parte de respectiva amostra do grupo de amostras de informação de ponto de operação. Com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a unidade de processamento de arquivo 149 pode considerar a respectiva amostra na respectiva parte de faixa adicional do grupo de amostra de informação de ponto de operação. Com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a unidade de processamento de arquivo 149 pode considerar a respectiva amostra na respectiva parte de faixa adicional de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional. Além disso, a unidade de processamento de arquivos 149 pode realizar um processo de extração de subfluxo de bits que extrai o ponto de operação do fluxo de bits.
[00155] A figura 7 é um diagrama de blocos que ilustra exemplo de estruturas de um arquivo 300, de acordo com uma ou mais técnicas desta divulgação. O arquivo 300 pode ser gerado e processado por vários dispositivos, tais como o dispositivo de origem 12 (figura 1), o dispositivo de geração de arquivos 34 (figura 1), o dispositivo de destino 14 (figura 1), unidade de processamento de arquivos 128 (figura 5), um MANE, um dispositivo de rede de entrega de conteúdo ou outros tipos de dispositivos ou unidades. No exemplo da figura 7, o arquivo 300 inclui uma caixa de filmes 302 e uma pluralidade de caixas de Dados de Mídia 304. Embora ilustrado no exemplo da figura 7 como estando no mesmo arquivo, em outros exemplos, a caixa de Filme 302 e as caixas de Dados de Mídia 304 podem estar em arquivos separados. Como indicado acima, uma caixa pode ser um bloco de construção orientado a objetos definido por um identificador de tipo exclusivo e comprimento. Por exemplo, uma caixa pode ser a estrutura de sintaxe elementar em ISOBMFF, incluindo um tipo de caixa codificada de quatro caracteres, uma contagem de bytes da caixa e uma carga útil.
[00156] A caixa de Filmes 302 pode conter metadados para faixas do arquivo 300. Cada faixa do arquivo 300 pode compreender um fluxo contínuo de dados de mídia. Cada uma das caixas de Dados de Mídia 304 pode incluir uma ou mais amostras 305. Cada uma das amostras 305 pode compreender uma unidade de acesso de áudio ou vídeo. Como descrito em outro local desta descrição, cada unidade de acesso pode compreender múltiplas imagens codificadas em codificação multivistas (por exemplo, MV-HEVC e 3D-HEVC) e codificação de vídeo escalável (por exemplo, SHVC). Por exemplo, uma unidade de acesso pode incluir uma ou mais imagens codificadas para cada camada.
[00157] Além disso, no exemplo da figura 7, a caixa de Filme 302 inclui uma caixa de Faixa 306. A caixa de Faixa 306 pode incluir metadados para uma faixa de arquivo 300. Em outros exemplos, a caixa de Filme 302 pode incluir várias caixas de Faixa para diferentes faixas do arquivo 300. Caixa de Faixa 306 inclui uma caixa de mídia 307. A caixa de Mídia 307 pode conter todos os objetos que declaram informações sobre os dados de mídia dentro da faixa. A caixa de Mídia 307 inclui uma caixa de informações de mídia 308. A caixa de informações de mídia 308 pode conter todos os objetos que declaram informação de característica d mídia da faixa. Caixa de informações de mídia 308 inclui uma caixa SampleDescription 309. A caixa SampleDescription 309 pode especificar metadados específicos de amostra. A caixa SampleDescription 309 pode incluir zero ou mais caixas SampleToGroup e zero ou mais caixas SampleGroupDescription.
[00158] No exemplo da figura 7, a caixa da Tabela de Amostra 309 pode incluir uma Caixa de Descrição de Amostra 310. Além disso, caixa SampleDescription 309 pode incluir zero ou mais caixas SampleToGroup e zero ou mais caixas SampleGroupDescription. Particularmente, no exemplo da figura 7, a caixa Tabela de Amostra 309 inclui uma caixa SampleToGroup 311 e uma caixa SampleGroupDescription 312. Em outros exemplos, a caixa SampleTable 309 pode incluir outras caixas além da caixa de SampleDescription 310, da caixa de SampleToGroup 311 e a caixa SampleGroupDescription 312 e/ou pode incluir várias caixas SampleToGroup e caixas SampleGroupDescription. A caixa SampleToGroup 311 pode mapear amostras (por exemplo, aquelas particulares de amostras 305) para um grupo de amostras. A caixa SampleGroupDescription 312 pode especificar uma propriedade compartilhada pelas amostras no grupo de amostras (ou seja, grupo de amostras). A caixa SampleDescription 310 compreende um conjunto de entradas de amostra 315 para a faixa. Uma amostra (por exemplo, uma das amostras 305) pode incluir um elemento de sintaxe que indica uma das entradas de amostra 315 como sendo aplicável à amostra.
[00159] Além disso, no exemplo da figura 7, a caixa SampleToGroup 311 inclui um elemento de sintaxe grouping_type 313 (isto é, um elemento de sintaxe grouping_type), um elemento de sintaxe entry_count 316 (isto é, um elemento de sintaxe entry_count) e uma ou mais entradas de grupo de amostra 318. O elemento de sintaxe grouping_type 313 é um número inteiro que identifica o tipo (isto é critério usado para formar os grupos de amostra) do agrupamento de amostra e o vincula à sua tabela de descrição de grupo de amostra com o mesmo valor para o tipo de agrupamento. Em alguns exemplos, no máximo uma ocorrência da caixa SampleToGroup 311 com o mesmo valor para o elemento de sintaxe grouping_type 313 deve existir para uma faixa.
[00160] O elemento de sintaxe entry_count 316 indica o número de entradas de grupo de amostra 318. Cada uma das entradas de grupo de amostra 318 inclui um elemento de sintaxe sample_count 324 (isto é, um elemento de sintaxe de contagem de amostra) e um elemento de sintaxe group_description_index 326 (isto é, um elemento de sintaxe de descrição de grupo). O elemento de sintaxe sample_count 324 pode indicar um número de amostras associadas à entrada de grupo de amostra contendo o elemento de sintaxe sample_count 324. O elemento de sintaxe group_description_index 326 pode identificar, dentro de uma caixa SampleGroupDescription (por exemplo, caixa SampleGroupDescription 312), uma entrada de descrição de grupo que contém uma descrição das amostras associadas à entrada de grupo de amostra contendo o elemento de sintaxe group_description_index 326. O elemento de sintaxe group_description_index 326 pode variar de 1 ao número de entradas de grupo de amostra na caixa SampleGroupDescription 312. O elemento de sintaxe group_description_index 326 com o valor 0 indica que a amostra não é um membro de nenhum grupo do tipo indicado pelo elemento de sintaxe grouping_type 313.
[00161] Adicionalmente, no exemplo da figura 7, a caixa SampleGroupDescription 312 inclui um elemento de sintaxe grouping_type 328, um elemento de sintaxe entry_count 330 e uma ou mais entradas de descrição de grupo 332. O elemento de sintaxe grouping_type 328 é um inteiro que identifica uma caixa SampleToGroup (por exemplo, caixa SampleToGroup 311) associada à caixa SampleGroupDescription 312. O elemento de sintaxe entry_count 330 indica o número de entradas de descrição de grupo 332 na caixa SampleGroupDescription. Cada uma das entradas de descrição de grupo 332 pode incluir uma descrição de um grupo de amostra. Por exemplo, as entradas de descrição de grupo 332 podem incluir uma entrada de descrição de grupo de amostra para um grupo de amostra ‘oinf’.
[00162] De acordo com a primeira técnica desta divulgação, com base em uma faixa de referência de ponto de operação do arquivo 300 que contém uma amostra que é posicionada temporalmente com uma respectiva amostra em uma faixa adicional de arquivo 300, um arquivo de interpretação de dispositivo 300 pode considerar a respectiva amostra em a respectiva faixa adicional para fazer parte de um grupo de amostras de informação de ponto de operação descrito por uma entrada de descrição de grupo de amostra entre entradas de descrição de grupo 332 na caixa SampleGroupDescription 312. Além disso, com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, o dispositivo pode considerar a respectiva amostra na respectiva parte de faixa adicional de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional.
[00163] A figura 8 é um diagrama conceitual que ilustra exemplo de estruturas de um arquivo 450, de acordo com uma ou mais técnicas desta divulgação. O arquivo 450 pode ser gerado e processado por vários dispositivos, tais como dispositivo de origem 12 (figura 1), dispositivo de geração de arquivos 34 (figura 1), dispositivo de destino 14 (figura 1), unidade de processamento de arquivos 149 (figura 6), um MANE, um dispositivo de rede de entrega de conteúdo ou outros tipos de dispositivos ou unidades. No exemplo da figura 8, o arquivo 450 inclui uma ou mais caixas de Fragmentos de Filme 452 e uma pluralidade de caixas de dados de mídia 454. Embora ilustrado no exemplo da figura 8 como estando no mesmo arquivo, em outros exemplos, as caixas de Fragmentos de Filme 452 e as caixas de Dados de Mídia 454 podem estar em arquivos separados. Cada uma das caixas de Dados de Mídia 454 pode incluir uma ou mais amostras 456. Cada uma das caixas do Fragmento de Filme corresponde a um fragmento de filme. Cada fragmento de filme pode compreender um conjunto de fragmentos de faixa. Pode haver zero ou mais fragmentos de faixa por faixa.
[00164] No exemplo da figura 8, uma caixa de Fragmento de Filme 452 provê informação relativa a um fragmento de filme correspondente. Tais informações teriam sido anteriormente em uma caixa de Filme, tal como a caixa de Filme 302. A caixa de Fragmento de filme 452 pode incluir uma caixa de Fragmento de Faixa 458. A caixa de Fragmento de Faixa 458 corresponde a um fragmento de faixa e provê informação sobre o fragmento de faixa.
[00165] Por exemplo, no exemplo da figura 8, a caixa de Fragmento de Faixa 458 pode incluir uma ou mais caixas SampleToGroup 462 e uma ou mais caixas SampleGroupDescription 464 que contenham informação sobre o fragmento de faixa que corresponde a caixa de Fragmento de Faixa 458.
[00166] Além disso, no exemplo da figura 8, a caixa Fragmento de faixa 458 pode incluir uma caixa de descrição de amostra 460, zero ou mais caixas SampleToGroup e zero ou mais caixas SampleGroupDescription. No exemplo da figura 8, a caixa Fragmento de faixa 458 cont uma caixa SampleToGroup 462 e uma caixa SampleGroupDescription 464 que cont informao sobre o fragmento de faixa correspondente caixa Rastrear fragmento 458.
[00167] A caixa SampleDescription 460 compreende um conjunto de entradas de amostra 466 para o fragmento de faixa. Cada entrada de respectiva amostra das entradas de amostra 466 aplica-se a uma ou mais amostras da faixa. No exemplo da figura 8, o conjunto de entradas de amostra 466 inclui uma entrada de amostra 466A.
[00168] A caixa SampleToGroup 462 inclui um elemento de sintaxe grouping_type 470 (isto é, um elemento de sintaxe de tipo de grupo), um elemento de sintaxe entry_count 474 (isto é, um elemento de sintaxe contagem de entrada) e uma ou mais entradas de grupo de amostra 476. Cada uma das entradas de grupo de amostra 476 inclui um elemento de sintaxe sample_count 482 (isto é, um elemento de sintaxe de contagem de amostra) e um elemento de sintaxe group_description_index 484 (isto é, um elemento de sintaxe índice de descrição de grupo). O elemento de sintaxe grouping_type 470, o elemento de sintaxe entry_count 474, o elemento de sintaxe sample_count 482 e group_description_index 484 podem ter a mesma semântica que os elementos de sintaxe correspondentes descritos em relação ao exemplo da figura 7
[00169] Adicionalmente, no exemplo da figura 8, a caixa SampleGroupDescription 464 inclui um elemento de sintaxe grouping_type 486, um elemento de sintaxe entry_count 488 e uma ou mais entradas de descrição de grupo 490. O elemento de sintaxe grouping_type 486, o elemento de sintaxe entry_count 488 e as entradas de descrição de grupo 490 podem ter a mesma semântica que os elementos de sintaxe correspondentes e as estruturas descritas em relação ao exemplo da figura 7. Por exemplo, as entradas de descrição de grupo 332 podem incluir uma entrada de descrição de grupo de amostra para um grupo de amostra ‘oinf’.
[00170] De acordo com a primeira técnica desta divulgação, com base em uma faixa de referência de ponto de operação do arquivo 450 contendo uma amostra que é temporalmente colocalizada com uma respectiva amostra em uma faixa adicional do arquivo 450, um arquivo de interpretação de dispositivo 450 pode considerar a respectiva amostra na respectiva faixa adicional para fazer parte de um grupo de amostras de informação de pontos de operação descrito por uma entrada de descrição de grupo de amostra entre as entradas de descrição de grupo 490 na caixa SampleGroupDescription 464. Além disso, com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, o dispositivo pode considerar a respectiva amostra na respectiva parte de faixa adicional de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional.
[00171] A figura 9 é um diagrama de blocos que ilustra exemplo de estruturas de um arquivo 500, incluindo uma entrada de amostra fictícia, de acordo com uma ou mais técnicas desta divulgação. O arquivo 500 pode ser gerado e processado por vários dispositivos, tais como dispositivo de origem 12 (figura 1), dispositivo de geração de arquivos 34 (figura 1), dispositivo de destino 14 (figura 1), unidade de processamento de arquivos 128 (figura 5), um MANE, um dispositivo de rede de entrega de conteúdo ou outros tipos de dispositivos ou unidades. No exemplo da figura 9, o arquivo 500 pode incluir uma caixa de filme 502, uma caixa de dados de mídia 504 contendo amostras 505, uma caixa de faixa 506, uma caixa de mídia 507, uma caixa de informações de mídia 508 e uma caixa de tabela de amostra 509 contendo uma caixa de descrição de amostra 510, caixa SampleToGroup 511 e uma caixa SampleGroupDescription 512. Além disso, no exemplo da figura 9, a caixa de descrição de amostra 510 pode incluir entradas de amostras 515A a 515N (coletivamente, "entradas de amostras 515"). Estas caixas podem ter estruturas e semânticas semelhantes às caixas correspondentes descritas acima em relação ao exemplo da figura 7. Contudo, de acordo com a quarta técnica exemplar desta descrição, a caixa de descrição de amostra 510 pode incluir uma entrada de amostra fictícia 518. A entrada de amostra fictícia 518 não é aplicável a quaisquer amostras da faixa correspondente à caixa de faixas 506, mas pode conter conjuntos de parâmetros que são utilizados apenas por outras faixas contendo camadas que dependem das camadas na faixa correspondente à caixa de faixas 506. Por exemplo, a entrada de amostra fictícia 518 pode incluir informação descrevendo pontos de operação. Um exemplo semelhante ao provido na figura 8 pode ocorrer onde a caixa de descrição de amostra 460 inclui uma entrada de amostra fictícia.
[00172] A figura 10 é um diagrama de blocos ilustrando exemplo de estruturas de um arquivo 550 no qual as entradas de amostra incluem índices de ponto de operação, de acordo com uma ou mais técnicas desta divulgação. O arquivo 550 pode ser gerado e processado por vários dispositivos, tais como dispositivo de origem 12 (figura 1), dispositivo de geração de arquivos 34 (figura 1), dispositivo de destino 14 (figura 1), unidade de processamento de arquivos 128 (figura 5), um MANE, um dispositivo de rede de entrega de conteúdo ou outros tipos de dispositivos ou unidades. No exemplo da figura 10, o arquivo 550 pode incluir uma caixa de filme 552, uma caixa de dados de mídia 554 contendo amostras 555, uma caixa de faixa 556, uma caixa de mídia 557, uma caixa de informações de mídia 558 e uma caixa de tabela de amostra 559 contendo uma caixa de descrição de amostra 560, SampleToGroup box 561 e uma caixa SampleGroupDescription 562. Além disso, no exemplo da figura 10, a caixa de descrição de amostra 560 pode incluir entradas de amostra 555A a 555N (coletivamente, "entradas de amostra 555"). Estas caixas podem ter estruturas e semânticas semelhantes às caixas correspondentes descritas acima em relação ao exemplo da figura 7.
[00173] Além disso, em alguns exemplos, as entradas de amostra 565 podem incluir instâncias de uma classe LHEVCDecoderConfigurationRecord. Por exemplo, no exemplo da figura 10, a entrada de amostra 565A pode incluir um LHEVCDecoderConfigurationRecord 568. De acordo com o quinto exemplo de técnica desta descrição descrita acima, LHEVCDecoderConfigurationRecord 568 pode incluir um ou mais elementos de sintaxe de índice de ponto de operação 570 (por exemplo, op_idx). Cada respectivo elemento de sintaxe de índice de ponto de operação provê um índice em uma lista de pontos de operação sinalizados em uma caixa de ‘oinf’. Assim, um dispositivo pode ser capaz de determinar, com base na entrada de amostra de uma amostra, pontos de operação de imagens codificadas contidas pela amostra. Um exemplo semelhante ao provido na figura 8 pode ocorrer onde as entradas de amostra 446 incluem índices de ponto de operação.
[00174] A figura 11 é um fluxograma que ilustra um exemplo de operação de um dispositivo para processamento de um arquivo, de acordo com uma técnica desta divulgação. Os fluxogramas desta divulgação são providos como exemplos. Em outros exemplos, ações diferentes podem ser executadas ou ações podem ser executadas em ordens diferentes, ou em paralelo. O exemplo da figura 11 pode ser realizado por vários tipos de dispositivos, tais como o dispositivo de origem 12 (figura 1), dispositivo gerador de arquivos 34 (figura 1), unidade de processamento de arquivos 128 (figura 5), um servidor de arquivos, um dispositivo de fluxo, MANE, ou outro tipo de dispositivo ou unidade.
[00175] No exemplo da figura 11, o dispositivo gera uma faixa de referência de ponto de operação no arquivo (600). A geração de uma faixa pode incluir a geração de uma caixa de faixa que inclua dados indicando as amostras que pertencem à faixa. Como parte da geração da faixa de referência de ponto de operação, o dispositivo pode sinalizar, na faixa de referência de ponto de operação, um grupo de amostra de informação de ponto de operação que descreve um ponto de operação disponível para um fluxo de bits no arquivo (602). Em alguns exemplos, o dispositivo pode codificar dados de vídeo para gerar o fluxo de bits. Adicionalmente, no exemplo da figura 11, o dispositivo pode gerar uma ou mais faixas adicionais no arquivo (604). No exemplo da figura 11, nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais. Além disso, com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação. Com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional.
[00176] Além disso, como mostrado no exemplo da figura 11, em alguns exemplos, como parte da sinalização do grupo de amostras de informação de ponto de operação, o dispositivo pode gerar, no arquivo, uma caixa de descrição de grupo de amostra (606), tal como caixa SampleGroupDescription 312 ou caixa SampleGroupDescription 464. A caixa de descrição de grupo de amostra inclui uma entrada de descrição de grupo de amostra (por exemplo, uma das entradas de descrição de grupo 332 ou 490) especificando um conjunto de camadas de saída para o ponto de operação, um identificador temporal máximo para o ponto de operação e sinalização de perfil, nível e camada para o ponto de operação. Além disso, o dispositivo pode gerar, no arquivo, uma caixa de amostra para grupo (por exemplo, caixa SampleToGroup 311, 462) que especifica um conjunto de amostras no grupo de amostra de informação de ponto de operação e especifica um índice da entrada de descrição de grupo de amostra na caixa de descrição de grupo de amostra (608).
[00177] A figura 12 é um fluxograma que ilustra um exemplo de operação de um dispositivo para processar um arquivo, de acordo com uma técnica desta divulgação. O exemplo da figura 12 pode ser realizado por vários tipos de dispositivos, como o dispositivo de destino 14, um dispositivo de geração de arquivos, um servidor de arquivos, um dispositivo de streaming, um MANE ou outro tipo de dispositivo.
[00178] No exemplo da figura 12, o dispositivo pode obter uma faixa de referência de ponto de operação no arquivo (650). Um ponto de operação disponível para um fluxo de bits no arquivo é descrito no arquivo usando um grupo de amostra de informação de ponto de operação que é sinalizado na faixa de referência de ponto de operação. Além disso, no exemplo da figura 12, o dispositivo pode obter uma ou mais faixas adicionais no arquivo (652). Nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais.
[00179] Para cada respectiva amostra de cada respectiva faixa adicional de uma ou mais faixas adicionais, o dispositivo pode determinar se deve considerar a respectiva parte de amostra do grupo de amostras de informação de ponto de operação (654). Com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação. Com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação da última amostra na faixa de referência de ponto de operação antes da respectiva amostra da respectiva faixa adicional.
[00180] Além disso, no exemplo da figura 12, o dispositivo pode realizar um processo de extração de subfluxo de bits que extrai o ponto de operação do fluxo de bits (656). Em alguns exemplos, o dispositivo pode transmitir amostras contendo imagens codificadas do ponto de operação extraído sem transmitir amostras do fluxo de bits que não contém imagens codificadas do ponto de operação extraído. Em alguns exemplos, o dispositivo pode gerar um novo arquivo que armazena amostras contendo imagens codificadas do ponto de operação extraído sem armazenar no arquivo amostra contendo imagens codificadas do ponto de operação extraído. Em alguns exemplos, o dispositivo pode decodificar dados de vídeo do ponto de operação. Por exemplo, o dispositivo pode decodificar imagens codificadas do ponto de operação usando um codec de vídeo, como L-HEVC.
[00181] Além disso, como ilustrado no exemplo da figura 12, em alguns exemplos, como parte da obtenção da faixa de referência de ponto de operação, o dispositivo pode obter, a partir do arquivo, uma caixa de descrição de grupo de amostras (658), tal como caixa de SampleGroupDescription 312 ou caixa de SampleGroupDescription 464. A caixa de descrição de grupo de amostra inclui uma entrada de descrição de grupo de amostra (por exemplo, uma das entradas de descrição de grupo 332 ou 490) especificando um conjunto de camadas de saída para o ponto de operação, um identificador temporal máximo para o ponto de operação e sinalização de perfil, nível e camada para o ponto de operação. Além disso, o dispositivo pode obter, do arquivo, uma caixa de amostra para grupo (por exemplo, caixa SampleToGroup 311, 462) que especifica um conjunto de amostras no grupo de amostra de informação de ponto de operação e especifica um índice da entrada de descrição de grupo de amostra na caixa de descrição de grupo de amostra (660).
[00182] Deve ser entendido que todas as técnicas aqui descritas podem ser usadas individualmente ou em combinação. Deve ser reconhecido que, dependendo do exemplo, certos atos ou eventos de qualquer uma das técnicas aqui descritas podem ser realizados em uma sequência diferente, podem ser adicionados, fundidos ou deixados de lado (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, atos ou eventos podem ser realizados concorrentemente, por exemplo, através de processamento multissequenciado, processamento de interrupção, ou múltiplos processadores, em vez de sequencialmente. Além disso, enquanto certos aspectos desta divulgação são descritos como sendo realizados por um único módulo ou unidade para fins de clareza, deve ser entendido que as técnicas desta divulgação podem ser realizadas por uma combinação de unidades ou módulos associados a um codificador de vídeo. Os circuitos de processamento podem ser acoplados a um meio de armazenamento de dados de várias maneiras. Por exemplo, um circuito de processamento pode ser acoplado a um meio de armazenamento de dados através de uma interconexão de dispositivo interno, uma conexão de rede com ou sem fio ou outro meio de comunicação.
[00183] Certos aspectos desta divulgação foram descritos em relação ao padrão HEVC para fins de ilustração. No entanto, as técnicas descritas nesta divulgação podem ser úteis para outros processos de codificação de vídeo, incluindo outros processos de codificação de vídeo padrão ou proprietários ainda não desenvolvidos.
[00184] O codificador de vídeo 20 (figuras 1 e 5) e/ou o decodificador de vídeo 30 (figuras 1 e 6) podem ser geralmente referidos como codificadores de vídeo. Da mesma forma, a codificação de vídeo pode se referir à codificação de vídeo ou decodificação de vídeo, conforme aplicável.
[00185] Embora combinações particulares de vários aspectos das técnicas sejam descritas acima, estas combinações são providas meramente para ilustrar exemplos das técnicas descritas nesta divulgação. Consequentemente, as técnicas desta divulgação não devem ser limitadas a estas combinações exemplares e podem abranger qualquer combinação concebível dos vários aspectos das técnicas descritas nesta divulgação.
[00186] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas, como uma ou mais instruções ou código, um meio legível por computador e executado por uma unidade de processamento com base em hardware. A mídia legível por computador pode incluir mídia de armazenamento legível por computador, que corresponde a um meio tangível, como mídia de armazenamento de dados ou mídia de comunicação, incluindo qualquer meio que facilite a transferência de um programa de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, os meios legíveis por computador podem geralmente corresponder a (1) suportes de memória tangíveis, legíveis por computador, que não sejam transitórios ou (2) a meios de comunicação, tais como sinais ou ondas de portadoras. A mídia de armazenamento de dados pode ser qualquer mídia disponível que possa ser acessada por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[00187] A título de exemplo, e não limitação, esses meios de armazenamento legíveis por computador podem compreender memória RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que pode ser usado para armazenar o código do programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é apropriadamente denominada mídia legível por computador. Por exemplo, se instruções forem transmitidas de um site, servidor ou outra origem remota usando um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio tais como infravermelho, rádio e micro-ondas, o cabo coaxial, cabo de fibra ótica, par trançado, DSL ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas, estão incluídos na definição de mídia. Deve ser entendido, no entanto, que meios de armazenamento de dados legíveis por computador e meios de armazenamento de dados não incluem conexões, ondas de portadoras, sinais ou outras mídias transientes, mas são direcionados para mídias de armazenamento não transientes e tangíveis. Disco e disquete, como usado aqui, inclui disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu-ray, em que disquetes geralmente reproduzem dados magneticamente, enquanto discos reproduzem dados opticamente com lasers. Combinações dos itens acima também devem ser incluídas no escopo de mídia legível por computador.
[00188] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores de finalidade geral, circuitos integrados de aplicação específica (ASICs), arranjos de lógicas programáveis em campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo "processador", como aqui utilizado, pode referir-se a qualquer uma das estruturas anteriores ou a qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser provida dentro de módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[00189] As técnicas desta divulgação podem ser implementadas em uma grande variedade de dispositivos ou aparelhos, incluindo um telefone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta divulgação para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas divulgadas, mas não necessariamente requerem realização por diferentes unidades de hardware. Pelo contrário, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou providas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequados.
[00190] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das seguintes reivindicações.

Claims (15)

1. Método de processamento de um arquivo para armazenar fluxos de bits de múltiplas camadas de dados de vídeo codificados, o método caracterizado pelo fato de que compreende: obter uma faixa de referência de ponto de operação no arquivo, em que um ponto de operação disponível para um fluxo de bits no arquivo é descrito no arquivo usando um grupo de amostra de informação de ponto de operação que é sinalizado na faixa de referência de ponto de operação; obter uma ou mais faixas adicionais no arquivo, em que nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais; para cada respectiva amostra de cada respectiva faixa adicional dentre a uma ou mais faixas adicionais, determinar se deve considerar a respectiva amostra como uma parte do grupo de amostra de informação de ponto de operação, em que: baseado na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada, de modo que a amostra é alinhada em tempo com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação, e baseado na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada, de modo que não existe uma amostra que está alinhada em tempo com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação na posição temporalmente colocalizada da respectiva amostra da respectiva faixa adicional; e executar um processo de extração de subfluxo de bits que extrai o ponto de operação a partir do fluxo de bits.
2. Método de acordo com a reivindicação 1, caracterizado pelo fato de que obter a faixa de referência de ponto de operação compreende: obter, a partir do arquivo, uma caixa de descrição de grupo de amostra, em que a caixa de descrição de grupo de amostra inclui uma entrada de descrição de grupo de amostra especificando um conjunto de camada de saída para o ponto de operação, um identificador temporal máximo para o ponto de operação, e perfil, nível e sinalização de camada para o ponto de operação; e obter, a partir do arquivo, uma caixa de amostra para grupo que especifica um conjunto de amostras no grupo de amostra de informação de ponto de operação e especifica um índice da entrada de descrição de grupo de amostra na caixa de descrição do grupo de amostra; ou em que o grupo de amostra de informação de ponto de operação é um primeiro grupo de amostra de informação de ponto de operação, o primeiro grupo de amostra de informação de ponto de operação compreende um primeiro conjunto de amostras na faixa de referência de ponto de operação, a faixa de referência de ponto de operação contém um segundo grupo de amostras de ponto de operação que compreende um segundo conjunto de amostras na faixa de referência de ponto de operação, não há amostra na faixa de referência de ponto de operação ocorrendo em um tempo de decodificação entre um tempo de decodificação de uma amostra tendo um tempo de decodificação mais recente entre o primeiro conjunto de amostras e uma amostra tendo um primeiro tempo de decodificação entre o segundo conjunto de amostras, e há uma ou mais amostras em uma faixa adicional particular dentre a uma ou mais faixas adicionais que possuem tempos de decodificação entre o tempo de decodificação da amostra com o tempo de decodificação mais recente entre o primeiro conjunto de amostras e a amostra com o primeiro tempo de decodificação entre o segundo conjunto de amostras; e preferencialmente em que a faixa adicional particular tem uma taxa de quadros mais elevada do que a faixa de referência de ponto de operação.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: o fluxo de bits inclui uma camada de base e uma ou mais camadas de melhoria, a faixa de referência de ponto de operação contém a camada de base, e cada respectiva faixa dentre a uma ou mais faixas adicionais contêm uma respectiva camada de melhoria dentre as uma ou mais camadas de melhoria; ou compreendendo adicionalmente pelo menos um dentre: após extração do ponto de operação, decodificar dados de vídeo do ponto de operação, ou transmitir amostras do arquivo contendo imagens codificadas do ponto de operação sem transmitir amostras do arquivo que não contêm imagens codificadas do ponto de operação; ou em que cada respectiva amostra da faixa de referência de ponto de operação e cada respectiva amostra das faixas adicionais compreende uma respectiva unidade de acesso que compreende uma ou mais imagens codificadas correspondentes à mesma instância de tempo.
4. Método para gerar um arquivo para armazenar fluxos de bits de múltiplas camadas de dados de vídeo codificados, o método caracterizado pelo fato de que compreende: gerar uma faixa de referência de ponto de operação no arquivo, em que gerar a faixa de referência de ponto de operação compreende sinalizar, na faixa de referência de ponto de operação, um grupo de amostra de informação de ponto de operação que descreve um ponto de operação disponível para um fluxo de bits no arquivo; e gerar uma ou mais faixas adicionais no arquivo, em que: nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais, com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada, de modo que a amostra é alinhada em tempo com a respectiva amostra na respectiva faixa, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação e, com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada, de modo que não existe uma amostra que está alinhada em tempo com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação na posição temporalmente colocalizada da respectiva amostra da respectiva faixa adicional.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que gerar a faixa de referência de ponto de operação compreende: gerar, no arquivo, uma caixa de descrição de grupo de amostra, em que a caixa de descrição de grupo de amostra inclui uma entrada de descrição de grupo de amostra especificando um conjunto de camada de saída para o ponto de operação, um identificador temporal máximo para o ponto de operação, e perfil, nível e sinalização de camada para o ponto de operação; e gerar, no arquivo, uma caixa de amostra para grupo que especifica um conjunto de amostras no grupo de amostra de informação de ponto de operação e especifica um índice da entrada de descrição de grupo de amostra na caixa de descrição do grupo de amostra; ou em que: o grupo de amostra de informação de ponto de operação é um primeiro grupo de amostra de informação de ponto de operação, o primeiro grupo de amostra de informação de ponto de operação compreende um primeiro conjunto de amostras na faixa de referência de ponto de operação, a faixa de referência de ponto de operação contém um segundo grupo de amostras do ponto de operação que compreende um segundo conjunto de amostras na faixa de referência de ponto de operação, não há amostra na faixa de referência de ponto de operação ocorrendo em um tempo de decodificação entre um tempo de decodificação de uma amostra tendo um tempo de decodificação mais recente entre o primeiro conjunto de amostras e uma amostra com um primeiro tempo de decodificação entre o segundo conjunto de amostras, e há uma ou mais amostras em uma faixa adicional particular dentre a uma ou mais faixas adicionais que possuem tempos de decodificação entre o tempo de decodificação da amostra com o tempo de decodificação mais recente entre o primeiro conjunto de amostras e a amostra com o primeiro tempo de decodificação entre o segundo conjunto de amostras; e preferencialmente em que a faixa adicional particular tem uma taxa de quadros mais elevada do que a faixa de referência de ponto de operação.
6. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que: o fluxo de bits inclui uma camada de base e uma ou mais camadas de melhoria, a faixa de referência de ponto de operação contém a camada de base e cada respectiva faixa dentre a uma ou mais faixas adicionais contém uma respectiva camada de melhoria dentre a uma ou mais camadas de melhoria; ou compreendendo adicionalmente: codificar dados de vídeo para gerar o fluxo de bits; ou em que cada respectiva amostra da faixa de referência de ponto de operação e cada respectiva amostra das faixas adicionais compreende uma respectiva unidade de acesso que compreende uma ou mais imagens codificadas que correspondem à mesma instância de tempo.
7. Aparelho para processar um arquivo para armazenar fluxos de bits de múltiplas camadas de dados de vídeo codificados, o aparelho caracterizado pelo fato de que compreende: uma memória configurada para armazenar o arquivo; e um ou mais processadores acoplados à memória, os um ou mais processadores configurados para: obter uma faixa de referência de ponto de operação no arquivo, em que um ponto de operação disponível para um fluxo de bits no arquivo é descrito no arquivo usando um grupo de amostra de informação de ponto de operação que é sinalizado na faixa de referência de ponto de operação; obter uma ou mais faixas adicionais no arquivo, em que nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais; para cada respectiva amostra de cada faixa adicional respectiva dentre a uma ou mais faixas adicionais, determinar se deve considerar a respectiva amostra como uma parte do grupo de amostra de informação de ponto de operação, em que: com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada, de modo que a amostra está alinhada em tempo com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação, e com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada, de modo que não existe uma amostra que está alinhada em tempo com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação na posição temporalmente colocalizada da respectiva amostra da respectiva faixa adicional; e realizar um processo de extração de subfluxo de bits que extrai o ponto de operação do fluxo de bits.
8. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que o um ou mais processadores estão configurados de modo que, como parte da obtenção da faixa de referência de ponto de operação, o um ou mais processadores: obtém, a partir do arquivo, uma caixa de descrição de grupo de amostras, em que a caixa de descrição de grupo de amostras inclui uma entrada de descrição de grupo de amostra, especificando um conjunto de camadas de saída para o ponto de operação, um identificador temporal máximo para o ponto de operação, e perfil, nível, e sinalização de camada para o ponto de operação; e obter, a partir do arquivo, uma caixa de amostra para grupo que especifica um conjunto de amostras no grupo de amostra de informação de ponto de operação e especifica um índice da entrada de descrição de grupo de amostra na caixa de descrição do grupo de amostra; ou em que: o grupo de amostra de informação de ponto de operação é um primeiro grupo de amostra de informação de ponto de operação, o primeiro grupo de amostra de informação de ponto de operação compreende um primeiro conjunto de amostras na faixa de referência de ponto de operação, a faixa de referência de ponto de operação contém um segundo grupo de amostras de ponto de operação que compreende um segundo conjunto de amostras na faixa de referência de ponto de operação, não há amostra na faixa de referência de ponto de operação ocorrendo em um tempo de decodificação entre um tempo de decodificação de uma amostra tendo um tempo de codificação mais recente entre o primeiro conjunto de amostras e uma amostra com um primeiro tempo de decodificação entre o segundo conjunto de amostras, e há uma ou mais amostras em uma faixa adicional particular dentre a uma ou mais faixas adicionais que possuem tempos de decodificação entre o tempo de decodificação da amostra com o tempo de decodificação mais recente entre o primeiro conjunto de amostras e a amostra com o primeiro tempo de decodificação entre o segundo conjunto de amostras, e preferencialmente em que a faixa adicional particular tem uma taxa de quadros mais elevada do que a faixa de referência de ponto de operação.
9. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que: o fluxo de bits inclui uma camada de base e uma ou mais camadas de melhoria, a faixa de referência de ponto de operação contém a camada de base, e cada faixa respectiva dentre a uma ou mais faixas adicionais contém uma respectiva camada de melhoria dentre as uma ou mais camadas de melhoria; ou em que o um ou mais processadores são adicionalmente configurados para realizar pelo menos um dentre: após extrair o ponto de operação, decodificar dados de vídeo do ponto de operação, ou encaminhar o ponto de operação sem encaminhar pontos de operação não extraídos do fluxo de bits; ou em que cada respectiva amostra da faixa de referência de ponto de operação e cada respectiva amostra das faixas adicionais compreende uma respectiva unidade de acesso que compreende uma ou mais imagens codificadas correspondentes à mesma instância de tempo.
10. Aparelho para gerar um arquivo para armazenar fluxos de bits de múltiplas camadas de dados de vídeo codificados, o aparelho caracterizado pelo fato de que compreende: uma memória configurada para armazenar o arquivo; e um ou mais processadores acoplados à memória, o um ou mais processadores configurados para: gerar uma faixa de referência de ponto de operação no arquivo, em que o um ou mais processadores são configurados de tal modo que, como parte da geração da faixa de referência de ponto de operação, o um ou mais processadores sinalizam, na faixa de referência de ponto de operação, um grupo de amostra de informação de ponto de operação que descreve um ponto de operação disponível para um fluxo de bits no arquivo; e gerar uma ou mais faixas adicionais no arquivo, em que: nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais, o grupo de amostra de informação de ponto de operação, com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada, de modo que a amostra está alinhada em tempo com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação, e com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada, de modo que não existe uma amostra que está alinhada em tempo com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação na posição temporalmente colocalizada da respectiva amostra da respectiva faixa adicional.
11. Aparelho, de acordo com a reivindicação 10, caracterizado pelo fato de que o um ou mais processadores estão configurados de modo que, como parte da geração da faixa de referência de ponto de operação, o um ou mais processadores: geram, no arquivo, uma caixa de descrição de grupo de amostra, em que a caixa de descrição de grupo de amostra inclui uma entrada de descrição de grupo de amostra especificando um conjunto de camadas de saída para o ponto de operação, um identificador temporal máximo para o ponto de operação e perfil, nível, e sinalização de camada para o ponto de operação; e geram, no arquivo, uma caixa de amostra para grupo que especifica um conjunto de amostras no grupo de amostra de informação de ponto de operação e especifica um índice da entrada de descrição de grupo de amostra na caixa de descrição do grupo de amostra; ou em que o grupo de amostra de informação de ponto de operação é um primeiro grupo de amostra de informação de ponto de operação, o primeiro grupo de amostra de informação de ponto de operação compreende um primeiro conjunto de amostras na faixa de referência de ponto de operação, a faixa de referência de ponto de operação contém um segundo grupo de amostras do ponto de operação que compreende um segundo conjunto de amostras na faixa de referência de ponto de operação, não há amostra na faixa de referência de ponto de operação ocorrendo em um tempo de decodificação entre um tempo de decodificação de uma amostra tendo um tempo de codificação mais recente entre o primeiro conjunto de amostras e uma amostra com um primeiro tempo de decodificação entre o segundo conjunto de amostras, e há uma ou mais amostras em uma faixa adicional particular dentre a uma ou mais faixas adicionais que possuem tempos de decodificação entre o tempo de decodificação da amostra com o tempo de decodificação mais recente entre o primeiro conjunto de amostras e a amostra com o primeiro tempo de decodificação entre o segundo conjunto de amostras; e preferencialmente em que a faixa adicional particular tem uma taxa de quadros mais elevada do que a faixa de referência de ponto de operação.
12. Aparelho, de acordo com a reivindicação 10, caracterizado pelo fato de que: o fluxo de bits inclui uma camada de base e uma ou mais camadas de melhoria, a faixa de referência de ponto de operação contém a camada de base e cada respectiva faixa dentre a uma ou mais faixas adicionais contém uma respectiva camada de melhoria dentre as uma ou mais camadas de melhoria; ou em que o um ou mais processadores são adicionalmente configurados para codificar dados de vídeo para gerar o fluxo de bits; ou em que cada respectiva amostra da faixa de referência de ponto de operação e cada respectiva amostra das faixas adicionais compreende uma respectiva unidade de acesso que compreende uma ou mais imagens codificadas correspondentes à mesma instância de tempo.
13. Aparelho para processar um arquivo para armazenar fluxos de bits de múltiplas camadas de dados de vídeo codificados, o aparelho caracterizado pelo fato de que compreende: meios para obter uma faixa de referência de ponto de operação no arquivo, em que um ponto de operação disponível para um fluxo de bits no arquivo é descrito no arquivo utilizando um grupo de amostras de informação de ponto de operação que é sinalizado na faixa de referência de ponto de operação; meios para obter uma ou mais faixas adicionais no arquivo, em que nenhum grupo de amostras de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais; meios para determinar, para cada respectiva amostra de cada respectiva faixa adicional dentre as uma ou mais faixas adicionais, se considera a respectiva amostra como uma parte do grupo de amostras de informação de ponto de operação, em que: com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada, de modo que a amostra está alinhada em tempo com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação, e com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada, de modo que não existe uma amostra que está alinhada em tempo com respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação na posição temporalmente colocalizada da respectiva amostra da respectiva faixa adicional; e meios para realizar um processo de extração de subfluxo de bits que extrai o ponto de operação.
14. Aparelho para gerar um arquivo para armazenar fluxos de bits de múltiplas camadas de dados de vídeo codificados, o aparelho caracterizado pelo fato de que compreende: meios para gerar uma faixa de referência de ponto de operação no arquivo, em que os meios para gerar a faixa de referência de ponto de operação compreendem meios para sinalizar, na faixa de referência de ponto de operação, um grupo de amostra de informação do ponto de operação que descreve um ponto de operação disponível para um fluxo de bits no arquivo; e meios para gerar uma ou mais faixas adicionais no arquivo, em que: nenhum grupo de amostra de informação de ponto de operação é sinalizado em qualquer uma das faixas adicionais, com base na faixa de referência de ponto de operação que contém uma amostra que é temporalmente colocalizada, de modo que a amostra está alinhada em tempo com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte do grupo de amostra de informação de ponto de operação, e com base na faixa de referência de ponto de operação que não contém uma amostra que é temporalmente colocalizada, de modo que não existe uma amostra que está alinhada em tempo com a respectiva amostra na respectiva faixa adicional, a respectiva amostra na respectiva faixa adicional é considerada parte de um grupo de amostra de informação de ponto de operação na posição temporalmente colocalizada da respectiva amostra da respectiva faixa adicional.
15. Memória legível por computador caracterizada pelo fato de que compreende instruções armazenadas na mesma que, quando executadas por um computador, realizam as etapas do método conforme definido em qualquer uma das reivindicações 1 a 6.
BR112018007529-9A 2015-10-14 2016-10-14 Alinhamento de grupo de amostra de ponto de operação em formato de arquivo de fluxos de bits de multicamada BR112018007529B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562241691P 2015-10-14 2015-10-14
US62/241,691 2015-10-14
US15/293,092 US10034010B2 (en) 2015-10-14 2016-10-13 Alignment of operation point sample group in multi-layer bitstreams file format
US15/293,092 2016-10-13
PCT/US2016/057109 WO2017066617A1 (en) 2015-10-14 2016-10-14 Alignment of operation point sample group in multi-layer bitstreams file format

Publications (2)

Publication Number Publication Date
BR112018007529A2 BR112018007529A2 (pt) 2018-10-23
BR112018007529B1 true BR112018007529B1 (pt) 2023-12-26

Family

ID=57227101

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112018007529-9A BR112018007529B1 (pt) 2015-10-14 2016-10-14 Alinhamento de grupo de amostra de ponto de operação em formato de arquivo de fluxos de bits de multicamada

Country Status (10)

Country Link
US (1) US10034010B2 (pt)
EP (1) EP3363205B1 (pt)
JP (1) JP6506474B2 (pt)
KR (1) KR101951615B1 (pt)
CN (1) CN108141617B (pt)
AU (1) AU2016340116B2 (pt)
BR (1) BR112018007529B1 (pt)
ES (1) ES2813908T3 (pt)
TW (1) TWI651961B (pt)
WO (1) WO2017066617A1 (pt)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10291923B2 (en) * 2016-05-24 2019-05-14 Qualcomm Incorporated Mapping of tile grouping and samples in HEVC and L-HEVC file formats
US11197040B2 (en) * 2016-10-17 2021-12-07 Mediatek Inc. Deriving and signaling a region or viewport in streaming media
JP7090730B2 (ja) * 2018-04-05 2022-06-24 キヤノン株式会社 ファイル内に画像をカプセル化するための方法及び装置
WO2020125754A1 (en) 2018-12-21 2020-06-25 Beijing Bytedance Network Technology Co., Ltd. Motion vector derivation using higher bit-depth precision
US20220247991A1 (en) * 2019-06-28 2022-08-04 Sony Group Corporation Information processing apparatus, information processing method, reproduction processing device, and reproduction processing method
CN114424561B (zh) * 2019-09-24 2023-10-20 华为技术有限公司 不允许不必要的层包括在多层视频码流中
JP2023504097A (ja) * 2019-11-29 2023-02-01 中興通訊股▲ふん▼有限公司 マルチビュービデオ処理方法および装置
KR20220163474A (ko) * 2020-04-03 2022-12-09 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 비디오 코딩을 위한 파일 포맷 개념
GB2597642B (en) * 2020-06-16 2023-08-02 Canon Kk Method, device, and computer program for encapsulating media data into a media file
US11750815B2 (en) 2020-09-17 2023-09-05 Lemon, Inc. Versatile video coding track coding
KR20220037379A (ko) 2020-09-17 2022-03-24 레몬 인크. 비디오 동작 포인트 레코드 신택스 및 시맨틱스
US11671627B2 (en) 2020-09-17 2023-06-06 Lemon Inc. Operating point entity group signaling in coded video
WO2022060192A1 (ko) * 2020-09-17 2022-03-24 엘지전자 주식회사 출력 계층 세트 정보를 시그널링하는 미디어 파일 생성/수신 방법, 장치 및 미디어 파일을 저장한 컴퓨터 판독 가능한 기록 매체
US20230379481A1 (en) * 2020-09-22 2023-11-23 Lg Electronics Inc. Media file generation/reception method and device for signaling operating point information and output layer set information, and computer-readable recording medium in which media file is stored
US20230336783A1 (en) * 2020-09-29 2023-10-19 Lg Electronics Inc. Method and device for generating/receiving media file including output layer set information, and method for transmitting media file
US11611752B2 (en) 2020-10-07 2023-03-21 Lemon Inc. Adaptation parameter set storage in video coding
US20240040169A1 (en) * 2020-12-21 2024-02-01 Lg Electronics Inc. Media file processing method and device therefor
US20240031622A1 (en) * 2020-12-21 2024-01-25 Lg Electronics Inc. Media file processing method and device

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070022215A1 (en) * 2005-07-19 2007-01-25 Singer David W Method and apparatus for media data transmission
AU2012203922A1 (en) 2005-07-19 2012-07-26 Apple Inc. Method and apparatus for media data transmission
AU2007287222A1 (en) * 2006-08-24 2008-02-28 Nokia Corporation System and method for indicating track relationships in media files
RU2492585C2 (ru) * 2008-07-16 2013-09-10 Нокиа Корпорейшн Способ и устройство для группирования треков и подмножеств треков
US8719309B2 (en) * 2009-04-14 2014-05-06 Apple Inc. Method and apparatus for media data transmission
GB2469563B (en) 2009-04-14 2011-11-16 Apple Inc Method and apparatus for media data transmission
US20130097334A1 (en) * 2010-06-14 2013-04-18 Thomson Licensing Method and apparatus for encapsulating coded multi-component video
US8930562B2 (en) * 2010-07-20 2015-01-06 Qualcomm Incorporated Arranging sub-track fragments for streaming video data
WO2013157308A1 (ja) * 2012-04-20 2013-10-24 ソニー株式会社 画像処理装置及び画像処理方法
US9451256B2 (en) * 2012-07-20 2016-09-20 Qualcomm Incorporated Reusing parameter sets for video coding
RU2654051C1 (ru) * 2013-01-18 2018-05-16 Кэнон Кабусики Кайся Способ, устройство и компьютерная программа для инкапсуляции сегментированных синхронизированных мультимедийных данных
GB2512829B (en) * 2013-04-05 2015-05-27 Canon Kk Method and apparatus for encoding or decoding an image with inter layer motion information prediction according to motion information compression scheme
US10595031B2 (en) 2013-07-12 2020-03-17 Qualcomm Incorporated Selection of target output layers in high efficiency video coding extensions
GB2516825B (en) * 2013-07-23 2015-11-25 Canon Kk Method, device, and computer program for encapsulating partitioned timed media data using a generic signaling for coding dependencies
GB2542282B (en) 2013-10-22 2018-08-01 Canon Kk Method, device, and computer program for encapsulating partitioned timed media data in a server
US9648348B2 (en) * 2013-10-23 2017-05-09 Qualcomm Incorporated Multi-layer video file format designs

Also Published As

Publication number Publication date
BR112018007529A2 (pt) 2018-10-23
JP2018530967A (ja) 2018-10-18
KR101951615B1 (ko) 2019-02-22
WO2017066617A1 (en) 2017-04-20
AU2016340116A1 (en) 2018-04-12
US20170111650A1 (en) 2017-04-20
EP3363205A1 (en) 2018-08-22
CN108141617A (zh) 2018-06-08
TW201720148A (zh) 2017-06-01
KR20180068979A (ko) 2018-06-22
TWI651961B (zh) 2019-02-21
AU2016340116B2 (en) 2019-07-18
CN108141617B (zh) 2019-07-16
JP6506474B2 (ja) 2019-04-24
ES2813908T3 (es) 2021-03-25
EP3363205B1 (en) 2020-05-27
US10034010B2 (en) 2018-07-24

Similar Documents

Publication Publication Date Title
BR112018007529B1 (pt) Alinhamento de grupo de amostra de ponto de operação em formato de arquivo de fluxos de bits de multicamada
US10306253B2 (en) Signaling of parameter sets in files of multi-layer bitstreams
EP3363204B1 (en) Support of random access and switching of layers and sub-layers in multi-layer video files
US9161039B2 (en) Bitstream properties in video coding
US10038899B2 (en) File format for video data
US10999605B2 (en) Signaling of important video information in file formats
BR112016025100B1 (pt) Método e dispositivo para decodificar dados de vídeo de várias camadas, assim como memória legível por computador
BR112017017307B1 (pt) Método de processamento de dados de vídeo de múltiplas camadas, dispositivo de vídeo para processamento de dados de vídeo de múltiplas camadas e memória legível por computador
BR112016008374B1 (pt) Suporte de extração em múltiplos modos para codecs de vídeo de múltiplas camadas
BR112015007763B1 (pt) Método de decodificação e codificação de dados de vídeo, dispositivo de decodificação e codificação de vídeo e memória legível por computador
BR112016030194B1 (pt) Codificação de vídeo de multi-camada

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 14/10/2016, OBSERVADAS AS CONDICOES LEGAIS