BR112016008374B1 - Suporte de extração em múltiplos modos para codecs de vídeo de múltiplas camadas - Google Patents

Suporte de extração em múltiplos modos para codecs de vídeo de múltiplas camadas Download PDF

Info

Publication number
BR112016008374B1
BR112016008374B1 BR112016008374-1A BR112016008374A BR112016008374B1 BR 112016008374 B1 BR112016008374 B1 BR 112016008374B1 BR 112016008374 A BR112016008374 A BR 112016008374A BR 112016008374 B1 BR112016008374 B1 BR 112016008374B1
Authority
BR
Brazil
Prior art keywords
bitstream
extraction mode
layer
video
output
Prior art date
Application number
BR112016008374-1A
Other languages
English (en)
Other versions
BR112016008374A2 (pt
Inventor
Ying Chen
Ye-Kui Wang
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016008374A2 publication Critical patent/BR112016008374A2/pt
Publication of BR112016008374B1 publication Critical patent/BR112016008374B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234327Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by decomposing into layers, e.g. base layer and one or more enhancement layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • H04N21/4343Extraction or processing of packetized elementary streams [PES]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

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)

Abstract

SUPORTE DE EXTRAÇÃO EM MÚLTIPLOS MODOS PARA CODECS DE VÍDEO DE MÚLTIPLAS CAMADAS. Trata-se um dispositivo de computação que pode obter, a partir de um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de Informações de Aprimoramento Suplementares (SEI) que inclui uma indicação de um modo de extração que foi usado para produzir o primeiro fluxo de bits. Se o modo de extração for o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída. Se o modo de extração for o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída.

Description

