BR112016022200B1 - Método para decodificar dados de vídeo, método e aparelho para codificar dados de vídeo e memória legível por computador - Google Patents
Método para decodificar dados de vídeo, método e aparelho para codificar dados de vídeo e memória legível por computador Download PDFInfo
- Publication number
- BR112016022200B1 BR112016022200B1 BR112016022200-8A BR112016022200A BR112016022200B1 BR 112016022200 B1 BR112016022200 B1 BR 112016022200B1 BR 112016022200 A BR112016022200 A BR 112016022200A BR 112016022200 B1 BR112016022200 B1 BR 112016022200B1
- Authority
- BR
- Brazil
- Prior art keywords
- layer
- sei message
- video
- sei
- unit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 110
- 238000004891 communication Methods 0.000 claims description 17
- 230000001419 dependent effect Effects 0.000 claims 1
- 239000010410 layer Substances 0.000 description 380
- 238000012545 processing Methods 0.000 description 100
- 238000003860 storage Methods 0.000 description 28
- 230000003139 buffering effect Effects 0.000 description 27
- 230000002123 temporal effect Effects 0.000 description 20
- 238000005538 encapsulation Methods 0.000 description 19
- 238000013139 quantization Methods 0.000 description 18
- 239000013598 vector Substances 0.000 description 17
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 16
- 238000010586 diagram Methods 0.000 description 16
- 238000012805 post-processing Methods 0.000 description 12
- 230000006835 compression Effects 0.000 description 10
- 238000007906 compression Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- FMYKJLXRRQTBOR-UBFHEZILSA-N (2s)-2-acetamido-4-methyl-n-[4-methyl-1-oxo-1-[[(2s)-1-oxohexan-2-yl]amino]pentan-2-yl]pentanamide Chemical group CCCC[C@@H](C=O)NC(=O)C(CC(C)C)NC(=O)[C@H](CC(C)C)NC(C)=O FMYKJLXRRQTBOR-UBFHEZILSA-N 0.000 description 9
- 230000001174 ascending effect Effects 0.000 description 8
- 238000000638 solvent extraction Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 230000000750 progressive effect Effects 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000000153 supplemental effect Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 101100393868 Arabidopsis thaliana GT11 gene Proteins 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 241000985610 Forpus Species 0.000 description 1
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
- H04N19/37—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability with arrangements for assigning different transmission priorities to video input data or to video coded data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/187—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scalable video layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/88—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving rearrangement of data among different coding units, e.g. shuffling, interleaving, scrambling or permutation of pixel data or permutation of transform coefficient data among different blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/89—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
USO DE MENSAGENS SEI HASH DE IMAGEM DECODIFICADA POR HEVC PARA CODECS DE MÚLTIPLAS CAMADAS. Em um exemplo, um método de codificação de dados de vídeo inclui codificação de uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação de não vídeo (VCL) de uma camada de um fluxo de bits de múltiplas camadas, em que a uma ou mais unidades de NAL não VCL contêm uma mensagem SEI hash de imagem decodificada. O método também inclui determinar um conjunto de camadas do fluxo de bits de múltiplas camadas ao qual é aplicável a mensagem SEI hash de imagem decodificada com base em um identificador de camada da uma ou mais unidades de NAL não VCL contendo a mensagem SEI hash de imagem decodificada.
Description
[0001] Este pedido reivindica o benefício do Pedido de Patente US provisório n° 61/969,797, depositado em 24 de março de 2014, cujo conteúdo inteiro é aqui incorporado por referência.
[0002] A presente invenção se refere em geral à codificação e compressão de vídeo, e à sinalização de dados associados com vídeo comprimido em um fluxo de bits.
[0003] As capacidades de vídeo digital podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisões digitais, sistemas de transmissão direta digital, sistemas de transmissão sem fio, assistentes pessoais digitais (PDAs), laptop ou computadores de mesa, tablets, leitores de e-book, câmeras digitais, dispositivos de gravação de vídeo digital, reprodutores de mídia digital, dispositivos de vídeo game, consoles de vídeo game, telefones celulares ou telefones por rádio satélite, os assim chamados “smartphones”, dispositivos de videoconferência, dispositivos de transferência de vídeo e similares. Os dispositivos de vídeo digital implementam as técnicas de codificação de vídeo, tais como aquelas descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação avançada de vídeo (AVC), padrão 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, codificar, decodificar e/ou armazenar informações de vídeo digital de modo mais eficiente através da implementação de tais técnicas de compressão de vídeo.
[0004] Técnicas de compressão de vídeo realizam predição espacial (intraimagem) e/ou predição temporal (interimagem) para reduzir ou remover a redundância inerente nas sequências de vídeo. Para codificação de video baseada em blocos, uma fatia do vídeo (por exemplo, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser dividida em blocos de vídeo, os quais também podem ser referidos como treeblocks, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados usando a predição espacial com 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 a predição espacial com referência a amostras de referência em blocos próximos na mesma imagem ou predição temporal com referência a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e imagens de referência podem ser referidas como quadros de referência.
[0005] A prediçã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 é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco preditivo, e os dados residuais indicando a diferença entre o bloco codificado e o bloco preditivo. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados do domínio de pixel em um domínio de transformada, resultando em coeficientes de transformada residuais, os quais podem ser então quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em um arranjo bidimensional, podem ser digitalizados de modo a produzir um vetor unidimensional de coeficientes de transformada e a codificação de entropia pode ser aplicada para alcançar ainda mais compressão.
[0006] Aspectos desta divulgação são direcionados a técnicas para a aplicação de mensagens de camada de realce suplementar (SEI) que são definidas no padrão de Codificação de Vídeo de Alta Eficiência (HEVC) em um contexto de múltiplas camadas. Por exemplo, as técnicas da presente invenção podem incluir alterações e / ou limitações para uma variedade de sintaxe de mensagem SEI apresentada em FIEVC a ser aplicada na codificação vídeo de múltiplas camadas, por exemplo, usando as extensões para o padrão HEVC como uma extensão da Codificação de Vídeo Multivista para HEVC (MV-HEVC) ou uma extensão da Codificação de Vídeo Escalável (SVC) para HEVC (SHVC). Em alguns casos, as técnicas podem melhorar a eficiência computacional e / ou resiliência de erro de tais codecs de múltiplas camadas.
[0007] Em um exemplo, um método de codificação de dados de vídeo inclui a obtenção de uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação de vídeo (VCL) de uma unidade de acesso e uma primeira camada de um fluxo de bits de múltiplas camadas de dados de vídeo, e apenas a codificação de uma ou mais unidades de NAL não-VCL contendo uma mensagem SEI aplicável às unidades de NAL VCL da primeira camada, juntamente com as unidades de NAL VCL da primeira camada, de modo que no interior da unidade de acesso o fluxo de bits não contém quaisquer imagens codificadas de qualquer outra camada do fluxo de bits de múltiplas camadas entre as unidades de NAL VCL da primeira camada e as unidades de NAL não VCL contendo a mensagem SEI aplicável às unidades de NAL VCL da primeira camada.
[0008] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui uma memória configurada para armazenar pelo menos uma parte de um fluxo de bits de múltiplas camadas de dados de vídeo, e um ou mais processadores configurados para obter uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação de vídeo (VCL) de uma unidade de acesso e uma primeira camada do fluxo de bits de múltiplas camadas de dados de vídeo, e apenas codificar uma ou mais unidades de NAL não VCL contendo uma mensagem SEI aplicável às unidades de NAL VCL da primeira camada, juntamente com as unidades de NAL VCL da primeira camada, de modo que, dentro da unidade de acesso, o fluxo de bits não contém quaisquer imagens codificadas de qualquer outra camada do fluxo de bits de múltiplas camadas entre as unidades de NAL VCL da primeira camada e as unidades de NAL não VCL contendo a mensagem SEI aplicável às unidades de NAL VCL da primeira camada.
[0009] Em outro exemplo, um aparelho para codificação de dados de vídeo inclui meios para obtenção de uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação de vídeo (VCL) de uma unidade de acesso e uma primeira camada de um fluxo de bits de múltiplas camadas de dados de vídeo, e meios apenas codificar uma ou mais unidades de NAL não VCL contendo um mensagem SEI aplicável às unidades de NAL VCL da primeira camada, juntamente com as unidades de NAL VCL da primeira camada, de modo que, dentro da unidade de acesso, o fluxo de bits não contém quaisquer imagens codificadas de qualquer outra camada do fluxo de bits de múltiplas camadas entre as unidades de NAL VCL da primeira camada e as unidades de NAL não VCL contendo a mensagem SEI aplicável às unidades de NAL VCL da primeira camada.
[0010] Em outro exemplo, um meio legível por computador não transitório tem instruções nele armazenadas que, quando executadas, levam um ou mais processadores a obter uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação de vídeo (VCL) de uma unidade de acesso e uma primeira camada de um fluxo de bits de múltiplas camadas de dados de vídeo, e apenas codificar uma ou mais unidades de NAL não VCL contendo uma mensagem SEI aplicável às unidades de NAL VCL da primeira camada, juntamente com as unidades de NAL VCL da primeira camada, de tal forma que, dentro da unidade de acesso, o fluxo de bits não contém quaisquer imagens codificadas de qualquer outra camada do fluxo de bits de múltiplas camadas entre as unidades de NAL VCL da primeira camada e as unidades de NAL não VCL contendo a mensagem SEI aplicável para às unidades de NAL VCL da primeira camada.
[0011] Em outro exemplo, um método de codificação de dados de vídeo inclui a codificação de uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação não vídeo (VCL) de uma camada de um fluxo de bits de múltiplas camadas, em que a uma ou mais unidades de NAL não VCL contêm uma mensagem SEI hash de imagem decodificada, e a determinação de um conjunto de camadas do fluxo de bits de múltiplas camadas, ao qual é aplicável a mensagem SEI hash de imagem decodificada com base em um identificador de camada da uma ou mais unidades de NAL não VCL contendo a mensagem SEI hash de imagem decodificada.
[0012] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui uma memória configurada para armazenar pelo menos uma parte de um fluxo de bits de múltiplas camadas, e um ou mais processadores configurados para codificar um ou mais unidades da camada de abstração de rede (NAL) da camada de codificação não vídeo (VCL) de uma camada de um fluxo de bits de múltiplas camadas, em que a uma ou mais unidades de NAL não VCL contêm uma mensagem SEI hash de imagem decodificada, e determinar um conjunto de camadas do fluxo de bits de múltiplas camadas, ao qual se aplica a mensagem SEI hash de imagem decodificada, com base em um identificador de camada da uma ou mais unidades de NAL não VCL contendo a mensagem SEI hash de imagem decodificada.
[0013] Em outro exemplo, um aparelho para codificação de dados de vídeo inclui meios para codificação de uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação não vídeo (VCL) de uma camada de um fluxo de bits de múltiplas camadas, em que a uma ou mais unidades de NAL não VCL contêm uma mensagem SEI hash de imagem decodificada, e meios para determinar um conjunto de camadas de fluxo de bits de múltiplas camadas ao qual se aplica a mensagem SEI hash de imagem decodificada com base em um identificador de camada das uma ou mais unidades de NAL não VCL contendo a mensagem SEI hash de imagem decodificada.
[0014] Em outro exemplo, um meio legível por computador não transitório tem instruções nele armazenadas que, quando executado, levam um ou mais processadores a codificar uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação não vídeo (VCL) de uma camada de um fluxo de bits de múltiplas camadas, em que a uma ou mais unidades de NAL não VCL contêm uma mensagem SEI hash de imagem decodificada, e determinar um conjunto de camadas do fluxo de bits de múltiplas camadas ao qual se aplica a mensagem SEI hash de imagem decodificada, com base em um identificador de camada da uma ou mais unidades de NAL não VCL contendo a mensagem SEI hash de imagem decodificada.
[0015] Em outro exemplo, um método de codificação de dados de vídeo inclui codificar uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação não vídeo (VCL) de uma camada de um fluxo de bits de múltiplas camadas de dados de vídeo, em que a uma ou mais unidades de NAL não VCL contêm um mensagem SEI que tem um tipo de carga útil SEI, e determinar um ou mais valores de sintaxe do fluxo de bits de múltiplas camadas, ao qual se aplica a mensagem SEI com base no tipo de carga útil SEI.
[0016] Em outro exemplo, um dispositivo para codificação de dados de vídeo inclui uma memória configurada para armazenar uma camada de um fluxo de bits de múltiplas camadas, e um ou mais processadores configurados para codificar uma ou mais unidades da camada de abstração de rede da camada de codificação não vídeo (VCL) de uma camada de um fluxo de bits de múltiplas camadas de dados de vídeo, em que a uma ou mais unidades de NAL não VCL contém uma mensagem SEI com um tipo de carga útil SEI, e determinar um ou mais valores de sintaxe do fluxo de bits de múltiplas camadas, ao qual se aplica a mensagem SEI com base no tipo de carga útil de SEI.
[0017] Em outro exemplo, um aparelho para codificação de dados de vídeo inclui meios para codificação de um ou mais unidades da camada de abstração de rede (NAL) da camada de codificação não vídeo (VCL) de uma camada de um fluxo de bits de múltiplas camadas de dados de vídeo, em que a uma ou mais unidades de NAL não VCL contêm uma mensagem SEI com um tipo de carga útil SEI, e meios para determinar um ou mais valores de sintaxe do fluxo de bits de múltiplas camadas, ao qual a mensagem se aplica a mensagem SEI com base no tipo de carga útil SEI.
[0018] Em outro exemplo, um meio legível por computador não transitório tem instruções nele armazenados que, quando executadas, levam um ou mais processadores a codificar uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação não vídeo (VCL) de uma camada de um fluxo de bits de múltiplas camadas de dados de vídeo, em que a uma ou mais unidades de NAL não VCL contêm uma mensagem SEI com um tipo de carga útil SEI, e determinar um ou mais valores de sintaxe do fluxo de bits de múltiplas camadas, ao qual se aplica a mensagem SEI com base no tipo de carga útil SEI.
[0019] Os detalhes de um ou mais exemplos da invenção são estabelecidos nos desenhos anexos e na descrição abaixo. Outros recursos, objetos e vantagens serão evidentes a partir da descrição, desenhos e reivindicações.
[0020] A FIG. 1 é um diagrama em blocos que ilustra um sistema de codificação e decodificação de vídeo exemplificativo que pode utilizar as técnicas descritas na presente invenção.
[0021] A FIG. 2 é um diagrama em blocos que ilustra um codificador de vídeo exemplificativo que pode implementar as técnicas descritas na presente invenção.
[0022] A Fig. 3 é um diagrama em blocos que ilustra um decodificador de vídeo exemplificativo que pode implementar as técnicas descritas na presente invenção.
[0023] A FIG. 4 é um diagrama em blocos que ilustra uma unidade de encapsulamento exemplificativa, em que um ou mais aspectos da presente invenção podem ser implementados.
[0024] A FIG. 5 é um diagrama em blocos que ilustra uma rede exemplificativa, em que um ou mais aspectos da presente invenção podem ser implementados.
[0025] A FIG. 6 é um diagrama de fluxo que ilustra uma operação exemplificativa de um dispositivo de processamento de vídeo configurado para codificar uma mensagem SEI de acordo com vários aspectos das técnicas descritas nesta invenção.
[8026] A FIG. 7 representa um diagrama de fluxo que ilustra outra operação exemplificativa de um dispositivo de processamento de vídeo configurado para codificar uma mensagem SEI de acordo com vários aspectos das técnicas descritas nesta invenção.
[0027] A FIG. 8 é um diagrama de fluxo que ilustra outra operação exemplificativa de um dispositivo de processamento de vídeo configurado para codificar uma mensagem SEI de acordo com vários aspectos das técnicas descritas nesta invenção.
[0028] Esta invenção inclui técnicas para aplicar mensagens da camada de realce suplementar (SEI) que são definidas no padrão de Codificação de Vídeo de Alta Eficiência (HEVC) em um contexto de múltiplas camadas. Em alguns casos, as técnicas podem ser realizadas com extensões de múltiplas camadas para o padrão HEVC tal como uma extensão da codificação de vídeo multivista para HEVC (MV-HEVC) ou uma extensão da Codificação de Vídeo Expansível (SVC) para HEVC (SHVC), conforme observado abaixo. As técnicas da presente descrição, no entanto, não são limitadas a qualquer padrão de codificação de vídeo em particular, e podem também, ou em alternativa, ser utilizadas com outras extensões para HEVC, outros padrões de codificação multivista e / ou outros padrões de vídeo de múltiplas camadas. Além disso, as técnicas da presente descrição, como descrito abaixo, podem ser aplicadas de forma independente ou em combinação.
[0029] Uma “camada” de dados de vídeo pode em geral referir-se a uma sequência de imagens com pelo menos uma característica comum, tal como uma vista, uma taxa de quadros, um resolução, ou semelhante. Por exemplo, uma camada pode incluir dados de vídeo associados com uma vista particular (por exemplo, perspectiva) de dados de vídeo multivista. Como outro exemplo, uma camada pode incluir dados de vídeo associados com uma camada especial de dados de vídeo escaláveis. Assim, esta invenção pode indiferentemente referir-se a uma camada e uma vista de dados de vídeo. Isto é, uma vista de dados de vídeo pode ser referida como uma camada de dados de vídeo, e vice- versa, e uma pluralidade de vistas, ou uma pluralidade de camadas escaláveis pode ser referida, de um modo semelhante, como múltiplas camadas, por exemplo, em um sistema de codificação baseada em múltiplas camadas. Além disso, um codec de múltiplas camadas (também referido como um codificador de vídeo de múltiplas camadas ou codificador-decodificador de múltiplas camadas) pode referir-se a um codec multivista ou um codec escalável (por exemplo, um codec configurado para codificar e / ou decodificar dados de vídeo usando MV-HEVC, SHVC, ou outra técnica de codificação baseada em múltiplas camadas).
[0030] Um fluxo de bits de múltiplas camadas pode incluir uma camada de base e uma ou mais camadas não base, por exemplo, em SHVC, ou uma pluralidade de vistas, por exemplo, em VM-HEVC. Em um fluxo de bits escalável, a camada de base pode tipicamente ter um identificador de camadas que é igual a zero. Uma camada não base pode ter um identificador de camada que é maior do que zero, e pode fornecer dados de vídeo adicionais que não estão incluídos na camada de base. Por exemplo, uma camada não base de dados de vídeo multivista pode incluir uma visão adicional de dados de vídeo. Uma camada não base de dados de vídeo escaláveis pode incluir uma camada adicional de dados de vídeo escaláveis. Uma camada não base pode ser alternadamente referida como uma camada de aumento.
[0031] Uma unidade de acesso (às vezes abreviada como UA) de um fluxo de bits de múltiplas camadas é geralmente uma unidade de dados incluindo todos os componentes da camada (por exemplo, todas as unidades da camada de abstração de rede (NAL)) para um caso temporal comum. Os componentes da camada de uma unidade de acesso são geralmente destinados a serem emitidos juntos (isto é, emitidos substancialmente simultaneamente), em que a saída de uma imagem geralmente envolve a transferência de imagens a partir de um buffer de imagem decodificada (DPB) (por exemplo, o armazenamento de imagens do DPB para uma memória externa, enviando as imagens do DPB a um visor, ou similar).
[0032] Um fluxo de bits que contém uma representação codificada de dados de vídeo pode incluir uma série de unidades da camada de abstração de rede (NAL). Uma unidade de NAL pode ser uma estrutura de sintaxe que contém uma indicação do tipo de dados na unidade de NAL e bytes que contêm os dados sob a forma de uma carga útil de sequência de bytes (RBSP) intercalados conforme necessário, com bits de prevenção de emulação. As unidades de NAL podem incluir unidades de NAL da camada de codificação de vídeo unidades (VCL) e Unidades da NAL não VCL. As unidades de NAL VCL podem incluir fatias codificadas de imagens. Uma unidade de NAL não VCL pode encapsular um conjunto de parâmetros de vídeo (VPS), um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS), um ou mais mensagens de informação de realce suplementar (SEI), ou outros tipos de dados.
[0033] Unidades da NAL do fluxo de bits podem ser associadas com diferentes camadas do fluxo de bits. Em SHVC, como notado acima, camadas diferentes de uma camada de base camadas podem ser referidas como “camadas de aumento” e podem incluir dados que melhoram a qualidade de reprodução dos dados de vídeo. Em codificação multivista e codificação de vídeo 3-dimensional (3DV), tal como MV-HEVC, as camadas podem incluir dados associados com diferentes vistas. Cada camada do fluxo de bits está associada com um identificador de camada diferente,
[0034] Além disso, unidades de NAL podem incluir identificadores temporais. Cada ponto de operação de um fluxo bits tem um conjunto de identificadores de camada e um identificador temporal. Se uma unidade de NAL especifica um identificador de camada no conjunto de identificadores de camada para um ponto de operação e o identificador temporal da unidade de NAL é inferior ou igual ao identificador temporal do ponto de funcionamento, a unidade de NAL está associada com o ponto de operação.
[0035] O mecanismo de SEI suportado tanto em H.264 / AVC quanto HEVC permite aos codificadores de vídeo incluir tais metadados no fluxo de bits que não são necessários para a correta decodificação, por um decodificador de vídeo ou outro dispositivo, dos valores de amostra das imagens de saída, mas pode ser utilizado para vários outros fins, tal como tempo de saída de imagem, exibição, assim como a detecção de perda e dissimulação. Uma unidade de NAL que encapsula uma ou mais mensagens SEI é aqui referida como uma unidade de NAL SEI. Um tipo de mensagem SEI é uma mensagem SEI de aninhamento escalável.Uma mensagem SEI de aninhamento escalável é uma mensagem SEI que contém um ou mais mensagens SEI adicionais. A mensagem SEI de aninhamento escalável pode ser usada para indicar se uma mensagem SEI se aplica a camadas ou subcamadas temporais de um fluxo de bits de múltiplas camadas. Uma mensagem SEI que não está contida em uma mensagem SEI de aninhamento escalável é aqui referida como uma mensagem SEI não aninhada.
[0036] Certos tipos de mensagens SEI contêm informações que só se aplicam a determinados pontos de operação. Um ponto de operação de um fluxo de bits é associado com um conjunto de identificadores de camada e um identificador temporal. Uma representação do ponto de operação pode incluir cada unidade de NAL que é associada a um ponto de operação. Uma representação de ponto de operação pode ter uma taxa de quadros e / ou taxa de bits diferente de uma taxa de bits original. Isto é porque a representação do ponto de operação não pode incluir algumas imagens e / ou alguns dos dados do fluxo de bits original.
[0037] Mensagens SEI de período de buffering, mensagens SEI de tempo de imagem e mensagens SEI da unidade de decodificação só podem ser aplicáveis a determinados pontos de operação. Assim, a fim de utilizar a informação em tais mensagens SEI, um processador de vídeo pode determinar quais pontos de operação são aplicáveis às mensagens SEI. Outros tipos de mensagens SEI são aplicáveis apenas a camadas particulares. Assim, a fim de utilizar a informação em tais mensagens SEI, o processador de vídeo pode determinar quais camadas são aplicáveis às mensagens SEI.
[0038] O uso genérico de mensagens SEI para HEVC no contexto da codificação baseada em múltiplas camadas pode apresentar vários desafios. Por exemplo, como descrito em maiores detalhes a seguir, aplicar as mensagens SEI especificadas em HEVC a múltiplas camadas pode aumentar a complexidade, criar inconsistências de sintaxe, e / ou criar outros erros que levam um codec de vídeo de múltiplas camadas ao mau funcionamento.
[0039] Em alguns exemplos, as técnicas desta invenção podem fornecer soluções para resolver uma variedade de questões relacionadas com o uso genérico de mensagens SEI para HEVC. Por exemplo, as técnicas podem incluir a aplicação de restrições sobre certos elementos de sintaxe, de tal forma que um codificador de vídeo ou decodificador de vídeo codifica automaticamente (ou determina automaticamente, sem codificação) valores para os determinados elementos de sintaxe com base em características de um fluxo de bits de múltiplas camadas.
[0048] A FIG. 1 é um diagrama em blocos que ilustra um sistema de codificação e decodificação de vídeo 10 exemplificativo que pode utilizar as técnicas descritas na presente invenção. Como mostrado na FIG. 1, o sistema 10 inclui um dispositivo de origem 12 que gera dados de vídeo codificados para serem decodificados em um momento posterior por um dispositivo de destino 14. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um de uma ampla variedade de dispositivos, incluindo computadores de mesa, notebook (ou seja, computador portátil), tablets, set-top boxes, aparelhos de telefone portáteis, como os chamados “smart” phones, os assim chamados “smart” pads, televisores, câmeras, dispositivos de exibição, leitores de mídia digitais, consoles de jogos de vídeo, dispositivos de streaming de vídeo, ou algo semelhante. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicações sem fios.
[0041] O dispositivo de destino 14 pode receber os dados de vídeo codificados para serem decodificados por meio de uma ligação 16. A ligação 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados a partir do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, a ligação 16 pode compreender um meio de comunicação para permitir ao dispositivo de origem 12 transmitir dados de vídeo codificados diretamente ao dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com ou sem fios, tal como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações de base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação a partir do dispositivo de origem 12 para o dispositivo de destino 14.
[0042] Em alternativa, dados codificados podem ser produzidos a partir da interface de saída 22 para um dispositivo de armazenamento 32. Da mesma forma, dados codificados podem ser acessados a partir do dispositivo de armazenamento 32 pela interface de entrada. O dispositivo de armazenamento 32 pode incluir qualquer de uma variedade de meios de armazenamento de dados distribuídos ou localmente acessados, 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 adequados para armazenar dados de vídeo codificados. Em outro exemplo, o dispositivo de armazenamento 32 pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode conter o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir de dispositivo de armazenamento 32 via streaming ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo exemplificativos incluir um servidor de rede (por exemplo, para um site), um servidor FTP, dispositivos de armazenamento ligados à rede (NAS), ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma ligação à Internet. Isto pode incluir um canal sem fios (por exemplo, uma ligação Wi-Fi), uma ligação com fios (por exemplo, DSL, um modem por cabo, etc), ou uma combinação de ambos que seja adequada para acessar os dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento 32 pode ser uma transmissão ao vivo, uma transmissão de download, ou uma combinação de ambos.
[0043] As técnicas da presente descrição não são necessariamente limitadas a aplicações ou configurações sem fios. As técnicas podem ser aplicadas à codificação de vídeo em apoio de qualquer um de uma variedade de aplicações de multimídia, como transmissões de televisão over-the-air, transmissões televisivas por cabo, transmissões televisivas por satélite, transmissões de vídeo streaming, por exemplo, através da Internet, codificação de vídeo digital para armazenamento 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 10 pode ser configurado para suportar uma transmissão de vídeo de uma via ou duas vias para suportar aplicações como streaming de vídeo, reprodução de vídeo, transmissão de vídeo e / ou vídeo telefonia.
[0044] No exemplo da FIG. 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, codificador de vídeo 20, unidade de encapsulamento 21 e uma interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador / demodulador (modem) e / ou um transmissor. No dispositivo de origem 12, a fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, por exemplo, uma câmara de vídeo, um arquivo de vídeo contendo vídeo capturado anteriormente, uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo, e / ou um sistema de computação gráfica para gerar dados de computação gráfica como o vídeo de origem, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 é uma câmera de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 podem formar os chamados telefones com câmera ou telefones de vídeo. No entanto, as técnicas descritas na presente descrição podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicado para aplicações sem fios e / ou com fios.
[0045] O vídeo capturado, pré-capturado ou gerado por computador pode ser codificado por um codificador de vídeo 20. A unidade de encapsulamento 21 pode formar uma ou mais representações do conteúdo de multimídia, onde cada uma das representações pode incluir um ou mais camadas. Em alguns exemplos, o codificador de vídeo 20 pode codificar cada camada de diferentes maneiras, por exemplo, com diferentes taxas de quadros, taxas de bits diferentes, diferentes resoluções ou outras tais diferenças. Assim, a unidade de encapsulamento 21 pode formar várias representações que têm várias características, por exemplo, taxa de bits, taxa de quadros, resolução e assim por diante.
[0046] Cada uma das representações pode corresponder a respectivos fluxos de bits que podem ser recuperados pelo dispositivo de destino 14. A unidade de encapsulamento 21 pode fornecer uma indicação de um intervalo de identificadores de vista (view_id) para vistas incluídas em cada representação, por exemplo, dentro de uma estrutura de dados da descrição de apresentação de mídia (MPD) para o conteúdo de multimídia. Por exemplo, a unidade de encapsulamento 21 pode fornecer uma indicação de um identificador de vista máximo e um identificador de vista mínimo para as vistas de uma representação. O MPD pode ainda proporcionar indicações de números máximos de vistas direcionadas para emissão de cada uma de uma pluralidade de representações do conteúdo de multimídia. O MPD ou seus dados podem, em alguns exemplos, ser armazenados em um manifesto para a(s) representação(ões).
[0047] Os dados de vídeo codificados podem ser transmitidos diretamente ao dispositivo de destino 14 através da interface de saída 22 do dispositivo de origem 12. Os dados de vídeo codificados podem também (ou alternativamente) ser armazenados no dispositivo de armazenamento 32 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e / ou reprodução.
[0048] O dispositivo de destino 14 inclui uma interface de entrada 28, unidade de desencapsulamento 29, um decodificador de vídeo 30 e um dispositivo de exibição 31. Em alguns casos, a interface de entrada 28 pode incluir um receptor e / ou um modem. A interface de entrada 28 do dispositivo de destino 14 recebe os dados de vídeo codificados através da ligação 16. Os dados de vídeo codificados transmitidos através da ligação 16, ou fornecidos no dispositivo de armazenamento 32, podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20, para utilização por um decodificador de vídeo, tal como o decodificador de vídeo 30, na decodificação dos dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento, ou armazenados em um servidor de arquivos.
[0049] A unidade de desencapsulamento 29 do dispositivo de destino 14 pode representar uma unidade que desencapsula mensagens SEI a partir de um fluxo de bits (ou um subconjunto de um fluxo de bits, referido como um ponto de operação no contexto da codificação baseada em múltiplas camadas). A unidade de desencapsulamento 29 pode executar operações em uma ordem oposta à desempenhada pela unidade de encapsulamento 21 para desencapsular dados a partir do fluxo de bits codificados encapsulados, tais como mensagens SEI.
[0050] O dispositivo de exibição 31 pode ser integrado com, ou externo ao, dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de visualização integrado e também ser configurado para interagir com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de visualização 31 mostra os dados de vídeo decodificados a um usuário, e pode compreender qualquer um de uma variedade de dispositivos de exibição, tal como um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0051] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um de uma variedade de circuitos codificadores adequados, tal como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), matriz de portas programável em campo (FPGA), lógica discreta, software, hardware, firmware ou quaisquer suas combinações. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de leitura por computador não transitório adequado e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta invenção. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, cada um deles pode ser integrado como parte de um codificador / descodificador (CODEC) combinado em um respective dispositivo.
[0052] Embora não mostrado na FIG. 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 pode, cada um, ser integrado com um codificador e decodificador de áudio, e pode incluir unidades MUX-DEMUX apropriadas, ou outro hardware e software, para lidar com a codificação de áudio e vídeo em um fluxo de dados comum ou fluxos de dados separados. Se for o caso, em alguns exemplos, as unidades MUX-DEMUX podem estar em conformidade com o protocolo multiplexador ITU H.223, ou outros protocolos, tal como o protocolo de datagrama do usuário (UDP).
[0053] Essa descrição pode geralmente se referir ao codificador de vídeo 20 “sinalizando” determinadas informações para outro dispositivo, como o decodificador de vídeo 30. O termo “sinalização” podem geralmente se referir à comunicação de elementos de sintaxe e / ou outros dados utilizados para decodificar os dados de vídeo comprimidos. Essa comunicação pode ocorrer em tempo real ou quase real. Alternativamente, esta comunicação pode ocorrer ao longo de um período de tempo, tal como pode ocorrer quando armazenando elementos de sintaxe para um meio de armazenamento legível por computador, em um fluxo de bits codificado no momento da codificação, que pode então ser recuperado por um dispositivo de decodificação em qualquer momento após ser armazenado neste meio.
[0054] Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 operam de acordo com um padrão de compressão de vídeo, como ISO / IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO / IEC MPEG-4 AVC), incluindo sua extensão Codificação de Vídeo Escalável (SVC), a extensão Codificação de Vídeo Multivista (MVC) e a extensão 3DV baseada em MVC. Em outros exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com a Codificação de Vídeo de Alta Eficiência (HEVC), desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo (VCEG) do ITU-T e Grupo de Especialistas em Imagem em Movimento (MPEG). Um rascunho da norma HEVC é descrito em ITU-T H.265, High Efficiency Video Coding, de abril de 2014 e Wang et al., “High Efficiency Video Coding (HEVC) defect report 3”, Equipa de Colaboração Conjunta sobre Codificação de Vídeo (JCT-VC) do ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, documento JCTVC-P1003_vl, 16a Reunião, San Jose, Janeiro de 2014, Wang et al., “High Efficiency video Coding (HEVC) defect report 3”, Equipa de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do ITU-T SG16 WP3 e ISO / IEC JTC1 / SC29 / GT11, documento JCTVC-P1003_v1, 16° Encontro,San Jose, janeiro de 2014, que fornece um terceiro relatório de defeito para a Versão 1 de HEVC.
[0055] Além disso, há esforços em curso para produzir codificação de vídeo escalável, codificação multivista, e extensões 3DV para HEVC. A extensão da codificação de vídeo escalável de HEVC pode ser referida como SHEVC. Um recente Projeto de Trabalho (WD) de SHVC (referido como SHVC WD5 ou o SHVC WD atual a seguir) é descrita em Chen et al, “High Efficiency video Coding (HEVC) scalable extension draft 5”, Equipe conjunta de colaboração em Codificação de Vídeo (JCT-VC) do ITU-T SG 16 WP3 e ISO/IEC JTC1/SC29/GT11, documento JCTVC-P1008_v4, 16° Encontro, San Jose, janeiro de 2014. Um recente Projeto de Trabalho (WD) de MV-HEVC (referido como MV-HEVC WD7 ou o MV-HEVC WD7 atual a seguir) é descrito em Tech et al., “MV- HEVC Draft Text 7”, Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do ITU-T SG16 WP3 e ISO/IECJTC1/SC29/GT11, documento JCTVC-G1004_v7, 16° Encontro, San Jose, janeiro de 2014.
[0056] Em HEVC e outras especificações de codificação de vídeo, uma sequência de vídeo normalmente inclui uma série de imagens. As imagens também podem ser referidas como “quadros”. Uma imagem pode incluir três matrizes de amostra, indicadas SL, SCb e SCr. SL é uma matriz bidimensional (ou seja, um bloco) de amostras de luminância. SCb é uma matriz bidimensional de amostras de crominância Cb. SCr é uma matriz bidimensional de amostras de crominância Cr. Amostras de crominância também podem ser aqui referidas como amostras “croma”. Em outros casos, uma imagem pode ser monocromática e pode apenas incluir uma variedade de amostras de luminância.
[0057] Para gerar uma representação codificada de uma imagem, o codificador de vídeo 20 pode gerar um conjunto de unidades de codificação em árvore (CTUs). Cada uma das CTUs pode compreender um bloco de codificação em árvore de amostras de luminância, dois blocos de codificação em árvore correspondentes de amostras de crominância e estruturas de sintaxe usadas para codificar as amostras dos blocos de codificação em árvore. Em imagens monocromáticas ou imagens com três planos de cores separados, uma CTU pode compreender um único bloco de codificação em árvore e estruturas de sintaxe usadas para codificar as amostras do bloco de codificação em árvore. Um bloco de codificação em árvore pode ser um bloco NxN de amostras. Uma CTU também pode ser referida como um “bloco em árvore” ou uma “unidade de codificação maior” (LCU). As CTUs de HEVC podem ser amplamente análogas aos macroblocos de outros padrões, tal como H.264 / AVC. No entanto, uma CTU não é necessariamente limitada a um tamanho particular e pode incluir uma ou mais unidades de codificação (CUs). Uma fatia pode incluir um número inteiro de CTUs consecutivamente ordenadas em uma varredura na ordem raster.
[0058] Para gerar uma CTU codificada, o codificador de vídeo 20 pode executar de forma recursiva o particionamento em quad-tree quanto aos blocos de codificação em árvore de uma CTU para dividir os blocos codificação em árvore em blocos de codificação, daí o nome “unidades de codificação em árvore”. Um bloco de codificação pode ser um bloco NxN de amostras. Uma CU pode compreender um bloco de codificação de amostras de luminância e dois blocos de codificação correspondentes de amostras de crominância de uma imagem que tem uma matriz de amostra de luminância, uma matriz de amostra Cb e uma matriz de amostra Cr e estruturas de sintaxe usadas para codificar as amostras dos blocos de codificação. Em imagens monocromáticas ou imagens com três planos de cores separados, uma CU pode compreender um único bloco de codificação e estruturas de sintaxe usadas para codificar as amostras do bloco de codificação.
[0059] O codificador de vídeo 20 pode particionar um bloco de codificação de uma CU em um ou mais blocos de predição. Um bloco de predição é um bloco retangular de amostras (isto é, quadrado ou não quadrado), ao qual se aplicada a mesma predição. Uma unidade de predição (PU) de uma CU pode compreender um bloco de predição de amostras de luminância, dois blocos de predição correspondentes de amostras de crominância e estruturas de sintaxe usadas para predizer os blocos de predição. Em imagens monocromáticas ou imagens com três planos de cores separados, uma PU pode compreender um único bloco de predição e estruturas de sintaxe usadas para predizer o bloco de predição. O codificador de vídeo 20 pode gerar blocos preditivos de luminância, Cb e Cr para blocos de predição de luminância, Cb e Cr de cada PU da CU.
[0060] O codificador de vídeo 20 pode usar intrapredição ou interpredição para gerar os blocos preditivos para a PU. Se o codificador de vídeo 20 usa intrapredição para gerar os blocos preditivos de ums PU, o codificador de vídeo 20 pode gerar os blocos preditivos da PU com base em amostras decodificadas da imagem associada com a PU. Se o codificador de vídeo 20 usa interpredição para gerar os blocos preditivos de uma PU, o codificador de vídeo 20 pode gerar os blocos preditivos da PU com base em amostras decodificadas de um ou mais imagens diferentes da imagem associada com a PU.
[0061] Depois que o codificador de vídeo 20 gera blocos preditivos de luminância, Cb e Cr para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar um bloco residual de luminância para a CU. Cada amostra no bloco residual de luminância da CU indica uma diferença entre uma amostra de luminância em um dos blocos preditivos de luminância da Cu e uma amostra correspondente no bloco de codificação de luminância original da CU. Além disso, o codificador 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 preditivos de Cb da CU e uma amostra correspondente no bloco de codificação de Cb inicial da CU. O codificador de vídeo 20 pode também 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 preditivos de Cr da CU e uma amostra correspondente no bloco de codificação de Cr original da CU.
[0062] Além disso, o codificador de vídeo 20 pode usar o particionamento em quadtree para decompor os blocos residuais de luminância, Cb e Cr de uma CU em um ou mais blocos de transformada de luminância, Cb e Cr. Um bloco de transformar é um bloco retangular (por exemplo, quadrado ou não quadrado) de amostras ao qual se aplica a mesma transformada. Uma unidade de transformação (TU) de uma CU pode compreender um bloco de transformada de amostras de luminância, dois blocos de transformada correspondentes de amostras de crominância, e estruturas de sintaxe usadas para transformar a amostras de blocos de transformada. Assim, cada TU de uma CU pode ser associada com um bloco de transformada de luminância, um bloco de transformada de Cb e um bloco de transformada de Cr. O bloco de transformada de luminância associado à TU pode ser um sub-bloco do bloqueio residual de luminância 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. Em imagens monocromáticas ou imagens com três planos de cores separados, uma TU pode compreender um único bloco de transformada e estruturas de sintaxe usadas para transformar as amostras do bloco de transformada.
[0063] O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de luminância de uma TU para gerar um bloco de coeficiente de luminância para a TU. Um bloco de coeficientes pode ser uma matriz bidimensional de coeficientes de transformada. Um coeficiente de transformada pode ser uma quantidade escalar. O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de Cb de uma TU para gerar um bloco de coeficientes de Cb para a TU. O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de Cr de uma TU gerar um bloco de coeficientes de Cr para a TU. O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de Cr de uma TU para gerar um bloco de coeficiente de Cr para a TU.
[0064] Depois de gerar um bloco de coeficientes (por exemplo, um bloco de coeficientes de luminância, um bloco de coeficientes de Cb ou um bloco de coeficientes de Cr), o codificador de vídeo 20 pode quantificar o bloco de coeficientes. A quantização geralmente se refere a um processo em que os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes de transformada, proporcionando mais compressão. Depois que o codificador de vídeo 20 quantiza um bloco de coeficientes, o codificador de vídeo 20 pode codificar por entropia elementos de sintaxe que indicam os coeficientes de transformada quantizados. Por exemplo, o codificador de vídeo 20 pode executar Codificação Aritmética Binária Adaptativa ao Contexto (CABAC) sobre os elementos de sintaxe indicando coeficientes de transformada quantizados.
[0065] O codificador de vídeo 20 pode emitir um fluxo de bits que inclui uma sequência de bits que forma uma representação de imagens codificadas e dados associados. O fluxo de bits pode compreender uma sequência de unidades da 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 que contêm esses dados sob a forma de uma carga útil de sequência de bytes (RBSP) intercalados conforme necessário com os 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 de tipo de unidade de NAL. O código de tipo de 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 contendo um número inteiro de bytes que está encapsulado dentro de uma unidade de NAL. Em alguns casos, uma RBSP inclui zero bit.
[0066] Diferentes tipos de unidades de NAL podem encapsular diferentes tipos de RBSPs. Por exemplo, um primeiro tipo de unidade de NAL pode encapsular uma RBSP para um conjunto de parâmetros de imagem (PPS), um segundo tipo de unidade de NAL pode encapsular uma RBSP para uma fatia codificada, um terceiro tipo de unidade de NAL pode encapsular uma RBSP para SEI, e assim por diante. Unidades de NAL que encapsulam RBSPs para dados de codificação de vídeo (em oposição a RBSPs para conjuntos de parâmetros e mensagens SEI) podem ser referidas como unidades de NAL da camada de codificação de vídeo (VCL).
[0067] O decodificador de vídeo 30 pode receber um fluxo de bits gerado pelo codificador de vídeo 20. Além disso, o decodificador de vídeo 30 pode analisar o fluxo de bits para obter elementos de sintaxe a partir do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base, pelo menos em parte, nos elementos de sintaxe obtidos a partir do fluxo de bits. O processo para reconstruir os dados de vídeo pode ser em geral recíproco ao processo realizado pelo codificador de vídeo 20. Além disso, o decodificador de vídeo 30 pode quantizar de forma inversa blocos de coeficientes associados com TUs de uma CU corrente. O decodificador de vídeo 30 pode executar transformadas inversas sobre os blocos de coeficiente para reconstruir blocos de transformada associados às TUs da CU corrente. O decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU corrente, adicionando as amostras dos blocos preditivos para PUs da CU corrente para amostras correspondentes dos blocos de transformada das TUs da CU corrente. Ao reconstruir os blocos de codificação para cada CU de uma imagem, o decodificador de vídeo 30 pode reconstruir a imagem.
[0068] Em codificação multivista, pode haver várias vistas da mesma cena a partir de diferentes pontos de vista. Como notado acima, uma unidade de acesso inclui um conjunto de imagens que correspondem ao mesmo instante de tempo. Assim, os dados de vídeo podem ser conceituados como uma série de unidades de acesso que ocorrem ao longo do tempo. Um “componente de vista” pode ser uma representação codificada de uma vista em uma única unidade de acesso. Nesta invenção, uma “vista” pode referir-se a uma sequência de componentes de vista associados com o mesmo identificador de vista. Exemplos de tipos de componentes de vista incluem componentes de vista de textura e componentes de vista de profundidade.
[0069] A codificação multivista suporta predição intervista. A previsão intervista é semelhante à interpredição usada em HEVC e pode usar os mesmos elementos de sintaxe. No entanto, quando um codificador de vídeo realiza a predição intervista sobre uma unidade de vídeo corrente (tal como uma PU), o codificador de vídeo 20 pode utilizar, como uma imagem de referência, uma imagem que está na mesma unidade de acesso que a unidade de vídeo corrente, mas em uma vista diferente. Em contraste, interpredição convencional utiliza apenas imagens em diferentes unidades de acesso como imagens de referência.
[0070] Em codificação multivista, uma vista pode ser referida como uma “vita de base” se um decodificador de vídeo (por exemplo, o decodificador de vídeo 30) pode decodificar imagens na vista sem referência a imagens em qualquer outro ponto de vista. Ao codificar uma imagem em uma das vistas não base, um codificador de vídeo (como o codificador de vídeo 20 ou decodificador de vídeo 30) pode adicionar uma imagem em uma lista de imagem de referência se a imagem está em uma vista diferente, mas dentro de um mesmo caso de tempo (ou seja, unidade de acesso) que a imagem que o codificador de vídeo está codificando atualmente. Como outras imagens de referência de interpredição, o codificador de vídeo pode inserir uma imagem de referência de predição intervista em qualquer posição de uma lista de imagens de referência.
[0071] O mecanismo SEI suportado em ambos H.264 / AVC e HEVC permite a codificadores de vídeo (por exemplo, o codificador de vídeo 20) incluir tais metadados no fluxo de bits que não são necessários para correta decodificação dos valores de amostra das imagens de saída, mas podem ser usados para vários outros fins, tal como tempo de saída de imagem, exibição, assim como detecção de perda e ocultação. O codificador de vídeo 20 pode usar mensagens SEI para incluir, no fluxo de bits, metadados que não são necessários para correta decodificação dos valores de amostras de imagens. No entanto, o decodificador de vídeo 30 ou outros dispositivos podem utilizar os metadados incluídos em mensagens SEI para vários outros fins. Por exemplo, o decodificador de vídeo 30 ou outro dispositivo pode usar os metadados em mensagens SEI para tempo de emissão de imagem, exibição de quadro, detecção de perda e ocultação de erro.
[0072] O codificador de vídeo 20 pode incluir uma ou mais unidades de NAL SEI em uma unidade de acesso. Em outras palavras, qualquer número de unidades de NAL SEI pode ser associado com uma unidade de acesso. Além disso, cada unidade de NAL SEI pode conter uma ou mais mensagens SEI. Isto é, codificadores de vídeo podem incluir qualquer número de unidades de NAL SEI em uma unidade de acesso, e cada unidade de NAL SEI pode conter uma ou mais mensagens SEI. Uma unidade de NAL SEI pode incluir um cabeçalho de unidade de NAL e uma carga útil. O cabeçalho de unidade de NAL da unidade de NAL SEI inclui pelo menos um primeiro elemento de sintaxe e um segundo elemento de sintaxe. O primeiro elemento de sintaxe especifica um identificador de camada da unidade de NAL SEI. O segundo elemento de sintaxe especifica um identificador temporal da unidade de NAL SEI.
[0073] A mensagem SEI aninhada refere-se a uma mensagem SEI que está contida em uma mensagem SEI de aninhamento escalável. Uma mensagem SEI não aninhada refere-se a uma mensagem SEI que não está contida em uma mensagem SEI de aninhamento escalável. A carga útil da unidade de NAL de SEI pode compreender uma mensagem SEI aninhada ou uma mensagem SEI não aninhada.
[0074] O padrão HEVC descreve a sintaxe e semântica para vários tipos de mensagens SEI. No entanto, o padrão HEVC não descreve a manipulação das mensagens SEI porque as mensagens SEI não afetam o processo de decodificação normativa. Uma razão para ter mensagens SEI no padrão HEVC é permitir que dados complementares sejam interpretados de forma idêntica em diferentes sistemas usando HEVC. Especificações e sistemas que utilizam HEVC podem exigir codificadores de vídeo para gerar certas mensagens SEI ou podem definir a manipulação específica de determinados tipos de mensagens SEI recebidas.
[0075] A Tabela 1, abaixo, lista as mensagens SEI especificadas em HEVC e descreve brevemente os seus fins:TABELA 1. VISÃO GERAL DE MENSAGENS SEI
[0076] Um problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que uma unidade de NAL SEI contendo uma mensagem SEI que se aplica a uma camada com um identificador de camada (por exemplo, conforme identificado por um elemento de sintaxe nuh_layer_id do fluxo de bits) que é igual a uma primeira camada (layerIdA para fins de exemplo) tem permissão para seguir uma unidade de NAL VCL de uma imagem com um identificador de camada (nuh_layer_id) que é maior do que a primeira camada (layerIdA) dentro de uma unidade de acesso (AU) que contém imagens das camadas. Por exemplo, uma mensagem SEI pode ser separada no fluxo de bits a partir da imagem utilizando a mensagem SEI.
[0077] Em um exemplo para fins de ilustração, uma unidade de acesso pode incluir uma primeira imagem de uma primeira camada de um fluxo de bits de múltiplas camadas e uma segunda imagem de uma segunda camada de um fluxo de bits de múltiplas camadas. Em alguns casos, uma mensagem SEI que é aplicável à primeira imagem da primeira camada pode ser incluída com as unidades de NAL associadas com a segunda camada. Se uma unidade de NAL SEI está autorizada a ser incluída com as outras camadas de dados de vídeo, o codificador de vídeo 20 e / ou o decodificador de vídeo 30 pode ter que extrair a unidade de NAL SEI das outras camadas e armazenar a mensagem antes de codificar a unidade de acesso.
[0078] De acordo com um primeiro aspecto da presente invenção, uma unidade de NAL SEI contendo uma mensagem SEI que se aplica a uma camada com um identificador camada (nuh_layer_id) que é igual a uma primeira camada (layerIdA) não pode seguir qualquer unidade de NAL VCL, bem como suas unidades de NAL não VCL associadas de uma imagem com um identificador de camada (nuh_layer_id), que é maior do que a primeira camada (layerIdA) dentro da unidade de acesso. Por exemplo, de acordo com aspectos da presente invenção, a colocação de unidades de NAL SEI pode ser restringida de tal modo que uma unidade de NAL SEI está junto com a camada (ou camadas) às quais se aplica a unidade de NAL SEI no fluxo de bits de múltiplas camadas.
[0079] No exemplo acima, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode somente codificar uma ou mais unidades de NAL não VCL contendo uma mensagem SEI aplicável a unidades de NAL VCL de uma primeira camada, juntamente com as unidades de NAL VCL da primeira camada (por exemplo, codificar sucessivamente a unidade de NAL SEI e unidades de NAL VCL), de tal modo que o fluxo de bits não contém quaisquer imagens codificadas de qualquer outra camada do fluxo de bits de múltiplas camadas entre as unidades de NAL VCL da primeira camada e as unidades de NAL não VCL contendo a mensagem SEI aplicável às unidades de NAL VCL da primeira camada. Em alguns exemplos, tendo a unidade de SEI NAL juntamente em um fluxo de bits de múltiplas camadas com as imagens nas camadas às quais se aplica a unidade de NAL SEI pode ser benéfico, por exemplo, na minimização de armazenamento ou transmissão de sobrecarga durante o armazenamento e transmissão de unidades de NAL associadas em conjunto. Por exemplo, mantendo as unidades de NAL VCL e não VCL às quais se aplica as unidades de NAL não VCL juntas no fluxo de bits, o codificador de vídeo 20 e / ou o decodificador de vídeo 30 podem não ter que localizar e buscar as unidades de NAL não-VCL da memória antes de codificar as unidades de NAL VCL.
[0080] Um segundo problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que um conjunto de camadas aplicáveis de um fluxo de bits de múltiplas camadas para o qual uma mensagem SEI hash de imagem decodificada não está claramente especificada no padrão HEVC. A mensagem SEI hash de imagem decodificada fornece uma soma de verificação derivado dos valores de amostra de uma imagem decodificada. A mensagem hash de imagem decodificada pode ser utilizada para detectar se uma imagem foi corretamente recebida e decodificada.
[0081] De acordo com um segundo aspecto da presente invenção, o conjunto de camadas aplicáveis de uma mensagem SEI hash de imagem decodificada pode ser especificado para ser a camada com o identificador de camada (nuh_layer_id) que é igual ao identificador de camada (nuh_layer_id) da unidade de NAL SEI contendo a mensagem SEI e a mensagem SEI hash de imagem decodificada não pode ser aninhada. Por exemplo, de acordo com aspectos desta invenção, o codificador de vídeo 20 e / ou o decodificador de vídeo 30 pode apenas codificar uma mensagem SEI hash de imagem decodificada em uma unidade de NAL SEI como uma mensagem SEI não aninhada e a mensagem SEI hash de imagem decodificada se aplica apenas à camada que tem o mesmo identificador de camada (nuh_layer_id) da unidade de NAL SEI que contém a mensagem SEI.
[0082] No exemplo acima, o codificador de vídeo 20 e / ou o decodificador de vídeo 30 pode codificar uma ou mais unidades de NAL não VCL (por exemplo, unidades de NAL SEI) contendo uma mensagem SEI hash de imagem decodificada, e determinar um conjunto de camadas do fluxo de bits de múltiplas camadas, ao qual se aplica a mensagem SEI hash de imagem decodificada, com base em um identificador de camada da uma ou mais unidades de NAL não VCL contendo a mensagem SEI hash de imagem decodificada. O codificador de vídeo 20 e / ou o decodificador de vídeo 30 podem codificar um ou mais elementos de sintaxe que indicam o identificador de camada para a unidade de NAL SEI, tal como um elemento de sintaxe nuh_layer_id, de tal modo que a determinação do conjunto de camadas baseia-se no elemento de sintaxe. As técnicas podem, em alguns casos, aumentar a resiliência de erro e / ou reduzir a sobrecarga de armazenamento associada com mensagens SEI hash de imagem decodificada na codificação baseada em múltiplas camadas.
[0083] Um terceiro problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que o conjunto de camadas aplicáveis de uma mensagem SEI de conjuntos de parâmetros ativos não é claramente especificado na norma HEVC. A mensagem SEI de conjuntos de parâmetros ativos indica qual VPS está ativo para as unidades de NAL VCL da unidade de acesso associada com a mensagem SEI. A mensagem SEI também pode fornecer informações sobre qual SPS está ativo para as unidades de NAL VCL da unidade de acesso associada com a mensagem SEI, e outras informações relacionadas com conjuntos de parâmetros. Por exemplo, a mensagem SEI pode incluir a indicação de se a acessibilidade aleatória completa é suportada (por exemplo, quando suportada, todos os conjuntos de parâmetros necessários para decodificação das imagens restantes do fluxo de bits ao acessar de forma aleatória a partir do início da sequência de vídeo codificado atual descartando completamente todas as unidades de acesso anteriores em ordem de decodificação estão presentes no fluxo de bits restante e todas as imagens codificadas no fluxo de bits restantes podem ser corretamente decodificadas), ou se não existir nenhum conjunto de parâmetro dentro da sequência de vídeo codificada corrente que atualiza outro conjunto de parâmetros do mesmo tipo anterior em ordem de de4scodificação (por exemplo, uma atualização de um conjunto de parâmetros se refere ao uso do mesmo identificador de conjunto de parâmetros, mas com alguns outros parâmetros alterados).
[0084] De acordo com um terceiro aspecto da presente invenção, uma mensagem SEI de conjuntos de parâmetros ativos é definida para aplicação a todas as camadas no fluxo de bits. Além disso, a mensagem SEI de conjuntos de parâmetros ativos é impedida de ser aninhada. Neste exemplo, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode codificar uma ou mais unidades de NAL não VCL de um fluxo de bits de múltiplas camadas que contém uma mensagem SEI de conjuntos de parâmetros ativos, e determinar que a mensagem SEI de conjuntos de parâmetros ativos é aplicável a todas as camadas do fluxo de bits de múltiplas camadas com base em uma ou mais unidades de NAL não VCL contendo a mensagem SEI de conjunto de parâmetros ativos. Por exemplo, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode derivar automaticamente que a mensagem SEI de conjuntos de parâmetros ativos define se aplica a todas as camadas do fluxo de bits de múltiplas camadas em virtude do codificação da mensagem de SEI de conjuntos de parâmetros ativos. Em alguns casos, as técnicas podem reduzir a complexidade associada com as mensagens SEI de conjuntos de parâmetros ativos na codificação baseada em múltiplas camadas.
[0085] Um quarto problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que quando um elemento de sintaxe frame_field_info_present_flag é igual a um para uma mensagem SEI com informações de tempo de imagem, aninhada ou não aninhada, o conjunto de camadas aplicáveis não é claramente especificado para as informações de quandro- campo realizadas nos elementos de sintaxe pic_struct, source_scan_type e duplicate_flag. Por exemplo, um elemento de sintaxe frame_field_info_present_flag que é igual a um especifica que as mensagens SEI de tempo de imagem estão presentes para cada imagem e incluem os elementos de sintaxe pic_struct, source_scan_type e duplicate_flag. Em geral, o elemento de sintaxe pic_struct indica se uma imagem deve ser exibida como um quadro ou como um ou mais campos, o elemento de sintaxe source_can_type indica um tipo de digitalização (por exemplo, progressiva, entrelaçada ou desconhecida), e o elemento de sintaxe duplicate_flag indica que a imagem corrente é indicada para ser uma duplicata de uma imagem anterior em ordem de saída.
[0086] De acordo com um quarto aspecto da presente invenção, quando o elemento de sintaxe frame_field_info_present_flag é igual a um para uma mensagem SEI com informações de tempo de imagem, aninhada ou não aninhada, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode determinar automaticamente que as informações de quadro-campo realizadas nos elementos de sintaxe pic_struct, source_scan_type e duplicate_flag se aplicam às camadas em todos os pontos de operação aos quais se aplica a mensagem SEI de tempo de imagem. Deste modo, em alguns casos, as técnicas podem reduzir a complexidade e / ou melhorar a resiliência de erro quando se utiliza o elemento de sintaxe frame_field_info_present_flag na codificação baseada em múltiplas camadas.
[0087] Um quinto problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que uma mensagem SEI de conjuntos de parâmetros ativos pode ser aninhada em HEVC. No entanto, como notado acima, a mensagem SEI de conjuntos de parâmetros ativos é aplicável a todas as camadas. Por conseguinte, fornecer a flexibilidade da mensagem SEI de conjuntos de parâmetros ativos a ser aplicada a camadas particulares de um fluxo de bits de múltiplas camadas (por exemplo, utilizando uma mensagem SEI de aninhamento) pode aumentar desnecessariamente a complexidade do codificador de vídeo 20 e / ou decodificador de vídeo 30. Por exemplo, ao receber e decodificar uma mensagem SEI de aninhamento escalável, o decodificador de vídeo 30 pode ter que executar operações adicionais (por exemplo, versus mensagens SEI não aninhadas) para determinar as camadas aplicáveis para a mensagem SEI de aninhamento escalável.
[0088] De acordo com um quinto aspecto desta invenção, uma mensagem SEI de conjuntos de parâmetros ativos não pode ser aninhada em uma mensagem SEI de aninhamento escalável. Por exemplo, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode ser limitado a codificar uma mensagem SEI de Conjuntos de parâmetros ativos de um fluxo de bits de múltiplas camadas apenas em uma mensagem SEI não aninhada e não em uma mensagem SEI de aninhamento escalável. As técnicas podem reduzir a complexidade computacional associada com a codificação e uso das mensagens SEI de conjuntos de parâmetros ativos. Por exemplo, voltando ao exemplo acima, o decodificador de vídeo 30 pode codificar e usar a mensagem SEI de conjuntos de parâmetros ativos sem realizar as operações adicionais associadas com mensagens SEI de assentamento escaláveis.
[0089] Um sexto problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que a semântica de uma mensagem SEI aninhada com um elemento de sintaxe bitstream_subset_flag que é igual a um e um payloadType igual a 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 ou 134 (por exemplo, uma das mensagens SEI que têm um payloadType que não é igual a qualquer um de 0, 1, 4, 5, 130 e 133) não é clara. Em HEVC, o bitstream_subset_flag indica se as mensagens SEI contidas na mensagem SEI de aninhamento escalável se aplicam a camadas ou subcamadas específicas de um fluxo de bits de múltiplas camadas. Por exemplo, um bitstream_subset_flag que é igual a zero especifica que as mensagens SEI contidas na mensagem SEI de aninhamento escalável se aplicam a camadas ou subcamadas específicas. Um bitstream_subset_flag que é igual a um especifica que as mensagens SEI contidas na mensagem SEI de aninhamento escalável se aplicam a um ou mais subfluxos de bits resultantes de um processo de extração de subfluxos. Assim, HEVC não especifica claramente a maneira pela qual mensagens SEI particulares (tendo os tipos de carga útil acima identificados) são tratadas quando um conjunto de camadas em particular (por exemplo, um subfluxo de bits) é extraído a partir de um fluxo de bits de múltiplas camadas, o que pode criar erros e / ou ineficiências durante a codificação baseada em múltiplas camadas.
[0090] Quando payloadType é igual a 2, 3, 6, 9,15, 16, 17, 19, 22, 23, 45, 47, 128, 129, 131, 132 ou 134, a mensagem SEI é uma de: um mensagem SEI do retângulo panscan, que inclui dados associados com a exibição em uma razão de aspecto de imagem diferente de uma razão de aspecto de imagem de imagens de saída; uma mensagem SEI de carga útil de enchimento que inclui dados para ajustar uma taxa de bits para atender limitações específicas; uma mensagem SEI de ponto de recuperação que inclui informações para acesso aleatório limpo ou atualização de decodificação gradual; uma mensagem SEI com informações de cena que inclui informações associadas a mudanças e transições de cena; uma mensagem SEI de instantâneo de imagem que inclui uma indicação para rotular uma imagem decodificada associada como um instantâneo de imagem estática de conteúdo de vídeo; uma mensagem SEI de início de segmento de refinamento progressivo que inclui informações associadas com um início de um segmento de imagens consecutivas que representam um refinamento progressivo da qualidade de uma imagem em vez de uma cena em movimento; uma mensagem SEI de término de segmento de refinamento progressivo que inclui informações associadas com um término do segmento de imagens consecutivas; uma mensagem SEI com características de granulação de filme que inclui informações associadas com a síntese de efeitos de granulação de filme; uma mensagem SEI de sugestão pós filtro que inclui informações associadas com coeficientes pós filtro sugeridos ou informações de correlação para concepção de pós-filtro; uma mensagem SEI com informações de mapeamento de tom que inclui informações associadas com novo mapeamento para outro espaço de cor diferente do utilizado ou assumido em codificação; uma mensagem SEI de arranjo de embalagem de quadro que inclui informações associadas com embalagem de vídeo estereoscópico no fluxo de bits; uma mensagem SEI de orientação de exibição que inclui informações que especificam inversão e / ou rotação a ser aplicada às imagens de saída quando as imagens de saída são indicadas; uma estrutura de mensagem SEI com informações de imagem que inclui informações que descrevem a estrutura temporal e de interpredição do fluxo de bits; uma mensagem SEI de índice zero de subcamada temporal que indica um índice zero de subcamada temporal; uma imagem decodificada tem mensagem SEI, ou uma mensagem SEI com informações de atualização de região que indica se os segmentos de fatia associados com a mensagem SEI atual pertencem à região atualizada na imagem atual, respectivamente.
[0091] Quando payloadType é igual a 0, 1, 4, 5, 130 e 133, a mensagem SEI é uma dentre: uma mensagem SEI de período de buffering, uma mensagem SEI de tempo de imagem, uma mensagem SEI registrada de usuário, uma mensagem SEI não registrado de usuário, uma mensagem SEI com informações da unidade de decodificação ou uma mensagem SEI de aninhamento escalável, respectivamente.
[0092] De acordo com um sexto aspecto da presente invenção, quando uma mensagem SEI de aninhamento escalável contém uma mensagem SEI que tem payloadType que é igual a 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 ou 134 (por exemplo, uma das mensagens SEI que têm payloadType que não é igual a qualquer um de 0, 1, 4, 5, 130 e 133), o valor do elemento de sintaxe bitstream_subset_flag da mensagem SEI de assentamento escalável precisa ser igual a 0. Por exemplo, de acordo com aspectos da presente invenção, o codificador de vídeo 20 e ou decodificador de vídeo 30 pode determinar automaticamente e / ou codificar o elemento de sintaxe bitstream_subset_flag com base no tipo de carga útil da mensagem SEI sendo incluída em um conjunto predeterminado de mensagens SEI. O conjunto predeterminado de mensagens SEL pode ser de mensagens SEI que são aplicadas a uma única camada. Deste modo, o codificador de vídeo 20 e / ou decodificador de vídeo 30 são impedidos de aplicar a mensagem SEI incluída no conjunto acima identificado de ser aplicado a mais do que uma camada em um fluxo de bits de múltiplas camadas, assim reduzindo potencialmente erros e / ou ineficiências durante a codificação baseada em múltiplas camadas.
[0093] Um sétimo problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que não está claro qual valor do identificador camada (nuh_layer_is) deve ser para uma unidade de NAL SEI contendo um período de buffering não aninhado, o tempo de imagem ou mensagem SEI com informações da unidade de decodificação. Uma mensagem SEI de período de buffering fornece uma informação de atraso de remoção do buffer de imagem codificada (CPB) e desvio de atraso de remoção do CPB inicial para inicialização do HRD na posição da unidade de acesso associada em ordem de decodificação. A mensagem SEI de tempo de imagem proporciona um tempo de saída imagem e tempo de remoção de imagem / subimagem para a operação HRD, bem como a informação relacionada à estrutura. A mensagem SEI com informações de unidade de decodificação fornece informações de atraso de remoção de CPB para uma unidade de decodificação. A mensagem pode ser utilizada em operações de buffering com atraso muito baixo. Consequentemente, as mensagens SEI acima mencionadas fornecem informação que é necessária para o HRD e as mensagens SEI são aplicáveis a um conjunto de camadas (por exemplo, um conjunto autocontido de camadas também referido como um subfluxo de bits). Se tais mensagens SEI não são aninhadas e o identificador de camada não é zero, não está claro a quais conjuntos de camadas se aplicam as mensagens, o que pode criar erros durante a codificação baseada em múltiplas camadas.
[0094] De acordo com um sétimo aspecto da presente invenção, o valor do identificador de camada (nuh_layer_ih) para uma unidade de NAL SEI contendo uma mensagem SEI de período de buffering não aninhada, tempo de imagem, e de informação da unidade de decodificação deve ser igual a 0. Por exemplo, de acordo com aspectos da presente invenção, o codificador de vídeo 20 e / ou o decodificador de vídeo 30 pode determinar automaticamente que um identificador de camada da camada é igual a zero (e / ou codificar um valor zero para o elemento de sintaxe do identificador de camada) com base na uma ou mais unidades de NAL não VCL contendo a mensagem SEI contendo uma mensagem SEI de período de buffering não aninhada, uma mensagem SEI de tempo de imagem ou uma mensagem SEI com informações da unidade de decodificação. Deste modo, as técnicas podem potencialmente reduzir erros e / ou ineficiências durante a codificação baseada em múltiplas camadas.
[0095] Um oitavo problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que não está claro qual deve ser o valor de um element de sintaxe do identificador de camada (nuh_layer_id) para uma mensagem SEI não aninhada tendo um payloadType igual a 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 ou 134 (isto é, uma das mensagens SEI que têm payloadType diferente de qualquer um de 0, 1, 129, 130 e 133). Por exemplo, HEVC não especifica claramente a maneira pela qual determinadas mensagens SEI (tendo os tipos de carga útil acima identificados) são tratadas para camadas particulares (tendo um identificador camada particular) de um fluxo de bits de múltiplas camadas, o que pode criar erros e / ou ineficiências durante a codificação baseada em múltiplas camadas.
[0096] De acordo com um oitavo aspecto da presente invenção, quando uma mensagem SEI não aninhada tem payloadType igual a 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128 , 131, 132 ou 134 (ou seja, uma das mensagens SEI que têm payloadType diferente de qualquer um de 0, 1, 129, 130 e 133), um valor de um identificador de camada (nuh_layer_id) para a unidade de NAL SEI contendo a mensagem SEI não aninhada deve ser igual ao identificador de camada (nuh_layer_id) das unidades de NAL VCL associadas da unidade de NAL SEI. Isto é, por exemplo, o codificador de vídeo 20 e / ou o decodificador de vídeo 30 pode determinar automaticamente, com base no tipo de carga útil SEI sendo incluído num primeiro conjunto de tipos de carga útil (por exemplo, os tipos de carga útil identificados acima), que um elemento de sintaxe do identificador de camada para as unidades de NAL não VCL contendo a mensagem SEI é igual a um elemento de sintaxe do identificador de camada das unidades de NAL VCL associadas com a mensagem SEI.
[0097] Um nono problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que uma mensagem SEI de prefixo em HEVC precisa estar presente e anteceder a primeira unidade de NAL VCL de uma unidade de acesso em casos em que há uma mensagem SEI de prefixo do mesmo tipo entre duas unidades de NAL VCL da unidade de acesso. Por exemplo, mensagens SEI de prefixo são tipicamente incluídas em um fluxo de bits antes das unidades de NAL VCL às quais se aplica a mensagem SEI. Em HEVC, a restrição quanto à colocação de mensagens SEI de prefixo baseia-se na unidade de acesso, que pode apresentar um problema para unidades de acesso com componentes de múltiplas camadas (por exemplo, unidades de acesso com imagens de várias camadas). Isto é, algumas mensagens SEI de prefixo não podem estar localizadas no local adequado (por exemplo, antes das unidades de NAL VCL à qual se aplica a mensagem SEI) em unidades de acesso com componentes de múltiplas camadas.
[0098] De acordo com um nono aspecto da presente invenção, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode controlar a maneira na qual as mensagens SEI de prefixo são codificadas com base na imagem à qual se aplica as mensagens SEI (por exemplo, em contraste com as técnicas acima mencionadas baseadas na unidade de acesso). Por exemplo, de acordo com aspectos da presente invenção, uma mensagem SEI de prefixo que se aplica a uma camada (por exemplo, layerA) contendo uma imagem deve estar presente e preceder a primeira unidade de NAL VCL da imagem em casos em que há uma mensagem SEI de prefixo que é do mesmo tipo e se aplica à camada (por exemplo, layerA) presente entre duas unidades de NAL VCL da imagem.
[0099] Por exemplo, para uma unidade de acesso que inclui pelo menos uma primeira imagem e uma segunda imagem, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode ser restrito a codificar uma ou mais unidades de NAL não VCL contendo uma primeira mensagem SEI de prefixo aplicável a unidades de NAL VCL da primeira imagem, e uma ou mais unidades de NAL não VCL contendo uma segunda mensagem SEI de prefixo aplicável às unidades de NAL VCL da segunda imagem após a primeira imagem no fluxo de bits. Deste modo, o codificador de vídeo 20 e / ou decodificador de vídeo 30 são impedidos de codificar mensagens SEI de prefixo em outros locais de uma unidade de acesso, o que podem aumentar a eficácia e reduzir a sobrecarga de armazenamento para codificação baseada em múltiplas camadas.
[0100] Um décimo problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que, em HEVC, uma mensagem SEI de sufixo deve estar presente e seguir a última unidade de NAL VCL de uma unidade de acesso quando há uma mensagem SEI de sufixo do mesmo tipo entre duas unidades de NAL VCL da unidade de acesso. Por exemplo, a mensagem SEI de sufixo é normalmente incluída em um fluxo de bits após as unidades de NAL VCL às quais se aplica a mensagem SEI. Em HEVC, a restrição à colocação de mensagens SEI de sufixo é com base na unidade de acesso, que pode apresentar um problema para unidades de acesso com componentes de múltiplas camadas (por exemplo, unidades de acesso de um fluxo de bits de múltiplas camadas). Isto é, algumas mensagens SEI de sufixo não podem ser localizadas no local adequado (por exemplo, na sequência das unidades de NAL VCL às quais se aplica a mensagem SEI) em unidades de acesso que têm componentes de múltiplas camadas.
[0101] De acordo com um décimo aspecto da presente invenção, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode controlar a maneira na qual as mensagens SEI de sufixo são codificadas com base na imagem à qual se aplicam as mensagens SEI de sufixo (por exemplo, em contraste com as técnicas baseadas na unidade de acesso acima referida). Por exemplo, de acordo com aspectos da presente invenção, uma mensagem SEI de sufixo que se aplica a uma camada (por exemplo, layerA) contendo uma imagem deve estar presente e seguir a última unidade de NAL VCL da imagem quando existe uma mensagem SEI de sufixo do mesmo tipo e se aplica à camada (por exemplo, layerA) presente entre duas unidades de NAL VCL da imagem.
[0102] Por exemplo, para uma unidade de acesso que inclui pelo menos uma primeira imagem e uma segunda imagem, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode ser restrito a codificar uma ou mais unidades de NAL não VCL contendo uma primeira mensagem SEI de sufixo aplicável às unidades de NAL VCL da primeira imagem na sequência da primeira imagem, e uma ou mais unidades de NAL não VCL contendo uma segunda mensagem SEI de prefixo aplicável às unidades de NAL VCL da segunda imagem na sequência da segunda imagem no fluxo de bits. Deste modo, o codificador de vídeo 20 e / ou decodificador de vídeo 30 são impedidos de codificar mensagens SEI de sufixo em outros locais de uma unidade de acesso, o que pode aumentar a eficácia e reduzir a sobrecarga de armazenamento para codificação baseada em múltiplas camadas.
[0103] Um décimo primeiro problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que, em HEVC, o número de vezes que uma mensagem SEI pode ser repetida é especificado pela unidade de acesso. Por exemplo, em alguns casos, uma mensagem SEI pode ser repetida quando codificando uma imagem. Em um exemplo para fins de ilustração, para uma imagem tendo oito fatias, cada fatia sendo associada com a sua própria unidade de NAL VCL, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode repetir uma determinada mensagem SEI para cada unidade de NAL VCL. No entanto, uma restrição com base na unidade de acesso quanto ao número de vezes que uma mensagem SEI pode ser utilizada pode apresentar um problema na codificação de vídeo baseada em múltiplas camadas, porque uma unidade de acesso tendo componentes de múltiplas camadas pode potencialmente ter muito mais fatias do que uma unidade de acesso tendo um componente de camada única (por exemplo, uma única imagem). Neste exemplo, o desempenho de erro (e / ou outras funções afetadas por mensagens SEI) pode ser afetado negativamente.
[0104] De acordo com um décimo primeiro aspecto da presente invenção, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode especificar o número de vezes que uma mensagem SEI podem ser repetida em uma base por imagem. Neste contexto, uma imagem pode ser definida como contendo as unidades de NAL VCL de uma imagem codificada, e as unidades de NAL não VCL que são associadas com as unidades de NAL VCL. Assim, de acordo com aspectos da presente invenção, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode determinar um parâmetro máximo de repetição para uma mensagem SEI (por exemplo, um número máximo de vezes que a mensagem SEI pode ser repetida) com base em uma unidade de imagem que contém unidades de NAL VCL de uma imagem e unidades de NAL não VCL associadas da imagem. As técnicas podem, em alguns casos, aumentar a resiliência de erro na codificação baseada em múltiplas camadas.
[0105] Um décimo segundo problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que pode surgir um conflito, em casos em que um elemento de sintaxe default_op_flag é igual a um, e um elemento de sintaxe bitstream_subset_flag é igual a um, mas não há conjuntos de camadas especificados por um VPS para o fluxo de bits que inclui e inclui apenas as camadas tendo valores de identificador camada (nuh_layer_id) no intervalo de 0 a nuh_layer_id da unidade de NAL SEI corrente, inclusive. Por exemplo, um elemento de sintaxe default_op_flag que é igual a um especifica que um maxTemporalId[0] é igual a nuh_temporal_id_plus1 da unidade de NAL SEI atual menos 1 e que nestingLayerIdList[0] contém todos os valores de número inteiro no intervalo de 0 a nuh_layer_id da unidade de NAL SEI corrente, inclusive, em ordem crescente dos valores. Como mencionado acima, um elemento de sintaxe bitstream_subset_flag igual a um especifica que as mensagens SEI contidas na mensagem SEI de aninhamento escalável se aplicam a um ou mais subfluxos de bits resultantes de um processo de extração de subfluxo de bits. Em outras palavras, pode surgir um conflito em casos em que um conjunto de camadas padrão é indicado, mas o VPS não especifica um conjunto de camadas particulares que corresponde ao conjunto de camadas padrão.
[0106] De acordo com um décimo segundo aspecto da presente invenção, quando um elemento de sintaxe bitstream_subset_flag é igual a um e nenhum dos conjuntos de camadas especificado por um VPS inclui e inclui apenas as camadas tendo valores nuh_layer_id no intervalo de 0 a nuh_layer_id da unidade de NAL SEI corrente, inclusive, o valor do elemento de sintaxe default_op_flag deve ser igual a zero. Por exemplo, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode codificar um elemento de sintaxe bitstream_subset_flag de um fluxo de bits de múltiplas camadas, e, com base no bitstream_subset_flag sendo igual a um e nenhum conjunto de camadas especificado por VPS do fluxo de dados de múltiplas camadas incluindo identificadores de camada no intervalo de zero a um identificador de camada das unidades de NAL não VCL contendo a mensagem SEI, inclusive, determinar que um valor de um elemento de sintaxe default_op_flag do fluxo de dados de múltiplas camadas é de valor zero. As técnicas podem melhorar a resiliência de erro quando se utiliza o elemento de sintaxe default_op_flag na codificação baseada em múltiplas camadas.
[0107] Um décimo terceiro problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que, quando um elemento de sintaxe nesting_op_flag é igual a zero e um elemento de sintaxe all_layers_flag é igual a um, o valor da variável maxTemporalId[0] não é especificado em HEVC. Um elemento de sintaxe nesting_op_flag que é igual a zero especifica que a lista nestingLayerIdList[0] é especificada por um elemento de sintaxe all_layers_flag e, quando presente, nesting_layer_id[i] para todos os valores i no intervalo de 0 a nesting_num_layers_minus 1, inclusive, e que a variável maxTemporalId[0] é especificada por nesting_no_op_max_temporal_id_plus1. Em outras palavras, HEVC não especifica as subcamadas aplicáveis (por exemplo, como identificado usando a variável maxTemporalId[0]) quando as mensagens SEI aninhadas são utilizadas com subcamadas temporais de um fluxo de bits de múltiplas camadas, o que pode causar complicações desnecessárias.
[0108] De acordo com um décimo terceiro aspecto da presente invenção, quando um elemento de sintaxe nesting_op_flag é igual a zero e um elemento de sintaxe all_layers_flag é igual a um, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar automaticamente um elemento de sintaxe maxTemporalId[0] para ter um valor de seis, que é o valor máximo possível para o elemento de sintaxe TemporalId. Isto é, de acordo com aspectos da presente invenção, o codificador de vídeo 20 e / ou o decodificador de vídeo 30 pode ser configurado para aplicar uma mensagem SEI a todas as subcamadas que estão incluídas em uma camada de dados de vídeo, independentemente do número de subcamadas que estão incluídas. Deste modo, as técnicas podem reduzir a complexidade associada à codificação baseada em múltiplas camadas.
[0109] Um décimo quarto problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que, quando uma mensagem SEI aninhada tem payloadType igual a 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45 , 47, 128, 131, 132 ou 134 (por exemplo, uma das mensagens SEI que têm payloadType diferente de qualquer um de 0, 1, 4, 5, 130 e 133) e a mensagem SEI se aplica a um conjunto de camadas, o conjunto de camadas pode ser associado com um valor de maxTemporalId[i] que é menor do que o maior valor de TemporalId no fluxo de bits. No entanto, a semântica dessas mensagens SEI é descrita sem considerar subcamadas, e é, consequentemente, incompatível com a semântica da mensagem SEI de aninhamento escalável quando a situação acima ocorre. Esta inconsistência pode aumentar desnecessariamente a complexidade da codificação baseada em múltiplas camadas.
[0110] De acordo com um décimo quarto aspecto desta invenção, quando uma mensagem SEI aninhada tem payloadType igual a 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 ou 134 (por exemplo, uma das mensagens SEI que têm payloadType diferente de qualquer um de 0, 1, 4, 5, 130 e 133), a unidade de NAL SEI contendo a mensagem SEI de aninhamento escalável precisa ter um elemento de sintaxe TemporalId que é igual a zero e um elemento de sintaxe maxTemporalId[i] para todos os i igual a seis, que é o valor máximo possível para o elemento de sintaxe TemporalId. Por exemplo, o codificador de vídeo 20 e / ou o decodificador de vídeo 30 podem ser configurados para determinar automaticamente um valor para o elemento de sintaxe TemporalId que é igual a zero e um elemento de sintaxe maxTemporalId[i] para todos os i que é igual a seis, com base em uma mensagem SEI que tem um tipo de carga útil em um conjunto predeterminado de tipos de carga útil (por exemplo, os tipos identificados acima). Deste modo, as técnicas podem reduzir a complexidade associada à codificação baseada em múltiplas camadas.
[0111] Um décimo quinto problema potencial com o uso de mensagens SEI para HEVC em um contexto de múltiplas camadas é que quando um elemento de sintaxe bitstream_subset_flag é igual a um e um elemento de sintaxe nesting_op_flag é igual a zero, o padrão HEVC permite a um elemento de sintaxe nestingLayeridList[0] corresponder a um conjunto de camadas que não é especificado por um VPS para o fluxo de bits de múltiplas camadas.
[0112] De acordo com um décimo quinto aspecto desta invenção, quando um elemento de sintaxe bitstream_subset_flag é igual a um e um elemento de sintaxe nesting_op_flag é igual a zero, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode ser configurado para codificar o elemento de sintaxe nestingLayeridList[0] para incluir e incluir apenas os valores de nuh_layer_id de um dos conjuntos de camadas especificados pelo VPS. Por exemplo, o codificador de vídeo 20 e / ou decodificador de vídeo 30 pode ser configurado para codificar um elemento de sintaxe bitstream_subset_flag do fluxo de bits de múltiplas camadas e um elemento de sintaxe nesting_op_flag do fluxo de bits de múltiplas camadas, e, com base no elemento de sintaxe bitstream_subset_flag tendo um valor de um e o elemento de sintaxe nesting_op_flag tendo um valor de zero, determinar que um nestingLayeridList[0] do fluxo de bits de múltiplas camadas inclui apenas valores de identificador de camada de um conjunto de camadas especificado em um VPS do fluxo de bits de múltiplas camadas. Deste modo, as técnicas podem reduzir a complexidade associada à codificação baseada em múltiplas camadas.
[0113] As técnicas descritas acima podem ser aplicadas de forma independente ou aplicadas em combinação. Os exemplos detalhados que são compatíveis com a presente invenção são apresentados abaixo. As mudanças no texto relativas ao padrão SHVC anteriormente indicada para algumas das técnicas descritas anteriormente são indicadas em sublinhado para identificar o material inserido e entre parêntesis duplos ([[removido:]]) para indicar material excluído abaixo: Alterar as definições a seguir na seção 3 da seguinte forma: 3.X unidade de acesso: Um conjunto de unidades de NAL que são associadas umas com as outras de acordo com um regra de classificação determinada, são consecutivas em ordem de decodificação, e contêm as unidades de NAL VCL de todas as imagens codificadas associadas com o mesmo tempo de saída e suas unidades de NAL não VCL associadas. Nota - Imagens na mesma unidade de acesso são associadas com a mesma contagem de ordem de imagem. Adicionar as definições a seguir à seção 3: 3.X particionamento de fluxo de bits de base: um particionamento de fluxo de bits que também é em si um fluxo de bits em conformidade. 3.X particionamento de fluxo de bits: uma sequência de bits, sob a forma de um fluxo de unidades de NAL ou um fluxo de bytes, que é um subconjunto de um fluxo de bits de acordo com um particionamento. 3.X camada de saída: uma camada de um conjunto de camadas de saída que é emitida quando TargetOptLayerSetIdx é igual ao índice do conjunto de camadas de saída. 3.X conjunto de camadas de saída: um conjunto de camadas que consiste nas camadas de um dos conjuntos de camadas particulares, onde uma ou mais camadas no conjunto de camadas são indicadas para serem camadas de saída. 3.X ponto de operação de saída: Um fluxo de bits que é criado a partir de outro fluxo de bits pela operação do processo de extração de subfluxo de bits com o outro fluxo de bits, um TemporalId alvo maior, e uma lista de identificadores de camada alvo como entradas, e que está associada a um conjunto de camadas de saída alvo. 3.X unidade de imagem: um conjunto de unidades de NAL que estão associadas umas com as outras de acordo com uma regra de classificação específica, são consecutivas em ordem de decodificação, e contêm as unidades de NAL VCL de uma imagem codificada, e suas unidades de NAL não VCL associadas. 3.X camada de saída alvo: uma camada que deve ser emitida e é uma das camadas de saída do conjunto de camadas de saída com índice olsIdx, tal como TargetOptLayerSetIdx é igual a olsIdx. 3.X conjunto de camadas de saída alvo: um conjunto de camadas de saída associado com TargetOptLayerSetIdx variável que especifica uma lista de identificadores de camada de um ponto de operação de saída em uso e um conjunto de camadas de saída alvo. [[Removido: 3.X ponto de operação: um fluxo de bits que é criado a partir de outro fluxo de bits pela operação do processo de extração de subfluxo de bits com o outro fluxo de bits, um TemporalId alvo maior e uma lista de identificadores de camada alvo como entradas, e que é associada a um conjunto de camadas de saída alvo. NOTA 14 - Se o TemporalId mais alto alvo de um ponto de operação é igual ao maior valor de TemporalId no conjunto de camadas associado com a lista de identificação de camadas alvo, o ponto de operação é idêntico ao conjunto de camadas. Caso contrário, é um subconjunto do conjunto de camadas.]] C.1 Geral Este anexo especifica o decodificador de referência hipotético (HRD) e seu uso para verificar o fluxo de bits e a conformidade do decodificador. Vários testes podem ser necessários para verificação da conformidade de um fluxo de bits, o qual é referido como o fluxo de bits em teste. Para cada teste, são aplicadas as etapas a seguir na ordem indicada: 1. Um ponto de operação de saída em teste, designado como TargetOp, é selecionado por seleção de um conjunto de camadas de saída alvo identificado por TargetOutputLayerSetIdx e selecionando um HighestTid de valor de TemporalId alvo maior. O valor de TargetOutputLayerSetIdx deve estar no intervalo de 0 a NumOutputLayerSets - 1, inclusive. O valor de HighestTid deve estar no intervalo de 0 a vps_max_sub_layers_minus1, inclusive. As variáveis TargetDecLayerSetIdx, TargetOptLayerIdList e TargetDecLayerIdList são então derivadas, conforme especificado pela Equação 8-1. O ponto de operação de saída em teste tem OptLayerIdList igual a TargetOptLayerIdList, OpLayerIdList igual a TargetDecLayerIdList e OpTid igual a HighestTid. ... Para cada ponto de operação de saída em teste quando a operação de CPB específica do fluxo de bits é testada, o número de testes de conformidade do fluxo de bits a ser executado é igual a n0*nl*(n2*2+n3)*n4, onde os valores de n0, n1, n2, n3 e n4 são especificados como a seguir: ... Modificar a subseção D.3.1 como a seguir: É uma exigência de conformidade do fluxo de bits que, quando uma mensagem SEI de prefixo com payloadType igual a 17 (fim do segmento de refinamento progressivo) ou 22 (sugestão pós-filtro) está presente em uma unidade de acesso, uma mensagem SEI de sufixo com o mesmo valor de payloadType não deve estar presente na mesma unidade de acesso. [[removido: deixar prevVclNalUnitInAu de uma unidade de NAL SEI ou uma mensagem SEI ser a unidade de NAL VCL anterior em ordem de decodificação, se aplicável, na mesma unidade de acesso, e nextVclNalUnitInAu de uma unidade de NAL SEI ou uma mensagem SEI ser a próxima unidade de NAL VCL em ordem de decodificação, se aplicável, na mesma unidade de acesso.]] É uma exigência de conformidade do fluxo de bits que as restrições a seguir sejam aplicadas a conter mensagens SEI em unidades de NAL SEI: - uma unidade de NAL SEI contendo uma mensagem SEI de conjuntos de parâmetros ativos deve conter apenas uma mensagem SEI de conjuntos de parâmetros ativos e não deve conter quaisquer outras mensagens SEL. [[removido: quando uma unidade de NAL SEI contendo uma mensagem SEI de conjuntos de parâmetros ativos está presente em uma unidade de acesso, ela deve ser a primeira unidade de NAL SEI que segue o prevVclNalUnitInAu da unidade de NAL SEI e precede o nextVclNalUnitInAu da unidade de NAL SEI.]] - Quando uma unidade de NAL SEI contém uma mensagem SEI de período de buffering não aninhada, uma mensagem SEI de tempo de imagem não aninhada, ou uma mensagem SEI com informações da unidade de decodificação não aninhada, a unidade de NAL SEI não deve conter qualquer outra mensagem SEI com payloadType diferente de 0 (período de buffering), 1 (tempo de imagem), ou 130 (informação da unidade de decodificação). - Quando uma unidade de NAL SEI contém uma mensagem SEI de período de buffering aninhada, uma mensagem SEI de tempo de imagem aninhada ou uma mensagem SEI com informações da unidade de decodificação aninhada, a unidade de NAL SEI não deve conter qualquer outra mensagem SEI com payloadType diferente de 0 (período de buffering), 1 (tempo de imagem), 130 (informação da unidade de decodificação) ou 133 (aninhamento escalável). Deixar prevVclNalUnitlnAu de uma unidade de NAL SEI ou uma mensagem SEI ser a unidade de NAL VCL anterior em ordem de decodificação, se aplicável, na mesma unidade de acesso, e nextVclNalUnitInAu de uma unidade de NAL SEI ou uma mensagem SEI ser a próxima unidade de NAL VCL em ordem de decodificação, se aplicável, na mesma unidade de acesso. É uma exigência de conformidade do fluxo de bits que as restrições a seguir sejam aplicadas: É uma exigência de conformidade do fluxo de bits que as seguintes restrições sejam aplicadas em ordem de mensagens SEI: - Quando uma unidade de NAL SEI contendo uma mensagem SEI de conjuntos de parâmetros ativos está presente em uma unidade de acesso, ela deve ser a primeira unidade de NAL SEI que segue o prevVclNalUnitInAu da unidade de NAL SEI e precede o nextVclNalUnitInAu da unidade de NAL SEI. - Quando uma mensagem SEI de período de buffering não aninhada está presente em uma unidade de acesso, ela não deve seguir qualquer outra mensagem SEI que segue o prevVclNalUnitInAu da mensagem SEI de período de buffering e precede o nextVclNalUnitInAu da mensagem SEI de período de buffering, diferente de uma mensagem SEI de conjuntos de parâmetros ativos ou uma mensagem SEI de período de buffering não aninhada. - Quando uma mensagem SEI de tempo de imagem não aninhada está presente em uma unidade de acesso, ela não deve seguir qualquer outra mensagem SEI que segue o prevVclNalUnitInAu da mensagem SEI de tempo de imagem e precede o nextVclNalUnitInAu da mensagem SEI de tempo de imagem, diferente de uma mensagem SEI de conjuntos de parâmetros ativos ou uma mensagem SEI de período de buffering não aninhada. Quando uma mensagem SEI com informações da unidade de decodificação não aninhada está presente em uma unidade de acesso, ela não deve seguir qualquer outra mensagem SEI na mesma unidade de acesso que segue a prevVclNalUnitInAu da mensagem SEI com informações da unidade de decodificação e precede o nextVclNalUnitInAu da mensagem SEI com informações da unidade de decodificação, deferente de uma mensagem SEI de conjuntos de parâmetros ativas, uma mensagem SEI de período de buffering não aninhada ou uma mensagem SEI de tempo de imagem não aninhada. Quando uma mensagem SEI de período de buffering aninhada, uma mensagem SEI de tempo de imagem aninhada ou uma mensagem SEI com informações da unidade de decodificação aninhada está contida em uma mensagem SEI de aninhamento escalável em uma unidade de acesso, a mensagem SEI de aninhamento escalável não deve seguir qualquer outra mensagem SEI que segue o prevVclNalUnitInAu da mensagem SEI de aninhamento escalável e precede o nextVclNalUnitInAu da mensagem SEI de assentamento escalável, diferente de uma mensagem SEI de conjuntos de parâmetros ativos, uma mensagem SEI de período de buffering não aninhada, uma mensagem SEI de tempo de imagem não aninhada, uma mensagem SEI com informações da unidade de decodificação não aninhada ou outra mensagem SEI de assentamento escalável que contém uma mensagem SEI de período de buffering, uma mensagem SEI de tempo de imagem ou uma mensagem SEI com informações da unidade de decodificação. - Quando payloadType é igual a 0 (período de buffering), 1 (tempo de imagem), ou 130 (informação da unidade de decodificação) para uma mensagem SEI, aninhada ou não aninhada, dentro da unidade de acesso, a unidade de NAL SEI contendo a mensagem SEI deve preceder todas as unidades de NAL de qualquer unidade de imagem que tenha nuhlayerid maior que highestAppLayerId, onde highestAppLayerId é o maior valor de nuhlayerid de todas as camadas em todos os pontos em que se aplica mensagem SEI. - Quando payloadType é igual a 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 ou 134 (ou seja, uma das mensagens SEI que têm payloadType diferente de qualquer um de 0, 1, 4, 5, 130 e 133) para uma mensagem SEI, aninhada ou não aninhada, dentro da unidade de acesso, a unidade de NAL SEI contendo a mensagem SEI deve preceder todas as unidades de NAL de qualquer unidade de imagem que tenha nuhlayerid maior que highestAppLayerId, onde highestAppLayerId é o maior valor de nuhlayer id de todas as camadas em que se aplica a mensagem SEI. [[Removido: Para uma mensagem SEI não aninhada, dependendo do valor de payloadType, t]] O seguinte se aplica sobre os pontos de operação aplicáveis ou camadas de mensagens SEI: - Para uma mensagem SEI não aninhada, quando [[removido: Se]] payloadType é igual a 0 (período de buffering), 1 (tempo de imagem), ou 130 (informação da unidade de descodificação), a mensagem SEI não aninhada se aplica ao ponto de operação que tem Op Tid igual ao maior valor de nuh_temporal_id_plus1 entre todas as unidades de NAL VCL no fluxo de bits, e que tem OpLayerIdList contendo todos os valores de nuh_layer_id em todas as unidades VCL no fluxo de bits. - Para uma mensagem SEI não aninhada, [[removido: Caso contrário,]] quando payloadType é igual a 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 ou 134 (ou seja, uma das mensagens SEI que têm payloadType diferente de qualquer um de 0, 1, 4, 5. [[removido: ou]] 130, e 133 [[removido: e que são deixadas ser mensagens SEI aninhadas]]), a mensagem SEI não aninhada se aplica à camada para a qual as unidades de NAL VCL têm nuh_layer_id igual ao nuh_layer_id da unidade de NAL SEI contendo a mensagem SEI. - Uma mensagem SEI de conjuntos de parâmetros ativos define, que não pode ser aninhada, se aplica a todas as camadas no fluxo de bits. - Quando framefieldinfopresentflag é igual a 1 para uma mensagem SEI com informações de tempo de imagem, aninhada ou não aninhada, a informação de campo de quadro transportada nos elementos de sintaxe picstruct sourcescantype e duplicateflag se aplica a todas as camadas em todos os pontos de operação em que se aplica a mensagem SEI de tempo de imagem. É uma exigência de conformidade de fluxo de bits que as restrições a seguir sejam aplicadas no aninhamento de mensagens SEI: - Uma mensagem SEI que tem payloadType igual a 129 (conjuntos de parâmetros ativos), 132 (hash de imagem decodificada) e 133 [[removido: mensagem SEI)]] de aninhamento escalável não deve ser aninhada em uma mensagem SEI de aninhamento escalável. Quando uma mensagem SEI de aninhamento escalável contém uma mensagem SEI de período de buffering, uma mensagem SEI de tempo de imagem ou uma mensagem SEI com informações da unidade de decodificação, a mensagem SEI de aninhamento escalável não deve conter qualquer outra mensagem SEI com payloadType diferente 0 (período de buffering), 1 (tempo de imagem), ou 130 (informação da unidade de decodificação). - Quando uma mensagem SEI de aninhamento escalável contém uma mensagem SEI de período de buffering, uma mensagem SEI de tempo de imagem ou uma mensagem SEI com informações da unidade de decodificação, o valor de bitstre amsubsetflag da mensagem SEI de assentamento escalável deve ser igual a 1. - Quando uma mensagem SEI de aninhamento escalável contém uma mensagem SEI que tem payloadType igual a ■ 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 ou 134 (ou seja, uma das mensagens SEI que têm payloadType diferente de qualquer um de 0, 1, 4, 5, 130 e 133), o valor de bitstreamsubsetflag da da mensagem SEI de aninhamento escalável deve ser igual a 0. É uma exigência de conformidade de fluxo de bits que as seguintes restrições sejam aplicadas nos valores de nuhlayerid e TemporalId das unidades de NAL SEI: - Quando a mensagem SEI não aninhada tem payloadType igual a 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 ou 134 (isto é, uma das mensagens SEI que têm payloadType diferente de qualquer um de 0, 1, 4, 5, 129, [[removidos: ou]] 130 e 133 [[removido: que podem ser mensagens SEI aninhadas]]), a unidade de NAL SEI contendo a mensagem SEI não aninhada deve ter TemporalId igual ao TemporalId da unidade de acesso contendo a unidade de NAL SEI. Quando uma mensagem SEI não aninhada tem payloadType igual a 0, 1, 129 ou 130, a unidade de NAL SEI contendo a mensagem SEI não aninhada terá nuhlayerid igual a 0. Quando uma mensagem SEI não aninhada tem payloadType igual a 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 ou 134 (ou seja, uma das mensagens SEI que têm payloadType diferente de qualquer um de 0, 1, 129 , 130 e 133), a unidade de NAL SEI que contém a mensagem SEI não aninhada deve ser nuhlayerid igual ao nuhlayerid da unidade de NAL VCL associada da unidade de NAL SEI. NOTA 4 - Para uma unidade de NAL SEI contendo uma mensagem SEI de aninhamento escalável, os valores de TemporalId e nuhlayerid devem ser definidos iguais ao menor valor de TemporalId e nuhlayerid, respectivamente, de todas as subcamadas ou pontos de operação em que se aplicam as mensagens SEI aninhadas. É uma exigência de conformidade de fluxo de bits que as restrições a seguir sejam aplicadas na presença de mensagens SEI entre duas unidades de NAL VCL da [[removido: uma unidade de acesso]] imagem: - Quando existe uma mensagem SEI de prefixo que tem payloadType igual a 0, 1, 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 129 ou 131 (ou seja, uma das mensagens SEI de prefixo que não são registadas com dados de usuário pela mensagem SEI Rec. ITU-T T.35, mensagem SEI não registrada com dados de usuário, mensagem SEI com informações da unidade de decodificação, mensagem SEI de assentamento escalável, ou mensagem SEI com informações de atualização de região) e se aplica a uma imagem de uma camada layerA presente entre duas unidades de NAL VCL da [[removido: uma unidade de acesso]] imagem em ordem de decodificação, deve haver uma mensagem SEI de prefixo que é do mesmo tipo e se aplica à camada layerA presente na mesma unidade de acesso que antecede a primeira unidade de NAL VCL da [[removido]: unidade de acesso] imagem. - Quando há uma mensagem SEI de sufixo que tem payloadType igual a 3 (carga útil de enchimento), 17 (fim de segmento de refinamento progressivo), 22 (sugestão pós-filtro), ou 132 (hash de imagem decodificada) e se aplica a uma imagem de uma camada layerA presente entre duas unidades de NAL VCL de [[removido: uma unidade de acesso]] a imagem em ordem de decodificação, deve haver uma mensagem SEI de sufixo que é do mesmo tipo e se aplica à camada layerA presente na mesma unidade de acesso que sucede a última unidade de NAL VCL da [[removido]: unidade de acesso] imagem. É uma exigência de conformidade de fluxo de bits que as seguintes restrições se aplicam na repetição de mensagens SEI: - Para cada um dos valores de payloadType a seguir, haverá menos do que ou 8 estruturas de sintaxe sei_payload() idênticas dentro de [[removido: uma unidade de acesso]] uma unidade de imagem: 0, 1, 2, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 129, 131, 132 e 133. - Haverá menos do que ou 8 estruturas de sintaxe sei_payload() idênticas com payloadType igual a 130 dentro de uma unidade de decodificação. - O número de estruturas de sintaxe sei_payload() idênticas com payloadType igual a 134 em [[removido: uma unidade de acesso]] uma unidade de imagem deve ser inferior ou igual ao número de segmentos de fatia na [[removido: unidade de acesso]] unidade de imagem. Modificar a subseção D.3.23 da seguinte forma: A mensagem SEI de aninhamento escalável fornece um mecanismo para associar mensagens SEI com subconjuntos de fluxo de bits correspondentes a vários pontos de operação ou com camadas ou subcamadas específicas. Uma mensagem SEI de aninhamento escalável contém uma ou mais mensagens SEI. bitstream_subset_flag igual a 0 especifica que as mensagens SEI contidas na mensagem SEI de aninhamento escalável se aplicam a camadas ou subcamadas específicas. bitstream_subset_flag igual a 1 especifica que as mensagens SET contidas na mensagem SEI de aninhamento escalável se aplicam a um ou mais subfluxos de bits resultantes de um processo de extração de subfluxo de bits como especificado na seção 10 com entradas com base nos elementos de sintaxe da mensagem SEI de assentamento escalável conforme especificado abaixo. [[removido: Quando uma mensagem SEI de período de buffering, uma mensagem SEI de tempo de imagem ou uma mensagem SEI com informações da unidade de decodificação está contida na mensagem SEI de aninhamento escalável, bitstream_subset_flag será igual a 1.]] Dependendo do valor do bitstream_subset_flag, as camadas ou subcamadas, ou os pontos de operação aos quais se aplicam as mensagens SEI contidas na mensagem SEI de aninhamento escalável são especificados pela derivados pelas listas nestingLayedIdList[i] e as variáveis maxTemporalId[i] com base em valores de elementos de sintaxe conforme especificado abaixo. nesting_op_flag igual a 0 especifica que a lista nestingLayerIdList[0] é especificada por all_layers_flag e, quando presente, nesting_layer_id[i] para todos os valores i no intervalo de 0 a nesting_num_layers_minus1, inclusive, e que a variável maxTemporalId[0] é especificada por nesting_no_op_max_temporal_id_plus1. nesting_op_flag igual a 1 especifica que a lista nestingLayerIdList[i] e a variável maxTemporalId[i] são especificadas por nesting_num_ops_minus1, default_op_flag, nesting_max_temporal_id_plus1[i], quando presente, e nesting_op_idx[i], quando presente. default_op_flag igual a 1 especifica que maxTemporalId[0] é igual a nuh_temporal_id_plus1 da unidade de NAL SEI corrente menos 1 e que nestingLayerIdList[0] contém todos os valores de número inteiro no intervalo de 0 a nuh_layer_id da unidade de NAL SEI corrente, inclusive, em ordem crescente dos valores. Quando bitstream subsetflag é igual a 1 e nenhum dos conjuntos de camadas especificados pelo VPS inclui e inclui apenas as camadas tendo valores nuhlayerid no intervalo de 0 a nuhlayerid da unidade de NAL SEI corrente, inclusive, o valor de defaultopflag deve ser igual a 0. nesting_num_ops_minus1 mais 1 menos default_op_flag especifica o número dos elementos de sintaxe nesting_op_idx[i] seguintes. O valor de nesting_num_ops_minus1 deve estar no intervalo de 0 a 1023, inclusive. Se nesting_op_flag é igual a 0, a variável nestingNumOps é definida igual a 1. Caso contrário, a variável nestingNumOps é definida igual a nesting_num_ops_minus1 + 1. nesting_max_temporal_id_plus1[i] é usado para especificar a variável maxTemporalId[i]. O valor de nesting_max_temporal_id_plus1[i] deve ser maior ou igual a nuh_temporal_id_plus1 da unidade de NAL SEI corrente. A variável maxTemporalId[i] é igual a nesting_max_temporal_is_plus1[i] - 1. nesting_op_idx[i] é usado para especificar a lista nestingLayerIdList[i]. O valor de nesting_op_idx[i] deve estar no intervalo de 0 a 1023, inclusive. A lista nestingLayerIdList[i] está definida igual a OpLayerIdList do nesting_op_idx-ésimo conjunto de camadas especificado pelo VPS ativo. all_layers_flag igual a 0 especifica que a lista nestingLayerIdList[0] é especificada por nesting_layer_id[i] para todos os valores i no intervalo de 0 a nesting_num_layers_minus1, inclusive. all_layers_flag igual a 1 especifica que a lista nestingLayerIdList[0] consiste em todos os valores de nuh_layer_id presentes na unidade de acesso corrente que são maiores do que ou iguais a nuh_layer_id da unidade de NAL SEI corrente, ordem crescente dos valores. Nota: Quando nuhlayerid da unidade de NAL SEI contendo a mensagem SEI de aninhamento escalável é maior do que 0, bitstreamsubsetflag e alllayersfal não podem ser ambos iguais a 1, porque, neste caso, o ponto de operação aplicável das mensagens SEI aninhadas não incluiria a camada de base e, consequentemente, o subfluxo de bits correspondente ao ponto de operação aplicável seria um fluxo de bits de não conformidade. Quando nestingopflag é igual a 0 e alllayersflag é igual a 1, maxTemporalId[0] é é igual a 6. nesting_no_op_max_temporal_id_plus1 menos 1 especifica o valor de maxTemporalId[0] quando nesting_op_flag é igual a 0 e all_layers_flag é igual a 0. O valor de nesting_no_op_max_temporal_id_plus1 não deve ser igual a 0. nesting_num_layers_minus1 mais 1 especifica o número dos seguintes elementos de sintaxe nesting_layer_id[i]. O valor de nesting_num_layers_minus1 deve estar no intervalo de 0 a 63, inclusive. nesting_layer_id[i] especifica o i-ésimo valor de nuh_layer_id incluído na lista nestingLayerIdList[0]. Para qualquer i e j no intervalo de 0 a nesting_num_layers_minus1, inclusive, com i menor que j, nesting_layer_id[i] deve ser inferior a nesting_layer_id[j]. A lista nestingLayerIdList[0] é definida para consistir em nesting_layer_id[i] para todos os valores i no intervalo de 0 a nesting_num_layers_minus1, inclusive, em ordem crescente de valores i. Quando bitstream_subset_flag é igual a 0, se aplica o seguinte: - As mensagens SEI contidas na mensagem SEI de aninhamento escalável se aplicam aos conjuntos de camadas ou subcamadas subLayerSet[i] para todos os valores i no intervalo de 0 a nestingNumOps - 1, inclusive, onde as unidades de NAL VCL das camadas ou subcamadas em cada conjunto subLayerSet[i] têm valores de nuh_layer_id que estão incluídos na lista nestingLayerIdList[i] e valores de TemporalId que estão no intervalo do TemporalId da unidade de NAL SEI corrente para maxTemporalId[i], inclusive. - Quando uma mensagem SEI aninhada tem payloadType igual a 2, 3, 6, 9, 16, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 ou 134 (ou seja, uma das mensagens SEI que têm payloadType diferente de qualquer um de 0, 1, 4, 5, 130 e 133), o nuhlayerid da unidade de NAL SEI contendo a mensagem SEI de aninhamento escalável deve ter TemporalId igual a 0 e maxTemporalIdi[i] para todos os i deve ser igual a 6. - Quando uma mensagem SEI aninhada tem payloadType igual a 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 ou 134 (ou seja, uma das mensagens SEI que têm payloasType diferente de qualquer um de 0, 1, 4, 5, 130 e 133) e o valor de nestingNumOps é maior do que 0, a mensagem SEI aninhada se aplica a todas as camadas para as quais cada nuhlayerid está incluído em pelo menos uma das listas nestingLayerIdList[i] com i variando de 0 a nestingNumOps - 1, inclusive. Quando bitstream_subset_flag é igual a 1, as mensagens SEI contidas na mensagem SEI de aninhamento escalável se aplica aos pontos de operação correspondentes aos subfluxos de bits subBitstream[i] para todos os valores i no intervalo de 0 a nestingNumOps - 1, inclusive, onde cada subfluxo de bits subBitstream[i] é a saída do processo de extração de subfluxo de bits da seção 10 com o fluxo de bits, maxTemporalId[i] e nestingLayerIdList[i] como entradas. Quando bitstream_subset_flag é igual a 1 e nesting_op_flag é igual a 0, nestingLayeridList[0] deve incluir e incluir apenas os valores de nuh_layer_id de um dos conjuntos de camadas especificadas pelo VPS. nesting_zero_bit será igual a 0. F.3 Definições Para os efeitos do presente anexo, aplicam-se as definições a seguir em adição às definições na seção 3. Essas definições ou não estão presentes na seção 3 ou substituem as definições na seção 3. [[removido: F.3.1 unidade de acesso: um conjunto de unidades de NAL que são associadas umas com as outras de acordo com uma regra de classificação especificada, são consecutivas em ordem de decodificação, e contêm as unidades de NAL VCL de todas as imagens codificadas associados com o mesmo tempo de saída e suas unidades de NAL não VCL associadas. F.3.2 NOTA 1 - Imagens na mesma unidade de acesso estão associadas com a mesma contagem de ordem de imagem]]. F.3.1 camada de saída alternativa: uma camada que é uma camada de referência direta ou uma camada de referência indireta de uma camada de saída e que pode incluir uma imagem que pode ser emitida quando nenhuma imagem da camada de saída está presente na unidade de acesso contendo a imagem. F.7.4.3.1 Semântica de RBSP do conjunto de parâmetros de vídeo As especificações na subseção 7.4.3.1 aplicam-se com as seguintes modificações e adições: - LayerSetLayerIdList é substituído por LayerSetLayerIdList. - NumLayersInIdList é substituído por NumLayersInIdList. - Substituir “Cada ponto de operação é identificado pela lista de identificadores de camada associada, indicada como OpLayerIdList, que consiste na lista de valores nuh_layer_id de todas as unidades de NAL incluídas no ponto de operação, em ordem crescente de valores de nuh_layer_id, e um OpTid variável, que é igual ao maior TemporalId de todas as unidades de NAL incluídas no ponto de operação.” Com “Cada ponto de operação é identificado pela lista de identificadores de camada associada, indicada como OpLayerIdList, que consiste na lista de valores de nuhlayerid de todas as unidades de NAL incluídas no ponto de operação, em ordem crescente de valores de nuhlayerid, e um OpTid variável, que é igual ao maior TemporalId de todas as unidades de NAL incluídas no ponto de operação. Cada ponto de operação de saída está associado com um ponto de operação e identificado pela uma lista de valores nuh_layer_id de todas as imagens que devem ser emitidas, em ordem crescente de valores de nuh_layer_id, indicada como OptLayerIdList, e o [[removido: uma variável]] OpTid do ponto de operação associado. O OpLayerIdList do ponto de operação associado com um ponto de operação de saída é também referido como a OpLayerIdList do ponto de operação de saída [[removido:, que é igual ao maior TemporalId de todas as unidades de NAL incluídas no ponto de operação. A lista de identificadores de camada associada com a lista OptLayerIdList, indicada como OpLayerIdList, consiste na lista de valores de nuh_layer_id de todas as unidades de NAL incluídas no ponto de operação, em ordem crescente de valores de nuh_layer_id.”.]]
[0114] A FIG. 2 é um diagrama em blocos que ilustra um codificador de vídeo 20 exemplificativo que pode implementar as técnicas descritas nesta invenção. A FIG. 2 é proporcionada para fins de explicação e não deve ser considerada limitante das técnicas como amplamente exemplificadas e descritas nesta invenção. Para fins de explicação, esta invenção descreve o codificador de vídeo 20 no contexto da codificação HEVC. No entanto, as técnicas desta invenção podem ser aplicáveis a outras normas ou métodos de codificação.
[0115] O codificador de vídeo 20 pode ser configurado para exibir vídeo para entidade de pós- processamento 27, que é outro exemplo de dispositivo que pode implementar as técnicas descritas no presente relatório descritivo. A entidade de pós-processamento 27 pretende representar um exemplo de uma entidade de vídeo, tal como um elemento de rede de percepção de meios (MANE), um dispositivo de junção/edição ou outro dispositivo intermediário que pode processar dados codificados do vídeo do codificador de vídeo 20. Em alguns casos, a entidade de pós-processamento 27 pode ser um exemplo de uma entidade de rede. Em alguns sistemas de codificação de vídeo, a entidade de pós-processamento 27 e o codificador de vídeo de 20 podem ser partes de dispositivos separados, enquanto que em outros casos, a funcionalidade descrita com respeito à entidade de pós-processamento 27 pode ser realizada pelo mesmo dispositivo que compreende o codificador de vídeo 20.
[0116] O codificador de vídeo 20 pode realizar intra- e intercodificação de blocos de vídeo dentro de fatias de vídeo. Intracodificação se baseia em predição espacial para reduzir ou eliminar a redundância espacial em vídeo dentro de um determinado quadro ou imagem de vídeo. Intercodificação se baseia em predição temporal para reduzir ou eliminar redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. Intramodo (modo 1) pode se referir a qualquer um de vários modos de compressão de base espacial. Intermodos, tal como predição unidirecional (modo P) ou bi-predição (modo B), podem se referir a qualquer um de vários modos de compressão de base temporal.
[0117] No exemplo da FIG. 2, codificador de vídeo 20 inclui uma unidade de particionamento 35, unidade de processamento de predição 41, unidade de filtro 63, memória de imagem de referência 64, somador 50, unidade de processamento de transformada 52, unidade de quantização 54 e unidade de codificação de entropia 56. A unidade de processamento de predição 41 inclui unidade de estimativa de movimento 42, unidade de compensação de movimento 44 e unidade de processamento de intrapredição 46. Para reconstrução de blocos de vídeo, o codificador de vídeo 20 também inclui unidade de quantização inversa 58, unidade de processamento de transformada inversa 60 e somador 62. A unidade de filtro 63 destina-se a representar um ou mais filtros em sequência, tal como um filtro de desbloqueio, um filtro em sequência adaptativo (ALF) e um filtro de deslocamento de amostra adaptativo (SAO). Embora unidade de filtro 63 seja mostrada na FIG. 2 como sendo um filtro em sequência, em outras configurações, a unidade de filtro 63 pode ser implementada como um filtro pós-sequência.
[0118] Como mostrado na FIG. 2, o codificador de vídeo 20 recebe dados de vídeo e a unidade de particionamento 35 particiona os dados em blocos de vídeo. Este particionamento pode também incluir particionamento em fatias, tiles (blocos) ou outras unidades de maiores dimensões, bem como particionamento de bloco de vídeo, por exemplo, de acordo com uma estrutura de quadtree de LCUs e CUs. O codificador de vídeo 20 geralmente ilustra os componentes que codificam blocos de vídeo dentro de uma fatia de vídeo a ser codificada. A fatia pode ser dividida em vários blocos de vídeo (e possivelmente em conjuntos de blocos de vídeo referidos como tiles). A unidade de processamento de predição 41 pode selecionar um de uma pluralidade de possíveis modos de codificação, tal como um de uma pluralidade de modos de intracodificação ou um de uma pluralidade de modos de intercodificação, para o bloco de vídeo atual com base nos resultados de erro (por exemplo, taxa de codificação e o nível de distorção). A unidade de processamento de predição 41 pode proporcionar o bloco intra- ou intercodificado resultante para o somador 50 para gerar dados de bloco residuais e para o somador 62 para reconstruir o bloco codificado para uso como uma imagem de referência.
[0119] A unidade de processamento de intrapredição 46 dentro da unidade de processamento de predição 41 pode executar codificação intrapreditiva do bloco de vídeo atual em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco atual a ser codificado para prover compressão espacial. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 dentro da unidade de processamento de predição 41 executam codificação interpreditiva do bloco de vídeo atual com relação a um ou mais blocos de predição em uma ou mais imagens de referência para fornecer compressão temporal.
[0120] A unidade de estimativa de movimento 42 pode ser configurada para determinar o modo de interpredição para uma fatia de vídeo de acordo com um padrão predeterminado para uma sequência de vídeo. O padrão predeterminado pode designar fatias de vídeo na sequência como fatias P ou fatias B. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. A estimativa de movimento, realizada pela unidade de estimativa de movimento 42, é o processo de geração de vetores de movimento, que estimam movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de um quadro de vídeo imagem atual ou em relação a um bloco preditivo dentro de uma imagem de referência.
[0121] Um bloco preditivo é um bloco que é verificado corresponder intimamente à PU do bloco de vídeo a ser codificado em termos de diferença de pixel, que pode ser determinada pela soma de diferença absoluta (SAD), soma de diferença de quadrado (SSD) ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de pixel subinteiras de imagens de referência armazenadas em memória de imagem de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de pixel de um-quarto, posições de pixel de um-oitavo, ou outras posições de pixel fracionárias da imagem de referência. Por conseguinte, a unidade de estimativa de movimento 42 pode executar uma busca de movimento com relação às posições de pixel inteiras e posições de pixel fracionadas e exibir um vetor de movimento com uma precisão de pixel fracional.
[0122] A unidade de estimativa de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada pela comparação da posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada de uma primeira lista de imagem de referência (Lista 0) ou uma segunda lista de imagem de referência (Lista 1), cada uma identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação de entropia 56 e unidade de compensação de movimento 44.
[0123] A compensação do movimento, realizada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado por estimativa de movimento, possivelmente realizando interpolações para precisão de subpixel. Ao receber o vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagem de referência. O codificador de vídeo 20 forma um bloco de vídeo residual subtraindo valores de pixel do bloco de predição dos valores de pixel do bloco de vídeo atual sendo codificado, formando valores de diferença de pixel. Os valores de diferença de pixel formam dados residuais para o bloco, e podem incluir tanto os componentes de diferença luma e croma. O somador 50 representa o componente ou componentes que executam esta operação de subtração. A unidade de compensação de movimento 44 pode também gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para utilização pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0124] A unidade de processamento de intrapredição 46 pode intrapredizer um bloco atual, como uma alternativa para a interpredição realizada pela unidade de estimativa de movimento 42 e unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de processamento de intrapredição 46 pode determinar um modo de intrapredição a ser usado para codificar um bloco atual. Em alguns exemplos, a unidade de processamento de intrapredição 46 pode codificar um bloco atual utilizando vários modos de intrapredição, por exemplo, durante passes de codificação separados, e a unidade de processamento de intrapredição 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intrapredição apropriado para usar a partir dos modos testados. Por exemplo, a unidade de processamento de intrapredição 46 pode calcular valores de distorção de taxa usando uma análise de distorção de taxa para os vários modos de intrapredição testados, e selecionar o modo de intrapredição tendo as melhores características de distorção de taxa dentre os modos testados. Análise de distorção de taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original, não codificado, que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (isto é, um número de bits) utilizada para produzir o bloco codificado.A unidade de processamento de intrapredição 46 pode calcular razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo de intrapredição exibe o melhor valor de distorção de taxa para o bloco.
[0125] Em qualquer caso, depois de selecionar um modo de intrapredição para um bloco, a unidade de processamento de intrapredição 46 pode proporcionar informações indicativas do modo de intrapredição selecionado para o bloco para a unidade de codificação de entropia 56. A unidade de codificação de entropia 56 pode codificar as informações que indicam o modo de intrapredição selecionado de acordo com as técnicas da presente descrição. O codificador de vídeo 20 pode incluir nos dados de configuração de fluxo de bits transmitidos, que pode incluir uma pluralidade de tabelas de índice de modo de intrapredição e uma pluralidade de tabelas de índice de modo de intrapredição modificadas (também referidas como tabelas de mapeamento de palavras de código), definições de contextos de codificação para vários blocos, e indicações de um modo mais provável de intrapredição, uma tabela de índice de modo de intrapredição e uma tabela de índice de modo de intrapredição modificada para usar para cada um dos contextos.
[0126] Após a unidade de processamento de predição 41 gerar o bloco preditivo para o bloco de vídeo atual quer através de interpredição ou intrapredição, o codificador de vídeo 20 forma um bloco de vídeo residual subtraindo o bloco preditivo do bloco de vídeo atual. Os dados de vídeo residuais no bloco residual podem ser incluídos em uma ou mais TUs e aplicados à unidade de processamento de transformada 52. A unidade de processamento de transformada 52 transforma os dados de vídeo residuais em coeficientes de transformada residuais usando uma transformada, tal como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente similar. A unidade de processamento de transformada 52 pode converter os dados de vídeo residuais de um domínio de pixel para um domínio da transformada, tal como um domínio de frequência.
[0127] A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 quantifica os coeficientes de transformada para reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. O grau de quantização pode ser modificado por ajuste de um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode, então, realizar uma varredura da matriz incluindo os coeficientes de transformada quantizados. Alternativamente, a unidade de codificação de entropia 56 pode realizar a varredura.
[0128] Após a quantização, a unidade de codificação de entropia 56 realiza codificação de entropia dos coeficientes de transformada quantizados. Por exemplo, a unidade de codificação de entropia 56 pode executar codificação de comprimento variável adaptativo ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra metodologia ou técnica de codificação de entropia. Após a codificação de entropia pela unidade de codificação de entropia 56, o fluxo de bits codificado pode ser transmitido para o decodificador de vídeo 30, ou arquivado para posterior transmissão ou recuperação pelo decodificador de vídeo 30. A unidade de codificação de entropia 56 também pode realizar codificação de entropia dos vetores de movimento e os outros elementos de sintaxe para a fatia de vídeo atual que está sendo codificada.
[0129] A unidade de quantização inversa 58 e a unidade de processamento de transformada inversa 60 aplicam quantização inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio do pixel para utilização posterior como um bloco de referência de uma imagem de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando o bloco residual a um bloco preditivo de uma das imagens de referência dentro de uma das listas de imagem de referência. A unidade de compensação de movimento 44 pode também aplicar um ou mais filtros de interpolação ao bloqueio residual reconstruído para calcular os valores de pixel subinteiros para utilização na estimativa de movimento. O Verão 62 adiciona o bloqueio residual reconstruído ao bloco de predição compensado de movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de referência para armazenamento na memória de imagem de referência 64. O bloco de referência pode ser utilizado pela unidade de estimativa de movimento 42 e unidade de compensação de movimento 44 como um bloco de referência para interprever um bloco em um quadro ou imagem de vídeo subsequente.
[0130] De acordo com aspectos da presente descrição, o codificador de vídeo 20 pode ser configurado para gerar vários elementos de sintaxe, tais como os elementos de sintaxe associados com mensagens SEI descritas acima, incluindo mensagens SEI para codecs de múltiplas camadas. Por exemplo, o codificador de vídeo 20 pode ser configurado para gerar elementos de sintaxe de acordo com qualquer combinação dos quinze aspectos descritos acima em relação à FIG. 1. Em alguns casos, o codificador de vídeo 20 pode codificar tais elementos de sintaxe utilizando unidade de codificação de entropia 56 ou outra unidade responsável pela codificação de dados e geração de um fluxo de bits codificado. Além disso, a entidade pós- processamento 27 da FIG. 2 é outro dispositivo exemplar que pode implementar as técnicas descritas no presente relatório descritivo com relação às mensagens SEI, incluindo mensagens SEI para codecs de múltiplas camadas.
[0131] A FIG. 3 é um diagrama de blocos que ilustra um decodificador de vídeo 30 exemplar que pode implementar as técnicas descritas no presente relatório descritivo. A FIG. 3 é proporcionada para fins de explicação e não é limitativa das técnicas como amplamente exemplificado e descrito no presente relatório descritivo. Para efeitos de explicação, a presente descrição descreve decodificador de vídeo 30 no contexto de codificação HEVC. No entanto, as técnicas no presente relatório descritivo podem ser aplicáveis a outros padrões ou métodos de codificação.
[0132] No exemplo da FIG. 3, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 80, unidade de processamento de predição 81, unidade de quantização inversa 86, unidade de processamento de transformada inversa 88, somador 90, unidade de filtro 91 e memória de imagem de referência 92. A unidade de processamento de predição 81 inclui unidade de compensação de movimento 82 e unidade de processamento de intrapredição 84. O decodificador de vídeo 30 pode, em alguns exemplos, executar um passe de decodificação geralmente recíproco ao passe de codificação descrito com relação ao codificador de vídeo 20 da FIG. 2.
[0133] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados do decodificador de vídeo 20. O decodificador de vídeo 30 pode receber o fluxo de bits de vídeo codificado da entidade de rede 78. A entidade de rede 78 pode, por exemplo, ser um servidor, um MANE, um editor/dispositivo de junção de vídeo ou outro dispositivo do tipo configurado para aplicar uma ou mais das técnicas descritas acima. A entidade de rede 78 pode ou não incluir um codificador de vídeo, tal como um codificador de vídeo 20. Algumas das técnicas descritas no presente relatório descritivo podem ser implementadas pela entidade de rede 78 antes da entidade de rede 78 transmitir o fluxo de bits de vídeo codificado para o decodificador de vídeo 30. Em alguns sistemas de decodificação de vídeo, a entidade de rede 78 e decodificador de vídeo 30 podem ser partes de dispositivos separados, enquanto que em outros casos, a funcionalidade descrita com respeito à entidade de rede 78 pode ser realizada pelo mesmo dispositivo que compreende decodificador de vídeo 30.
[0134] A unidade de decodificação de entropia 80 do decodificador de vídeo 30 realização de codificação de entropia do fluxo de bits para gerar coeficientes quantizados, vetores de movimento e outros elementos de sintaxe. A unidade de decodificação de entropia 80 movimenta para frente os vetores de movimento e outros elementos de sintaxe para a unidade de processamento de predição 81. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível da fatia de vídeo e/ou no nível de bloco de vídeo.
[0135] Quando a fatia de vídeo é codificada como um fatia intracodificada (I), a unidade de processamento de intrapredição 84 da unidade de processamento de predição 81 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados de blocos previamente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (i.e., B ou P), a unidade de compensação de movimento 82 da unidade de processamento de predição 81 produz blocos preditivos para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 80. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagem de referência. O decodificador de vídeo 30 pode construir as listas de quadro de referência, Lista 0 e Lista 1, utilizando técnicas de construção padrão com base em imagens de referência armazenadas na memória de imagem de referência 92.
[0136] A unidade de compensação de movimento 82 determina informações de predição para um bloco de vídeo da fatia de vídeo atual ao analisar os vetores de movimento e outros elementos de sintaxe, e usa as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 82 utiliza alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra- ou interpredição) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B ou fatia P), informações de construção de uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, estado de interpredição para cada bloco de vídeo intercodificado da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0137] A unidade de compensação de movimento 82 também pode executar interpolação com base em filtros de interpolação. A unidade de compensação de movimento 82 pode usar filtros de interpolação como usado pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular os valores interpolados para pixels subinteiros de blocos de referência. Neste caso, a unidade de compensação de movimento 82 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[0138] A unidade de quantização inversa 86 quantiza inverso, ou seja, dequantiza, coeficientes de transformada quantificados fornecidos no fluxo de bits e decodificados pela unidade de decodificação de entropia 80. O processo de quantização inversa pode incluir a utilização de um parâmetro de quantização calculado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa que deve ser aplicado. A unidade de processamento de transformada inversa 88 aplica uma transformada inversa, por exemplo, uma DCT inversa, uma transformada inteira inversa ou um processo de transformada inversa conceituadamente similar, aos coeficientes de transformada a fim de produzir blocos residuais no domínio de pixel.
[0139] Após a unidade de compensação de movimento 82 gerar o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado através da soma dos blocos residuais da unidade de processamento de transformada inversa 88 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 82. O somador 90 representa o componente ou componentes que executam esta operação de somatório. Se desejado, os filtros em sequência (quer na sequência de codificação ou após a sequência de codificação) também podem ser usados para suavizar as transições de pixel, ou de outra forma melhorar a qualidade do vídeo.
[0140] A unidade de filtro 91 destina-se a representar um ou mais filtros em sequência, tal como um filtro de desbloqueio, um filtro em sequência adaptativo (ALF) e um filtro de deslocamento adaptativo de amostra (SAO). Embora unidade de filtro 91 seja mostrada na FIG. 3 como sendo um filtro em sequência, em outras configurações, a unidade de filtro 91 pode ser implementada como um filtro pós-sequência. Os blocos de vídeo decodificados em um dado quadro ou de imagem são então armazenados na memória de imagem de referência 92, que armazena imagens de referência utilizadas para a compensação de movimento subsequente. A memória de imagem de referência 92 também armazena vídeo decodificado para apresentação posterior em um dispositivo de exibição, como o dispositivo de exibição 31 da FIG. 1.
[0141] De acordo com aspectos da presente descrição, o decodificador de vídeo 30 pode ser configurado para interpretar e decodificar vários elementos de sintaxe, tais como os elementos de sintaxe associados com mensagens SEI descritas acima, incluindo mensagens SEI para codecs de múltiplas camadas. Por exemplo, o decodificador de vídeo 30 pode ser configurado para interpretar e decodificar elementos de sintaxe de acordo com qualquer combinação dos quinze aspectos descritos acima em relação à FIG. 1. Em alguns casos, o decodificador de vídeo 30 pode decodificar esses elementos de sintaxe usando unidade de decodificação de entropia 80 ou outra unidade responsável pela decodificação de dados a partir de um fluxo de bits codificado. Além disso, a entidade de rede 78 da FIG. 3 (que pode ser um elemento de rede de percepção de meios) é outro exemplo de dispositivo que pode implementar as técnicas descritas no presente relatório descritivo no que diz respeito às mensagens SEI, incluindo mensagens SEI para codecs de múltiplas camadas.
[0142] A FIG. 4 é um diagrama de blocos que ilustra a unidade de encapsulamento 21 em mais detalhes. No exemplo da FIG. 4, unidade de encapsulamento 21 inclui uma interface de entrada de vídeo 100, uma interface de entrada de áudio 102, uma unidade de criação de arquivo de vídeo 104 e uma interface de saída de arquivo de vídeo 106. A unidade de criação de arquivo de vídeo 104, neste exemplo, inclui uma unidade de geração de mensagem de informação de realce suplementar (SEI) 108, uma unidade de atribuição de identificador (ID) de vista 110, uma unidade de criação de representação 112 e uma unidade de criação de ponto de operação 114.
[0143] A interface de entrada de vídeo 100 e interface de entrada de áudio 102 recebem dados codificados de vídeo e áudio, respectivamente. Embora não seja mostrado no exemplo da FIG. 1, o dispositivo fonte 12 pode também incluir uma fonte de áudio e um codificador de áudio para gerar dados de áudio e codificar dados de áudio, respectivamente. A unidade de encapsulamento 21 pode então encapsular os dados de áudio codificados e os dados de vídeo codificados para formar um arquivo de vídeo. A interface de entrada de vídeo 100 e a interface de entrada de áudio 102 podem receber dados de vídeo e áudio codificados conforme os dados são codificados ou pode recuperar dados de vídeo e áudio codificados a partir de um meio legível por computador. Ao receber dados de vídeo e áudio codificados, a interface de entrada de vídeo 100 e a interface de entrada de áudio 102 passam os dados de vídeo e áudio codificados para a unidade de criação de arquivo de vídeo 104 para montagem em um arquivo de vídeo.
[0144] A unidade de criação de arquivo de vídeo 104 pode corresponder a uma unidade de controle incluindo hardware, software e/ou firmware configurado para executar as funções e procedimentos a ela atribuídos. A unidade de controle pode realizar ainda as funções atribuídas à unidade de encapsulamento 21 em geral. Para exemplos em que a unidade de criação de arquivo de vídeo 104 é concretizada em software e/ou firmware, a unidade de encapsulamento 21 pode incluir um meio legível por computador que compreende instruções para a unidade de criação de arquivo de vídeo 104 e uma unidade de processamento para executar as instruções. Cada uma das subunidades de unidade de criação de arquivo de vídeo 104 (unidade de geração de mensagem SEI 108, unidade de atribuição de ID de vista 110, unidade de criação de representação 112 e unidade de criação de ponto de operação 114, neste exemplo) pode ser implementada como unidades individuais de hardware e/ou módulos de software, e pode ser funcionalmente integrada ou ainda separada em subunidades adicionais.
[0145] A unidade de criação de arquivo de vídeo 104 pode corresponder a qualquer unidade de processamento ou circuito de processamento adequado, tais como, por exemplo, um ou mais microprocessadores, circuitos integrados específicos de aplicação (ASICs), matrizes de portas programáveis em campo (FPGAs), processadores de sinais digitais (DSPs) ou qualquer combinação dos mesmos. A unidade de criação de arquivo de vídeo 104 pode ainda incluir um meio legível por computador não transitório armazenando instruções para qualquer uma ou todas da unidade de geração de mensagem SEI 108, unidade de atribuição de ID de vista 110, unidade de criação de representação 112 e unidade de criação de ponto de operação 114, bem como um processador para executar as instruções.
[0146] Em geral, a unidade de criação de arquivo de vídeo 104 pode criar um ou mais arquivos de vídeo incluindo os dados de áudio e vídeo recebidos. A unidade de criação de arquivo de vídeo 104 pode construir uma descrição da apresentação de meios (MPD) para conteúdos multimídia incluindo duas ou mais vistas. Em outros exemplos, a unidade de criação de arquivo de vídeo 104 pode criar dados de armazenamento de manifesto semelhantes àqueles do MPD para o conteúdo multimídia.
[0147] A unidade de geração de mensagem SEI 108 pode representar uma unidade que gera mensagens SEI. A unidade de geração de mensagem SEI 108 pode, de acordo com as técnicas descritas no presente relatório descritivo, ser configurada para gerar vários elementos de sintaxe, tais como os elementos de sintaxe associados com mensagens SEI descritas acima, incluindo mensagens SEI para codecs de múltiplas camadas. Por exemplo, a unidade de geração de mensagens SEI 108 pode ser configurada para gerar elementos de sintaxe de acordo com qualquer combinação dos quinze aspectos descritos acima em relação à FIG. 1.
[0148] A unidade de atribuição de ID de vista 110 pode atribuir identificadores de vista a cada uma das vistas do conteúdo multimídia. A unidade de criação de representação 112 pode construir uma ou mais representações para o conteúdo multimídia, cada uma das quais pode incluir uma ou mais vista para o conteúdo multimídia. Em alguns exemplos, a unidade de atribuição de ID de vista 110 pode incluir dados nos MPD e/ou representações (por exemplo, dados de cabeçalho para as representações) indicando um máximo e um mínimo dos identificadores de vista para vistas incluídas nas representações. Além disso, a unidade de criação representação 112 pode fornecer informações nos MPD que indicam se IDs de vista maiores correspondem a vistas que têm perspectivas de câmera para a direita ou para a esquerda de perspectivas de câmera para vistas com IDs vista menores.
[0149] Em alguns exemplos, a mesma camada pode ser codificada utilizando várias características de codificação, tais como taxas de quadros diferentes, taxas de bits diferentes, esquemas de codificação diferentes ou outras diferenças. A unidade de criação de representação 112 pode assegurar que cada camada incluída em uma representação comum seja codificada de acordo com as mesmas características de codificação. Desta forma, os MPD e/ou dados de cabeçalho para a representação podem sinalizar um conjunto de características (ou atributos) para a representação que se aplica a todas as camadas na representação. Além disso, a unidade de criação de representação 112 pode criar várias representações, incluindo as mesmas camadas, embora com características de codificação potencialmente diferentes. Em alguns exemplos, a unidade de criação representação 112 pode encapsular cada camada de conteúdos multimídia em representações individuais. Em tais exemplos, para exibir mais de uma camada, o dispositivo de destino 14 pode requerer duas ou mais representações do conteúdo multimídia.
[0150] A unidade de criação de ponto de operação 114 pode criar pontos de operação para uma ou mais representações do conteúdo multimídia. Em geral, um ponto de operação corresponde a um subconjunto de vistas em uma representação que são direcionadas para a saída, onde cada uma das vistas compartilha um nível temporal comum. Como um exemplo um ponto de operação pode ser identificado por um valor temporal_id representando o nível temporal alvo e um conjunto de valores view_id que representam as vistas de saída de destino. Um ponto de operação pode ser associado a um subconjunto de fluxo de bits, que consiste nas vistas de saída de destino e todas as outras vistas das quais as vistas de saída de destino dependem.
[0151] A interface de saída de arquivo de vídeo 106 pode exibir o arquivo de vídeo criado. Por exemplo, a interface de saída de arquivo de vídeo 106 pode ser configurada para fornecer o arquivo de vídeo criado para a interface de saída 22, como descrito acima em relação à FIG. 1.
[0152] Embora as técnicas da FIG. 4 sejam descritas com a unidade de encapsulamento 21 para fins de exemplo, deve ser compreendido que técnicas semelhantes podem ser realizadas por outras unidades de processamento de vídeo, tais como a unidade desencapsulamento 29 (FIG. 1), o codificador de vídeo 20 ou decodificador de vídeo 30. Por exemplo, a unidade de desencapsulamento 29 pode ser configurada para receber um fluxo de bits de múltiplas camadas e analisar/decodificar a sintaxe acima mencionada a partir do fluxo de bits de múltiplas camadas.
[0153] A FIG. 5 é um diagrama de blocos que ilustra um exemplo de conjunto de dispositivos que fazem parte da rede 120. Neste exemplo, a rede 120 inclui dispositivos de roteamento 124A, 124B (dispositivos de roteamento 124) e dispositivo de transcodificação 126. Dispositivos de roteamento 124 e dispositivo de transcodificação 126 são destinados a representar um pequeno número de dispositivos que podem fazer parte da rede 120. Outros dispositivos de rede, tais como switches, hubs, gateways, firewalls, pontes e outros tais dispositivos também podem ser incluídos na rede 120. Além disso, podem ser instalados dispositivos de rede adicionais ao longo de um curso de rede entre o dispositivo de servidor 122 e o dispositivo de cliente 128. O dispositivo de servidor 122 pode corresponder ao dispositivo de origem 12 (Fig. 1), enquanto o dispositivo de cliente 128 pode corresponder ao dispositivo de destino 14 (FIG. 1), em alguns exemplos.
[0154] Em geral, os dispositivos de roteamento 124 implementam um ou mais protocolos de roteamento para troca de dados de rede através da rede 120. Em alguns exemplos, os dispositivos de roteamento 124 podem ser configurados para realizar operações de proxy ou cache. Desta maneira, em alguns exemplos, os dispositivos de roteamento 124 podem ser referidos como dispositivos de proxy. Em geral, os dispositivos de roteamento 124 executam os protocolos de roteamento para descobrir rotas através da rede 120. Ao executar tais protocolos de roteamento, o dispositivo de roteamento 124B pode descobrir uma rota de rede de si mesmo para o dispositivo de servidor 122 via dispositivo de roteamento 124A. Um ou mais dos dispositivos de roteamento 124 podem compreender um MANE que utiliza um ou mais aspectos da presente descrição.
[0155] As técnicas do presente relatório descritivo podem ser implementadas por meio de dispositivos de rede tais como dispositivos de roteamento 124 e dispositivo de transcodificação 126, mas também podem ser implementadas por um dispositivo de cliente 128. Deste modo, os dispositivos de roteamento 124, dispositivo de transcodificação 126 e dispositivo de cliente 128 representam exemplos de dispositivos configurados para executar as técnicas da presente descrição. Além disso, os dispositivos da FIG. 1, e codificador 20 ilustrado na FIG. 2 e decodificador 30 ilustrado na FIG. 3, são também dispositivos exemplares que podem ser configurados para executar as técnicas da presente descrição.
[0156] A FIG. 6 é um diagrama de fluxo que ilustra uma operação exemplar de um dispositivo de processamento de vídeo configurado para codificar uma mensagem SEI de acordo com vários aspectos das técnicas descritas na presente descrição. No exemplo da FIG. 6, um dispositivo de processamento de vídeo, tal como um codificador de vídeo 20, unidade de encapsulamento 21, unidade de desencapsulamento 29, entidade de pós- processamento 27, entidade de rede 78, obtém uma ou mais unidades de NAL VCL de uma primeira camada de um fluxo de bits de múltiplas camadas (140). Por exemplo, em casos em que o dispositivo de processamento de vídeo é um codificador de vídeo ou de um decodificador de vídeo, o dispositivo de processamento de vídeo pode codificar as unidades de NAL VCL em um fluxo de bits de múltiplas camadas ou decodificar as unidades de NAL VCL a partir de um fluxo de bits de múltiplas camadas. Nos exemplos em que o dispositivo de processamento de vídeo não está configurado para codificar ou decodificar tais unidades de NAL VCL, o dispositivo de processamento de vídeo pode analisar e obter as unidades de NAL VCL a partir de um fluxo de bits de múltiplas camadas.
[0157] O dispositivo de processamento de vídeo também codifica (por exemplo, codifica ou decodifica) uma mensagem SEI que é aplicável às unidades de NAL VCL da primeira camada para estar em conjunto com a primeira camada no fluxo de bits de múltiplas camadas (142). Por exemplo, de acordo com aspectos da presente descrição, o dispositivo de processamento de vídeo apenas codifica as unidades de NAL não VCL contendo a mensagem SEI aplicável às unidades de NAL VCL da primeira camada juntamente com as unidades de NAL VCL da primeira camada, e não inclui a mensagem SEI com outras camadas do fluxo de bits de múltiplas camadas. Por exemplo, de acordo com aspectos da presente descrição, o fluxo de bits de múltiplas camadas não contém quaisquer imagens codificadas de qualquer outra camada do fluxo de bits de múltiplas camadas entre as unidades de NAL VCL da primeira camada e as unidades de NAL não VCL contendo a mensagem SEI aplicável às unidades de NAL VCL da primeira camada. Desta forma, a mensagem SEI permanece junto com a camada à qual a mensagem SEI se aplica para unidades de acesso tendo múltiplos componentes de camada. Em alguns exemplos, o dispositivo de processamento de vídeo pode codificar a mensagem SEI para estar diretamente adjacente às unidades de NAL VCL às quais a mensagem se aplica no fluxo de bits de múltiplas camadas.
[0158] Em alguns exemplos, as unidades de NAL VCL da primeira camada são unidades de NAL VCL de uma primeira imagem da primeira camada e a mensagem SEI é uma mensagem SEI de prefixo aplicável à primeira imagem da primeira camada. Em tais exemplos, apenas codificação das unidades de NAL não VCL contendo a mensagem SEI de prefixo juntamente com as unidades de NAL VCL pode incluir apenas codificação das unidades de NAL não VCL anteriores precedendo as unidades de NAL VCL no fluxo de bits. Isto é, o dispositivo de processamento de vídeo pode codificar as unidades de NAL não VCL contendo a mensagem SEI para estarem localizadas imediatamente antes das unidades de NAL VCL da primeira imagem no fluxo de bits de múltiplas camadas.
[0159] Em alguns exemplos, as unidades de NAL VCL da primeira camada são unidades de NAL VCL de uma primeira imagem da primeira camada e a mensagem SEI é uma mensagem SEI de sufixo aplicável à primeira imagem da primeira camada. Em tais exemplos, apenas codificação das unidades de NAL não VCL contendo a mensagem SEI de sufixo em conjunto com as unidades de NAL VCL pode incluir apenas codificação das unidades de NAL não VCL subsequentes às unidades de NAL VCL no fluxo de bits. Isto é, o dispositivo de processamento de vídeo pode codificar as unidades de NAL não VCL contendo a mensagem SEI para estarem localizadas imediatamente seguindo as unidades de NAL VCL da primeira imagem no fluxo de bits múltiplas camadas.
[0160] No exemplo da FIG. 6, o dispositivo de processamento de vídeo também obtém unidades de NAL VCL de uma segunda camada do fluxo de bits de múltiplas camadas (144). Por exemplo, o dispositivo de processamento de vídeo pode codificar (ou seja, codificar ou decodificar) fatias de uma imagem de uma segunda camada do fluxo de bits de múltiplas camadas. O dispositivo de processamento de vídeo também codifica uma mensagem SEI que é aplicável às unidades de NAL VCL da segunda camada para estar junta com as unidades de NAL VCL da segunda camada (146). Por exemplo, tal como descrito acima, o dispositivo de processamento de vídeo pode codificar o fluxo de bits de múltiplas camadas de maneira que o fluxo de bits não contém quaisquer imagens codificadas de qualquer outra camada do fluxo de bits de múltiplas camadas entre as unidades de NAL VCL da segunda camada e as unidades de NAL não VCL contendo a mensagem SEI aplicável às unidades de NAL VCL da segunda camada. Desta forma, a mensagem SEI permanece em conjunto com a camada à qual a mensagem SEI se aplica para unidades de acesso que têm múltiplos componentes de camada.
[0161] Novamente, em alguns exemplos, o dispositivo de processamento de vídeo pode codificar uma ou mais unidades de NAL não VCL contendo uma segunda mensagem SEI de prefixo aplicável às unidades de NAL VCL da segunda imagem seguindo a primeira imagem no fluxo de bits. O dispositivo de processamento de vídeo também pode codificar uma ou mais unidades de NAL não VCL contendo uma segunda mensagem SEI de sufixo aplicável às unidades de NAL VCL da segunda imagem seguindo segunda imagem no fluxo de bits.
[0162] Em alguns casos, o dispositivo de processamento de vídeo pode também determinar um parâmetro máximo de repetição para a mensagem SEI com base em uma unidade de imagem que contém unidades de NAL VCL de uma primeira imagem da primeira camada e a unidades de NAL não VCL associadas da primeira imagem.
[0163] Deve ser também compreendido que as etapas mostradas e descritas em relação à FIG. 6 são fornecidas meramente como um exemplo. Isto é, as etapas mostradas no exemplo da FIG. 6 não têm necessariamente que ser realizadas na ordem mostrada na FIG. 6, e menos etapas, adicionais ou alternativas podem ser realizadas. Além disso, embora as técnicas sejam descritas de um modo geral acima com respeito a um dispositivo de processamento de vídeo, as técnicas podem ser implementadas por uma variedade de dispositivos de processamento de vídeo, tal como um codificador de vídeo 20, unidade de encapsulamento 21, unidade desencapsulamento 29, entidade de pós- processamento 27, entidade de rede 78 ou outras unidades de processamento.
[0164] A FIG. 7 é um diagrama de fluxo que ilustra outra operação exemplar de um dispositivo de processamento de vídeo configurado para codificar uma mensagem SEI de acordo com vários aspectos das técnicas descritas na presente descrição. No exemplo da FIG. 7, um dispositivo de processamento de vídeo, tal como um codificador de vídeo 20, a unidade de encapsulamento 21, unidade desencapsulamento 29, entidade de pós-processamento 27, entidade de rede 78, codifica uma ou mais unidades de NAL não VCL de uma camada de um fluxo de bits de múltiplas camadas que contém uma mensagem SEI hash de imagem decodificada (150). Como mencionado acima, uma mensagem de hash de imagem decodificada pode fornecer uma soma de verificação derivada dos valores de amostra de uma imagem decodificada. A mensagem de hash de imagem decodificada pode ser utilizada, por exemplo, por um decodificador de vídeo 30, para detectar se uma imagem foi corretamente recebida e decodificada.
[0165] O dispositivo de processamento de vídeo também determina um identificador de camada associado com as unidades de NAL não VCL (152). O dispositivo de processamento de vídeo também determina um conjunto de camadas do fluxo de bits de múltiplas camadas ao qual a mensagem SEI hash de imagem decodificada é aplicável com base em um identificador de camada das unidades de NAL não VCL contendo a mensagem SEI hash de imagem decodificada (154). De acordo para os aspectos da presente descrição, o conjunto de camadas aplicáveis de uma mensagem SEI hash de imagem decodificada pode ser especificado para ser a camada com o identificador de camada (nuh_layer_id) que é igual ao identificador camada (nuh_layer_id) da unidade de NAL SEI contendo a mensagem SEI. Ou seja, a mensagem SEI hash da imagem decodificada só se aplica à camada que tem o mesmo identificador camada (nuh_layer_id) da unidade de NAL SEI que contém a mensagem SEI. Em alguns casos, a mensagem SEI hash de imagem decodificada pode ser apenas uma mensagem SEI não aninhada.
[0166] Em alguns exemplos, adicionalmente ou em alternativa, o dispositivo de processamento de vídeo pode também codificar uma ou mais segundas unidades de NAL não VCL do fluxo de bits de múltiplas camadas. As segundas unidades de NAL não VCL podem conter uma mensagem SEI de conjuntos de parâmetros ativos que indica os conjuntos de parâmetros que estão ativos para uma parte específica de dados de vídeo. O dispositivo de processamento de vídeo pode também determinar que a mensagem SEI de conjuntos de parâmetros ativos é aplicável a todas as camadas do fluxo de bits de múltiplas camadas com base em uma ou mais segundas unidades de NAL não VCL contendo a mensagem SEI de conjunto de parâmetros ativos. Isto é, o dispositivo de processamento de vídeo pode determinar que a mensagem SEI de conjuntos de parâmetros é aplicável a todas as camadas do fluxo de bits de múltiplas camadas em virtude da mensagem SEI ser uma mensagem SEI de conjuntos de parâmetros ativos. Em alguns exemplos, o dispositivo de processamento de vídeo pode ainda codificar um ou mais elementos de sintaxe indicando que a mensagem SEI de conjuntos de parâmetros ativos é aplicável a todas as camadas do fluxo de bits de múltiplas camadas. Em alguns exemplos, o dispositivo de processamento de vídeo pode apenas codificar a mensagem SEI de conjuntos de parâmetros ativos como uma mensagem SEI não aninhada.
[0167] Em alguns exemplos, adicionalmente ou em alternativa, o dispositivo de processamento de vídeo pode codificar um ou mais elementos de sintaxe indicando que a informação de campo do quadro está presente em uma mensagem SEI de tempo de imagem do fluxo de bits de múltiplas camadas. O dispositivo de processamento de vídeo também pode aplicar as informações de campo de quadro a todas as camadas em todos os pontos de operação do fluxo de bits de múltiplas camadas ao qual se aplica a mensagem SEI de tempo de imagem.
[0168] Deve também ser compreendido que as etapas mostradas e descritas em relação à FIG. 7 são fornecidas meramente como um exemplo. Isto é, as etapas mostradas no exemplo da FIG. 7 não precisam necessariamente ser realizadas na ordem mostrada na FIG. 7, e menos etapas, adicionais ou alternativas podem ser realizadas. Além disso, embora as técnicas sejam descritas acima de um modo geral no que diz respeito a um dispositivo de processamento de vídeo, as técnicas podem ser implementadas por uma variedade de dispositivos de processamento de vídeo, tais como o codificador de vídeo 20, unidade de encapsulamento 21, unidade desencapsulamento 29, entidade de pós- processamento 27, entidade de rede 78 ou outras unidades de processamento.
[0169] A FIG. 8 é um diagrama de fluxo que ilustra uma outra operação exemplar de um dispositivo de processamento de vídeo configurado para codificar uma mensagem SEI de acordo com vários aspectos das técnicas descritas na presente descrição. No exemplo da FIG. 8, um dispositivo de processamento de vídeo, tal como um codificador de vídeo 20, unidade de encapsulamento 21, unidade desencapsulamento 29, entidade de pós-processamento 27, entidade de rede 78, pode codificar uma ou mais unidades de NAL não VCL de uma camada de um fluxo de bits de múltiplas camadas que contêm uma mensagem SEI tendo um tipo de carga útil SEI (160). O dispositivo de processamento de vídeo pode também determinar a sintaxe do fluxo de bits de múltiplas camadas ao qual a mensagem SEI se aplica com base no tipo de carga útil (162). Por exemplo, o dispositivo de processamento de vídeo pode determinar um ou mais valores de sintaxe de fluxo de bits de múltiplas camadas ao qual a mensagens SEI se aplica com base no tipo de carga útil SEI.
[0170] Por exemplo, de acordo com aspectos da presente descrição, a mensagem SEI pode incluir uma mensagem SEI de aninhamento escalável. Neste exemplo, o dispositivo de processamento de vídeo pode determinar, com base no tipo de carga útil SEI sendo incluída em um primeiro conjunto de tipos de carga útil, que um elemento de sintaxe bitstream_subset_flag da mensagem SEI de aninhamento escalável tem valor zero. Em um exemplo, o primeiro conjunto de tipos de carga útil inclui tipos de carga 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 e 134, como descrito acima, com respeito à FIG. 1, embora o conjunto possa incluir mais ou menos daquelas identificadas no exemplo.
[0171] Em outro exemplo, a mensagem SEI pode ser uma mensagem SEI não aninhada. Neste exemplo, o dispositivo de processamento de vídeo pode determinar, com base no tipo de carga útil SEI sendo incluído em um primeiro conjunto de tipos de carga útil, que um elemento de sintaxe identificador de camada para as unidades de NAL não VCL contendo a mensagem SEI é igual a um elemento de sintaxe identificador de camada de unidades de NAL VCL associadas com a mensagem SEI. Em um exemplo, o primeiro conjunto de tipos de carga útil inclui tipos de carga 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 e 134, embora o conjunto possa incluir mais ou menos daqueles identificados.
[0172] Em ainda outro exemplo, a mensagem SEI pode ser uma mensagem SEI de aninhamento escalável. Neste exemplo, o dispositivo de processamento de vídeo pode determinar, com base no tipo de carga útil de SEI sendo incluído em um primeiro conjunto de tipos de carga útil, que a uma ou mais unidades de NAL não VCL contendo a mensagem SEI de aninhamento escalável têm uma TemporalId que é igual a zero e maxTemporalId[i] que é igual a sete para todos os valores de i. Em um exemplo, o primeiro conjunto de tipos de carga útil inclui tipos de carga 2, 3, 6, 9, 15, 16, 17, 19, 22, 23, 45, 47, 128, 131, 132 e 134, embora o conjunto possa incluir mais ou menos daqueles identificados no exemplo.
[0173] De acordo com aspectos da presente descrição, adicionalmente ou em alternativa, o dispositivo de processamento de vídeo pode codificar uma mensagem SEI de conjuntos de parâmetros ativos do fluxo de bits de múltiplas camadas apenas em uma mensagem SEI não aninhada e não em uma mensagem SEI de aninhamento escalável.
[0174] Adicionalmente ou alternativamente, o dispositivo de processamento de vídeo pode determinar que o identificador de camada da camada de dados de vídeo de múltiplas camadas é de valor zero com base na mensagem SEI contendo uma mensagem SEI de período de buffering não aninhada, uma mensagem SEI de tempo de imagem ou uma mensagem SEI com informações de unidade de decodificação. Em alguns exemplos, o dispositivo de processamento de vídeo também pode codificar um elemento de sintaxe identificador de camada para ter um valor zero.
[0175] Adicionalmente ou em alternativa, o dispositivo de processamento de vídeo pode codificar um elemento de sintaxe bitstream_subset_flag do fluxo de bits de múltiplas camadas. O dispositivo de codificação de vídeo pode, com base no elemento de sintaxe bitstream_subset_flag sendo igual a um e quaisquer conjuntos de camada especificados por um conjunto de parâmetro de vídeo (VPS) do fluxo de bits de múltiplas camadas incluindo identificadores de camada na faixa de zero para um identificador de camada das unidades de NAL não VCL contendo a mensagem SEI, inclusive, determinar que um valor do elemento de sintaxe default_op_flag do fluxo de bits de múltiplas camadas é de valor zero. Em alguns exemplos, o dispositivo de processamento de vídeo também pode codificar o elemento de sintaxe default_op_flag para ter um valor de zero.
[0176] De acordo com um aspecto adicional do presente relatório descritivo, adicionalmente ou em alternativa, o dispositivo de processamento de vídeo pode codificar um nesting_op_flag do fluxo de bits de múltiplas camadas e um all_layers_flag do fluxo de bits de múltiplas camadas. O dispositivo de processamento de vídeo pode, com base no nesting_op_flag tendo um valor de zero e no all_layers_flag tendo um valor de um, determinar que um valor de um elemento de sintaxe maxTemporalId[0] do fluxo de bits de múltiplas camadas é igual a sete. Em alguns exemplos, o dispositivo de processamento de vídeo pode também codificar o elemento de sintaxe maxTemporalId[0] para ter um valor de sete.
[0177] Adicionalmente ou em alternativa, o dispositivo de processamento de vídeo pode codificar um elemento de sintaxe bitstream_subset_flag do fluxo de bits de múltiplas camadas e um elemento de sintaxe nesting_op_flag do fluxo de bits de múltiplas camadas. O dispositivo de processamento de vídeo pode, com base no elemento de sintaxe bitstream_subset_flag tendo um valor de um e no elemento de sintaxe nesting_op_flag tendo um valor de zero, determinar que um nestingLayeridList[0] do fluxo de bits de múltiplas camadas inclui apenas valores de identificador de camada de um conjunto de camadas especificado em um VPS do fluxo de bits múltiplas camadas. Em alguns exemplos, o dispositivo de processamento de vídeo também pode codificar um elemento de sintaxe nestingLayeridList[0] para incluir somente valores de identificador camada de um conjunto de camadas especificado em um VPS do fluxo de bits múltiplas camadas.
[0178] Deve também ser compreendido que as etapas mostradas e descritas em relação à FIG. 8 são fornecidas meramente como um exemplo. Isto é, as etapas mostradas no exemplo da FIG. 8 não tem necessariamente que ser realizadas na ordem mostrada na FIG. 8, e menos etapas, adicionais ou alternativas podem ser realizadas. Além disso, embora as técnicas sejam descritas acima de um modo geral no que diz respeito a um dispositivo de processamento de vídeo, as técnicas podem ser implementadas por uma variedade de dispositivos de processamento de vídeo, tal como um codificador de vídeo 20, unidade de encapsulamento 21, unidade de desencapsulamento 29, entidade de pós- processamento 27, entidade de rede 78 ou outras unidades de processamento.
[0179] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas, como uma ou mais instruções ou código, para um meio legível por computador e executadas por uma unidade de processamento com base em hardware. Meios legíveis por computador podem incluir meios de armazenamento legíveis por computador, o que corresponde a um meio tangível tal como mídia de armazenamento de dados, ou meios de comunicação, incluindo qualquer meio que facilite transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, meios legíveis por computador podem geralmente corresponder a (1) meios de armazenamento legíveis por computador tangíveis que são não transitórios ou (2) um meio de comunicação tal como um sinal ou onda portadora. Meios de armazenamento de dados podem ser quiser meios disponíveis que possam ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e / ou estruturas de dados para a implementação das técnicas descritas no presente relatório descritivo. Um produto de programa de computador pode incluir um meio legível por computador.
[0180] A título de exemplo, e não limitação, tais meios de armazenamento legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnéticos, memória flash ou qualquer outro meio que possa ser usado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é denominada adequadamente um meio legível por computador. Por exemplo, se as instruções forem transmitidas de um site, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fios tais como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra óptica, par torcido, DSL, ou tecnologias sem fios, tais como infravermelho, rádio e micro-ondas estão incluídos na definição de meio. Deve ser compreendido, no entanto, que os meios de armazenamento legíveis por computador e meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios de comunicação transitórios, mas são direcionados a meios de armazenamento não-transitórios, tangíveis. Disquete e disco, como aqui utilizado, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Blu- ray, onde disquetes geralmente reproduzem dados magneticamente, enquanto que os discos reproduzem dados opticamente com lasers. Combinações dos acima também devem ser incluídas no âmbito dos meios legíveis por computador.
[0181] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados específicos de aplicação (ASICs), matrizes de portas programáveis em campo(FPGAs), ou outro circuito lógico integrado ou distinto equivalente. Por conseguinte, o termo “processador”, tal como aqui utilizado, pode se referir a qualquer uma da estrutura acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui. Além disso, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro de módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporada em um codec combinado. Além disso, as técnicas poderiam ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0182] As técnicas da presente descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um telefone celular sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos no presente relatório descritivo para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas reveladas, mas não requerem necessariamente realização por diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por um conjunto de unidades de hardware interoperativas, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequado.
[0183] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do âmbito das reivindicações a seguir.
Claims (14)
1. Método para decodificar dados de vídeo de acordo com um padrão de Codificação de Vídeo de Alta Eficiência (HEVC) ou uma extensão de um padrão de HEVC, caracterizado pelo fato de que o método compreende: decodificar (150) uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação de não vídeo (VCL) de uma camada de um fluxo de bits de multicamadas, em que cada camada do fluxo de bits de multicamadas é associada com um nuh_layer_id diferente, em que as uma ou mais unidades de NAL não-VCL possuem um identificador de camada, nuh_layer_id, que identifica uma das camadas do fluxo de bits de multicamadas, e em que a uma ou mais unidades de NAL não VCL contêm uma mensagem de SEI de hash de imagem decodificada; e determinar (154) um conjunto de camadas do fluxo de bits de multicamadas ao qual a mensagem de SEI de hash de imagem decodificada é aplicável com base no identificador de camada, nuh_layer_id, da uma ou mais unidades de NAL não VCL que contêm a mensagem de SEI de hash de imagem decodificada.
2. Método para codificar dados de vídeo, de acordo com um padrão de Codificação de Vídeo de Alta Eficiência (HEVC) ou uma extensão de um padrão HEVC, caracterizado pelo fato de que o método compreende: codificar (150) uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação de não vídeo (VCL) de uma camada de um fluxo de bits de multicamadas, em que cada camada do fluxo de bits de multicamadas é associada com um nuh_layer_id diferente, em que as uma ou mais unidades de NAL não-VCL possuem um identificador de camada, nuh_layer_id, que identifica uma das camadas do fluxo de bits de multicamadas, e em que a uma ou mais unidades de NAL não VCL contêm uma mensagem de SEI de hash de imagem decodificada; e determinar (154) um conjunto de camadas do fluxo de bits de multicamadas ao qual a mensagem de SEI de hash de imagem decodificada é aplicável com base no identificador de camada, nuh_layer_id, da uma ou mais unidades de NAL não VCL que contêm a mensagem de SEI de hash de imagem decodificada.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente decodificar um ou mais elementos de sintaxe que indicam o identificador de camada da uma ou mais unidades de NAL não VCL, e em que determinar o conjunto de camadas compreende determinar o conjunto de camadas com base no um ou mais elementos de sintaxe; ou o método, de acordo com a reivindicação 2, que compreende adicionalmente codificar um ou mais elementos de sintaxe que indicam o identificador de camada da uma ou mais unidades de NAL não VCL, e em que determinar o conjunto de camadas compreende determinar o conjunto de camadas com base no um ou mais elementos de sintaxe.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que decodificar a uma ou mais unidades de NAL não VCL que contêm a mensagem de SEI de hash de imagem decodificada compreende apenas decodificar uma mensagem de SEI não aninhada; ou o método, de acordo com a reivindicação 1, em que codificar a uma ou mais unidade de NAL não VCL que contêm a mensagem de SEI de hash de imagem decodificada compreende apenas codificar uma mensagem de SEI não aninhada.
5. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que compreende adicionalmente: decodificar ou codificar uma imagem de uma camada incluída no conjunto de camadas; e verificar a imagem quanto a erros com o uso de uma mensagem de SEI de hash de imagem decodificada.
6. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que compreende adicionalmente: decodificar ou codificar uma ou mais segundas unidades de NAL não VCL do fluxo de bits de multicamadas, em que a uma ou mais segundas unidades de NAL não VCL contêm uma mensagem de SEI de conjuntos de parâmetro ativo; e determinar que a mensagem de SEI de conjuntos de parâmetro ativo seja aplicável a todas as camadas do fluxo de bits de multicamadas com base na uma ou mais segundas unidades de NAL não VCL que contêm a mensagem de SEI de conjunto de parâmetro ativo.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que decodificar ou codificar a uma ou mais segundas unidades de NAL não VCL que contêm a mensagem de SEI de conjuntos de parâmetro ativo compreende apenas codificar uma mensagem de SEI não aninhada.
8. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que compreende adicionalmente: decodificar ou codificar um ou mais elementos de sintaxe que indicam que informações de campo de quadro estão presentes em uma mensagem de SEI de temporização de imagem do fluxo de bits de multicamadas; e aplicar as informações de campo de quadro a todas as camadas em todos os pontos de operação aos quais a mensagem de SEI de temporização de imagem se aplica.
9. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que compreende adicionalmente: decodificar ou codificar as camadas de conjunto determinadas do fluxo de bits de multicamadas; usar a mensagem de hash de imagem decodificada para determinar se o conjunto determinado de camadas inclui um ou mais erros.
10. Método, de acordo com a reivindicação 9, quando dependente da reivindicação 2, caracterizado pelo fato de que que codificar o conjunto determinado de camadas compreende: gerar dados residuais para o conjunto determinado de camadas que indica uma diferença entre dados preditivos e dados de vídeo reais; aplicar uma transformada aos dados residuais para gerar coeficientes de transformada; e gerar um fluxo de bits que inclui uma indicação dos coeficientes de transformada.
11. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que decodificar compreende o conjunto determinado de camadas compreende: obter coeficientes de transformada para o conjunto determinado de camadas a partir de um fluxo de bits codificado; aplicar uma transformada inversa aos coeficientes de transformada para gerar dados residuais; e determinar os dados de vídeo com base nos dados residuais gerados.
12. Aparelho para codificar dados de vídeo, caracterizado pelo fato de que o aparelho compreende: meios para codificar (150) uma ou mais unidades da camada de abstração de rede (NAL) da camada de codificação de não vídeo (VCL) de uma camada de um fluxo de bits de múltiplas camadas, em que cada camada do fluxo de bits de multicamadas é associada com um nuh_layer_id diferente, em que as uma ou mais unidades de NAL não-VCL possuem um identificador de camada, nuh_layer_id, que identifica uma das camadas do fluxo de bits de multicamadas, em que a uma ou mais unidades de NAL não VCL contêm uma mensagem de SEI de hash de imagem decodificada; e meios para determinar (154) um conjunto de camadas do fluxo de bits de multicamadas ao qual a mensagem de SEI de hash de imagem decodificada é aplicável com base no identificador de camada, nuh_layer_id, da uma ou mais unidades de NAL não VCL que contêm a mensagem de SEI de hash de imagem decodificada.
13. Aparelho, de acordo com a reivindicação 12, caracterizado pelo fato de que o aparelho compreende pelo menos um dentre: um circuito integrado; um microprocessador; ou um dispositivo de comunicação sem fio.
14. Memória legível por computador, caracterizada pelo fato de que possui instruções nela armazenadas que, quando executadas, fazem com que um o computador realize o método conforme definido em qualquer uma das reivindicações 1 a 11.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461969797P | 2014-03-24 | 2014-03-24 | |
US61/969,797 | 2014-03-24 | ||
US14/665,923 | 2015-03-23 | ||
US14/665,923 US10178397B2 (en) | 2014-03-24 | 2015-03-23 | Generic use of HEVC SEI messages for multi-layer codecs |
PCT/US2015/022286 WO2015148535A1 (en) | 2014-03-24 | 2015-03-24 | Use of hevc decoded picture hash sei messages for multi-layer codecs |
Publications (3)
Publication Number | Publication Date |
---|---|
BR112016022200A2 BR112016022200A2 (pt) | 2017-08-15 |
BR112016022200A8 BR112016022200A8 (pt) | 2021-07-13 |
BR112016022200B1 true BR112016022200B1 (pt) | 2023-12-12 |
Family
ID=54143325
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112016022079-0A BR112016022079B1 (pt) | 2014-03-24 | 2015-03-24 | Método e aparelho para codificação e decodificação de dados de vídeo de acordo com um padrão de codificação de vídeo de alta eficiência (hevc), ou uma extensão de um padrão hevc, assim como memória legível por computador |
BR112016022080-3A BR112016022080B1 (pt) | 2014-03-24 | 2015-03-24 | Uso genérico de mensagens de sei de hevc para codecs de múltiplas camadas |
BR112016022200-8A BR112016022200B1 (pt) | 2014-03-24 | 2015-03-24 | Método para decodificar dados de vídeo, método e aparelho para codificar dados de vídeo e memória legível por computador |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112016022079-0A BR112016022079B1 (pt) | 2014-03-24 | 2015-03-24 | Método e aparelho para codificação e decodificação de dados de vídeo de acordo com um padrão de codificação de vídeo de alta eficiência (hevc), ou uma extensão de um padrão hevc, assim como memória legível por computador |
BR112016022080-3A BR112016022080B1 (pt) | 2014-03-24 | 2015-03-24 | Uso genérico de mensagens de sei de hevc para codecs de múltiplas camadas |
Country Status (8)
Country | Link |
---|---|
US (3) | US9894370B2 (pt) |
EP (3) | EP3123726B1 (pt) |
JP (3) | JP6549145B2 (pt) |
KR (3) | KR102353191B1 (pt) |
CN (3) | CN106105225B (pt) |
BR (3) | BR112016022079B1 (pt) |
MX (3) | MX367235B (pt) |
WO (3) | WO2015148545A1 (pt) |
Families Citing this family (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170272778A9 (en) * | 2014-01-06 | 2017-09-21 | Samsung Electronics Co., Ltd. | Image encoding and decoding methods for preserving film grain noise, and image encoding and decoding apparatuses for preserving film grain noise |
US9894370B2 (en) | 2014-03-24 | 2018-02-13 | Qualcomm Incorporated | Generic use of HEVC SEI messages for multi-layer codecs |
US9800898B2 (en) * | 2014-10-06 | 2017-10-24 | Microsoft Technology Licensing, Llc | Syntax structures indicating completion of coded regions |
EP3226561A1 (en) * | 2016-03-31 | 2017-10-04 | Thomson Licensing | Method and apparatus for coding a video into a bitstream carrying region-based post processing parameters into an sei nesting message |
US10554981B2 (en) | 2016-05-10 | 2020-02-04 | Qualcomm Incorporated | Methods and systems for generating regional nesting messages for video pictures |
US10582201B2 (en) * | 2016-05-19 | 2020-03-03 | Qualcomm Incorporated | Most-interested region in an image |
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 |
GB2560720B (en) * | 2017-03-20 | 2021-08-25 | Canon Kk | Method and apparatus for encoding and transmitting at least a spatial part of a video sequence |
US11468781B2 (en) * | 2017-08-11 | 2022-10-11 | The Boeing Company | Simulation of an asset including message playback using nested hash tables |
CN107690069B (zh) * | 2017-08-28 | 2021-01-01 | 中国科学院深圳先进技术研究院 | 一种数据驱动的级联视频编码方法 |
GB201817781D0 (en) * | 2018-10-31 | 2018-12-19 | V Nova Int Ltd | Mehods, apparatuses, computer programs and computer-readable media |
CN118827977A (zh) | 2018-12-20 | 2024-10-22 | 瑞典爱立信有限公司 | 恢复点的规范指示 |
US11889118B2 (en) * | 2019-02-24 | 2024-01-30 | Sharp Kabushiki Kaisha | Systems and methods for signaling types of pictures and associated information in video coding |
BR112022000158A2 (pt) | 2019-07-08 | 2022-02-22 | Huawei Tech Co Ltd | Restrições de imagem de unidade de nal mista em codificação de vídeo |
CN110446047A (zh) * | 2019-08-16 | 2019-11-12 | 苏州浪潮智能科技有限公司 | 视频码流的解码方法及装置 |
CN114556925B (zh) * | 2019-08-19 | 2024-08-13 | 弗劳恩霍夫应用研究促进协会 | 接入单元分隔符和自适应参数集的使用 |
CN116939219A (zh) | 2019-09-24 | 2023-10-24 | 华为技术有限公司 | 用于所有层的可伸缩嵌套式sei消息 |
WO2021061495A1 (en) * | 2019-09-24 | 2021-04-01 | Futurewei Technologies, Inc. | Scalable nesting for suffix sei messages |
WO2021061531A1 (en) * | 2019-09-24 | 2021-04-01 | Futurewei Technologies, Inc. | Ols for multiview scalability |
AU2020352900A1 (en) * | 2019-09-24 | 2022-04-14 | Huawei Technologies Co., Ltd. | Scalable Nesting SEI Messages For OLSs |
WO2021061489A1 (en) | 2019-09-24 | 2021-04-01 | Futurewei Technologies, Inc. | Signaling of dpb parameters for multi-layer video bitstreams |
CN117499660A (zh) | 2019-09-24 | 2024-02-02 | 华为技术有限公司 | 对ols的hrd一致性测试 |
WO2021122367A1 (en) * | 2019-12-19 | 2021-06-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Film grain process |
US20210195259A1 (en) * | 2019-12-23 | 2021-06-24 | Comcast Cable Communications, Llc | Method and apparatus for managing redundant segmented streams |
BR112022012708A2 (pt) | 2019-12-26 | 2022-09-06 | Bytedance Inc | Métodos para processamento de vídeo e para armazenar fluxo contínuo de bits, aparelhos de decodificação e de codificação de vídeo, mídias de armazenamento e de gravação legíveis por computador não transitórias, e, método, aparelho ou sistema |
KR102708658B1 (ko) | 2019-12-26 | 2024-09-24 | 바이트댄스 아이엔씨 | 비디오 코딩에서의 프로필, 티어 및 계층 표시 |
BR112022011719A2 (pt) * | 2019-12-26 | 2022-09-06 | Bytedance Inc | Método de processamento de vídeo, aparelho de processamento de dados de vídeo, e, mídias de armazenamento e de gravação legíveis por computador |
WO2021128295A1 (en) * | 2019-12-27 | 2021-07-01 | Huawei Technologies Co., Ltd. | An encoder, a decoder and corresponding methods for inter prediction |
CN113055668B (zh) * | 2019-12-27 | 2023-06-02 | 腾讯美国有限责任公司 | 从已编码视频比特流中提取子比特流的方法和设备 |
CN114902566A (zh) | 2019-12-27 | 2022-08-12 | 字节跳动有限公司 | 参数集中的子图片信令 |
WO2021142364A1 (en) * | 2020-01-09 | 2021-07-15 | Bytedance Inc. | Signalling of high level syntax indication |
DK202070130A1 (en) | 2020-02-28 | 2021-12-21 | Vkr Holding As | A roof window with an opening restrictor for limiting the opening of a roof window |
TWI718026B (zh) * | 2020-03-13 | 2021-02-01 | 松翰科技股份有限公司 | 圖像指標 |
US12132918B2 (en) | 2020-03-30 | 2024-10-29 | Lg Electronics Inc. | Image encoding/decoding method and apparatus for signaling information about number of DPB parameters, and computer-readable recording medium storing bitstream |
JP7436703B2 (ja) * | 2020-03-30 | 2024-02-22 | エルジー エレクトロニクス インコーポレイティド | Dpbパラメータをシグナリングする画像符号化/復号化方法及び装置、並びにビットストリームを保存したコンピュータ可読記録媒体 |
WO2021201510A1 (ko) * | 2020-04-02 | 2021-10-07 | 엘지전자 주식회사 | Dpb 관련 정보 및 ptl 관련 정보를 시그널링하는 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 컴퓨터 판독 가능한 기록 매체 |
US11706428B2 (en) * | 2020-04-06 | 2023-07-18 | Tencent America LLC | Method for signaling picture header in coded video stream |
CN115699765A (zh) | 2020-05-22 | 2023-02-03 | 字节跳动有限公司 | 访问单元中图片信息的信令 |
WO2021233422A1 (en) * | 2020-05-22 | 2021-11-25 | Beijing Bytedance Network Technology Co., Ltd. | Subpicture sub-bitstream extraction improvements |
JP7529807B2 (ja) * | 2020-05-22 | 2024-08-06 | バイトダンス インコーポレイテッド | 映像サブビットストリーム抽出処理におけるスケーラブルネスト化されたseiメッセージのハンドリング |
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 |
WO2021252533A1 (en) * | 2020-06-09 | 2021-12-16 | Bytedance Inc. | Sub-bitstream extraction of multi-layer video bitstreams |
AU2021288582A1 (en) | 2020-06-09 | 2023-01-05 | Bytedance Inc. | Signaling constraints in non-scalable nested video syntax elements |
US11321878B2 (en) | 2020-06-26 | 2022-05-03 | Sony Group Corporation | Decoded tile hash SEI message for V3C/V-PCC |
US11580671B2 (en) * | 2020-08-17 | 2023-02-14 | Tencent America LLC | Hash-based attribute prediction for point cloud coding |
EP3972269A1 (en) | 2020-09-17 | 2022-03-23 | Lemon Inc. | Subpicture entity groups in video coding |
CN116325753A (zh) | 2020-09-25 | 2023-06-23 | 抖音视界有限公司 | 子比特流提取 |
GB2599171A (en) * | 2020-09-29 | 2022-03-30 | Canon Kk | Method and apparatus for encapsulating video data into a file |
US12041386B2 (en) | 2020-09-29 | 2024-07-16 | Lemon Inc. | Dependent random access point indication in video bitstreams |
CN117178554A (zh) * | 2021-04-12 | 2023-12-05 | 瑞典爱立信有限公司 | 消息引用 |
US12113974B2 (en) * | 2021-09-30 | 2024-10-08 | Nokia Technologies Oy | High-level syntax for signaling neural networks within a media bitstream |
WO2024026032A1 (en) * | 2022-07-27 | 2024-02-01 | Bytedance Inc. | Enhanced signalling of sei processing order in video bitstreams |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7586924B2 (en) | 2004-02-27 | 2009-09-08 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Apparatus and method for coding an information signal into a data stream, converting the data stream and decoding the data stream |
KR100997277B1 (ko) * | 2004-04-28 | 2010-11-29 | 파나소닉 주식회사 | 스트림 생성 장치, 스트림 생성 방법, 및 기록 매체 |
US20070014346A1 (en) | 2005-07-13 | 2007-01-18 | Nokia Corporation | Coding dependency indication in scalable video coding |
US20070189732A1 (en) | 2006-02-10 | 2007-08-16 | Sai Pothana | System and method for reconstructing MPEG-2 start codes from AVC data |
US8699583B2 (en) | 2006-07-11 | 2014-04-15 | Nokia Corporation | Scalable video coding and decoding |
CN106982382B (zh) | 2006-10-16 | 2020-10-16 | 维德约股份有限公司 | 用于在可分级视频编码中信令并执行时间级切换的系统和方法 |
US20100142613A1 (en) * | 2007-04-18 | 2010-06-10 | Lihua Zhu | Method for encoding video data in a scalable manner |
US20080291999A1 (en) | 2007-05-24 | 2008-11-27 | Julien Lerouge | Method and apparatus for video frame marking |
US9712833B2 (en) * | 2007-06-26 | 2017-07-18 | Nokia Technologies Oy | System and method for indicating temporal layer switching points |
EP2257067A1 (en) * | 2009-05-29 | 2010-12-01 | Thomson Licensing | Method for inserting watermark assistance data in a bitstream, method of watermarking said bitstream, device implementing the method of watermarking and bitstream comprising the watermark assistance data |
JP2011066844A (ja) * | 2009-09-18 | 2011-03-31 | Toshiba Corp | 並列復号装置及びプログラム並びに符号化データの並列復号方法 |
US8918533B2 (en) * | 2010-07-13 | 2014-12-23 | Qualcomm Incorporated | Video switching for streaming video data |
JP2012222710A (ja) | 2011-04-13 | 2012-11-12 | Hitachi Consumer Electronics Co Ltd | 符号化装置および復号装置 |
US9247249B2 (en) * | 2011-04-20 | 2016-01-26 | Qualcomm Incorporated | Motion vector prediction in video coding |
US10237565B2 (en) | 2011-08-01 | 2019-03-19 | Qualcomm Incorporated | Coding parameter sets for various dimensions in video coding |
US9124895B2 (en) * | 2011-11-04 | 2015-09-01 | Qualcomm Incorporated | Video coding with network abstraction layer units that include multiple encoded picture partitions |
EP2822276B1 (en) * | 2012-02-29 | 2018-11-07 | LG Electronics Inc. | Inter-layer prediction method and apparatus using same |
DE102012204103A1 (de) | 2012-03-15 | 2013-09-19 | Siemens Aktiengesellschaft | Hitzeschildelement für einen Verdichterluftbypass um die Brennkammer |
US9351016B2 (en) * | 2012-04-13 | 2016-05-24 | Sharp Kabushiki Kaisha | Devices for identifying a leading picture |
US10863170B2 (en) * | 2012-04-16 | 2020-12-08 | Nokia Technologies Oy | Apparatus, a method and a computer program for video coding and decoding on the basis of a motion vector |
US20160165230A9 (en) | 2012-04-16 | 2016-06-09 | Texas Instruments Incorporated | Color Component Checksum Computation in Video Coding |
US20130278834A1 (en) | 2012-04-20 | 2013-10-24 | Samsung Electronics Co., Ltd. | Display power reduction using extended nal unit header information |
KR20200077615A (ko) | 2012-06-12 | 2020-06-30 | 엘지전자 주식회사 | 영상 디코딩 방법 및 이를 이용하는 장치 |
CN104335585B (zh) | 2012-06-24 | 2019-02-19 | Lg 电子株式会社 | 图像解码方法和使用其的装置 |
KR101678321B1 (ko) * | 2012-07-02 | 2016-11-21 | 노키아 테크놀로지스 오와이 | 비디오 코딩을 위한 방법 및 장치 |
US10116947B2 (en) * | 2012-07-06 | 2018-10-30 | Samsung Electronics Co., Ltd. | Method and apparatus for coding multilayer video to include scalable extension type information in a network abstraction layer unit, and method and apparatus for decoding multilayer video |
DK3122048T3 (en) * | 2012-09-26 | 2018-03-12 | Velos Media Int Ltd | Process for image coding and device for image coding |
KR20140043239A (ko) * | 2012-09-27 | 2014-04-08 | 한국전자통신연구원 | 계층간 전환을 이용한 영상 부호화/복호화 방법 및 그 장치 |
KR20140052831A (ko) | 2012-09-28 | 2014-05-07 | 삼성전자주식회사 | 참조 픽처 정보를 이용한 병렬 처리 비디오 부호화 방법 및 장치, 병렬 처리 비디오 복호화 방법 및 장치 |
US9479782B2 (en) * | 2012-09-28 | 2016-10-25 | Qualcomm Incorporated | Supplemental enhancement information message coding |
US20140092992A1 (en) | 2012-09-30 | 2014-04-03 | Microsoft Corporation | Supplemental enhancement information including confidence level and mixed content information |
CN107770545B (zh) | 2012-12-10 | 2020-04-24 | Lg 电子株式会社 | 解码图像的方法和使用其的装置 |
US20140177706A1 (en) * | 2012-12-21 | 2014-06-26 | Samsung Electronics Co., Ltd | Method and system for providing super-resolution of quantized images and video |
WO2014112354A1 (en) | 2013-01-15 | 2014-07-24 | Sharp Kabushiki Kaisha | Video decoder with signaling |
US9807421B2 (en) * | 2013-04-05 | 2017-10-31 | Sharp Kabushiki Kaisha | NAL unit type restrictions |
US9591321B2 (en) | 2013-04-07 | 2017-03-07 | Dolby International Ab | Signaling change in output layer sets |
US9609329B2 (en) * | 2013-06-25 | 2017-03-28 | Samsung Electronics Co., Ltd | Dynamic voltage/frequency scaling for video processing using embedded complexity metrics |
WO2015009693A1 (en) * | 2013-07-15 | 2015-01-22 | Sony Corporation | Layer based hrd buffer management for scalable hevc |
JP6212212B2 (ja) * | 2013-10-11 | 2017-10-11 | ヴィド スケール インコーポレイテッド | Hevc拡張のための高レベル構文 |
US10554990B2 (en) * | 2013-10-14 | 2020-02-04 | Nokia Technologies Oy | Apparatus, a method and a computer program for video coding and decoding |
WO2015076616A1 (ko) * | 2013-11-21 | 2015-05-28 | 엘지전자 주식회사 | 신호 송수신 장치 및 신호 송수신 방법 |
WO2015137237A1 (ja) | 2014-03-14 | 2015-09-17 | シャープ株式会社 | 画像復号装置 |
CN104935944B (zh) | 2014-03-18 | 2018-03-13 | 华为技术有限公司 | 一种视频数据编码、解码的方法和装置 |
US9894370B2 (en) | 2014-03-24 | 2018-02-13 | Qualcomm Incorporated | Generic use of HEVC SEI messages for multi-layer codecs |
-
2015
- 2015-03-23 US US14/665,953 patent/US9894370B2/en active Active
- 2015-03-23 US US14/665,999 patent/US10645404B2/en active Active
- 2015-03-23 US US14/665,923 patent/US10178397B2/en active Active
- 2015-03-24 KR KR1020167026708A patent/KR102353191B1/ko active IP Right Grant
- 2015-03-24 WO PCT/US2015/022297 patent/WO2015148545A1/en active Application Filing
- 2015-03-24 WO PCT/US2015/022286 patent/WO2015148535A1/en active Application Filing
- 2015-03-24 EP EP15768859.9A patent/EP3123726B1/en active Active
- 2015-03-24 BR BR112016022079-0A patent/BR112016022079B1/pt active IP Right Grant
- 2015-03-24 EP EP15715581.3A patent/EP3123725A1/en not_active Ceased
- 2015-03-24 BR BR112016022080-3A patent/BR112016022080B1/pt active IP Right Grant
- 2015-03-24 EP EP15715071.5A patent/EP3123724B1/en active Active
- 2015-03-24 MX MX2016011212A patent/MX367235B/es active IP Right Grant
- 2015-03-24 CN CN201580014137.5A patent/CN106105225B/zh active Active
- 2015-03-24 MX MX2016011603A patent/MX359788B/es active IP Right Grant
- 2015-03-24 KR KR1020167026707A patent/KR102353659B1/ko active IP Right Grant
- 2015-03-24 JP JP2016558403A patent/JP6549145B2/ja active Active
- 2015-03-24 MX MX2016011208A patent/MX360864B/es active IP Right Grant
- 2015-03-24 CN CN201580014124.8A patent/CN106170982B/zh active Active
- 2015-03-24 BR BR112016022200-8A patent/BR112016022200B1/pt active IP Right Grant
- 2015-03-24 JP JP2016558371A patent/JP6608386B2/ja active Active
- 2015-03-24 CN CN201580013735.0A patent/CN106134200B/zh active Active
- 2015-03-24 JP JP2016558367A patent/JP2017514361A/ja active Pending
- 2015-03-24 WO PCT/US2015/022303 patent/WO2015148550A2/en active Application Filing
- 2015-03-24 KR KR1020167026709A patent/KR102372120B1/ko active IP Right Grant
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112016022200B1 (pt) | Método para decodificar dados de vídeo, método e aparelho para codificar dados de vídeo e memória legível por computador | |
JP6585096B2 (ja) | マルチレイヤビデオコーディング | |
JP6701100B2 (ja) | マルチレイヤビデオコーデック内の回復点seiメッセージ | |
BR112016030194B1 (pt) | Codificação de vídeo de multi-camada |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B15K | Others concerning applications: alteration of classification |
Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04N 19/70 , H04N 19/89 , H04N 19/30 Ipc: H04N 19/70 (2014.01), H04N 19/88 (2014.01), H04N 1 |
|
B350 | Update of information on the portal [chapter 15.35 patent gazette] | ||
B06A | Patent application procedure suspended [chapter 6.1 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 24/03/2015, OBSERVADAS AS CONDICOES LEGAIS |