BR112015007502B1 - Método e dispositivo de processamento de dados de vídeo, método e dispositivo para gerar um arquivo que possui um formato para conteúdo hevc contendo dados de vídeo codificado, assim como meio de armazenamento não transitório legível por computador - Google Patents
Método e dispositivo de processamento de dados de vídeo, método e dispositivo para gerar um arquivo que possui um formato para conteúdo hevc contendo dados de vídeo codificado, assim como meio de armazenamento não transitório legível por computador Download PDFInfo
- Publication number
- BR112015007502B1 BR112015007502B1 BR112015007502-9A BR112015007502A BR112015007502B1 BR 112015007502 B1 BR112015007502 B1 BR 112015007502B1 BR 112015007502 A BR112015007502 A BR 112015007502A BR 112015007502 B1 BR112015007502 B1 BR 112015007502B1
- Authority
- BR
- Brazil
- Prior art keywords
- samples
- sample
- box
- stsa
- temporal
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/31—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
FORMATO DE ARQUIVO PARA DADOS DE VÍDEO. A presente invenção refere-se a um dispositivo que gera um arquivo que compreende uma pluralidade de amostras que contêm imagens codificadas. Além disso, o processo contém uma caixa que identifica um grupo de amostras que contém uma ou mais amostras dentre a pluralidade de amostras, em que a caixa adicionalmente indica que cada uma das amostras no grupo de amostra é uma amostra de subcamada de acesso temporal passo a passo (STSA). O mesmo dispositivo ou um diferente identifica, com base em dados na caixa que identifica o grupo de amostra, amostras STSA dentre as amostras no arquivo que contém a caixa.
Description
[0001] Este pedido reivindica o benefício do Pedido de Patente Provisório U.S. No. 61/709.748, depositado em 04 de outubro de 2012, todo o conteúdo do qual é aqui incorporado por referência.
[0002] Esta descrição refere-se à codificação e decodificação de vídeo.
[0003] Capacidades de vídeo digitais podem ser incorporadas em uma ampla variedade de dispositivos, incluindo televisores digitais, sistemas de transmissão digital direta, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), computadores desktop ou computadores laptop, tablets, e-books, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de videogame, consoles de videogames, telefones celulares de rádio ou satélite, os chamados "smartphones", aparelhos de vídeo, dispositivos de vídeo teleconferência, e dispositivos de streaming de vídeo e afins. Dispositivos de vídeo digital implementam técnicas de compressão de vídeo, tais 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 Avançada de Vídeo (AVC), padrão Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e extensões de tais normas. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de forma mais eficiente através da aplicação de tais técnicas de compressão de vídeo.
[0004] Técnicas de compressão de vídeo executam predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou eliminar a redundância inerente em sequências de vídeo. Para a codificação de vídeo baseada 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 dividida 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 às amostras de referência em blocos vizinhos no mesmo quadro. 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 com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e imagens de referência podem ser referidas como quadros de referência.
[0005] Predição espacial ou temporal resulta em um bloco de predição para um bloco a ser codificado. Dados residuais representam diferenças de pixel 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 forma o bloco de predição, 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 a compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio da transformada, resultando em coeficientes residuais, que então podem ser quantizados. Os coeficientes quantizados, inicialmente dispostos em uma matriz bidimensional podem ser verificados, a fim de produzir um vetor unidimensional de coeficientes, e codificação de entropia pode ser aplicada para conseguir ainda mais compressão.
[0006] Um fluxo de bits de codificação de multivista pode ser gerado por vistas de codificação, por exemplo, a partir de múltiplas perspectivas. Algumas normas (3D) de vídeo tridimensionais têm sido desenvolvidas as quais fazem uso de aspectos codificação de multivista. Por exemplo, vistas diferentes podem transmitir opiniões de olho esquerdo e direito para suporte de vídeo 3D. Alternativamente, alguns processos de codificação de vídeo 3D podem aplicar a chamada multivista mais codificação de profundidade. Em codificação de multivista mais profundidade, um fluxo de bits de vídeo 3D pode conter não só componentes de vista de textura, mas também componentes de vista de profundidade. Por exemplo, cada vista pode compreender um componente de vista de textura e um componente de vista de profundidade.
[0007] De um modo geral, esta divulgação descreve técnicas para o armazenamento de conteúdos de vídeo. Em alguns exemplos, as técnicas possibilitam o armazenamento de conteúdo de Codificação de Vídeo de Alta Eficiência (HEVC) em um arquivo com base em um formato de arquivo de mídia baseado na Organização Internacional de Normalização (ISO) (ISOBMFF). Por exemplo, um dispositivo pode gerar um arquivo que compreende uma pluralidade de amostras que contêm imagens codificadas. Além disso, o processo pode compreender uma caixa que identifica um grupo de amostras que contém uma ou mais amostras dentre a pluralidade de amostras. A caixa pode indicar, ainda, que cada amostra no grupo de amostra é uma amostra acesso subcamada temporal (STSA) passo a passo. O dispositivo igual ou diferente pode identificar, com base em dados na caixa que identifica o grupo de amostra, amostras STSA dentre as amostras no arquivo que contém a caixa.
[0008] Em um exemplo, esta divulgação descreve um método de processamento de dados de vídeo, o método compreendendo; identificar, com base em dados em uma caixa que identifica um grupo de amostra, amostras STSA dos dados de vídeo dentre as amostras em um arquivo que contém a caixa.
[0009] Em um outro exemplo, esta divulgação descreve um método de armazenamento de dados de vídeo, o método compreendendo a geração de um arquivo que compreende: uma pluralidade de amostras que contêm imagens codificadas de dados de vídeo; e uma caixa que identifica um grupo de amostras que contém uma ou mais amostras dentre a pluralidade de amostras, em que a caixa adicionalmente indica que cada uma das amostras no grupo de amostra é uma amostra STSA.
[0010] Em um outro exemplo, esta divulgação descreve um dispositivo que compreende um ou mais processadores configurados para identificar, com base em dados, dentro de uma caixa que identifica um grupo de amostras, as amostras STSA entre amostras de dados de vídeo em um arquivo que contém a caixa.
[0011] Em um outro exemplo, esta divulgação descreve um dispositivo que compreende um ou mais processadores configurados para gerar um arquivo que compreende: uma pluralidade de amostras que contêm imagens codificadas de dados de vídeo; e uma caixa que identifica um grupo de amostras que contém uma ou mais amostras dentre a pluralidade de amostras, em que a caixa adicionalmente indica que, cada uma das amostras no grupo de amostra é uma amostra STSA.
[0012] Em um outro exemplo, esta divulgação descreve um dispositivo que compreende: meios para receber um arquivo que contém uma caixa que identifica um grupo de amostra; e meios para identificar, com base em dados na caixa, amostras STSA de dados de vídeo dentre as amostras no arquivo.
[0013] Em um outro exemplo, esta divulgação descreve um dispositivo que compreende: meios para gerar um arquivo que compreende: uma pluralidade de amostras que contêm imagens codificadas de dados de vídeo; e uma caixa que, identifica um grupo de estudo que, contém uma ou mais amostras dentre a pluralidade de amostras, em que a caixa adicionalmente indica que cada uma das amostras no grupo de amostra é uma amostra STSA; e meios para emitir o arquivo.
[0014] Em um outro exemplo, esta divulgação descreve um meio de armazenamento legível por computador não transitório tendo armazenadas nele instruções que, quando executadas, fazem com que um ou mais processadores identifiquem, com base em dados de uma caixa que identifica um grupo de amostras, as amostras STSA entre amostras em um arquivo que contém a caixa.
[0015] Em um outro exemplo, esta divulgação descreve um meio de armazenamento legível por computador não transitório tendo armazenadas nele instruções que, quando executadas, fazem com que um ou mais processadores gerem um arquivo que compreende: uma pluralidade de amostras que contêm imagens codificadas; e uma caixa que identifica um grupo de amostra que contém uma ou mais amostras dentre a pluralidade de amostras, em que a caixa adicionalmente indica que cada uma das amostras no grupo de amostra é uma amostra STSA.
[0016] Os detalhes de uma ou mais exemplos da invenção são estabelecidos nos desenhos acompanhantes e na descrição abaixo. Outras características, objetos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
[0017] A figura 1 é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplar que pode utilizar as técnicas descritas nesta divulgação.
[0018] A figura 2 é um diagrama de blocos ilustrando um codificador de vídeo exemplar que pode implementar as técnicas descritas nesta divulgação.
[0019] A figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar que pode implementar as técnicas descritas nesta divulgação.
[0020] A figura 4 é um fluxograma que ilustra um exemplo de operação de acordo com uma ou mais das técnicas desta descrição.
[0021] A figura 5 é um fluxograma que ilustra um exemplo de operação de acordo com uma ou mais técnicas desta divulgação.
[0022] A figura 6 é um diagrama conceitual ilustrando uma estrutura exemplar de um arquivo, de acordo com uma ou mais das técnicas desta descrição.
[0023] Um fluxo de bits, tal como um fluxo de bits de Codificação de Vídeo de Alta Eficiência (HEVC), pode compreender uma sequência de bits que forma uma representação de imagens codificadas e dados associados, formando uma ou mais sequências de vídeo codificado (CVSS). Uma imagem codificada pode compreendem uma representação codificada de uma imagem contendo todas as unidades de árvores de codificação da imagem. Uma unidade de árvore de codificação (CTU) pode compreender um bloco de árvore de codificação (CTB) de amostras de luma e dois CTBs correspondentes de amostras de croma e estruturas de sintaxe usadas para codificar as amostras. Uma CVS pode compreender uma sequência de unidades de acesso. Cada uma das unidades de acesso pode compreender um conjunto de imagens codificadas associado com a mesma instância de tempo.
[0024] Um elemento de rede de reconhecimento de mídia (MANE) ou outro tipo de dispositivo pode aplicar fluxo de bits no fluxo de bits HEVC que é codificado com múltiplas subcamadas. Um subconjunto de imagens dentro de uma camada que pode ser decodificado sem referência a outras imagens no interior da camada pode ser aqui referido como uma "subcamada" ou uma "subcamada temporal". O identificador temporal de uma unidade de camada de abstração de rede (NAL) identifica uma subcamada com que a unidade de NAL está associada. Assim, cada subcamada de um fluxo de bits pode ser associada a um identificador temporal diferente. Se o identificador temporal de uma primeira unidade de NAL é menor do que o identificador temporal de uma segunda unidade de NAL, os dados encapsulados pela primeira unidade de NAL podem ser decodificados sem referência aos dados encapsulados pela segunda unidade de NAL.
[0025] Em qualquer ponto no fluxo de bits, um MANE pode começar a remover unidades de Camadas de Abstração de Rede (NAL) de subcamadas superiores na base que as imagens nas subcamadas menores ainda são decodificáveis uma vez que o processo de decodificação para as imagens nas subcamadas inferiores não depende das unidades de NAL das subcamadas superiores. A ação de remoção de todas as unidades de NAL com identificadores temporais superiores a um determinado valor pode ser referida como comutação descendente temporal. Comutação descendente temporal sempre será possível.
[0026] A ação de começar a encaminhar unidades de NAL de uma determinada subcamada que não foi encaminhada até aquele ponto pode ser referida como comutação ascendente temporal. Em alguns exemplos, comutação ascendente temporal só é possível, se nenhuma das imagens na camada que é comutada depender de qualquer imagem na mesma subcamada antes do ponto no fluxo de bits no qual o interruptor foi realizado. Pontos em um fluxo de bits no qual comutação ascendente temporal é possível podem ser referidos como pontos de comutação de subcamada.
[0027] Em HEVC, existem dois tipos de imagem associada com pontos de comutação de subcamada, a saber, tipo de imagem de acesso a subcamada temporal (TSA) e tipo de imagem de acesso a subcamada temporal etapa a etapa (STSA). Os tipos de imagem TSA e STSA podem ser utilizados para indicar pontos de comutação de subcamada temporal. Uma imagem de TSA permite comutação ascendente, na imagem de TSA, para a subcamada que contém a imagem de TSA ou qualquer subcamada superior, a partir da subcamada imediatamente inferior. Uma imagem de STSA permite comutação ascendente, na imagem STSA, para a subcamada que contém a imagem STSA, a partir da subcamada imediatamente inferior. Assim, em contraste a imagem de TSA, um STSA não necessariamente permite comutação ascendente a qualquer subcamada superior, apenas a subcamada que contém a imagem STSA.
[0028] De acordo com um formato de arquivo para o armazenamento de conteúdo HEVC (isto é, um formato de arquivo de HEVC), um arquivo pode compreender uma pluralidade de "caixas". Assim, arquivos em conformidade com o formato de arquivo de HEVC podem compreender uma série de objetos, chamados caixas. Uma "caixa" pode ser um bloco de construção orientado a objetos definido por um identificador de tipo único e comprimento. Em alguns casos, todos os dados em um arquivo em conformidade com o formato de arquivo de HEVC podem ser contidos dentro de caixas e pode não haver dados no arquivo que não está em uma caixa.
[0029] Além disso, um arquivo em conformidade com o formato de arquivo de HEVC pode incluir uma pluralidade de faixa. Cada faixa pode ser uma sequência cronometrada de amostras relacionadas. No contexto do formato de arquivo de HEVC, uma "amostra" pode incluir os dados associados a uma única marca de tempo. Exemplos de uma amostra incluem: um quadro individual de vídeo, uma série de quadros de vídeo, em ordem de decodificação, ou uma seção comprimida de áudio em ordem de decodificação.
[0030] Além disso, no formato de arquivo de HEVC, um agrupamento de amostra é uma atribuição de cada uma das amostras em uma faixa para ser um membro de um grupo de amostras. As amostras em um grupo de amostras não são obrigadas a ser contíguas. Grupos de amostras podem ser representados por duas estruturas de dados: uma caixa SampleToGroup e uma caixa SampleGroupDescription. A caixa SampleToGroup representa a atribuição de amostras de grupos de amostras. Pode haver uma instância da caixa SampleGroupDescription para cada entrada de grupo de amostra. Uma caixa SampleGroupDescription descreve as propriedades do grupo de amostra correspondente.
[0031] Há vários problemas ou deficiências com os projetos existentes do formato de arquivo para armazenamento de conteúdo HEVC. Por exemplo, não há nenhuma maneira compacta para sinalização de amostras que contêm imagens STSA (também referidas como amostras STSA). Em outro exemplo, não há nenhuma maneira eficiente para sinalização se comutação ascendente de subcamada temporal a qualquer camada de comutação temporal superior pode ser realizada em qualquer amostra.
[0032] As técnicas da presente divulgação podem resolver um ou mais dos problemas anteriormente mencionados ou insuficiências. De acordo com uma técnica exemplar desta divulgação, um dispositivo (por exemplo, um codificador de vídeo ou outro dispositivo) pode gerar um arquivo que compreende uma pluralidade de amostras que contêm imagens codificadas. O arquivo pode também incluir uma caixa (por exemplo, um SampleToGroupBox) que identifica um grupo de amostras que contém uma ou mais amostras dentre a pluralidade de amostras. A caixa adicionalmente indica que cada amostra no grupo de amostra é uma amostra STSA. Assim, um dispositivo (por exemplo, um decodificador de vídeo ou outro dispositivo) pode identificar, com base em dados em uma caixa que identifica um grupo de amostra, amostras STSA entre amostras em um arquivo que contém a caixa.
[0033] De acordo com uma outra técnica exemplar desta divulgação, um codificador de vídeo ou outro dispositivo pode gerar um arquivo que armazena amostras codificadas que contêm imagens codificadas dos dados de vídeo. O arquivo também pode incluir uma caixa que inclui um registro que inclui um elemento que indica se todos os conjuntos de parâmetros de sequência (SPSS) que são ativados quando um fluxo ao qual o registro se aplica é decodificado têm elementos de sintaxe que indicam que comutação ascendente de subcamada temporal a qualquer subcamada temporal superior pode ser realizada em qualquer amostra associada com o SPSS. Assim, um decodificador de vídeo ou outro dispositivo pode determinar, com base em um elemento em um registro em uma caixa de um arquivo que contém amostras que contêm imagens codificadas dos dados de vídeo, que todos os SPSs que são ativados quando um fluxo ao qual o registro se aplica é decodificado têm elementos de sintaxe que indicam que comutação ascendente de subcamada temporal para qualquer subcamada superior pode ser realizada em qualquer amostra associada com o SPSS.
[0034] Por exemplo, um codificador de vídeo pode gerar um registro de configuração de decodificador HEVC. O registro de configuração de decodificador HEVC pode incluir um elemento temporalldNested. O elemento temporallDNested pode indicar se comutação ascendente de subcamada temporal para qualquer camada temporal superior pode ser realizada em qualquer amostra de um fluxo ao qual o registro de configuração de decodificador HEVC se aplica.
[0035] A figura 1 é um diagrama de blocos que ilustra um exemplo do sistema de codificação de vídeo 10 que pode utilizar as técnicas desta divulgação. Tal como aqui utilizado, o termo "codificador de vídeo" refere-se genericamente a ambos os 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.
[0036] Como mostrado na figura 1, sistema de codificação de vídeo 10 inclui um dispositivo de origem 12 e um dispositivo de destino 14, dispositivo de origem 12 gera dados de vídeo codificado. 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. Dispositivo de destino 14 pode decodificar os dados de vídeo codificado, gerados pelo dispositivo de origem 12. Consequentemente, o dispositivo de destino 14 pode ser referido como um dispositivo de decodificação de vídeo ou um aparelho de decodificação vídeo. Dispositivo de origem 12 e dispositivo de destino 14 podem ser exemplos de dispositivos de codificação de vídeo ou aparelhos de codificação de vídeo.
[0037] Dispositivo de origem 12 e dispositivo de destino 14 podem incluir uma vasta gama de dispositivos, incluindo computadores desktop, dispositivos de computação móvel, computadores notebook (por exemplo, laptop), computadores tablet, set-top boxes, aparelhos de telefone, como os chamados "smartphones", televisores, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, computadores no carro, ou algo semelhante.
[0038] O dispositivo de destino 14 pode receber dados de vídeo codificado do dispositivo de origem 12 através de um canal 16. O canal 16 pode incluir um ou mais meios de comunicação ou dispositivos capazes de mover os dados de vídeo codificado a partir do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, canal 16 pode compreender um ou mais meios de comunicação que permitem que o dispositivo de origem 12 transmita dados de vídeo codificado diretamente para o dispositivo de destino 14 em tempo real. Neste exemplo, o dispositivo de origem 12 pode modular os dados de vídeo codificado 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. Os um ou mais meios de comunicação podem incluir meios de comunicação sem fio e/ou com fio, tal como um espectro de radio frequência (RF) ou uma ou mais linhas de transmissão físicas. Os um ou mais meios de comunicação podem formar 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). Os um ou mais meios de comunicação podem incluir roteadores, comutadores, estações base, ou outros equipamentos que facilitam a comunicação de dispositivo de origem de 12 para o dispositivo de destino 14.
[0039] Em outro exemplo, canal 16 pode incluir um meio de armazenamento que armazena dados de vídeo codificado 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 localmente acessados, como discos Blu-ray, DVDs, CD-ROMs, memória flash, ou outras mídias de armazenamento digitais adequadas para o armazenamento de dados de vídeo codificado.
[0040] Em um outro exemplo, canal 16 pode incluir um servidor de arquivos ou outro dispositivo de armazenamento intermediário que armazena os dados codificados de vídeo gerados pelo dispositivo de origem 12. Neste exemplo, o dispositivo de destino 14 pode acessar os dados de vídeo codificado 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 codificado e transmitir os dados de vídeo codificado para o dispositivo de destino 14, servidores de arquivos exemplares incluem servidores de web (por exemplo, para um site), servidores de protocolo de transferência de arquivos (FTP), dispositivos de armazenamento anexados à rede (NAS), e unidades de disco locais.
[0041] O dispositivo de destino 14 pode acessar os dados de vídeo codificado por meio de uma conexão de dados padrão, como uma conexão com a Internet. Tipos exemplares de conexões de dados podem incluir canais sem fio (por exemplo, conexões Wi-Fi), conexões com fio (por exemplo, linha de assinante digital (DSL), modem a cabo, etc.), ou combinações de ambos que são adequados para acessar dados de vídeo codificado armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificado a partir do servidor de arquivos pode ser uma transmissão de fluxo contínuo, uma transmissão de download, ou uma combinação de ambos.
[0042] As técnicas desta divulgação não se limitam a aplicações ou configurações sem fio. As técnicas podem ser aplicadas a codificação de vídeo em apoio a uma variedade de aplicações multimídia, como transmissões de televista através do ar, transmissões de televista por cabo, transmissões de televista por satélite, transmissões de vídeo por streaming, por exemplo, através da 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 outras aplicações. Em alguns exemplos, sistema de codificação de vídeo 10 pode ser configurado para suportar transmissão de vídeo de uma via ou duas vias para suportar aplicações tais como streaming de vídeo, reprodução de vídeo, transmissão de vídeo e/ou vídeo telefonia.
[0043] A figura 1 é apenas um exemplo e as técnicas desta divulgação podem aplicar-se 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 necessariamente incluem qualquer comunicação de dados entre os dispositivos de codificação e decodificação. Em outros exemplos, os dados são recuperados a partir de uma memória local, transmitidos através de 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 os dados da memória. Em muitos exemplos, a codificação e decodificação é realizada por meio de dispositivos que não se comunicam um com o outro, mas simplesmente codificam para a memória de dados e/ou recuperam e decodificam dados da memória.
[0044] 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ídeos contendo dados de vídeo capturados anteriormente, uma interface de alimentação de vídeo para receber dados de vídeo a partir de um provedor de conteúdo de vídeo, e/ou um sistema de computação gráfica para a geração de dados de vídeo, ou uma combinação de tais fontes de dados de vídeo,
[0045] Codificador de vídeo 20 pode codificar dados de vídeo a partir de fonte de vídeo 18. Em alguns exemplos, dispositivo de origem 12 transmite diretamente os dados de vídeo codificado para o dispositivo de destino 14 via interface de saída 22. Em outros exemplos, os dados de vídeo codificado também podem ser armazenados em um meio de armazenamento ou um servidor de arquivos para acesso posterior pelo dispositivo de destino 14 para decodificar e/ou reproduzir.
[0046] 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. Interface de entrada 28 pode receber dados de vídeo codificado pelo canal 16. O decodificador de vídeo 30 pode decodificar dados de vídeo codificado. O dispositivo de vídeo 32 pode exibir os dados vídeo decodificado. O dispositivo de vídeo 32 pode ser integrado com, ou pode ser externo ao dispositivo de destino 14. O dispositivo de exibição 32 pode incluir uma variedade de dispositivos de exibição, tais como uma tela de cristal líquido (LCD), uma tela de plasma, uma tela de diodo orgânico emissor de luz (OLED), ou outro tipo de dispositivo de exibição.
[0047] O codificador de vídeo 20 e decodificador de vídeo 30 cada um pode ser implementado como qualquer um de uma variedade de circuitos adequados, tais como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis em campo (FPGA), lógica discreta, hardware, ou quaisquer combinações dos mesmos. Se as técnicas são parcialmente implementadas 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 executar as instruções em hardware usando um ou mais processadores para executar as técnicas desta divulgação. Qualquer um dos anteriores (incluindo o hardware, software, uma combinação de hardware e software, etc.) pode ser considerado um ou mais processadores. Cada um do codificador de vídeo 20 e do decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, cada um dos quais pode ser integrado como parte de um codificador / decodificador combinado (CODEC) em um respectivo dispositivo.
[0048] Essa divulgação pode geralmente se referir ao codificador de vídeo 20 "sinalizando" certas informações para outro dispositivo, como um decodificador de vídeo 30. O termo "sinalização" pode geralmente se referir à comunicação dos elementos de sintaxe e/ou outros dados usados para decodificar os dados de vídeo comprimidos. Essa comunicação pode ocorrer em tempo quase real ou real. Alternativamente, tal comunicação pode ocorrer ao longo de um período de tempo, tal como pode ocorrer quando ao armazenar os 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 então ser recuperado por um dispositivo de decodificação, em qualquer momento após ser armazenado neste meio.
[0049] Em alguns exemplos, codificador de vídeo 20 e decodificador de vídeo 30 funcionam de acordo com um padrão de compressão de vídeo, como o International Organization for Standardization (ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4AVC), incluindo a sua extensão de Codificação de Vídeo Escalonável (SVC), extensão de Codificação de Vídeo Escalonável (MVC), e extensão de vídeo tridimensional (3DV) baseado em MVC. Em alguns casos, qualquer fluxo de bits em conformidade com a extensão 3DV baseada em MVC de H.264/AVC sempre contém um subfluxo de bits que é compatível com a extensão MVC de H.264/AVC. Além disso, o codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com a extensão de codificação 3DV para H.264/AVC (isto é, 3DV baseado em AVC) que está atualmente sob desenvolvimento. Em outros exemplos, codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com a Internacional Telecommunication Union Telecommunication Standardization Sector (UIT-T) H.261, International Organization for Standardization (ISO0/Intematiorsal Electrotechnical Commission (IEC) Moving Picture Experts Group (MPEG)-1 Visual, ITU-T H.262 ou TSO IEC MPEG-2 Visual, e ITU- T H.264, ISO/IEC Visual.
[0050] Em outros exemplos, de codificador de vídeo 20 e decodificador de vídeo de 30 podem operar de acordo com a Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento pela Equipe de Colaboração Conjunta sobre codificação de vídeo (JCT-VC) do ITU-T Video Coding Experts Group (VCEG) e ISO / IEC Motion Picture Experts Group (MPEG). O rascunho do padrão HEVC futuro, conhecido como "Projeto de Trabalho HEVC 9" é descrito em Bross et al, "High Efficiency Video Coding (HEVC) text specification draft 8", Joint Collaborative Team on Video Coding (JCT-VC) de ITU-T SG16 WP3 e ISO / IEC JTC1 / SC29 / WG11, 11° Encontro, Shanghai, China, em outubro de 2012, que a partir de 08 maio de 2013, está disponível a partir de http://phenix.int- evry.fr/jct/docenduser/documents/11Shanghai/WG11/JCTVC- K1003-V 13.zip. Além disso, o codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com a codificação de vídeo escalável, codificação multivista, e extensões 3DV para HEVC que estão atualmente sob desenvolvimento. A extensão de codificação de vídeo escalável de HEVC pode ser referida como SHEVC. A extensão 3DV de HEVC pode ser referida como 3DV baseado em HEVC ou 3D-HEVC.
[0051] Em HEVC e outras especificações de codificação de vídeo, uma sequência de vídeo, normalmente inclui uma série de imagens. As imagens também podem ser referidas como "quadros". A imagem pode incluir três matrizes de amostra, denotado SL, SCb e SCr é uma matriz bidimensional (ou seja, um bloco) de amostras de luminância. SCb é uma matriz bidimensional de amostras de crominância Cb. SCr é uma matriz bidimensional de amostras de crominância Cr. Amostras de crominância também podem ser aqui referidas como amostras de "croma". Em outros casos, a imagem pode ser monocromática e só pode incluir uma variedade de amostras de luminância.
[0052] Para gerar uma representação codificada de uma imagem, codificador de vídeo 20 pode gerar um conjunto de unidades de árvore de codificação (CTU). Cada uma das CTUs pode ser um bloco de árvore de codificação de amostras de luminância, dois blocos de árvore de codificação correspondentes de amostras de crominância, e estruturas de sintaxe utilizadas para codificar as amostras de blocos de árvores de codificação. Um bloco de árvore de codificação pode ser um bloco NxN de amostras. Uma CTU pode também ser referida como um "bloco de árvore" ou uma "unidade de codificação maior" (LCU). A CTU de HEVC pode ser amplamente análoga aos macroblocos das outras normas, tais como o H.264 / AVC. No entanto, uma CTU não é necessariamente limitada a um tamanho particular 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 varredura de raster.
[0053] Para gerar uma CTU codificada, codificador de vídeo 20 pode de forma recursiva realizar o particionamento quad-tree sobre os blocos de árvores de codificação de uma CTU para dividir o bloco da á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 luminância e dois blocos de codificação correspondentes de amostras de crominância de uma imagem que tem uma matriz de amostra de luminância, uma matriz de amostra de Cb e uma matriz de amostra de Cr, e estruturas de sintaxe utilizadas para codificar as amostras de blocos de codificação. Em imagens monocromáticas ou imagens com três planos de cores distintas, uma CU pode compreender um único bloco de codificação e estruturas de sintaxe de codificação utilizada para codificar as amostras do bloco de codificação.
[0054] 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 é um bloco retangular (ou seja, quadrado ou não quadrado) de amostras em que a mesma predição é aplicada. Uma unidade de predição (PU) de uma CU pode compreender um bloco de predição de amostras de luminância, dois blocos de predição correspondentes de amostras de croma, e estruturas de sintaxe usadas para prever os blocos de predição. Em imagens monocromáticas ou imagens com três planos de cores distintas, uma PU pode compreender um único bloco de predição e estruturas de sintaxe utilizadas para predizer o bloco de predição. Codificador de vídeo 20 pode gerar blocos de luma, Cb e Cr preditivos para blocos de predição de luma, Cb e Cr de cada PU da CU.
[0055] Codificador de vídeo 20 pode utilizar a intrapredição ou interpredição para gerar os blocos preditivos para a PU. Se o codificador de vídeo 20 usa intrapredição para gerar os blocos preditivos de uma PU, codificador de vídeo 20 pode gerar os blocos preditivos da PU com base em amostras decodificadas da imagem associada a PU. Nesta divulgação, a frase "com base em" pode indicar "baseado, pelo menos em parte, em". Se o codificador de vídeo 20 usa interpredição para gerar os blocos preditivos de uma PU, codificador de vídeo 20 pode gerar os blocos preditivos de uma PU com base em amostras decodificadas de uma ou mais imagens diferentes da imagem associada com a PU.
[0056] Para suportar interpredição, codificador de vídeo 20 pode gerar um ou mais listas de imagem de referência. Estas listas de imagem de referência podem ser referidas como RefPicList0 e RefPicList1. Em alguns exemplos, codificador de vídeo 20 pode gerar diferentes listas de imagem de referência para diferentes imagens ou diferentes fatias de imagens. Portanto, diferentes PUs de diferentes imagens e/ou fatias podem estar associadas a diferentes versões de RefPicList0 e RefPicList1.
[0057] Além disso, quando o codificador de vídeo 20 usa interpredição para gerar um bloco preditivo de uma PU, codificador de vídeo 20 pode sinalizar informação de movimento para a PU. A informação de movimento pode incluir um índice de referência para a PU e um vetor de movimento para a PU, O índice de referência para a PU pode indicar uma posição, dentro de uma das listas de imagem de referência associadas com a PU, de uma imagem de referência. O vetor de movimento para a PU pode indicar um deslocamento espacial entre um bloco de predição da PU e uma localização de referência na imagem de referência. Codificador de vídeo 20 pode utilizar amostras da imagem de referência associada ao local de referência para gerar um bloco preditivo para a PU. Porque uma PU pode ser associada com duas imagens de referência, a PU pode ter dois índices de referência e dois vetores de movimento. Assim, uma PU pode ter um Índice de referência RefPicList0 e um índice de referência RefPicList1. Índice de referência da PU RefPieListQ indica uma imagem de referência na versão da PU de RefPicList0. Índice de referência RefPicList1 da PU indica uma imagem de referência na versão da PU de RefPicList1. Da mesma forma, a PU pode ter um vetor de movimento RefPicList0 e um vetor de movimento RefPicList1. O vetor de movimento RefPicList0 da PU pode indicar uma localização de referência na imagem de referência para a versão da PU de RefPicList0. O vetor de movimento RefPicList1 da PU pode indicar uma localização de referência na imagem de referência para a versão da PU de RefPicList1.
[0058] codificador de vídeo 20 pode sinalizar índices de referência de uma PU e vetores de movimento em um fluxo de bits. Em outras palavras, codificador de vídeo 20 pode incluir, no fluxo de bits, os dados que indicam índices de referência da PU e vetores de movimento. Decodificador de vídeo 30 pode reconstruir versões da PU de RefPicList0 e/ou RefPicList1 e pode usar a índices de referência e os vetores de movimento da PU para determinar um ou mais blocos de predição para a PU. Decodificador de vídeo 30 pode utilizar os blocos preditivos para a PU, juntamente com os dados residuais, para decodificar as amostras.
[0059] Depois do codificador de vídeo gerar 20 blocos de luma preditivos para uma ou mais PUs de uma CU, codificador de vídeo 20 pode gerar um bloco residual de luma para a CU. Cada amostra no bloco residual de luma da CU indica uma diferença entre uma amostra luma em um dos blocos de luma preditivos da Cu e uma amostra correspondente no bloco de codificação de luma inicial da CU. Além disso, o codificador de vídeo 20 pode gerar um bloco residual Cb para a CU. Cada amostra no bloco residual Cb da CU pode indicar uma diferença entre uma amostra Cb em um dos blocos preditivos Cb da Cu e uma amostra correspondente no bloco de codificação original Cb da CU. Codificador de vídeo 20 pode também gerar um bloco residual Cr para a CU. Cada amostra no bloco residual Cr da CU pode indicar uma diferença entre a amostra de Cr em um dos blocos preditivos Cr da CU e uma amostra correspondente no bloco de codificação Cr original da CU.
[0060] Além disso, o codificador de vídeo 20 pode usar particionamento quad-tree para decompor os blocos residuais de lima, Cb e Cr de uma CU em um ou mais blocos de transformada de luminância, Cb e Cr. Um bloco de transformada pode ser um bloco de amostras retangular (por exemplo, quadrado ou não quadrado) em que a mesma transformada é aplicada. A unidade de transformada (TU) de uma CU pode compreender um bloco de transformada de amostras de luma, dois blocos de transformada correspondentes de amostras de croma, e estruturas de sintaxe usadas para transformar as amostras de bloco de transformada. Assim, cada unidade de tradução de uma CU pode ser associada com um bloco de transformada de luma, um bloco de transformada Cb, e um bloco de transformada Cr. O bloco de transformada de luma associado a TU pode ser um sub-bloco do bloco residual de luma da CU. O bloco de transformada Cb pode ser um sub-bloco do bloco residual Cb da CU. O bloco de transformada Cr pode ser um sub-bloco do bloco residual Cr da CU. Em imagens monocromáticas ou imagens com três planos de cores diferentes, uma TU pode compreender um único bloco de transformada e estruturas de sintaxe utilizadas 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 de luma de uma TU para gerar um bloco de coeficientes de luma para a TU. Um bloco de coeficientes pode ser uma matriz bidimensional de coeficientes de transformada. Um coeficiente de transformada pode ser uma quantidade escalar. Codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada Cb de uma TU para gerar um bloco de coeficientes Cb para a TU. Codificador de vídeo 20 pode a aplicar uma ou mais transformadas a um bloco de transformada de uma TU para gerar um bloco de coeficientes Cr para a TU.
[0062] Depois de gerar um bloco de coeficientes (por exemplo, um bloco de coeficientes luma, um bloco de coeficientes Cb ou um bloco de coeficiente Cr), codificador de vídeo 20 pode quantizaçãor o bloco de coeficientes. Quantização geralmente refere-se a um processo em que os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados utilizada para representar os coeficientes de transformada, proporcionando a compressão adicional. Depois de codificador de vídeo 20 quantização um bloco de coeficientes, codificador de vídeo 20 pode codificar por entropia elementos de sintaxe que indicam os coeficientes de transformada quantizados. Por exemplo, codificador de vídeo 20 pode executar Codificação Aritmética binária Adaptativa de Contexto (CABAC) sobre os elementos de sintaxe indicando coeficientes de transformada quantizados.
[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 termo "fluxo de bits" pode ser um termo coletivo utilizado para se referir a um fluxo de unidade de camada de abstração de rede (NAL) (por exemplo, uma sequência de unidades de NAL) ou um fluxo de bytes (por exemplo, um encapsulamento de um fluxo de unidade de NAL contendo prefixos de código de início e unidades de NAL, conforme especificado no Anexo B do padrão HEVC). Uma unidade de NAL é uma estrutura de sintaxe que contém uma indicação do tipo de dados na unidade de NAL e bytes que contêm os dados na forma de uma carga útil de sequência de bytes bruta (RBSP) intercalada como necessário com os bits de prevenção de emulação. Cada uma das unidades de NAL pode incluir um cabeçalho de unidade de NAL e pode encapsular uma RBSP. O cabeçalho de unidade de NAL pode incluir um elemento de sintaxe que indica um código de tipo de unidade de NAL. O código do tipo de unidade de NAL especificado pelo cabeçalho de uma unidade de NAL da unidade de NAL indica o tipo da unidade de NAL. Uma RBSP pode ser uma estrutura de sintaxe contendo um número inteiro de bytes que é encapsulado no interior de uma unidade de NAL. Em alguns casos, uma RBSP inclui zero bits.
[0064] Os diferentes tipos de unidades de NAL podem encapsular diferentes tipos de RBSPs. Por exemplo, um primeiro tipo de unidade de NAL pode encapsular uma RBSP para um conjunto de parâmetros de imagem (PPS), um segundo tipo de unidade de NAL pode encapsular uma RBSP para uma fatia codificada, um terceiro tipo de unidade de NAL pode encapsular uma RBSP para SEI, e assim por diante. Unidades de NAL que encapsulam RBSPs para os dados de codificação de vídeo (em oposição a RBSPs para conjuntos de parâmetros e mensagens SEI) podem ser referidos como unidades de NAL de camada de codificação de vídeo (VCL). Unidades de NAL que contêm conjuntos de parâmetros (por exemplo, conjuntos de parâmetros de vídeo (VPSs), conjuntos de parâmetros de sequência (SPSS), PPSS, etc.) podem ser referidas como unidades de NAL de conjunto de parâmetro.
[0065] O decodificador vídeo 30 pode receber um fluxo de bits gerado pelo codificador de vídeo 20. Além disso, o decodificador de vídeo 30 pode analisar o fluxo de bits para obter elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens de 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 geralmente recíproco ao processo executado pelo codificador de vídeo 20. Por exemplo, decodificador de vídeo 30 pode utilizar vetores de movimento de PUs para determinar blocos preditivos para as PUs de uma CU atual. Além disso, o decodificador de vídeo 30 pode quantizar inversamente blocos de coeficientes associados com TUs da CU atual. Decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficiente para reconstruir blocos de transformada associados a 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 para amostras correspondentes dos blocos de transformada das TUs da CU atual. Ao reconstruir os blocos de codificação para cada CU de uma imagem, decodificador de vídeo 30 pode reconstruir a imagem.
[0066] Em codificação multivista, pode haver múltiplas vistas da mesma cena a partir de diferentes pontos de vista. No contexto de codificação multivista, o termo "unidade de acesso" pode ser usado para se referir ao conjunto de imagens que correspondem ao mesmo instante de tempo. Assim, os dados de vídeo podem ser conceitualizados 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 com o 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 (ou seja, uma imagem de profundidade).
[0067] Codificação multivista suporta predição intervista. Predição intervista é semelhante a interpredição utilizada em HEVC e pode usar os mesmos elementos de sintaxe. No entanto, quando um codificador de vídeo realiza predição intervista em uma unidade de vídeo atual (tal como uma PU), o codificador vídeo 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, interpredição convencional utiliza apenas de imagens em diferentes unidades de acesso como imagens de referência.
[0068] Em codificação multivista, a vista pode ser referida como uma "vista de base" se um decodificador de vídeo (por exemplo, decodificador de vídeo 30) puder decodificar imagens na vista sem referência a imagens em qualquer outra vista. Ao codificar uma imagem em uma vista não-base, um codificador de vídeo (como o codificador de vídeo 20 ou decodificador de vídeo 30) pode adicionar uma imagem em uma lista de imagens de referência se a imagem está em uma vista diferente, mas dentro de uma mesma instância de tempo (ou seja, unidade de acesso) que a imagem que o codificador de vídeo está atualmente codificando. Como outras imagens de referência de interpredição, o codificador de vídeo pode inserir uma imagem de referência de predição intervista em qualquer posição de uma lista de imagens de referência.
[0069] Por exemplo, unidades de NAL podem incluir cabeçalhos (isto é, cabeçalhos de unidade de NAL) e cargas úteis (por exemplo, RBSPs). Os cabeçalhos de unidades de NAL podem incluir elementos de sintaxe nuh_reserved_zero_6bits. Unidades de NAL que têm elementos de sintaxe nuh_reserved_zero_6bit que especificam valores diferentes pertencem a diferentes "camadas" de um fluxo de bits. Assim, em codificação multivista, 3DV, ou SVC, o elemento de sintaxe nuh_reserved_zero_6bit de uma unidade de NAL especifica um identificador de camada (ou seja, um ID de camada) da unidade de NAL. Em alguns exemplos, o elemento de sintaxe nuh_reserved_zero_6bits de uma unidade de NAL é igual a 0, se a unidade de NAL refere-se a uma camada de base em codificação multivista, codificação3DV, ou SVC. Os 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 de NAL não se relaciona com uma camada de base em codificação multivista, 3DV, ou SVC, o elemento de sintaxe nuh_reserved_zero_6bits pode ter um valor diferente de zero. Em codificação multivista e codificação 3DV, diferentes camadas de um fluxo de bits podem corresponder a diferentes vistas. Em SVC, outras camadas diferentes da camada de base podem ser referidas como "camadas de melhoramento" e podem fornecer informações que melhoram a qualidade visual dos dados de vídeo decodificado do fluxo de bits.
[0070] Além disso, algumas imagens dentro de uma camada podem ser recebidas sem referência a outras imagens dentro da mesma camada. Assim, as unidades de NAL encapsulando dados de certas imagens de uma camada podem ser removidas do fluxo de bits sem afetar a decodificação de outras imagens na camada. Remover unidades de NAL encapsulando 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 decodificado sem referência a outras imagens no interior da camada pode ser aqui referido como uma "subcamada" ou uma "subcamada temporal".
[0071] Unidades de NAL podem incluir elementos de sintaxe temporal_id. O elemento de sintaxe temporal_id de uma unidade de NAL especifica um identificador temporal da unidade de NAL. O identificador temporal de uma unidade de NAL identifica uma subcamada com a qual a unidade NAL está associada. Assim, cada subcamada de um fluxo de bits pode ser associada a um identificador temporal diferente. Se o identificador temporal de uma primeira unidade de NAL é menor do que o identificador temporal de uma segunda unidade de NAL, os dados encapsulados pela primeira unidade de NAL podem ser decodificados sem referência aos dados encapsulados pela segunda unidade de NAL.
[0072] Em H.264 / AVC e HEVC, SPSs podem conter informações que se aplicam a todas as fatias de uma CVS. Em HEVC, um CVS pode começar a partir de uma imagem de renovação de decodificação instantânea (IDR), ou uma imagem de acesso de link quebrado (BLA), ou uma imagem de acesso aleatório limpo (CRA), que é a primeira imagem no fluxo de bits, incluindo todas as imagens subsequentes que não são uma imagem IDR ou BLA. Isto é, em HEVC, uma CVS pode compreender uma sequência de unidades de acesso que pode consistir, em ordem de decodificação, em uma unidade de acesso CRA que é a primeira unidade de acesso no fluxo de bits, uma unidade de acesso IDR ou uma unidade de acesso BLA, seguido por zero ou mais unidades de acesso não-IDR e não-BLA incluindo todas as unidades de acesso subsequentes até, mas não incluindo qualquer unidade de acesso IDR ou BLA subsequente.
[0073] HEVC e outros padrões de codificação de vídeo fornecem mecanismos que permitam acesso aleatório em fluxos de bits. O acesso aleatório refere-se a uma decodificação do fluxo de bits a partir de uma imagem codificada que não é a primeira imagem codificada no fluxo de bits. Acesso aleatório a um fluxo de bits pode ser necessário em várias aplicações de vídeo, como broadcast e streaming. Acesso aleatório a um fluxo de bits pode permitir que os usuários entrem em sintonia com um programa a qualquer momento, para alternar entre diferentes canais, para saltar para partes específicas de um vídeo, ou para mudar para um fluxo de bits diferente para a adaptação de fluxo (por exemplo, adaptação de uma taxa de bits, adaptação de uma taxa de quadros, a adaptação de uma resolução espacial, etc.). A inserção de imagens de pontos de acesso aleatório (RAP) em um fluxo de bits em intervalos regulares pode permitir acesso aleatório. Exemplo de tipos de imagens RAP incluem imagens IDR, imagens CRA e imagens BLA. Assim, imagens IDR, imagens CRA e imagens BLA são referidas coletivamente como imagens de ponto de acesso aleatório (RAP).
[0074] Uma imagem IDR contém apenas fatias I (isto é, fatias em que apenas intrapredição é usada). Uma imagem IDR pode ser a primeira imagem no fluxo de bits, em ordem de decodificação, ou pode aparecer mais tarde no fluxo de bits. Cada imagem IDR é a primeira imagem de uma CVS, em ordem de decodificação. Imagens IDR, tal como especificado em HEVC e H.264 / AVC, podem ser utilizadas para o acesso aleatório. No entanto, as imagens na sequência de uma imagem IDR, em ordem de decodificação não podem usar imagens decodificadas antes da imagem IDR como referência. Por conseguinte, os fluxos de bits que dependem de imagens IDR para acesso aleatório podem ter eficiência de codificação significativamente menor do que os fluxos de bits que usam outros tipos imagens de acesso aleatório. Uma unidade de acesso IDR é uma unidade de acesso que contém uma imagem de IDR.
[0075] O conceito de imagens CRA foi introduzido em HEVC para permitir imagens que seguem uma imagem CRA, em ordem de decodificação, mas precedem a imagem CRA em ordem de saída, para usar imagens decodificadas antes da imagem CRA para referência. Imagens que seguem uma imagem CRA, em ordem de decodificação, mas precedem a imagem CRA, em ordem de saída, são referidas como imagens líderes associadas com a imagem CRA (ou imagens líderes da imagem CRA). Isto é, para melhorar a eficiência de codificação, o conceito de imagens CRA foi introduzido em HEVC para permitir imagens que seguem uma imagem CRA, em ordem de decodificação, mas precedem a imagem CRA, em ordem de saída, para usar imagens decodificadas antes da imagem CRA como referência. A unidade de acesso CRA é uma unidade de acesso em que a imagem codificada é uma imagem CRA.
[0076] As imagens líderes de uma imagem CRA são corretamente decodificáveis se a decodificação começar a partir de uma imagem IDR ou imagem CRA ocorrer antes da imagem CRA, em ordem de decodificação. No entanto, as imagens líderes de uma imagem CRA podem ser não decodificáveis quando o acesso aleatório a partir da imagem CRA ocorre. Assim, um decodificador de vídeo tipicamente decodifica as imagens líderes de uma imagem CRA durante a decodificação de acesso aleatório. Para evitar a propagação de erros provenientes de imagens de referência que podem não estar disponíveis dependendo de onde a decodificação inicia, nenhuma imagem que segue uma imagem CRA em ambas a ordem de decodificação e ordem de saída pode usar qualquer imagem que precede a imagem CRA ou em ordem de decodificação ou ordem de saída (que inclui as imagens líderes) como referência.
[0077] O conceito de uma imagem de acesso de link quebrado (BLA) foi introduzido em HEVC após a introdução de imagens CRA e baseia-se no conceito de imagens CRA. A imagem BLA habitualmente originária do fluxo de bits emendado na posição de uma imagem CRA, e no fluxo de bits emendado na imagem CRA de ponto é alterada para uma imagem BLA. Uma unidade de acesso que contém uma imagem de RAP pode ser aqui referida como uma unidade de acesso de RAP. A unidade de acesso BLA é uma unidade de acesso que contém uma imagem BLA.
[0078] Uma das diferenças entre imagens BLA e imagens CRA é como se segue. Para uma imagem CRA, as imagens líderes associadas são corretamente decodificáveis se a decodificação começar a partir de uma imagem RAP antes da imagem CRA, em ordem de decodificação. No entanto, as imagens líderes associadas com uma imagem CRA podem não ser corretamente decodificáveis quando o acesso aleatório a partir da imagem CRA ocorre (ou seja, quando a decodificação começa a partir da imagem CRA, ou em outras palavras, quando a imagem CRA é a primeira imagem no fluxo de bits). Em contraste, pode não haver qualquer cenário onde as imagens líderes associadas com uma imagem BLA são decodificável, mesmo quando a decodificação é iniciada a partir de uma imagem de RAP antes da imagem BLA, em ordem de decodificação.
[0079] Algumas das imagens líderes associadas com a imagem CRA em particular ou uma determinada imagem BLA pode ser corretamente decodificável mesmo quando a imagem CRA particular ou a imagem BLA particular é a primeira imagem em um fluxo de bits. Estas imagens líderes podem ser referidas como imagens líderes decodificáveis (DLP). Outras imagens líderes podem ser referidas como imagens líderes não decodificáveis (NLPs). Projeto HEVC de Trabalho 8 também pode se referir a NLPs como marcadas para imagens de descarte (TFD).
[0080] Um VPS é uma estrutura de sintaxe que compreende elementos de sintaxe que se aplicam a zero ou mais CVSs inteiros. Um SPS é uma estrutura de sintaxe contendo 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.
[0081] Um conjunto de parâmetros (por exemplo, um VPS, SPS, PPS, etc.) pode conter uma identificação que é referenciada, direta ou indiretamente, a partir de um cabeçalho de fatia de uma fatia. O processo referenciando é conhecido como "ativação". Assim, quando o decodificador de vídeo 30 está decodificando uma fatia particular, um conjunto de parâmetros de referência, direta ou indiretamente, por um elemento de sintaxe em um cabeçalho de fatia da fatia particular é dito ser "ativado". Dependendo do tipo de conjunto de parâmetros, a ativação pode ocorrer em uma base por imagem ou uma base por sequência. Por exemplo, um cabeçalho de fatia de uma fatia pode incluir um elemento de sintaxe que identifica um PPS, Assim, quando um codificador de vídeo codifica a fatia, o PPS pode ser ativado. Além disso, o PPS pode incluir um elemento de sintaxe que identifica um SPS, Assim, quando um PPS que identifica o SPS é ativado, o SPS pode ser ativado. O SPS pode incluir um elemento de sintaxe que identifica um VPS. Assim, quando um SPS que identifica o VPS é ativado, o VPS é ativado,
[0082] HEVC e outros padrões de codificação de vídeo especificam perfis, séries, e níveis. Perfis, séries, e níveis especificam restrições em fluxos de bits e, portanto, limitam as possibilidades necessárias para decodificar os fluxos de bits. Perfis de camadas, e níveis podem também ser utilizados para indicar pontos de interoperabilidade entre as implementações de decodificador individuais. Cada perfil pode especificar um subconjunto de recursos algorítmicos e limites que é suportado por todos os decodificadores de vídeo em conformidade com esse perfil. Os codificadores de vídeo não são obrigados a fazer uso de todos os recursos suportados em um perfil. Cada nível de uma camada pode especificar um conjunto de limites sobre os valores que os elementos de sintaxe podem ter. O mesmo conjunto de definições de nível e camada pode ser usado com todos os perfis, mas implementações individuais podem suportar diferentes camadas e, dentro de uma camada, níveis diferentes para cada perfil suportado. Para qualquer perfil dado, um nível ou uma camada pode geralmente corresponder a uma capacidade de carga de processamento de decodificador e memória particular. Capacidades de decodificadores de vídeo podem ser especificadas em termos da capacidade para decodificar fluxos de vídeo em conformidade com as restrições de perfis, séries, e níveis particulares. Para cada perfil, a camada e nível suportados para esse perfil também podem ser expressos. Alguns decodificadores de vídeo podem não ser capazes de decodificar os perfis, séries, ou níveis particulares.
[0083] Em HEVC, perfis, séries, e níveis podem ser sinalizados pela estrutura de sintaxe profile_tier_levei (). 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_tier_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 ao qual o CVS se conforma. O elemento de sintaxe general_tier_flag pode indicar um contexto de camada para interpretação do elemento de sintaxe general_level_idc. O elemento de sintaxe general_level_idc pode indicar um nível ao qual um CVS se conforma. Outros valores para esses elementos de sintaxe podem ser reservados.
[0084] As capacidades de decodificadores de vídeo podem ser especificadas em termos de capacidade para decodificar fluxos de vídeo em conformidade com as restrições de perfis, camadas, e níveis. Para cada perfil, a camada e nível suportados para esse perfil também podem ser expressos. Em alguns exemplos, decodificadores de vídeo não inferem que um valor reservado do elemento de sintaxe generaf__profife__idc entre os valores especificados no HEVC indica capacidades intermediárias entre os perfis especificados. No entanto, decodificadores de vídeo podem inferir que um valor reservado do elemento de sintaxe general_level_idc associado a um determinado valor do elemento de sintaxe general_tiier_flag entre os valores especificados no HEVC indica capacidades intermediárias entre os níveis específicos da camada.
[0085] Um ou mais fluxos de bits de HEVC podem ser armazenados em um arquivo que está em conformidade com um formato de arquivo particular. Em alguns exemplos, um ou mais fluxos de bits de dados de vídeo (por exemplo, fluxos de bits de HEVC) podem ser armazenados em um arquivo que está em conformidade com um formato de arquivo de mídia de base ISO (ISOBMFF). ISOBMFF também pode ser referido como ISO / IEC 14496-12. Outros formatos de arquivo exemplares para o armazenamento de fluxos de bits de dados de vídeo incluem formatos de arquivo derivados de ISOBMFF, incluindo o formato de arquivo MPEG-4 (ISO / IEC 14496-14), formato de arquivo de Third Generation Partnership Project (3GPP) (3GPP TS 26,244), e o formato de arquivo AVC (ISO / IEC 14496-15). Uma alteração no formato de arquivo AVC para armazenamento de conteúdo de vídeo de HEVC está em desenvolvimento pela MPEG. Esta alteração de formato de arquivo de AVC pode ser referida como o formato de arquivo de HEVC. Ou seja, o formato de arquivo de HEVC está sendo desenvolvido pelo MPEG, que está se tornando uma parte da ISO / IEC 14496-15.
[0086] Um arquivo em conformidade com o formato de arquivo de HEVC pode ter uma estrutura lógica, uma estrutura de tempo, e uma estrutura física. A estrutura lógica do arquivo pode ser a de um filme que contém um conjunto de faixas paralelas de tempo. A estrutura de tempo do arquivo é aquela que faixas contêm sequências de amostras no tempo. As sequências de amostras podem ser mapeadas em uma linha do tempo do filme editando listas. No contexto do formato de arquivo de HEVC, uma "amostra" pode incluir os dados associados a uma única marca de tempo. Exemplos de uma amostra incluem: um quadro individual de vídeo, uma série de quadros de vídeo, em ordem de decodificação, ou uma seção comprimida de áudio, em ordem de decodificação.
[0087] Fisicamente, um arquivo em conformidade com o formato de arquivo de HEVC pode compreender uma série de objetos, chamados caixas. A caixa pode ser um bloco de construção orientado a objetos definidos por um identificador de tipo exclusivo e comprimento. Em alguns casos, todos os dados em um arquivo em conformidade com o formato de arquivo de HEVC podem ser contidos dentro de caixas e pode não haver dados no arquivo que não estão em uma caixa. Um arquivo em conformidade com o formato de arquivo de HEVC pode incluir vários tipos de caixas.
[0088] Por exemplo, um arquivo em conformidade com o formato de arquivo de HEVC pode incluir uma caixa de tipo de arquivo, uma caixa de dados de mídia, uma caixa de filme, uma caixa de fragmento de filme, e assim por diante. Neste exemplo, uma caixa de tipo de arquivo inclui informações de tipo de arquivo e compatibilidade. Uma caixa de dados de mídia pode conter amostras (por exemplo, imagens codificadas). Uma caixa de filme pode conter metadados sobre o filme (por exemplo, relações de lógica e de sincronização entre amostras, e também ponteiros para locais de amostras). Caixas de filme podem incluir vários tipos de subcaixas. As subcaixas em caixas de filmes podem incluir uma ou mais caixas de faixa. Uma caixa de faixa pode incluir informações sobre uma faixa individual de um filme. Uma caixa de faixa pode incluir uma caixa de cabeçalho da faixa que especifica informações globais de uma única faixa. Além disso, uma caixa de faixa pode incluir uma caixa de mídia que contém uma caixa de informações da mídia. A caixa de informações de mídia pode incluir uma caixa de tabela de amostra que contém a indexação de dados de amostras de mídia na faixa. Informações na caixa de tabela de amostra podem ser utilizadas para localizar amostras em tempo e, para cada uma das amostras da faixa, um tipo, tamanho, recipiente, e deslocamento naquele recipiente da amostra.
[0089] Além disso, uma caixa de tabela exemplar pode incluir uma ou mais caixas de SampleToGroup e uma ou mais caixas de descrição de grupos de amostra (isto é, caixas SampleGroupDescription). Uma caixa SampleToGroup pode ser utilizada para determinar um grupo de amostra ao qual uma amostra pertence, juntamente com uma descrição associada do grupo de amostra. Em outras palavras, uma caixa SampleToGroup pode indicar um grupo ao qual pertence uma amostra. Uma caixa SampleToGroup pode ter um tipo de caixa de “sbgp”. Uma caixa SampleToGroup pode incluir um elemento do tipo de agrupamento (por exemplo, grouping_type). O elemento do tipo de agrupamento pode ser um inteiro que identifica um tipo (isto é, um critério utilizado para formar os grupos de amostra) de uma amostra de agrupamento. Além disso, uma caixa SampleToGroup pode incluir uma ou mais entradas. Cada entrada em uma caixa SampleToGroup pode ser associada com uma série diferente, não sobreposta de amostras consecutivas na faixa. Cada entrada pode indicar um elemento de contagem de amostra (por exemplo, a contagem de amostra) e um elemento de índice de descrição de grupo (por exemplo, índice de descrição de grupo). O elemento de contagem de amostra de uma entrada pode indicar um número de amostras associadas com a entrada. Em outras palavras, o elemento de contagem da amostra da entrada pode ser um inteiro que indica o número de amostras consecutivas, com o mesmo descritor de grupo de amostra. O elemento de índice de descrição de grupo pode identificar uma caixa SampleGroupDescription que contém uma descrição das amostras associadas com a entrada. Os elementos de índice de descrição de grupo de múltiplas entradas podem identificar a mesma caixa SampleGroupDescnption.
[0090] Em alguns exemplos, o seguinte pseudocódigo descreve uma caixa SampleToGroup. aligned (8) class SampleToGroupBox extend FullBox (‘sbgp’, version = 0, 0) { unsigned int (32) grouping_type; unsigned int (32) entry_cont; for (i = 1; i <= entry_cont; { unsigned int (32) sample)count; unsigned int (32) group_description_index } };
[0091] Conforme indicado acima, uma caixa de tabela exemplar pode incluir zero ou mais caixas SampleGroupDescnption. Uma caixa SampleGroupDescnption pode incluir a descrição de um grupo de amostra. Pode haver várias instâncias da caixa SampleGroupDescription se houver mais do que um agrupamento de amostra para as amostras em uma faixa. Uma caixa SampleGroupDescription pode ter um tipo de caixa de "sgpd."
[0092] Em alguns exemplos, o seguinte pseudocódigo descreve um exemplo de caixa SampleGroupDescription. aligned (8) class SampleGroupDescriptionBox (unsigned int (32) handler_type) extends FullBo ('sgpd', 0, 0) { unsigned int (32) grouping_type; unsigned int (32) entry_count; int i; para (i = 1; i <= entry_count; i ++) { switch (handler_type) { case 'vide': // para faixas de vídeo VisualSampleGroupEntry (); break; caso ‘sound’: // para faixas de áudio AudioSampleGroupEntry (); break; caso ‘hint’: para as faixas de dica HiritSampIeGroupEnt e (); break; } } }
[0093] Tal como mostrado no pseudocódigo acima, uma caixa SampleGroupDescription pode incluir um elemento grouping _type, um elemento entry_count, e uma ou mais entradas. O elemento grouping_type de uma SampleGroupDescriptionBox pode ser um inteiro que identifica uma caixa SampleToGroup que está associada com a caixa SampleGroupDescription. O elemento entry_count pode indicar um número de entradas na caixa SampleGroupDescription. Cada entrada na caixa SampleGroupDescription pode incluir um objeto VisualSampleGroupEntry, um objeto AudioSampleGroupEntry, ou um objeto HintSampleGroupEniry. Um objeto VisualSampleGroupEntry pode fornecer uma descrição sobre um grupo de amostras visuais (por exemplo, vídeo). Um objeto AudioSampleGroupEntry pode fornecer uma descrição sobre um grupo de amostras de áudio. Um objeto HintSampleGroupEntry pode fornecer uma descrição sobre um grupo de amostras de dica. Objetos VisualSampleGroupEntry e objetos AudioSampleGroupEntry podem pertencer a uma classe abstrata que estende uma classe SampleGroupDescriptionEntry abstrata.
[0094] Além disso, uma caixa de tabela exemplar pode incluir uma caixa de descrição da amostra que contém uma descrição de formato para um fluxo. Em particular, a caixa de descrição da amostra pode incluir uma lista de uma ou mais entradas exemplares. Cada uma das entradas da amostra pode conter um nome de um tipo de mídia (por exemplo, um tipo de decodificador necessário para decodificar o fluxo) e qualquer parametrização daquele decodificador necessário. Por exemplo, no contexto de HEVC, uma entrada de amostra pode incluir um registro de configuração de decodificador HEVC. Assim, um registro de configuração de decodificador HEVC pode ser uma subcaixa de uma caixa de tabela exemplar. Um registro de configuração de decodificador HEVC pode incluir informações de configuração de decodificador para conteúdo de vídeo de ISO / IEC 23008-2 (isto é, HEVC). Por exemplo, um registro de configuração de decodificador HEVC pode incluir uma ou mais unidades de NAL que contêm conjuntos de parâmetros (por exemplo, VPS, SPS, EPP, etc).
[0095] Como indicado acima, um arquivo em conformidade com o formato de arquivo de HEVC pode incluir uma caixa de fragmento de filme. Uma caixa de fragmento de filme pode conter metadados sobre um fragmento de filme (ou seja, um fragmento de um filme). Uma caixa de fragmento de filme pode incluir uma caixa de fragmento de faixa que inclui informações sobre um fragmento de uma faixa de um fragmento de filme. Além disso, uma caixa de fragmento de faixa pode incluir uma ou mais caixas de SampleToGroiip que possam indicar os grupos de amostra aos quais amostras de um fragmento de filme pertencem.
[0096] No exemplo da figura 1, sistema de codificação de vídeo 10 inclui um elemento rede de reconhecimento de mídia (MANE) 27. MANE 27 pode receber dados de vídeo gerados pelo dispositivo de origem 12 e pode transmitir dados de vídeo para dispositivo de destino 14. MANE 27 (ou outro tipo de dispositivo) pode aplicar fluxo de bits diluindo em um fluxo de bits HEVC que é codificado com múltiplas subcamadas. Em qualquer ponto no fluxo de bits, MANE 27 pode começar a remover unidades de NAL de subcamadas mais elevadas (isto é, subcamadas associadas com identificadores temporais superiores) com base no fato de as imagens nas subcamadas inferiores (isto é, subcamadas associadas com identificadores temporais inferiores) serem ainda decodificáveis porque o processo de decodificação para as imagens nas subcamadas inferiores não depende das unidades de NAL das subcamadas mais elevadas. A ação de remoção de todas as unidades de NAL com identificadores temporais superiores a um determinado valor pode ser referida como comutação descendente temporal. Comutação descendente temporal sempre será possível. Assim, o termo ponto de comutação de subcamada temporal pode referir-se a uma imagem que não tem nenhuma dependência de qualquer outra imagem que está na mesma subcamada que a imagem e a imagem que precede, em ordem de decodificação.
[0097] O termo "comutação ascendente temporal" pode referir-se à ação de começar a encaminhar unidades de NAL de uma determinada subcamada que não foi enviada até aquele ponto. Comutação ascendente temporal só é possível, se nenhuma das imagens na camada que é ligada depender de qualquer imagem na mesma subcamada antes do ponto no fluxo de bits no qual a comutação foi realizada.
[0098] Na extensão de codificação de vídeo escalável do padrão de codificação de vídeo H.264 / AVC (ou seja, H.264/SVC), pontos de comutação de subcamada temporal podem ser indicados através de elementos de sintaxe temporal_id_nesting_flag no SPSS. Por exemplo, se um elemento de sintaxe temporal_id_nesting_flag em um SPS aplicável a um CVS em particular é igual a 1, todas as imagens de CVS com identificadores temporais superiores a 0 podem ser pontos de comutação de camada temporal. Além disso, em H.264/SVC, mensagens SEI de ponto de comutação de nível temporal podem indicar pontos de comutação de subcamada temporal. Em alguns exemplos onde mensagens SEI de ponto de comutação de nível temporal indicam pontos de comutação de subcamada temporal, uma mensagem SEI de ponto de nível de comutação temporal pode conter informações sobre quanto tempo uma camada temporal de período M deveria ter sido decodificada antes de um ponto de comutação a fim de comutar para camada temporária M + 1 no ponto de comutação.
[0099] Em HEVC, como em H.264/SVC, um SPS pode incluir um elemento de sintaxe sps_temporal_id_nesting)flag. Quando o elemento de sintaxe sps_temporal_id_nesting_flag tem um valor igual a 1, todas as imagens com identificadores temporais superiores a 0 são pontos de comutação de subcamada. Em HEVC, pode haver dois tipos de imagem associados com pontos de comutação de subcamada, a saber, tipo de imagem de acesso à subcamada temporal (TSA) e tipo de imagem de acesso à subcamada temporal passo a passo (STSA). Os tipos de imagem TSA e STSA podem ser utilizados para indicar pontos de comutação de subcamada temporal.
[0100] Uma imagem TSA e imagens seguintes a imagem TSA, em ordem de decodificação não usam imagens com identificadores temporais iguais ou maiores do que a imagem TSA para a referência de interpredição. Uma imagem de TSA permite comutação ascendente, na imagem de TSA, para a subcamada que contém a imagem de TSA ou qualquer subcamada superior, a partir da subcamada imediatamente inferior. Em alguns exemplos, todos as imagens TSA têm identificadores temporais superiores a 0.
[0101] Uma imagem STSA não utiliza imagens com a mesma Temporalld como a imagem STSA para a referência de interpredição. Imagens seguintes a uma imagem STSA em ordem de decodificação com o mesmo identificador temporal, como a imagem STSA não usam imagens antes da imagem STSA em ordem de decodificação com o mesmo identificador temporal, como a imagem STSA para a referência de interpredição. Uma imagem de STSA permite comutação ascendente, na imagem STSA, para a subcamada que contém a imagem STSA, a partir da subcamada imediatamente inferior. Em alguns exemplos, todas as imagens STSA têm identificadores temporais superiores a 0. Assim, em contraste a uma imagem TSA, uma imagem de STSA não necessariamente permite comutação ascendente a qualquer subcamada superior. Em vez disso, uma imagem STSA só pode permitir comutação ascendente para a subcamada que contém a imagem STSA.
[0102] Há vários problemas ou deficiências com os projetos existentes do formato de arquivo para armazenamento de conteúdo HEVC. Por exemplo, não há nenhuma maneira compacta para a sinalização de amostras que contêm imagens STSA (também referidas como amostras STSA). Em outro exemplo, pode não haver maneira eficiente para a sinalização de amostras que contêm intraimagens. Sinalização de amostras que contêm intraimagens pode permitir certos tipos de reprodução de modo de faixa que só usam intraimagens. Em outro exemplo, pode não haver maneira eficiente para sinalizar se comutação ascendente de subcamada temporal para qualquer camada superior pode ser realizada em qualquer amostra.
[0103] De acordo com uma técnica exemplar desta divulgação, um grupo de amostra, a saber um grupo de amostra de acesso de subcamada temporal passo a passo, para o qual o tipo de agrupamento de amostra pode ser 'STSA', marca amostras STSA. Com este mecanismo, um codificador de vídeo ou outro dispositivo, pode identificar facilmente amostras STSA.
[0104] De acordo com esta técnica exemplar, um dispositivo (por exemplo, o codificador de vídeo 20 ou outro dispositivo) pode gerar um arquivo que compreende uma pluralidade de amostras que contêm imagens codificadas. O arquivo pode também incluir uma caixa (por exemplo, um SampleToGroupBox) que identifica um grupo de amostras que contém uma ou mais amostras dentre a pluralidade de amostras. A caixa adicionalmente indica que cada amostra no grupo de amostra é uma amostra STSA. Em alguns exemplos, o dispositivo pode emitir o arquivo. Em tais exemplos, uma interface de saída (por exemplo, uma interface de rede, uma interface de unidade de disco ou, um sistema de acesso à memória, etc.) do dispositivo pode emitir o arquivo.
[0105] Da mesma forma, um dispositivo (por exemplo, decodificador de vídeo 30 ou outro dispositivo) pode identificar, com base em dados em uma caixa que identifica um grupo de amostra, amostras STSA entre amostras em um arquivo que contém a caixa. Em alguns exemplos, uma interface de entrada (por exemplo, uma interface de rede, uma interface de unidade de disco ou, um sistema de acesso à memória, etc.) do dispositivo pode receber o arquivo que contém a caixa que identifica o grupo de amostras. Além disso, em alguns exemplos, o dispositivo pode realizar comutação ascendente temporal, em uma das amostras STSA no grupo de amostra. Além disso, em alguns exemplos, decodificador de vídeo 30 pode decodificar uma ou mais das amostras STSA.
[0106] Além disso, de acordo com alguns exemplos de técnicas desta divulgação, um grupo de amostras, a saber um grupo de amostra intraimagens (isto é, uma entrada de agrupamento de amostra de intraimagens), para o qual o tipo de agrupamento de amostra pode ser ‘ipsg’ é concebido para marcar as amostras que contêm imagens intracodificadas (também referidas como intraamostras). Deste modo, uma faixa de vídeo HEVC pode conter zero instâncias ou uma instância de um SampleToGroupBox com um elemento grouping_type de "ipsg". Com este mecanismo, as amostras que contêm imagens intracodificadas podem ser facilmente identificadas, por meio do grupo de amostra de intraimagem apenas. Decodificador de vídeo 30 pode decodificar uma ou mais das imagens intracodificadas.
[0107] Em alternativa, o grupo de amostra de intraimagem marca somente amostras que contêm imagens intracodificadas não-RAP, isto é, intraimagens que não são imagens de RAP como definido no projeto de Trabalho HEVC 8. Com este mecanismo, as amostras que contêm imagens intracodificadas podem ser facilmente identificadas, tanto por meio da tabela de amostra de sinc, que marca todas as amostras que contêm imagens de RAP, e o grupo de amostra de intraimagem. Desta forma, um dispositivo (por exemplo, codificador de vídeo 20 ou outro dispositivo) pode gerar um arquivo que compreende imagens intracodificadas de ponto de acesso não aleatório (não-RAP), em que um grupo de amostra marca a imagens intracodificadas não-RAP no arquivo.
[0108] Além disso, de acordo com alguns exemplos de técnicas desta divulgação, se comutação ascendente de subcamada temporal para qualquer camada superior temporal, pode ser executada em qualquer amostra é sinalizada em uma entrada de amostra, por exemplo, utilizando um flag. Em alguns exemplos, codificador de vídeo 20 ou outro dispositivo pode gerar um registro (por exemplo, um registro de configuração de decodificador HEVC) que inclui um elemento. O elemento que tem um primeiro valor indica que a comutação ascendente de subcamada temporal para qualquer camada superior temporal pode ser executada em qualquer amostra. O elemento que tem um segundo valor indica que não é garantido que comutação ascendente de subcamada temporal para qualquer camada superior possa ser realizada em qualquer amostra. Além disso, em alguns exemplos, quando o elemento tem o primeiro valor, todos SPSs que são ativados quando um fluxo para o qual o registro se aplica é decodificado têm elementos de sintaxe que indicam se comutação ascendente de subcamada temporal para qualquer camada superior temporal pode ser executada em qualquer amostra.
[0109] Deste modo, um dispositivo (por exemplo, codificador de vídeo 20 ou outro dispositivo) pode gerar um arquivo que armazena amostras codificadas que contêm imagens codificadas dos dados de vídeo. O arquivo também pode incluir uma caixa que inclui um registro (por exemplo, um registro de configuração de decodificador, tal como um registro de configuração de decodificador HEVC) que inclui um elemento que indica se todos SPSs que são ativados quando um fluxo ao qual o registro se aplica é decodificado tem elementos de sintaxe que indicam que comutação ascendente de subcamada temporal para qualquer subcamada superior temporal pode ser executada em qualquer amostra associada com os SPSs. Em alguns exemplos, uma interface de saída (por exemplo, uma interface de rede, uma interface de unidade de disco ou, um sistema de acesso à memória, etc.) do dispositivo pode emitir o arquivo. Assim, um dispositivo (por exemplo, decodificador de vídeo 30 ou outro dispositivo) pode determinar, com base em um elemento em um registro (por exemplo, um registro de configuração de decodificador, como um registro de configuração de decodificador HEVC) em uma caixa de um arquivo que contém amostras que contêm imagens codificadas dos dados de vídeo, que todos SPSs que são ativados quando um fluxo ao qual o registro se aplica é decodificado têm elementos de sintaxe que indicam que comutação ascendente de subcamada temporal para qualquer subcamada superior temporal pode ser executada em qualquer amostra associada com os SPSs. Em alguns exemplos, uma interface de entrada (por exemplo, uma interface de rede, uma interface de unidade de disco ou, um sistema de acesso à memória, etc.) do dispositivo pode receber o arquivo que contém as amostras que contêm as imagens codificadas de dados de vídeo. Além disso, em alguns exemplos, o dispositivo pode realizar comutação ascendente temporal em uma amostra associada com um dos SPSs.
[0110] As técnicas da presente divulgação podem também aplicar-se a outros conteúdos de vídeo codificado usando outros codecs de vídeo diferentes do HEVC.
[0111] A figura 2 é um diagrama de blocos ilustrando um codificador de vídeo exemplar 20 que pode implementar as técnicas desta divulgação. A figura 2 é proporcionada para fins de explicação e não deve ser considerada como limitativa das técnicas como amplamente exemplificadas e descritas nesta divulgação. Para efeitos da explicação, esta divulgação descreve o codificador de vídeo 20, no contexto da codificação HEVC. No entanto, as técnicas desta divulgação podem ser aplicadas a outras normas ou métodos de codificação.
[0112] No exemplo da figura 2, o codificador de vídeo 20 inclui uma unidade de processamento de predição 100, 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. Unidade de processamento de predição 100 inclui uma unidade de processamento de interpredição 120 e uma unidade de processamento de intrapredição 126. Unidade de processamento de interpredição 120 inclui uma unidade de estimação de movimento 122 e uma unidade de compensação de movimento 124. Em outros exemplos, o codificador de vídeo 20 pode incluir mais, menos ou diferentes componentes funcionais.
[0113] O codificador de vídeo 20 pode receber dados de vídeo. Codificador de vídeo 20 pode codificar cada CTU em uma fatia de uma imagem dos dados de vídeo. Codificador de vídeo 20 pode codificar CUs de uma CTU para gerar representações codificadas das CUs (ou seja, CUs codificadas). Como parte de codificar uma CU, unidade de processamento de predição 100 pode particionar os blocos de codificação associados a CU entre uma ou mais PUs da CU. Assim, cada PU pode ser associada com um bloco de predição de luma e correspondentes blocos de predição de croma. Codificador de vídeo 20 e decodificador de vídeo 30 podem suportar PUs tendo vários tamanhos. O tamanho de uma CU pode referir-se ao tamanho do bloco de codificação de luma da CU e o tamanho de uma PU pode referir-se ao tamanho de um bloco de predição de luma da PU. Supondo-se que o tamanho de uma CU particular seja 2Nx2N, codificador de vídeo 20 e decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou NxN para a intrapredição e tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, NxN, ou similar para a interpredição. Codificador de vídeo 20 e decodificador de vídeo 30 podem também suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2 para a interpredição.
[0114] 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ção de movimento para a PU. Unidade de processamento de interpredição 120 pode executar diferentes operações para uma PU de uma CU dependendo de se a PU é uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intrapreditas. Por isso, se a PU é uma fatia I, a unidade de processamento de interpredição 120 não realiza entre a predição sobre a PU.
[0115] Se uma PU está em uma fatia P, a unidade de estimação de movimento 122 pode buscar as imagens de referência em uma lista de imagens de referência (por exemplo, "RefPicList0") para uma região de referência para a PU. A região de referência para a PU pode ser uma região, dentro de uma imagem de referência, que contém amostras que mais estreitamente correspondem aos blocos de predição da PU. Unidade de estimação de movimento 122 pode gerar um índice de referência que indica uma posição em RefPicList0 da imagem de referência contendo a região de referência para a PU. Além disso, a unidade de estimação de movimento 122 pode gerar um vetor de movimento que indica um deslocamento espacial entre um bloco de codificação da PU e uma localização de referência associada com a região de referência. Por exemplo, o vetor de movimento pode ser um vetor bidimensional que proporciona um deslocamento a partir das coordenadas na imagem atual, para as coordenadas de uma imagem de referência. Unidade de estimação de movimento 122 pode emite o índice de referência e o vetor de movimento como a informação de movimento da PU. Unidade de compensação de movimento 124 pode gerar os blocos preditivos da PU com base em amostras reais ou interpoladas na localização indicada pela referência do vetor de movimento da PU.
[0116] Se uma PU está em uma fatia B, unidade de estimação de movimento 122 pode executar unipredição ou bipredição para a PU. Para executar unipredição para a PU, a unidade de estimação de movimento 122 pode buscar as imagens de referência de RefPicList0 ou uma segunda lista de imagens de referência ("RefPicList1") para uma região de referência para a PU. Unidade de estimação de movimento 122 pode emitir, como a informação de movimento da PU, um índice de referência que indica uma posição em RefPicList0 ou RefPicList1 da imagem de referência que contém a região de referência, um vetor de movimento que indica um deslocamento espacial entre um bloco de predição da PU e uma localização de referência associada com a região de referência, e um ou mais indicadores de direção de predição que indicam se a imagem de referência está em RefPicList0 ou RefPicList1. A unidade de compensação de movimento 124 pode gerar os blocos preditivos da PU com base, pelo menos em parte, em amostras reais ou interpoladas no local de referência indicado pelo vetor de movimento da PU.
[0117] Para executar interpredição bidirecional para uma PU, a unidade de estimação de movimento 122 pode buscar as figuras de referência em RefPicList0 para uma região de referência para a PU e pode também buscar as figuras de referência em RefPicList1 para outra região de referência para a PU. Unidade de estimação de movimento 122 pode gerar índices de referência que indicam as posições em RefPicList0 e RefPicList1 das imagens de referência que contêm as regiões de referência. Além disso, a unidade de estimação de movimento 122 pode gerar os vetores de movimento que indicam deslocamentos espaciais entre os locais de referência associados com as regiões de referência e um bloco de predição da PU. A informação relativa ao movimento da PU pode incluir os índices de referência e os vetores de movimento da PU. Unidade de compensação de movimento 124 pode gerar os blocos preditivos da PU com base, pelo menos em parte, em amostras reais ou interpoladas nos locais de referência indicados pelos vetores de movimento da PU.
[0118] A unidade de processamento de intrapredição 126 pode gerar dados preditivos de uma PU realizando intrapredição na PU. Os dados preditivos para a PU podem incluir blocos preditivos para a PU e vários elementos de sintaxe. Unidade de processamento de intrapredição 126 pode executar intrapredição sobre a PU em fatias I, fatias P e fatias B.
[0119] Para executar intrapredição em uma PU, unidade de processamento de intrapredição 126 pode usar vários modos de intrapredição para gerar vários conjuntos de blocos preditivos para a PU. Ao realizar a intrapredição utilizando um modo de intrapredição particular, unidade de processamento de intrapredição 126 pode gerar blocos preditivos para a PU usando um determinado conjunto de amostras a partir de blocos vizinhos. Os blocos vizinhos podem estar acima, acima e à direita, acima e à esquerda ou à esquerda dos blocos de predição da PU, assumindo uma ordem de codificação da esquerda para a direita, de cima para baixo para PUs, CUs e CTUs. Unidade de processamento de intrapredição 126 pode usar vários números de modos de intrapredição, por exemplo, 33 modos de intrapredição direcionais. Em alguns exemplos, o número de modos de intrapredição pode depender do tamanho dos blocos de predição da PU.
[0120] A unidade de processamento de predição 100 pode selecionar os dados preditivos para PUs de uma CU entre os dados preditivos gerados por 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, unidade de processamento de predição 100 seleciona os dados preditivos para as PUs da CU com base em métricas / taxa de distorção dos conjuntos de dados de predição. Os blocos preditivos dos dados preditivos selecionados podem ser aqui referidos como os blocos preditivos selecionados.
[0121] A unidade de geração residual 102 pode gerar, com base em blocos de codificação de luma, Cb e Cr de uma CU e os blocos de luma, Cb e Cr preditivos selecionados das PUs da CU, blocos de luma, Cb e Cr da CU. Por exemplo, a unidade de geração residual 102 pode gerar os blocos residuais da CU de tal forma que cada amostra nos blocos residuais tem um valor igual a diferença entre uma amostra em um bloco de codificação da CU e uma amostra correspondente em um bloco preditivo correspondente selecionado de uma PU da CU.
[0122] A unidade de processamento de transformada 104 pode executar o particionamento quad-tree para particionar os blocos residuais de uma CU em blocos de transformada associados com TUs da CU. Assim, uma TU pode ser associada com um bloco de transformada de luma e dois blocos de transformada de croma correspondentes. Os tamanhos e as posições dos blocos de transformada de luma e chroma das TUs de uma CU podem ou não ser com base nos tamanhos e posições dos blocos de predição das PUs da CU.
[0123] A unidade de processamento de transformada 104 pode gerar blocos de coeficientes de transformada para cada TU de uma CU, aplicando uma ou mais transformadas para os blocos de transformada da TU. A unidade de processamento de transformada 104 pode aplicar várias transformadas para um bloco de transformar associado a uma TU. Por exemplo, a unidade de processamento de transformada 104 pode aplicar uma transformar discreta de cosseno (DCT), uma transformada direcional, ou uma transformada conceitualmente semelhante a um bloco de transformada. Em alguns exemplos, unidade de processamento transformada 104 não aplica transformadas a um bloco de transformada. Nestes exemplos, o bloco de transformada pode ser tratado como um bloco de coeficiente de transformada.
[0124] A unidade de quantização 106 pode quantizar os coeficientes de transformada em um bloco de coeficientes. O processo de quantização pode reduzir a profundidade do bit associado com alguns ou todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de n-bit pode ser arredondado para um coeficiente de transformada de m- bit durante a quantização, onde n é maior do que m. Unidade de quantização 106 pode quantizar um bloco de coeficientes associados com uma TU de uma CU com base em um valor de parâmetro de quantização (QP) associado com a CU. Codificador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficientes associados com uma CU, ajustando o valor associado com o QP da CU. Quantização pode introduzir a perda de informações, assim coeficientes de transformada quantizados podem ter precisão menor do que os originais.
[0125] A unidade de quantização inversa 108 e unidade de processamento de transformada inversa 110 podem aplicar quantização inversa e transformada inversa em um bloco de coeficientes, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficientes. Unidade de reconstrução 112 pode adicionar o bloco residual reconstruído para 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 um 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.
[0126] A unidade de filtro 114 pode realizar uma ou mais operações de remoção de blocos para reduzir os artefatos de bloqueio nos blocos de codificação associados com uma CU. Buffer de imagem decodificada 116 pode armazenar os blocos de codificação reconstruídos após a unidade de filtro 114 realizar uma ou mais operações de remoção de blocos sobre os blocos de codificação reconstituídos. A unidade de interpredição 120 pode usar uma imagem de referência que contém os blocos de codificação reconstruídos para realizar interpredição sobre PUs de outras imagens. Além disso, a unidade de processamento de intrapredição 126 pode usar blocos de codificação reconstruídos em buffer de imagem decodificada 116 para realizar a intrapredição em outras PUs na mesma imagem como a CU.
[0127] 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. Unidade de codificação de entropia 118 pode realizar um ou mais operações de codificação de entropia sobre os dados para gerar dados codificados por entropia. Por exemplo, a unidade de codificação de entropia 118 pode realizar uma operação de codificação de comprimento variável adaptativa de contexto (CAVLC), uma operação CABAC, uma operação de codificação de comprimento variável-para-variável (V2V), uma operação de codificação de comprimento variável adaptativa de contexto baseada em sintaxe (SBAC) operação, uma operação de codificação por entropia de particionamento de intervalo de probabilidade (PIPE), uma operação de codificação Golomb Exponencial, ou outro tipo de operação de codificação de entropia nos dados. 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.
[0128] Em alguns exemplos, codificador de vídeo 20 pode gerar um arquivo que inclui o fluxo de bits. Em conformidade com uma ou mais das técnicas desta descrição, o processo pode compreender uma pluralidade de amostras que contêm imagens codificadas. O arquivo pode também incluir uma caixa que identifica um grupo de amostras que contém uma ou mais amostras dentre a pluralidade de amostras. A caixa pode indicar, ainda, que cada amostra no grupo de amostra é uma amostra STSA. Além disso, de acordo com uma ou mais técnicas desta divulgação, o arquivo pode armazenar amostras codificadas que contêm imagens codificadas de dados de vídeo. O arquivo também pode incluir uma caixa que inclui um registro que inclui um elemento que indica se todos SPSs que são ativados quando um fluxo ao qual o registro se aplica é decodificado têm elementos de sintaxe que indicam que comutação ascendente de subcamada temporal para qualquer subcamada temporal superior, pode ser realizada em qualquer amostra associada a SPSs.
[0129] A figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplar 30 que é configurado para implementar as técnicas desta divulgação. A figura 3 é proporcionada para fins de explicação e não é limitativa sobre as técnicas como amplamente exemplificadas e descritas nesta divulgação. Para efeitos da explicação, esta divulgação descreve o decodificador de vídeo 30 no contexto de codificação HEVC. No entanto, as técnicas desta divulgação podem ser aplicadas a outras normas ou métodos de codificação.
[0130] No exemplo da figura 3, decodificador de vídeo 30 inclui uma unidade de entropia 150, 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 decodificação de predição 152 inclui uma unidade de compensação de movimento 164 e uma unidade de processamento intrapredição 166. Em outros exemplos, decodificador de vídeo 30 pode incluem mais, menos ou diferentes componentes funcionais.
[0131] Um buffer de imagem codificada (CPB) 151 pode receber e armazenar dados de vídeo codificado (por exemplo, unidades de NAL) de um fluxo de bits. A unidade de decodificação de entropia 150 pode receber unidades de NAL do CPB 151 e analisar as unidades de NAL para decodificar os elementos de sintaxe. A unidade de decodificação de entropia 150 pode decodificar por entropia os elementos de sintaxe codificados por entropia nas unidades de 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.
[0132] As unidades de NAL do fluxo de bits podem incluir unidades de NAL de fatia codificada. Como parte de decodificar o fluxo de bits, unidade de decodificação de entropia 150 pode extrair e elementos de sintaxe de decodificação de entropia das unidades de NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe que pertencem a uma fatia.
[0133] Em adição a decodificação de elementos de sintaxe a partir do fluxo de bits, o decodificador de vídeo 30 pode executar uma operação de decodificação com uma CU. Ao realizar a operação de decodificação de uma CU, decodificador de vídeo 30 pode reconstruir blocos de codificação da UC.
[0134] Como parte de realizar uma operação de reconstrução em uma TU de uma UC, unidade de quantização inversa 154 podequantizar inversamente, ou seja, de- quantizar, blocos de coeficiente associados à TU. Unidade de quantização inversa 154 pode utilizar um valor QP associado com a CU da TU para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa para a unidade de quantização inversa 154 para aplicar. Isto é, a taxa de compressão, isto é, a razão entre o número de bits utilizados para representar sequência original e a comprimida, pode ser controlada ajustando o valor do QP utilizado quando se quantifica os coeficientes de transformada. A taxa de compressão pode também depender do método de codificação de entropia utilizado.
[0135] Após a unidade de quantização inversa 154 quantificar inversamente um bloco de coeficientes, unidade de processamento de transformada inversa 156 pode aplicar uma ou mais transformadas inversa ao bloco de coeficientes de forma a gerar um bloco residual associado com a TU. Por exemplo, a unidade de processamento de transformada inversa 156 pode aplicar uma DCT inversa, transformada de inteiro inversa, uma transformada inversa Karhunen-Loeve (KLT), uma transformada rotacional inversa, uma transformada direcional inversa, ou outra transformada inversa ao bloco de coeficientes.
[0136] Se uma PU é codificada usando intrapredição, unidade de processamento de intrapredição 166 pode realizar intrapredição para gerar blocos preditivos para a PU. Unidade de processamento de intrapredição 166 pode usar um modo de intrapredição para gerar blocos preditivos de luma, Cb e Cr para a PU com base nos blocos de predição de PUs espacialmente vizinhas. 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 de fluxo de bits decodificados.
[0137] A unidade de processamento de predição 152 pode construir uma primeira lista de referência de imagem (RefPicList0) e uma segunda lista de referência de imagem (RefPicList1) com base em elementos de sintaxe extraídos do fluxo de bits. Além disso, se a PU é codificada utilizando interpredição, a unidade de decodificação de entropia 150 pode obter 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, uma ou mais regiões de referência para a PU. A unidade de compensação de movimento 164 pode gerar, com base em amostras de blocos em um ou mais blocos de referência para a PU, blocos preditivos de luma, Cb e Cr para a PU.
[0138] Unidade de reconstrução 158 pode usar os blocos de transformada luma, Cb e Cr associados com TUs de uma CU e os blocos preditivos de luma, Cb e Cr das PUs da CU, ou seja, quer dados intrapredição ou dados de interpredição, conforme o caso, para reconstruir os de blocos de codificação de luma, Cb e Cr da CU. Por exemplo, a unidade de reconstrução 158 pode adicionar as amostras dos blocos de transformada luma, Cb e Cr de amostras dos blocos de predição correspondentes de luma, Cb e Cr para reconstruir os blocos de codificação de luma, Cb e Cr da CU.
[0139] A unidade de filtro 160 pode realizar uma operação de desbloqueio para reduzir blocos bloqueando artefatos associados com os blocos de codificação luma, Cb e Cr da UC. Decodificador de vídeo 30 pode armazenar os blocos de codificação luma, Cb e Cr da CU em buffer de imagem decodificada 162. Buffer de imagem decodificada 162 pode fornecer imagens de referência para posterior compensação de movimento, intrapredição e apresentação em um dispositivo de exibição, como o dispositivo de exibição 32 da figura 1. Por exemplo, decodificador de vídeo 30 pode realizar, com base em blocos de luma, Cb e Cr no buffer de imagem decodificado 162, intrapredição ou operações de interpredição na PU de outras CUs. Desta forma, decodificador de vídeo 30 pode decodificar, a partir do fluxo de bits, transformar os níveis de coeficiente do bloco de coeficientes de luminância significativa, quantificar inversamente os níveis de coeficiente de transformada os, aplicar uma transformada para transformar os níveis de coeficiente para gerar um bloco de transformada, gerar, com base, pelo menos em parte no bloco de transformada, um bloco de codificação, e emitir o bloco de codificação para exibição.
[0140] Como indicado acima, um arquivo que está em conformidade com um formato de arquivo de HEVC pode incluir zero ou mais instâncias de uma caixa SampleToGroup. Além disso, como indicado acima, cada caixa SampleToGroup pode incluir um elemento do tipo de agrupamento que identifica um tipo de amostra de um agrupamento. Em conformidade com uma ou mais das técnicas desta descrição, uma caixa SampleToGroup pode incluir um elemento do tipo de agrupamento com um valor (por exemplo, "stsa") que indica que as amostras que pertencem a um grupo de pacientes associados com a caixa SampleToGroup são STSAs. Por exemplo, uma faixa de vídeo HEVC pode conter zero instância ou uma instância de uma SampleToGroupBox com um grouping_type de "stsa". Instâncias de caixas SampleToGroup com elementos do tipo de agrupamento com valores que indicam que as amostras que pertencem a grupos de amostra associados com as caixas SampleToGroup são STSAs (por exemplo, caixas SampleToGroup com grouping_type "stsa") podem ser referidas como entradas de grupo de amostra de subcamada temporal passo a passo. A entrada de grupo de amostra de subcamada temporal passo a passo pode representar uma marcação de amostras como pontos de acesso de subcamada temporal passo a passo (ou seja, STSAs). Em outras palavras, a entrada de grupo de amostra de subcamada temporal passo a passo pode ser um grupo de amostra usado para marcar as amostras STSA. Os tipos de agrupamento de uma entrada de grupo de amostra de subcamada temporal passo a passo podem ter um tipo de grupo de "STSA".
[0141] Assim, um codificador de vídeo ou outro dispositivo pode gerar uma caixa (por exemplo, uma caixa SampleToGroup) identificando um grupo de amostra que contém uma ou mais amostras dentre uma pluralidade de amostras em um arquivo. A caixa pode indicar ainda (por exemplo, especificando o tipo de agrupamento de "STSA") que cada amostra no grupo de amostra é uma amostra STSA. Assim, um decodificador de vídeo ou outro dispositivo pode identificar, com base em dados na caixa, as amostras STSA dentre as amostras no arquivo.
[0142] Conforme indicado acima, uma caixa SampleGroupDescription pode incluir uma descrição de um grupo de amostras. Além disso, como indicado acima, uma caixa SampleGroupDescription pode incluir zero ou mais entradas. As entradas em uma caixa SampleGroupDescription podem incluir um ou mais objetos VisualSampleGroupEntry. Um objeto VisuafSampleGroupEntry pode fornecer uma descrição sobre um grupo de amostras visuais (por exemplo, vídeo). Um objeto VisualSampleGroupEntry pode pertencer a uma classe VisualSampleGroupEntry. Em conformidade com uma ou mais técnicas desta divulgação, uma classe StepWiseTemporalSubLayerEntry pode estender a classe VisualSampleGroupEntry. Assim, uma entrada em uma caixa SampleGroupDescription pode incluir um objeto pertencendo à classe StepWiseTemporalSubLayerEntry (isto é, um objeto StepWiseTemporalSubLayerEntry). Portanto, uma caixa SampleGroupDescription pode ser um recipiente de um objeto StepWiseTemporalSubLayerEntry. Pode não ser obrigatório para um arquivo conter um objeto StepWiseTemporalSubLayerEntry e o arquivo pode conter zero ou mais objetos StepWiseTemporalSubLayerEntry.
[0143] Assim, a seguinte descrição pode aplicar- se a entradas de grupo de amostra de subcamada temporal passo a passo exemplares: Tipos de Grupo: 'STSA' Recipiente : Caixa de Descrição de grupo de Amostra ('sgpd') Obrigatório: Não Quantidade: Zero ou mais Este grupo de amostra é usado para marcar amostras de acesso de subcamada temporal passo a passo (STSA).
[0144] O que se segue é uma sintaxe exemplar para uma entrada de grupo de amostra de subcamada temporal passo a passo. classe StepWiseTemporalSubLayerEnCry () estende VisualSampleGroupEntry ('stsa') { }
[0145] Em alguns exemplos, uma instância de uma caixa SampieGroupDescfiption que inclui um objeto StepWiseTemporaiSubLayerEntry pode acompanhar uma entrada de grupo de amostra de subcamada temporal passo a passo (por exemplo, uma instância de uma caixa SampleToGroup com um elemento do tipo de agrupamento de "stsa"). Assim, em alguns exemplos, quando uma caixa SampleToGroup tem um tipo de agrupamento "stsa", uma instância de acompanhamento da caixa SampieGroupDescfiption com o mesmo tipo de agrupamento deve estar presente.
[0146] Em conformidade com uma ou mais das técnicas desta descrição, uma faixa de vídeo HEVC pode conter zero ou uma instância exemplar de uma caixa SampleToGroup com um elemento grouping_type de "ipsg". Instâncias de caixas SampleToGroup com elemento groupingjype de "ipsg" podem ser referidas como agrupamentos de amostra intraimagem. Uma instância de caixa SampleToGroup com um tipo de agrupamento de "ipsg" (ou seja, uma amostra de agrupamento intraimagem) pode representar uma marcação de amostras como pontos de acesso de subcamada temporal passo a passo. Assim, um codificador de vídeo ou outro dispositivo pode gerar uma caixa (por exemplo, uma caixa SampleToGroup) identificando um grupo de amostras que contém uma ou mais amostras dentre uma pluralidade de amostras em um arquivo. A caixa pode indicar ainda (por exemplo, especificando o tipo de agrupamento de "ipsg") que cada amostra no grupo de amostra é uma amostra intra. Assim, um decodificador de vídeo ou outro dispositivo pode identificar, com base em dados na caixa, as amostras intra dentre as amostras no arquivo,
[0147] Em alguns exemplos, um exemplo de acompanhamento da caixa SampleGroupDescnption com o mesmo tipo de agrupamento se encontra presente na faixa de vídeo HEVC. Como indicado acima, uma caixa SampleGroupDescription pode incluir zero ou mais entradas. As entradas em uma caixa SampleGroupDescription podem incluir um ou mais objetos VisualSampleGroupEntry. Um objeto VisualSampleGroupEntry pode pertencer a uma classe VisualSampleGroupEntry. Além disso, de acordo com uma ou mais das técnicas desta descrição, uma classe IntraPictureEntry pode estender a classe VisualSampleGroupEntry. Assim, uma entrada de uma caixa SampleGroupDescription pode incluir um objeto pertencente a classe IntraPictureEntry (ou seja, um objeto IntraPictureEntry ou uma entrada de agrupamento de amostra intraimagem). Portanto, uma caixa SampleGroupDescription pode ser um recipiente de um objeto IntraPictureEntry. Pode não ser obrigatório para um arquivo conter um objeto IntraPictureEntry e o arquivo pode conter zero ou mais objetos IntraPictureEntry. Deste modo, um arquivo pode incluir uma caixa de descrição de grupo de amostra (por exemplo, uma caixa SampleGroupDescription) que inclui uma entrada (por exemplo, um objeto IntraPictureEntry) que indica que um grupo de amostra é utilizado para marcar as amostras que contêm imagens intracodificadas.
[0148] Assim, a seguinte descrição pode aplicar- se a entradas IntraPictureEntry: Tipos de Grupo: 'ipsg' Recipiente: Caixa de Descrição de Grupo de Amostra ('sgpd') Obrigatório: Não Quantidade: Zero ou mais Este grupo de amostra é usado para marcar as amostras que contêm imagens intracodificadas, ou seja, amostras para as quais todas as fatias são fatias intra.
[0149] O que se segue é uma sintaxe exemplar para uma entrada de agrupamento de amostra intraimagem, classe intraPictureBntry () estende visualSampleGroupEnry ('ipsa') { }
[0150] Como indicado acima, o formato de arquivo de HEVC provê um registro de configuração de decodificador HEVC. Por exemplo, uma caixa de tabela de amostra dentro de uma caixa de faixa de um arquivo que está em conformidade com o formato de arquivo de HEVC pode incluir um registro de configuração de decodificador HEVC. O registro de configuração de decodificador HEVC contém informações de configuração para conteúdo de vídeo HEVC. Por exemplo, o registro de decodificador HEVC pode incluir zero ou mais unidades de NAL. As unidades de NAL contidas em um registro de decodificador HEVC podem incluir unidades de NAL que contêm conjuntos de parâmetros, tais como VPS, SPSs, EPP, etc.
[0151] A seguir é provida uma sintaxe exemplar para um registro de configuração de decodificador HEVC. Porções da seguinte sintaxe mostradas em negrito podem indicar porções modificadas do registro de configuração de decodificador HEVC especificado no documento de saída de MPEG WI2846, "Study of ISO/IEC 14496-15:2010/PDAM2 Carriage of HEVC", 101° encontro de MPEG, Estocolmo, Suécia, 2012-0716 a 2012-07-20. alinhado (8) classe HEVCDecoderConfigurat ionRecord { unsigned int (8) configurationVersion = 1; unsigned int (2) profile_space; unsigned int (1) tier_flag; unsigned int (5) profile_idc; unsigned int (32) profile_compatibility_ indications; unsigned int (16) constraint_indicator_flags; unsigned int (8) level_idc; bit (6) = reservados = ‘111111’b; unsigned int (2) chroraaFormat; bit (5) reservados = ‘111111’b; unsigned int (3) bitDepthLiamalMiirius8; bit (5) reservado = '11111' b; unsigned int (3) bitDepthChromaMinus8; bit (16) avgFrameRate; bit (2} constantFraraeRate; bit (3) nuraTemporalLayers; bit (1) temporalldNested; unsigned int (2) lengthSizeMinusOne; unsigned int (8) numOfArrays; para (j = 0; j < numOfArrays; j++ { bit (1) integralidade de matriz; unsigned int (1) reservados = 0; unsigned int (6) NAL_unit_type; unsigned int (16) numNalus; para (i = 0; i <numNalus; i ++) { unsigned int (16) nalUnitLength; bit (8 * nalUnitLength) nalUnit; } } ]
[0152] O registro de configuração contém um tamanho de decodificador HEVC de um campo de comprimento (por exemplo, lengthSizeMinusOne) utilizado em cada amostra para indicar o comprimento de unidades de NAL contidas pelo registro de configuração de decodificador HEVC, bem como os conjuntos de parâmetros, se forem armazenados em uma entrada da amostra. O registro de configuração de decodificador HEVC pode ser enquadrado externamente. Em outras palavras, o tamanho do registro de configuração de decodificador HEVC pode ser fornecido pela estrutura que contém o registro de configuração de decodificador HEVC.
[0153] Além disso, o registro de configuração de decodificador HEVC pode conter um campo de versão. Na sintaxe exemplar apresentada acima, este campo versão é nomeado configurationVersion. Mudanças incompatíveis para o registro podem ser indicadas por uma mudança de número de versão. Em alguns exemplos, um dispositivo ou outro leitor não deve tentar decodificar um registro de configuração de decodificador HEVC ou fluxos aos quais o registro de configuração de decodificador HEVC se aplica se o dispositivo ou outro leitor não reconhece o número de versão especificado pelo campo versão do registro de configuração de decodificador HEVC . Em alguns exemplos, as extensões compatíveis para o registro de configuração de decodificador HEVC não estendem o Registro de configuração de decodificador HEVC e não mudam o código da versão de configuração especificado pelo campo versão do registro de configuração de decodificador HEVC. Um dispositivo ou outro leitor pode, em alguns exemplos, ser preparado para ignorar os dados não reconhecidos além da definição dos dados que o dispositivo ou outro leitor entende.
[0154] Um VPS pode incluir, entre outros elementos de sintaxe, um elemento de sintaxe general_profile_space, um elemento de sintaxe general_profile_idc, um elemento de sintaxe general_profile_compatibility_flag[i], e um elemento de sintaxe general_reserved_zero_16bits. O elemento de sintaxe general_proftle_space especifica um contexto para a interpretação do elemento de sintaxe general_profile_idc e o elemento de sintaxe general_profile_compatibility_flag[i], para todos os valores de i na faixa de 0 a 31, inclusive. Quando o elemento de perfil general_profile_space é igual a 0, o elemento de sintaxe general_profile_idc indica o perfil para o qual se conforma um CVS. Anexo A do Projeto de Trabalho 8 HEVC descreve um exemplo de conjunto de perfis. Quando o elemento de sintaxe general_profile_space é igual a 0 e o elemento de sintaxe general_profile_compatibility_flag [i] é igual a 1, o elemento de sintaxe general_profile_compatibility_flag [i] indica que o CVS está de acordo com um perfil indicado pelo elemento de sintaxe general_profile_idc igual a i. Quando o elemento de sintaxe general_profile_space é igual a 0, o general_profile_idc geral [general_profile_idc] é igual a 1. "general_profile_idc[general_profile_idc]" denota o elemento de sintaxe general_profile__idc associado com um valor de índice especificado pelo elemento de sintaxe general_profile_idc. Em alguns exemplos, o elemento de sintaxe general_profile_compatibility_flag [i] é igual a 0, para qualquer valor de i que não é especificado como um valor permitido de general_profile_idc. Anexo A de Projeto de Trabalho 8 HEVC especifica um exemplo de conjunto de valores permitidos do elemento de sintaxe general_profile_idc. O elemento de sintaxe general_reserved_zero_16bits é igual a 0, em fluxos de bits. Certos valores dos elementos de sintaxe general_reserved_zero_16bits podem ser usados para extensões de HEVC.
[0155] Além disso, um VPS pode incluir uma estrutura de sintaxe profile_tier_level que inclui um elemento de sintaxe general_tier_flag e um elemento de sintaxe general_leve3_idc. O elemento de sintaxe general_tier_flag especifica um contexto de nível para a interpretação do elemento de sintaxe general_level_idc. O elemento de sintaxe general_indica um nível ao qual um CVS se conforma. Anexo A de Projeto de Trabalho 8 HEVC especifica um exemplo de interpretação do elemento de sintaxe general_level_idc com base no contexto de camada especificado pelo elemento de sintaxe general_tier_flag.
[0156] No exemplo de sintaxe de registros de configuração de decodificador HEVC providos acima, os elementos profile_space, tier_flag, profile_idc, profile_compatibility_indications, constrint_indicator_flags e level__idc contêm valores correspondentes para os elementos de sintaxe general_profile_space, general_tier_flag, general_profile_idc, general_profile_compatibility [i] para i variando de 0 a 31, inclusive, general_reserved_zero_16bits e genera_level_idc, respectivamente, como definidos em ISO/CEE 23008-2, para o fluxo ao qual este registro de configuração de decodificador HEVC se aplica.
[0157] Em um exemplo, os valores para os elementos profile_space, tier_flag, profile_idc, profile_compatibility_indications, constraint_indicator_flags e level_idc de um registro de configuração de decodificador HEVC devem ser válidos para todos os conjuntos de parâmetros que são ativados quando o fluxo descrito pelo registro de configuração de decodificador HEVC é decodificado (referido como todos os conjuntos de parâmetros do fluxo ou todos os conjuntos de parâmetros). Em outras palavras, neste exemplo, os valores dos elementos profile_space, tier_flag, profile_idc, profile_compatibility_indications, constraint_indication_flags e level_idc de um registro de configuração de decodificador HEVC devem descrever corretamente os valores de um elemento de sintaxe correspondente nos conjuntos de parâmetros que são ativados quando o fluxo descrito pelo registro de configuração de decodificador HEVC é decodificado.
[0158] Por exemplo, os elementos de sintaxe general_profile_space em cada um dos VPSs ativados quando o fluxo é decodificado pode ter valores idênticos a um valor do elemento profile_space. Em outras palavras, o valor do elemento profile_space em todos os conjuntos de parâmetros têm de ser idêntico. Assim, o registro de configuração de decodificador HEVC pode incluir um elemento de perfil de espaço (por exemplo, um elemento profile_space). Todos os elementos de sintaxe de flag de espaço de perfil geral (por exemplo, elementos de sintaxe general_profile_space) em conjuntos de parâmetros que são ativados quando um fluxo ao qual o registro de configuração de decodificador HEVC se aplica é decodificado podem ter valores correspondentes do elemento de espaço de perfil.
[0159] Além disso, neste exemplo, a indicação de camada (por exemplo, tier_flag) deve indicar um nível igual ou maior do que o nível mais elevado indicado em todos os conjuntos de parâmetros ativados quando o fluxo descrito pelo registro de configuração de decodificador HEVC é decodificado. Assim, o registro de configuração de decodificador HEVC pode incluir um elemento de flag de camada (por exemplo, um elemento tier_flag). Um dispositivo pode determinar que todos os elementos de sintaxe de flag de camada geral (por exemplo, elementos de sintaxe general_tier_flag) em conjuntos de parâmetros que são ativados quando um fluxo ao qual o registro de configuração de decodificador HEVC se aplica é decodificado têm valores que correspondem a um valor do elemento de flag de camada. Cada um dos elementos gerais de sintaxe de flag de camada pode indicar um contexto de camada para interpretação de elementos sintaxe de indicador de nível geral que indicam os níveis aos quais as sequências de vídeo codificado se conformam.
[0160] Neste exemplo, o elemento de indicação de nível (por exemplo, level_idc) deve indicar um nível de capacidade igual ou maior do que o nível mais alto indicado para o nível mais elevado em todos os conjuntos de parâmetros. Assim, o registro de configuração de decodificador HEVC pode incluir um elemento indicador de nível (por exemplo, um elemento level_idc). Um dispositivo pode determinar que todos os elementos de sintaxe de indicação de nível geral (por exemplo, os elementos general_level_idc) em conjuntos de parâmetros que são ativados quando um fluxo ao qual o registro de configuração de decodificador HEVC se aplica é decodificado têm valores que correspondem a um valor do elemento de nível. Cada um dos elementos de sintaxe de indicação de nível geral pode indicar um nível ao qual uma sequência de vídeo codificado se conforma.
[0161] Neste exemplo, o elemento de indicação de perfil (por exemplo, profile_idc) deve indicar um perfil para o qual o fluxo associado ao registro de configuração de decodificador HEVC se conforma. Assim, o registro de configuração de decodificador HEVC pode incluir um elemento indicador de perfil (por exemplo, um elemento profile_idc). Um dispositivo pode determinar que todos os elementos de sintaxe de indicação de perfil (por exemplo, elementos de sintaxe profile_idc) em conjuntos de parâmetros que são ativados quando um fluxo ao qual o registro de configuração de decodificador HEVC se aplica é decodificado têm valores que correspondem a um valor do elemento de indicação de perfil. Cada um dos elementos de sintaxe de indicação de perfil pode indicar um perfil ao qual uma sequência de vídeo codificada se conforma.
[0162] Cada bit no elemento profile_compatibility_indications só pode ser definido se todos os conjuntos de parâmetros forem definidos para aquele bit. Assim, o registro de configuração de decodificador HEVC pode incluir um elemento de perfil de compatibilidade de indicações (por exemplo, um elemento profile_compatibility_indications). Um dispositivo pode determinar que todos os elementos de sintaxe do flag de compatibilidade de perfil geral (por exemplo, elementos de sintaxe general_profile_compatibility_flag) em conjuntos de parâmetros que são ativados, quando um fluxo ao qual o registro de configuração de decodificador HEVC é aplicável é decodificado, têm valores que correspondem a valores do elemento de indicações de compatibilidade de perfil.
[0163] Além disso, o registro de configuração de decodificador HEVC pode incluir um elemento de flags de indicador de restrição (por exemplo, um elemento constraint_indicator_flags). Um dispositivo pode determinar que todos os elementos de sintaxe general_reservedzero_16bits (por exemplo, elementos de sintaxe general_reserved_zero_16bits) em conjuntos de parâmetros que são ativados quando um fluxo ao qual o registro de configuração de decodificador HEVC se aplica é decodificado têm valores que correspondem a valores do elemento de indicações de compatibilidade de perfil.
[0164] Como os registros de configuração de decodificador HEVC especificam os elementos profile_space, tier_flag, profile_idc, profile_compatibility_indications, constraint_indicator_flags e level_idc, um dispositivo (por exemplo, decodificador de vídeo 30) pode ser capaz de determinar as propriedades correspondentes do fluxo sem analisar o fluxo. Em vez disso, o dispositivo pode determinar as propriedades correspondentes do fluxo inspecionando um registro de configuração de decodificador HEVC que se aplica ao fluxo.
[0165] Se os SPSs do fluxo estão marcados com diferentes perfis, então o fluxo pode exigir um exame para determinar o perfil, se for o caso, ao qual o fluxo inteiro se conforma. Se todo o fluxo não é examinado, ou o exame revela que não existe um perfil ao qual o fluxo inteiro se conforma, então, no presente exemplo, todo o fluxo deve ser dividido em dois ou mais subfluxos de configuração com registros separados (por exemplo, registros de configuração de decodificador HEVC) em que estas regras podem ser cumpridas.
[0166] Um registro de configuração de decodificador de HEVC pode fornecer indicação explícita sobre o formato de croma e profundidade de bits bem como outras informações de formato utilizadas por um fluxo elementar de vídeo HEVC. Um fluxo elementar pode compreender uma sequência de um ou mais fluxos de bits. Se um fluxo elementar contém múltiplos fluxos de bits, cada um dos fluxos de bits, exceto para o último fluxo de bits termina com uma extremidade da unidade de NAL de fluxo de bits (EOS).
[0167] Em alguns exemplos, cada tipo de tais informações deve ser idêntico em todos os conjuntos de parâmetros, se presente, em um único registro de configuração de decodificador HEVC. Se duas sequências diferem em qualquer tipo de tal informação, um processador de vídeo pode ser necessário para gerar dois registros de configuração de decodificador HEVC diferentes. Se as duas sequências diferem em indicações de espaço de cor em suas informações de usabilidade de vídeo (VUI), um processador de vídeo (por exemplo, codificador de vídeo 20 ou outro dispositivo) pode ser requerido para gerar dois registros de configuração de decodificador HEVC diferentes. Em HEVC, um SPS pode incluir uma estrutura de sintaxe VUI que contém elementos de sintaxe VUI.
[0168] Na sintaxe exemplar para os registros de configuração de decodificador HEVC descritos acima, o elemento chromaFormat contém um indicador chroma_format como definido pelo elemento de sintaxe chroma_format_idc na norma ISO / IEC 23008-2 (isto é, HEVC), para o fluxo ao qual este registro de configuração de decodificador HEVC se aplica. O elemento de sintaxe chroma_format_idc de um SPS pode especificar uma amostragem de croma. Em Projeto de Trabalho 8 HEVC, o elemento de sintaxe chroma_format_idc especifica a amostragem de croma em relação a uma amostragem de luma especificada no subitem 6.2 do Projeto de Trabalho 8 HEVC. Se o elemento de sintaxe chroma_format_idc de um SPS ativado para uma imagem atual é igual a 0, a imagem atual pode ser constituída por uma matriz de amostra (por exemplo, SL). Caso contrário, se o elemento de sintaxe chroma_format_idc não é igual a 0, a imagem atual pode compreender três matrizes de amostra (por exemplo, SL, SCb, e SCr).
[0169] Na sintaxe exemplar para o registro de configuração de decodificador HEVC fornecido acima, o elemento bitDepthLumaMinusS contém um indicador de profundidade de bits de luma como definido pelo elemento de sintaxe bit_depth_luma_minus8 nem ISO / IEC 23.008-2, para o fluxo ao qual este registro de configuração de decodificador HEVC se aplica. O elemento bitDepthChromaMi USS pode conter um indicador de profundidade de bits de croma como definido pelo elemento de sintaxe bit_depth_chroma_ minus8 em ISO / IEC 23008-2, para o fluxo ao qual este registro de configuração se aplica. A profundidade de bits para um valor de amostra (por exemplo, uma amostra de luma ou uma amostra de croma) pode indicar quantos bits são utilizados para representar o valor de amostra.
[0170] Além disso, na sintaxe exemplar para registro de configuração de decodificador HEVC provido acima, o elemento avgFrameRate dá uma taxa de quadro média em unidades de quadros / (256 segundos), para o fluxo ao qual o registro de configuração de decodificador HEVC se aplica. Um elemento avgFramRate tendo um valor igual a 0 pode indicar uma taxa de quadros média não especificada.
[0171] Na sintaxe exemplar para o registro de configuração de decodificador HEVC provido acima, o elemento constantFrameRate igual a 1 pode indicar que o fluxo para o qual este registro de configuração de decodificador HEVC se aplica é de taxa de quadro constante. O elemento constantFrameRate igual a 2 pode indicar que a representação de cada camada de temporal no fluxo é de taxa de quadro constante. O elemento constantFrameRate igual a 0 indica que o fluxo pode ou não ser de taxa de quadro constante.
[0172] Além disso, na sintaxe exemplar para o registro de configuração de decodificador HEVC provido acima, o elemento numTemporalLayers pode indicar se o fluxo para o qual o registro de configuração de decodificador HEVC se aplica é temporalmente escalável e se o número continha as camadas temporais (também referidas como subcamada temporal ou subcamada em ISO / IEC 23008-2) é igual a numTemporalLayers. Por exemplo, o elemento de sintaxe numTemporalLayers maior do que 1 pode indicar que o fluxo ao qual este registro de configuração de decodificador HEVC se aplica é temporalmente escalável e que continha o número de camadas temporais é igual a numTemporalLayers, Neste exemplo, o elemento numTemporalLayers igual a 1 pode indicar que o fluxo não é escalável temporalmente. Além disso, neste exemplo, o elemento numTemporalLayers igual a 0, pode indicar que não se sabe se o fluxo é temporalmente escalável.
[0173] Na sintaxe exemplar para o registro de configuração de decodificador HEVC provido acima, o elemento temporalldNested pode indicar se todos SPSs que são ativados quando o fluxo ao qual o registro de configuração de decodificador HEVC se aplica têm elementos de sintaxe sps_temporal_id_nesting_flag igual a 0. Por exemplo, o elemento temporalldNested igual a 1 pode indicar que todos SPSs que são ativados quando o fluxo ao qual o registro de configuração de decodificador HEVC se aplica é decodificado tem elementos de sintaxe sps_temporal_id_nesting_flag como definidos em ISO / IEC 23008-2 igual a 1 e comutação ascendente de subcamada temporal para qualquer camada temporal superior pode ser realizada em qualquer amostra. Neste exemplo, o elemento temporalldNested igual a 0, pode indicar que pelo menos um dos SPSs que são ativados quando o fluxo ao qual o registro de configuração de decodificador HEVC se aplica é decodificado tem um elemento de sintaxe sps_temporal_id_nesting_flag igual a 0.
[0174] Deste modo, um dispositivo pode gerar um arquivo que armazena amostras codificadas que contêm imagens codificadas dos dados de vídeo. O arquivo também inclui uma caixa que inclui um registro que inclui um elemento que indica se todos SPSs que são ativados quando um fluxo ao qual o registro se aplica é decodificado têm elementos de sintaxe sps_temporal_id_nesting_flag que indicam que comutação ascendente de subcamada temporal para qualquer subcamada temporal superior pode ser realizada em qualquer amostra associada com os SPSs.
[0175] Na sintaxe exemplar para o registro de configuração de decodificador HEVC provido acima, o elemento lengihSizeMinusOne mais 1 indica o tamanho em bytes do campo NALUnitLength em uma amostra de vídeo HEVC no fluxo ao qual o registro de configuração de decodificador HEVC se aplica. Por exemplo, um tamanho de um byte é assinalado com um valor de 0. O valor deste campo deve ser um de 0, 1, ou 3, que corresponde a um comprimento codificado com 1, 2 ou 4 bytes, respectivamente.
[0176] Além disso, a configuração de decodificador HEVC pode conter um conjunto de matrizes que portam inicialização de unidades de NAL. Em outras palavras, em um registro de configuração de decodificador HEVC há um conjunto de matrizes para portar unidades de NAL de inicialização. Os tipos de unidade de NAL em um registro de configuração de decodificador HEVC podem ser restritos a unidades de NAL que contêm VPSs, SPSs, PPSs e mensagens SEI. Projeto de trabalho 8 HEVC e a presente divulgação preveem vários tipos de unidade de NAL reservadas. No futuro, esses tipos de unidade de NAL reservadas sejam definidas para implementar extensões para HEVC. Em outras palavras, tipos de unidades de NAL que são reservadas em ISO / IEC 23008-2 e nesta especificação podem adquirir uma definição no futuro. Em alguns exemplos, os leitores (por exemplo, dispositivos que recebem e processam um de registro de configuração de decodificador HEVC) devem ignorar matrizes de unidades de NAL com valores de tipo de unidade de NAL reservadas ou não permitidas. Este comportamento 'tolerante' de ignorar matrizes de unidades de NAL com valores de tipo de unidade de NAL reservadas ou não permitidas é projetado para que não surjam erros, permitindo, assim, a possibilidade de extensões compatíveis com os anteriores a essas matrizes em especificações futuras. Em alguns exemplos, as matrizes podem ser da ordem de VPS, SPS, PPS, e SEI. Em outros exemplos, as matrizes podem ser ordenadas dentro de um registro de configuração de decodificador HEVC por tamanho. Por exemplo, as matrizes podem ser ordenadas dentro de um registro de decodificador de configuração HEVC tal que as matrizes menores ocorrem antes das matrizes maiores.
[0177] Além disso, na sintaxe exemplar para registros de configuração de decodificador HEVC providos acima, o elemento numArrays indica o número de matrizes de unidades de NAL do tipo indicado (s). Os elementos array_completeness dos registros de configuração de decodificador HEVC podem indicar se o fluxo pode incluir unidades de NAL de um determinado tipo além das unidades de NAL do tipo dado que estão em uma matriz no registro de configuração de decodificador HEVC. Por exemplo, um elemento array_completeness igual a 1 pode indicar que todas as unidades de NAL de determinado tipo estão na matriz de unidades de NAL no registro de configuração de decodificador HEVC e nenhuma está no fluxo. Um elemento array_completeness igual a 0 indica que as unidades de NAL adicionais do tipo indicado podem esta no fluxo. Os valores padrão e permitidos do elemento array_completeness podem ser restringidos pelo código de entrada de amostra.
[0178] Além disso, na sintaxe exemplar de registros de configuração de decodificador HEVC providos acima, o elemento NAL_unit_type indica o tipo das unidades de NAL na matriz de unidades de NAL. Neste exemplo, todas as unidades de NAL na matriz devem pertencer ao tipo especificado pelo elemento NAL_unit_type. O elemento NAL_unit_type pode tomar um valor conforme definido em ISO / IEC 23008-2. Em alguns exemplos, o elemento NAL_unit_type está restrito a tomar um dos valores que indicam um VPS, SPS, PPS, ou unidade de NAL SEI.
[0179] Na sintaxe de registro de configuração de decodificador HEVC exemplar provida acima, o elemento numNalus indica o número de unidades de NAL do tipo indicado incluído no registro de configuração de decodificador HEVC para o fluxo ao qual este registro de configuração de decodificador HEVC se aplica. Em alguns exemplos, o elemento NAL_unit_type do registro de configuração de decodificador HEVC pode indicar que o registro de configuração de decodificador HEVC inclui uma matriz SEI (isto é, um conjunto de unidades de NAL SEI). Por exemplo, em tais exemplos, se o numNalus é igual a quatro, a matriz SEI pode consistir em quatro unidades de NAL SEI. Além disso, em alguns exemplos, a matriz SEI deve apenas conter mensagens SEI de uma natureza 'declarativa'. Ou seja, a matriz SEI pode conter apenas mensagens SEI que fornecem informações sobre o fluxo como um todo. Um exemplo de uma mensagem SEI de uma natureza 'declarativa' é uma mensagem SEI de dados de usuário.
[0180] Além disso, na sintaxe exemplar de registros de configuração de decodificador HEVC providos acima, o elemento nalUnitLength do registro de configuração de decodificador HEVC indica o comprimento em bytes de uma unidade de NAL. O elemento nalUnit do registro de configuração de decodificador HEVC pode conter um VPS, um SPS, um PPS, ou uma unidade de NAL SEI declarativa, conforme especificado em ISO / IEC 23008-2.
[0181] A figura 4 é um fluxograma que ilustra um exemplo de operação 200 de acordo com uma ou mais das técnicas desta descrição. No exemplo da figura 4, um primeiro dispositivo (por exemplo, codificador de vídeo 20 ou outro dispositivo) gera um arquivo (202). O arquivo compreende uma pluralidade de amostras que contêm imagens codificadas em uma caixa que identifica um grupo de amostras que contém uma ou mais amostras dentre a pluralidade de amostras. A caixa adicionalmente indica que cada amostra no grupo de amostra é uma amostra STSA.
[0182] Além disso, no exemplo da figura 4, um segundo dispositivo (por exemplo, decodificador de vídeo 30 ou outro dispositivo) identifica, com base em dados na caixa que identifica o grupo de amostra, amostras STSA entre amostras no arquivo que contém a caixa (204).
[0183] A figura 5 é um fluxograma que ilustra um exemplo de operação 250 de acordo com uma ou mais técnicas desta divulgação. No exemplo da figura 5, um primeiro dispositivo (por exemplo, codificador de vídeo 20 ou outro dispositivo) pode gerar um arquivo que armazena amostras codificadas que contêm imagens codificadas dos dados de vídeo (252). O arquivo também pode incluir uma entrada de amostra que inclui um elemento que indica se todos SPSs, que são ativados quando um fluxo ao qual a entrada da amostra se aplica é decodificado, têm elementos de sintaxe que indicam que comutação ascendente de subcamada temporal para qualquer subcamada temporal superior pode ser realizada em qualquer amostra associada com os SPSs.
[0184] Além disso, no exemplo da figura 5, um segundo dispositivo (por exemplo, decodificador de vídeo 30 ou outro dispositivo) pode determinar, com base no elemento na entrada de amostra no arquivo que contém amostras que contêm imagens codificadas dos dados de vídeo, que todos SPSs que são ativados quando o fluxo ao qual o registro se aplica é decodificado têm elementos de sintaxe que indicam que comutação ascendente de subcamada temporal para qualquer subcamada temporal superior pode ser realizada em qualquer amostra associada com os SPSs (254).
[0185] A figura 6 é um diagrama conceitual que ilustra um exemplo de estrutura de um arquivo 300, de acordo com uma ou mais das técnicas desta descrição. No exemplo da figura 6, o arquivo 300 inclui uma caixa de filme 302 e uma pluralidade de caixas de dados de mídia 304. Cada uma das caixas de dados de mídia 304 pode incluir uma ou mais amostras 305. Além disso, no exemplo da figura 6, a caixa de filme 302 inclui uma caixa de faixa 306. Em outros exemplos, a caixa de filme 302 pode incluir várias caixas de faixas para diferentes faixas. A caixa de faixa 306 inclui uma caixa de tabela 308. A caixa de tabela de amostra 308 inclui uma caixa SampleToGroup 310, uma caixa SampleGroupDescription 312, e um registro de configuração de decodificador HEVC 314. Em outros exemplos, a caixa de tabela de amostra 308 pode incluir outras caixas, além da caixa SampleToGroup 310 e da caixa SampleGroupDescription 312, e/ou pode incluir várias caixas SampleToGroup e caixas SampleGroupDescription.
[0186] De acordo com um ou mais exemplos de técnicas desta divulgação, a caixa SampleToGroup 310 pode identificar um grupo de amostra que contém uma ou mais amostras dentre as amostras 305. A caixa SampleToGroup 310 pode indicar, ainda, que cada amostra no grupo de amostra é uma amostra STSA. Assim, um dispositivo pode identificar, com base nos dados na caixa 310, SampleToGroup amostras STSA entre as amostras 305 no arquivo 300. De acordo com uma ou mais técnicas exemplares adicionais desta divulgação, a caixa SampleToGroup 310 pode indicar que cada amostra no grupo de amostra é uma amostra intra. Assim, um dispositivo pode identificar, com base em dados na caixa SampleToGroup 310, amostras intra entre amostras 305 no arquivo 300.
[0187] De acordo com uma ou mais técnicas exemplares adicionais desta divulgação, registro de configuração de decodificador HEVC 314 pode incluir um elemento que indica se todos SPSs, que são ativados quando um fluxo ao qual o registro de configuração de decodificador de HEVC 314 se aplica é decodificado, têm elementos de sintaxe que indicam que comutação ascendente de subcamada temporal para qualquer subcamada temporal superior, pode ser realizada em qualquer amostra associada com os SPSs. Assim, um dispositivo pode determinar, com base em um elemento em registro de configuração de decodificador HEVC 314 na caixa de tabela de amostra 308 no arquivo 300 que contém amostras 305 que contêm imagens codificadas de dados de vídeo, que todos SPSs que são ativados quando um fluxo ao qual o registro de configuração de decodificador HEVC 314 se aplica é decodificado têm os elementos de sintaxe que indicam que a comutação ascendente de subcamada temporal para qualquer subcamada temporal superior, pode ser executada em qualquer amostra associada com os SPSs.
[0188] 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 em ou transmitidas através de, como uma ou mais instruções de código, ou um meio legível por computador e executadas por uma unidade de processamento com base em hardware. Meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível tais como meios de armazenamento de dados ou meios de comunicação, incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, meios legíveis por computador podem geralmente corresponder a (1) um meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação, tal como um sinal ou onda de portadora. Meios de armazenamento de dados podem ser qualquer mídia disponível que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar as instruções de código, e/ou estruturas de dados para a execução das técnicas descritas nesta divulgação. Um produto de programa de computador pode incluir um meio legível por computador.
[0189] A título de exemplo, e não como limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código de programa desejado sob a forma de instruções ou estruturas de dados, e que pode ser acessado por um computador. Além disso, qualquer ligação está corretamente denominada um meio legível por computador. Por exemplo, se as instruções são transmitidas de um site, servidor ou outra fonte remota através de um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL), ou tecnologias sem fio tais como o infravermelho, rádio e microondas, então, o cabo coaxial, cabo de fibra óptica, par trançado, DSL, ou tecnologias sem fio, tais como infravermelho, rádio e micro-ondas estão incluídos na definição de meio. Deve ser entendido, no entanto, que, meios de armazenamento legíveis por computador e meios de armazenamento de dados não incluem conexões, ondas de portadoras, sinais ou outros meios de comunicação transitórios, mas são direcionados para meios de armazenamento tangíveis não transitórios. Disco e disquete, como aqui utilizados, incluem disco compacto (CD), disco laser, disco óptico, disco digital versátil (DVD), disquete e disco Blu-ray, onde disquetes geralmente reproduzem dados magneticamente, enquanto que discos reproduzem dados opticamente com lasers. Combinações dos anteriores também devem ser incluídas dentro do âmbito dos meios legíveis por computador.
[0190] As instruções podem ser executadas por um ou mais processadores, tais, como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASIC), arranjos de lógica programáveis em campo (FPGA), ou outro equivalente integrado ou conjunto de circuitos de lógica discreta. Por conseguinte, o termo "processador", tal como aqui utilizado pode referir-se a qualquer uma das estruturas precedentes ou qualquer outra estrutura adequada para aplicação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de hardware e/ou software dedicado configurados para a 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.
[0191] As técnicas da presente divulgação podem ser implementadas em uma vasta variedade de dispositivos ou aparelhos, incluindo um aparelho telefônico 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 realçar os aspectos funcionais de dispositivos configurados para executar as técnicas divulgadas, mas não precisam necessariamente de realização por diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware ou codec fornecido por um conjunto de unidades de hardware interoperativas, incluindo um ou mais processadores, conforme descrito acima, em conjunto com o software e/ou firmware adequado.
[0192] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do âmbito das seguintes reivindicações.
Claims (14)
1. Método de processamento de dados de vídeo, o método sendo caracterizado pelo fato de compreender: receber um arquivo que possui um formato para conteúdo HEVC codificado com múltiplas subcamadas temporais, em que cada subcamada temporal é associada a um identificador temporal diferente, em que: o arquivo contém amostras, cada uma das amostras contém uma respectiva imagem codificada dos dados de vídeo, cada uma das amostras sendo associada a um identificador temporal, indicativo da subcamada temporal à qual a amostra pertence, o arquivo inclui uma caixa que identifica um grupo de amostras em que a caixa não inclui as amostras, e em que a caixa inclui uma entrada que marca quais das amostras são amostras de acesso de subcamada temporal passo a passo, STSA, sendo amostras que não usam amostras antes da amostra STSA em ordem de decodificação com o mesmo identificador temporal da amostra STSA para referência de interpredição, e habilitam comutação ascendente para uma subcamada temporal que contém a respectiva amostra STSA por predição da amostra STSA e/ou amostras subsequentes na subcamada temporal contendo a respectiva amostra STSA usando amostras anteriores à amostra STSA a partir de uma subcamada temporal imediatamente mais baixa; identificar, com base na entrada, amostras STSA dentre as amostras no arquivo; e realizar comutação ascendente em uma das amostras STSA no grupo de amostra.
2. Método para gerar um arquivo que possui um formato para conteúdo HEVC contendo dados de vídeo codificado, codificado com múltiplas subcamadas temporais, em que cada subcamada temporal é associada a um identificador temporal diferente, o método sendo caracterizado pelo fato de compreender gerar um arquivo que compreende: uma pluralidade de amostras, cada uma das amostras contendo uma respectiva imagem codificada dos dados de vídeo, cada uma das amostras sendo associada a um identificador temporal, indicativo da subcamada temporal à qual a amostra pertence; e uma caixa que identifica um grupo de amostras, em que a caixa não contém as amostras, e em que a caixa inclui uma entrada que marca quais das amostras são amostras de acesso de subcamada temporal passo a passo, STSA, sendo amostras que não usam amostras antes da amostra STSA em ordem de decodificação com o mesmo identificador temporal da amostra STSA para referência de interpredição, em que cada uma das amostras STSA é uma amostra que habilita comutação ascendente, na amostra STSA, para uma subcamada temporal que contém a amostra STSA por predição da amostra STSA e/ou amostras subsequentes na subcamada temporal contendo a respectiva amostra STSA usando amostras anteriores à amostra STSA a partir de uma subcamada temporal imediatamente mais baixa.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que a caixa é uma caixa SampleToGroup.
4. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que a caixa inclui um elemento de tipo de agrupamento com um valor de "stsa".
5. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o arquivo inclui uma caixa de descrição de grupo de amostra que indica que o grupo de amostra é utilizado para marcar as amostras de STSA.
6. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que: a caixa é uma primeira caixa, o grupo de amostra é um primeiro grupo de amostra, e o arquivo que contém uma segunda caixa no arquivo, a segunda caixa identificando um segundo grupo de amostras que contém uma ou mais amostras dentre a pluralidade de amostras, em que a segunda caixa adicionalmente indica que cada amostra no segundo grupo de amostras é uma intra amostra.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que: a segunda caixa é uma caixa SampleToGroup, e a segunda caixa inclui um elemento de tipo de agrupamento com um valor de "ipsg".
8. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que o arquivo inclui uma caixa de descrição de grupo de amostra que inclui uma entrada que indica que o segundo grupo de amostra é utilizado para marcar as amostras que contêm imagens intracodificadas.
9. Dispositivo de processamento de dados de vídeo, o dispositivo sendo caracterizado pelo fato de compreender: meios para receber um arquivo que possui um formato para conteúdo HEVC codificado com múltiplas subcamadas temporais, em que cada subcamada temporal é associada a um identificador temporal diferente, em que: o arquivo contém amostras, cada uma das amostras contém uma respectiva imagem codificada dos dados de vídeo, cada uma das amostras sendo associada a um identificador temporal, indicativo da subcamada temporal à qual a amostra pertence, o arquivo contém uma caixa que identifica um grupo de amostras em que a caixa não contém as amostras, e em que a caixa inclui uma entrada que marca quais das amostras são amostras de acesso de subcamada temporal passo a passo, STSA, sendo amostras que não usam amostras antes da amostra STSA em ordem de decodificação com o mesmo identificador temporal da amostra STSA para referência de interpredição, e habilitam comutação ascendente para uma subcamada temporal que contém a respectiva amostra STSA por predição da amostra STSA e/ou amostras subsequentes na subcamada temporal contendo a respectiva amostra STSA usando amostras anteriores à amostra STSA a partir de uma subcamada temporal imediatamente mais baixa; meios para identificar, com base na entrada, as amostras STSA de dados de vídeo dentre amostras no arquivo; e meios para realizar comutação ascendente em uma das amostras STSA no grupo de amostra.
10. Dispositivo para gerar um arquivo que possui um formato para conteúdo HEVC contendo dados de vídeo codificados, codificado com múltiplas subcamadas temporais, em que cada subcamada temporal é associada a um identificador temporal diferente, o dispositivo sendo caracterizado pelo fato de compreender: meios para gerar um arquivo que compreende: uma pluralidade de amostras, cada uma das amostras contendo uma respectiva imagem codificada dos dados de vídeo, cada uma das amostras sendo associada a um identificador temporal, indicativo da subcamada temporal à qual a amostra pertence; e uma caixa que identifica um grupo de amostras, em que a caixa não contém as amostras, e em que a caixa inclui uma entrada que marca quais das amostras são amostras de acesso de subcamada temporal passo a passo, STSA, sendo amostras que não usam amostras antes da amostra STSA em ordem de decodificação com o mesmo identificador temporal da amostra STSA para referência de interpredição, em que cada uma das amostras STSA é uma amostra que habilita comutação ascendente, na amostra STSA, para uma subcamada temporal que contém a amostra STSA por predição da amostra STSA e/ou amostras subsequentes na subcamada temporal contendo a respectiva amostra STSA usando amostras anteriores à amostra STSA a partir de uma subcamada temporal imediatamente mais baixa; e meios para emitir o arquivo.
11. Dispositivo, de acordo com a reivindicação 9 ou 10, caracterizado pelo fato de que a caixa é uma caixa SampleToGroup,
12. Dispositivo, de acordo com a reivindicação 9 ou 10, caracterizado pelo fato de que a caixa inclui um elemento de tipo de agrupamento com um valor de "stsa".
13. Dispositivo, de acordo com a reivindicação 9 ou 10, caracterizado pelo fato de que o dispositivo compreende pelo menos: um circuito integrado; um microprocessador; ou um dispositivo de comunicação sem fio.
14. Meio de armazenamento não transitório legível por computador, caracterizado pelo fato de que tem instruções nele armazenadas que, quando executadas, fazem com que um ou mais processadores realizem o método como definido em qualquer uma das reivindicações de 1 a 8.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261709748P | 2012-10-04 | 2012-10-04 | |
US61/709,748 | 2012-10-04 | ||
US14/043,335 US20140098868A1 (en) | 2012-10-04 | 2013-10-01 | File format for video data |
US14/043,335 | 2013-10-01 | ||
PCT/US2013/062973 WO2014055594A2 (en) | 2012-10-04 | 2013-10-02 | File format for video data |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112015007502A2 BR112015007502A2 (pt) | 2017-07-04 |
BR112015007502B1 true BR112015007502B1 (pt) | 2023-03-21 |
Family
ID=50432651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112015007502-9A BR112015007502B1 (pt) | 2012-10-04 | 2013-10-02 | Método e dispositivo de processamento de dados de vídeo, método e dispositivo para gerar um arquivo que possui um formato para conteúdo hevc contendo dados de vídeo codificado, assim como meio de armazenamento não transitório legível por computador |
Country Status (12)
Country | Link |
---|---|
US (2) | US20140098868A1 (pt) |
EP (2) | EP2904798B1 (pt) |
JP (2) | JP6203852B2 (pt) |
KR (2) | KR101924254B1 (pt) |
CN (2) | CN104704830B (pt) |
BR (1) | BR112015007502B1 (pt) |
DK (2) | DK2904798T3 (pt) |
ES (2) | ES2716852T3 (pt) |
HU (2) | HUE042386T2 (pt) |
SI (1) | SI2904798T1 (pt) |
TW (2) | TWI558177B (pt) |
WO (2) | WO2014055594A2 (pt) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013102293A1 (en) * | 2012-01-04 | 2013-07-11 | Mediatek Singapore Pte. Ltd. | Improvements of luma-based chroma intra prediction |
WO2013165215A1 (ko) * | 2012-05-04 | 2013-11-07 | 엘지전자 주식회사 | 영상 정보 저장 방법 및 영상 정보 파싱 방법 그리고 이를 이용하는 장치 |
US20140098868A1 (en) | 2012-10-04 | 2014-04-10 | Qualcomm Incorporated | File format for video data |
EP3057330B1 (en) * | 2013-10-11 | 2020-04-01 | Sony Corporation | Transmission device, transmission method, and reception device |
US10334260B2 (en) * | 2014-03-17 | 2019-06-25 | Nokia Technologies Oy | Apparatus, a method and a computer program for video coding and decoding |
US11418812B2 (en) | 2015-02-11 | 2022-08-16 | Qualcomm Incorporated | Placement of parameter sets and sync samples in video coding |
US9928297B2 (en) * | 2015-02-11 | 2018-03-27 | Qualcomm Incorporated | Sample grouping signaling in file formats |
GB2539461B (en) | 2015-06-16 | 2020-01-08 | Canon Kk | Image data encapsulation |
US20170111642A1 (en) * | 2015-10-14 | 2017-04-20 | Qualcomm Incorporated | Support of random access and switching of layers and sub-layers in multi-layer video files |
US11206386B2 (en) * | 2016-01-13 | 2021-12-21 | Sony Corporation | Information processing apparatus and information processing method |
US10389999B2 (en) * | 2016-02-17 | 2019-08-20 | Qualcomm Incorporated | Storage of virtual reality video in media files |
US10623755B2 (en) | 2016-05-23 | 2020-04-14 | Qualcomm Incorporated | End of sequence and end of bitstream NAL units in separate file tracks |
US10587904B2 (en) * | 2017-07-10 | 2020-03-10 | Qualcomm Incorporated | Processing media data using an omnidirectional media format |
JP6415652B1 (ja) * | 2017-07-18 | 2018-10-31 | 三菱電機株式会社 | 映像再生装置、映像記録装置および映像記録方法 |
WO2019069857A1 (ja) * | 2017-10-06 | 2019-04-11 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化装置、復号装置、符号化方法および復号方法 |
US10999590B2 (en) | 2018-12-28 | 2021-05-04 | Tencent America LLC | Method for identification of random access point and picture types |
CN114667542A (zh) * | 2019-12-26 | 2022-06-24 | Lg电子株式会社 | 点云数据发送装置、点云数据发送方法、点云数据接收装置以及点云数据接收方法 |
WO2021195026A1 (en) * | 2020-03-27 | 2021-09-30 | Bytedance Inc. | Level information in video coding |
GB2593897B (en) * | 2020-04-06 | 2024-02-14 | Canon Kk | Method, device, and computer program for improving random picture access in video streaming |
CN114845134B (zh) * | 2020-10-16 | 2023-01-24 | 腾讯科技(深圳)有限公司 | 文件封装方法、文件传输方法、文件解码方法及相关设备 |
FR3137809A1 (fr) * | 2022-07-08 | 2024-01-12 | Orange | Codage et décodage de données audio et/ou vidéo |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050254575A1 (en) | 2004-05-12 | 2005-11-17 | Nokia Corporation | Multiple interoperability points for scalable media coding and transmission |
US7725593B2 (en) * | 2005-07-15 | 2010-05-25 | Sony Corporation | Scalable video coding (SVC) file format |
GB0524983D0 (en) * | 2005-12-07 | 2006-01-18 | Imagination Tech Ltd | Recompression and decompression of a data stream for rate smoothing |
WO2008048886A2 (en) | 2006-10-16 | 2008-04-24 | Vidyo, Inc. | Systems and methods for signaling and performing temporal level switching in scalable video coding |
TW201032597A (en) | 2009-01-28 | 2010-09-01 | Nokia Corp | Method and apparatus for video coding and decoding |
TW201210325A (en) | 2010-07-21 | 2012-03-01 | Nokia Corp | Method and apparatus for indicating switching points in a streaming session |
US9116988B2 (en) | 2010-10-20 | 2015-08-25 | Apple Inc. | Temporal metadata track |
US9497472B2 (en) | 2010-11-16 | 2016-11-15 | Qualcomm Incorporated | Parallel context calculation in video coding |
US20120170648A1 (en) | 2011-01-05 | 2012-07-05 | Qualcomm Incorporated | Frame splitting in video coding |
WO2012096806A1 (en) | 2011-01-14 | 2012-07-19 | Vidyo, Inc. | High layer syntax for temporal scalability |
US9706227B2 (en) * | 2011-03-10 | 2017-07-11 | Qualcomm Incorporated | Video coding techniques for coding dependent pictures after random access |
US20130170561A1 (en) | 2011-07-05 | 2013-07-04 | Nokia Corporation | Method and apparatus for video coding and decoding |
WO2013006114A2 (en) | 2011-07-05 | 2013-01-10 | Telefonaktiebolaget L M Ericsson (Publ) | Reference picture management for layered video |
US20130094774A1 (en) | 2011-10-13 | 2013-04-18 | Sharp Laboratories Of America, Inc. | Tracking a reference picture based on a designated picture on an electronic device |
US9414085B2 (en) | 2012-01-20 | 2016-08-09 | Telefonaktiebolaget Lm Ericsson (Publ) | Sub-bitstream extraction |
US20130195172A1 (en) | 2012-01-30 | 2013-08-01 | Qualcomm Incorporated | Method of coding video and storing video content |
US9380289B2 (en) * | 2012-07-20 | 2016-06-28 | Qualcomm Incorporated | Parameter sets in video coding |
US20140092953A1 (en) * | 2012-10-02 | 2014-04-03 | Sharp Laboratories Of America, Inc. | Method for signaling a step-wise temporal sub-layer access sample |
US20140098868A1 (en) | 2012-10-04 | 2014-04-10 | Qualcomm Incorporated | File format for video data |
-
2013
- 2013-10-01 US US14/043,335 patent/US20140098868A1/en not_active Abandoned
- 2013-10-01 US US14/043,383 patent/US10038899B2/en active Active
- 2013-10-02 HU HUE13776910A patent/HUE042386T2/hu unknown
- 2013-10-02 ES ES13776910T patent/ES2716852T3/es active Active
- 2013-10-02 WO PCT/US2013/062973 patent/WO2014055594A2/en active Application Filing
- 2013-10-02 CN CN201380051429.7A patent/CN104704830B/zh active Active
- 2013-10-02 SI SI201331379T patent/SI2904798T1/sl unknown
- 2013-10-02 HU HUE13777406A patent/HUE053036T2/hu unknown
- 2013-10-02 JP JP2015535752A patent/JP6203852B2/ja active Active
- 2013-10-02 EP EP13776910.5A patent/EP2904798B1/en active Active
- 2013-10-02 KR KR1020157011464A patent/KR101924254B1/ko active IP Right Grant
- 2013-10-02 JP JP2015535755A patent/JP6239630B2/ja active Active
- 2013-10-02 CN CN201380051417.4A patent/CN104704829B/zh active Active
- 2013-10-02 DK DK13776910.5T patent/DK2904798T3/en active
- 2013-10-02 WO PCT/US2013/062992 patent/WO2014055606A2/en active Application Filing
- 2013-10-02 BR BR112015007502-9A patent/BR112015007502B1/pt active IP Right Grant
- 2013-10-02 KR KR1020157011463A patent/KR102172130B1/ko active IP Right Grant
- 2013-10-02 ES ES13777406T patent/ES2854877T3/es active Active
- 2013-10-02 EP EP13777406.3A patent/EP2904799B1/en active Active
- 2013-10-02 DK DK13777406.3T patent/DK2904799T3/da active
- 2013-10-04 TW TW102136094A patent/TWI558177B/zh active
- 2013-10-04 TW TW102136093A patent/TWI565305B/zh active
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2854877T3 (es) | Formato de archivo para datos de vídeo | |
ES2902675T3 (es) | Diseño de señalización de entrada de muestra y de punto de operación en un formato de archivo de vídeo estratificado | |
EP2898698B1 (en) | Bitstream properties in video coding | |
ES2727814T3 (es) | Estructura sintáctica de parámetros de descodificador hipotético de referencia | |
CN105637885B (zh) | 一种处理多层视频数据的方法、视频装置和计算机可读数据存储媒体 | |
KR102113898B1 (ko) | 멀티뷰 코딩 플러스 심도에 대한 텍스처 및 심도 뷰들의 별개의 트랙 저장 | |
EP3363203B1 (en) | Signaling of parameter sets in files of multi-layer bitstreams | |
BR112015015802B1 (pt) | Mensagens sei não aninhadas em codificação de vídeo | |
BR112019019250A2 (pt) | sinalização de informações de vídeo suplementares essenciais e não essenciais | |
BR112018007529B1 (pt) | Alinhamento de grupo de amostra de ponto de operação em formato de arquivo de fluxos de bits de multicamada | |
BR112016025100B1 (pt) | Método e dispositivo para decodificar dados de vídeo de várias camadas, assim como memória legível por computador | |
BR112016022080B1 (pt) | Uso genérico de mensagens de sei de hevc para codecs de múltiplas camadas | |
BR112016008374B1 (pt) | Suporte de extração em múltiplos modos para codecs de vídeo de múltiplas camadas | |
BR112017017315B1 (pt) | Sinalização de agrupamento de amostra em formatos de arquivo | |
BR112015006450B1 (pt) | Teste de conformidade de fluxo de its em codificação de vídeo | |
BR112014026747B1 (pt) | Método e equipamento para armazenar e processar dados de vídeo codificados | |
BR112016030194B1 (pt) | Codificação de vídeo de multi-camada |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B08F | Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette] | ||
B08H | Application fees: decision cancelled [chapter 8.8 patent gazette] | ||
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B15K | Others concerning applications: alteration of classification |
Free format text: A CLASSIFICACAO ANTERIOR ERA: H04N 19/31 Ipc: H04N 19/31 (2014.01), H04N 19/70 (2014.01) |
|
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 02/10/2013, OBSERVADAS AS CONDICOES LEGAIS |