[0001] Este pedido reivindica o benefício do Pedido de Patente Provisório No. U.S. 61/891.317, depositado em 15 de outubro de 2013, e do Pedido de Patente Provisório No. U.S. 61/923.624, depositado em 3 de janeiro de 2014, sendo que o conteúdo total de cada um está incorporado ao presente documento a título de referência.
CAMPO DA TÉCNICA
[0002] Esta revelação refere-se à criptação e decodificação de vídeo.
ANTECEDENTES
[0003] As capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores do tipo laptop ou desktop, computadores do tipo tablet, leitores de e-book, câmeras digitais, dispositivos de gravação digitais, reprodutores de meio digitais, dispositivos de vídeo jogo, consoles de vídeo jogo, telefones celulares ou de rádio-satélite, conhecidos como "telefones inteligentes", dispositivos de teleconferência por vídeo, dispositivos de difusão por vídeo e similares. Os dispositivos de vídeo digital implantam técnicas de compactação de vídeo, como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, H.264 de ITU-T/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, criptar, descodificar e/ou armazenar informações de vídeo digital de maneira mais eficiente implantando-se tais técnicas de compactação de vídeo.
[0004] As técnicas de codificação de vídeo incluem previsão espacial (intraimagem) e/ou previsão temporal (interimagem) para reduzir ou remover a redundância inerente em sequências de vídeo. Para codificação de vídeo com base em bloco, uma fatia de vídeo (isto é, um quadro de vídeo ou uma porção de um quadro de vídeo) pode ser particionada em blocos de vídeo. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são criptados com o uso de previsão espacial em relação às amostras de referência em blocos próximos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem usar previsão espacial em relação a amostras de referência em blocos próximos na mesma imagem ou previsão temporal em relação às amostras de referência em outras imagens de referência. As imagens podem ser denominadas como quadros, e as imagens de referência podem ser denominadas como quadros de referência.
[0005] A previsão espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco intercodificado é criptado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco preditivo e os dados residuais indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é criptado de acordo com um modo de intracodificação e os dados residuais. Para compactação adicional, os dados residuais podem ser transformados do domínio de pixel para um domínio de transformada, resultando em coeficientes residuais, os quais os mesmos podem ser quantizados. O coeficiente de transformada quantizado pode ser disposto inicialmente em uma matriz bidimensional e varrido a fim de produzir um vetor monodimensional de coeficiente de transformada, e a codificação de entropia pode ser aplicada para conseguir ainda mais compactação.
[0006] Um fluxo de bits de codificação de múltiplas vistas pode ser gerado criptando-se vistas, por exemplo, a partir de múltiplas perspectivas. Alguns padrões de vídeo tridimensionais (3D) foram desenvolvidos para fazer o uso de aspectos de codificação de múltiplas vistas. Por exemplo, diferentes vistas podem transmitir vistas de olho esquerdo e direito para suportar vídeo 3D. Alternativamente, alguns processos de codificação de vídeo 3D podem aplicar o que é conhecido por codificação de múltiplas vistas mais profundidade. Na codificação de múltiplas vistas mais profundidade, um fluxo de bits de vídeo 3D pode conter não apenas 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.
DESCRIÇÃO RESUMIDA
[0007] Em geral, essa revelação refere-se a métodos para melhor suporte de modos de extração de fluxo de dados de múltiplos modos para codecs de vídeo de múltiplas camadas, conjuntos de técnicas que incluem habilitar subfluxos de bits extraídos com cada um dos múltiplos modos a ser conformado, a indicação de capacidade para extração de múltiplos modos em um codec de vídeo de múltiplas camadas assim como nas camadas de sistema.
[0008] Em um aspecto, essa revelação descreve a método de processamento de dados de vídeo, sendo que o método compreende: obter, a partir de um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de Informações de Aprimoramento Suplementares (SEI) que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente de se o modo de extração é indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de Camada de Abstração de Rede (NAL) para decodificar e emitir imagens em um conjunto de camadas-alvo de saída, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída; e se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída.
[0009] Em outro aspecto, essa revelação descreve um método de processamento de dados de vídeo, sendo que o método compreende: gerar uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair um primeiro fluxo de bits de um segundo fluxo de bits, sendo que o primeiro fluxo de bits inclui uma representação codificada dos dados de vídeo, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente de se o modo de extração é indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de NAL para decodificar e emitir imagens em um conjunto de camadas-alvo de saída para o primeiro fluxo de bits, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, e se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída; e incluir a mensagem de SEI no primeiro fluxo de bits.
[0010] Em outro aspecto, essa revelação descreve um dispositivo para processar dados de vídeo, sendo que o dispositivo compreende: uma memória que armazena os dados de vídeo; e um ou mais processadores configurados para obter, a partir de um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente de se o modo de extração é indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de Camada de Abstração de Rede (NAL) para decodificar e emitir imagens em um conjunto de camadas-alvo de saída para o primeiro fluxo de bits, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, e se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída.
[0011] Em outro aspecto, essa revelação descreve um dispositivo para processar dados de vídeo, sendo que o dispositivo compreende: uma memória que armazena os dados de vídeo; e um ou mais processadores configurados para: gerar uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair um primeiro fluxo de bits de um segundo fluxo de bits, sendo que o primeiro fluxo de bits inclui uma representação codificada dos dados de vídeo, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente de se o modo de extração é indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de NAL para decodificar e emitir imagens em um conjunto de camadas-alvo de saída para o primeiro fluxo de bits, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída; e se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída; e incluir a mensagem de SEI no primeiro fluxo de bits.
[0012] Em outro aspecto, essa revelação descreve um dispositivo para processar dados de vídeo, sendo que o dispositivo compreende: meios para obter, a partir de um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente de se o modo de extração é indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de NAL para decodificar e emitir imagens em um conjunto de camadas-alvo de saída, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída; e se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída.
[0013] Em outro aspecto, essa revelação descreve um dispositivo para processar dados de vídeo, sendo que o dispositivo compreende: meios para gerar uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair um primeiro fluxo de bits de um segundo fluxo de bits, sendo que o primeiro fluxo de bits inclui uma representação codificada dos dados de vídeo, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente de se o modo de extração é indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de NAL para decodificar e emitir imagens em um conjunto de camadas-alvo de saída para o primeiro fluxo de bits, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, e se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída; e meios para incluir a mensagem de SEI no primeiro fluxo de bits.
[0014] Em outro aspecto, essa revelação descreve um meio de armazenamento legível por computador que tem instruções armazenadas em si que, quando executadas, fazem com que um dispositivo obtenha, a partir de um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente de se o modo de extração é indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de NAL para decodificar e emitir imagens em um conjunto de camadas-alvo de saída, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída; e se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída.
[0015] Em outro aspecto, essa revelação descreve um meio de armazenamento legível por computador que tem instruções armazenadas em si que, quando executadas, fazem com que um dispositivo gere uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair um primeiro fluxo de bits de um segundo fluxo de bits, sendo que o primeiro fluxo de bits inclui uma representação codificada dos dados de vídeo, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente de se o modo de extração é indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de NAL para decodificar e emitir imagens em um conjunto de camadas-alvo de saída para o primeiro fluxo de bits, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, e se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída; e inclua a mensagem de SEI no primeiro fluxo de bits.
[0016] Os detalhes de um ou mais aspectos da revelação são estabelecidos nos desenhos anexos e na descrição abaixo. Outros objetivos, aspectos e vantagens ficarão evidentes a partir da descrição, dos desenhos e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0017] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplificativo que pode utilizas os conjuntos de técnicas descritos nessa revelação.
[0018] A Figura 2 é um diagrama de blocos que ilustra um criptador de vídeo exemplificativo.
[0019] A Figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo exemplificativo.
[0020] A Figura 4 é um diagrama de blocos que ilustra um dispositivo intermediário exemplificativo, de acordo com um ou mais conjuntos de técnicas dessa revelação.
[0021] A Figura 5A é um fluxograma que ilustra uma operação exemplificativa de um dispositivo de computação, de acordo com um ou mais conjuntos de técnicas dessa revelação.
[0022] A Figura 5B é um fluxograma que ilustra uma operação exemplificativa de um dispositivo de computação, de acordo com um ou mais conjuntos de técnicas dessa revelação.
DESCRIÇÃO DETALHADA
[0023] Em geral, um fluxo de bits de vídeo codificado compreende uma sequência de bits que representam imagens codificadas e dados associados que formam um ou mais sequências de vídeo codificado. A sequência de bits pode estar na forma de uma fluxo de unidade ou um fluxo de bytes da Camada de Abstração de Rede (NAL). Um fluxo de unidade de NAL é um fluxo de unidades de NAL. Em codificação de múltiplas vistas e codificação de vídeo escalonável, cada unidade de NAL pode especificar uma camada à qual a unidade de NAL pertence. As unidades de NAL diferentes no mesmo fluxo de bits pode especificar que as unidades de NAL diferentes pertencem a camadas diferentes. Na codificação de múltiplas vistas, cada uma das camadas pode corresponder a uma vista diferente. Na codificação de vídeo escalonável, as camadas podem incluir uma camada-base e uma ou mais camadas de aprimoramento. Devido ao fato de uma unidade de NAL que pertence a uma camada particular poder conter dados de uma imagem codificada, a imagem codificada também pode ser dita como pertencente à camada particular.
[0024] A fim de reduzir o tamanho de um fluxo de bits, um dispositivo de computação pode extrair unidades de NAL particulares do fluxo de bits. Por exemplo, o dispositivo de computação pode extrair do fluxo de bits todas as unidades de NAL que pertencem a um conjunto particular de camadas. As unidades de NAL extraídas de um fluxo de bits são um subconjunto do fluxo de bits. Essa revelação pode se referir a um fluxo de bits que compreende unidades de NAL extraídas de outro fluxo de bits como um subfluxo de bits. O subfluxo de bits pode ser decodificável sem o uso de unidades de NAL não extraídas do fluxo de bits. O dispositivo de computação pode descartar unidades de NAL não extraídas do fluxo de bits. Alternativamente, o dispositivo de computação pode extrair um ou mais subfluxos de bits de um fluxo-fonte de bits comum, e encaminhar dados para os vários subfluxos de bits, assim como dados para o fluxo-fonte de bits, para destinos respectivos diferentes. Para facilidade de explicação, essa revelação pode descrever a extração de unidades de NAL de um subfluxo de bits a partir de um fluxo de bits como a extração do subfluxo de bits a partir do fluxo de bits.
[0025] Um dispositivo de computação pode extrair um subfluxo de bits de um fluxo de bits de acordo com uma variedade de modos de extração. Em geral, um modo de extração é um modo de extrair um subfluxo de bits de um fluxo-fonte de bits. Por exemplo, quando um dispositivo de computação extrai um subfluxo de bits de um fluxo de bits de acordo com um modo de extração, o subfluxo de bits pode ser “totalmente extraível”. Se um subfluxo de bits for totalmente extraível, cada subfluxo de bits extraído adicionalmente do subfluxo de bits, de modo recursivo, pode ser um fluxo de bits em conformidade. Nessa revelação, um fluxo de bits em conformidade pode ser um fluxo de bits que se conforma a um padrão de codificação de vídeo. Em outras palavras, um fluxo de bits em conformidade é um fluxo de bits que pode ser decodificado corretamente de acordo com um padrão de codificação de vídeo. Em outro exemplo, quando a dispositivo de computação extrair um subfluxo de bits de um fluxo de bits de acordo com outro modo de extração, o subfluxo de bits pode ser “otimizado por tamanho”. Se um subfluxo de bits extraído de um fluxo de bits for otimizado por tamanho, o subfluxo de bits pode excluir imagens do fluxo de bits que não seja necessárias para a decodificação correta de um conjunto de camadas-alvo de saída, que podem resultar no subfluxo de bits não se conformar mais a um de codificação de vídeo aplicável, ainda que mesmo assim permaneça decodificável. Cada camada no conjunto de camadas-alvo de saída pode incluir imagens que estão destinadas para saída subsequente (por exemplo, exibição). O fluxo de bits de tamanho otimizado pode incluir unidades de NAL que pertencem a camadas que não sejam o conjunto de camadas-alvo de saída devido ao fato de tais unidades de NAL poderem incluir dados necessários para a decodificação de imagens do conjunto de camadas-alvo de saída. Devido ao fato de um fluxo de bits de tamanho otimizado excluir tais imagens, pode ser impossível extrai subfluxos de bits particulares do fluxo de bits de tamanho otimizado. Por exemplo, um fluxo de bits de tamanho otimizado pode incluir unidades de NAL de uma camada particular que foram usadas para previsão intercamada (por exemplo, intervista), mas excluir outras unidades de NAL da camada particular, por exemplo, unidades de NAL que não forma usadas para previsão intercamada. Dessa forma, um fluxo de bits totalmente extraível pode incluir uma ou mais imagens codificadas não necessárias para a decodificação correta do conjunto de camadas-alvo de saída, mas um fluxo de bits de tamanho otimizado não inclui as uma ou mais imagens codificadas não necessárias para a decodificação correta do conjunto de camadas-alvo de saída.
[0026] Um dispositivo de computação, como um Elemento de Rede de Reconhecimento de Mídia (MANE), que recebe um fluxo de bits pode não ter capacidade para determinar o modo de extração usado para produzir o fluxo de bits, se houver. Por exemplo, pode ser não prático que o dispositivo de computação determine se o fluxo de bits é um fluxo de bits totalmente extraível ou um fluxo de bits de tamanho otimizado. Se o dispositivo de computação extrair um subfluxo de bits do fluxo de bits e o fluxo de bits vier a ser um fluxo de bits totalmente extraível, o subfluxo de bits extraído é um fluxo de bits em conformidade que um decodificador de vídeo pode ter capacidade para decodificar. Entretanto, se o dispositivo de computação extrair um subfluxo de bits do fluxo de bits e o fluxo de bits vier a ser um fluxo de bits de tamanho otimizado, o subfluxo de bits extraído não pode ser um fluxo de bits em conformidade que um decodificador de vídeo tenha a capacidade de decodificar.
[0027] O conjuntos de técnicas dessa revelação pode se referir a esse problema. Por exemplo, de acordo com um ou mais conjuntos de técnicas dessa revelação, um dispositivo de computação pode obter, a partir de um primeiro fluxo de bits que inclui uma representação codificada de dados de vídeo, uma mensagem de Informações de Aprimoramento Suplementares (SEI) que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits. O primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração. Independentemente de se o modo de extração é um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de Camada de Abstração de Rede (NAL) para decodificar e emitir imagens em um conjunto de camadas-alvo de saída para o primeiro fluxo de bits. Se o modo de extração for o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída. Se o modo de extração for o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída. De modo similar, um dispositivo de computação pode gerar uma mensagem de SEI que inclui uma indicação do modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits. O dispositivo de computação pode incluir a mensagem de SEI no primeiro fluxo de bits.
[0028] A Figura 1 é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplificativo 10 que pode utilizas os conjuntos de técnicas dessa revelação. Conforme usado no presente documento, o termo “codificador de vídeo” se refere genericamente tanto a criptadores de vídeo quanto a decodificadores de vídeo. Nessa revelação, os termos “codificação de Vídeo” ou “codificação” podem se referir genericamente a criptação de vídeo e decodificação de vídeo.
[0029] Conforme mostrado na Figura 1, o sistema de codificação de vídeo 10 inclui um dispositivo- fonte 12 e um dispositivo de destino 14. O dispositivo- fonte 12 gera dados de vídeo criptados. Consequentemente, o dispositivo-fonte 12 pode ser referido como um dispositivo de criptação de vídeo ou um aparelho de criptação de vídeo. O dispositivo de destino 14 pode decodificar os dados de vídeo criptados gerados pelo dispositivo-fonte 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 de vídeo. O dispositivo-fonte 12 e o dispositivo de destino 14 podem ser exemplos de dispositivos de codificação de vídeo ou aparelhos de codificação de vídeo.
[0030] O dispositivo-fonte 12 e o dispositivo de destino 14 podem compreender uma ampla faixa de dispositivos, incluindo computadores do tipo desktop, dispositivos de computação móveis, computadores do tipo notebook (por exemplo, computadores do tipo laptop), computadores do tipo tablet, decodificadores de sinais, aparelhos de telefone como os conhecidos por telefones “inteligentes”, televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de vídeo game, computadores de bordo para carros, ou similares.
[0031] O dispositivo de destino 14 pode receber dados de vídeo criptados provenientes do dispositivo-fonte 12 por meio de um canal 16. O canal 16 pode compreender uma ou mais mídias ou dispositivos com capacidade para mover os dados de vídeo criptados do dispositivo-fonte 12 para o dispositivo de destino 14. Em um exemplo, o canal 16 pode compreender um ou mais meios de comunicação que permitem que o dispositivo-fonte 12 transmita dados de vídeo criptados diretamente para o dispositivo de destino 14 em tempo real. Nesse exemplo, o dispositivo-fonte 12 pode modular os dados de vídeo criptados de acordo com um padrão de comunicação, 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, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. Os um ou mais meios de comunicação podem fazer parte de uma rede com base em pacote, 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 outro equipamento que facilite a comunicação a partir do dispositivo-fonte 12 até o dispositivo de destino 14.
[0032] Em outro exemplo, o canal 16 pode incluir um meio de armazenamento que armazena os dados de vídeo criptados gerados pelo dispositivo-fonte 12. Nesse exemplo, o dispositivo de destino 14 pode acessar o meio de armazenamento, por exemplo, por meio de acesso de disco ou acesso de cartão. O meio de armazenamento pode incluir uma variedade de meios de armazenamento de dados acessados localmente como discos Blu-ray, DVDs, CD-ROMs, memória flash ou outros meios de armazenamento digital adequados para armazenar dados de vídeo criptados.
[0033] Em um exemplo adicional, um canal 16 pode incluir um servidor de arquivos ou outro dispositivo de armazenamento intermediário que armazene os dados de vídeo criptados gerados pelo dispositivo-fonte 12. Nesse exemplo, o dispositivo de destino 14 pode acessar os dados de vídeo criptados armazenados no servidor de arquivos ou outro dispositivo de armazenamento intermediário por meio de transmissão contínua ou transferência por download. O servidor de arquivos pode ser um tipo de servidor com capacidade para armazenar dados de vídeo criptados e transmitir os dados de vídeo criptados para o dispositivo de destino 14. Os servidores de arquivos exemplificativos incluem servidores da web (por exemplo, para um site da web), servidores de protocolo de transferência de arquivo (FTP), dispositivos de armazenamento fixado à rede (NAS) e unidades de disco local.
[0034] Ademais, no exemplo da Figura 1, o sistema de codificação de vídeo 10 inclui um dispositivo intermediário 19. O dispositivo intermediário 19 pode receber os dados de vídeo criptados pelo dispositivo-fonte 12. Em alguns exemplos, o dispositivo intermediário 19 pode receber os dados de vídeo criptados a partir do dispositivo-fonte 12 por meio de um canal similar ao canal 16. O dispositivo intermediário 19 pode processar os dados de vídeo criptados. Por exemplo, o dispositivo intermediário 19 pode aplicar extração de fluxo de bits aos dados de vídeo criptados para remover unidades de NAL particulares dos dados de vídeo criptados. O dispositivo de destino 14 pode receber os dados de vídeo processados pelo dispositivo intermediário 19. Em alguns exemplos, o dispositivo de destino 14 pode receber os dados de vídeo processados por meio de um canal similar ao canal 16. Em vários exemplos, o dispositivo intermediário 19 pode compreender vários tipos de dispositivos de computação. Por exemplo, em alguns exemplos, o dispositivo intermediário 19 compreende um elemento de rede de reconhecimento de mídia (MANE). Ademais, em alguns exemplos, um dispositivo intermediário 19 faz parte de uma rede de entrega de conteúdo (CDN).
[0035] O dispositivo de destino 14 pode acessar os dados de vídeo criptados através de uma conexão de dados padrão, como uma conexão de Internet. Os tipos exemplificativos 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 sejam adequadas para acessar dados de vídeo criptados armazenados em um servidor de arquivos. A transmissão de dados de vídeo criptados a partir do servidor de arquivos pode ser uma transmissão de transferência, um transmissão de transferência por download ou uma combinação das mesmas.
[0036] As técnicas dessa revelação não estão necessariamente limitadas a aplicações ou definições sem fio. O conjuntos de técnicas pode ser aplicado à codificação de vídeo em apoio a uma variedade de aplicações de multimídia, como difusões de televisão sem fio, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões contínuas de vídeo, por exemplo, por meio da Internet, criptaçã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, o sistema de codificação de vídeo 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicações tais como transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo e/ou telefonia por vídeo.
[0037] A Figura 1 é meramente um exemplo e os conjuntos de técnicas dessa revelação pode se aplicar a definições de codificação de vídeo (por exemplo, criptação de vídeo ou decodificação de vídeo) que não incluem necessariamente qualquer comunicação de dados entre os dispositivos de criptação e decodificação. Em outros exemplos, os dados são recuperados de uma memória local, transmitidos de modo contínuo por uma rede, ou similares. Um dispositivo de criptação de vídeo pode criptar e armazenar dados para a memória, e/ou um dispositivo de decodificação de vídeo pode recuperar e decodificar dados provenientes da memória. Em muitos exemplos, a criptação e a decodificação são realizadas por dispositivos que não se comunicam um com o outro, mas simplesmente criptam dados para a memória e/ou recuperam e decodificam dados provenientes da memória.
[0038] No exemplo da Figura 1, o dispositivo- fonte 12 inclui uma fonte de vídeo 18, um criptador de vídeo 20 e uma interface de saída 22. Em alguns exemplos, a interface de saída 22 pode incluir um modulador/desmodulador (modem) e/ou um transmissor. A fonte de vídeo 18 pode incluir um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contenha dados de vídeo capturados anteriormente, uma interface de alimentação de vídeo para receber dados de vídeo a partir de um fornecedor de conteúdo de vídeo e/ou um sistema de gráficos de computador para gerar dados de vídeo, ou uma combinação de tais fontes de dados de vídeo.
[0039] O criptador de vídeo 20 pode criptar dados de vídeo provenientes da fonte de vídeo 18. Em alguns exemplos, o dispositivo-fonte 12 transmite diretamente os dados de vídeo criptados para o dispositivo de destino 14 por meio da interface de saída 22. Em outros exemplos, os dados de vídeo criptados também podem ser armazenados em um meio de armazenamento ou um servidor de arquivos para acesso posterior pelo dispositivo de destino 14 para decodificação e/ou reprodução.
[0040] No exemplo da Figura 1, o dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. Em alguns exemplos, a interface de entrada 28 inclui um receptor e/ou um modem. A interface de entrada 28 pode receber os dados de vídeo criptados pelo canal 16. O decodificador de vídeo 30 pode decodificar dados de vídeo criptados. O dispositivo de exibição 32 pode exibir os dados de vídeo decodificados. O dispositivo de exibição 32 pode ser integrado ou externo ao dispositivo de destino 14. O dispositivo de exibição 32 pode compreender uma variedade de dispositivos de exibição, como um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0041] O criptador de vídeo 20 e o decodificador de vídeo 30, cada um, podem ser implantados como qualquer um dentre uma variedade de conjuntos de circuitos adequados, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), matrizes de portal programáveis por campo (FPGAs), lógica discreta, hardware ou quaisquer combinações dos mesmos. Se as técnicas forem implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento legível por computador não transitório adequado e pode executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas dessa revelação. Qualquer um dos supracitados (que inclui hardware, software, uma combinação de hardware e software, etc.) pode ser considerado como sendo um ou mais processadores. Cada um dentre o criptador de vídeo 20 e o decodificador de vídeo 30 podem estar incluídos em um ou mais criptadores ou decodificadores, um dos quais pode ser integrado como parte de um criptador/decodificador (CODEC) combinado em um dispositivo respectivo.
[0042] Essa revelação pode se referir, de modo geral, ao criptador de vídeo 20 “que sinaliza” certas informações a outro dispositivo, como o decodificador de vídeo 30. O termo “que sinaliza” pode se referir, de modo geral, à comunicação de elementos de sintaxe e/ou outros dados usados para decodificar os dados de vídeo compactados. Tal comunicação pode ocorrer em tempo real ou proximamente real. De modo alternativo, tal comunicação pode ocorrer por uma extensão de tempo, como pode ocorrer quando se armazena elementos de sintaxe em um meio de armazenamento legível por computador em um fluxo de bits criptado no momento de criptação, pode, então, ser recuperado por um dispositivo de decodificação em qualquer momento após ser armazenado nesse meio.
[0043] Em alguns exemplos, o criptador de vídeo 20 e o decodificador de vídeo 30 operam de acordo com um padrão de compressão de vídeo, como MPEG-4 Visual de ISO/IEC e H.264 de ITU-T (também conhecido como MPEG-4 AVC de ISO/IEC), que inclui sua extensão de Codificação de Vídeo Escalonável (SVC), extensão de Codificação de Vídeo de Múltiplas Vistas (MVC) e extensão de 3DV com base em MVC. Em alguns casos, qualquer fluxo de bits em conformidade à extensão de 3DV com base em MVC de H.264/ AVC sempre contém um subfluxo de bits que está em conformidade à extensão de MVC de H.264/ AVC. Ademais, existe um esforço em andamento para gerar uma extensão de codificação de vídeo tridimensional (3DV) em H.264/AVC, a saber H.261 de ITU-Tem AVC. Em outros exemplos, o criptador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com ITU-T H.261, MPEG-1 Visual de ISO/IEC, H.262 de ITU-T ou MPEG-2 Visual de ISO/IEC, H.264 de ITU-T, e H.264 Visual de ITU-T e ISO/IEC .
[0044] Ademais, em outros exemplos, o criptador de vídeo 20 e o decodificador de vídeo 30 pode operar de acordo com a Codificação de Vídeo de Alta Eficiência (HEVC) desenvolvida pela Equipe Colaborativa Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas de Codificação de Vídeo (VCEG) de Grupo de Especialistas de Figura em Movimento (MPEG) de ITU-T e ISO/IEC ou extensões dos mesmos. Um rascunho de relatório descritivo do padrão HEVC, referido no presente documento como WD de HEVC a partir deste ponto no presente documento ou “versão 1 de HEVC”, está disponível a partir de http://phenix.int- evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC- N1003-vl.zip. Outro rascunho de relatório descritivo do padrão HEVC está disponível a partir de http://phenix.int- evry.fr/j ct/doc_end_user/documents/ 15_Geneva/wg11/JCTVC- 01003-v2.zip.
[0045] Existem esforços em andamento para produzir codificação de vídeo escalonável, codificação de múltiplas vistas e extensões de 3DV para HEVC. A extensão de codificação de vídeo escalonável de HEVC pode ser referida como SHEVC ou SHVC. Um Rascunho de Trabalho (WD) de SHVC, que é referido como WD3 de SHVC a partir deste ponto no presente documento, está disponível a partir de http://phenix.it-sudparis.eu/j ct/ doc end user/documents/ 14 Vienna/wg11/JCTVC-N1008-v3.zip. Outro rascunho de trabalho de SHVC, que é referido como WD4 de SHVC a partir deste ponto no presente documento, está disponível a partir de http://phenix.int- evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC- O1008-v1.zip. A extensão em múltiplas vistas para HEVC, a saber MV-HEVC, também está em desenvolvimento pela JCT-3V. Um Rascunho de Trabalho (WD) de MV-HEVC, referido no presente documento como WD5 de MV-HEVC a partir deste ponto no presente documento, está disponível a partir de http://phenix.it-sudparis.eu/jct2/ doc_end_user/documents/5_Vienna/wg11/JCT3V-E1004-v6.zip. Outro rascunho de trabalho de MV-HEVC, referido no presente documento como WD6 de MV-HEVC a partir deste ponto no presente documento, está disponível a partir de http://phenix.it-sudparis.eu/jct2/ doc_end_user/documents/6_Geneva/wg11/JCT3V-F1004-v6.zip.
[0046] Atualmente, a Equipe de Colaboração Conjunta de Codificação de Vídeo 3D (JCT-3C) de VCEG e MPEG está desenvolvendo um padrão 3DV com base em HEVC, para o qual parte das tentativas de padronização inclui a padronização do codec de vídeo de múltiplas vistas com base em HEVC (MV-HEVC), e outra parte para a codificação de vídeo 3D com base em HEVC (3D-HEVC). Para MV-HEVC, deve-se garantir que haja apenas mudanças de sintaxe de alto nível (HLS) na mesma, de modo que nenhum módulo no nível de unidade de codificação (CU)/unidade de previsão (PU) em HEVC precise ser reprojetado e possa ser reutilizado completamente para a MV-HEVC. Em outras palavras, o MV-HEVC prevê apenas mudanças de sintaxe de alto nível e não mudanças de sintaxe de baixo nível, com aquelas do nível de CU/PU. Para 3D-HEVC, novas ferramentas de codificação, incluindo aquelas no nível de unidade de codificação/unidade de previsão, tanto para a vista de textura quanto para a vista de profundidade podem ser incluídas e suportadas. Um modelo de teste (por exemplo, software 3D-HTM) para 3D-HEVC pode ser transferido por download a partir do seguinte enlace: [3D-HTM versão 7.0]: https://hevc.hhi. fraunhofer.de/svn/svn_3 DVCSoftware/tags/HTM-7.0/
[0047] A descrição de referência de software assim como o rascunho de trabalho de 3D-HEVC está disponível conforme a seguir: Gerhard Tech, Krzysztof Wegner, Ying Chen, Sehoon Yea, “3D-HEVC Test Model 4”, JCT3V-D1005_spec_vl, Joint Collaborative Team on 3D Video Coding Extension Development of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 4th Meeting: Incheon, K, Abril de 2013 está disponível para transferência por download a partir do seguinte enlace: http://phenix.it- sudparis.eu/jct2/doc_end_user/documents/2_Shanghai/wg11/JCT 3V-B1005-vl.zip. Outra versão da descrição de referência de software de 3D-HEVC pode estar disponível a partir de http://phenix.it- sudparis.eu/jct2/doc_end_user/current_document.php?id=706. O criptador de vídeo 20 e o decodificador de vídeo 30 pode operar de acordo com SHEVC, MV-HEVC e/ou 3D-HEVC.
[0048] Em HEVC e outras especificações de codificação de vídeo, uma sequência de vídeos inclui, tipicamente, uma série de imagens. As imagens também podem ser chamadas de "quadros". Uma imagem pode incluir três matrizes de amostra, denominadas de SL, SCb, and SCr SL é uma matriz bidimensional (isto é, um bloco) de amostras de luma. SCb é uma matriz bidimensional de amostras de crominância Cb. SCr é uma matriz bidimensional de amostras de crominância Cr. As amostras de crominância também podem ser chamadas no presente documento de amostras de "croma". Em outros exemplos, uma imagem pode ser monocromática e pode incluir apenas uma matriz de amostras de luma.
[0049] A fim de gerar uma representação criptada de uma imagem, o criptador de vídeo 20 pode gerar um conjunto de unidades de árvore de codificação (CTUs). Cada uma das CTUs pode ser um bloco de árvore de codificação de amostras de luma, dois blocos de árvore de codificação correspondentes de amostras de croma e estruturas de sintaxe usadas para codificar as amostras dos blocos de árvore de codificação. Em imagens de monocroma ou imagens que têm três planos de cor separados, uma CTU pode compreender um único bloco de árvore de codificação e estruturas de sintaxe usados para codificar as amostras do bloco de árvore de codificação. Um bloco de árvore de codificação pode ser um bloco NxN de amostras. Uma CTU também pode ser denominada um "bloco de árvore" ou uma "maior unidade de codificação" (LCU). As CTUs de HEVC podem ser amplamente analógicas aos macroblocos de outros padrões standards, tais como, H.264/AVC. No entanto, a CTU não se limita necessariamente 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 ordenados consecutivamente em uma ordem de exame ou uma ordem de varredura.
[0050] A fim de gerar uma CTU codificada, o criptador de vídeo 20 pode realizar, recursivamente, partição de árvore quadrática nos blocos de árvore de codificação de uma CTU para dividir os blocos de árvore de codificação em blocos de codificação, por conseguinte, o nome "unidades de árvore de codificação". Um bloco de codificação é um bloco NxN de amostras. Uma CU pode compreender um bloco de codificação de amostras luma e dois blocos de codificação correspondentes de amostras croma de uma imagem que tem uma matriz de amostra luma, uma matriz de amostra Cb e uma matriz de amostra Cr e estruturas de sintaxe usadas para codificar as amostras dos blocos de codificação. Em imagens de monocroma ou imagens que têm três planos de cor separados, uma CU pode compreender um único bloco de codificação e estruturas de sintaxe usados para codificar as amostras do bloco de codificação.
[0051] O criptador de vídeo 20 pode particionar um bloco de codificação de uma CU em um ou mais blocos de previsão. Um bloco de previsão é um bloco (isto é, quadrado ou não quadrado) retangular de amostras nos quais a mesma previsão é aplicada. Uma unidade de previsão (PU) de uma CU pode compreender um bloco de previsão de amostras de luma, dois blocos de previsão correspondentes de amostras de croma e estruturas de sintaxe usadas para prever os blocos de previsão. O criptador de vídeo 20 pode gerar blocos preditivos de luma, de Cb e de Cr para blocos de previsão de luma, de Cb e de Cr de cada PU da CU. Nas imagens de monocroma ou em imagens que têm três planos de cor separados, uma PU pode compreende um único single bloco de previsão e estruturas de sintaxe usadas para prever o bloco de previsão.
[0052] O criptador de vídeo 20 pode usar intraprevisão ou interprevisão para gerar os blocos preditivos para uma PU. Se o criptador de vídeo 20 usar intraprevisão para gerar os blocos preditivos de uma PU, o criptador de vídeo 20 pode gerar blocos preditivos da PU com base nas amostras decodificadas da imagem associada à PU. Em algumas versões de HEVC, para o componente de luma de cada PU, um método de intraprevisão é utilizado com 33 modos de previsão angulares (indicado de 2 a 34), modo de DC (indexado por 1) e modo Plano (indicado por 0).
[0053] Caso o criptador de vídeo 20 use a interprevisão para gerar os blocos preditivos de uma PU, o criptador de vídeo 20 pode gerar os blocos preditivos da PU com base nas amostras decodificadas de uma ou mais imagens diferentes da imagem associada à PU. A interprevisão pode ser interprevisão unidirecional (isto é, uniprevisão) ou interprevisão bidirecional (isto é, biprevisão). A fim realizar a uniprevisão ou biprevisão, o criptador de vídeo 20 pode gerar uma primeira lista de imagens de referência (RefPicList0) e uma segunda lista de imagens de referência (RefPicList1) para uma fatia atual. Cada uma das listas de imagens de referências pode incluir uma ou mais imagens de referência. Durante o uso da uniprevisão, o criptador de vídeo 20 pode buscar as imagens de referência tanto na RefPicList0 como na RefPicList1 para determinar uma localização de referência dentro de uma imagem de referência. Adicionalmente, quando o uso da uniprevisão, o criptador de vídeo 20 pode gerar, com base pelo menos em parte nas amostras correspondentes à localização de referência, os blocos preditivos para a PU. Ademais, durante o uso da uniprevisão, o criptador de vídeo 20 pode gerar um único vetor de movimento que indica um deslocamento espacial entre um bloco de previsão da PU e a localização de referência. A fim de indicar o deslocamento espacial entre um bloco de previsão da PU e a localização de referência, um vetor de movimento pode incluir um componente horizontal que especifica um deslocamento horizontal entre o bloco de previsão da PU e a localização de referência e pode incluir um componente vertical que especifica um deslocamento vertical entre o bloco de previsão da PU e a localização de referência.
[0054] Durante o uso da biprevisão para criptar uma PU, o criptador de vídeo 20 pode determinar uma primeira localização de referência em uma imagem de referência na RefPicList0 e segunda localização de referência em uma imagem de referência na RefPicList1. Em seguida, o criptador de vídeo 20 pode gerar, com base pelo menos parcialmente nas amostras correspondentes à primeira e segunda localização de referências, os blocos preditivos para a PU. Ademais, durante o uso da biprevisão para criptar a PU, o criptador de vídeo 20 pode gerar um primeiro vetor de movimento que indica um deslocamento espacial entre um bloco de amostra da PU e a primeira localização de referência e um segundo vetor de movimento que indica um deslocamento espacial entre o bloco de previsão da PU e a segunda localização de referência.
[0055] Após o criptador de vídeo 20 gerar blocos preditivos (por exemplo, blocos preditivos de luma, Cb e Cr) para um ou mais PUs de uma CU, o criptador de vídeo 20 pode gerar um ou mais blocos residuais para a CU. Cada amostra em um bloco residual da CU pode indicar uma diferença entre uma amostra em um bloco preditivo da CU e uma amostra correspondente em um bloco de codificação da CU. Por exemplo, o criptador 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 de luma em um dos blocos preditivos de luma das PUs da CU e uma amostra correspondente no bloco de codificação de luma da CU. Além disso, o criptador de vídeo 20 pode gerar um bloco residual de Cb para a CU. Cada amostra no bloco residual de Cb da CU pode indicar uma diferença entre uma amostra de Cb em um dos blocos de Cb preditivos de PUs da CU e uma amostra correspondente no bloco de codificação de Cb da CU. O criptador de vídeo 20 também pode gerar um bloco residual de Cr para a CU. Cada amostra no bloco residual de Cr da CU pode indicar uma diferença entre uma amostra de Cr em um dos blocos de Cr preditivos de uma PU da CU e uma amostra correspondente no bloco de codificação de Cr da CU.
[0056] Além disso, o criptador de vídeo 20 pode usar o particionamento de árvore quadrática para decompor os blocos residuais (por exemplo, blocos residuais luma, Cb e Cr) de uma CU em um ou mais blocos de transformada (por exemplo, blocos de transformada luma, Cb e Cr). Um bloco de transformada é um bloco (por exemplo, quadrado ou não quadrado) retangular de amostras nos quais a mesma transformada é aplicada. Uma unidade de transformada (TU) de um 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. Desse modo, cada TU de uma CU pode ser associada a um bloco de transformada de luma, um bloco de transformada de Cb e um bloco de transformada de Cr. O bloco de transformada de luma associado à TU pode ser um sub-bloco do bloco residual de luma da CU. O bloco de transformada de Cb pode ser um sub-bloco do bloco residual de Cb da CU. O bloco de transformada de Cr pode ser um sub- bloco do bloco residual de Cr da CU. Nas imagens de monocroma ou nas imagens que têm três planos de cor separados, uma TU pode compreender um único bloco de transformada e estruturas de sintaxe usadas para transformar as amostras do bloco de transformada.
[0057] O criptador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de uma TU a fim de gerar um bloco de coeficiente para a TU. Um bloco de coeficiente pode ser uma matriz bidimensional de coeficientes de transformada. Um coeficiente de transformada pode ser uma quantidade escalar. Por exemplo , o criptador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de luma de uma TU a fim de gerar um bloco de coeficiente de luma para a TU. O criptador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de Cb de uma TU a fim de gerar um bloco de coeficiente de Cb para a TU. O criptador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de Cr de uma TU a fim de gerar um bloco de coeficiente de Cr para a TU.
[0058] Após gerar um bloco de coeficiente (por exemplo, um bloco de coeficiente de luma, um Cb bloco de coeficiente ou um Cr bloco de coeficiente), o criptador de vídeo 20 pode quantizar o bloco de coeficiente. Em geral, a quantização se refere a um processo no qual os coeficientes de transformada são quantizados para reduzir possivelmente a quantidade de dados usados para representar os coeficientes de transformada, o que fornece uma compactação adicional. Após o criptador de vídeo 20 quantizar um bloco de coeficiente, o criptador de vídeo 20 pode criptar por entropia elementos de sintaxe que indicam os coeficientes de transformada quantizados. Por exemplo, o criptador de vídeo 20 pode realizar Codificação Aritmética Binária Adaptativa Ao Contexto (CABAC - Context-Adaptive Binary Arithmetic Coding) nos elementos de sintaxe que indicam os coeficientes de transformada quantizados.
[0059] O criptador de vídeo 20 pode emitir um fluxo de bits que inclui uma sequência de bits que forma uma representação de imagens codificadas e dados associados. O fluxo de bits pode compreender uma sequência de unidades de camada de abstração de rede (NAL). Uma unidade de NAL é uma estrutura de sintaxe que contém uma indicação do tipo de dados na unidade de NAL e bytes e que contêm esses dados na forma de uma carga de sequência de bytes brutos (RBSP) intercalados conforme necessário com bits de prevenção de emulação. Cada uma das unidades de NAL inclui um cabeçalho de unidade de NAL e encapsula uma RBSP. O cabeçalho de unidade de NAL pode incluir um elemento de sintaxe que indica um código do tipo unidade de NAL. O código do tipo unidade de NAL especificado pelo cabeçalho de unidade de NAL de uma unidade de NAL indica o tipo da unidade de NAL. Uma RBSP pode ser uma estrutura de sintaxe que contém um número inteiro de bytes que é encapsulado dentro de uma unidade de NAL. Em alguns exemplos, uma RBSP inclui zero bits.
[0060] Tipos diferentes de unidades de NAL podem encapsular tipos diferentes de RBSPs. Por exemplo, um primeiro tipo de unidade de NAL pode encapsular uma RBSP para um ajuste de parâmetro 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 informações de aprimoramento suplementares (SEI) (isto é, um RBSP de SEI), e assim por diante. As unidades de NAL que encapsulam RBSPs para dados de codificação de vídeo (conforme oposto às RBSPs para conjuntos de parâmetros e mensagens de SEI) podem ser chamadas de unidades de NAL de camada de codificação de vídeo (VLC). A SEI contém informações que não são necessárias para decodificar as amostras de imagens codificadas a partir de unidades de NAL de VCL. Uma RBSP de SEI pode incluir uma ou mais mensagens de SEI.
[0061] O HEVC e outros padrões de codificação de vídeo preveem vários tipos de conjuntos de parâmetros. Por exemplo, um conjunto de parâmetros de vídeo (VPS) é uma estrutura de sintaxe que compreende elementos de sintaxe que e aplicam a zero ou mais sequências de vídeo codificado (CVSs) inteiras. Um conjunto de parâmetros de sequência (SPS) pode conter informações que se aplicam a todas as fatias de um CVS. Um SPS pode incluir um elemento de sintaxe que identifica um VPS que está ativo quando o SPS estiver ativo. Dessa forma, os elementos de sintaxe de um VPS pode ser, de modo geral, mais aplicável que os elementos de sintaxe de um SPS. Um PPS é uma estrutura de sintaxe que compreende elementos de sintaxe que se aplicam a zero ou mais imagens codificadas. Um PPS pode incluir um elemento de sintaxe que identifica um SPS que está ativo quando o PPS estiver ativo. Um cabeçalho de fatia de uma fatia pode incluir um elemento de sintaxe que indica um PPS que está ativo quando a fatia estiver em codificação. Os conjuntos de parâmetros podem incluir extensões para extensões particulares de padrões de codificação de vídeo. Uma extensão de um conjunto de parâmetros pode incluir elementos de sintaxe específicos a uma extensão de um padrão de codificação de vídeo. Por exemplo, uma extensão de um conjunto de parâmetros pode incluir elementos de sintaxe usados em SHVC, MV-HEVC ou 3D-HEVC mas não em HEVC- base.
[0062] O decodificador de vídeo 30 pode receber um fluxo de bits gerado pelo criptador de vídeo 20. Além disso, o decodificador de vídeo 30 podem analisar o fluxo de bits para obter elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base, pelo menos parcialmente, nos elementos de sintaxe obtidos do fluxo de bits. O processo para reconstruir os dados de vídeo pode, ser, em geral, recíprocos ao processo realizado pelo criptador de vídeo 20. Por exemplo, o decodificador de vídeo 30 pode usar vetores de movimento de PUs para determinar os blocos preditivos para as PUs de uma CU atual. Além disso, o decodificador de vídeo 30 pode quantizar, inversamente, os coeficientes de blocos associados às TUs da CU atual. O decodificador de vídeo 30 pode realizar transformadas inversas nos blocos coeficientes para reconstruir os blocos de transformada associados às TUs da CU atual. O decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual adicionando-se as amostras dos blocos preditivos para as PUs da CU atual às amostras correspondentes dos blocos de transformada das TUs da CU atual. Através da reconstrução dos blocos de codificação para cada CU de uma imagem, o decodificador de vídeo 30 pode reconstruir a imagem.
[0063] Em codificação de múltiplas vistas, podem haver múltiplas vistas da mesma cena proveniente de diferentes pontos de vista. O termo “unidade de acesso” pode ser usado para se referir ao conjunto de imagens que corresponde ao mesmo período de tempo. Dessa forma, os dados de vídeo podem ter seu conceito 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. Nessa revelação, uma “vista” pode se referir a uma sequência ou conjunto de componentes de vista associado ao mesmo identificador de vista. Um componente de vista pode conter um componente de vista de textura e um componente de vista de profundidade. Nessa revelação, uma “vista” pode ser referir a um conjunto ou sequência de um ou mais componentes de vista associados ao mesmo identificador de vista.
[0064] Um componente de vista de textura (isto é, uma imagem de textura) pode ser uma representação codificada da textura de uma vista em uma única unidade de acesso. Uma vista de textura pode ser uma sequência de componentes de vista de textura associada a um valor idêntico de um índice de ordem de vista. Um índice de ordem de vista de uma vista pode indicar uma posição de câmera da vista em relação a outras vistas. Um componente de vista de profundidade (isto é, uma imagem de profundidade) pode ser uma representação codificada da profundidade de uma vista em uma única unidade de acesso. Uma vista de profundidade pode ser um conjunto ou sequência de um ou mais componentes de vista de profundidade associados a um valor idêntico do índice de ordem de vista.
[0065] A codificação de múltiplas vistas suporta previsão intervista. A previsão intervista é similar à interprevisão usada em HEVC e pode usar os mesmos elementos de sintaxe. Entretanto, quando um codificador de vídeo realizar previsão intervista em um bloco de vídeo atual (como uma PU), o criptador de vídeo 20 pode usar, como uma imagem de referência, uma imagem que esteja na mesma unidade de acesso que o bloco de vídeo atual, mas em uma vista diferente. Em contraste, a interprevisão convencional usa apenas imagens em diferentes unidades de acesso como imagens de referência.
[0066] Na codificação de múltiplas vistas, um fluxo de bits pode ter uma pluralidade de camadas. Cada uma das camadas pode corresponder a uma vista diferente. Na codificação de múltiplas vistas, uma vista pode ser referida como uma “vista-base” se um decodificador de vídeo (por exemplo, o decodificador de vídeo 30) puder decodificar imagens na vista sem referência a imagens em qualquer outra vista. Uma vista pode ser referida como uma “vista que não seja base” ou uma “vista dependente” caso a decodificação da vista dependa da decodificação de imagens em uma ou mais outras vistas. Quando codifica uma imagem em uma das vistas que não seja de base, um codificador de vídeo (como o criptador de vídeo 20 ou o decodificador de vídeo 30) pode incluir, em uma lista de imagens de referência , uma imagem que esteja em uma vista diferente mas dentro de um mesmo período de tempo (isto é, unidade de acesso) que a imagem que o codificador de vídeo codifica atualmente. Como outras imagens de referência interprevisão, o codificador de vídeo pode inserir uma imagem de referência de previsão intervista em qualquer posição de uma lista de imagens de referência .
[0067] Em SVC, as camadas que não sejam a camada-base podem ser referidas como “camadas de aprimoramento” e podem fornecer informações que aprimorem a qualidade visual de dados de vídeo decodificados a partir do fluxo de bits. A SVC pode aprimorar a resolução espacial, a razão de sinal para ruído (isto é, qualidade) ou taxa de tempo. Na In codificação de vídeo escalonável (por exemplo, SHVC), uma “representação de camada” pode ser uma representação codificada de uma camada espacial em uma única unidade de acesso. Para facilidade de explicação, essa revelação pode se referir a componentes de vista e/ou representações de camada como “componentes de vista/representações de camada.”
[0068] Para implantar as camadas, os cabeçalhos de unidades de NAL podem incluir elementos de sintaxe de nuh_reserved_zero_6bits. Na versão 1 de HEVC, o elemento de sintaxe de nuh_reserved_zero_6bits está reservado. Entretanto, em MV-HEVC, 3D-HEVC e SVC, o elemento de sintaxe de nuh_reserved_zero_6bits é referido como o elemento de sintaxe de nuh_layer_id. O elemento de sintaxe de nuh_layer_id especifica um identificador de uma camada. As unidades de NAL de um fluxo de bits que têm elementos de sintaxe de nuh_layer_id que especificam diferentes valores pertencem a camadas diferentes do fluxo de bits.
[0069] Em alguns exemplos, o elemento de sintaxe de nuh_layer_id de uma unidade de NAL é igual a 0 se a unidade de NAL se referir a uma camada-base na codificação de múltiplas vistas (por exemplo, MV-HEVC), na codificação de 3DV (por exemplo, 3D-HEVC) ou na codificação de vídeo escalonável (por exemplo, SHVC). Os dados em uma camada-base de um fluxo de bits podem ser decodificados sem referência a dados em qualquer outra camada do fluxo de bits. Se uma unidade de NAL não se referir uma camada-base na codificação de múltiplas vistas, 3DV ou codificação de vídeo escalonável, o elemento de sintaxe de nuh_layer_id da unidade de NAL pode ter um valor diferente de zero.
[0070] Ademais, alguns componentes de vista/representações de camada dentro de uma camada podem ser decodificados sem referência a outros componentes de vista/representações de camada dentro da mesma camada. Dessa forma, as unidades de NAL que encapsulam dados de certos componentes de vista/representações de camada de uma camada podem ser removidas do fluxo de bits sem afetar a capacidade de decodificação de outros componentes de vista/representações de camada na camada. Remover as unidades de NAL que encapsulam dados de tai componentes de vista/representações de camada pode reduzir a taxa de quadro do fluxo de bits. Um subconjunto de componentes de vista/representações de camada dentro de uma camada que pode ser decodificada sem referência a outros componentes de vista/representações de camada dentro da camada pode ser referido no presente documento como uma “subcamada” ou uma “subcamada de tempo”.
[0071] As unidades de NAL podem incluir elementos de sintaxe de id de tempo que especificam identificadores de tempo (isto é, Temporalids) das unidades de NAL. O identificador de tempo de uma unidade de NAL identifica uma subcamada a qual a unidade de NAL pertence. Dessa forma, cada subcamada de um fluxo de bits pode ter um identificador de tempo diferente. Em geral, se o identificador de tempo de uma primeira unidade de NAL de uma camada for menor que o identificador de tempo de uma segunda unidade de NAL da mesma camada, os dados encapsulados pela primeira unidade de NAL podem ser decodificados sem referência aos dados encapsulados pela segunda unidade de NAL.
[0072] Um fluxo de pode estar associado a uma pluralidade de pontos de operação. Cada ponto de operação de um fluxo de bits está associado a um conjunto de identificadores de camada (por exemplo, um conjunto de valores de nuh_layer_id) e um identificador de tempo. O conjunto de identificadores de camada pode ser denotado como OpLayerIdSet e o identificador de tempo pode ser denotado como TemporalID. Se o identificador de camada da unidade de NAL estiver em um conjunto de identificadores de camada do ponto de operação e o identificador de tempo da unidade de NAL for menor ou igual ao identificador de tempo do ponto de operação, a unidade de NAL é associada ao ponto de operação.
[0073] Um processador de vídeo (por exemplo, um elemento de rede de reconhecimento de mídia (MANE), um motor de partição, um decodificador de vídeo ou outro dispositivo) pode aplicar fluxo de bits que se afina ao fluxo de bits de HEVC. Em qualquer ponto no fluxo de bits, um processador de vídeo pode começar a remover ou parar de decodificar as unidades de NAL de subcamadas mais altas (isto é, subcamadas associadas a identificadores de tempo mais altos) com base no fato de que as imagens nas subcamadas mais baixas (isto é, as subcamadas associadas a identificadores de tempo mais baixos) ainda são decodificáveis devido ao fato do processo de decodificação para as imagens nas subcamadas mais baixas does não depender das unidades de NAL das subcamadas mais altas. A ação de remover ou parar de decodificar todas as unidades de NAL com identificadores de tempo mais altos que um certo valor pode ser referida como comutação de diminuição de tempo. A comutação de diminuição de tempo sempre pode ser possível.
[0074] O termo “comutação de aumento de tempo” pode se referir à ação de iniciar a encaminhar ou iniciar a decodificar as unidades de NAL de uma certa subcamada que não foi encaminhada ou decodificada até aquele ponto. A comutação de aumento de tempo só pode ser possível se nenhuma das imagens na camada que é comutada para depender de qualquer imagem na mesma subcamada prior até o ponto no fluxo de bits no qual a comutação foi realizada. Dessa forma, o termo “ponto de comutação de subcamada de tempo” pode se referir a uma imagem que não tem dependência de qualquer imagem que esteja na mesma subcamada que a imagem e que anteceda a imagem na ordem de decodificação.
[0075] SVC, MVC, MVC mais profundidade (MVC+D) (3D-HEVC), e a versão 1 de HEVC especificam um processo de extração de subfluxo de bits. Por exemplo, a cláusula 10 da versão 1 de HEVC especifica um processo de extração de subfluxo de bits. Na versão 1 de HEVC, o processo de extração de subfluxo de bits toma um fluxo de bits, um identificador-alvo de tempo mais alto e um conjunto-alvo de camadas como entradas. Ademais, na versão 1 de HEVC, o processo de extração de subfluxo de bits fornece um subfluxo de bits como saída. O subfluxo de bits fornecido pelo processo de extração de subfluxo de bits não inclui unidades de NAL de VCL que não pertençam ao conjunto-alvo de camadas e não inclui unidades de NAL de VCL que tenham identificadores de tempo maiores que o identificador-alvo de tempo mais alto. Em alguns exemplos, é necessário que cada subfluxo de bits extraível seja um fluxo de bits em conformidade.
[0076] Um problema que foi considerado no projeto do processo de extração de fluxo de bits, por exemplo, no desenvolvimento de MVC, é se objetivar o melhor autocompletude do subfluxo de bits ou o tamanho ideal de um subfluxo de bits. Se um subfluxo de bits for extraído como objetivando a autocompletude do subfluxo de bits, cada subfluxo de bits extraído adicionalmente do subfluxo, de modo recursivo, pode ser um fluxo de bits em conformidade. Se um subfluxo de bits for extraído objetivando o tamanho ideal, parte ou todas as imagens que não sejam necessárias para uma decodificação correta das camadas-alvo de saída não têm que ser incluídas no subfluxo de bits extraído.
[0077] Objetivar a melhor autocompletude pode tornar o processo de extração de fluxo de bits mais fácil de especificar. Um subfluxo de bits autocompleto ainda é “completamente extraível” e é mais útil se a extração de fluxo de bits for realizada por um servidor de transmissão contínua ou um elemento de rede intermediário e cada subconjunto do fluxo de bits poder ser solicitado adicionalmente por alguns usuários finais. Entretanto, por outro lado, se o subfluxo de bits extraído for diretamente enviado para usuários finais e não for presumido como estando extraído adicionalmente, uma eficácia de largura de banda de transmissão melhor pode ser alcançada objetivando- se o tamanho ideal do fluxo de bits. Tal subfluxo de bits gerado objetivando-se o tamanho ideal é considerado como “extraído de modo ideal”. Para habilitar também a vantagem de ser aplicado dependendo das aplicações, o processo de extração de subfluxo de bits pode ser projetado para escolher de modo adaptativo a melhor operação de extração.
[0078] Wang et al, “MV-HEVC/SHVC HLS: On changing of the highest layer ID across AUs and multi-mode bitstream extraction,” Equipe Colaborativa Conjunta Em Codificação de Vídeo (JCT-VC) sw ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 14° Encontro: Vienna, AT, de 25 julho a 2 agosto de 2013, documento no. JCTVC-N0267, e Extensões da Equipe Colaborativa Conjunta em Codificação de Vídeo 3D de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 5° Encontro: Vienna, AT, de 27 de julho a 2 de agosto de 2013, documento no. JCT3V-E0087 (a partir deste ponto no presente documento, “JCTVC-N0267/JCT3V-E0087”) proposto como suporte a extrações de múltiplos modos de fluxo de bits. JCTVC- N0267/JCT3V-E0087 propôs as seguintes mudanças à subcláusula 10 do WD de HEVC (com as adições estando sublinhadas (por exemplo, “texto adicionado”), e as remoções indicadas em itálico com colchetes duplos (por exemplo, “[[texto eliminado]]”)).
Processo de extração de subfluxo de bits
[0079] As entradas do subprocesso de extração de fluxo de bits a esse processo são um fluxo de bits, um valor-alvo mais alto de TemporalId_tIdTarget, [[e]] uma lista de identificadores de camada-alvo layerldListTarge, uma lista de identificadores de camadas-alvo de saída TargetOptLayerldLis e um modo de extração subExtModeldc, que é especificado por um meio externo quando presente, ou definido igual a 0 quando não especificado por um meio externo. O resultado desse é um subfluxo de bits.
[0080] É um requerimento da conformidade do fluxo de bits para o fluxo de bits de entrada que qualquer subfluxo de bits se saída do processo especificado nessa subcláusula com tldTarget igual a qualquer valor na faixa de 0 a 6, inclusive, e layerldListTarget igual à lista de identificadores de camadas associada a um conjunto de camadas especificada no conjunto ativo de parâmetros de vídeo deva ser um fluxo de bits em conformidade quando subExtModeldc for igual a Q.
[0081] OBSERVAÇÃO 1 - Um fluxo de bits em conformidade contém uma ou mais unidades de NAL de segmento de fatia codificada com nuh_layer_id igual a 0 e TemporalId igual a 0.
[0082] O subfluxo de bits de saída é derivado conforme o seguinte:
[0083] - Quando uma ou mais das condições a seguir forem verdadeiras, remover todas as unidades de NAL de Informações de Aprimoramento Suplementares (SEI) que tiverem nuh_layer_id igual a 0 e que contenham uma mensagem de SEI não aninhada de período e armazenamento temporário, a mensagem de SEI não aninhada de temporização de imagem ou uma mensagem de SEI não aninhada de informações da unidade de decodificação:
[0084] - layerldListTarget não inclui todos os valores de nuh_layer_id em todas as unidades de NAL no fluxo de bits.
[0085] - tIdTarget é menor que o maior TemporalId em todas as unidades de NAL no fluxo de bits.
[0086] OBSERVAÇÃO 2 - um extrator “inteligente” de fluxo de bits pode incluir mensagens de SEI de imagem de armazenamento temporário não aninhadas apropriadas, mensagens de SEI de temporização de imagem não aninhadas e mensagens de SEI de informações da unidade de decodificação não aninhadas no subfluxo de bits extraído, contanto que as mensagens de SEI aplicáveis ao subfluxo de bits estivessem presentes como mensagens de SEI aninhadas no fluxo de bits original.
[0087] - Remover todas as unidades de NAL com TemporalId maior que tldTarget ou nuh_layer_id que não estejam entre os valores incluídos em layerldListTarget.
[0088] - Quando subExtModeldc for maior que 0, remover adicionalmente as unidades de NAL com nuh_layer_id não estando entre os valores incluídos em TargetOptLayerldList e com um TemporalId maior que max_tid_id_ref_pics_plus1 O LaverldxInVpsr nuh_layer_id 11— 1.
[0089] - Quando subExtModeldc for maior que 1, remover adicionalmente as unidades de NAL com nuh_layer_id não estando entre os valores incluídos em TargetOptLayerldList e o discardable_flag igual a 1.
[0090] O discardable_flag é um elemento de sintaxe incluído em um cabeçalho de segmento de fatia. Conforme definido no WD5 de MV-HEVC, o discardable_flag igual a 1 especifica que uma imagem codificada não é usada como uma imagem de referência para interprevisão e não é usada como uma imagem de referência intercamada no processo de decodificação de imagens subsequentes na ordem de decodificação, o discardable_flag igual a 0 especifica que a imagem codificada pode ser usada como uma imagem de referência para interprevisão e pode ser usada como uma imagem de referência intercamada no processo de decodificação de imagens subsequentes na ordem de decodificação. Quando não presente, o valor do discardable_flag é inferido como sendo igual a 0.
[0091] O processo de extração de fluxo de bits de múltiplos modos conforme proposto nos documentos JCTVC- N0267 e JCT3V-E0087 tem potencialmente os problemas as seguir. Primeiramente, o processo de extração de fluxo de bits de múltiplos modos produz múltiplos subfluxos de bits com a mesma entrada de uma lista de identificadores de camada-alvo e um temporalId-alvo. Entretanto, os múltiplos subfluxos de bits não são necessariamente fluxos de bits em conformidade, portanto, um decodificador de MV-HEVC/SHVC em conformidade pode não ter capacidade para decodificar alguns dos subfluxos de bits.
[0092] Em segundo lugar, os subfluxos de bits “completamente extraíveis” podem ser usados para a extração de fluxo de bits posterior com quaisquer modos possíveis. Entretanto, os subfluxos de bits “extraídos de modo ideal” podem não ter algumas imagens decodificadas em algumas camadas. Portanto, pode ser impossível extrair certos conjuntos de camadas de saída de modo bem sucedido a partir de tal fluxo de bits, especialmente se o fluxo de bits conter uma camada que não pertença a uma camada-alvo de extração durante o processo de extração anterior. Dessa forma, os tipos de extrações de fluxo de bits podem ser realizados em um fluxo de bits caso seja indicado dessa forma como uma propriedade de um fluxo de bits.
[0093] Em terceiro lugar, independentemente do modo de extração do fluxo de bits, o subfluxo de bits contém unidades de NAL suficientes para decodificar e emitir as imagens dentro do conjunto de camadas-alvo de saída. Portanto, a extração adicional de fluxo de bits para qualquer modo é possível contanto que a camada-alvo de extração (TargetOptLayerldList conforme no documento JCTVC- N0267/JCT3V-E0087) definida não excede a usada na extração anterior (e, consequentemente, as camadas-alvo (layerldListTarget conforme no HEVC atual e no documento JCTVC-N0267/JCT3V-E0087) não excedem as camadas usadas na extração anterior). Entretanto, um fluxo de bits extraído não inclui informações que indicam quais foram as camadas- alvo e/ou conjunto de camadas-alvo de saída usados para produzir o fluxo de bits extraído.
[0094] Em quarto lugar, as entradas ao processo de extração de fluxo de bits propostas no documento JCTVC-N0267/JCT3V-E0087 incluem tanto as camadas- alvo quanto o conjunto de camadas de saída. Entretanto, com a entrada do conjunto de camadas de saída, no modo que não extraia o subfluxo de bits “completamente extraível”, as informações de camadas-alvo se tornam redundantes. Mesmo quando as camadas-alvo são especificadas, não é claro se cada camada dentre as camadas-alvo pode ser claramente decodificada devido ao fato de que algumas outras camadas que são dependentes pelas camadas-alvo não estarem incluídas nas camadas-alvo, isto é, quando as camadas-alvo não estiverem auto-contidas. Portanto, em muitos cenários, a presença de camadas-alvo, como uma entrada para o processo de extração de fluxo de bits não é suficiente nem necessária.
[0095] O conjuntos de técnicas dessa revelação pode endereçar um ou mais dos problemas descritos acima. Um sumário dos conjuntos de técnicas dessa revelação é apresentado abaixo, e implantações exemplificativas dos conjuntos de técnicas dessa revelação são fornecidos na seção a seguir. Alguns dos conjuntos de técnicas dessa revelação podem ser aplicados de modo independente e alguns dos conjuntos de técnicas dessa revelação podem ser aplicados em combinação.
[0096] De acordo com um primeiro conjunto de técnicas exemplificativo dessa revelação, um nível de extração ou indicação de nível de conformidade pode ser introduzido em um codec de vídeo como sistemas para especificar o nível de conformidade para um ponto de operação, que também está relacionado ao fato de que se o fluxo de bits associado a tal indicação foi produzido através de extração de fluxo de bits e caso tenha sido, em qual nível. Por exemplo, a indicação igual a 0 significa que o fluxo de bits não passou por um processo de extração de fluxo de bits ou foi extraído com um modo de subExtModeldc igual a 0. Tal valor significa que o fluxo de bits pode ser extraído de modo flexível com subExtModeldc igual u maior que 0. Em outro exemplo, a indicação igual a 1 significa que o fluxo de bits pode ter sido produzido pelo processo de extração de fluxo de bits com um modo de subExtModeldc igual a 1. Tal valor significa que o fluxo de bits não pode ser mais extraído, a não ser que especificado de outra forma como no terceiro conjunto de técnicas exemplificativo dessa revelação, que é descrito abaixo.
[0097] De acordo com um segundo conjunto de técnicas exemplificativo dessa revelação, os subfluxos de bits extraídos com cada um dos múltiplos modos de extração podem ser considerados como em conformidade. Em um aspecto, como parte de cada ponto de operação em conformidade, um conjunto de camadas de saída está associado a uma indicação de nível de conformidade.
[0098] Em outro aspecto do segundo conjunto de técnicas exemplificativo dessa revelação, ainda que para o mesmo ponto de operação conforme definido por um conjunto de camadas-alvo de saída e um TemporalId-alvo, as imagens codificadas contidas são diferentes para subfluxos de bits extraídos de diferentes modos, portanto é proposto ter a indicação para a sinalização dos parâmetros de Decodificador de Referência Hipotético (HRD). Um “decodificador de referência hipotética” ou “HRD” é um modelo de armazenamento temporário de vídeo. O HRD descreve como dados devem ser armazenados temporariamente para dados em decodificação e decodificados e como dados decodificados são armazenados temporariamente para emissão. Por exemplo, o HRD descreve a operação de um armazenamento temporário de imagem codificada (“CPB”) e um armazenamento temporário de imagem decodificada (“DPB”) em um decodificador de vídeo. O CPB é um armazenamento temporário de primeira entrada e de primeira saída que contém unidades de acesso na ordem de decodificação especificada pelo HRD. O DPB é um armazenamento temporário que mantém imagens decodificadas para referência, reordenação de saída, ou atraso de saída especificado pelo HRD. Um criptador de vídeo pode sinalizar um conjunto de parâmetros de HRD. Os parâmetros de HRD controlam vários aspectos do HRD. Os parâmetros de HRD podem incluir um atraso de remoção de CPB inicial, um tamanho de CPB, uma taxa de bits, um atraso de saída de DPB inicial e um tamanho de DPB. Esses parâmetros de HRD podem ser codificados em uma estrutura de sintaxe de hrd_parameters() especificada em um Conjunto de Parâmetros de Vídeo (VPS) e/ou um Conjunto de Parâmetros de Sequência (SPS). Os parâmetros de HRD também podem ser especificados nas mensagens de SEI de período de armazenamento temporário ou nas mensagens de SEI de temporização de imagem.
[0099] Em H.264/AVC e HEVC, a conformidade de fluxo de bits e a conformidade do decodificador são especificadas como partes do relatório descritivo de HRD. Em outras palavras, o modelo de HRD especifica testes para determinar se um fluxo de bits se conforma a um padrão e testes para determinar se um decodificador se conforma ao padrão. Embora o HRD seja nomeado como um tipo de decodificador, os criptadores de vídeo tipicamente usam o HRD para garantir a conformidade do fluxo de bits, embora os decodificadores de vídeo tipicamente não precisem do HRD.
[0100] Tanto o H.264/AVC quanto o HEVC especificam dois tipos de fluxo de bits ou conformidade de HRD, a saber Tipo I e Tipo II. Um fluxo de bits de Tipo I é um fluxo de unidade de NAL que contém apenas as unidades de NAL de VCL e unidade de NAL de dados de preenchimento para todas as unidades de acesso no fluxo de bits. Um fluxo de bits de Tipo II é um fluxo de unidade de NAL que contém, em adição às unidades de NAL de VCL e às unidades de NAL de dados de preenchimento para todas as unidades de acesso no fluxo de bits, pelo menos um dos seguintes: unidades adicionais de NAL que não sejam de VCL e que não sejam unidades de NAL de dados de preenchimento; e todos os elementos de sintaxe dentre leading_zero_8bits, zero byte, start_coded_prefix_one_3bytes e trailing_zero_8bits que formam um fluxo de bytes proveniente do fluxo de unidade de NAL.
[0101] Quando um dispositivo realizar um teste de conformidade de fluxo de bits que determina se um fluxo de bits se conforma a um padrão de codificação de vídeo, o dispositivo pode selecionar um ponto de operação do fluxo de bits. O dispositivo pode, então, determinar um conjunto de parâmetros de HRD aplicável ao ponto de operação selecionado. O dispositivo pode usar o conjunto de parâmetros de HRD aplicável ao ponto de operação selecionado para configurar o comportamento do HRD. De modo mais particular, o dispositivo pode usar o conjunto aplicável de parâmetros de HRD para configurar os comportamentos de componentes particulares do HRD, como um programador de fluxo hipotético (HSS), o CPB, um processo de decodificação, o DPB e assim por diante. Subsequentemente, o HSS pode injetar dados de vídeo codificados do fluxo de bits no CPB do HRD de acordo com uma programação particular. Ademais, o dispositivo pode invocar um processo de decodificação que decodifique os dados de vídeo codificados no CPB. O processo de decodificação pode emitir imagens decodificadas para o DPB. Conforme o dispositivo move dados através do HRD, o dispositivo pode determinar se um conjunto particular de restrições permanece satisfeito. Por exemplo, o dispositivo pode determinar se uma condição de sobrefluxo ou de subfluxo ocorre no CPB ou DPB enquanto o HRD decodifica a representação do ponto de operação do ponto de operação selecionado. O dispositivo pode selecionar e processar cada ponto de operação do fluxo de bits desse modo. Se nenhum ponto de operação do fluxo de bits fizer com que as restrições sejam violadas, o dispositivo pode determinar que o fluxo de bits se conforma ao padrão de codificação de vídeo.
[0102] Tanto o H.264/AVC quanto o HEVC especifica dois tipos de conformidade do decodificador, a saber conformidade do decodificador de temporização de saída e conformidade do decodificador de ordem de saída. Uma decodificador que reivindique conformidade a um perfil, patamar e nível específicos com capacidade para decodificar de modo bem sucedido todos os fluxos de bits que se conformam aos requerimentos de conformidade do fluxo de bits de um padrão de codificação de vídeo, como HEVC. Nessa revelação, um “perfil” pode se referir a um subconjunto da sintaxe de fluxo de bits. Os “patamares” e “níveis” podem ser especificados dentro de cada perfil. Um nível de um patamar pode ser um conjunto específico de restrições impostas em valores dos elementos de sintaxe no fluxo de bits. Essas restrições podem ser simples limites de valores. Alternativamente, as restrições podem tomar a forma de restrições em combinações aritméticas de valores (por exemplo, largura de imagem multiplicada por altura de imagem multiplicada pela quantidade de imagens decodificadas por segundo). Tipicamente, um nível especificado para um patamar mais baixo é mais restrito que um nível especificado para um patamar mais alto.
[0103] De acordo com um terceiro conjunto de técnicas exemplificativo dessa revelação, para cada subfluxo de bits produzido por uma operação de extração de fluxo de bits, uma mensagem de SEI pode ser produzida para indicar qual modo de extração foi usado para produzir o subfluxo de bits. Em outras palavras, um dispositivo de computação pode incluir, em um subfluxo de bits que inclui uma representação codificada de dados de vídeo, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para produzir o subfluxo de bits. Adicional ou alternativamente, para tal subfluxo de bits, o conjunto de camadas-alvo de saída que foi usado para produzir o subfluxo de bits pode ser sinalizado na mensagem de SEI.
[0104] Dessa forma, em alguns exemplos, a dispositivo de computação (por exemplo, dispositivo de destino 14, dispositivo intermediário 19) pode obter, a partir de um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, a mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits. Em tais exemplos, o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração. Independentemente de se o modo de extração é um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de NAL para decodificar e emitir imagens em um conjunto de camadas-alvo de saída para o primeiro fluxo de bits. Se o modo de extração for o primeiro modo de extração (por exemplo, o primeiro fluxo de bits for um subfluxo de bits totalmente extraível), o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para uma decodificação correta do conjunto de camadas-alvo de saída (por exemplo, imagens com discardable_flag igual a 1). Se o modo de extração for o segundo modo (por exemplo, o primeiro fluxo de bits for um subfluxo de bits de tamanho otimizado), o primeiro fluxo de bits não inclui as um ou mais imagens codificadas não necessárias para a decodificação correta do conjunto de camadas-alvo de saída. De modo similar, um dispositivo de computação (por exemplo, o dispositivo-fonte 12, o dispositivo intermediário 19) pode gerar e incluir, em um primeiro fluxo de bits que inclui uma representação codificada de dados de vídeo, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits.
[0105] Em alguns exemplos, se o modo de extração for o primeiro modo de extração, o primeiro fluxo de bits exclui as unidades de NAL do segundo fluxo de bits que têm identificadores de tempo maiores que um identificador-alvo de tempo e têm identificadores de camada que não estão entre os valores incluídos em um conjunto de camadas-alvo de saída para o conjunto de camadas-alvo de saída. Ademais, se o modo de extração for o segundo modo de extração, o primeiro fluxo de bits exclui adicionalmente as unidades de NAL do segundo fluxo de bits que correspondem a quaisquer imagens codificadas que não sejam necessárias para decodificar de modo correto as camadas no conjunto de camadas-alvo de saída.
[0106] Com tal mensagem de SEI, embora a extração de fluxo de bits “completamente extraíveis” não possa ser aplicada para todas as camadas de inclusão, todos os modos de extração podem ser aplicados contanto que o conjunto de camadas-alvo de saída como uma entrada não exceda o conjunto de camadas-alvo de saída sinalizado. Dessa forma, em alguns exemplos, um dispositivo de computação pode determinar que um subfluxo de bits totalmente extraível pode ser extraído de um fluxo de bits, contanto que um conjunto de camadas-alvo de saída para o subfluxo de bits totalmente extraível não exceda o conjunto de camadas-alvo de saída para fluxo de bits. O subfluxo de bits totalmente extraível contém unidades suficientes de NAL para decodificar imagens dentro do conjunto de camadas- alvo de saída para o subfluxo de bits totalmente extraível. Alternativamente, pelo menos tal indicação de nível de conformidade (ou modo de extração) pode ser apresentado na estrutura de sintaxe de nível de patamar de perfil, em que a indicação está presente utilizando-se os bits reservados.
[0107] Alternativamente, tal indicação pode ser fornecida através de meios externos, por exemplo, como metadados de formato de arquivo de mídia com base em ISO (por exemplo, uma indicação na descrição de amostra) que estejam associado ao fluxo elementar correspondente a tal subfluxo de bits. Dessa forma, um dispositivo de computação pode obter, através de meios externos, uma indicação de um modo de extração que foi usado para produzir o fluxo de bits. Se a indicação indicar que o fluxo de bits foi produzido com o uso de um primeiro modo de extração, um segundo subfluxo de bits em conformidade é extraível do fluxo de bits. Se a indicação indicar que o fluxo de bits foi produzido com o uso de um segundo modo de extração diferente, nenhum subfluxo de bits em conformidade é extraível do fluxo de bits. Os meios externos podem ser uma fonte de informações que não estão incluídas no fluxo de bits.
[0108] De acordo com um quarto conjunto de técnicas exemplificativo dessa revelação, um processo de extração de fluxo de bits em guarda-chuva pode ser definido em um codec de múltiplas camadas, por exemplo, MV-HEVC ou SHVC. O processo de extração de fluxo de bits em guarda- chuva eventualmente invoca um processo de extração de fluxo de bits conforme definido em HEVC ou conforme definido em JCTVC-N0267/JCT3V-E0087. O processo de extração de fluxo de bits em guarda-chuva toma as entradas que inclui um conjunto de camadas-alvo de saída, um TemporalId-alvo, e um modo de extração do fluxo de bits. Entre esses, o conjunto de camadas-alvo de saída é usado para derivar as camadas- alvo (layerldListTarget), as camadas-alvo derivadas assim como outras entradas são usadas como a entrada para o processo de extração de fluxo de bits conforme definido em HEVC ou JCTVC-N0267/JCT3V-E0087. Alternativamente, adicionalmente, mesmo quando tal extração de fluxo de bits em guarda-chuva é definido principalmente com base no conjunto de camadas de saída, ao invés das camadas-alvo, a versão 1 do modo HEVC do processo de extração ainda é considerado disponível. Portanto, é possível que um subfluxo de bits, após extração, não corresponde necessariamente a um ponto de operação. Em vez disso, o subfluxo de bits é uma união de múltiplos pontos de operação. Tal versão 1 do modo HEVC do processo de extração pode ser invocado quando o modo de extração do fluxo de bits for 0 e, em tal caso, o conjunto de camadas de saída é ignorado.
[0109] De acordo com um quinto conjunto de técnicas exemplificativo dessa revelação, em um formato de arquivo de mídia com base no ISO ou MPEG-2 TS, uma caixa ou descritor que descreve um ponto de operação representado com pelo menos um conjunto de camadas de saída, uma indicação de nível de extração pode ser sinalizada.
[0110] De acordo com um ou mais dos conjuntos de técnicas dessa revelação, o seguinte indica as mudanças propostas à subcláusula 10 do WD de HEVC (com as adições estando sublinhadas (por exemplo, “texto adicionado”), e as remoções indicadas em itálico com colchetes duplos (por exemplo, “[[texto eliminado]] J”)).
[0111] As entradas a esse processo são um fluxo de bits, um valor-alvo mais alto de TemporalId tldTarget, [[e]] uma lista de identificadores de camada- alvo layerldListTarget, um modo de extração subExtModeldc e uma lista de identificadores de camadas-alvo de saída
[0112] TargetOptLayerldList se subExtModeldc não for igual a 0.
[0113] O resultado desse processo é um subfluxo de bits.
[0114] É um requerimento da conformidade do fluxo de bits para o fluxo de bits de entrada que qualquer subfluxo de bits se saída do processo especificado nessa subcláusula com tldTarget igual a qualquer valor na faixa de 0 a 6, inclusive, e layerldListTarget igual à lista de identificadores de camadas associada a um conjunto de camadas especificada no conjunto ativo de parâmetros de vídeo deva ser um fluxo de bits em conformidade quando subExtModeldc for menor que 3.
[0115] OBSERVAÇÃO 1 - Um fluxo de bits em conformidade contém uma ou mais unidades de NAL de segmento de fatia codificada com nuh_layer_id igual a 0 e TemporalId igual a 0.
[0116] O subfluxo de bits de saída é derivado conforme o seguinte:
[0117] - Quando uma ou mais das condições a seguir forem verdadeiras, remover todas as unidades de NAL de SEI que tiverem nuh_layer_id igual a 0 e que contenham uma mensagem de SEI não aninhada de período e armazenamento temporário, a mensagem de SEI não aninhada de temporização de imagem ou uma mensagem de SEI não aninhada de informações da unidade de decodificação:
[0118] - layerldListTarget não inclui todos os valores de nuh_layer_id em todas as unidades de NAL no fluxo de bits.
[0119] - tIdTarget é menor que o maior TemporalId em todas as unidades de NAL no fluxo de bits.
[0120] OBSERVAÇÃO 2 - um extrator “inteligente” de fluxo de bits pode incluir mensagens de SEI de imagem de armazenamento temporário não aninhadas apropriadas, mensagens de SEI de temporização de imagem não aninhadas e mensagens de SEI de informações da unidade de decodificação não aninhadas no subfluxo de bits extraído, contanto que as mensagens de SEI aplicáveis ao subfluxo de bits estivessem presentes como mensagens de SEI aninhadas no fluxo de bits original.
[0121] - Remover todas as unidades de NAL com TemporalId maior que tldTarget ou nuh_layer_id que não estejam entre os valores incluídos em layerldListTarget.
[0122] - Quando subExtModeldc for maior que 0, remover adicionalmente as unidades de NAL com nuh_layer_id não estando entre os valores incluídos em TargetOptLayerldList e com um TemporalId maior que max_tid_il_ref_pics_plusl [LayerIdxInVps[nuh_layer_id 11 - 1.
[0123] - Quando subExtModeldc for meior que 1, remover adicionalmente as unidades de NAL com nuh_layer_id não estando entre os valores incluídos em TargetOptLayerldList e o discardable_flag igual a 1.
[0124] A versão da subcláusula 10 da versão 1 de HEVC mostrada acima difere da versão da subcláusula 10 da versão 1 de HEVC proposta no documento JCTVC- N0267/JCT3V-E0087 em que a lista de identificadores de camadas-alvo de saída TargetOptLayerldList é fornecida como entrada ao processo de extração de subfluxo de bits apenas se o modo de extração subExtModelnc for maior que 0. Ademais, a versão da subcláusula 10 da versão 1 de HEVC mostrada acima difere da versão da subcláusula 10 da versão 1 de HEVC proposta no documento JCTVC-N0267/JCT3V-E0087 em que os requerimentos para o fluxo de bits de entrada a ser considerado um fluxo de bits em conformidade são diferentes.
[0125] De acordo com alguns conjuntos de técnicas dessa revelação, múltiplos níveis de conformidade são sinalizados para conjuntos de camadas de saída em um VPS. Por exemplo, um criptador de vídeo ou outro dispositivo de computação pode sinalizar múltiplos níveis de conformidade para conjuntos de camadas de saída em um VPS. A Tabela 1, abaixo, indica mudanças exemplificativas à sintaxe de extensão de VPS descrita na subcláusula F.7.3.2.1.1 do WD3 de SHVC (com elementos de sintaxe indicados em negrito (por exemplo, “elemento de sintaxe”) e adições estando sublinhadas (por exemplo, “texto adicionado”)).
Figure img0001
Figure img0002
Figure img0003
Figure img0004
[0126] Nessa revelação, os elementos de sintaxe que tem os descritores de tipo da forma u(n), em que n é um número inteiro, são valores não atribuídos com o uso de n bits. Os elementos de sintaxe que têm descritores de tipo da forma u(v) são valores não atribuídos cujo comprimento varia de um modo dependente dos valores de outros elementos de sintaxe. Ademais, os elementos de sintaxe que têm descritores de tipo da forma ue(v) são elementos de sintaxe codificados por Exp-Golomb de ordem 0-ésima de número inteiro não atribuído com o bit da esquerda primeiro.
[0127] Na Tabela 1, acima, num_present_conformance_level_minus1[i] mais 1 especifica a quantidade de níveis de conformidade para o i-ésimo conjunto de camadas de saída. O valor de num_present_conformance_level_minus1[i] está na faixa de 0 a 2, inclusive. Ademais, na Tabela 1, conform_level[i][j] especifica o j-ésimo nível de conformidade presente para o i-ésimo conjunto de camadas de saída. Quando não presente, conform_level[i][j] é inferido como sendo igual a j.
[0128] Ademais, em consideração ao exemplo da Tabela 1, caso outLayerSet seja o conjunto de camadas de saída e presentLayerset seja o conjunto de camadas presente para o conjunto de camadas de saída a ser decodificado, caso maxTid sejam os maiores valores de TemporalId de imagens em camadas de presentLayerset. Um valor de nível de conformidade igual a 0 indica que o valor mais alto de TemporalId de cada camada em presentLayerset é igual a maxTid, e cada unidade de acesso contém uma imagem proveniente de cada camada em presentLayerset. Um valor de nível de conformidade igual a 1 indica que o valor mais alto de TemporalId de cada camada em outLayerSet é igual a maxTid, e cada unidade de acesso contém uma imagem proveniente de cada camada em outLayerSet; adicionalmente, para cada camada A dentro de presentLayerset mas não em outLayerSet, se o TemporalId mais alto de imagens nessa camada for maxTidPreLayer, em cada unidade de acesso com um TemporalId menor ou igual a maxTidPreLayer, uma imagem na camada A está presente na unidade de acesso. Um valor de nível de conformidade igual a 1 indica o valor mais alto de TemporalId de cada camada em outLayerSet é igual a maxTid, e cada unidade de acesso contém uma imagem proveniente de cada camada em outLayerSet.
[0129] Dessa forma, no exemplo do parágrafo anterior, o elemento de sintaxe do nível de conformidade (isto é, uma indicação do modo de extração que foi usado para produzir um fluxo de bits) indica um nível de conformidade. O nível de conformidade igual a 0 indica que um identificador de tempo mais alto de cada camada em um presente conjunto de camadas é igual a um identificador de tempo máximo do presente conjunto de camadas e que cada unidade de acesso do subfluxo de bits contém uma imagem proveniente de cada camada no presente conjunto de camadas. Ademais, o presente conjunto de camadas é um conjunto de camadas presente para o subfluxo de bits. O identificador de tempo máximo do presente conjunto de camadas é um maior identificador de tempo de imagens em camadas no presente conjunto de camadas. Adicionalmente, o nível de conformidade igual a 1 indica que um identificador de tempo mais alto de cada camada em um conjunto de camadas-alvo de saída é igual ao um identificador de tempo máximo do presente conjunto de camadas e cada unidade de acesso do subfluxo de bits contém uma imagem proveniente de cada camada no conjunto de camadas-alvo de saída. O nível de conformidade igual a 1 indica adicionalmente que para cada camada respectiva no presente conjunto de camadas que não estiver no conjunto de camadas-alvo de saída, se um identificador de tempo mais alto de imagens na camada respectiva for o identificador de tempo máximo do presente conjunto de camadas, cada unidade de acesso com um identificador de tempo menor ou igual ao identificador de tempo máximo do presente conjunto de camadas inclui uma imagem na camada respectiva. Independentemente do modo de extração, o subfluxo de bits contém unidades de NAL suficiente para decodificar imagens dentro do conjunto de camadas de saída.
[0130] Em alguns exemplos, o valor de nível de conformidade igual a 1 ou 2 ou ambos pode necessitar o seguinte: o valor mais alto de TemporalId de cada camada em outLayerSet é igual a maxTid e cada unidade de acesso contém uma imagem proveniente de cada camada em outLyaerSet.
[0131] Alternativamente, em alguns exemplos, o nível de conformidade 1 é definido como o seguinte: um valor de nível de conformidade igual a 1 indica que para cada camada A dentro de presentLayerset, se o TemporalId mais alto de imagens nessa camada for maxTidPreLayer, em cada unidade de acesso com um TemporalId menor ou igual a maxTidPreLayer, uma imagem na camada A está presente na unidade de acesso.
[0132] Dessa forma, no exemplo do parágrafo anterior, o elemento de sintaxe do nível de conformidade indica um nível de conformidade. O nível de conformidade igual a 0 indica que um identificador de tempo mais alto de cada camada em um presente conjunto de camadas é igual a um identificador de tempo máximo do presente conjunto de camadas e que cada unidade de acesso do subfluxo de bits contém uma imagem proveniente de cada camada no presente conjunto de camadas. O presente conjunto de camadas é um conjunto de camadas presente para o subfluxo de bits. O identificador de tempo máximo do presente conjunto de camadas é um maior identificador de tempo de imagens em camadas no presente conjunto de camadas. Adicionalmente, nesse exemplo, o nível de conformidade igual a 1 indica que, para cada camada respectiva no presente conjunto de camadas, se um identificador de tempo mais alto de imagens na camada respectiva for o identificador de tempo máximo do presente conjunto de camadas, cada unidade de acesso com um identificador de tempo menor ou igual ao identificador de tempo máximo do presente conjunto de camadas inclui uma imagem na camada respectiva. Independentemente do modo de extração, o subfluxo de bits contém unidades de NAL suficiente para decodificar imagens dentro do conjunto de camadas de saída.
[0133] Ademais, na Tabela 1, profile_level_tier_idx[i][j] especifica o índice, na lista de estruturas de sintaxe de profile_tier_level() no VPS, da estrutura de sintaxe de profile_tier_level() que se aplica ao i-ésimo conjunto de camadas de saída com o i-ésimo nível de conformidade. O comprimento do elemento de sintaxe de profile_level_tier_idx[i] é Ceil(Log2(vps_num_profile_tier_level_minusl + 1)) bits. O valor de profile_level_tier_idx [0] [0] é inferido como sendo igual a 0. O valor de profile_level_tier_idx[i][j] deve estar na faixa de 0 a vps_num_profile_tier_level_minus 1, inclusive.
[0134] Na Tabela 1, add_vps_num_hrd_parameters especifica a quantidade de estruturas de sintaxe de hrd_parameters() presentes na extensão de VPS de RBSP de VPS. Ademais, hrd_output_layer_set_idx[i] especifica o índice, nos conjuntos de camadas de saída especificados pelos VPS, do conjunto de camadas para o qual a i-ésima estrutura de sintaxe de hrd_parameters() na extensão de VPS se aplica. hrd_output_layer_set_idx[i] está na faixa de 0 a 1023, inclusive, para aparecer na sintaxe.
[0135] Adicionalmente, na Tabela 1, vps_ext_hrd_conformance_level_idx[i] especifica o índice ao nível de conformidade especificado na extensão de VPS para o hrd_output_layer_set_idx[i]-ésimo conjunto de camadas de saída. Quando num_present_conformance_level_minus1 [hrd_output_layer_set_idx[i]] for igual a 0, vps_ext_hrd_conformance_level_idx[i] é derivado como sendo igual a 0. O nível de conformidade do hrd_layer_set_idx[i]]-ésimo conjunto de camadas de saída, associado ao i-ésimo estrutura de sintaxe de hrd_parameters() no VPS é inferido como sendo igual a 0.
[0136] Na Tabela 1, add_cprms_present_flag[i] igual a 1 especifica que os parâmetros de HRD que são comuns para todas as subcamadas estão presentes na i-ésima estrutura de sintaxe de hrd_parameters() na extensão de VPS. add_cprms_present_flag[i] igual a 0 especifica que os parâmetros de HRD que são comuns para todas as subcamadas não estão presentes na i-ésima estrutura de sintaxe de hrd_parameters() na extensão de VPS e são derivados como sendo a mesma que a (i - 1)-ésima estrutura de sintaxe de hrd_parameters() na extensão de VPS. add_cprms_present_flag [0] é inferido como sendo igual a 1.
[0137] Em algumas versões de MV-HEVC, as características são sinalizadas para cada conjunto de camadas. Tais características para um conjunto de camadas pode incluir uma taxa de bits média para o conjunto de camadas, uma taxa de bits máxima para o conjunto de camadas, se houver uma taxa de imagem constante para o conjunto de camadas, uma taxa de imagem média para o conjunto de camadas. Tais características podem ser sinalizadas em uma extensão de informações de utilidade de vídeo (VUI) de um VPS. Em alguns casos, pode ser desejável sinalizar tais características para cada conjunto de camadas de saída, que pode ter diferentes níveis de conformidade. A Tabela 2, abaixo, mostra mudanças à estrutura de sintaxe de vui de vps de acordo com um ou mais conjuntos de técnicas dessa revelação, com elementos de sintaxe indicados em negrito (por exemplo, “elemento de sintaxe”), sendo que as adições são sublinhadas (por exemplo, “texto adicionado”)), e as eliminações indicadas em itálico com colchetes duplos (por exemplo, “[[texto eliminado]]”). TABELA 2
Figure img0005
Figure img0006
[0138] Na Tabela 2, o valor da variável NumConformancePoints pode ser determinado conforme descrito na Tabela 1, acima.
[0139] Os Pedidos de Patente Provisórios Nos. U.S. 61/889.515 e 61/890.841 propuseram que o tamanho de DPB e outros elementos de sintaxe relevantes estivessem presentes para cada ponto de operação (correspondente a um conjunto de camadas de saída). Neste documento, tal sinalização pode ser estendida a vários conjuntos de camadas de saída com diferentes níveis de conformidade. Na Tabela 3, abaixo, os elementos de sintaxe indicados em negrito (por exemplo, “elemento de sintaxe”), as adições são indicadas com sublinhado (por exemplo, “texto adicionado”)), e as eliminações são indicadas com itálico em colchete duplo (por exemplo, “[[texto eliminado]]”).
Figure img0007
Figure img0008
[0140] Conforme indicado acima, de acordo com um ou mais conjuntos de técnicas dessa revelação, uma indicação de um modo de extração pode ser sinalizado em parâmetros de HRD. Em alguns exemplos, os parâmetros de HRD podem ser sinalizados em uma mensagem de SEI. Por exemplo, sinalizando-se os parâmetros de HRD de nível de imagem na mensagem de SEI de período e armazenamento temporário, a mensagem de SEI de temporização de imagem, e a mensagem de SEI de informações da unidade de decodificação, tanto a mensagem de SEI atual de aninhamento escalonável é modificada de modo que uma mensagem de SEI aninhada de qualquer um desses três tipos de mensagem de SEI pode ser claramente indicada como aplicável a qual dos pontos de conformidade. Uma mensagem de SEI de período e armazenamento temporário é uma mensagem de SEI que fornece informações de atraso de remoção de CPB inicial e deslocamento de atraso de remoção de CPB inicial para a inicialização do HRD na posição da unidade de acesso associada (isto é, a unidade de acesso associada à mensagem de SEI de período e armazenamento temporário) na ordem de decodificação. Uma mensagem de SEI de temporização de imagem é uma mensagem de SEI que fornece informações de atraso de remoção de CPB e de atraso de saída de DPB para a unidade de acesso associada à mensagem de SEI. Uma mensagem de SEI de informações da unidade de decodificação é uma mensagem de SEI que fornece informações de atraso de remoção de CPB para a unidade de decodificação associada à mensagem de SEI. A Tabela 4, abaixo, mostra uma sintaxe exemplificativa de uma mensagem de SEI de aninhamento escalonável que é modificada de modo que uma mensagem de SEI aninhada de período e armazenamento temporário, uma mensagem de SEI aninhada de temporização de imagem ou uma mensagem de SEI aninhada de informações da unidade de decodificação possam ser claramente indicadas como sendo aplicáveis a pontos de conformidade particulares. TABELA 4
Figure img0009
[0141] Na Tabela 4, acima, nesting_cp_cl[i] especifica o nível de conformidade do nesting_cp_idx[i]- ésimo conjunto de camadas de saída especificado pelo VPS ativo ao qual a mensagens de SEI contida nessa mensagem de SEI se aplica. Em alguns exemplos, o valor de nesting_cp_cl[i] deve ser maior que 0 e menor que 3. Em alguns exemplos, o valor de nesting_cp_cl[i] deve ser menor que 3. O nível de conformidade ode ser indicado conforme descrito em outros exemplos dessa revelação.
[0142] Outros conjuntos de técnicas exemplificativo dessa revelação prevê uma nova mensagem de SEI de aninhamento escalonável que é projetada para conseguir a mesma funcionalidade que as mensagens de SEI descritas acima, mas manter a mensagem de SEI de aninhamento escalonável existente intocada. A Tabela 5, abaixo, é um conjunto exemplificativo de sintaxe e semântica para tal nova mensagem de SEI de aninhamento escalonável.
Figure img0010
[0143] A mensagem de SEI de aninhamento escalonável da Tabela 5 fornece um mecanismo para associar mensagens de SEI com subconjuntos de fluxos de bits correspondentes a vários pontos de operação. A nova mensagem de SEI de aninhamento escalonável da Tabela 5 contém uma ou mais mensagens de SEI. Em alguns exemplos, a nova mensagem de SEI de aninhamento escalonável da Tabela 5 não deve estar contida em outra mensagem de SEI.
[0144] No exemplo da Tabela 5, a nova mensagem de SEI de aninhamento escalonável não deve conter quaisquer outras mensagens de SEI além da mensagem de SEI de período e armazenamento temporário, a mensagem de SEI de temporização de imagem e a mensagem de SEI de informações da unidade de decodificação. Ademais, na Tabela 5, nesting_num_cps_minusl mais 1 especifica a quantidade dos elementos de sintaxe de nesting_cp_idx[i] a seguir. O valor de nesting_num_cps_minus1 deve estar na faixa de 0 a 2047, inclusive. Alternativamente, o valor de nesting_num_cps_minus1 deve estar na faixa de 0 a 3071, inclusive. Ademais, a variável nestingNumCps é definida igual a nesting_num_cps_minus1 + 1.
[0145] Na Tabela 5, nesting_cp_max_tid_plusl[i] é usado para especificar a variável maxTemporalId[i]. O valor de nesting_cp_max_tid_plusl [i] deve ser maior ou igual a nuh_temporal_id_plusl da unidade de NAL de SEI atual. A variável maxTemporalId[i] é definida igual a nesting_cp_max_tid_plusl [i] - 1. nesting_cp_idx[i] especifica o índice do conjunto de camadas de saída. O valor de nesting_cp_idx[i] deve estar na faixa de 0 a 1023, inclusive. nesting_cp_cl[i] especifica o nível de conformidade do nesting_cp_idx[i]-ésimo conjunto de camadas de saída especificado pelo VPS ativo ao qual as mensagens de SEI contidas nessa mensagem de SEI se aplicam. O valor de nesting_cp_cl[i] deve ser maior que 0 e menor que 3. Alternativamente, o valor de nesting_cp_cl[i] deve ser menor que 3.
[0146] As mensagens de SEI contida na nova mensagem de SEI de aninhamento escalonável se aplicam aos subfluxos de bits subBitstream[i] para todos os i valores na faixa de 0 a nestingNumCps - 1, inclusive, em que cada subfluxo de bits subBitstream[i] é o resultado do processo de extração de subfluxo de bits (consulte abaixo) com o fluxo de bits, maxTemporalId[i], nesting_cp_idx[i] e nesting_cp_cl[i] como entradas. nesting_zero_bit deve ser igual a 0.
[0147] Ambas as mensagens de SEI (isto é, o aninhamento escalonável da Tabela 4 e o novo aninhamento escalonável da Tabela 5) podem ter um bit de extensão inserido de um modo similar ao marcador de extensão de sps em SPS. Se tal funcionalidade estiver habilitada em uma SEI de aninhamento escalonável, nesting_cp_cl[i] pode ser sinalizado na extensão de SEI conforme mostrado na Tabela 6, abaixo.
Figure img0011
[0148] Um ponto de operação pode ser identificado pelo índice ao conjunto de camadas-alvo de saída especificado pelo VPS, um HighestTid-alvo e um nível de conformidade. Uma vez que um ponto-alvo de operação seja selecionado para um teste de conformidade de fluxo de bits, um processo de extração de fluxo de bits, que é descrito em detalhes abaixo, é invocado com o fluxo de bits sob teste, HighestTid, o índice ao conjunto de camadas-alvo de saída, e o nível de conformidade como entradas, e o subfluxo de bits de saída é atribuído a BitstreamToDecode.
[0149] A estrutura de sintaxe de hrd_parameters() aplicável ao ponto-alvo de operação, conforme especificado no VPS por hrd_output_layer_set_idx[i] e vps_ext_hrd_conformance_level_idx[i] são escolhidas, e a estrutura de sintaxe de sub_layer_hrd_parameters() aplicável ao ponto-alvo de operação são escolhidas adicionalmente com base no HighestTid.
[0150] Para a unidade de acesso 0, a mensagem de SEI de período e armazenamento temporário que é aplicável ao ponto-alvo de operação (conforme especificado pela nova mensagem de SEI de aninhamento escalonável) é selecionada. Para cada unidade de acesso em BitstreamToDecode que inicia a partir da unidade de acesso 0, a mensagem de SEI de temporização de imagem que está associada à unidade de acesso e se aplica ao ponto-alvo de operação (conforme especificado pela nova mensagem de SEI de aninhamento escalonável) é selecionada, e quando SubPicHrdFlag for igual a 1 e sub_pic_cpb_params_in_pic_timing_sei_flag for igual a 0, as mensagens de SEI de informações da unidade de decodificação que estão associadas às unidades de decodificação na unidade de acesso (conforme especificado pela nova mensagem de SEI de aninhamento escalonável) e se aplicam ao ponto- alvo de operação são selecionadas.
[0151] Conforme indicado acima, de acordo com um ou mais conjuntos de técnicas dessa revelação, para cada subfluxo de bits produzido por um processo de extração de subfluxo de bits, um dispositivo de computação pode gerar uma mensagem de SEI (por exemplo, uma mensagem de SEI de informações de situação de extração de fluxo de bits) que indica qual modo de extração foi usado para produzir o subfluxo de bits. A Tabela 7, abaixo, mostra uma sintaxe exemplificativa para tal mensagem de SEI.
Figure img0012
[0152] Quando uma mensagem de SEI de informações de situação de extração de fluxo de bits, como a mensagem de SEI da Tabela 7, estiver presente, a mensagem de SEI de informações de situação de extração de fluxo de bits é associada a um fluxo de bits e indica um nível de conformidade ao qual o fluxo de bits se aplica e indica as camadas-alvo de saída do fluxo de bits. Quando as informações do conjunto de camadas de saída (por exemplo, conjunto de camadas de saída do marcador de vps, conjunto de camadas de saída de idx para vps e/ou elementos de sintaxe de output_layer_present_flag) estiverem presentes na mensagem de SEI de informações de situação de extração de fluxo de bits, um processo de extração de fluxo de bits com qualquer modo de extração pode se aplicar se o conjunto de camadas de saída fornecido como entrada ao processo de extração de fluxo de bits pertencer ao conjunto de camadas de saída conforme especificado na mensagem de SEI de informações de situação de extração de fluxo de bits. Quando as informações do conjunto de camadas de saída não estiverem presentes na mensagem de SEI de informações de situação de extração de fluxo de bits, ou a mensagem de SEI de informações de situação de extração de fluxo de bits não estiver presente, as camadas de saída incluem todas as camadas sinalizadas no VPS (com layer_id_included_flag igual a 1). Quando a mensagem de SEI de informações de situação de extração de fluxo de bits não estiver presente, o nível de conformidade é inferido como sendo o valor mais baixo de nível de conformidade presente no VPS, para o conjunto de camadas de saída que tem todas as camadas sinalizadas em VPS como camadas de saída. A semântica do nível de conformidade pode ser a mesma conforme descrito em outros exemplos dessa revelação.
[0153] Na Tabela 7, lp_sei_active_vps_id (que essa revelação também pode referir como active_vps_id) identifica o VPS ativo do CVS que contém essa mensagem de SEI. O valor de lp_sei_active_vps_id deve ser igual ao valor de vps_video_parameter_set_id do VPS ativo para as unidades de NAL de VCL da unidade de acesso que contém a mensagem de SEI, a indicação de conformidade especifica o nível de conformidade do fluxo de bits associado a essa mensagem de SEI. O nível de conformidade pode ser definido do mesmo modo que o descrito em outro ponto nessa revelação.
[0154] Ademais, na Tabela 7, output_layer_set_info_present_flag igual a 1 especifica que o conjunto de camadas de saída associado a essa mensagem de SEI está definido no VPS. Desse modo, a mensagem de SEI inclui dados que indicam um conjunto de camadas-alvo de saída que foi usado para produzir o fluxo de bits. Os dados que indicam o conjunto de camadas-alvo de saída que foi usado para produzir o fluxo de bits compreendem um elemento de sintaxe que especifica um índice a um conjunto de camadas de saída especificado em um VPS.
[0155] output_layer_set_info_present_flag igual a 0 especifica o conjunto de camadas de saída associado a essa mensagem de SEI pode ou não estar definido no VPS. O conjunto de camadas de saída de idx para vps especifica o índice ao conjunto de camadas de saída conforme especificado no VPS. output_layer_present_flag[i] igual a 1 especifica que o valor de nuh_layer_id igual a i está incluído no conjunto de camadas de saída associado a essa mensagem de SEI. output_layer_present_flag[i][j] igual a 0 especifica que o valor de nuh_layer_id igual a i não está incluído no conjunto de camadas de saída associado a essa mensagem de SEI. Desse modo, a mensagem de SEI pode incluir dados que indicam o conjunto de camadas-alvo de saída. Esses dados podem compreender uma série de elementos de sintaxe (por exemplo, elementos de sintaxe de output_layer_present_flag). Para cada elemento de sintaxe respectivo na série de elementos de sintaxe, um índice de posição respectivo (por exemplo, i) para o elemento de sintaxe respectivo indica uma localização do elemento de sintaxe respectivo dentro da série de elementos de sintaxe. Se um valor do elemento de sintaxe respectivo for igual a 1, uma camada que tem um identificador de camada igual ao índice de posição respectivo para o elemento de sintaxe respectivo está incluído no conjunto de camadas-alvo de saída que foi usado para produzir o subfluxo de bits. Se um valor do elemento de sintaxe respectivo for igual a 0, a camada que tem o identificador de camada igual ao índice de posição respectivo para o elemento de sintaxe respectivo não está incluído no conjunto de camadas-alvo de saída que foi usado para produzir o subfluxo de bits.
[0156] Dessa forma, em alguns exemplos, a mensagem de SEI da Tabela 7 inclui dados que indicam um conjunto de camadas-alvo de saída para um fluxo de bits. Independentemente do modo de extração que foi usado para produzir o fluxo de bits, o fluxo de bits contém unidades de NAL suficientes para decodificar imagens dentro do conjunto de camadas-alvo de saída. Ademais, se o fluxo de bits foi extraído com o uso de um segundo modo de extração (por exemplo, um modo de extração que gera um subfluxo de bits de tamanho otimizado), o fluxo de bits foi produzido de modo que, para cada unidade de NAL respectiva de um fluxo-fonte de bits, a unidade de NAL respectiva foi removida do fluxo-fonte de bits de modo que a unidade de NAL respectiva não esteja no subfluxo de bits se ambos os critérios a seguir forem satisfeitos para a respectiva unidade de NAL:
[0157] i) a unidade de NAL respectiva tiver um identificador de camada que não esteja entre os identificadores de camada em uma lista de identificadores de camada-alvo de saída para o conjunto de camadas-alvo de saída, e
[0158] ii) um identificador de tempo da unidade de NAL respectiva for maior que um identificador de tempo máximo de imagens de referência intercamada usadas por imagens de uma camada à qual a unidade de NAL respectiva pertence.
[0159] Ademais, em alguns exemplos, se o modo de extração for o segundo modo de extração, a respectiva unidade de NAL é removida do fluxo-fonte de bits de modo que a respectiva unidade de NAL não esteja no fluxo de bits se:
[0160] i) a unidade de NAL respectiva tiver um identificador de camada que não esteja entre os identificadores de camada em uma lista de identificadores de camada-alvo de saída para o conjunto de camadas-alvo de saída, e
[0161] ii) um marcador da unidade de NAL respectiva especificar que uma imagem codificada correspondente à unidade de NAL respectiva não é usada como uma imagem de referência em um processo de decodificação de imagens subsequentes na ordem de decodificação.
[0162] Em alguns exemplos, a quantidade de camadas precisa ser decodificada assim como as camadas precisam ser decodificadas para emitir o conjunto de camadas de saída que podem ser derivadas com base em VPS. Alternativamente, tais camadas podem ser sinalizadas nessa mensagem de SEI.
[0163] Conforme indicado acima, em alguns exemplos dessa revelação, uma indicação de um nível de conformidade pode estar presente em uma estrutura de sintaxe de nível de patamar de perfil. Tal nível de conformidade pode ser indicado na estrutura de sintaxe de perfil, de patamar e de nível, conforme mostrado abaixo na Tabela 8.
Figure img0013
[0164] Na Tabela 8, acima, o nível de conformidade especifica o nível de conformidade ao qual o conjunto de camadas de saída se conforma. O nível de conformidade pode ser definido do mesmo modo que o descrito em outro ponto nessa revelação.
[0165] Conforme indicado acima, em alguns exemplos dessa revelação, um processo de extração de fluxo de bits em guarda-chuva pode ser definido em um codec de múltiplas camadas. Em outras palavras, um processo de extração é definido em MV-HEVC/SHVC para permitir que a última entrada seja uma combinação de índice ao conjunto de camadas de saída e um modo de extração do fluxo de bits, uma combinação do conjunto explícito de camadas de saída e um modo de extração do fluxo de bits, ou apenas um conjunto de camadas-alvo.
[0166] Quando a última entrada for um conjunto de camadas-alvo, o modo de extração do fluxo de bits é considerado como sendo 0 e não toma um conjunto de camadas de saída como entrada. O seguinte é um processo de extração de subfluxo de bits exemplificativo de acordo com esse exemplo.
[0167] F.10 Subprocesso de extração de fluxo de bits
[0168] As entradas a esse processo são um fluxo de bits, um valor mais alto de TemporalId-alvo tldTarget, e um dentre os seguintes:
[0169] - Um índice ao conjunto de camadas de saída outputLayerSetldx e um modo de extração do fluxo de bits subExtModeldc.
[0170] - Uma lista de identificadores de camadas-alvo de saída inputOptLayerldList e um modo de extração do fluxo de bits subExtModeldc.
[0171] - Uma lista de identificadores de camada-alvo layerldListTarget.
[0172] Os parâmetros de entrada a essa subcláusula
[0173] Se a última entrada incluir um índice ao conjunto de camadas de saída outputLayerSetldx e um modo de extração do fluxo de bits subExtModeldc, a lista de identificadores de camadas-alvo de saída TargetOptLayerldList e layerldListTarget são derivadas conforme o seguinte: Se a última entrada incluir um índice ao conjunto de camadas de saída outputLayerSetldx e um modo de extração do fluxo de bits subExtModeldc, a lista de identificadores de camadas-alvo de saída TargetOptLayerldList e layerldListTarget são derivadas conforme o seguinte:
[0174] lsldx = outputLayerSetldx;
[0175] layerldListTarget=LayerSetLayerIdList[l sldx].
[0176] para (k = 0, j = 0; j < NumLayersInIdList[lsldx];j++) {
[0177] layerIdListTarget[j]=LayerSetLayerIdLis t[lsldx][j]
[0178] se (output_layer_flag[lsldx][j])
[0179] outputLayerSetIdx[k++] = LayerSetLayerIdList[lsldx][j]}
[0180] De outro modo, se a última entrada incluir uma lista de identificadores de camadas-alvo de saída inputOptLayerldList de um modo de extração do fluxo de bits subExtModeldc, a lista de identificadores de camadas-alvo de saída TargetOptLayerldList é definida como sendo igual a inputOptLayerldList e a layerldListTarget é derivada como incluindo o nuh_layer_id de qualquer camada dependente direta ou indireta de cada camada como incluída em TargetOptLayerldList, a não ser que tal identificador de camada tenha sido incluído. Tal processo é similar ao processo de extração de fluxo de bits de MVC. De outro modo, TargetOptLayerldList é definido como sendo vazio e subExtModeldc é definido em 0.
[0181] O processo de extração de subfluxo de bits conforme especificado na seção 4.1.1 aplica tldTarget, layerldListTarget e subExtModeldc como entradas e se subExtModeldc não for igual a 0, TargetOptLayerldList se subExtModeldc como uma entrada adicional.
[0182] O fluxo de bits atual tem um nível de conformidade de confLevel. Quando o índice ao conjunto de camadas de saída ou a lista de identificadores de camadas- alvo de saída for usado como uma entrada para a extração de fluxo de bits, qualquer modo de extração (com valor igual a 0 a 2) pode se aplicar. Após o processo de extração, o subfluxo de bits tem uma mensagem de SEI de informações de situação de fluxo de bits com indicação de conformidade igual a max (subExtModeldc, confLevel).
[0183] Quando uma lista de identificadores de camada-alvo for usada como entrada para a extração de fluxo de bits, após o processo de extração, o subfluxo de bits tem uma mensagem de SEI de informações de situação de fluxo de bits com indicação de conformidade igual a confLevel (isto é, o nível de conformidade não muda).
[0184] O criptador de vídeo 20 e o decodificador de vídeo 30 podem implantar um ou mais dos conjuntos de técnicas dessa revelação descritos acima. Por exemplo, o decodificador de vídeo 30 pode obter, com base em dados em um fluxo de bits, uma indicação. O fluxo de bits compreende uma representação criptada dos dados de vídeo. O decodificador de vídeo 30 pode determinar, com base, pelo menos em parte, na indicação, se um subfluxo de bits pode ser extraído do fluxo de bits. De modo similar, o criptador de vídeo 20 pode produzir um fluxo de bits que inclui dados que fornecem uma indicação de se um subfluxo de bits pode ser extraído do fluxo de bits.
[0185] Os exemplos adicionais dessa revelação incluem sistemas e métodos para indicar os subfluxos de bits que não estão em conformidade mas podem ser fornecidos para certos cenários de aplicação, principalmente para reduzir a largura de banda.
[0186] Conforme foi discutido no 15o encontro de JCT-VC e no 6o encontro de JCT-3V, permitir subfluxos de bits extraídos gerados com múltiplos modos pode não ser a solução mais adequada nesse estágio. Entretanto, considerar tais subfluxos de bits incompletos pode ainda ser útil para, por exemplo, a redução da largura de banda para certos cenários de aplicação, essa revelação propõe indicar uma propriedade de presença de imagem correspondente aos diferentes modos de extração para todos os subfluxos de bits em uma mensagem de SEI. Essa revelação pode se referir a essa mensagem de SEI como uma mensagem de SEI de propriedade de presença de imagem de subfluxo de bits. As particularidades listadas nos exemplos a seguir podem ser usadas sozinhas ou em uma combinação adequada dependendo da implantação.
[0187] Em alguns exemplos, uma mensagem de SEI (por exemplo, uma mensagem de SEI de propriedade de presença de imagem de subfluxo de bits) é fornecida para indicar as propriedades de todos os subfluxos de bits que não são indicados no VPS como fluxos de bits em conformidade, mas subfluxos de bits que contêm pelo menos uma unidade de acesso que não contém imagens de todas as camadas que estão presentes no subfluxo de bits. Por exemplo, uma mensagem de SEI (por exemplo, uma mensagem de SEI de propriedade de presença de imagem de subfluxo de bits) pode ser fornecida para indicar as propriedades de todos os subfluxos de bits que não são indicados no VPS como fluxos de bits em conformidade, mas subfluxos de bits que contêm pelo menos uma unidade de acesso que não contém imagens de todas as camadas que estão presentes no subfluxo de bits. Para cada subfluxo de bits, o nível da completude do subfluxo de bits para as camadas que não são camadas- alvo de saída é sinalizado. Para cada subfluxo de bits, a taxa de bits máxima, a taxa de bits média e a taxa de imagem média são sinalizadas.
[0188] A Tabela 9, abaixo, mostra uma sintaxe exemplificativa da mensagem de SEI de propriedade de presença de imagem de subfluxo de bits de acordo com um ou mais conjuntos de técnicas dessa revelação.
Figure img0014
[0189] Quando a mensagem de SEI de propriedade de presença de imagem de subfluxo de bits da Tabela 9 estiver presente, a mesma é associada ao fluxo de bits e indica para cada um dos subfluxos de bits, seu nível de presença de imagem e taxas de bits.
[0190] No exemplo da Tabela 9, lp_sei_active_vps_id identifica o VPS ativo do CVS que contém essa mensagem de SEI. O valor de lp_sei_active_vps_id deve ser igual ao valor de vps_video_parameter_set_id do VPS ativo para as unidades de NAL de VCL da unidade de acesso que contém a mensagem de SEI. Ademais, no exemplo da Tabela 9, num_additional_sub_streams especifica uma quantidade dos subfluxos de bits das propriedades que estão presentes nessa mensagem de SEI.
[0191] picture_presence_info_indication_minusl [i] mais 1 especifica o nível de presença de imagem do i- ésimo subfluxo de bits associado a essa mensagem de SEI. O valor de picture_presence_info_indication_minusl [i] está na faixa de 0 a 1, inclusive, e os valores 2 e 3 estão reservados. O valor igual a 0 indica que a seguinte taxa de bits e informações de taxa de imagem estão para um subfluxo de bits extraído de acordo com o seguinte processo ao fluxo de bits correspondente ao conjunto de camadas de saída identificado por output_layer_set_idx_to_vps[i]:
[0192] - Quando uma ou mais das condições a seguir forem verdadeiras, remover todas as unidades de NAL de SEI que tiverem nuh_layer_id igual a 0 e que contenham uma mensagem de SEI não aninhada de período e armazenamento temporário, a mensagem de SEI não aninhada de temporização de imagem ou uma mensagem de SEI não aninhada de informações da unidade de decodificação:
[0193] - layerldListTarget não inclui todos os valores de nuh_layer_id em todas as unidades de NAL no fluxo de bits.
[0194] - tIdTarget é menor que o maior TemporalId em todas as unidades de NAL no fluxo de bits.
[0195] - Remover todas as unidades de NAL com TemporalId maior que tldTarget ou nuh_layer_id que não estejam entre os valores incluídos em layerldListTarget.
[0196] - Remove adicionalmente as unidades de NAL com nuh_layer_id não estando entre os valores incluídos em TargetOptLayerldList e com um TemporalId maior que max_tid_il_ref_pics_plusl [LayerIdxInVps[nuh_layer_id]] - 1.
[0197] O valor de picture_presence_info_indication_minus1 igual a 1 indica que a seguinte taxa de bits e informações de taxa de imagem são para um subfluxo de bits extraído de acordo com o seguinte processo:
[0198] - Quando uma ou mais das condições a seguir forem verdadeiras, remover todas as unidades de NAL de SEI que tiverem nuh_layer_id igual a 0 e que contenham uma mensagem de SEI não aninhada de período e armazenamento temporário, a mensagem de SEI não aninhada de temporização de imagem ou uma mensagem de SEI não aninhada de informações da unidade de decodificação:
[0199] - layerldListTarget não inclui todos os valores de nuh_layer_id em todas as unidades de NAL no fluxo de bits.
[0200] - tIdTarget é menor que o maior TemporalId em todas as unidades de NAL no fluxo de bits.
[0201] - Remover todas as unidades de NAL com TemporalId maior que tldTarget ou nuh_layer_id que não estejam entre os valores incluídos em layerldListTarget.
[0202] - Remover adicionalmente as unidades de NAL com nuh_layer_id não estando entre os valores incluídos em TargetOptLayerldList e com um TemporalId maior que max_tid_il_ref_pics_plusl [LayerIdxInVps[nuh_layer_id]] - 1.
[0203] - Remover adicionalmente as unidades de NAL com nuh_layer_id não estando entre os incluídos em TargetOptLayerldList e o discardable_flag igual a 1.
[0204] Ademais, no exemplo da Tabela 9, output_layer_set_idx_to_vps[i] especifica o índice ao conjunto de camadas de saída conforme especificado no VPS para o i-ésimo subfluxo de bits. bit_rate_present_flag[i] igual a 1 especifica que a informações de taxa de bits para o i-ésimo subfluxo de bits está presente. bit_rate_present_flag[i] igual a 0 especifica que as informações de taxa de bits para o i-ésimo subfluxo de bits não estão presentes. pic_rate_present_flag[i] igual a 1 especifica que as informações de taxa de imagem para o i- ésimo subfluxo de bits estão presentes. pic_rate_present_flag[i] igual a 0 especifica que as informações de taxa de imagem para o i-ésimo subfluxo de bits não estão presentes.
[0205] No exemplo da Tabela 9, avg_bit_rate[i] indica a taxa de bits média do i-ésimo subfluxo de bits, em bits por segundo. O valor é dado por BitRateBPS(avg_bit_rate[i]) com a função BitRateBPS() sendo especificada conforme a seguir:
Figure img0015
[0206] A taxa de bits média é derivada de acordo com o tempo de remoção da unidade de acesso especificado na cláusula F.13. No seguinte, bTotal é a quantidade de bits em todas as unidades de NAL do i-ésimo subfluxo de bits, t1 é o tempo de remoção (em segundos) da primeira unidade de acesso a qual o VPS se aplica, e t2 é o tempo de remoção (em segundos) da última unidade de acesso (em ordem de decodificação) a qual o VPS e aplica. Com x especificando o valor de avg_bit_rate[i], o seguinte se aplica:
[0207] - Se t1 não for igual a t2, a seguinte condição deve ser verdade:
Figure img0016
[0208] - De outro modo (t1 é igual a t2), a seguinte condição deve ser verdade:
Figure img0017
[0209] Ademais, no exemplo da Tabela 9, max_bit_rate[i] indica um limite superior para a taxa de bits do i-ésimo subfluxo de bits em qualquer janela de tempo de um segundo do tempo de remoção da unidade de acesso conforme especificado na cláusula F.13. O limite superior para a taxa de bits em bits por segundo é dado por BitRateBPS(max_bit_rate[i]). Os valores da taxa de bits são derivados de acordo com o tempo de remoção da unidade de acesso especificado na cláusula F.13. No seguinte, t1 é qualquer ponto no tempo (em segundos), t2 é definido igual a t1 + 1 + 100, e bTotal é a quantidade de bits em todas as unidades de NAL das unidades de acesso com um tempo de remoção maior ou igual a t1 e menor que t2. Com x especificando o valor de max_bit_rate[i], a seguinte condição deve ser obedecida para todos os valores de t1:
Figure img0018
[0210] No exemplo da Tabela 9, constant_pic_rate_idc[i] indica se a taxa de imagem do i- ésimo subfluxo de bits é constante. No seguinte , um segmento de tempo tSeg é qualquer conjunto de duas ou mais unidades de acesso consecutivas, em ordem de decodificação, do i-ésimo subfluxo de bits, auTotal(tSeg) é a quantidade de unidades de acesso no segmento de tempo tSeg, t1(tSeg) é o tempo de remoção (em segundos) da primeira unidade de acesso (em ordem de decodificação) do segmento de tempo tSeg, t2(tSeg) é o tempo de remoção (em segundos) da última unidade de acesso (em ordem de decodificação) do segmento de tempo tSeg, e avgPicRate(tSeg) é a taxa de imagem média no segmento de tempo tSeg, e é especificada conforme o seguinte:
Figure img0019
[0211] Se o i-ésimo subfluxo de bits conter apenas uma ou duas unidades de acesso ou o valor de avgPicRate(tSeg) for constante ao longo de todos os segmentos de tempo, a taxa de imagem é constante; de outro modo, a taxa de imagem não é constante.
[0212] constant_pic_rate_idc[i] igual a 0 indica que a taxa de imagem do i-ésimo subfluxo de bits não é constante. constant_pic_rate_idc[i] igual a 1 indica que a taxa de imagem do i-ésimo subfluxo de bits é constante. constant_pic_rate_idc[i] igual a 2 indica que a taxa de imagem do i-ésimo subfluxo de bits pode ou não ser constante. O valor de constant_pic_rate_idc[i] deve estar na faixa de 0 a 2, inclusive.
[0213] Ademais, no exemplo da Tabela 9, avg_pic_rate[i] indica a taxa de imagem média, em unidades de imagem por 256 segundos, do i-ésimo subfluxo de bits. Com auTotal sendo uma quantidade de unidades de acesso no i-ésimo subfluxo de bits, t1 sendo o tempo de remoção (em segundos) da primeira unidade de acesso à qual o VPS se aplica, e t2 sendo o tempo de remoção (em segundos) da última unidade de acesso (em ordem de decodificação) à qual o VPS se aplica, o seguinte se aplica:
[0214] - Se t1 não for igual a t2, a seguinte condição deve ser verdade:
Figure img0020
[0215] - De outro modo (t1 é igual a t2), a seguinte condição deve ser verdade:
Figure img0021
[0216] A Figura 2 é um diagrama de blocos que ilustra um criptador de vídeo 20 exemplificativo. A Figura 2 é fornecida para propósitos de explicação e não deve ser considerada como limitante das técnicas conforme amplamente exemplificado e descrito nessa revelação. Para propósitos de explicação, essa revelação descreve o criptador de vídeo 20 no contexto de codificação de HEVC. No entanto, as técnicas dessa revelação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0217] No exemplo da Figura 2, o criptador de vídeo 20 inclui uma unidade de processamento de previsão 100, uma memória de dados de vídeo 101, uma unidade de geração residual 102, uma unidade de processamento de transformada 104, uma unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de processamento de transformada inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 114, um armazenamento temporário de imagem decodificada 116 e uma unidade de criptação por entropia 118. A unidade de processamento de previsão 100 inclui uma unidade de processamento de interprevisão 120 e uma unidade de processamento de intraprevisão 126. A unidade de processamento interprevisão 120 inclui uma unidade de estimativa de movimento 122 e uma unidade de compensação de movimento 124. Em outros exemplos, o criptador de vídeo 20 pode incluir mais, poucos ou diferentes componentes funcionais.
[0218] O criptador de vídeo 20 pode receber os dados de vídeo. A memória de dados de vídeo 101 pode armazenar dados de vídeo a serem criptados pelos componentes de criptador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 101 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. O armazenamento temporário de imagem decodificada 116 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso em dados de vídeo de criptação pelo criptador de vídeo 20, por exemplo, em modos de intra ou intercodificado. A memória de dados de vídeo 101 e o armazenamento temporário de imagem decodificada 116 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória dinâmica de acesso aleatório (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 101 e o armazenamento temporário de imagem decodificada 116 podem ser fornecidos pelo menos dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 101 pode ser no chip com outros componentes de criptador de vídeo 20, ou fora do chip em relação àqueles componentes.
[0219] O criptador de vídeo 20 pode criptar cada CTU em uma fatia de uma imagem dos dados de vídeo. Em alguns exemplos, cada uma das CTUs pode ser associada a blocos de árvore de codificação de luma de tamanho igual (CTBs) e CTBs de croma correspondentes da imagem. Como parte de criptação de uma CTU, a unidade de processamento de previsão 100 pode realizar particionamento de árvore quadrática para dividir os CTBs da CTU em blocos progressivamente menores. Os blocos menores podem ser blocos de codificação de CUs. Por exemplo, a unidade de processamento de previsão 100 pode separar um CTB associado a uma CTU em quatro sub-blocos igualmente dimensionados, separar um ou mais dos sub-blocos em quatro sub-blocos igualmente dimensionados e assim por diante.
[0220] O criptador de vídeo 20 pode criptar as CUs de uma CTU para gerar representações criptadas das CUs (isto é, CUs codificadas). Como parte da criptação de uma CU, a unidade de processamento de previsão 100 pode particionar os blocos de codificação associados à CU entre uma ou mais PUs da CU. Dessa forma, cada PU pode ser associada a um bloco de previsão de luma e os blocos de previsão de croma correspondentes. O criptador de vídeo 20 e o decodificador de vídeo 30 podem suportar as PUs que têm vários tamanhos. Conforme indicado acima, o tamanho de uma CU pode se referir ao tamanho do bloco de codificação luma da CU e o tamanho de uma PU pode se referir ao tamanho de um bloco de previsão luma da PU. Presumindo-se que o tamanho de uma CU particular seja 2Nx2N, o criptador de vídeo 20 e o decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2xN ou NxN para intraprevisão e tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, NxN ou similar para interprevisão. O criptador de vídeo 20 e o decodificador de vídeo 30 também podem suportar particionamento assimétrico para tamanhos de PU de 2xnU, 2NxnD, nLx2N e nRx2N para interprevisão.
[0221] A unidade de processamento de interprevisão 120 pode gerar dados preditivos para uma PU através da realização de interprevisão em cada PU de uma CU. Os dados preditivos para a PU podem incluir blocos preditivos da PU e informações de movimento para a PU. A unidade de processamento de interprevisão 120 pode realizar diferentes operações para uma PU de uma CU que depende de se a PU está em uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intrapreditivas. Por conseguinte, se a PU estiver em uma fatia I, a unidade de processamento de interprevisão 120 não realiza interprevisão na PU.
[0222] Se uma PU estiver em uma fatia P, a unidade de estimativa de movimento 122 pode buscar as imagens de referência em uma lista de imagens de referência (por exemplo, “RefPicList0”) por 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 correspondem o mais proximamente aos blocos de previsão da PU. A unidade de estimativa de movimento 122 pode gerar um índice de referência que indica uma posição em RefPicList0 da imagem de referência que contém a região de referência para a PU. Adicionalmente, a unidade de estimativa de movimento 122 pode gerar um vetor de movimento que indica um deslocamento espacial entre um bloco de codificação da PU e uma localidade de referência associada à região de referência. Por exemplo, o vetor de movimento pode ser um vetor bidimensional que fornece um deslocamento das coordenadas na imagem atual para as coordenadas em uma imagem de referência. A unidade de estimativa de movimento 122 pode emitir o índice de referência e o vetor de movimento como as informações de movimento da PU. A unidade de compensação de movimento 124 pode gerar os blocos preditivos da PU com base em amostras reais ou interpoladas na localidade de referência indicadas pelo vetor de movimento da PU.
[0223] Se uma PU estiver em uma fatia B, a unidade de estimativa de movimento 122 pode realizar uniprevisão ou biprevisão para a PU. Para realizar monoprevisão para a PU, a unidade estimativa de movimento pode pesquisar as imagens de referência de RefPicList0 ou uma segunda lista de imagem de referência ("RefPicList1") para uma região de referência para a PU. A unidade estimativa de movimento pode emitir, como as informações 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 MV que indica um deslocamento espacial entre uma bloco de amostra da PU e uma localização de referência associada à região de referência e um ou mais indicadores de direção de previsã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 na localidade de referência indicadas pelo vetor de movimento da PU.
[0224] Para realizar a interprevisão bidirecional para uma PU, a unidade estimativa de movimento pode pesquisar as imagens de referência em RefPicList0 para uma região de referência para a PU e também pode pesquisar as imagens de referência em RefPicList1 para uma outra região de referência para a PU. A unidade de estimativa de movimento 122 pode gerar índices de referência que indicam posições em RefPicList0 e RefPicList1 das imagens de referência que contêm as regiões de referência. Adicionalmente, a unidade de estimativa de movimento 122 pode gerar vetores de movimento que indicam deslocamentos espaciais entre as localidades de referência associadas às regiões de referência e um bloco de previsão da PU. As informações de movimento da PU podem incluir os índices de referência e os vetores de movimento da PU. 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 nas localidades de referência indicadas pelos vetores de movimento da PU.
[0225] A unidade de processamento de intraprevisão 126 pode gerar dados preditivos para uma PU realizando-se intraprevisão na PU. Os dados preditivos para a PU podem incluir blocos preditivos para a PU e vários elementos de sintaxe. A unidade de processamento de intraprevisão 126 pode realizar intraprevisão em PUs em fatias I, fatias P e fatias B.
[0226] Para realizar a intraprevisão em uma PU, a unidade de processamento de intraprevisão 126 pode usar múltiplos modos de intraprevisão para gerar múltiplos conjuntos de blocos preditivos para a PU. Quando realizar intraprevisão com o uso de um modo intraprevisão particular, a unidade de processamento de intraprevisão 126 pode gerar blocos preditivos para a PU com o uso de um conjunto particular de amostras provenientes de blocos vizinhos. Os blocos vizinhos podem estar acima, acima e à direita, acima e à esquerda, ou à esquerda dos blocos de previsão da PU, presumindo uma ordem de criptação do fundo para o topo e da esquerda para direita para PUs, CUs e CTUs. A unidade de processamento de intraprevisão 126 pode usar diversos modos de intraprevisão, por exemplo, 33 modos de intraprevisão direcional. Em alguns exemplos, a quantidade de modos de intraprevisão pode depender do tamanho da região associada à PU.
[0227] A unidade de processamento de previsão 100 pode selecionar os dados preditivos para as PUs de uma CU de entre os dados preditivos gerados pela unidade de processamento de interprevisão 120 para as PUs ou os dados preditivos gerados pela unidade de processamento de intraprevisão 126 para as PUs. Em alguns exemplos, a unidade de processamento de previsão 100 seleciona os dados preditivos para as PUs da CU com base nas métricas de taxa/distorção dos conjuntos de dados preditivos. Os blocos preditivos dos dados preditivos selecionados podem ser referidos no presente documento como blocos preditivos selecionados.
[0228] A unidade de geração residual 102 pode gerar, com base nos blocos de codificação (por exemplo, blocos de codificação luma, Cb e Cr) de uma CU e os blocos preditivos selecionados (por exemplo, blocos preditivos luma, Cb e Cr) das PUs da CU, blocos residuais (por exemplo, blocos residuais luma, Cb e Cr) da CU. Por exemplo, a unidade de geração residual 102 pode gerar os blocos residuais da CU de modo que cada amostra nos blocos residuais tenha um valor igual a uma diferença entre uma amostra em um bloco de codificação da CU e uma amostra correspondente em um bloco preditivo selecionado correspondente de uma PU da CU.
[0229] A unidade de processamento de transformada 104 pode realizar particionamento de árvore quadrática para separar os blocos residuais de um CU em blocos de transformada associados às TUs da CU. Dessa forma, uma TU pode ser associada a um bloco de transformada de luma e dois blocos de transformada de croma correspondentes. Os tamanhos e posições dos blocos de transformada luma e croma de TUs de uma CU podem ou não podem ter base nos tamanhos e posições de blocos de previsão das PUs da CU.
[0230] A unidade de processamento de transformada 104 pode gerar blocos de coeficiente de transformada para cada TU de uma CU através da aplicação de uma ou mais transformadas aos blocos de transformada da TU. A unidade de processamento de transformada 104 pode aplicar várias transformadas a um bloco de transformação associado a uma TU. Por exemplo, uma unidade de processamento de transformada 104 pode aplicar uma transformada discreta de cosseno (DCT), uma transformada direcional ou uma transformada conceitualmente similar a um bloco de transformada. Em alguns exemplos, a unidade de processamento de transformada 104 não aplica transformadas a um bloco de transformada. Em tais exemplos, o bloco de transformada pode ser tratado como um bloco de coeficiente de transformada.
[0231] A unidade de quantização 106 pode quantizar os coeficientes de transformada em um bloco de coeficiente. O processo de quantização pode reduzir a profundidade de bit associada ao mesmo coeficiente de transformada ou a todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de n-bits pode ser arredondado para baixo para um coeficiente de transformada de m-bits durante a quantização, em que n é maior que m. A unidade de quantização 106 pode quantizar um bloco de coeficientes associado a uma TU de uma CU com base em um valor de parâmetro de quantização (QP) associado à CU. O criptador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficiente associados a uma CU através do ajuste do valor de QP associado à CU. A quantização pode apresentar perda de informações, desse modo, os coeficientes de transformada quantizados podem ter precisão menor que aqueles originais.
[0232] A unidade de quantização inversa 108 e a unidade de processamento de transformada inversa 110 pode aplicar quantização inversa e transformadas inversas a um bloco de coeficiente, respectivamente, para reconstruir um bloco residual a partir do bloco de coeficiente. A unidade de reconstrução 112 pode adicionar o bloco residual reconstruído às amostras correspondentes a partir de um ou mais blocos preditivos gerados pela unidade de processamento de previsão 100 para produzir um bloco de transformada reconstruído associado a uma TU. Através da reconstrução dos blocos de transformada para cada TU de uma CU, dessa maneira, o criptador de vídeo 20 pode reconstruir os blocos de codificação da CU.
[0233] A unidade de filtro 114 pode realizar uma ou mais operações de desbloqueio para reduzir os artefatos de bloqueio nos blocos de codificação associados a uma CU. O armazenamento temporário de imagem decodificada 116 pode armazenar os blocos de codificação reconstruídos após a unidade de filtro 114 realizar as uma ou mais operações de desbloqueio nos blocos de codificação reconstruídos. A unidade de processamento de interprevisão 120 pode utilizar uma imagem de referência que contém os blocos de codificação reconstruídos para realizar a interprevisão em PUs de outras imagens. Além disso, uma unidade de processamento de intraprevisão 126 pode usar blocos de codificação reconstruídos no armazenamento temporário de imagem decodificada 116 para realizar intraprevisão em outras PUs na mesma imagem como da CU.
[0234] A unidade de criptação por entropia 118 pode receber dados a partir de outros componentes funcionais do criptador de vídeo 20. Por exemplo, a unidade de criptação por entropia 118 pode receber blocos de coeficiente a partir da unidade de quantização 106 e pode receber elementos de sintaxe a partir da unidade de processamento de previsão 100. A unidade de criptação por entropia 118 pode realizar uma ou mais operações de criptação por entropia nos dados para gerar dados criptados por entropia. Por exemplo, a unidade de criptação por entropia 118 pode realizar uma operação de codificação de comprimento variável adaptativo ao contexto (CAVLC), uma operação de CABAC, uma operação de codificação de comprimento de variável para variável (V2V), uma operação de codificação aritmética binária adaptativa a contexto com base em sintaxe (SBAC), uma operação de codificação de Particionamento por Entropia com Intervalo de Probabilidade (PIPE), uma operação de criptação de Exponencial de Golomb ou um outro tipo de operação de criptação por entropia nos dados. O criptador de vídeo 20 pode emitir um fluxo de bits que inclui dados criptados por entropia gerados pela unidade de criptação por entropia 118.
[0235] De acordo com pelo menos alguns exemplos dessa revelação, o criptador de vídeo 20 da Figura 2 pode incluir, em um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits a partir de um segundo fluxo de bits. Se o modo de extração for o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída. Se o modo de extração for o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída.
[0236] A Figura 3 é um diagrama de blocos que ilustra um decodificador de vídeo 30 exemplificativo. A Figura 3 é fornecida para propósitos de explicação e não está limitada às técnicas conforme amplamente exemplificado e descrito nessa revelação. Para propósitos de explicação, essa revelação descreve o decodificador de vídeo 30 no contexto de codificação de HEVC. No entanto, as técnicas dessa revelação podem ser aplicáveis a outros padrões ou métodos de codificação.
[0237] No exemplo da Figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 150, uma unidade de processamento de previsã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 armazenamento temporário de imagem decodificada 162. A unidade de processamento de previsão 152 inclui uma unidade de compensação de movimento 164 e uma unidade de processamento de intraprevisão 166. Em outros exemplos, o decodificador de vídeo 30 pode incluir mais, menos ou diferentes componentes funcionais.
[0238] Um armazenamento temporário de imagem codificada (CPB) 151 pode receber e armazenar dados de vídeo criptados (por exemplo, unidades de NAL) de um fluxo de bits. Os dados de vídeo armazenados na CPB 151 podem ser obtidos, por exemplo, a partir do canal 16, por exemplo, a partir de uma fonte de vídeo local, tal como uma câmera, através de comunicação de rede sem fio ou com fio de dados de vídeo ou através do acesso de meio de armazenamento de dados físicos. O CPB 151 pode formar uma memória de dados de vídeo que armazena dados de vídeo criptados a partir de um fluxo de bits de vídeo criptado. O armazenamento temporário de imagem decodificada 162 pode ser uma memória de imagem de referência que armazena dados de vídeo de referência para uso em dados de vídeo de decodificação pelo decodificador de vídeo 30, por exemplo, em modos de intraou intercodificação. O CPB 151 e o armazenamento temporário de imagem decodificada 162 podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória dinâmica de acesso aleatório (DRAM), que inclui DRAM síncrona (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. O CPB 151 e o armazenamento temporário de imagem decodificada 162 podem ser fornecidos pelo menos dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, o CPB 151 pode ser no chip com outros componentes de decodificador de vídeo 30, ou fora do chip em relação àqueles componentes.
[0239] A unidade de decodificação por entropia 150 pode receber unidades de NAL provenientes do CPB 151 e pode analisar as unidades de NAL para obter elementos de sintaxe provenientes do fluxo de bits. A unidade de decodificação por entropia 150 pode decodificar por entropia os elementos de sintaxe criptados por entropia nas unidades de NAL. A unidade de processamento de previsão 152, a unidade de quantização inversa 154, a unidade de processamento de transformada inversa 156, a unidade de reconstrução 158 e a unidade de filtro 160 podem gerar dados de vídeo decodificados com base em elementos de sintaxe extraídos do fluxo de bits.
[0240] As unidades de NAL do fluxo de bits podem incluir unidades de NAL de fatia codificada. Como parte de decodificação do fluxo de bits, a unidade de decodificação por entropia 150 pode obter e decodificar por entropia elementos de sintaxe a partir 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.
[0241] De acordo com pelo menos alguns dos conjuntos de técnicas dessa revelação, o decodificador de vídeo 30 (por exemplo, um componente do decodificador de vídeo 30, como a unidade de decodificação por entropia 150) pode obter, a partir de um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits. Se o modo de extração for o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída. Se o modo de extração for o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída. Em alguns exemplos, o decodificador de vídeo 30 pode decodificar o primeiro fluxo de bits sem obter a mensagem de SEI ou sem determinar o modo de extração que foi usado para produzir o primeiro fluxo de bits. Dessa forma, um fluxo de bits de tamanho otimizado pode incluir uma camada para a qual apenas uma pequena porcentagem de imagens está presente (por exemplo, aquelas usadas para previsão intercamada), o decodificador de vídeo 30 pode, mesmo assim, realizar apropriadamente, a reconstrução das imagens e usar as mesmas como imagens de referência intercamada, sem emitir as imagens reconstruídas.
[0242] Adicionalmente à obtenção de elementos de sintaxe a partir do fluxo de bits, o decodificador de vídeo 30 pode realizar uma operação de decodificação em uma CU. Realizando-se a operação de decodificação em uma CU, o decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU.
[0243] Como parte da realização de uma operação de decodificação em uma CU, a unidade de quantização inversa 154 pode quantizar inversamente, isto é, de-quantizar, blocos de coeficientes associados às TUs da CU. A unidade de quantização inversa 154 pode usar um valor de QP associado à CU da TU para determinar um grau de quantização e, de modo similar, para aplicar um grau de quantização inversa para unidade de quantização inversa 154. Isto é, a razão de comparação, isto é, a razão do número de bits usada para representar sequência original e a compactada, pode ser controlada através do ajuste do valor do QP usado ao quantizar os coeficientes de transformada. A razão de comparação também pode depender do método de codificação de entropia empregado.
[0244] Após a unidade de quantização inversa 154 quantizar inversamente um bloco de coeficiente, a unidade de processamento de transformada inversa 156 pode aplicar uma ou mais transformadas inversas ao bloco de coeficiente a fim de gerar um bloco residual associado à TU. Por exemplo, a unidade de processamento de transformada inversa 156 pode aplicar uma DCT inversa, uma transformada de número inteiro inversa, uma transformada de Karhunen- Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa ou uma outra transformada inversa ao bloco de coeficiente.
[0245] Se uma PU for criptada com uso de intraprevisão, a unidade de processamento de intraprevisão 166 pode realizar a intraprevisão para gerar blocos preditivos para a PU. A unidade de processamento de intraprevisão 166 pode usar um modo de intraprevisão para gerar os blocos preditivos (por exemplo, os blocos preditivos de luma, Cb e Cr) para a PU com base nos blocos de previsão de PUs espacialmente vizinhas. A unidade de processamento de intraprevisão 166 pode determinar o modo de intraprevisão para a PU com base em um ou mais elementos de sintaxe decodificados a partir do fluxo de bits.
[0246] A unidade de processamento de previsão 152 pode construir uma primeira lista de imagem de referência (RefPicList0) e uma segunda imagem de referência (RefPicList1) com base nos elementos de sintaxe extraídos do fluxo de bits. Além disso, se uma PU for criptada com uso de interprevisão, a unidade de decodificação por entropia 150 pode obter as informações de movimento para a PU. A unidade de compensação de movimento 164 pode determinar, com base nas informações 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 nos um ou mais blocos de referência para a PU, os blocos preditivos (por exemplo, blocos preditivos luma, Cb e Cr) para a PU.
[0247] A unidade de reconstrução 158 pode usar os valores residuais provenientes dos blocos de transformada (por exemplo, blocos de transformada luma, Cb e Cr) de TUs de uma CU e os blocos preditivos (por exemplo, blocos de transformada de luma, Cb e Cr) das PUs da CU, isto é, dados de intraprevisão ou dados de interprevisão, caso seja aplicável, para reconstruir os blocos de codificação (por exemplo, blocos de codificação luma, Cb e Cr) da CU. Por exemplo, a unidade de reconstrução 158 pode adicionar amostras dos blocos de transformada (por exemplo, blocos de transformada luma, Cb e Cr) às amostras correspondentes do blocos preditivos (por exemplo, blocos preditivos luma, Cb e Cr) para reconstruir os blocos de codificação (por exemplo, blocos de codificação luma, Cb e Cr) da CU.
[0248] A unidade de filtro 160 pode realizar uma operação de de-blocagem para reduzir os artefatos de característica de bloco associados aos blocos de codificação (por exemplo, blocos de codificação de luma, Cb e Cr) da CU. O decodificador de vídeo 30 pode armazenar os blocos de codificação (por exemplo, blocos de codificação de luma, Cb e Cr) da CU no armazenamento temporário de imagem decodificada 162. O armazenamento temporário de imagem decodificada 162 pode fornecer imagens de referência para compensação, intraprevisão e apresentação de movimento subsequente em um dispositivo de visor, tal como dispositivo de visor 32 da Figura 1. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos (por exemplo, blocos de luma, Cb e Cr) no armazenamento temporário de imagem decodificada 162, operações de intraprevisão ou interprevisão em PUs de outras CUs. Desse modo, o decodificador de vídeo 30 pode extrair, do fluxo de bits, níveis de coeficiente de transformada do bloco de coeficientes significativo, quantizar inversamente os níveis de coeficiente de transformada, aplicar uma transformada aos níveis de coeficiente de transformada 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.
[0249] A Figura 4 é um diagrama de blocos que ilustra um dispositivo intermediário 19 exemplificativo, de acordo com um ou mais conjuntos de técnicas dessa revelação. A Figura 4 é fornecida para propósitos de explicação e não está limitada às técnicas conforme amplamente exemplificado e descrito nessa revelação. No exemplo da Figura 4, o dispositivo intermediário 19 compreende uma unidade de determinação de modo 180, uma unidade de extração de fluxo de bits 182 e uma unidade de geração de SEI 184.
[0250] A unidade de determinação de modo 180 e a unidade de extração de fluxo de bits 182 pode receber um fluxo-fonte de bits. Em alguns exemplos, a unidade de determinação de modo 180 e a unidade de extração de fluxo de bits 182 pode receber o fluxo-fonte de bits a partir de um criptador de vídeo, como o criptador de vídeo 20. Em outros exemplos, a unidade de determinação de modo 180 e a unidade de extração de fluxo de bits 182 pode receber o fluxo-fonte de bits de outro dispositivo intermediário, que pode ter extraído o fluxo-fonte de bits de outro fluxo de bits.
[0251] A unidade de determinação de modo 180 pode determinar qual, se houver, processo de extração de fluxo de bits aplicar ao fluxo-fonte de bits. Em um exemplo, a unidade de determinação de modo 180 pode obter, a partir do fluxo-fonte de bits, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para produzir o fluxo-fonte de bits. Nesse exemplo, se a mensagem de SEI indicar que um modo de extração do fluxo de bits otimizado por tamanho foi usado para produzir o fluxo- fonte de bits, unidade a de determinação de modo 180 pode determinar não aplicar qualquer processo de extração de fluxo de bits ao fluxo-fonte de bits. Entretanto, se a mensagem de SEI indicar que um modo de extração do fluxo de bits “completamente extraível” foi usado para produzir o fluxo-fonte de bits, a unidade de determinação de modo 180 pode determinar se deve-se aplicar um processo de extração de fluxo de bits “completamente extraível” ou um processo de extração de fluxo de bits “de tamanho otimizado” ao fluxo-fonte de bits.
[0252] Quando a unidade de determinação de modo 180 fizer a determinação de aplicar um processo de extração de fluxo de bits ao fluxo-fonte de bits, a unidade de determinação de modo 180 pode fornecer uma indicação do processo de extração de fluxo de bits determinado à unidade de extração de fluxo de bits 182 e à unidade de geração de SEI 184. A unidade de extração de fluxo de bits 182 pode aplicar o modo de extração do fluxo de bits determinado para extrair um subfluxo de bits proveniente do fluxo-fonte de bits. Ademais, a unidade de geração de SEI 184 pode gerar uma mensagem de SEI que inclui uma indicação do modo de extração do fluxo de bits determinado. A unidade de geração de SEI 184 pode incluir a mensagem de SEI gerada no subfluxo de bits produzido pela unidade de extração de fluxo de bits 182.
[0253] Desse modo, o dispositivo intermediário 19 pode obter, a partir de um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits. Se o modo de extração for o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída. Se o modo de extração for o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída.
[0254] Adicionalmente, o dispositivo intermediário 19 pode incluir, em um primeiro fluxo de bits, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits. Se o modo de extração for o primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída. Se o modo de extração for o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída.
[0255] A Figura 5A é um fluxograma que ilustra uma operação exemplificativa de um dispositivo de computação, de acordo com um ou mais conjuntos de técnicas dessa revelação. A operação da Figura 5A, junto com as operações ilustradas em outros fluxogramas dessa revelação, é exemplificativa. Outras operações exemplificativas de acordo com os conjuntos de técnicas dessa revelação podem incluir mais, menos ou diferentes ações.
[0256] No exemplo da Figura 5A, um dispositivo de computação (como o dispositivo intermediário 19 ou o dispositivo de destino 14) pode obter, a partir de um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits de um segundo fluxo de bits (200). O primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração. Se o modo de extração for um primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para a decodificação correta de um conjunto de camadas-alvo de saída para o primeiro fluxo de bits. Se o modo de extração for o segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída. Independentemente de se o modo de extração é o primeiro modo de extração ou o segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de Camada de Abstração de Rede (NAL) para decodificar e emitir imagens no conjunto de camadas-alvo de saída para o primeiro fluxo de bits. Em alguns exemplos, a mensagem de SEI se conforma à sintaxe mostrada na Tabela 7, acima, e a indicação é um elemento de sintaxe de indicação de conformidade.
[0257] Ademais, no exemplo da Figura 5A, o dispositivo de computação pode determinar, com base na indicação do modo de extração, se deve-se extrair um subfluxo de bits do primeiro fluxo de bits (202). Com base nessa determinação, o dispositivo de computação pode extrair o subfluxo de bits do primeiro fluxo de bits. Conforme indicado acima, a Figura 5A é um exemplo. Outros exemplos podem incluir mais, menos ou diferentes ações. Por exemplo, alguns exemplos dessa revelação excluem a ação 202.
[0258] A Figura 5B é um fluxograma que ilustra uma operação exemplificativa de um dispositivo de computação, de acordo com um ou mais conjuntos de técnicas dessa revelação. No exemplo da Figura 5B, um dispositivo de computação (como o dispositivo-fonte 12 ou o dispositivo intermediário 19) pode escolher de modo adaptável uma operação de extração (250). O dispositivo de computação pode escolher a operação de extração com base em vários fatores. Por exemplo, o dispositivo de computação pode escolher uma operação de extração com base em se um subfluxo de bits que resulta da operação de extração está ou não destinado a ser usado por um usuário final ou se deve-se permitir que subfluxos de bits adicionais sejam extraídos do subfluxo de bits. Por exemplo, se a trajetória de rede entre o dispositivo que realiza a extração de subfluxo de bits e um dispositivo-cliente for relativamente curta e/ou nenhum dispositivo subsequente que possa realizar a extração de subfluxo de bits existir ao longo da trajetória de rede até o dispositivo-cliente, o dispositivo pode selecionar um modo de extração de “tamanho ideal”. Por outro lado, se a trajetória de rede entre o dispositivo de extração e o dispositivo-cliente for relativamente longa e/ou um ou mais dispositivos que possam realizar a extração de subfluxo de bits estiverem ao longo da trajetória, o dispositivo de extração pode selecionar um modo “completamente extraível”.
[0259] Em alguns exemplos, o dispositivo de extração faz parte de uma CDN. A CDN pode servir grandes quantidades de clientes (por exemplo, centenas de milhares de clientes). Os dispositivos “up-front” no CDN podem ser configurados para preferir modos de extração completamente extraíveis ou, até mesmo, apenas evitar totalmente a extração de fluxo de bits. Entretanto, o “último” MANE antes dos dispositivos-cliente poderem ter capacidade para determinar exatamente quais subfluxos de bits são necessários para cada dispositivo-cliente (por exemplo, devido aos dispositivos-cliente terem software-cliente instalado que determina as capacidades de decodificação e renderização dos respectivos dispositivos-cliente) e, portanto, o último MANE pode “preferir” o modo de extração de tamanho ideal. Ou seja, a seleção da extração “de tamanho ideal” próximo da “última milha” pode ser preferencial devido ao fato da última milha em transmissões de rede terem tipicamente o maior gargalo.
[0260] Ademais, no exemplo da Figura 5B, o dispositivo de computação pode extrair, com o uso da operação de extração escolhida, um primeiro fluxo de bits a partir de um segundo fluxo de bits (252). Por exemplo, dependendo da operação de extração escolhida, o dispositivo de computação pode extrair um fluxo de bits totalmente extraível a partir do fluxo-fonte de bits ou de um fluxo de bits de tamanho otimizado a partir do fluxo-fonte de bits. Em alguns exemplos, o dispositivo de computação gera o segundo fluxo de bits. Em outros exemplos, o dispositivo de computação recebe o segundo fluxo de bits de outro dispositivo de computação, como o dispositivo-fonte 12.
[0261] O dispositivo de computação pode gerar uma mensagem de SEI que inclui uma indicação do modo de extração que foi usado para extrair o primeiro fluxo de bits do segundo fluxo de bits (254). Em outras palavras, a mensagem de SEI inclui uma indicação do modo de extração escolhido. Por exemplo, se o modo de extração for um primeiro modo de extração, o primeiro fluxo de bits inclui uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída. Nesse exemplo, se o modo de extração for um segundo modo de extração, o primeiro fluxo de bits não inclui as uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída. Independentemente de se o modo de extração é o primeiro modo de extração ou o segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de Camada de Abstração de Rede (NAL) para decodificar e emitir imagens em um conjunto de camadas-alvo de saída para o primeiro fluxo de bits. Em alguns exemplos, a mensagem de SEI se conforma à sintaxe mostrada na Tabela 7, acima, e a indicação é um elemento de sintaxe de indicação de conformidade. Ademais, no exemplo da Figura 5B, o dispositivo de computação inclui a mensagem de SEI no primeiro fluxo de bits (256).
[0262] Conforme indicado acima, a Figura 5B é um exemplo. Outros exemplos podem incluir mais, menos ou diferentes ações. Por exemplo, alguns exemplos dessa revelação excluem as ações 250 e/ou 252.
[0263] Os parágrafos a seguir fornecem vários exemplos de acordo com essa revelação.
[0264] Exemplo 1. Um método para processar dados de vídeo, sendo que o método compreende: obter, com base em dados em um fluxo de bits, uma indicação, em que o fluxo de bits compreende uma representação criptada dos dados de vídeo; e determinar, com base, pelo menos em parte, na indicação, se um subfluxo de bits pode ser extraído do fluxo de bits.
[0265] Exemplo 2. O método do exemplo 1, em que quando a indicação tem um primeiro valor, o fluxo de bits não passou por um processo de extração de fluxo de bits ou o fluxo de bits foi extraído de um fluxo-pai de bits com um processo de extração de fluxo de bits que permite que o subfluxo de bits seja extraído do fluxo de bits, e em que, quando a indicação tiver um segundo valor diferente, o fluxo de bits foi extraído do fluxo-pai de bits e o subfluxo de bits não pode ser extraído do fluxo de bits.
[0266] Exemplo 3. O método do exemplo 1, em que quando a indicação tem um primeiro valor, o fluxo de bits não passou por um processo de extração de fluxo de bits ou o fluxo de bits é um fluxo de bits totalmente extraível, e em que, quando a indicação tiver um segundo valor diferente, o fluxo de bits é um fluxo de bits extraído ideal.
[0267] Exemplo 4. Um método para processar dados de vídeo, sendo que o método compreende: gerar um fluxo de bits que inclui dados que fornecem uma indicação de se um subfluxo de bits pode ser extraído do fluxo de bits.
[0268] Exemplo 5. O método do exemplo 4, em que quando a indicação tem um primeiro valor, o fluxo de bits não passou por um processo de extração de fluxo de bits ou o fluxo de bits foi extraído de um fluxo-pai de bits com um processo de extração de fluxo de bits que permite que o subfluxo de bits seja extraído do fluxo de bits, e em que, quando a indicação tiver um segundo valor diferente, o fluxo de bits foi extraído do fluxo-pai de bits e o subfluxo de bits não pode ser extraído do fluxo de bits.
[0269] Exemplo 6. O método do exemplo 4, em que quando a indicação tem um primeiro valor, o fluxo de bits não passou por um processo de extração de fluxo de bits ou o fluxo de bits é um fluxo de bits totalmente extraível, e em que, quando a indicação tiver um segundo valor diferente, o fluxo de bits é um fluxo de bits extraído ideal.
[0270] Exemplo 7. Um método de processamento de dados de vídeo, sendo que o método compreende: obter, a partir de um fluxo de bits que inclui uma representação criptada dos dados de vídeo, uma indicação de vários níveis de conformidade para um conjunto de camadas de saída; e para cada um dos níveis de conformidade para o conjunto de camadas de saída, obter, a partir do fluxo de bits, uma indicação de nível de conformidade.
[0271] Exemplo 8. Um método de processamento de dados de vídeo, sendo que o método compreende: incluir, em um fluxo de bits que inclui uma representação criptada dos dados de vídeo, uma indicação de vários níveis de conformidade para um conjunto de camadas de saída; e para cada um dos níveis de conformidade para o conjunto de camadas de saída, incluir, no fluxo de bits, uma indicação de nível de conformidade.
[0272] Exemplo 9. Um método de processamento de dados de vídeo, sendo que o método compreende: que inclui, em um conjunto de parâmetros de Decodificador de Referência Hipotético (HRD) em um fluxo de bits que inclui uma representação criptada dos dados de vídeo, uma indicação de um nível de conformidade de um conjunto de camadas de saída.
[0273] Exemplo 10. Um método de processamento de dados de vídeo, sendo que o método compreende: obter, a partir de um fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para produzir o fluxo de bits, em que se o fluxo de bits foi produzido com o uso de um primeiro modo de extração, uma subfluxo de bits em conformidade é extraível do fluxo de bits, e em que se o fluxo de bits foi produzido com o uso de um segundo modo de extração diferente, nenhuma subfluxo de bits em conformidade é extraível do fluxo de bits.
[0274] Exemplo 11. O método do exemplo 10, em que a mensagem de SEI inclui dados que indicam um conjunto de camadas-alvo de saída que foi usado para gerar o fluxo de bits.
[0275] Exemplo 12. Um método de processamento de dados de vídeo, sendo que o método compreende: incluir, em um fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de SEI que inclui uma indicação de um modo de extração que foi usado para produzir o fluxo de bits, em que se o fluxo de bits foi produzido com o uso de um primeiro modo de extração, uma subfluxo de bits em conformidade é extraível do fluxo de bits, e em que se o fluxo de bits foi produzido com o uso de um segundo modo de extração diferente, nenhuma subfluxo de bits em conformidade é extraível do fluxo de bits.
[0276] Exemplo 13. O método do exemplo 12, em que a mensagem de SEI inclui dados que indicam um conjunto de camadas-alvo de saída que foi usado para gerar o fluxo de bits.
[0277] Exemplo 14. Um método de processamento de dados de vídeo, sendo que o método compreende: obter, a partir de um fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de estrutura de sintaxe que inclui um perfil, um patamar e informações de nível, sendo que a estrutura de sintaxe inclui adicionalmente uma indicação de um modo de extração que foi usado para produzir o fluxo de bits, em que se o fluxo de bits foi produzido com o uso de um primeiro modo de extração, uma subfluxo de bits em conformidade é extraível do fluxo de bits, e em que se o fluxo de bits foi produzido com o uso de um segundo modo de extração diferente, nenhuma subfluxo de bits em conformidade é extraível do fluxo de bits.
[0278] Exemplo 15. Um método de processamento de dados de vídeo, sendo que o método compreende: incluir, em um fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de estrutura de sintaxe que inclui um perfil, um patamar e informações de nível, sendo que a estrutura de sintaxe inclui adicionalmente uma indicação de um modo de extração que foi usado para produzir o fluxo de bits, em que se o fluxo de bits foi produzido com o uso de um primeiro modo de extração, uma subfluxo de bits em conformidade é extraível do fluxo de bits, e em que se o fluxo de bits foi produzido com o uso de um segundo modo de extração diferente, nenhuma subfluxo de bits em conformidade é extraível do fluxo de bits.
[0279] Exemplo 16. Um método de processamento de dados de vídeo, sendo que o método compreende: obter, a partir de metadados em um arquivo em formato de arquivo de mídia com base na Organização Internacional para Padronização (ISO) que contém um fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma indicação de um modo de extração que foi usado para produzir o fluxo de bits, em que, se o fluxo de bits foi produzido com o uso de um primeiro modo de extração, um subfluxo de bits em conformidade é extraível do fluxo de bits, e em que, se o fluxo de bits foi produzido com o uso de um segundo modo de extração diferente, no subfluxo de bits em conformidade é extraível do fluxo de bits.
[0280] Exemplo 17. O método do exemplo 16, em que os metadados estão em uma descrição de amostra.
[0281] Exemplo 18. Um método de processamento de dados de vídeo, sendo que o método compreende: incluir metadados em um arquivo em formato de arquivo de mídia com base na Organização Internacional para Padronização (ISO) que contém um fluxo de bits que inclui uma representação codificada dos dados de vídeo, sendo que os metadados incluem uma indicação de um modo de extração que foi usado para produzir o fluxo de bits, em que, se o fluxo de bits foi produzido com o uso de um primeiro modo de extração, um subfluxo de bits em conformidade é extraível do fluxo de bits, e em que, se o fluxo de bits foi produzido com o uso de um segundo modo de extração diferente, no subfluxo de bits em conformidade é extraível do fluxo de bits.
[0282] Exemplo 19. O método do exemplo 18, em que os metadados estão em uma descrição de amostra.
[0283] Exemplo 20. Um método de processamento de dados de vídeo, sendo que o método compreende: realizar um primeiro processo de extração de fluxo de bits que extrai um primeiro subfluxo de bits a partir de um fluxo- pai de bits, em que o processo de extração de fluxo de bits toma como entradas um conjunto de camadas-alvo de saída, um identificador-alvo de tempo, e um terceiro parâmetro, em que é permitido que o terceiro parâmetro seja um índice a um conjunto de camadas de saída e um indicador do modo de extração do fluxo de bits, uma lista identificada de camada-alvo de saída e o indicador do modo de extração do fluxo de bits, ou uma lista de identificadores de camada- alvo, em que realizar o primeiro processo de extração de fluxo de bits compreende invocar um segundo processo de extração de fluxo de bits que toma como entradas o conjunto de camadas-alvo de saída e o identificador-alvo de tempo.
[0284] Exemplo 21. O método do exemplo 21, em que o segundo processo de extração de fluxo de bits toma adicionalmente como entrada o indicador do modo de extração do fluxo de bits.
[0285] Exemplo 22. Um método de processamento de dados de vídeo, sendo que o método compreende: determinar, com base, pelo menos em parte, em dados em uma caixa ou um descritor em um arquivo, uma indicação de nível de extração, em que a caixa ou o descritor descreve um ponto de operação representado com pelo menos um conjunto de camadas de saída, em que se a indicação de nível de extração tiver um primeiro valor, um subfluxo de bits em conformidade é extraível do fluxo de bits, e em que se a indicação de nível de extração tiver um segundo valor diferente, nenhum subfluxo de bits em conformidade é extraível do fluxo de bits.
[0286] Exemplo 23. O método do exemplo 22, em que o arquivo se conforma a um formado de arquivo de mídia com base na Organização Internacional para Padronização (ISO) ou um formato de arquivo MPEG-2 TS.
[0287] Exemplo 24. Um método de processamento de dados de vídeo, sendo que o método compreende: que inclui, em uma caixa ou um descritor em um arquivo, dados que indicam uma indicação de nível de extração, em que a caixa ou o descritor descrevem um ponto de operação representado com pelo menos um conjunto de camadas de saída, em que se a indicação de nível de extração tiver um primeiro valor, um subfluxo de bits em conformidade é extraível do fluxo de bits, e em que se a indicação de nível de extração tiver um segundo valor diferente, nenhum subfluxo de bits em conformidade é extraível do fluxo de bits.
[0288] As várias etapas de blocos lógicos ilustrativos, módulos, circuitos e etapas de algoritmo descritos em conjunto com as modalidades reveladas no presente documento podem ser implantadas como hardware eletrônico, software de computador ou combinações de ambos. Para ilustrar claramente essa intercambiabilidade de hardware e software, vários componentes, blocos, módulos, circuitos, e etapas ilustrativos foram descritos acima geralmente em termos de funcionalidade dos mesmos. Se tal funcionalidade deve ser implantada como hardware ou software, depende das restrição de projeto e pedido particular impostas no sistema geral. Os indivíduos versados na técnica podem implantar a funcionalidade descrita em modos variáveis para cada aplicação em particular, porém tais decisões de implantação não devem ser interpretadas como causadoras de um afastamento do escopo da presente revelação.
[0289] Em um ou mais exemplos, as funções descritas podem ser implantadas em hardware, software, firmware ou qualquer combinação dos mesmos. Tais técnicas podem ser implantadas em qualquer um dentre uma variedade de dispositivos tal como computadores de propósito geral, fones de comunicação sem fio dispositivo ou dispositivos de circuito integrado que têm múltiplos usos que incluem aplicação em fones de dispositivo de comunicação sem fio e outros dispositivos. Quaisquer recursos descritos como módulos ou componentes podem ser implantados juntamente em um dispositivo lógico integrado ou separadamente como separados, mas dispositivos lógicos interoperáveis. Caso implantadas em software, as funções podem ser armazenadas, ou transmitidas, como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento com base em hardware. Em outras palavras, caso implantadas em software, os conjuntos de técnicas podem ser realizados, pelo menos em parte, por um meio de armazenamento de dados legível por computador que compreende código de programa que inclui instruções que, quando executadas, realizam um ou mais dos métodos descritos acima. Os meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, que correspondem a um meio tangível como meios de armazenamento de dados ou meios de comunicação que incluem qualquer meio que facilite a transferência de um programa de computador proveniente de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Desse modo, as meios legíveis por computador geralmente podem corresponder a (1) meios tangíveis de armazenamento legíveis por computador que sejam não transitórias ou (2) um meio de comunicação tal como um sinal ou onda portadora As meios de armazenamento de dados podem ser quaisquer meios disponíveis que possam ser acessadas por um ou mais computadores ou um ou mais processadores para recuperar instruções, estruturas de código e/ou dados para a implantação das técnicas descritas nessas revelação. O meio de armazenamento de dados legível por computador pode fazer parte de um produto de programa de computador, que pode incluir materiais para pacotes. Um produto de programa de computador pode incluir uma meio legível por computador.
[0290] A título de exemplo, e não de limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, memória de acesso aleatório não volátil (NVRAM), EEPROM, CD-ROM, memória FLASH ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro meio que possa ser usado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Também, qualquer conexão pode ser propriamente denominada um meio legível por computador. As técnicas, adicional ou alternativamente, podem ser realizadas, pelo menos em parte, por um meio de comunicação legível por computador que transporta ou comunica o código de programa na forma de instruções ou estruturas de dados e que podem ser acessadas, lidas e/ou executadas por um computador, tal como ondas ou sinais propagados. Por exemplo, se as instruções forem transmitidas a partir de um site da web, servidor ou outra fonte remota com o uso de um cabo coaxial, um cabo de fibra óptica, um par trançado, uma linha de inscrição digital (DSL) ou tecnologias sem fio como infravermelho, rádio e micro-onda, então, o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou as tecnologias sem fio como infravermelho, rádio e micro-onda estão incluídos na definição de meio. Deve ser entendido, entretanto, que os meios de armazenamento legíveis por computador e os meios de armazenamento de dados não incluem conexões, ondas transportadoras, sinais ou outros meios transitórios, mas são, em vez disso, direcionados para meios não transitórios e tangíveis. Disco magnético e disco óptico, conforme usados no presente documento, incluem disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disquete e disco blu- ray, em que os discos magnéticos, em geral, reproduzem os dados de modo magnético, enquanto os discos ópticos reproduzem os dados de modo óptico com lasers. As combinações dos supracitados também devem ser abrangidas pelo escopo de meios legíveis por computador.
[0291] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores para propósitos gerais, circuitos integrados de aplicação específica (ASICs), matrizes de chaveamento programáveis por campo (FPGAs) ou outro conjunto de circuitos lógicos equivalentes integrados ou discretos. Portanto, o termo "processador", conforme usado no presente documento pode se referir a qualquer uma das estruturas supracitadas ou qualquer outra estrutura adequada para a implantação das técnicas descritas no presente documento. Tal processador pode ser configurado para realizar qualquer uma das técnicas descritas nessa revelação. Adicionalmente, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro de módulos dedicados de hardware e/ou software configurados para criptar e decodificar ou incorporados em um codec combinado. Também, as técnicas podem ser totalmente implantadas em um ou mais circuitos ou elementos lógicos.
[0292] Um processador de propósito geral pode ser um microprocessador, mas, na alternativa, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado convencional. Um processador também pode ser implantado como uma combinação dos dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo de DSP ou qualquer outra conforme usado no presente documento pode se referir a qualquer um dentre a estrutura anteriormente mencionada, qualquer combinação da estrutura anteriormente mencionada ou qualquer outra estrutura ou aparelho adequado para implantar técnicas descritas no presente documento. Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida dentro dos módulos de hardware ou módulos de software dedicados configurados para criptar e decodificar ou incorporados em um criptador- decodificador de vídeo combinado(CODEC).
[0293] Os conjuntos de técnicas de codificação discutidos no presente documento podem ser uma modalidade em um sistema de criptação e decodificação de vídeo exemplificativo. Um sistema inclui um dispositivo-fonte que fornece dados de vídeo criptados a serem decodificados em um momento posterior por um dispositivo de destino. Em particular, o dispositivo-fonte fornece os dados de vídeo para o dispositivo de destino por meio de um meio legível por computador. O dispositivo-fonte e o dispositivo de destino podem compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores de mesa, computadores do tipo notebook (isto é, do tipo laptop), computadores do tipo tablet, decodificadores de sinais, aparelhos de telefone, tais como, os então chamados telefones "inteligentes", então chamados "smart" pads, televisões, câmeras, dispositivos de exibição, reprodutores de meio digital, consoles de jogos eletrônicos, dispositivo de transmissão contínua de vídeo, ou semelhantes. Em alguns casos, o dispositivo-fonte e o dispositivo de destino pode ser equipado para comunicação sem fio.
[0294] Os conjuntos de técnicas dessa revelação podem ser implantados em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone, 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 nessa revelação para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente a realização por diferentes unidades de hardware. Ao invés disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequados.
[0295] O dispositivo de destino pode receber os dados de vídeo criptados para serem decodificados por meio do meio legível por computador. O meio legível por computador pode compreender qualquer tipo de meios ou dispositivos com capacidade para mover os dados de vídeo criptados a partir do dispositivo-fonte ao dispositivo de destino. Em um exemplo, o meio legível por computador pode compreender uma meio de comunicação para possibilitar que um dispositivo-fonte transmite os dados de vídeo criptados diretamente a um dispositivo de destino em tempo real. Os dados de vídeo criptados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. Um meio de comunicação pode fazer parte de uma rede com base em pacote, tal como, uma rede de área local, uma rede de longa distância ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações-base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação a partir do dispositivo-fonte para o dispositivo de destino.
[0296] Em alguns exemplos, podem ser emitidos dados criptados a partir da interface de saída para um dispositivo de armazenamento. De modo similar, podem ser acessados dados criptados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou quaisquer outros meios de armazenamento digital adequado para armazenar dados de vídeo criptados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo criptado gerado por dispositivo-fonte. O dispositivo de destino pode acessar dados de vídeo armazenados a partir do dispositivo de armazenamento por meio de transmissão ou transferência por download. O servidor de arquivos pode ser qualquer tipo de servidor com capacidade para armazenar dados de vídeo criptados e transmitir esses dados de vídeo criptados para o dispositivo de destino 14. Os servidores de arquivos exemplificativos incluem um servidor web (por exemplo, para um site da web), um servidor FTP, dispositivos de armazenamento anexado à rede (NAS) ou uma unidade de disco local. O dispositivo de destino pode acessar os dados de vídeo criptado através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem de cabo, etc.) ou uma combinação de ambos que seja adequada para acessar dados de vídeo criptado armazenados em um servidor de arquivos. A transmissão de dados de vídeo criptados a partir do dispositivo de armazenamento pode ser uma transmissão de transferência, um transmissão de transferência por download ou uma combinação das mesmas.
[0297] As técnicas dessa revelação não estão necessariamente limitadas a aplicações ou definições sem fio. As técnicas podem ser aplicadas à codificação de vídeo visando dar apoio a qualquer uma dentre uma variedade de aplicações de multimídia, tais como, difusões de televisão aberta, transmissões de televisão a cabo, transmissões de televisão a satélite, transmissões contínuas de vídeo pela Internet, tais como, transmissão contínua adaptativa dinâmica através de HTTP (DASH), vídeo digital que é criptado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outras aplicações. Em alguns exemplos, o sistema pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicações como difusão de vídeo, reprodução de vídeo, difusão de vídeo e/ou telefonia por vídeo.
[0298] Em um exemplo, o dispositivo-fonte inclui uma fonte de vídeo, um criptador de vídeo e uma interface de saída. O dispositivo de destino pode incluir uma interface de entrada, um decodificador de vídeo e um dispositivo de exibição. O criptador de vídeo do dispositivo-fonte pode ser configurado para aplicar os conjuntos de técnicas revelados no presente documento. Em outros exemplos, um dispositivo-fonte e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo-fonte pode receber dados de vídeo a partir de uma fonte de vídeo externa, como uma câmera externa. Da mesma forma, o dispositivo de destino pode fazer interface com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado. O sistema exemplificativo acima é meramente um exemplo. Os conjuntos de técnicas para processar dados de vídeo em paralelo podem ser realizados por qualquer dispositivo de criptação e/ou decodificação de vídeo digital. Embora, em geral, as técnicas dessa revelação sejam realizadas por um dispositivo de criptografia de vídeo, as técnicas também podem ser realizadas por um criptador/decodificador de vídeo, tipicamente chamado de um "CODEC". Além disso, as técnicas dessa revelação também podem ser realizadas por um pré-processador de vídeo. O dispositivo-fonte 12 e o dispositivo de destino 14 são simplesmente exemplos de tais dispositivos de codificação nos quais o dispositivo-fonte 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos-fonte e de destino podem operar de modo substancialmente simétrico de modo que cada um dos dispositivos inclua componentes de criptação e decodificação de vídeo. Por conseguinte, os sistemas exemplificativos podem suportar transmissão de vídeo unidirecional ou bidirecional entre dispositivos de vídeo, por exemplo, para transmissão contínua de vídeo, reprodução de vídeo, radiodifusão de vídeo ou telefonia por vídeo.
[0299] A fonte de vídeo pode incluir um dispositivo de captura de vídeo, tal como, uma câmera de vídeo, um arquivo de vídeo que contém um vídeo anteriormente capturado e/ou uma interface de alimentação de vídeo para receber vídeo de um fornecedor de conteúdo de vídeo. Como uma alternativa adicional, a fonte de vídeo pode gerar dados com base em gráficos de computador como o vídeo de fonte ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em alguns casos, caso a fonte de vídeo seja uma câmera de vídeo, o dispositivo-fonte e o dispositivo de destino podem formar os então chamados telefones de câmera ou videofones. Entretanto, conforme mencionado acima, as técnicas descritas nessa revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas às aplicações com fio e/ou sem fio. em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser criptado pelo criptador de vídeo. As informações de vídeo criptado podem, então, ser emitidas pela interface de saída para o meio legível por computador.
[0300] Conforme notado, o meio legível por computador pode incluir meios transitórios, como uma transmissão por difusão sem fio ou por difusão com fio ou meios de armazenamento (ou seja, meios de armazenamento não transitórios), como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray ou outros meios legíveis por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo criptados a partir do dispositivo-fonte e fornecer os dados de vídeo criptados para o dispositivo de destino, por exemplo, por meio de transmissão de rede. De modo similar, um dispositivo de computação de uma instalação de produção de meio, como uma instalação de rotulação de disco, pode receber dados de vídeo criptados a partir do dispositivo- fonte e produzir um disco que contém os dados de vídeo criptados. Portanto, o meio legível por computador pode ser entendido como incluindo um ou mais meios legíveis por computador de um certo número de formas, em vários exemplos.
[0301] A interface de entrada do dispositivo de destino recebe informações provenientes do meio legível por computador. As informações do meio legível por computador podem incluir informações de sintaxe definidas pelo criptador de vídeo, que também é usado pelo decodificador de vídeo, que inclui elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas, por exemplo, um grupo de imagens (GOP). Um dispositivo de exibição exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer um dentre uma variedade de dispositivos de visores como um tubo de raio de cátodo (CRT), um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição. Várias modalidades da invenção foram descritas.
[0302] Vários exemplos foram descritos. Essas e outras implantações estão dentro do escopo das reivindicações a seguir.

Claims (14)

1. Método de processamento de dados de vídeo caracterizado pelo fato de que compreende: obter (200), a partir de um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de Informações de Aprimoramento Suplementares, SEI, que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits a partir de um segundo fluxo de bits, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente do modo de extração ser indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de Camada de Abstração de Rede, NAL, para decodificar e emitir imagens em um conjunto de camadas-alvo de saída, o primeiro modo de extração objetiva auto- completude e compreende reter, no primeiro fluxo de bits, uma ou mais imagens codificadas que não são necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, de modo que, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui as ditas uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída e um subfluxo de bits conformado no qual as ditas uma ou mais imagens codificadas são necessárias é extraível do primeiro fluxo de bits, e o segundo modo de extração objetiva otimização de tamanho e compreende excluir, do primeiro fluxo de bits, uma ou mais imagens codificadas que não são necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, de modo que, se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as ditas uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída e um subfluxo de bits conformado no qual as ditas uma ou mais imagens codificadas são necessárias não é extraível do primeiro fluxo de bits.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits exclui unidades de NAL do segundo fluxo de bits que têm identificadores de tempo maiores que um identificador-alvo de tempo e têm identificadores de camada que não estão entre os valores incluídos em um conjunto de camadas-alvo de saída para o conjunto de camadas-alvo de saída, e se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits exclui adicionalmente unidades de NAL do segundo fluxo de bits que correspondem a quaisquer imagens codificadas que não são necessárias para decodificar de modo correto as camadas no conjunto de camadas-alvo de saída.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: se o modo de extração for indicado como sendo o segundo modo de extração, para cada unidade de NAL respectiva do segundo fluxo de bits, a unidade de NAL respectiva é removida do segundo fluxo de bits de modo que a unidade de NAL respectiva não esteja no primeiro fluxo de bits se ambos os critérios a seguir forem satisfeitos para a unidade de NAL respectiva: i) a unidade de NAL respectiva tem um identificador de camada que não está entre identificadores de camada em uma lista de identificadores-alvo de camada de saída para o conjunto de camadas-alvo de saída, e ii) um identificador de tempo da unidade de NAL respectiva é maior que um identificador de tempo máximo de imagens de referência intercamada usado por imagens de uma camada à qual a unidade de NAL respectiva pertence.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que, se o modo de extração for indicado como sendo o segundo modo de extração, a unidade de NAL respectiva é removida do segundo fluxo de bits de modo que a unidade de NAL respectiva não esteja no primeiro fluxo de bits se: i) a unidade de NAL respectiva tem um identificador de camada que não está entre identificadores de camada em uma lista de identificadores-alvo de camada de saída para o conjunto de camadas-alvo de saída, e ii) um identificador da unidade de NAL respectiva especifica que uma imagem codificada correspondente à unidade de NAL respectiva não é usada como uma imagem de referência em um processo de decodificação de imagens subsequentes em ordem de decodificação.
5. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que compreende adicionalmente: determinar que um subfluxo de bits totalmente extraível pode ser extraído do primeiro fluxo de bits, contanto que um conjunto de camadas-alvo de saída para o subfluxo de bits totalmente extraível não exceda o conjunto de camadas-alvo de saída para o primeiro fluxo de bits, em que o subfluxo de bits totalmente extraível contém unidades de NAL suficientes para decodificar imagens dentro do conjunto de camadas-alvo de saída para o subfluxo de bits totalmente extraível.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a mensagem de SEI compreende dados que indicam o conjunto de camadas-alvo de saída.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: a indicação do modo de extração indica um nível de conformidade, o nível de conformidade igual a 0 indica que um identificador de tempo mais alto de cada camada em um conjunto de camadas presente é igual a um identificador de tempo máximo do conjunto de camadas presente e que cada unidade de acesso do primeiro fluxo de bits contém uma imagem proveniente de cada camada no conjunto de camadas presente, o conjunto de camadas presente é um conjunto de camadas presentes para o primeiro fluxo de bits, o identificador de tempo máximo do conjunto de camadas presente é um identificador de tempo maior de imagens em camadas no conjunto de camadas presente, o nível de conformidade igual a 1 indica: que um identificador de tempo mais alto de cada camada no conjunto de camadas-alvo de saída é igual ao identificador de tempo máximo do conjunto de camadas presente e cada unidade de acesso do primeiro fluxo de bits contém uma imagem proveniente de cada camada no conjunto-alvo de camadas de saída, para cada camada respectiva no conjunto de camadas presente que não está no conjunto de camadas-alvo de saída, se um identificador de tempo mais alto de imagens na camada respectiva for o identificador de tempo máximo do conjunto de camadas presente, cada unidade de acesso com um identificador de tempo menor ou igual ao identificador de tempo máximo do conjunto de camadas presente inclui uma imagem na camada respectiva.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que: a indicação do modo de extração indica um nível de conformidade, o nível de conformidade igual a 0 indica que um identificador de tempo mais alto de cada camada em um conjunto de camadas presente é igual a um identificador de tempo máximo do conjunto de camadas presente e que cada unidade de acesso do primeiro fluxo de bits contém uma imagem proveniente de cada camada no conjunto de camadas presente, o conjunto de camadas presente é um conjunto de camadas presentes para o primeiro fluxo de bits, o identificador de tempo máximo do conjunto de camadas presente é um identificador de tempo maior de imagens em camadas no conjunto de camadas presente, o nível de conformidade igual a 1 indica que, para cada camada respectiva no conjunto de camadas presente, se um identificador de tempo mais alto de imagens na camada respectiva for o identificador de tempo máximo do conjunto de camadas presente, cada unidade de acesso com um identificador de tempo menor ou igual ao identificador de tempo máximo do conjunto de camadas presente inclui uma imagem na camada respectiva.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: determinar (202), com base na indicação do modo de extração, se deve-se extrair um subfluxo de bits do primeiro fluxo de bits; e com base na determinação, extrair o subfluxo de bits do primeiro fluxo de bits.
10. Método de processamento de dados de vídeo caracterizado pelo fato de que compreende: gerar (254) uma mensagem de Informações de Aprimoramento Suplementares, SEI, que inclui uma indicação de um modo de extração que foi usado para extrair um primeiro fluxo de bits de um segundo fluxo de bits, sendo que o primeiro fluxo de bits inclui uma representação codificada dos dados de vídeo, e incluir (256) a mensagem de SEI no primeiro fluxo de bits, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente do modo de extração ser indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de Camada de Abstração de Rede, NAL, para decodificar e emitir imagens em um conjunto de camadas-alvo de saída para o primeiro fluxo de bits, o primeiro modo de extração objetiva auto- completude e compreende reter, no primeiro fluxo de bits, uma ou mais imagens codificadas que não são necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, de modo que, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui as ditas uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída e um subfluxo de bits conformado no qual as ditas uma ou mais imagens codificadas são necessárias é extraível do primeiro fluxo de bits, e o segundo modo de extração objetiva otimização de tamanho e compreende excluir, do primeiro fluxo de bits, uma ou mais imagens codificadas que não são necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, de modo que, se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as ditas uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída e um subfluxo de bits conformado no qual as ditas uma ou mais imagens codificadas são necessárias não é extraível do primeiro fluxo de bits.
11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que compreende adicionalmente: escolher de modo adaptável (250) o modo de extração; e extrair (252), com o uso do modo de extração escolhido, o primeiro fluxo de bits proveniente do segundo fluxo de bits.
12. Dispositivo para processar dados de vídeo caracterizado pelo fato de que compreende: uma memória que armazena os dados de vídeo; e um ou mais processadores configurados para obter (200), a partir de um primeiro fluxo de bits que inclui uma representação codificada dos dados de vídeo, uma mensagem de Informações de Aprimoramento Suplementares, SEI, que inclui uma indicação de um modo de extração que foi usado para extrair o primeiro fluxo de bits a partir de um segundo fluxo de bits, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente do modo de extração ser indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de Camada de Abstração de Rede, NAL, para decodificar e emitir imagens em um conjunto de camadas-alvo de saída para o primeiro fluxo de bits, o primeiro modo de extração objetiva auto- completude e compreende reter, no primeiro fluxo de bits, uma ou mais imagens codificadas que não são necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, de modo que, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui as ditas uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída e um subfluxo de bits conformado no qual as ditas uma ou mais imagens codificadas são necessárias é extraível do primeiro fluxo de bits, e o segundo modo de extração objetiva otimização de tamanho e compreende excluir, do primeiro fluxo de bits, uma ou mais imagens codificadas que não são necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, de modo que, se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as ditas uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída e um subfluxo de bits conformado no qual as ditas uma ou mais imagens codificadas são necessárias não é extraível do primeiro fluxo de bits.
13. Dispositivo para processar dados de vídeo caracterizado pelo fato de que compreende: uma memória que armazena os dados de vídeo; e um ou mais processadores configurados para: gerar (254) uma mensagem de Informações de Aprimoramento Suplementares, SEI, que inclui uma indicação de um modo de extração que foi usado para extrair um primeiro fluxo de bits de um segundo fluxo de bits, sendo que o primeiro fluxo de bits inclui uma representação codificada dos dados de vídeo; e incluir (256) a mensagem de SEI no primeiro fluxo de bits, em que: o primeiro fluxo de bits é um subfluxo de bits extraído do segundo fluxo de bits de acordo com o modo de extração, independentemente do modo de extração ser indicado como sendo um primeiro modo de extração ou um segundo modo de extração, o primeiro fluxo de bits inclui unidades suficientes de Camada de Abstração de Rede, NAL, para decodificar e emitir imagens em um conjunto de camadas-alvo de saída para o primeiro fluxo de bits, o primeiro modo de extração objetiva auto- completude e compreende reter, no primeiro fluxo de bits, uma ou mais imagens codificadas que não são necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, de modo que, se o modo de extração for indicado como sendo o primeiro modo de extração, o primeiro fluxo de bits inclui as ditas uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída e um subfluxo de bits conformado no qual as ditas uma ou mais imagens codificadas são necessárias é extraível do primeiro fluxo de bits, e o segundo modo de extração objetiva otimização de tamanho e compreende excluir, do primeiro fluxo de bits, uma ou mais imagens codificadas que não são necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída, de modo que, se o modo de extração for indicado como sendo o segundo modo de extração, o primeiro fluxo de bits não inclui as ditas uma ou mais imagens codificadas não necessárias para decodificar de modo correto o conjunto de camadas-alvo de saída e um subfluxo de bits conformado no qual as ditas uma ou mais imagens codificadas são necessárias não é extraível do primeiro fluxo de bits.
14. Memória legível por computador caracterizada pelo fato de que possui instruções nela armazenadas que, quando executadas, fazem com que o computador realize um método conforme definido em qualquer uma das reivindicações 1 a 11.
BR112016008374-1A 2013-10-15 2014-10-15 Suporte de extração em múltiplos modos para codecs de vídeo de múltiplas camadas BR112016008374B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201361891317P 2013-10-15 2013-10-15
US61/891,317 2013-10-15
US201461923624P 2014-01-03 2014-01-03
US61/923,624 2014-01-03
US14/514,300 US10284858B2 (en) 2013-10-15 2014-10-14 Support of multi-mode extraction for multi-layer video codecs
US14/514,300 2014-10-14
PCT/US2014/060617 WO2015057787A1 (en) 2013-10-15 2014-10-15 Support of multi-mode extraction for multi-layer video codecs

Publications (2)

Publication Number Publication Date
BR112016008374A2 BR112016008374A2 (pt) 2017-08-01
BR112016008374B1 true BR112016008374B1 (pt) 2023-05-09

Family

ID=52809627

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016008374-1A BR112016008374B1 (pt) 2013-10-15 2014-10-15 Suporte de extração em múltiplos modos para codecs de vídeo de múltiplas camadas

Country Status (8)

Country Link
US (1) US10284858B2 (pt)
EP (1) EP3058743B1 (pt)
JP (1) JP6700176B2 (pt)
KR (1) KR102054040B1 (pt)
CN (1) CN105612752B (pt)
BR (1) BR112016008374B1 (pt)
MX (1) MX364544B (pt)
WO (1) WO2015057787A1 (pt)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9374585B2 (en) * 2012-12-19 2016-06-21 Qualcomm Incorporated Low-delay buffering model in video coding
US10595031B2 (en) 2013-07-12 2020-03-17 Qualcomm Incorporated Selection of target output layers in high efficiency video coding extensions
US9402083B2 (en) * 2014-04-24 2016-07-26 Vidyo, Inc. Signaling conformance points using profile space
US9699480B2 (en) * 2014-06-13 2017-07-04 Sharp Laboratories Of America, Inc. Level limits
JP6348188B2 (ja) * 2014-06-18 2018-06-27 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ビデオにおけるピクチャのロバストな符号化および復号化
JP2017522767A (ja) 2014-06-18 2017-08-10 テレフオンアクチーボラゲット エルエム エリクソン(パブル) ビデオビットストリームにおけるランダムアクセス
EP3158752B1 (en) * 2014-06-18 2021-08-04 Telefonaktiebolaget LM Ericsson (publ) Dependent random access point pictures
US9979983B2 (en) * 2015-03-16 2018-05-22 Microsoft Technology Licensing, Llc Application- or context-guided video decoding performance enhancements
US10129566B2 (en) 2015-03-16 2018-11-13 Microsoft Technology Licensing, Llc Standard-guided video decoding performance enhancements
US10834153B2 (en) * 2016-08-24 2020-11-10 Qualcomm Incorporated System level signaling of SEI tracks for media data streaming
US10687055B2 (en) * 2017-03-03 2020-06-16 Qualcomm Incorporated Coding MCTS-EIS SEI messages of an access unit
US11284112B2 (en) * 2018-12-06 2022-03-22 Tencent America LLC Method and apparatus for a primary transform using an 8-bit transform core
MX2022003561A (es) * 2019-09-24 2022-06-14 Huawei Tech Co Ltd Gestión de mensajes de sei de anidamiento escalable.
US11265567B2 (en) * 2019-10-08 2022-03-01 Tencent America LLC Method for output layer set signaling in scalable video stream
KR20220113400A (ko) * 2019-12-20 2022-08-12 프라운호퍼-게젤샤프트 추르 푀르데룽 데어 안제반텐 포르슝 에 파우 비디오 데이터 스트림, 비디오 인코더, hrd 타이밍 픽스를 위한 장치 및 방법, 확장가능하고 병합가능한 비트스트림들을 위한 추가 기능들
KR20220115958A (ko) 2019-12-26 2022-08-19 바이트댄스 아이엔씨 코딩된 비트스트림들에서의 비디오 계층들의 시그널링에 대한 제약들
WO2021134019A1 (en) 2019-12-26 2021-07-01 Bytedance Inc. Constraints on coding of layered video
CN113055668B (zh) * 2019-12-27 2023-06-02 腾讯美国有限责任公司 从已编码视频比特流中提取子比特流的方法和设备
US11356681B2 (en) * 2019-12-27 2022-06-07 Tencent America LLC Coded video sub-bitstream extraction
WO2021134055A1 (en) 2019-12-27 2021-07-01 Bytedance Inc. Subpicture signaling in parameter sets
CN115004669A (zh) 2020-01-09 2022-09-02 字节跳动有限公司 不同sei消息的解码顺序
CN115398913A (zh) * 2020-02-29 2022-11-25 抖音视界有限公司 高级语法元素的约束
CN115315942A (zh) * 2020-03-17 2022-11-08 字节跳动有限公司 视频编解码中的图片输出标志指示
US11297350B1 (en) * 2020-03-27 2022-04-05 Tencent America LLC Method for output layer set for multilayered video stream
US11228776B1 (en) * 2020-03-27 2022-01-18 Tencent America LLC Method for output layer set mode in multilayered video stream
EP4140137A4 (en) 2020-05-22 2024-01-24 Beijing Bytedance Network Tech Co Ltd SIGNALING OF GENERAL COMPULSORY FLAGS
WO2021234132A1 (en) 2020-05-22 2021-11-25 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Video encoder, video decoder, methods for encoding and decoding and video data stream for realizing advanced video coding concepts
US11431998B2 (en) * 2020-05-22 2022-08-30 Tencent America LLC Systems and methods for decoding based on inferred video parameter sets
CN116057931A (zh) * 2020-06-06 2023-05-02 Lg电子株式会社 针对缩放性的基于子比特流提取的图像编码设备和方法
KR20230019848A (ko) 2020-06-09 2023-02-09 바이트댄스 아이엔씨 서브픽처 서브비트스트림 추출 프로세스 향상들
US20220103847A1 (en) 2020-09-29 2022-03-31 Lemon Inc. Dependent random access point indication in video bitstreams
US11962808B2 (en) * 2021-04-18 2024-04-16 Lemon Inc. Video usability information in common media application format
KR20240004569A (ko) * 2021-04-23 2024-01-11 엘지전자 주식회사 레이어 식별자 정보를 포함하는 sei 메시지 기반의영상 부호화/복호화 방법, 장치, 및 비트스트림을 전송하는 방법
WO2023222521A1 (en) * 2022-05-19 2023-11-23 Interdigital Ce Patent Holdings, Sas Sei adapted for multiple conformance points
CN114745600B (zh) * 2022-06-10 2022-09-27 中国传媒大学 一种基于sei的视频标签标注方法及装置

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7860161B2 (en) * 2003-12-15 2010-12-28 Microsoft Corporation Enhancement layer transcoding of fine-granular scalable video bitstreams
US7440626B2 (en) * 2004-12-02 2008-10-21 Mitsubishi Electric Research Laboratories, Inc. Image transcoding
US7728877B2 (en) * 2004-12-17 2010-06-01 Mitsubishi Electric Research Laboratories, Inc. Method and system for synthesizing multiview videos
DE102005001287A1 (de) * 2005-01-11 2006-07-20 Siemens Ag Verfahren und Vorrichtung zur Verarbeitung von skalierbaren Daten
US7756206B2 (en) * 2005-04-13 2010-07-13 Nokia Corporation FGS identification in scalable video coding
US20070014349A1 (en) * 2005-06-03 2007-01-18 Nokia Corporation Residual prediction mode in scalable video coding
KR101125819B1 (ko) * 2005-10-11 2012-03-27 노키아 코포레이션 효율적인 규모가변적 스트림 조정을 위한 시스템 및 방법
KR100772868B1 (ko) * 2005-11-29 2007-11-02 삼성전자주식회사 복수 계층을 기반으로 하는 스케일러블 비디오 코딩 방법및 장치
EP1982517A4 (en) * 2006-01-12 2010-06-16 Lg Electronics Inc MULTIVATE VIDEO PROCESSING
US7535383B2 (en) * 2006-07-10 2009-05-19 Sharp Laboratories Of America Inc. Methods and systems for signaling multi-layer bitstream data
US20080037880A1 (en) * 2006-08-11 2008-02-14 Lcj Enterprises Llc Scalable, progressive image compression and archiving system over a low bit rate internet protocol network
US8170094B2 (en) * 2006-11-30 2012-05-01 Motorola Mobility, Inc. Method and system for scalable bitstream extraction
US20100061452A1 (en) * 2007-01-04 2010-03-11 Thomson Licensing Corporation Method and apparatus for video error concealment using high level syntax reference views in multi-view coded video
WO2008084424A1 (en) * 2007-01-08 2008-07-17 Nokia Corporation System and method for providing and using predetermined signaling of interoperability points for transcoded media streams
US20080317124A1 (en) * 2007-06-25 2008-12-25 Sukhee Cho Multi-view video coding system, decoding system, bitstream extraction system for decoding base view and supporting view random access
KR20100030648A (ko) * 2007-06-26 2010-03-18 노키아 코포레이션 시간 레이어 스위칭 포인트들을 표시하는 시스템 및 방법
EP2086237B1 (en) * 2008-02-04 2012-06-27 Alcatel Lucent Method and device for reordering and multiplexing multimedia packets from multimedia streams pertaining to interrelated sessions
US20100005185A1 (en) * 2008-06-24 2010-01-07 Zhengye Liu Substream trading in a peer to peer live streaming system
CN101662677B (zh) * 2008-08-29 2011-08-10 华为终端有限公司 码流转换系统及方法、码流识别单元和方案确定单元
EP2334082A1 (en) * 2008-09-17 2011-06-15 Sharp Kabushiki Kaisha Scalable video stream decoding apparatus and scalable video stream generating apparatus
US20100272187A1 (en) * 2009-04-24 2010-10-28 Delta Vidyo, Inc. Efficient video skimmer
CN102577375B (zh) * 2009-05-01 2016-08-17 汤姆森特许公司 用于三维视频的层间依赖性信息
US8411746B2 (en) * 2009-06-12 2013-04-02 Qualcomm Incorporated Multiview video coding over MPEG-2 systems
US8780999B2 (en) * 2009-06-12 2014-07-15 Qualcomm Incorporated Assembling multiview video coding sub-BITSTREAMS in MPEG-2 systems
RU2013108074A (ru) * 2010-09-03 2014-08-27 Сони Корпорейшн Устройство кодирования, способ кодирования, устройство декодирования и способ декодирования
WO2012052968A1 (en) * 2010-10-20 2012-04-26 Nokia Corporation Method and device for video coding and decoding
EP2664075A4 (en) * 2011-01-14 2015-08-19 Vidyo Inc ENHANCED NAL UNIT HEADER
AU2012205813B2 (en) * 2011-01-14 2016-07-07 Vidyo, Inc. High layer syntax for temporal scalability
KR101744355B1 (ko) * 2011-01-19 2017-06-08 삼성전자주식회사 상호 계층 최적화를 이용한 멀티미디어 데이터 패킷을 송신하는 방법 및 장치
CN105100822B (zh) 2011-01-28 2018-05-11 华为技术有限公司 辅助视频补充信息承载方法、处理方法、装置与系统
EP2730088A4 (en) * 2011-07-05 2015-04-01 Ericsson Telefon Ab L M REFERENCE IMAGE MANAGEMENT FOR HISTORED VIDEO CONTENT
US10237565B2 (en) * 2011-08-01 2019-03-19 Qualcomm Incorporated Coding parameter sets for various dimensions in video coding
US9591318B2 (en) * 2011-09-16 2017-03-07 Microsoft Technology Licensing, Llc Multi-layer encoding and decoding
KR20130037194A (ko) * 2011-10-05 2013-04-15 한국전자통신연구원 비디오 부호화/복호화 방법 및 그 장치
WO2013106521A2 (en) * 2012-01-10 2013-07-18 Vidyo, Inc. Techniques for layered video encoding and decoding
TWI616087B (zh) * 2012-01-31 2018-02-21 Vid衡器股份有限公司 可縮放高效率視訊編碼(hevc)參考圖集(rps)傳訊
US20130222537A1 (en) * 2012-02-29 2013-08-29 Qualcomm Incorporated Bitstream extraction in three-dimensional video
KR20130107861A (ko) * 2012-03-23 2013-10-02 한국전자통신연구원 인터 레이어 인트라 예측 방법 및 장치
CN104205813B (zh) * 2012-04-06 2018-05-08 维德约股份有限公司 分层视频编码的等级信令
US9277533B2 (en) * 2012-05-17 2016-03-01 Vid Scale, Inc. Scalable video coding over simultaneous unicast/multicast LTE DL shared channel
CN104380745B (zh) * 2012-06-22 2018-04-27 联发科技股份有限公司 图层间与视图间自适应帧内预测方法及其装置
RU2641470C2 (ru) * 2012-06-28 2018-01-17 Сони Корпорейшн Устройство передачи/приема, способ и устройство кодирования/декодирования
CN104604236B (zh) * 2012-07-02 2017-12-15 诺基亚技术有限公司 用于视频编码的方法和装置
EP2898689B1 (en) * 2012-09-21 2020-05-06 Nokia Technologies Oy Method and apparatus for video coding
IN2015DN02130A (pt) * 2012-09-27 2015-08-14 Dolby Lab Licensing Corp
US9479779B2 (en) 2012-10-01 2016-10-25 Qualcomm Incorporated Sub-bitstream extraction for multiview, three-dimensional (3D) and scalable media bitstreams
US9781413B2 (en) * 2012-10-02 2017-10-03 Qualcomm Incorporated Signaling of layer identifiers for operation points
US9942545B2 (en) * 2013-01-03 2018-04-10 Texas Instruments Incorporated Methods and apparatus for indicating picture buffer size for coded scalable video
US9532067B2 (en) * 2013-04-05 2016-12-27 Sharp Kabushiki Kaisha Decoding of inter-layer reference picture set and reference picture list construction
KR20140122202A (ko) * 2013-04-05 2014-10-17 삼성전자주식회사 계층 식별자 확장에 따른 비디오 스트림 부호화 방법 및 그 장치, 계층 식별자 확장에 따른 따른 비디오 스트림 복호화 방법 및 그 장치
US9351009B2 (en) * 2013-04-05 2016-05-24 Sharp Kabushiki Kaisha Marking pictures for inter-layer prediction
US9591321B2 (en) * 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets
WO2014166328A1 (en) * 2013-04-08 2014-10-16 Mediatek Singapore Pte. Ltd. Method and apparatus for quantization matrix signaling and representation in scalable video coding
US10595031B2 (en) * 2013-07-12 2020-03-17 Qualcomm Incorporated Selection of target output layers in high efficiency video coding extensions
JP6352383B2 (ja) * 2013-07-14 2018-07-04 シャープ株式会社 復号方法及び復号装置
US9525883B2 (en) * 2013-07-15 2016-12-20 Qualcomm Incorporated Cross-layer alignment of intra random access point pictures
WO2015009009A1 (ko) * 2013-07-15 2015-01-22 주식회사 케이티 스케일러블 비디오 신호 인코딩/디코딩 방법 및 장치
US9894357B2 (en) * 2013-07-30 2018-02-13 Kt Corporation Image encoding and decoding method supporting plurality of layers and apparatus using same
JP5789004B2 (ja) * 2013-08-09 2015-10-07 ソニー株式会社 送信装置、送信方法、受信装置、受信方法、符号化装置および符号化方法
US9819941B2 (en) 2013-10-10 2017-11-14 Qualcomm Incorporated Signaling for sub-decoded picture buffer (sub-DPB) based DPB operations in video coding
JPWO2015053330A1 (ja) * 2013-10-10 2017-03-09 シャープ株式会社 画像復号装置
US9648333B2 (en) * 2013-10-11 2017-05-09 Vid Scale, Inc. High level syntax for HEVC extensions
US20160255353A1 (en) * 2013-10-11 2016-09-01 Sharp Kabushiki Kaisha Highest temporal sub-layer list
US9930351B2 (en) * 2013-10-11 2018-03-27 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for transcoding a video bitstream
US10187662B2 (en) * 2013-10-13 2019-01-22 Sharp Kabushiki Kaisha Signaling parameters in video parameter set extension and decoder picture buffer operation
US20150103924A1 (en) * 2013-10-13 2015-04-16 Sharp Laboratories Of America, Inc. On operation of decoded picture buffer for interlayer pictures
WO2015056158A1 (en) * 2013-10-14 2015-04-23 Nokia Technologies Oy Multi-layer hypothetical reference decoder
MX360338B (es) * 2013-10-29 2018-10-30 Kt Corp Metodo y dispositivo de codificacion/decodificacion de señal de video de multiples capas.

Also Published As

Publication number Publication date
CN105612752A (zh) 2016-05-25
BR112016008374A2 (pt) 2017-08-01
EP3058743B1 (en) 2022-05-25
MX2016004721A (es) 2016-07-26
MX364544B (es) 2019-04-30
JP6700176B2 (ja) 2020-05-27
KR20160070769A (ko) 2016-06-20
KR102054040B1 (ko) 2019-12-09
CN105612752B (zh) 2018-11-02
JP2016539544A (ja) 2016-12-15
US20150103888A1 (en) 2015-04-16
EP3058743A1 (en) 2016-08-24
US10284858B2 (en) 2019-05-07
WO2015057787A1 (en) 2015-04-23

Similar Documents

Publication Publication Date Title
BR112016008374B1 (pt) Suporte de extração em múltiplos modos para codecs de vídeo de múltiplas camadas
ES2727814T3 (es) Estructura sintáctica de parámetros de descodificador hipotético de referencia
KR101652208B1 (ko) 비디오 코딩에서의 비트스트림 속성들
ES2748561T3 (es) Unidades de acceso IRAP y conmutación y empalme de flujos de bits
ES2758503T3 (es) Parámetros de descodificador de referencia hipotético en codificación de vídeo
DK2904798T3 (en) VIDEO DATA FILE FORMAT
BR112015015802B1 (pt) Mensagens sei não aninhadas em codificação de vídeo
BR112016025100B1 (pt) Método e dispositivo para decodificar dados de vídeo de várias camadas, assim como memória legível por computador
BR112016007916B1 (pt) Sinalização para armazenamento temporário de figuração subdecodificada (sub-dpb) com base em operações de dpb em codificação de vídeo
BR112018007529B1 (pt) Alinhamento de grupo de amostra de ponto de operação em formato de arquivo de fluxos de bits de multicamada
JP6452798B2 (ja) ビデオコーディング拡張の搬送のためのトランスポートストリーム
BR112016008953B1 (pt) Condução de dados de fluxo de bits com extensão- padrão de codificação de vídeo com o uso de sistemas de mpeg-2
BR112017007298B1 (pt) Método e dispositivo para processamento de um fluxo de bits incluindo dados de vídeo de codificação de vídeo de alta eficiência, hevc, e memória legível por computador

Legal Events

Date Code Title Description
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]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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