BR112015025643B1 - Codificação de dados de vídeo para um conjunto de camada de saída - Google Patents

Codificação de dados de vídeo para um conjunto de camada de saída Download PDF

Info

Publication number
BR112015025643B1
BR112015025643B1 BR112015025643-0A BR112015025643A BR112015025643B1 BR 112015025643 B1 BR112015025643 B1 BR 112015025643B1 BR 112015025643 A BR112015025643 A BR 112015025643A BR 112015025643 B1 BR112015025643 B1 BR 112015025643B1
Authority
BR
Brazil
Prior art keywords
layer
vps
layers
video
video data
Prior art date
Application number
BR112015025643-0A
Other languages
English (en)
Other versions
BR112015025643A2 (pt
Inventor
Adarsh Krishnan Ramasubramonian
Ye-Kui Wang
Ying Chen
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/247,110 external-priority patent/US9473771B2/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112015025643A2 publication Critical patent/BR112015025643A2/pt
Publication of BR112015025643B1 publication Critical patent/BR112015025643B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Abstract

CODIFICAÇÃO DE DADOS DE VÍDEO PARA UM CONJUNTO DE CAMADA DE SAÍDA. Sistemas, métodos, e dispositivos para codificação de dados de vídeo de múltiplas camadas são descritos e podem incluir a codificação, decodificação, transmissão ou recepção de dados de vídeo de múltiplas camadas. Os sistemas, métodos e dispositivos podem receber ou transmitir um primeiro conjunto de camadas de saída para um conjunto de camadas e receber ou transmitir um segundo conjunto de camadas de saída para o conjunto de camadas. Os sistemas, métodos e dispositivos podem codificar (codificar ou decodificar) dados de vídeo para pelo menos um primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída.

Description

[0001] Esse pedido reivindica os benefícios do pedido provisório U.S. No. 61/809.858, depositado em 8 de abril de 2013, que é incorporado aqui por referência em sua totalidade.
Campo Técnico
[0002] Essa descrição se refere à codificação de conjuntos de parâmetros em codificação de vídeo.
[0003] Capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, incluindo televisores digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, computadores tablet, leitoras de e-book, câmeras digitais, dispositivos de gravação digital, aparelhos de mídia digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, telefones celulares ou via satélite, os chamados "smartphones", dispositivos de teleconferência de vídeo, dispositivos de sequenciamento de vídeo, e similares. Os dispositivos de vídeo digital implementam as técnicas de compressão de vídeo, tal como descrito nos padrões definidos pelo padrão MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão 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ção de vídeo digital de forma mais eficiente pela implementação de tais técnicas de compressão de vídeo.
[0004] As técnicas de compressão de vídeo realizam a predição espacial (intraimagem) e/ou temporal (interimagem) para reduzir ou remover a redundância inerente às sequências de vídeo. Para a codificação de vídeo com base em bloco, uma fatia de vídeo (isto é, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também podem ser referidos como blocos de árvore, 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 utilizando-se a predição espacial com relação às amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem são codificados utilizando a predição espacial com relação às amostras de referência em blocos vizinhos na mesa predição de imagem ou temporal com relação às 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 de predição para um bloco a ser codificado. Os dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco de predição. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco de predição, e os dados residuais indicando a diferença entre o bloco codificado e o bloco de predição. 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 de domínio de pixel em um domínio de transformada, resultando em coeficientes de transformada residuais, que então podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em um conjunto bidimensional, podem ser digitalizados a fim de produzir um vetor unidimensional dos coeficientes de transformada, e a codificação por entropia pode ser aplicada aos coeficientes de transformada para alcançar uma compressão adicional.
Sumário
[0006] Essa descrição refere-se às técnicas para codificação de conjuntos de parâmetros de modo que mais de um conjunto de camadas de saída possa ser codificado para um conjunto de camadas. Em um exemplo, um primeiro conjunto de camadas de saída para um conjunto de camadas e um segundo conjunto de camadas de saída para o conjunto de camada podem ser utilizados para codificar os dados de vídeo. Por exemplo, dados de vídeo podem ser codificados para o primeiro conjunto de camadas de saída e para o segundo conjunto de camadas de saída.
[0007] Essa descrição se refere às técnicas para codificação dos conjuntos de parâmetros. Por exemplo, um codificador de vídeo pode codificar toda a informação de perfil, tier e/ou de nível em VPS, e informação de perfil, tier, de nível pode ser associada com cada conjunto de camadas de saída sinalizado por um perfil, tier, estrutura de sintaxe de nível em alguns exemplos de forma que sejam acessíveis sem decodificação por entropia. Em um exemplo, a descrição descreve as técnicas para a codificação de estruturas de sintaxe profile_tier_level em sintaxe de extensão de conjunto de parâmetros, tal como a sintaxe de extensão de conjunto de parâmetros de vídeo (VPS), em alguns exemplos em uma posição dentro da sintaxe de extensão de conjunto de parâmetros que é acessível sem codificação por entropia (isto é, antes de qualquer um dos elementos de sintaxe codificados por entropia na extensão de conjunto de parâmetros). Enquanto em alguns exemplos toda a informação de perfil, tier e/ou nível no VPS pode ser accessível sem codificação por entropia, em outros exemplos, uma quantidade reduzida de codificação por entropia ou alguma codificação por entropia limitada pode ser necessária para alguma ou toda a informação de perfil, tier e/ou nível no VPS.
[0008] Em outro exemplo, essa descrição se refere a técnicas para codificação da informação de dependência de camada de codificação em dados de vídeo de múltiplas camadas em um VPS de modo que seja acessível sem a decodificação por entropia. Alguns exemplos podem codificar os dados de vídeo de múltiplas camadas, incluindo a transmissão ou recebimento de uma informação de dependência de camada codificada por não entropia. A informação de dependência de camada indica se uma das camadas é uma camada de referência direta para outras camadas.
[0009] Em outro exemplo, essa descrição se refere às técnicas para codificação de conjuntos de parâmetros. Por exemplo, um codificador de vídeo pode codificar toda a informação de perfil, tier e/ou nível no VPS, e informação de perfil, tier, nível pode ser associada com cada conjunto de camadas de saída sinalizada por uma estrutura de sintaxe de perfil, tier, nível, em alguns casos de uma forma que seja acessível sem decodificação por entropia. Enquanto em alguns exemplos toda a informação de perfil, tier e/ou nível no VPS pode ser acessível sem codificação por entropia, em outros exemplos, uma quantidade reduzida de codificação por entropia ou alguma codificação por entropia limitada pode ser necessária para alguma informação de perfil, tier e/ou nível no VPS.
[0010] Em outro exemplo, essa descrição se refere a técnicas para codificação de informação de sinal visual, tal como video_format, video_full_range_flag, colour_primaries, transfer_characteristics, matrix_coeffs, por camada no VPS.
[0011] Em outro exemplo, essa descrição refere- se a técnicas para compartilhamento SPS por camadas de diferentes resoluções espaciais, profundidade de bit, e formatos de cor.
[0012] Em outro exemplo, essa descrição refere- se a técnicas para codificação de vídeo de modo que nenhuma informação de temporização seja fornecida na Informação de Capacidade de Utilização de Vídeo (VUI) de um conjunto de parâmetros de sequência (SPS) com ID de camada (nuh_layer_id) superior a 0.
[0013] Em outro exemplo, essa descrição refere- se a técnicas para codificação de vídeo de modo que nenhuma sinalização explícita de camadas de saída alvo seja fornecida para os conjuntos de camada de saída padrão.
[0014] Em outro exemplo, essa descrição refere- se a técnicas para evitar a sinalização do número máximo de subcamadas temporais que podem estar presente em cada sequência de vídeo codificada (CVS) (sps_max_sub_layers_minus1) ou se a interpredição for adicionalmente restrita para CVSs (sps_temporal_id_nesting_flag) em SPSs com ID de camada maior que 0.
[0015] Em outro exemplo, essa descrição refere- se a técnicas para, elemento de sintaxe output_layer_set_idx[i] pode ser mudado para output_layer_set_idx_minus1[i] de acordo com as técnicas dessa descrição.
[0016] Em um exemplo, a descrição descreve um método de decodificação de dados de vídeo de múltiplas camadas, o método compreendendo o recebimento de um primeiro conjunto de camadas de saída para um conjunto de camadas, o recebimento de um segundo conjunto de camadas de saída para o conjunto de camadas, e a decodificação de dados d vídeo para pelo menos um dentre o primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída.
[0017] Em outro exemplo, a descrição descreve um método de codificação de dados de vídeo de múltiplas camadas, o método compreendendo a codificação de dados de vídeo para pelo menos um dentre o primeiro conjunto de camadas de saída e um segundo conjunto de camadas de saída, o primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída para um conjunto de camadas, transmitindo o primeiro conjunto de camadas de saída para o conjunto de camadas, e transmitindo o segundo conjunto de camadas de saída para o conjunto de camadas.
[0018] Em outro exemplo, a descrição descreve um aparelho para decodificação de dados de vídeo compreendendo uma memória configurada para armazenar os dados de vídeo, e um ou mais processadores configurados para receber um primeiro conjunto de camadas de saída para um conjunto de camadas, receber um segundo conjunto de camadas de saída para o conjunto de camadas, e decodificar os dados de vídeo para pelo menos um dentre o primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída.
[0019] Em outro exemplo, a descrição descreve um aparelho para decodificação de dados de vídeo compreendendo meios para receber um primeiro conjunto de camadas de saída para um conjunto de camadas, meios para receber um segundo conjunto de camadas de saída para o conjunto de camadas, e meios para decodificar os dados de vídeo para pelo menos um dentre o primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída.
[0020] Em outro exemplo, a descrição descreve um meio de armazenamento legível por computador. O meio de armazenamento legível por computador tendo armazenadas no mesmo, instruções que depois da execução fazem com que um ou mais processadores recebam um primeiro conjunto de camadas de saída para um conjunto de camadas, recebam um segundo conjunto de camadas de saída para o conjunto de camadas, e decodifique os dados de vídeo para pelo menos um dentre o primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída.
[0021] Os detalhes de um ou mais exemplos são apresentados nos desenhos em anexo e na descrição abaixo. Outras características, objetivos e vantagens serão aparentes a partir da descrição e dos desenhos, e a partir das reivindicações.
Breve Descrição dos Desenhos
[0022] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo ilustrativo que pode utilizar as técnicas descritas nessa descrição.
[0023] A figura 2 é um diagrama em bloco ilustrando um codificador de vídeo ilustrativo que pode implementar as técnicas descritas nessa descrição;
[0024] A figura 3 é um diagrama em bloco ilustrando um decodificador de vídeo ilustrativo que pode implementar as técnicas descritas nessa descrição;
[0025] A figura 4 é um fluxograma ilustrando um método ilustrativo para decodificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui;
[0026] A figura 5 é um fluxograma ilustrando outro método ilustrativo para codificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui;
[0027] A figura 6 é um fluxograma ilustrando um método ilustrativo para decodificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui;
[0028] A figura 7 é um fluxograma ilustrando um método ilustrativo para codificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui;
[0029] A figura 8 é um fluxograma ilustrando um método ilustrativo para decodificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui;
[0030] A figura 9 é um fluxograma ilustrando um método ilustrativo para codificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui;
[0031] A figura 10 é um fluxograma ilustrando um método ilustrativo para decodificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui;
[0032] A figura 11 é um fluxograma ilustrando um método ilustrativo para codificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui;
[0033] A figura 12 é um fluxograma ilustrando um método ilustrativo para decodificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui;
[0034] A figura 13 é um fluxograma ilustrando um método ilustrativo para codificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui;
Descrição Detalhada
[0035] Essa descrição é geralmente relacionada com o campo de codificação e compressão de vídeo. Como um exemplo, a descrição é relacionada com o padrão de codificação de vídeo de alta eficiência (HEVC) atualmente em desenvolvimento. O termo "codificação" se refere à codificação e decodificação, e técnicas podem ser aplicadas à codificação, decodificação ou ambas a codificação e decodificação. Como descrito em maiores detalhes, as técnicas podem ser relacionadas com intracodificação (por exemplo, intrapredição) onde um bloco dentro de uma imagem é previsto com relação a outro bloco ou blocos na mesma imagem (isto é, predição espacial).
[0036] Nos sistemas de codificação de vídeo anteriores, o acesso ao perfil, tier e nível para conjuntos de camadas exigem decodificação por entropia. De forma similar, a informação de dependência de camada não é acessível sem decodificação por entropia. A sinalização de um conjunto de camadas de saída também pode ser problemática e ineficiente.
[0037] Um exemplo de sistemas, métodos e dispositivos descritos aqui fornece um conjunto de estruturas de sintaxe profile_tier_level () a ser sinalizado em sintaxe de extensão de conjunto de parâmetros, tal como a sintaxe de extensão de conjunto de parâmetros de vídeo (VPS), potencialmente em uma posição dentro da sintaxe de extensão que é acessível sem codificação por entropia (por exemplo, antes dos elementos codificados por entropia na sintaxe de extensão) e/ou com alguma codificação por entropia reduzida ou limitada. A sintaxe de extensão VPS será descrita por toda essa descrição para fins de ilustração. Em um exemplo, o VPS é uma estrutura de sintaxe contendo elementos de sintaxe que se aplicam a zero ou mais sequências de vídeo totalmente codificadas (CVSs) como determinado pelo conteúdo de um elemento de sintaxe encontrado no SPS referido por um elemento de sintaxe encontrado no PPS referido por um elemento de sintaxe encontrado em cada cabeçalho de segmento de fatia. Em um exemplo, um CVS é uma sequência de unidades de acesso que incluem, na ordem de decodificação, de uma unidade de acesso IRAP com NoRas1OutputFlag igual a 1, seguido por zero ou mais unidades de acesso que não são unidades de acesso IRAP com NoRas1OutputFlag igual a 1, incluindo todas as unidades de acesso subsequentes até, porém não incluindo, qualquer unidade de acesso subsequente que seja uma unidade de acesso IRAP com NoRas1OutputFlag igual a 1. Adicionalmente, uma estrutura de sintaxe profile_tier_level() pode ser associada com um conjunto de camadas de saída em vez de um conjunto de camadas, visto que um conjunto de camadas pode corresponder a mais de um conjunto de camadas de saída, e diferentes conjuntos de camadas de saída correspondendo a um conjunto de camadas para se conformar aos diferentes níveis.
[0038] A estrutura de sintaxe profile_tier_level() é uma estrutura de sintaxe que fornece informação de sintaxe relacionada com os perfis, amarrações e níveis. Perfis, amarrações e níveis especificam diferentes pontos de conformidade para implementação do padrão HEVC ou um padrão de extensão HEVC de modo que seja interoperacional através de vários aplicativos que podem ter exigências funcionais similares. Em alguns exemplos, um perfil pode definir um conjunto de ferramentas de codificação ou algoritmos que podem ser utilizados na geração de uma sequência de bits em conformidade. Em alguns exemplos, uma tier e um nível pode impor restrições a alguns dos parâmetros da sequência de bits. Em alguns exemplos, esses parâmetros podem corresponder à carga de processamento do decodificador e capacidades de memória do decodificador. A informação de nível pode estabelecer restrições no processamento de dados. Por exemplo, a informação de nível pode incluir uma taxa de amostragem máxima, um tamanho de imagem máximo, uma taxa de bit máxima, uma razão de compressão mínima. A informação de nível também pode incluir capacidades do armazenador de imagem decodificada (DPB) e armazenador de imagem codificada (CPB). CPB mantém os dados comprimidos antes de sua decodificação para fins de gerenciamento de fluxo de dados. DPB mantém os dados de imagem decodificados.
[0039] Outro exemplo de sistemas, métodos e dispositivos descritos aqui fornece a codificação de dados de vídeo de múltiplas camadas incluindo camadas de dados de vídeo. Esses sistemas, métodos e dispositivos podem incluir a transmissão ou o recebimento de uma informação de dependência de camada codificada não por entropia em uma posição dentro de uma sintaxe de extensão de conjunto de parâmetros, tal como a sintaxe de extensão VPS, antes dos elementos de sintaxe da extensão que são codificados por entropia. Adicionalmente, os sistemas, métodos e dispositivos podem decodificar os dados de vídeo de uma ou mais das camadas de dados de vídeo com base na informação de dependência de camada codificada de não entropia. A informação de dependência de camada indica se uma das camadas é uma camada de referência direta para outra das camadas. Novamente, a sintaxe de extensão VPS será descrita por toda essa descrição para fins ilustrativos.
[0040] Como descrito em maiores detalhes abaixo, em um exemplo, mais de um conjunto de camadas de saída pode ser sinalizado para um conjunto de camadas. Por exemplo, como descrito aqui, o elemento de sintaxe output_layer_flag[lsIdx][j] pode ser mudado para output_layer_flag[i][j], e semântica relacionada são alterados de acordo.
[0041] Como descrito em maiores detalhes abaixo, em outro exemplo, a informação de perfil, tier e nível pode ser sinalizada no VPS de uma forma que seja acessível sem decodificação por entropia. Isso é ilustrado em uma ou mais das tabelas abaixo com parâmetros que possuem elementos de descrição além de ue(v) (ue(v) indicando a codificação por entropia). Por exemplo, os elementos de descrição podem indicar a codificação de comprimento fixo, por exemplo, u(n), onde n é um inteiro 1 ou maior.
[0042] Como descrito em maiores detalhes abaixo, em outro exemplo, a informação de dependência de camada pode ser sinalizada no VPS de uma forma que seja acessível sem entropia. Isso é ilustrado em uma ou mais das tabelas abaixo com parâmetros que possuem elementos de descrição além de ue(v). Por exemplo, os elementos de descrição podem indicar codificação de comprimento fixo, por exemplo, u(n), onde n é um inteiro 1 ou maior.
[0043] Como descrito em maiores detalhes abaixo, em outro exemplo, um formato de representação pode ser sinalizado no VPS, potencialmente de uma forma que seja acessível sem decodificação por entropia ou alguma codificação por entropia reduzida ou limitada. Por exemplo, os parâmetros de formato de representação tal como chroma_format_vps_idc, separate_colour_plane_vps_flag, pic_width_vps_in_luma_samples, pic_height_vps_in_luma_samples, bit_depth_vps_luma_minus8, e bit_depth_vps_chroma_minus8 são sinalizados em VPS e não codificados por entropia em alguns exemplos. Isso é ilustrado em uma ou mais das tabelas abaixo com esses parâmetros possuindo elementos de descrição além de ue(v). Os parâmetros de formato de representação podem ter elementos de descrição que indicam que os parâmetros em particular são codificação de comprimento fixo, por exemplo, u(n), onde n é um inteiro igual a 1 ou maior. Em alguns casos o "_vps" foi eliminado de vários nomes de parâmetros, por exemplo, chroma_format_vps_idc também pode se referido como chroma_format_idc, separate_colour_plane_vps_flag como separate_colour_plane_flag, pic_width_vps_in_luma_samples como pic_width_in_luma_samples, pic_height_vps_in_luma_samples como pic_height_in_luma_samples, bit_depth_vps_luma_minus8 como bit_depth_luma_minus8, e bit_depth_vps_chroma_minus8 como bit_depth_vps_chroma_minus8, além de outros parâmetros.
[0044] Como é descrito em maiores detalhes abaixo, em outro exemplo, a informação de sinal visual tal como video_format, video_full_range_flag, colour_primaries, transfer_characteristics, ou matrix_coeffs podem ser sinalizados por camada em VPS. Como descrito aqui a informação de sinal visual tal como video_format, video_full_range_flag, colour_primaries, transfer_characteristics, matrix_coeffs podem ser um subconjunto de parâmetros de Informação de Capacidade de Utilização de Vídeo (VUI), como especificado no Anexo E do padrão HEVC, por exemplo. A VUI, e, dessa forma, a informação de sinal visual, está no VPS e pode ser sinalizada por camada no VPS.
[0045] Como descrito em maiores detalhes abaixo, em outro exemplo, o compartilhamento do conjunto de parâmetros de sequência (SPS) pode ser realizado por camadas com diferentes resoluções espaciais, profundidades de bits ou formatos decor. Em um exemplo, SPS é uma estrutura de sintaxe contendo elementos de sintaxe que aplicam a uma camada em zero ou mais CVSs totais como determinado pelo conteúdo de um elemento de sintaxe encontrado no PPS referido como um elemento de sintaxe encontrado em cada cabeçalho de segmento de fatia. Em alguns exemplos, um método de decodificação de dados de vídeo de múltiplas camadas pode incluir o recebimento de um conjunto de parâmetros de vídeo e um primeiro conjunto de parâmetros de sequência. O método também pode incluir o recebimento de uma primeira camada que se refere ao primeiro conjunto de parâmetros de sequência, recebendo uma segunda camada que possui um valor diferente de pelo menos um dentre uma resolução espacial, uma profundidade de bit, e um formato de cor com relação à primeira camada, e que se refere ao primeiro conjunto de parâmetros de sequência. Adicionalmente, o método ilustrativo pode incluir a decodificação de dados de vídeo das primeira e segunda camadas com base na informação do conjunto de parâmetros de vídeo e o primeiro conjunto de parâmetros de sequência.
[0046] Como é descrito em maiores detalhes abaixo, em outro exemplo, nenhuma informação de temporização é codificada no VUI de SPSs com ID de camada (nuh_layer_id) maior que 0. Em alguns exemplos, para uma camada que se refere a um SPS com ID de camada maior que 0, a informação de temporização sinalizada no VPS é utilizada.
[0047] Como descrito em maiores detalhes abaixo, em outro exemplo, nenhuma sinalização explícita de camadas de saída alvo é utilizada para conjuntos de camada de saída padrão. Por exemplo, visto que possuir multiple_output_layer_sets_in_layer_set_flag igual a 0 especifica que apenas um conjunto de camadas de saída seja especificada pelo VPS para cada conjunto de camada, com a camada mais alta sendo a única camada de saída alvo, nenhuma sinalização explícita das camadas de saída alvo para os conjuntos de camada de saída padrão é necessária. Por exemplo, não existe necessidade de se sinalizar quais camadas devem ser enviadas quando multiple_output_layer_sets_in_layer_set_flag é igual a 0 visto que só existe um conjunto de camada de saída para cada conjunto de camada e a camada mais alta é apenas a camada de saída alvo.
[0048] Como descrito em maiores detalhes abaixo, em outro exemplo, sps_max_sub_layers_minus1 e sps_temporal_id_nesting_flag não são sinalizados no SPS. Em alguns casos, essa sinalização não ocorre no SPS quando nuh_layer_id > 0.
[0049] Como é descrito em maiores detalhes abaixo, em outro exemplo, o elemento de sintaxe output_layers_set_idx[i] pode ser trocado para output_layer_set_idx_minus1[i]. Isso é porque o elemento de sintaxe layer_id_included_flag[i][j] utilizado para output_layer_set_idx[i] igual a 0 é para o conjunto de camadas 0, enquanto para o conjunto de camadas 0 layer_id_included_flag[i][j] não é definido. Adicionalmente, a camada de saída alvo para o conjunto de camadas 0 é sempre a camada 0 (a camada de base).
[0050] Vários exemplos acima podem incluir aspectos com vários dados, parâmetros, etc. que não são codificados por entropia. Devido a isso, os dados, parâmetros, etc. podem ser acessíveis aos dispositivos sem um codificador por entropia para realizar a codificação por entropia. Por exemplo, em alguns casos uma Entidade de Rede Ciente de Mídia (MANEs) pode não ter um dispositivo de codificação por entropia, mas geralmente seria capaz de codificar (por exemplo, decodificar) a informação codificada não por entropia tal como dados, parâmetros, etc.
[0051] Um rascunho recente do padrão HEVC, referido como "HEVC Working Draft 10" ou "WD10", é descrito no documento JCTVC-L1003v34, Bross et al., "High efficiency video coding (HEVC) text specification draft 10 (for FDIS & Last Call)", Equipe Colaborativa Conjunta em Codificação de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC2 9/WG11, 12o. Encontro: Genebra, CH, 14-23 de janeiro de 2013, que, desde 15 de outubro de 2013 pode ser obtido através de download no endereço: http://phenix.int- evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003- v34.zip.
[0052] Outro rascunho de trabalho recente (WD) de HEVC, referido como "HEVC Working Draft 6" ou "WD6", é descrito no documento HCTVC-H1003, Bross et al., "High- Efficiency Video Coding (HEVC) text specification draft 6" Equipe Colaborativa Conjunta de Codificação de Vídeo (JCT- VC) ou ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 8o. Encontro: San José, Califórnia, EUA, fevereiro de 2012, que desde 15 de outubro de 2013 pode ser obtido por download no endereço: http: //phenix.int- evry.fr/jct/doc_end_user/documents/8_San%2 0Jose/wg11/JCTVC- H1003-v22.zip.
[0053] Outro rascunho de trabalho recente (WD) de HEVC, referido como "HEVC Working Draft 8" ou "WD8", é descrito no documento JCTVC-J1003, Bross et al., "High Efficiency Video Coding (HEVC) text specification draft 8", Equipe Colaborativa Conjunta de Codificação de Vídeo (JCT- VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 10o. Encontro: Estocolmo, SE, 11 a 20 de julho de 2012, que desde 14 de outubro de 2013 pode ser obtido através do endereço: http://phenix.int- evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11 /JCTVC-J1003-v8.zip.
[0054] Extensões de faixa HEVC são descritas no documento JCTVC-N1005_v3, Flynn et al., "High Efficiency Video Coding (HEVC) Range Extensions text specification: Draft 4", Equipe Colaborativa Conjunta em Codificação de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 13o. Encontro: Incheon, KR, 18 a 26 de abril de 2013, que desde 15 de outubro de 2013 pode ser obtido através de download no endereço; http://phenix.it- sudparis.eu/jct/doc_end_user/current_document.php?id=8139.
[0055] A figura 1 é um diagrama em blocos ilustrando um sistema de codificação e decodificação de vídeo ilustrativo 10 que pode utilizar as técnicas descritas nessa descrição. Como ilustrado na figura 1, o sistema 10 inclui um codificador de vídeo 20 que gera dados de vídeo codificados a serem decodificados posteriormente por um decodificador de vídeo 30. O dispositivo fonte 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores desktop, computadores notebook (isto é, laptop), computadores tablet, caixas de decodificação, aparelhos telefônicos tal como os chamados "smartphones", os chamados "smart pads", televisores, câmeras, dispositivos de exibição, aparelhos de mídia digital, consoles de jogos de vídeo, dispositivos de sequenciamento de vídeo, ou similares. Em alguns casos, o dispositivo fonte 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0056] O dispositivo de destino 14 pode receber dados de vídeo codificados a serem decodificados através de um link 16. O link 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do codificador de vídeo 20 para o decodificador de vídeo 30. Em um exemplo, o link 16 pode compreender um meio de comunicação para permitir que o codificador de vídeo 20 transmita os dados de vídeo codificados diretamente para o decodificador de vídeo 30 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 transmitido para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com ou sem fio, tal como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão física. O meio de comunicação pode formar parte de uma rede com base em pacote, tal como a 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 base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo fonte 12 para o dispositivo de destino 14.
[0057] Alternativamente, os dados codificados podem ser enviados a partir da interface de saída 22 para um dispositivo de armazenamento 34. De forma similar, a interface de entrada 28 pode acessar dados codificados a partir do dispositivo de armazenamento 34. O dispositivo de armazenamento 34 pode incluir qualquer um dentre uma variedade de mídia de armazenamento de dados distribuída ou acessada localmente tal como um disco rigido, discos Blu- ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outro meio de armazenamento digital adequado para armazenamento de dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento 34 pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que possa manter o vídeo codificado gerado pelo codificador de vídeo 20. O dispositivo de destino 14 pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento 34 através do sequenciamento ou download através da interface de entrada 28. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar os dados de vídeo codificados e transmitir esses dados de vídeo codificados para o decodificador de vídeo 30. Servidores de arquivo ilustrativos incluem um servidor de rede (por exemplo, para um sítio da rede), um servidor de Protocolo de Transferência de Arquivo (FTP), dispositivos de armazenamento anexados à rede (NAS), ou um acionador de disco local. O decodificador de vídeo 30 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambos que é adequada para acessar os dados de vídeo codificados em um servidor de arquivo. A transmissão dos dados de vídeo codificados a partir do dispositivo de armazenamento 34 pode ser uma transmissão de sequenciamento, uma transmissão de download, ou uma combinação de ambas.
[0058] As técnicas dessa descrição não são necessariamente limitadas a aplicativos ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte a qualquer uma dentre uma variedade de aplicativos de multimídia, tal como difusões de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões de vídeo sequenciado, 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 outros aplicativos. Em alguns exemplos, o sistema 10 pode ser configurado para suportar a transmissão de vídeo de via única ou duas vias para suportar aplicativos tal como sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo, e/ou vídeo telefonia.
[0059] No exemplo da figura 1, o dispositivo fonte 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20 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. A fonte de vídeo 18 pode incluir uma fonte tal como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo contendo vídeo previamente capturado, uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo e/ou um sistema gráfico de computador para gerar dados gráficos de computador como o vídeo fonte, ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo fonte 12 e o dispositivo de destino 14 podem formar os chamados telefones com câmera ou videofones. No entanto, as técnicas descritas nessa descrição podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas a aplicativos com e/ou sem fio.
[0060] O codificador de vídeo 20 codifica o vídeo capturado, pré-capturado, ou gerado por computador recebido da fonte de vídeo 18. O vídeo capturado, pré- capturado, ou gerado por computador pode ser formatado de acordo com qualquer um dos formatos de amostra descritos acima incluindo os formatos de amostra 4:2:0, 4:2:2 ou 4:4:4. O codificador de vídeo 20 pode realizar a codificação de vídeo em vídeo formatado de acordo com qualquer um dos formatos de amostra 4:2:0, 4:2:2, ou 4:4:4. Em alguns casos, o codificador de vídeo 20 pode amostrar ascendentemente ou descendentemente o vídeo capturado, pré-capturado ou gerado por computador como parte do processo de codificação. por exemplo, o vídeo capturado pode ser formatado de acordo com o formato de amostra 4:4:4, o codificador de vídeo 20 pode amostrar descendentemente o vídeo capturado para o formato 4:2:2 e realizar a codificação de vídeo no vídeo amostrado descendentemente. Os dados de vídeo codificados podem ser transmitidos diretamente para o dispositivo de destino 14 através da interface de saída 22 do dispositivo fonte 12. Os dados de vídeo codificados também podem (ou podem, alternativamente) ser armazenados no dispositivo de armazenamento 34 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução.
[0061] O dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30, e um dispositivo de exibição 32. Em alguns 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 do link 16. Os dados de vídeo codificados comunicados através do link 16, ou fornecidos no dispositivo de armazenamento 34, podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 para uso por um decodificador de vídeo, tal como o decodificador de vídeo 30, na decodificação de dados de vídeo. Tais elementos de sintaxe podem ser incluídos com dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento ou armazenados em um servidor de arquivo.
[0062] O dispositivo de exibição 32 pode ser integrado com, ou pode ser externo ao dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e também pode ser configurado para interfacear 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 exibição 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer um dentre uma variedade de dispositivos de exibição tal como monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo emissor de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0063] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, tal como o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e pode geralmente se conformar ao Modelo de Teste HEVC atual (HM) ou um HM futuro.
[0064] Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões proprietários ou da indústria, tal como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), ou revisões ou extensões de tais padrões. As técnicas dessa descrição são descritas como aplicável às extensões HEVC, mas não são necessariamente limitadas a qualquer padrão de codificação em particular. Outros exemplos de padrões de compressão de vídeo incluem MPEG-2 ITU-T H.263.
[0065] Apesar de não ilustrado na figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser integrados a um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX adequadas, ou outro hardware e software, para manusear a codificação de ambos o áudio e vídeo em uma sequência de dados comum ou sequências de dados separadas. Se aplicável, em alguns exemplos, unidades MUX-DEMUX podem se conformar ao protocolo de multiplexador ITU H.223, ou outros protocolos tais como o protocolo de datagrama de usuário (UDP).
[0066] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um dentre uma variedade de conjuntos de circuitos codificadores adequados, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas em um meio legível por computador não transitório adequado, e excutam as instruções em hardware utilizando um ou mais processadores para realizar as técnicas dessa descrição. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um dispositivo respectivo.
[0067] No exemplo ilustrado da figura 1, um codificador de vídeo, tal como um codificador de vídeo 20 ou um decodificador de vídeo 30 pode transmitir ou receber um conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível. Por exemplo, o codificador de vídeo 20 pode transmitir um conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível e o decodificador de vídeo 30 pode receber um conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível, por exemplo, enviadas a partir do codificador de vídeo 20.
[0068] O conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível pode estar em uma posição dentro de uma extensão VPS antes de outros elementos de sintaxe da extensão VPS que são codificados por entropia. O codificador de vídeo (por exemplo, codificador de vídeo 20 ou decodificador de vídeo 30) pode se referir a uma dentre as estruturas de sintaxe de perfil, tier e nível para cada um dentre a pluralidade de conjuntos de camada de saída e decodificar os dados de vídeo de um dos conjuntos de camada de saída com base na informação da estrutura de sintaxe de perfil, tier e nível referida para o conjunto de camada de saída. Por exemplo, o codificador de vídeo 20 pode se referir a uma dentre as estruturas de sintaxe de perfil, tier e nível referida para o conjunto de camada de saída. O decodificador de vídeo 30 pode se referir a uma dentre as estruturas de sintaxe de perfil, tier e nível para cada um dentre a pluralidade de conjuntos de camada de saída e decodificar os dados de vídeo de um dos conjuntos de camada de saída com base na informação da estrutura de sintaxe de perfil, tier e nível referida para o conjunto de camada de saída.
[0069] Em alguns exemplos, o codificador de vídeo pode transmitir ou receber adicionalmente um conjunto de parâmetros de sequência (SPS) com um nuh_layer_id igual a 0, onde SPS inclui uma estrutura de sintaxe de perfil, tier e nível para uma camada de dados de vídeo. O nuh_layer_id pode ser utilizado para indicar uma camada em particular. Uma camada pode ser um conjunto de unidades de camada de abstração de rede (NAL) da camada de codificação de vídeo (VCL) que possuem um valor particular de nuh_layer_id e as unidades NAL não VCL associadas, ou uma dentre um conjunto de estruturas sintáticas possuindo uma relação hierárquica. nuh_layer_id deve ser igual a 0 em uma sequência de bits contendo apenas uma camada. Outros valores de nuh_layer_id podem surgir nas sequências de bits contendo múltiplas camadas. Em um exemplo, uma unidade NAL é uma estrutura de sintaxe contendo uma indicação do tipo de dados a ser seguido e bytes contendo esses dados na forma de uma carga útil de sequência de byte bruta (RBSP) intercalada como necessário com bytes de prevenção de emulação. Em um exemplo, uma RBSP é uma estrutura de sintaxe contendo um número inteiro de bytes que é encapsulado em uma unidade NAL e que está vazia ou possui a forma de um cordão de bits de dados contendo elementos de sintaxe seguidos por um bit batente RBSP e zero ou mais bits subsequentes iguais a 0.
[0070] O codificador de vídeo 20 pode transmitir um SPS com um nuh_layer_id igual a 0, onde SPS inclui a estrutura de sintaxe de perfil, tier e nível para uma camada de dados de vídeo. O decodificador de vídeo 30 pode receber SPS com um nuh_layer_id igual a 0, onde SPS inclui uma estrutura de sintaxe de perfil, tier e nível para uma camada de dados de vídeo.
[0071] Em alguns exemplos, quando uma camada com nuh_layer_id maior que 0 se refere a SPS, o decodificador de vídeo pode não decodificar os dados de vídeo da camada com nuh_layer_id superior a 0 utilizando a estrutura de sintaxe de perfil, tier e nível para os respectivos conjuntos de camada de saída. De acordo, uma ou mais estruturas de sintaxe de perfil, tier e nível podem ser conectadas a um ou mais conjuntos de camada de saída específicos de modo que uma ou mais estruturas de sintaxe de perfil, tier e nível específicas possam ser utilizadas para codificar e/ou decodificar um ou mais dos conjuntos de camada de saída específicos. A conexão pode incluir a identificação de cada um dos conjuntos de camada de saída aos quais cada uma das estruturas de sintaxe de perfil, tier e nível é conectada com base em um elemento de sintaxe representando um índice para as estruturas de sintaxe de perfil, tier e nível. A decodificação de dados de vídeo pode incluir a decodificação de dados de vídeo de um ou mais dos conjuntos de camada de saída com base na informação das estruturas de sintaxe de perfil, tier e nível conectadas aos conjuntos de camada de saída respectivos.
[0072] Em um exemplo que inclui múltiplas camadas, uma sequência de bits de todas as camadas pode ser dividida em múltiplas sequências de bits em conformidade, por exemplo, uma sequência de bits para cada conjunto de camadas. Cada uma dessas múltiplas sequências de bit em conformidade pode ser referida como um conjunto de camadas. O conjunto de camadas pode incluir uma referência a uma camada em particular e quaisquer camadas de referência das quais essa camada em particular depende para decodificação. Isso assume que existam camadas de referência nas quais a camada em particular depende. De acordo, um conjunto de camadas é uma sequência de bits em conformidade que pode incluir unidades NAL associadas com a camada em particular e unidades NAL para quaisquer camadas de referência necessárias para decodificação da camada particular.
[0073] Um conjunto de camadas de saída é um conjunto de camadas para o qual a lista de camadas de saída alvo é especificada. Para um conjunto de camadas, a lista de camadas de saída alvo não é especificada. O conjunto de camadas de saída pode ser para uma ou mais camadas em particular que devem ser enviadas para exibição. Em alguns exemplos, mais de um conjunto de camadas de saída pode ser sinalizado para um conjunto de camadas.
[0074] Em alguns exemplos, o codificador de vídeo (por exemplo, o codificador de vídeo 20 ou decodificador de vídeo 30) pode transmitir ou receber, como aplicável, um indicador de camada de saída [i][j] que, quando igual a 1, especifica que uma camada j no conjunto de camadas é uma camada de saída alvo de um conjunto de camadas de saída i e, quando igual a 0 especifica que a camada j no conjunto de camadas não é a camada de saída alvo do conjunto de camadas de saída i. Como exemplos, o codificador de vídeo 20 pode transmitir um indicador de camadas de saída [] [j] que, quando iguais a 1, especifica que uma camada j no conjunto de camadas é um acamada de saída alvo de um conjunto de camadas de saída i, e, quando igual a 0, especifica que a camada j no conjunto de camadas não é a camada de saída alvo do conjunto de camadas de saída i. O decodificador de vídeo 30 pode transmitir um indicador de camadas de saída [i][j] que, quando igual a 1, especifica que uma camada j no conjunto de camadas é uma camada de saída alvo de um conjunto de camadas de saída i, e, quando igual a 0, especifica que a camada j no conjunto de camadas não é a camada de saída alvo do conjunto de camadas de saída i.
[0075] O codificador de vídeo (por exemplo, o codificador de vídeo 20 ou decodificador de vídeo 30) também pode gerar o conjunto de camadas de saída com base no indicador de camada de saída [i][j] pela especificação das camadas correspondentes ao indicador de camada de saída [i][j] igual a 1 como a lista associada de camadas de saída alvo. Por exemplo, o codificador de vídeo 20 pode codificar o conjunto de camadas de saída com base no indicador de camada de saída [i][j]. O decodificador de vídeo 30 pode decodificar o conjunto de camadas de saída com base no indicador de camada de saída [i][j]. No exemplo ilustrado da figura 1, um codificador de vídeo, tal como um codificador de vídeo 20 ou um decodificador de vídeo 30 pode codificar os dados de vídeo de múltiplas camadas incluindo as camadas de dados de vídeo.
[0076] O codificador de vídeo (por exemplo, codificador de vídeo 20 ou decodificador de vídeo 30) pode transmitir ou receber uma informação de dependência de camada codificada por não entropia em uma posição dentro de uma extensão VPS antes dos elementos de sintaxe da extensão VPS que são codificados por entropia. Isso pode permitir que a informação de dependência de camada seja codificada ou decodificada pelos dispositivos que não incluem um codificador por entropia, por exemplo, tal como um MANE. Adicionalmente, também pode permitir que a informação de dependência de camada seja codificada mais cedo. Por exemplo, a informação de dependência de camada pode ser decodificada antes no processo de decodificação. Por exemplo, o codificador de vídeo 20 pode transmitir uma informação de dependência de camada codificada por não entropia em uma posição dentro de uma extensão VPS antes dos elementos de sintaxe da extensão VPS que são codificados por entropia. O decodificador de vídeo 30 pode receber uma informação de dependência de camada codificada por não entropia em uma posição dentro de uma extensão VPS antes dos elementos de sintaxe da extensão VPS que são codificados por entropia.
[0077] O codificador de vídeo (por exemplo, codificador de vídeo 20 ou decodificador de vídeo 30) pode codificar os dados de vídeo de uma ou mais das camadas de dados de vídeo com base na informação de dependência de camada codificada por não entropia. Por exemplo, o codificador de vídeo 20 pode codificar dados de vídeo de uma ou mais das camadas de dados de vídeo com base na informação de dependência de camada codificada por não entropia. O decodificador de vídeo 30 pode codificar os dados de vídeo de uma ou mais das camadas de dados de vídeo com base na informação de dependência de camada codificada por não entropia. A informação de dependência de camada indica se uma das camadas é uma camada de referência direta para outra das camadas.
[0078] Em alguns exemplos, a informação de dependência de camada inclui um direct_dependency_flag[i][j] que, quando igual a 0, especifica que uma camada com índice j não é uma camada de referência direta para uma camada com índice i e quando igual a 1, especifica que a camada com índice j pode ser uma camada de referência direta para a camada com índice i.
[0079] Um exemplo de sistemas, métodos e dispositivos descritos aqui fornece um conjunto de estruturas de sintaxe de profile_tier_level() a serem sinalizadas na sintaxe de extensão VPS. Em alguns exemplos, o conjunto de estruturas de sintaxe profile_tier_level() é sinalizado na sintaxe de extensão VPS em uma posição dentro da sintaxe de extensão VPS que é acessível sem codificação por entropia, isto é, antes dos elementos codificados por entropia na sintaxe de extensão VPS.
[0080] Alguns exemplos fornecem estruturas de sintaxe de perfil, tier e nível antes dos elementos codificados por entropia da sintaxe de extensão VPS. Essas estruturas de sintaxe podem ser conectadas aos conjuntos de camada de saída. Em alguns exemplos, o elemento de sintaxe vps_num_layer_sets_minus1 plus 1 especifica o número de conjuntos de camada que são especificados pelo VPS. Um conjunto de camada pode ser um conjunto incluindo uma camada e quaisquer outras camadas (zero ou mais) das quais a camada depende. Por exemplo, um conjunto de camadas para a camada 2 em codificação de vídeo escalonável pode incluir a camada 0, camada 1 e camada 2. Para cada conjunto de camadas, um ou mais conjuntos de camadas de saída pode ser especificado. Cada conjunto de camadas de saída é designado para ter um perfil, nível e tier.
[0081] Em um exemplo da descrição, uma parte da sintaxe VPS pode ser como segue na Tabela 1: Tabela 1 - Uma parte ilustrativa da sintaxe VPS
[0082] Como ilustrado acima no exemplo da Tabela 1, vps_num_layer_sets_minus1 é codificado por entropia, como indicado pelo elemento de descrição ue(v), no VPS, e existem outros elementos de sintaxe codificados por entropia antes de vps_num_layer_sets_minus1 no VPS. Em alguns exemplos, a decodificação por entropia pode ser indesejável. Isso pode ser particularmente verdadeiro para dispositivos de rede intermediários que podem realizar a união ou adaptação de sequência (por exemplo, taxa temporal, qualidade, adaptação espacial). Um decodificador (por exemplo, o decodificador de vídeo 30) terá geralmente um decodificador por entropia. Em muitos casos, no entanto, pode ser desejável que um dispositivo de rede intermediário não tenha um decodificador por entropia. Isso simplifica o dispositivo intermediário, que pode reduzir o custo e o consumo de energia em alguns casos. Adicionalmente, em cada caso, pode ser desejável se acessar rapidamente a informação de perfil, tier e nível sem precisar realizar a decodificação por entropia.
[0083] Para se evitar a decodificação por entropia das estruturas de sintaxe de perfil, nível e tier (profile_tier_level()syntax), em alguns exemplos, essa descrição propõe a apresentação das estruturas de sintaxe de perfil, nível e tier antes de quaisquer elementos codificados por entropia na sintaxe de extensão VPS, e acessível sem análise do elemento de sintaxe vps_num_layer_sets_minus1 codificado por entropia. Em alguns casos, as extensões podem ser desenvolvidas para padrões de codificação de vídeo, tal como os padrões de codificação de vídeo HEVC. Essas extensões podem fornecer funcionalidade adicional não fornecida por ou não necessária pelos padrões de codificação de vídeo. Uma sintaxe de extensão é uma sintaxe para uma dessas extensões para um padrão de codificação de vídeo. Por exemplo, a sintaxe de extensão VPS pode incluir a sintaxe de mensagens utilizada para uma extensão para os padrões de codificação de vídeo HEVC. Previamente, parece que esses seriam acessados à medida que cada camada é acessada. Agora, um sistema, método ou dispositivo implementando um ou mais dos conceitos descritos aqui podem acessar todos os mesmos antecipadamente, e então conectá-los posteriormente. Tabela 2 - Sintaxe ilustrativa na extensão VPS
[0084] Como utilizado na Tabela 2, vps_num_profile_tier_level_minus1 plus 1 especifica o numero de estruturas de sintaxe profile_tier_level() no VPS. Um vps_profile_present_flag[i] igual a 1 especifica que a informação de perfil e tier está presente na estrutura de sintaxe profile_tier_level() i. Um vps_profile_present_flag[lsIdx] igual a 0 especifica que a informação de perfil e tier não está presente na estrutura de sintaxe profile_tier_level() i e pode ser inferido para a estrutura de sintaxe profile_tier_level() i.
[0085] O elemento de sintaxe profile_ref_minus1[i] especifica que a informação de perfil e tier para a estrutura de sintaxe profile_tier_level() i pode ser inferida como sendo igual à informação de perfil e tier para a estrutura de sintaxe profile_tier_level() do (profile_ref_minus1[i]+1) i. O valor de profile_ref_minus1[i] +1 pode ser inferior a i.
[0086] Como ilustrado na Tabela 2, na sintaxe acima, o decodificador ou dispositivo de rede intermediária circula através de um conjunto de estruturas de sintaxe de profile_tier_level() para acessar as mesmas antes de analisar os elementos de sintaxe para os quais a codificação por entropia é necessária (depois na sintaxe de extensão VPS). Essas estruturas de sintaxe também podem ser conectadas aos conjuntos de camada correspondentes com outro processo de circuito. Em particular, profile_level_tier_idx[i] especifica o índice, no conjunto de estruturas de sintaxe de profile_tier_level() no VPS, da estrutura de sintaxe profile_tier_level() que aplica ao conjunto de camada de saída i.
[0087] Para outro aspecto ilustrativo, sistemas, métodos e dispositivos implementando um ou mais exemplos descritos aqui podem utilizar output_layer_set_idx_minus1[] para indicar o índice do conjunto de camadas para as camadas acima da camada 0 (a camada de base).
[0088] Output_layer_set_idx_minus1[i] plus 1 especifica o índice (lsIdx) do conjunto de camada para o conjunto de camada de saída i. Em um exemplo, o valor de output_layer_set_idx_minus1[i] pode estar na faixa de 0 a vps_num_layer_sets_minus1-1, inclusive. O comprimento do elemento de sintaxe output_layer_set_idx_minus1[i] é Ceil(Log2(vps_num_layer_sets_minus1)) bits.
[0089] Outro exemplo de sistemas, métodos e dispositivos descritos aqui fornece a codificação de dados de vídeo de múltiplas camadas incluindo camadas de dados de vídeo. Esses sistemas, métodos e dispositivos podem ser configurados para realizar as operações incluindo a transmissão ou recepção de uma informação de dependência de camada codificada por não entropia em uma posição dentro de uma extensão VPS antes dos elementos de sintaxe da extensão VPS que são codificados por entropia. Adicionalmente, os sistemas, métodos e dispositivos podem decodificar dados de vídeo de uma ou mais das camadas de dados de vídeo com base na informação de dependência de camada codificada por não entropia. A informação de dependência de camada indica se uma das camadas é uma camada de referência direta para outra das camadas.
[0090] De acordo com um exemplo, um codificador de vídeo, tal como o codificador de vídeo 20 ou o decodificador de vídeo 30 pode codificar mais de um conjunto de camadas de saída para um conjunto de camadas de acordo com as técnicas dessa descrição. Por exemplo, o codificador de vídeo 20 pode codificar mais de um conjunto de camada de saída para um conjunto de camada. Os conjuntos de camada de saída codificados podem ser sinalizados, transmitidos ou de outra forma transferidos pela interface de saída 22 através do link 16 ou utilizando o dispositivo de armazenamento 24 e recebidos pela interface de entrada 28. Os conjuntos de camada de saída codificados podem ser decodificados pelo decodificador de vídeo 30.
[0091] De acordo com outro exemplo, um codificador de vídeo, tal como o codificador de vídeo 20 ou decodificador de vídeo 30 pode codificar toda a informação de perfil, tier e/ou nível no VPS, potencialmente de uma forma que seja acessível sem decodificação por entropia de acordo com as técnicas dessa descrição. Por exemplo, o codificador de vídeo pode codificar toda a informação de perfil, tier e/ou nível no VPS, potencialmente de uma forma que seja potencialmente acessível sem decodificação por entropia, isto é, sem a codificação por entropia da informação de perfil, tier e/ou nível. A informação de perfil, tier e/ou nível codificada no VPS pode ser sinalizada, transmitida ou de outra forma transferida pela interface de saída 22 através do link 16 ou utilizando o dispositivo de armazenamento 34 e recebido pela interface de entrada 28. A informação de perfil, tier e/ou nível codificada no VPS pode ser decodificada pelo decodificador de vídeo 30, que pode ser um dispositivo que não inclui um decodificador por entropia, tal como MANE. Alguns exemplos podem utilizar codificação por entropia reduzida ou limitada para a informação de perfil, tier, nível no VPS. Por exemplo, talvez alguma informação de perfil, tier e nível no VPS seja codificada por entropia enquanto a outra informação de perfil, tier e nível no VPS não seja codificada por entropia.
[0092] De acordo com outro exemplo, um codificador de vídeo, tal como o codificador de vídeo 20 ou decodificador de vídeo 30 pode codificar informação de dependência de camada no VPS de modo que seja acessível sem decodificação por entropia de acordo com as técnicas dessa descrição. Por exemplo, o codificador de vídeo 20 pode codificar informação de dependência de camada no VPS de modo que seja acessível sem decodificação por entropia, isto é, sem codificação por entropia da informação de dependência de camada. A informação de dependência de camada codificada no VPS pode ser sinalizada, transmitida ou de outra forma transferida pela interface de saída 22 através do link 16 ou utilizando o dispositivo de armazenamento 34 e recebida pela interface de entrada 28. A informação de dependência de camada codificada no VPS pode ser decodificada pelo decodificador de vídeo 30, que pode ser um dispositivo que não inclui um decodificador por entropia, tal como MANE.
[0093] De acordo com outro exemplo, um codificador de vídeo, tal como o codificador de vídeo 20 ou o decodificador de vídeo 30 pode codificar o formato de representação no VPS, potencialmente de uma forma que seja acessível sem decodificação por entropia de acordo com as técnicas dessa descrição, e cada camada pode ser associada com um formato de representação em particular. Por exemplo, o codificador de vídeo 20 pode codificar o formato de representação no VPS, potencialmente de uma forma que seja acessível sem decodificação por entropia, isto é, sem codificação por entropia do formato de representação no VPS. O formato de representação codificado no VPS pode ser sinalizado, transmitido ou de outra forma transferido pela interface de saída 22 através do link 16 ou utilizando o dispositivo de armazenamento 34 e recebida pela interface de entrada 28. O formato de representação codificado no VPS pode ser decodificado pelo decodificador de vídeo 30, que pode ser um dispositivo que não inclui um decodificador por entropia, tal como MANE. Alguns exemplos podem utilizar decodificação por entropia reduzida ou limitada para a informação de perfil, tier ou nível no VPS. Por exemplo, talvez parte da informação de perfil, tier e nível no VPS seja decodificada por entropia enquanto outra informação de perfil, tier e nível no VPS não seja decodificada por entropia (por exemplo, visto que parte da informação de perfil, tier e nível no VPS tenha sido codificada por entropia enquanto outra informação de perfil, tier e nível no VPS não tenha sido codificada por entropia).
[0094] De acordo com outro exemplo, um codificador de vídeo, tal como o codificador de vídeo 20 ou o decodificador de vídeo 30 pode codificar informação de sinal visual (video_format, video_full_range_flag, colour_primaries, transfer_characteristics, matrix_coeffs) por camada no VPS de acordo com as técnicas dessa descrição. Por exemplo, o codificador de vídeo 20 pode codificar a informação de sinal visual por camada no VPS. A informação de sinal visual codificada pode ser sinalizada, transmitida ou de outra forma transferida pela interface de saída 22 através do link 16 ou utilizando o dispositivo de armazenamento 34 e recebida pela interface de entrada 28. A informação de sinal visual codificada por camada no VPS pode ser decodificada pelo decodificador de vídeo 30. Em alguns exemplos, o parâmetro video_format indica um formato de uma representação das imagens a serem codificadas. O parâmetro video_full_range_flag indica o nível preto e faixa de sinais de luminescência e crominância. O parâmetro colour_primaries indica as coordenadas de cromaticidade das cores primárias fonte. O parâmetro transfer_characteristics indica a característica de transferência optoeletrônica da imagem fonte. O parâmetro matrix_coeffs descreve os coeficientes de matriz utilizados na derivação de sinais de luminescência e crominância a partir das cores primárias verde, azul e vermelha.
[0095] De acordo com outro exemplo, um SPS pode ser compartilhado por camadas com resoluções espaciais diferentes, profundidade de bit, ou formatos de cor de acordo com as técnicas dessa descrição. Um codificador de vídeo, tal como o codificador de vídeo 20 ou decodificador de vídeo 30 pode codificar SPS. Por exemplo, o codificador de vídeo 20 pode codificar o SPS. O SPS codificado pode ser sinalizado, transmitido ou de outra forma transferido pela interface de saída 22 através do link 16 ou utilizando o dispositivo de armazenamento 34 e recebido pela interface de entrada 28. O SPS codificado pode ser decodificado pelo decodificador de vídeo 30.
[0096] De acordo com outro exemplo, nenhuma informação de temporização é fornecida em uma VUI dos SPSs com ID de camada superior a 0 de acordo com as técnicas dessa descrição. Um codificador de vídeo, tal como o codificador de vídeo 20 ou decodificador de vídeo 30 pode codificar o SPS com um ID de camada superior a 0, que não inclui a informação de temporização na VUI. Por exemplo, o codificador de vídeo 20 pode codificar o SPS. O SPS codificado pode ser sinalizado, transmitido ou de outra forma transferido pela interface de saída 22 através do link 16 ou utilizando o dispositivo de armazenamento 34 e recebido pela interface de entrada 28. O SPS codificado pode ser decodificado pelo decodificador de vídeo 30.
[0097] De acordo com outro exemplo, nenhuma sinalização explícita das camadas de saída alvo é fornecida para os conjuntos de camada de saída padrão de acordo com as técnicas dessa descrição. Um codificador de vídeo, tal como o codificador de vídeo 20 ou decodificador de vídeo 30 pode codificar os conjuntos de camada de saída padrão, que não inclui qualquer sinalização explícita das camadas de saída alvo para os conjuntos de camada de saída padrão. Por exemplo, o codificador de vídeo 20 codifica os conjuntos de camada de saída padrão. Os conjuntos de camada de saída padrão codificados podem ser sinalizados, transmitidos ou de outra forma transferidos pela interface de saída 22 através do link 16 ou utilizando o dispositivo de armazenamento 34 e recebido pela interface de entrada 28. Os conjuntos de camada de saída padrão codificados podem ser decodificados pelo decodificador de vídeo 30.
[0098] De acordo com outro exemplo, a sinalização do número máximo de subcamadas temporais que pode estar presente (sps_max_sub_layers_minus1) e se a interpredição é adicionalmente restringida (sps_temporal_id_nesting_flag) está ausente nos SPSs com ID de camada (nuh_layer_id) superior a 0. Um codificador de vídeo, tal como o codificador de vídeo 20 ou decodificador de vídeo 30 pode codificar os dados de vídeo sem codificação, nos SPSs com ID de camada superior a 0, o número máximo de subcamadas temporais que podem estar presentes em cada CVS referindo ao SPS e sem codificação se a interpredição for adicionalmente restringida para os CVSs referentes ao SPS. A informação codificada pode ser sinalizada, transmitida ou de outra forma transferida pela interface de saída 22 através do link 16 ou utilizando o dispositivo de armazenamento 34 e recebido pela interface de entrada 28. A informação codificada pode ser decodificada pelo decodificador de vídeo 30.
[0099] De acordo com outro exemplo, o elemento de sintaxe output_layer_set_idx[i] pode ser alterado para output_layer_set_idx_minus1[i] de acordo com as técnicas dessa descrição. Um codificador de vídeo, tal como o codificador de vídeo 20 ou o decodificador de vídeo 30 pode codificar output_layer_set_idx_minus1[i] para indicar o índice do conjunto de camadas que corresponde a um conjunto de camadas de saída.
[0100] A figura 2 é um diagrama em bloco ilustrando um codificador de vídeo ilustrativo 20 que pode implementar as técnicas descritas nessa descrição. O codificador de vídeo 20 pode realizar a intra e a intercodificação de blocos de vídeo dentro de fatias de vídeo. A intracodificação se baseia na predição espacial para reduzir ou remover a redundância espacial no vídeo dentro de um determinado quadro ou imagem de vídeo. A intercodificação se baseia na predição temporal ou intercamada para reduzir ou remover a redundância temporal ou redundância intercamada no vídeo dentro dos quadros ou imagens adjacentes na mesma camada ou através de camadas diferentes de uma sequência de vídeo. O intramodo (modo I) pode se referir a qualquer um dentre os vários modos de compressão com base espacial. Os intermodos, tal como a predição unidirecional (modo P) ou predição bidirecional (modo B), podem se referir a qualquer um dos vários modos de compressão com base em tempo.
[0101] No exemplo da figura 2, o codificador de vídeo 20 inclui memória de dados de vídeo 40, uma unidade de processamento de predição 41, memória de imagem de referência 64, somador 50, unidade de processamento de transformada 52, unidade de processamento de quantização 54, e unidade de processamento de codificação por entropia 56. A unidade de processamento de predição 41 inclui a unidade de processamento de estimativa de movimento 42, a unidade de processamento de compensação de movimento 44, e unidade de processamento intrapredição 46. Para a reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui a unidade de processamento de quantização inversa 58, a unidade de processamento de transformada inversa 60, e o somador 62. Um filtro de desbloqueio (não ilustrado na figura 2) também pode ser incluído para filtrar os limites de bloco para remover artefatos de bloqueio do vídeo reconstruído. Se desejado, o filtro de desbloqueio filtrará tipicamente a saída do somador 62. Filtros de circuito adicionais (em circuito ou pós-circuito) também podem ser utilizados em adição ao filtro de desbloqueio.
[0102] A memória de dados de vídeo 40 pode armazenar dados de vídeo a serem codificados por componentes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 40 podem ser obtidos, por exemplo, a partir da fonte de vídeo 18. Um armazenador de imagem decodificada (DPB) pode ser uma memória de imagem de referência 64 que armazena os dados de vídeo de referência para uso na codificação de dados de vídeo pelo codificador de vídeo 20, por exemplo, nos modos de intracodificação e intercodificação. A memória de dados de vídeo 40 e o DPB (por exemplo, memória de imagem de referência 64) podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM sincronizada (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 40 e o DPB (por exemplo, memória de imagem de referência 64) podem ser fornecidos pelo mesmo dispositivo de memória ou dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 101 podem estar em chip com outros componentes do codificador de vídeo 20, ou fora de chip com relação a esses componentes.
[0103] Como ilustrado na figura 2, o codificador de vídeo 20 recebe dados de vídeo, e a unidade de processamento de predição 41 divide os dados em blocos de vídeo. Em alguns casos, a unidade de processamento de predição 41 pode dividir os dados de vídeo com base em uma análise de distorção de taxa. Os dados de vídeo recebidos podem ser formatados de acordo com qualquer um dos formatos de amostra descritos acima. Por exemplo, os dados de vídeo podem ser formatados de acordo com o formato de amostra 4:2:2. A divisão pode incluir a divisão de dados de vídeo em fatias, tiles ou outras unidades maiores, além de divisão de bloco de vídeo, por exemplo, de acordo com uma estrutura quadtree de LCUs e CUs.
[0104] O codificador de vídeo 20 geralmente ilustra os componentes que codificam os blocos de vídeo dentro de uma fatia de vídeo a ser codificada. A fatia pode ser dividida em múltiplos 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 dentre uma pluralidade de possíveis modos de codificação, tal como um dentre uma pluralidade de modos de intracodificação ou um dentre 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 nível de distorção). A unidade de processamento de predição 41 pode fornecer o bloco intracodificado 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.
[0105] A unidade de processamento intrapredição 46 dentro da unidade de processamento de predição 41 pode realizar a codificação intrapredição do bloco de vídeo atual com relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco atual a ser codificado para fornecer compressão espacial. A unidade de processamento de estimativa de movimento 42 e a unidade de processamento de compensação de movimento 44 dentro da unidade de processamento de predição 41 realiza a codificação interpredição 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.
[0106] A unidade de processamento 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 processamento de estimativa de movimento 42 e a unidade de processamento 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 processamento de estimativa de movimento 42, é o processo de geração de vetores de movimento, que estimam o movimento para os blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma unidade de predição (PU) de um bloco de vídeo dentro de um quadro ou imagem de vídeo atual com relação a um bloco de predição dentro de uma imagem de referência.
[0107] Um bloco de predição, para intercodificação, pode ser um bloco que é considerado muito próximo da PU do bloco de vídeo a ser codificado em termos de diferença de pixel, o que pode ser determinada pela soma da diferença absoluta (SAD), soma da diferença quadrada (SSD), ou outras métricas de diferença. Alternativamente, um bloco de predição, para intracodificação, pode ser um bloco que é formado com base na predição espacial com relação aso valores de pixel de um ou mais blocos vizinhos. Em alguns exemplos, para interpredição, o codificador de vídeo 20 pode calcular valores para posições de pixel subinteiro de imagens de referência armazenadas na memória de imagem de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar os valores de posições de um quarto de pixel, posições de um oitavo de pixel, ou outras posições de pixel fracionadas da imagem de referência. Portanto, a unidade de processamento de estimativa de movimento 42 pode realizar uma busca de movimento relativa às posições de pixel cheio e posições de pixel fracionado e enviar um vetor de movimento com a precisão de pixel fracionado.
[0108] A unidade de processamento 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 de predição de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou uma segunda lista de imagens de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. A unidade de processamento de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de processamento de codificação por entropia 56 e a unidade de processamento de compensação de movimento 44.
[0109] A compensação de movimento, realizada pela unidade de processamento de compensação de movimento 44, pode envolver o recolhimento ou geração de bloco de predição com base no vetor de movimento determinado pela estimativa de movimento, possivelmente realizando interpolações com a precisão de subpixel. Depois de receber o vetor de movimento para a PU do bloco de vídeo atual, a unidade de processamento de compensação de movimento 44 pode localizar o bloco de predição ao qual o vetor de movimento aponta em uma das listas de imagem de referência.
[0110] O codificador de vídeo 20 forma um bloco de vídeo residual, para intercodificação ou intracodificação, pela subtração de valores de pixel do bloco de predição a partir de 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 ambos os componentes de diferença de luminescência e crominância. O somador 50 representa o componente ou componentes que realizam essa operação de subtração. A unidade de processamento de compensação de movimento 44 também pode gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação de blocos de vídeo da fatia de vídeo.
[0111] A unidade de processamento de intrapredição 46 pode intraprever um bloco atual, como uma alternativa para a interpredição realizada pela unidade de processamento de estimativa de movimento 42 e unidade de processamento de compensação de movimento 44, como descrito acima. Em particular, a unidade de processamento intrapredição 46 pode determinar um modo de intrapredição para uso na codificação de 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 as passagens de codificação separadas, e a unidade de processamento de intrapredição 46 (ou uma unidade de processamento de seleção de modo, em alguns exemplos) pode selecionar um modo de intrapredição adequado para uso a partir dos modos testados.
[0112] Por exemplo, a unidade de processamento intrapredição 46 pode calcular os valores de distorção de taxa utilizando uma análise de distorção de taxa para os vários modos de intrapredição testados, e selecionar o modo de intrapredição possuindo as melhores características de distorção de taxa dentre os modos testados. A 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, além de 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 as razões a partir das distorções e taxas para vários blocos codificados para determinar qual modo de intrapredição exibe o mesmo valor de distorção de taxa para o bloco. Deve-se notar que a análise distorção de taxa pode ser realizada em uma combinação de componentes de cor.
[0113] Em qualquer caso, depois da seleção de um modo de intrapredição para um bloco, a unidade de processamento de intrapredição 46 pode fornecer informação indicativa do modo de intrapredição selecionado para o bloco para codificar por entropia a unidade de processamento 56. A codificação por entropia da unidade de processamento 56 pode codificar a informação indicando o modo de intrapredição selecionado de acordo com as técnicas dessa descrição. O codificador de vídeo 20 pode incluir na sequência de bits transmitida os dados de configuração, que podem 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 palavra código), definições dos contextos de codificação de vários blocos e indicações de um modo de intrapredição mais provável, uma tabela de índice de modo de intrapredição, e uma tabela de índice de modo de intrapredição modificada para uso para cada um dos contextos. A sequência de bits também pode (ou alternativamente) ser armazenada no dispositivo de armazenamento 34 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução.
[0114] Depois de a unidade de processamento de predição 41 gerar o bloco de predição para o bloco de vídeo atual através de interpredição ou intrapredição, o codificador de vídeo 20 forma um bloco de vídeo residual para subtração do bloco de predição a partir do bloco de vídeo atual. Os dados de vídeo residuais no bloco residual podem ser incluídos em uma ou mais unidades de transformada (TUs) e aplicados à unidade de processamento de transformada 52. Note-se que a unidade de processamento de transformada 52 se refere a um componente, módulo, processador ou processadores, ou unidade funcional do codificador de vídeo 20, e não deve ser confundida com uma TU, que é uma unidade básica de dados para o processo de transformação e quantização. A unidade de processamento de transformada 52 transforma os dados de vídeo residuais em coeficientes de transformada residual utilizando uma transformada, tal como a 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 domino de pixel para um domínio de transformada, tal como um domínio da frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de processamento de quantização 54.
[0115] No exemplo ilustrado da figura 2, um codificador de vídeo 20 pode se referir a uma dentre as estruturas de sintaxe de perfil, tier e nível para cada um dentre uma pluralidade de conjuntos de camada de saída e codificar os dados de vídeo de um dos conjuntos de camada de saída com base na informação da estrutura de sintaxe de perfil, tier e nível referida para o conjunto de camada de saída.
[0116] O codificador de vídeo 20 pode transmitir um conjunto codificado de não entropia de estruturas de sintaxe de perfil, tier e nível. O conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível pode estar em uma posição dento de uma extensão VPS antes dos elementos de sintaxe da extensão VPS que são codificados por entropia, de modo que um dispositivo de rede de intermídia, motor de junção, elemento de rede ciente de mídia, ou decodificador pode analisar o conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível sem a necessidade de codificação por entropia.
[0117] Em alguns exemplos, o codificador de vídeo 20 pode transmitir ou receber um SPS com um nuh_layer_id igual a 0, onde SPS inclui uma estrutura de sintaxe de perfil, tier e nível para uma camada de dados de vídeo. Por exemplo, o codificador de vídeo 20 pode enviar um SPS com um nuh_layer_id igual a 0, onde SPS inclui uma estrutura de sintaxe de perfil, tier e nível para uma camada de dados de vídeo.
[0118] O codificador de vídeo 20 pode codificar o conjunto de camada de saída com base no indicador de camada de saída [i][j]. O codificador de vídeo 20 também pode transmitir um indicador de camada de saída [i][j] que, quando igual a 1, especifica que uma camada j no conjunto de camada é uma camada de saída alvo de um conjunto de camada de saída i, e, quando igual a 0, especifica que a camada j no conjunto de camada não for a camada de saída alvo do conjunto de camada de saída i.
[0119] O codificador de vídeo 20 pode codificar por não entropia os dados de vídeo de uma ou mais das camadas de dados de vídeo. Os dados de vídeo codificados por não entropia podem incluir informação de dependência de camada. A informação de dependência de camada pode indicar se uma das camadas é uma camada de referência direta para outra das camadas. Em alguns exemplos, a informação de dependência de camada inclui um direct_dependency_flag[i][j] que, quando igual a 0, especifica que uma camada com índice j não é uma camada de referência direta para uma camada com índice i, e quando igual a 1, especifica que a camada com índice j pode ser uma camada de referência direta para a camada com índice i.
[0120] O codificador de vídeo 20 pode transmitir a informação de dependência de camada codificada por não entropia em uma posição dentro de uma extensão VPS antes dos elementos de sintaxe da extensão VPS que são codificados por entropia.
[0121] De acordo com um exemplo, o codificador de vídeo 20 pode codificar mais de um conjunto de camada de saída para um conjunto de camadas. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 56.
[0122] De acordo com outro exemplo, o codificador de vídeo 20 pode codificar toda a informação de perfil, tier e nível no VPS, potencialmente de uma forma que seja acessível sem decodificação por entropia, isto é, sem codificação por entropia da informação de perfil, tier e/ou nível. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 56, no entanto, sem a codificação por entropia. De acordo, a unidade de processamento de codificação por entropia pode realizar outros tipos de codificação em adição à codificação por entropia.
[0123] De acordo com outro exemplo, o codificador de vídeo 20 pode codificar a informação de dependência de camada no VPS de modo que seja acessível sem decodificação por entropia, isto é, sem codificação por entropia da informação de dependência de camada. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 56, no entanto, com codificação por entropia. De acordo, a unidade de processamento de codificação por entropia pode realizar outros tipos de codificação em adição à codificação por entropia.
[0124] De acordo com outro exemplo, o codificador de vídeo 20 pode codificar o formato de representação no VPS, potencialmente de uma forma que seja acessível sem decodificação por entropia, isto é, sem codificação por entropia do formato de representação no VPS. Em alguns exemplos, cada camada pode ser associada com um formato de representação particular. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 56, no entanto, sem a codificação por entropia. De acordo, a unidade de processamento de codificação por entropia pode realizar outros tipos de codificação em adição à codificação por entropia. O codificador de vídeo 20 pode codificar o formato de representação no VPS, potencialmente de uma forma que seja acessível sem a decodificação por entropia de acordo com as técnicas dessa descrição, e cada camada pode ser associada com um formato de representação em particular.
[0125] De acordo com outro exemplo, o codificador de vídeo 20 pode codificar a informação de sinal visual (video_format, video_full_range_flag, colour_primaries, transfer_characteristics, matrix_coeffs) por camada no VPS de acordo com as técnicas dessa descrição. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 56.
[0126] De acordo com outro exemplo, um SPS pode ser compartilhado por camadas com resoluções espaciais diferentes, profundidades de bit diferentes, ou formatos de cor diferentes de acordo com as técnicas dessa descrição. O codificador de vídeo 20 pode codificar o SPS. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 56.
[0127] De acordo com outro exemplo, nenhuma informação de temporização é fornecida em VUI de SPS com ID de camada superior a 0 de acordo com as técnicas dessa descrição. O codificador de vídeo 20 pode codificar o SPS. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 56.
[0128] De acordo com outro exemplo, nenhuma sinalização explícita das camadas de saída alvo é fornecida para os conjuntos de camada de saída padrão de acordo com as técnicas dessa descrição. O codificador de vídeo 20 pode codificar os conjuntos de camada de saída padrão. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 56.
[0129] De acordo com outro exemplo, a sinalização do número máximo de subcamadas temporais que podem estar presentes (sps_max_sub_layers_minus1) e se a interpredição é adicionalmente restringida (sps_temporal_id_nesting_flag) ocorre em um SPS apenas quando nuh_layer_id é igual a 0, isto é, não sinalizado no SPS com o ID de camada superior a 0. O codificador de vídeo 20 pode codificar os dados de vídeo sem codificação nos SPSs com o ID de câmara superior a 0 o número máximo de subcamadas temporais que podem estar presentes em cada CVS referente ao SPS e se a interpredição é adicionalmente restringida para CVSs referentes a SPS. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 56.
[0130] De acordo com outro exemplo, o elemento de sintaxe output_layer_set_idx[i] pode ser mudado para output_layer_set_idx_minus1[i] de acordo com as técnicas dessa descrição. O codificador de vídeo 20 pode codificar o elemento de sintaxe output_layer_set_idx_minus1[i] para indicar o índice do conjunto de camada que corresponde ao conjunto de camada de saída i especificado por VPS. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 56.
[0131] A figura 3 é um diagrama em bloco ilustrando um decodificador de vídeo ilustrativo 30 que pode implementar as técnicas descritas nessa descrição. No exemplo da figura 3, o decodificador de vídeo 30 inclui memória de dados de vídeo 78, uma unidade de processamento de decodificação por entropia 80, unidade de processamento de predição 81, unidade de processamento de quantização inversa 86, unidade de processamento de transformada inversa 88, somador 90, e memória de imagem de referência 92. A unidade de processamento de predição 81 inclui a unidade de processamento de compensação de movimento 82 e a unidade de processamento intrapredição 84. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente alternada com relação à passagem de codificação descrita com relação ao codificador de vídeo 20 da figura 2.
[0132] A memória de dados de vídeo 78 pode armazenar dados de vídeo, tal como uma sequência de bits de vídeo codificada, a serem decodificados pelos componentes do decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 78 podem ser obtidos, por exemplo, a partir de um meio legível por computador, por exemplo, a partir de uma fonte de vídeo local, tal como uma câmera, através de comunicação de rede com ou sem fio de dados de vídeo, ou pelo acesso de mídia de armazenamento de dados física. A memória de dados de vídeo 78 pode formar um armazenador de imagem codificada (CPB) que armazena os dados de vídeo codificados de uma sequência de bits de vídeo codificada. Um armazenador de imagem decodificada (DPB) pode ser uma memória de imagem de referência 92 que armazena os dados de vídeo de referência para uso nos dados de vídeo de decodificação pelo decodificador de vídeo 30, por exemplo, nos modos intracodificação ou intercodificação. A memória de dados de vídeo 78 e o DPB podem ser formados por qualquer um dentre uma variedade de dispositivos de memória, tal como memória de acesso aleatório dinâmica (DRAM), incluindo DRAM sincronizada (SDRAM), RAM magnetorresistiva (MRAM), RAM resistiva (RRAM), ou outros tipos de dispositivos de memória. A memória de dados de vídeo 78 e o DPB podem ser fornecidos pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 78 pode estar em chip com outros componentes do decodificador de vídeo 30, ou fora do chip com relação a esses componentes.
[0133] Durante o processo de decodificação, o decodificador de vídeo 30 recebe uma sequência de bits de vídeo codificada que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados do codificador de vídeo 20. A unidade de processamento de decodificação por entropia 80 do decodificador de vídeo 30 decodifica por entropia a sequência de bits para gerar os coeficientes quantizados, os vetores de movimento e outros elementos de sintaxe. A unidade de processamento de decodificação por entropia 80 envia 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 elementos de sintaxe no nível de fatia de vídeo e/ou no nível de bloco de vídeo.
[0134] Quando a fatia de vídeo é codificada como uma 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 dos blocos decodificados previamente do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia intercodificada (isto é, B ou P), a unidade de processamento de compensação de movimento 82 da unidade de processamento de predição 81 produz blocos de predição 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 processamento de decodificação por entropia 80. Os blocos de predição 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 nas imagens de referência armazenadas na memória de imagem de referência 92.
[0135] A unidade de processamento de compensação de movimento 82 determina a informação de predição para um bloco de vídeo da fatia de vídeo atual pela análise de vetores de movimento e outros elementos de sintaxe, e utiliza a informação de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de processamento de compensação de movimento 82 utiliza alguns os elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, um dentre uma pluralidade de modos de interpredição) utilizados para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia interpredição (por exemplo, fatia B ou fatia P), informação de construção para 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, situação 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.
[0136] A unidade de processamento de compensação de movimento 82 também pode realizar a interpolação com base nos filtros de interpolação. A unidade de processamento de compensação de movimento 82 pode utilizar os filtros de interpolação como utilizados pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular os valores interpolados para os pixels subinteiro dos blocos de referência. Nesse caso, a unidade de processamento 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 os blocos de predição.
[0137] A unidade de processamento de quantização inversa 86 quantiza de forma inversa, isto é, desquantiza, os coeficientes de transformada quantizados fornecidos na sequência de bits e decodificados pela unidade de processamento de decodificação por entropia 80. O processo de quantização inversa pode incluir o uso 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, da mesma forma, um grau de quantização inversa que deve ser aplicado.
[0138] A unidade de processamento de transformada inversa 88 recebe os coeficientes de transformada e aplica uma transformada inversa, por exemplo, uma DCT inversa, uma transformada de inteiro inversa, ou um processo de transformada inversa conceitualmente similar, aos coeficientes de transformada a fim de produzir os blocos residuais no domino de pixel. Em alguns exemplos, a unidade de processamento de transformada inversa 88 pode receber coeficientes de transformada que foram gerados por um codificador de vídeo com base nas técnicas de partição de unidade de transformação.
[0139] Depois que a unidade de processamento de compensação de movimento 82 ou unidade de processamento de intrapredição 84 gera o bloco de predição para o bloco de vídeo atual com base nos vetores e movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado pela soma dos blocos residuais a partir da unidade de processamento de transformada inversa 88 com os blocos de predição correspondentes gerados pela unidade de processamento de compensação de movimento 82. O somador 90 representa o componente ou componentes que realizam essa operação de soma.
[0140] Se desejado, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados a fim de remover os artefatos de bloqueio. Outros filtros de circuito (no circuito de codificação ou depois do circuito de codificação) também podem ser utilizados para suavizar as transições de pixel, ou de outra forma aperfeiçoar a qualidade de vídeo. Os blocos de vídeo decodificados em um determinado quadro ou imagem são então armazenados na memória de imagem de referência 92, que armazena as imagens de referência utilizadas para compensação de movimento subsequente. A memória de imagem de referência 92 também armazena o vídeo decodificado para apresentação posterior em um dispositivo de exibição, tal como um dispositivo de exibição 32 da figura 1.
[0141] No exemplo ilustrado da figura 3, o decodificador de vídeo 30 pode receber um conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível.
[0142] O decodificador de vídeo 30 pode se referir a uma dentre as estruturas de sintaxe de perfil, tier e nível para cada um dentre a pluralidade de conjuntos de camadas de saída e decodificar os dados de vídeo de um dos conjuntos de camadas de saída com base na informação da estrutura de sintaxe de perfil, tier e nível referida para o conjunto de camada de saída.
[0143] Em alguns exemplos, o codificador de vídeo pode transmitir ou receber um SPS com um nuh_layer_id igual a 0, onde SPS inclui uma estrutura de sintaxe de perfil, tier e nível para uma camada de dados de vídeo. O decodificador de vídeo 30 pode receber um SPS com um nuh_layer_id igual a 0, onde SPS inclui uma estrutura de sintaxe de perfil, tier e nível para uma camada de dados de vídeo.
[0144] Em alguns exemplos, quando uma camada com nuh_layer_id superior a 0 se refere a SPS, o decodificador de vídeo 30 pode não decodificar os dados de vídeo da camada com nuh_layer_id superior a 0 utilizando a estrutura de sintaxe de perfil, tier e nível do SPS.
[0145] O decodificador de vídeo 30 pode transmitir um indicador de camada de saída [i][j] que, quando igual a 1, especifica que uma camada j no conjunto de camadas é uma camada de saída alvo de um conjunto de camadas de saída i, e, quando igual a 0, especifica que a camada j no conjunto de camadas não é a camada de saída alvo do conjunto de camadas de saída i.
[0146] O decodificador de vídeo 30 também pode gerar o conjunto de camada de saída com base no indicador de camada de saída [i][j].
[0147] No exemplo ilustrado da figura 3, o decodificador de vídeo 30 pode decodificar os dados de vídeo de múltiplas camadas incluindo as camadas de dados de vídeo.
[0148] O decodificador de vídeo 30 pode receber uma informação de dependência de camada codificada por não entropia em uma posição dentro de uma extensão VPS antes dos elementos de sintaxe da extensão VPS que são codificados por entropia.
[0149] O decodificador de vídeo 30 pode codificar os dados de vídeo de uma ou mais das camadas de dados de vídeo com base na informação de dependência de camada codificada por não entropia. A informação de dependência de camada indica se uma das camadas pode ser uma camada de referência direta para outra das camadas.
[0150] Em alguns exemplos, a informação de dependência de camada inclui direct_dependency_flag[i][j] que, quando igual a 0, especifica que uma camada com índice j não é uma camada de referência direta para uma camada com índice i, e quando igual a 1, especifica que a camada com índice j pode ser uma camada de referência direta para a camada com índice i.
[0151] Em alguns exemplos, essa descrição descreve métodos para desenhos melhorados de VPS e SPS para extensões HEVC, incluindo mudanças de sinalização de informação de perfil, tier e nível para os conjuntos de camadas de saída, sinalização dos conjuntos de camada de saída, e sinalização da dependência de camada. Em alguns exemplos, essa descrição também descreve métodos para desenhos melhorados de VPS e SPS para extensões HEVC, incluindo mudanças na sinalização da informação no formato de representação (resolução espacial, formato de cor, e profundidade de bit no VPS (extensão) para negociação de sessão além de sinalização eficiente de parâmetros SPS com controle individual para diferentes categorias.
[0152] Em alguns exemplos, os desenhos VPS e SPS atuais podem ser associados pelo menos com os seguintes problemas: (1) visto que o elemento de sintaxe vps_num_layer_sets_minus1 é ue(v) codificado e existem também outros elementos de sintaxe codificados ue(v) antes do mesmo, atualmente o acesso ao perfil, tier e nível para conjuntos de camada necessita de decodificação por entropia; (2) de forma similar, a informação sobre dependência de camada não está acessível sem a decodificação por entropia; e (3) a sinalização do conjunto de camadas de saída é problemática e ineficiente, visto que: (a) o elemento de sintaxe layer_id_included_flag[][] utilizado para output_layer_set_idx[i] igual a 0 é para o conjunto de camadas 0, enquanto que para o conjunto de camadas 0 layer_id_included_flag[][] não é definido em HEVC versão 1 (isto é, HEVC WD10), (b) fica claro que a camada de saída alvo para o conjunto de camadas 0 é a camada 0 (a camada de base) de qualquer forma, (c) atualmente no máximo um conjunto de camadas de saída pode ser sinalizado para cada conjunto de camadas e (b) atualmente, a sintaxe utiliza um circuito de IDs de camada de 0 até o ID de camada maior possível no VPS, o que é complicado.
[0153] Em situações de múltiplas visualizações, o caso é frequente o de um conjunto de camadas ser associado com múltiplos conjuntos de diferentes camadas de saída alvo. Dessa forma, o elemento de sintaxe output_layer_flag[lsIdx][j] é alterado para output_layer_flag[i][j], e a semântica relacionada é alterada de acordo, e, como mencionado acima no item (d), atualmente, a sintaxe utiliza um circuito de IDs de camada de 0 até o ID de camada maior possível no VPS o que é complicado. Seria muito mais simples se utilizar apenas um circuito de camadas no conjunto de camadas, excluindo a camada mais alta no conjunto de camadas visto que essa camada é a camada de saída alvo com certeza.
[0154] De acordo com um exemplo, o decodificador de vídeo 30 pode decodificar mais de um conjunto de camada de saída para um conjunto de camadas. Em alguns exemplos, a decodificação pode ser realizada pela unidade de processamento de codificação por entropia 80.
[0155] De acordo com outro exemplo, o decodificador de vídeo 30 pode decodificar todas as informações de perfil, tier e nível no VPS, potencialmente de uma forma que seja acessível sem precisar da decodificação por entropia. Em alguns exemplos, a decodificação pode ser realizada pela unidade de processamento de decodificação por entropia 80, no entanto, sem a decodificação por entropia. De acordo, a decodificação também pode ser realizada por dispositivos que não possuem um decodificador por entropia.
[0156] De acordo com outro exemplo, o decodificador de vídeo 30 pode decodificar a informação de dependência de camadas no VPS de modo que seja acessível sem decodificação por entropia. Em alguns exemplos, a decodificação pode ser realizada pela unidade de processamento de decodificação por entropia 80, no entanto, sem codificação por entropia. De acordo, a decodificação também pode ser realizada por dispositivos que não possuem um decodificador por entropia.
[0157] De acordo com outro exemplo, o decodificador por entropia 30 pode decodificar o formato de representação no VPS, potencialmente de uma forma que seja acessível sem a decodificação por entropia, isto é, sem a codificação por entropia do formato de representação no VPS. Em alguns exemplos, a decodificação pode ser realizada pela unidade de processamento de decodificação por entropia 80, no entanto, sem a decodificação por entropia. De acordo, a decodificação também pode ser realizada por dispositivos que não possuem um decodificador por entropia. O decodificador de vídeo 30 pode decodificar o formato de representação no VPS, potencialmente sem a decodificação por entropia de acordo com as técnicas dessa descrição, e cada camada pode ser associada com um formato de representação em particular.
[0158] De acordo com outro exemplo, o decodificador de vídeo 30 pode decodificar a informação de sinal visual (video_format, video_full_range_flag, colour_primaries, transfer_characteristics, matrix_coeffs) por camada no VPS de acordo com as técnicas dessa descrição. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 80. Em alguns exemplos, o parâmetro video_format indica um formato de uma representação de imagens a serem codificadas. O parâmetro video_full_range_flag indica o nível preto e faixa de sinais de luminescência e crominância. O parâmetro colour_primaries indica as coordenadas de cromaticidade das cores primárias fonte. O parâmetro transfer_characteristics indica a característica de transferência optoeletrônica da imagem fonte. O parâmetro matrix_coeffs descreve os coeficientes de matriz utilizados na derivação de sinais de luminescência e crominância a partir das cores primárias verde, azul e vermelha.
[0159] De acordo com outro exemplo, um SPS pode ser compartilhado por camadas com diferentes resoluções espaciais, profundidades de bit, ou formatos de cor de acordo com as técnicas dessa descrição. O decodificador de vídeo 30 pode decodificar o SPS. Em alguns exemplos, a codificação pode ser realizada pela unidade de processamento de codificação por entropia 80.
[0160] De acordo com outro exemplo, nenhuma informação de temporização é fornecida em VUI de SPSs com ID de camada superior a 0 de acordo com as técnicas dessa descrição. O decodificador de vídeo 30 pode decodificar o SPS. Em alguns exemplos, a decodificação pode ser realizada pela unidade de processamento de decodificação por entropia 80.
[0161] De acordo com outro exemplo, nenhuma sinalização explícita de camadas de saída alvo é fornecida para os conjuntos de camada de saída padrão de acordo com as técnicas dessa descrição. O decodificador de vídeo 30 pode decodificar os conjuntos de camada de saída padrão. Em alguns exemplos, a decodificação pode ser realizada pela unidade de processamento de decodificação por entropia 80.
[0162] De acordo com outro exemplo, a sinalização do número máximo de subcamadas temporais que podem estar presentes (sps_max_sub_layers_minus1) e se a interpredição é adicionalmente restringida (sps_temporal_id_nesting_flag) ocorre em um SPS apenas quando nuh_layer_id é igual a 0. O decodificador de vídeo 30 pode decodificar os dados de vídeo sem codificação, em SPSs, com o ID de camada superior a 0, o número máximo de subcamadas temporais que podem estar presentes em cada CVS referindo ao SPS e se a interpredição for adicionalmente restringida para CVSs referentes a SPS. Em alguns exemplos, a decodificação pode ser realizada pela unidade de processamento de decodificação por entropia 80.
[0163] De acordo com outro exemplo, o elemento de sintaxe output_layer_set_idx[i] pode ser alterado para output_layer_set_idx_minus1[i] de acordo com as técnicas dessa descrição. O decodificador de vídeo 30 pode decodificar o elemento de sintaxe output_layer_set_idx_minus1[i] para indicar o índice do conjunto de camadas correspondente ao conjunto de camadas de saída i especificado pelo VPS.
[0164] Nos exemplos abaixo, os rótulos entre colchetes (por exemplo, [iniciar exemplo A] e [encerrar exemplo A]) serão utilizados para indicar o texto relacionado com o exemplo indicado. Mudanças podem ser indicadas com relação a uma versão atual de SHVC, que desde o dia 2 de abril de 2013 pode ser obtido a partir de: http://phenix.int- evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L10 0 8- v1.zip ou o padrão MV-HEVC que desde o dia 2 de abril de 2013 pode ser obtido através do endereço: http://phenix.int- sudparis.eu/jct2/doc_end_user/documents/3_Geneva/wg11/JCT3V- C1004-v4.zip.
[0165] Várias mudanças na sinalização de informação de perfil, tier e nível para os conjuntos de camadas, sinalização de conjuntos de camadas de saída, e sinalização de dependência de camadas, são indicadas por [INICIAR EXEMPLO A] e [ENCERRAR EXEMPLO A] que serão utilizados para indicar o exemplo A incluído aqui, de acordo com os aspectos dessa descrição.
[0166] Devido ao fato de o elemento de sintaxe vps_num_layer_sets_minus1 ser ue(v) codificado (isto é, codificado por entropia) e existirem também outros elementos de sintaxe codificados ue(v) antes do mesmo, o acesso atual do perfil, tier e nível para os conjuntos de amadas precisa de decodificação por entropia. Para essa informação ser acessível sem a decodificação por entropia, um conjunto de estrutura de sintaxe profile_tier_level() pode ser sinalizado em uma posição que é acessível sem a decodificação por entropia. O conjunto de estruturas de sintaxe profile_tier_level() pode então ser referido para conexão com outros conjuntos de camada de saída. Múltiplos conjuntos de camada de saída do mesmo conjunto de camadas podem precisar de tamanhos DPB diferentes, e, dessa forma, podem se conformar a diferentes níveis.
[0167] Em alguns exemplos, o elemento de sintaxe output_layer_set_idx[i] pode ser alterado para output_layer_set_idx_minus1[i], como descrito abaixo. Quando um SPS com nuh_layer_id igual a 0 é referido por uma camada com nuh_layer_id superior a 0, a estrutura de sintaxe profile_tier_level() no SPS não é aplicada para essa camada. Por um motivo similar ao acima, a sinalização da dependência de camada é movida ascendentemente para ser acessível sem decodificação por entropia. A alteração do elemento de sintaxe output_layer_set_idx[i] para output_layer_set_idx_minus1[i] é decorrente das seguintes razões. O elemento de sintaxe layer_id_included_flag[][] utilizado para output_layer_set_idx[i] igual a 0 é para o conjunto de camadas 0, enquanto que para o conjunto de camadas 0 layer_id_included_flag[][] não é definido. Fica claro que a camada de saída alvo para o conjunto de camadas 0 é a camada 0 (a camada de base).
[0168] De acordo, como pode ser observado acima, cada camada precisa fazer referência a um SPS. Convencionalmente, quaisquer duas camadas que tenham valores diferentes de resoluções espaciais, profundidades de bit ou formatos de cor precisam fazer referência a dois SPSs diferentes visto que esses parâmetros de formato de representação são sinalizados no SPS. No entanto, quando esses parâmetros para todos os SPSs exceto os com nuh_layer_id igual a 0 são movidos para o VPS, e quando for especificado que os parâmetros de formato de representação em um SPS com nuh_layer_id igual a 0 que é referido por uma camada com nuh_layer_id superior a 0 são ignorados, é possível que as camadas com valores diferentes de resoluções espaciais, profundidades de bit ou formatos de cor façam referência aos mesmos SPS. Em outras palavras, de acordo com algumas modalidades dessa descrição, as camadas com valores diferentes de resoluções espaciais, profundidades de bit ou formatos de cor podem compartilhar os mesmos SPSs, juntamente com outros SPS.
[0169] Alguns exemplos descritos aqui podem mudar a sintaxe e semântica para a sinalização de conjunto de camadas de saída. Em alguns casos, isso pode solucionar um ou mais dos problemas a seguir, primeiro atualmente no máximo um conjunto de camadas de saída pode ser sinalizado para cada conjunto de camadas. Em situações de múltiplas visualizações, o caso é frequentemente de um conjunto de camadas ser associado com múltiplos conjuntos de diferentes camadas de saída alvo. Dessa forma o elemento de sintaxe output_layer_flag[lsIdx][j] pode ser alterado para output_layer_flag[i][j], e a semântica relacionada é alterada de acordo. De acordo, mais de um conjunto de camadas de saída pode ser sinalizado para um conjunto de camadas. Em segundo lugar, atualmente, a sintaxe utiliza um circuito de IDs de camada de 0 até o ID de camada mais alto possível no VPS, o que é complicado. Em vez disso, seria muito mais simples utilizar apenas um circuito de camadas no conjunto de camadas, excluindo a camada mais alta no conjunto de camadas visto que essa camada é certamente uma camada de saída alvo.
[0170] A sinalização da informação no formato de representação (resolução espacial, formato de cor, e profundidade de bit no VPS (extensão) para negociação de sessão, para a qual as mudanças são indicadas utilizando rótulos em colchetes [INICIAR EXEMPLO B] e [ENCERRAR EXEMPLO B] que serão utilizados aqui para indicar o exemplo B. O formato de representação é sinalizado para cada camada, incluindo a camada de base, através de um índice para uma lista de tal informação e não é sinalizado em SPSs com nuh_layer_id superior a 0, igual à estrutura de sintaxe profile_tier_level() em diferentes SPSs com nuh_layer_id superior a 0, os valores dos elementos de sintaxe chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_heigth_in_luma_samples, bit_depth_luma_minus8, e bit_depth_chroma_minus8 não são aplicados a essa camada.
[0171] Quando a sinalização eficiente de parâmetros SPS com controle individual de diferentes categorias, os parâmetros que podem ser incluídos nos SPSs podem ser classificados nas seguintes seis categorias: (1) Cat1: informação de perfil-tier-nível, já endereçada na Codificação de Vídeo HEVC Escalonável (SHVC) WD1 e HEVC de Múltiplas Visualizações (MV-HEVC) WD3 e acima, (2) Cat2: informação de formato de representação, endereçada acima, (3) Cat3: informação de subcamada (sps_max_sub_layers_minus1, sps_tempral_id_nesting_flag, sps_max_dec_pic_buffering_minus1[i], sps_max_num_reorder_pics[i], e sps_max_latency_increase_plus1[i]) (Essas mudanças são indicadas por rótulos em colchetes [INICIAR EXEMPLO C] e [ENCERRAR EXEMPLO C] que serão utilizados aqui para indicar o exemplo C, que também é referido como Cat3), (4) Cat4: conjunto candidato de imagens de referência de curto prazo (RPS) (as mudanças para o mesmo são indicadas por rótulos em colchetes [INICIAR EXEMPLO D] e [ENCERRAR EXEMPLO D], que serão utilizados aqui para indicar o exemplo D, que também é referido como Cat4, (5) Cat5: parâmetros de Informação de Capacidade de Utilização de Vídeo (VUI) (as mudanças para esse são indicadas pelos rótulos em colchetes [INICIAR EXEMPLO E] e [ENCERRAR EXEMPLO E], que serão utilizados aqui para indicar o exemplo E, que também é referido como Cat5), e (6) Cat6: outros parâmetros SPS, as mudanças para o mesmo e as mudanças comuns são indicadas pelos rótulos em colchetes [INICIAR EXEMPLO F] e [ENCERRAR EXEMPLO F] serão utilizados aqui para indicar o exemplo F, também referido como Cat6.
[0172] Para camadas de aperfeiçoamento ou conjuntos de camadas envolvendo camadas de aperfeiçoamento, a informação das categorias 3 a 6 podem ser herdadas do VPS ativo ou sinalizadas diretamente no SPS, enquanto a informação das categorias 1 e 2 precisam ser sinalizadas no VPS devido à importância para negociação de sessão. Em um SPS com nuh_layer_id superior a 0, com um mínimo de apenas três elementos de sintaxe para sinalizar o ID VPS, ID SPS e um indicador (para indicar se os dados das categorias 3 a 6 (Cat3 a Cat6) estão presentes no SPS ou herdados do VPS ativo) estão presentes. Tal papel de SPS é apenas para passar o ID VPs ativo para os Conjuntos de Parâmetros de Imagem (PPS) e então indiretamente para as unidades de Camada de Abstração de Rede (NAL) da Camada de Codificação de Vídeo (VCL).
[0173] Mudanças abaixo são baseadas em MV-HEVC WD3 e SHVC WD1 e são identificadas por diferentes códigos de cor, isto é, destacadas em cores diferentes, como notado acima, e remoções são ilustradas como textos riscados. As partes que não são mencionadas são iguais às em MV-HEVC WD3 e SHVC WD1.
[0174] Ilustrado abaixo na tabela 3 encontra-se a sintaxe ilustrativa para um conjunto de parâmetros de vídeo (VPS) para a sintaxe e semântica de carga útil de sequência de byte bruto (RBSP). Isso é igual em SHVC WD1 e MV-HEVC WD3. A sintaxe é copiada abaixo (na Tabela 3) por motivos de conveniência. Tabela 3 - Sintaxe ilustrativa para VPS para
[0175] Tabela 4 ilustra um exemplo de extensões de conjunto de parâmetros de vídeo e semântica. Tabela 4 - Sintaxe e semântica de extensão de conjunto de parâmetros de vídeo.
[0176] O parâmetro vps_num_profile_tier_level_minus1 plus1 especifica o numero de estruturas de sintaxe profile_tier_level() no VPS. O vps_profile_present_flag[i] igual a 1 especifica que o perfil e informação de tier estão presentes na estrutura de sintaxe profile_tier_level() i. vps_profile_present_flag[lsIdx] igual a 0 especifica que a informação de perfil e tier não está presente na estrutura de sintaxe profile_tier_level() i e pode ser inferida para a estrutura de sintaxe profile_tier_level() i.
[0177] O parâmetro profile_ref_minus1[i] especifica que a informação de perfil e tier para a estrutura de sintaxe profile_tier_level() i pode ser inferida para ser igual à estrutura de sintaxe profile_tier_level() da informação de perfil e tier para (profile_ref_minus1[i] +1). O valor de profile_ref_minus1[i] +1 pode ser inferior a i.
[0178] O parâmetro direct_dependency_flag[i][j] igual a 0 especifica que a camada com índice j não é uma camada de referência direta para a camada com índice i. direct_dependency_flag[i][j] igual a 1 especifica que a camada com índice j pode ser uma camada de referência direta para a camada com índice i. Quando direct_dependency_flag[i][j] não está presente para i e j na faixa de 0 a vps_max_layers_minus1, pode ser inferido como sendo igual a 0.
[0179] As variáveis NumDirectRefLayers[i] e RefLayerId[i][j] podem ser derivadas como segue: for( i = 1; i <= vps_max_layers_minus1; i++ ) for( j = 0, NumDirectRefLayers[ i ] = 0; j < i; j++ ) if( direct_dependency_flag[ i ][ j ] = = 1 ) RefLayerId[ i ][ NumDirectRefLayers[ i ]++ ] = layer_id_in_nuh[ j ] [ENCERRAR EXEMPLO A]
[0180] [INICIAR EXEMPLO B] O parâmetro vps_num_rep_formats especifica o número de estruturas de sintaxe rep_format() seguintes no VPS. vps_rep_format_idx[i] especifica o índice, no conjunto de estruturas de sintaxe rep_format() no VPS, da estrutura de sintaxe rep_format() que aplica à camada com nuh_layer_id igual a layer_id_in_nuh[i]. Quando i é igual a 0 ou vps_num_rep_formats é igual a 1, o valor de vps_rep_format_idx[i] pode ser inferido como sendo igual a 0. O valor de vps_rep_format_idx[i] pode estar na faixa de 0 a vps_num_rep_formats-1, inclusive. [ENCERRAR EXEMPLO B].
[0181] [INICIAR EXEMPLO C] max)sub_layer_vps_predict_flag[i] igual a 1 especifica que max_sub_layers_vps_minus1[i] pode se inferido como sendo igual a max_sub_layers_vps_minus1[i-1] e que sub_layer_vps_ordering_predict_flag[i] está presente. max_sub_layers_vps_predict_flag[i] igual a 0 especifica que max_sub_layers_vps_minus1[i]é explicitamente sinalizado. O valor de max_sub_layers_vps_predict_flag [0] pode ser inferido como sendo igual a 0.
[0182] O parâmetro max_sub_layers_vps_minus1[i] é utilizado para a inferência do elemento de sintaxe SPS sps_max_sub_layers_minus1. Quando max_sub_layers_vps_predict_flag[i] é igual a 1, max_sub_layers_vps_minus1[i] pode ser inferido como sendo igual a max_sub_layers_vps_minus1[i-1]. O valor de max_sub_layers_vps_minus1[i] pode ser inferido como sendo igual a vps_max_sub_layers_minus1. [ENCERRAR EXEMPLO C] [INICIAR EXEMPLO A]. multiple_output_layer_sets_in_layer_set_flag igual a 1 especifica que mais de um conjunto de camadas de saída pode ser especificado pelo VPS para cada conjunto de camadas. multiple_output_layer_sets_in_layer_set_flag igual a 0 especifica que apenas um conjunto de camadas de saída é especificado pelo VPS para cada conjunto de camadas, com a camada mais alta sendo a única camada de saída alvo. De acordo, visto que multiple_output_layer_sets_in_layer_set_flag igual a 0 especifica que apenas um conjunto de camadas de saída é especificado pelo VPS para cada conjunto de camadas, com a camada mais alta sendo a única camada de saída alvo, nenhuma sinalização explícita das camadas de saída alvo para os conjuntos de camadas de saída padrão é necessária. Por exemplo, não existe necessidade de se sinalizar quais camadas devem ser enviadas visto que só existe um conjunto de camadas de saída para cada conjunto de camadas.
[0183] O parâmetro num_output_layer_sets_minus1 plus1 especifica o número de conjuntos de camadas de saída especificado pelo VPS. O valor de num_output_layer_sets_minus1 pode estar na faixa de 0 a 1023, inclusive. [ENCERRAR EXEMPLO A].
[0184] Alternativamente, em vez de num_output_layer_sets_minus1, num_addn_output_layer_sets que indica o número de conjuntos de camada de saída em adição a vps_num_layers_sets_minus1 + 1 pode ser sinalizado.
[0185] [INICIAR EXEMPLO A] O parâmetro output_layer_set_idx_minus1[i] plus 1 especifica o índice do conjunto de camadas para o conjunto de camadas de saída i. O valor de output_layer_set_idx_minus1[i] pode estar na faixa de 0 a vps_num_layer_sets_minus1 -1 inclusive. O comprimento do elemento de sintaxe output_layer_set_idx_minus1[i] é Ceil(Log2(vps_num_layer_sets)minus1)) bits.
[0186] output_layer_flag[i][j] igual a 1 especifica que a camada j no conjunto de camadas é uma camada de saída alvo do conjunto de camadas de saída i. output_layer_flag[i][j] igual a 0 especifica que a camada j no conjunto de camadas não é uma camada de saída alvo do conjunto de camadas de saída i.
[0187] O valor de output_layer_flag[i][NumLayersInIdList[lsIdx]-1] pode ser inferido como sendo igual a 1, onde lsIdx é igual a output_layer_set_idx_minus1[i] +1. [ENCERRAR EXEMPLO A];
[0188] Alternativamente, o valor de output_layer_flag[i][NumLyaersInIdList[lsIdx]-1] pode ser inferido como sendo igual a 1, onde lsIdx é igual a output_layer_set_idx_minus1[i]+1 e i está na faixa de 0 a vps_num_layer_sets_minus1, inclusive e o valor de output_layer_flag[i][j] pode ser inferido como sendo igual a 0 com i na faixa de 0 a vps_num_layer_sets_minus1, inclusive, e j na faixa de 0 a NumLyayerIdInList[lsIdx]-2, inclusive e lsIdx é igual a output_layer_set_idx_minus1[i]+1.
[0189] [INICIAR EXEMPLO A]. O parâmetro profile_level_tier_idx[i] especifica o índice, dentro do conjunto de estruturas de sintaxe profile_tier_level() no VPS, da estrutura de sintaxe profile_tier_level() que aplica ao conjunto de camadas de saída i. O comprimento do elemento de sintaxe profile_level_tier_idx[i] pode ser Ceil(Log2(vps_num_profile_tier_level_minus1+1)) bits. O valor de profile_level_tier_idx [0] pode ser inferido para ser igual a 0. O valor de profile_level_tier_idx[i] pode estar na faixa de 0 para vps_num_profile_tier_level_minus1, inclusive. [ENCERRAR EXEMPLO A].
[0190] [INICIAR EXEMPLO F] O parâmetro vps_num_other_sps_params especifica o número das estruturas de sintaxe other_sps_parameters() a seguir no VPS. O valor de vps_num_other_sps_params pode estar na faixa de 0 a 15, inclusive. [ENCERRAR EXEMPLO F].
[0191] [INICIAR EXEMPLO D] O parâmetro vps_num_st_rps_candidates especifica o número de estruturas de sintaxe short_term_rps_candidates() seguintes no VPS. O valor de vps_nume_st_rps_candidates pode estar na faixa de 0 a 15, inclusive. [ENCERRAR EXEMPLO D].
[0192] [INICIAR EXEMPLO E] O parâmetro vps_num_vui_params especifica o número de estruturas de sintaxe vui_parameters() seguintes no VPS. O valor de vps_num_vui_params pode estar na faixa de 0 a 15 inclusive. [ENCERRAR EXEMPLO E].
[0193] [INICIAR EXEMPLO F] vps_other_sps_params_idx[i] especifica o índice, no conjunto de estruturas de sintaxe other_sps_parameters() no VPS, da estrutura sintaxe other_sps_parameters() que aplica à camada com nuh_layer_id igual a layer_id_in_nuh[i]. O comprimento do elemento de sintaxe vps_other_sps_params_idx[i] pode ser Ceil(Log2(vps_num_other_sps_params)) bits. Quando vps_num_other_sps_params é igual a 1, o valor de vps_other_sps_params_idx[i] pode ser inferido para ser igual a 0. O valor de vps_other_sps_params_idx[i] pode estar na faixa de 0 a vps_num_other_sps_params-1, inclusive. [ENCERRAR EXEMPLO F].
[0194] [INICIAR EXEMPLO D] O parâmetro vps_st_rps_idx[i] especifica o índice, no conjunto de estruturas de sintaxe de short_term_rps_candidates() no VPS, da estrutura de sintaxe short_term_rps_candidates() que aplica à camada com nuh_layer_id igual a layer_id_in_nuh[i]. O comprimento do elemento de sintaxe vps_st_rps_idx[i] pode ser Ceil(Log2(vps_num_st_rps_candidates)) bits. Quando vps_num_st_rps_candidates é igual a 1, o valor de vps_st_rps_idx[i] pode ser inferido como sendo igual a 0. O valor de vps_st_rps_idx[i] pode estar na faixa de 0 a vps_num_st_rps_candidates-1, inclusive. [ENCERRAR EXEMPLO D].
[0195] [INICIAR EXEMPLO E] O parâmetro vps_vui_params_idx[i] especifica o índice, no conjunto de estruturas de sintaxe vui_parameters() no VPS, da estrutura de sintaxe vui_parameters() que aplica à camada com nuh_layer_id igual a layer_id_in_nuh[i]. O comprimento do elemento de sintaxe vps_vui_params_idx[i] pode ser Ceil(Log2(vps_num_vui_params)) bits. Quando vps_num_vui_params é igual a 1, o valor de vps_vui_params_idx[i] pode ser inferido como sendo igual a 0. O valor de vps_vui_params_idx[i] pode estar na faixa de 0 a vps_num_vui_params-1, inclusive. [ENCERRAR EXEMPLO E].
[0196] [INICIAR EXEMPLO C] A variável MaxSubLayers[setId] para setId na faixa de 0 a num_output_layer_sets-1, inclusive, é derivada como segue: for( setId = 0; setId < num_output_layer_sets; setId++ ) { lsIdx = outptut_layer_set_idx_minus1[ setId ] + 1 // Layer set index highestLayerId = LayerSetLayerIdList[ lsIdx ][ NumLayersInIdList[ lsIdx ] - 1 ] MaxSubLayers[ setId ] = ( max_sub_layers_vps_minus1[ highestLayerId ] + 1 ) }
[0197] O parâmetro max_sub_layers_vps_predict_flag[i] igual a 1 especifica que max_sub_layers_vps_minus1[i] pode ser inferido como sendo igual a max_sub_layers_vps_minus1[i-1] e que sub_layer_vps_ordering_predict_flag[i] está presente. max_sub_layers_vps_predict_flag[i] igual a 0 especifica que max_sub_layers_vps_minus1[i] é explicitamente sinalizado. O valor de max_sub_layers_vps_predict_flag [0] pode ser inferido como sendo igual a 0.
[0198] O parâmetro sub_layer_vps_buf_info_predict_flag[i] igual a 1 especifica que max_vps_dec_pic_buffering_minus1[i][j] pode ser inferido como sendo igual a max_vps_dec_pic_buffering_minus1[i-1][j] para cada valor de j. sub_layer_vps_buf_info_predict_flag[i] igual a 0 especifica que max_vps_dec_pic_buffering_minus1[i][j] para pelo menos um valor de j é explicitamente sinalizado.
[0199] O parâmetro sub_layer_vps_buf_info_present_flag[i] igual a 1 especifica que max_vps_dec_pic_buffering_minus1[i][j] estão presentes para as subcamadas MaxSubLayers[i]. sub_layer_vps_buf_info_present_flag[] igual a 0 especifica que os valores de max_vps_dec_pic_buffering_minus1[i][MaxSubLayers[i]-1] se aplicam a todas as subcamadas.
[0200] O parâmetro max_vps_dec_pic_buffering_minus1[i][j] é utilizado para inferência dos valores dos elementos de sintaxe SPS sps_max_dec_pic_buffering_minus1[j]. Quando max_vps_dec_pic_buffering_minus1[i][j] não está presente para i na faixa de 0 para MaxSubLayers[i]-2, inclusive, devido a sub_layer_vps_buf_info_present_flag[i] ser igual a 0, pode ser inferido como sendo igual a max_vps_dec_pic_buffering_minus1[i][MaxSubLayers[i]-1].
[0201] O valor de max_vps_dec_pic_buffering_minus1 [0][j] para cada valor de j pode ser inferido como sendo igual a vps_max_dec_pic_buffering_minus1[j].
[0202] O parâmetro sub_layer_vps_ordering_info_predict_flag[i] igual a 1 especifica que os elementos de sintaxe sub_layer_vps_ordering_info_present_flag[i], max_vps_num_reorder_pics[i][j], e max_vps_latency_increase_plus1[i][j] são inferidos como sendo iguais a sub_layer_vps_ordering_info_present_flag[i- 1], max_vps_num_reorder_pics[i-1][j], e max_vps_latency_increase_plus1[i-1][j], respectivamente. sub_layer_vps_ordering_info_predict_flag[i] igual a 0 indica que os elementos de sintaxe sub_layer_vps_ordering_info_present_flag[i], max_vps_num)reorder_pics[i][j], e max_vps_latency_increase_plus1[i][j] são explicitamente sinalizados. Quando não presente, o valor de sub_layer_vps_ordering_info_predict_flag[i] é configurado igual a 0.
[0203] O parâmetro sub_layer_vps_ordering_info_present_flag[i] igual a 1 especifica que max_vps_num_reorder_pics[i][j] e max_vps_latency_increase_plus1[i][j] estão presentes para as subcamadas max_sub_layers_vps_minus1 + 1. sub_layer_vps_ordering_info_present_flag[i] igual a 0 especifica que os valores de max_vps_num_reorder_pics[i][vps_max_sub_layers_minus1] e max_vps_latency_increase_plus1[i][max_sub_layers_vps_minus1 ] se aplicam a todas as subcamadas.
[0204] O parâmetro max_vps_num_reorder_pics[i][j] é utilizado para inferência dos valores do elemento de sintaxe SPS sps_max_num_reorder_pics[i]. Quando max_vps_num_reorder_pics[i][j] não está presente para i na faixa de 0 a max_sub_layers_vps_minus[i]-1, inclusive, devido ao fato de sub_layer_vps_ordering_info_present_flag[i] ser igual a 0, pode ser inferido como sendo igual a max_vps_num_reorder_pics[i][max_sub_layers_vps_minus1[i]].
[0205] O parâmetro max_vps_latency_increase_plus1[i][j] é utilizado para inferência dos valores dos elementos de sintaxe SPS sps_max_latency_increase_plus1[j]. Quando max_vps_latency_increase_plus1[i][j] não está presente pra i na faixa de 0 a max_sub_layers_vps_minus1[i]-1, inclusive, devido ao fato de sub_layer_vps_ordering_info_present_flag[i] ser igual a 0, pode ser inferido como sendo igual a max_vps_latency_increase_plus1[i][max_sub_layers_vps_minus1 [i]]. [ENCERRAR EXEMPLO C]
[0206] [INICIAR EXEMPLO B]
[0207] A Tabela 5 ilustra um exemplo de um formato representativo e semântica. Tabela 5 - Sintaxe de formato e semântica de representação
[0208] O parâmetro chroma_format_vps_idc, separate_colour_plane_vps_flag, pic_width_vps_in_luma_samples, pic_height_vps_in_luma_samples, bit_depth_vps_luma_minus8, e bit_depth_vps_chroma_minus8 pode ser utilizado para inferência dos valores dos elementos de sintaxe SPS chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8, e bit_depth_chroma_minus8, respectivamente, para cada SPS que se refere ao VPS. Para cada um desses elementos de sintaxe, todas as restrições, se houver alguma, que se aplicam ao valor do elemento de sintaxe SPS correspondente também se aplicam. [ENCERRAR EXEMPLO B] A informação de formato de representação pode incluir geralmente a profundidade de bit, o formato de amostragem de crominância, resolução de sequências, por exemplo. Como ilustrado no exemplo da Tabela 5, o formato de representação pode incluir chroma_format_vps_idc, separate_colour_plane_vps_flag, pic_width_vps_in_luma_samples, pic_height_vps_in_luma_samples, bit_depth_vps_luma_minus8, e bit_depth_vps_chroma_minus8. Adicionalmente, como ilustrado na Tabela 5, a sinalização do formato de representação no VPS pode ser realizada de modo que o formato de representação, por exemplo, chroma_format_vps_idc, separate_colour_plane_vps_flag, pic_width_vps_in_luma_samples, pic_height_vps_in_luma_samples, bit_depth_vps_luma_minus8 e bit_depth_vps_chroma_minus8, seja acessível sem decodificação por entropia. Em outras palavras, como ilustrado na Tabela 5, chroma_format_vps_idc, separate_colour_plane_vps_flag, pic_width_vps_in_luma_samples, pic_height_vps_in_luma_samples, bit_depth_vps_luma_minus8, e bit_depth_vps_chroma_minus8 não sejam codificados por entropia, isto é, os elementos de descrição não são ue(v). Em alguns exemplos, cada camada pode ser associada com um formato de representação em particular.
[0209] [INICIAR EXEMPLO F] A tabela 6 ilustra um exemplo de sintaxe e semântica de outros parâmetros SPS. Tabela 6 - Sintaxe e Semântica de Outros Parâmetros SPS
[0210] Para cada um dos elementos de sintaxe abaixo, todas as restrições, se houver alguma, que se aplicam ao valor do elemento de sintaxe SPS correspondente também se aplicam: conformance_window_vps_flag, conf_win_vps_left_offset, conf_win_vps_right_offset, conf_win_vps_top_offset, conf_win_vps_bottom_offset, log2_vps_max_pic_order_cnt_lsb_minus4, log2_vps_min_luma_coding_block_size_minus3, log2_vps_diff_max_min_luma_coding_block_size, log2_vps_min_transform_block_size_minus2, log2_vps_diff_max_min_transform_block_size; max_vps_transform_hierarchy_depth_inter, max_vps_transform_hierarchy_depth_intra, scaling_list_enabled_vps_flag, sps_scaling_list_data_present_vps_flag, amp_enabled_vps_flag, sample_adaptive_offset_enabled_vps_flag, pcm_enabled_vps_flag, pcm_vps_sample_bit_depth_luma_minus1, pcm_vps_sample_bit_depth_chroma_minus1, log2_vps_min_pcm_luma_coding_block_size_minus3, log2_vps_diff_max_min_pcm_luma_coding_block_size, pcm_vps_loop_filter_disabled_flag, long_term_ref_pics_present_vps_flag, num_long_term_ref_pics_vps, lt_ref_pic_poc_lsb_vps[i], used_by_curr_pic_lt_vps_flag[i], temporal_mvp_enabled_vps_flag, e strong_intra_smoothing_enabled_vps_flag podem ser utilizados para inferência dos valores dos elementos de sintaxe SPS conformance_window_flag, conf_win_left_offset, conf_win_right_offset, conf_win_top_offset, conf_win_bottom_offset, log2_max_pic_order_cnt_lsb_minus4, log2_min_luma_coding_block_size_minus3, log2_diff_max_min_luma_coding_block_size, log2_min_transform_block_size_minus2, log2_diff_max_min_transform_block_size, max_transform_hierarchy_depth_inter, max_transform_hierarchy_depth_intra, scaling_list_enabled_flag, sps_scaling_list_data_present_flag, amp_enabled_flag, sample_adaptive_offset_enabled_flag, pcm_enabled_flag, pcm_sample_bit_depth_luma_minus1, pcm_sample_bit_depth_chroma_minus1, log2_min_pcm_luma_coding_block_size_minus3, log2_diff_max)min_pcm_luma_coding_block_size, pcm_loop_filter_disabled_flag, long_term_ref_pics_present_flag, num_long_term_ref_pics_sps, lt_ref_pic_poc_lsb_sps[i], used_by_curr_pic_lt_flag[i], sps_temporal_mvp_enabled_flag e strong_intra_smoothing_enabled_flag, respectivamente. [ENCERRAR EXEMPLO F].
[0211] [INICIAR EXEMPLO D] A Tabela 7 ilustra um exemplo de sintaxe e semântica candidatas a RPS de curto prazo. Tabela 7 - Sintaxe e Semântica Candidatas a RPS de Curto Prazo
[0212] O parâmetro num_short_term_ref_pic_sets especifica o número das estruturas de sintaxe short_term_ref_pic_set() a seguir. O valor de num_short_term_ref_pic_sets pode estar na faixa de 0 a 64, inclusive.
[0213] Nota 1 - Um decodificador deve alocar a memória para um número total de estruturas de sintaxe num_short_term_ref_pic_sets +1 short_term_ref_pic_set() visto que pode haver uma estrutura de sintaxe short_term_ref_pic_set() sinalizada diretamente nos cabeçalhos de fatia de uma imagem atual. Uma estrutura de sintaxe short_term_ref_pic_set() sinalizada diretamente nos cabeçalhos de fatia de uma imagem atual possuem índice igual a num_short_term_ref_pic_sets.
[0214] O parâmetro pred_st_rps_cand_idx_plus1 minus1 especifica o índice, no conjunto de estruturas de sintaxe short_term_rps_candidates() no VPS, da estrutura de sintaxe short_term_rps_candidates() que é utilizada para inferir pelo menos uma estrutura de sintaxe short_term_ref_pic_set() da estrutura de sintaxe atual short_term_rps_candidates(). Quando não está presente, pred_st_rps_cand_idx_plus1 pode ser inferido como sendo igual a 0. O valor de pred_st_rps_cand_idx_plus1 pode estar na faixa de 1 a vps_num_st_rps_candidates -1, inclusive.
[0215] pred_from_rps_cand_list_flag[i] igual a 1 especifica que a estrutura de sintaxe short_term_ref_pic_set() i da estrutura de sintaxe atual short_term_rps_candidates() não está presente e configura para uma dentre as estruturas de sintaxe short_term_ref_pic_set() presentes em outra estrutura de sintaxe short_term_rps_candidates(). pred_from_rps_cand_list_flag[i] igual a 0 especifica que a estrutura de sintaxe short_term_ref_pic_set() i da estrutura de sintaxe atual short_term_rps_candidates() está presente. Quando não estiver presente, o valor de pred_from_rps_cand_list_flag[i] pode ser inferido como sendo igual a 0. [ENCERRAR EXEMPLO D].
[0216] Alternativamente, pred_from_rps_cand_list_flag[i] igual a 1 especifica que as variáveis DeltaPocS0. DeltaPocS1, UsedByCurrPicS1, UsedByCurrPicS0, NumPositivePics, NumNegativePics e NumDeltaPocs correspondendo a short_ter_ref_pic_set() i são derivados para serem iguais às variáveis DeltaPocS0, DeltaPocS1, UsedByCurrPicS1, UsedByCurrPicS0, NumPositivePics, NumNegativePics, e NumDeltaPocs, respectivamente, que correspondem a outra estrutura short_term_rps_candidates().
[0217] [INICIAR EXEMPLO D] O parâmetro idx_in_rps_cand[i] especifica o índice, no conjunto de estruturas de sintaxe short_term_ref_pic_set() da estrutura de sintaxe (pred_st_rps_cadn_idx_plus1-1)-th short_term_rps_candidates() no VPS, da estrutura de sintaxe short_term_ref_pic_set() que é idêntica à estrutura de sintaxe short_term_ref_pic_set() i da short_term_rps_candidates() atual.
[0218] Quando pred_from_rps_cand_list_flag[i] é igual a 1, a estrutura de sintaxe short_term_ref_pic_set() i na estrutura de sintaxe atual short_term_rps_candidates() é configurada para ser igual à estrutura de sintaxe dx_in_rps_cand[i]-th short_term_ref_pic_set() no VPS. [ENCERRAR EXEMPLO D].
[0219] Alternativamente, quando pred_from_rps_cand_list_flag[i] é igual a 1, as variáveis DeltaPocS0, DeltaPocS1, UsedByCurrPicS1, UsedByCurrPicS0, NumPositivePics, NumNegativePics, e NumDeltaPocs correspondendo à estrutura de sintaxe short_term_ref_pic_set() i na estrutura de sintaxe short_term_rps_candidates() é configurada para ser igual às variáveis DeltaPocS0, DeltaPocS1, UsedByCurrPicS1,UsedByCurrPicS0, NumPositivePics, NumNegativePics, e NumDeltaPocs, respectivamente, que correspondem à estrutura de sintaxe idx_in_rps_can[i]-th short_term_ref_pic_set() da estrutura de sintaxe (pred_st_rps_cand_idx_plus1-1)-th short_term_rps_candidates() no VPS. A tabela 8 ilustra um exemplo de sintaxe e semântica dos parâmetros VUI. Tabela 8 - sintaxe e semântica de parâmetros VUI
[0220] [INICIAR EXEMPLO E] Quando timingParamsPresentFlag é igual a 0, o seguinte se aplica: Os valores de vui_timing_info_present_flag,vui_num_units_in_tick, vui_time_scale, vui_poc_proportional_to_timing_flag, e vui_num_ticks_poc_diff_one_minus1 são inferidos como sendo iguais a vps_timing_info_present_flag, vps_num_units_in_tick,vps_time_scale, vps_poc_proportional_to_timing_flag,e vps_num_ticks_poc_diff_one_minus1, respectivamente. O valor de vui_hrd_parameters_present_flag pode ser inferido como sendo igual a 0.
[0221] O parâmetro vui_parameters_present_flag igual a 1 especifica que existem mais elementos de sintaxe na estrutura de sintaxe vui_parameters(). vui_parameters_present_flag igual a 0 especifica que não existem mais elementos de sintaxe na estrutura de sintaxe vui_parameters()...[ENCERRAR EXEMPLO E].
[0222] Em um exemplo, como pode ser observado na Tabela 8, a informação de sinal visual (por exemplo, video_format, video_full_range_flag, colour_primaries, transfer_characteristics, matrix_coeffs) é um subconjunto dos parâmetros VUI. Adicionalmente, como ilustrado no exemplo da Tabela 4 o VUI, e, dessa forma, a informação de sinal visual, está no VPS. Pela combinação da informação da Tabela 4 e da Tabela 8, é ilustrado que a informação de sinal visual é sinalizada por camada no VPS.
[0223] A Tabela 9 ilustra uma sintaxe e semântica RBSP de conjunto de parâmetro de sequência ilustrativa. Tabela 9 - Sintaxe e semântica RBSP do conjunto de parâmetros de sequência.
[0224] [INICIAR EXEMPLO B]
[0225] Quando nuh_layer_id de SPS é igual a 0, os valores de chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8, e bit_depth_chroma_minus8 podem ser iguais a chroma_format_vps_idc, separate_colour_plane_vps_flag, pic_width_vps_in_luma_samples, pic_height_vps_in_luma_samples, bit_depth_vps_luma_minus8e bit_depth_vps_chroma_minus8, respectivamente, da estrutura de sintaxe 0-th rep_format() no VPS ativo.
[0226] Para cada camada com nuh_layer_id superior a 0 que se refere a SPS, deixe layerIdx ser configurada igual ao valor para o qual layer_id_in_nuh[layerIdx] é igual a nuh_layer_id da camada, o seguinte se aplica: [ENCERRAR EXEMPLO B].
[0227] [INICIAR EXEMPLO A] Quando nuh_layer_id de SPS é igual a 0, a estrutura de sintaxe profile_tier_level() no SPS é ignorada. [ENCERRAR EXEMPLO A]
[0228] Como ilustrado na Tabela 8 e na Tabela 9, nenhuma informação de temporização é sinalizada em um VUI SPS, por exemplo, para qualquer camada superior à camada 0.
[0229] [INICIAR EXEMPLO B] Os valores de chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8 e bit_depth_chroma_minus8 são inferidos como sendo iguais a chroma_format_vps_idc, separate_colour_plane_vps_flag, pic_width_vps_in_luma_samples, pic_height_vps_in_luma_samples, bit_depth_vps_luma_minus8, e bit_depth_vps_chroma_minus8, respectivamente, da estrutura de sintaxe vps_rep_format_idx[layerIdx]-th rep_format() no VPS ativo, independentemente se esses elementos de sintaxe estão presentes no VPS. [ENCERRAR EXEMPLO B].
[0230] [INICIAR EXEMPLO F] O parameterinherit_sps_params_from_vps_flag igual a 1 especifica que, para RBSP SPS, os valores de todos os elementos de sintaxe e estruturas de sintaxe até o elemento de sintaxe sps_extension_flag, além dos elementos de sintaxe sps_video_parameter_set_id e sps_seq_parameter_set_id, podem ser herdados do VPS ativo. inherit_sps_params_from_vps_flag igual a 0 especifica que esses valores não são herdados do VPS ativo. Quando não presente, o valor de inherit_sps_params_from_vps_flag pode ser inferido como sendo igual a 0. Quando vps_num_rep_formats, vps_num_other_sps_params, vps_num_st_rps_candidates, ou vps_num_vui_params for igual a 0, o valor de inherit_sps_params_from_vps_flag pode ser igual a 0. Quando inherit_sps_params_from_vps_flag é igual a 1, o seguinte se aplica: [ENCERRAR EXEMPLO F]
[0231] [INICIAR EXEMPLO C] O valor de sps_max_sub_layers_minus1 para cada camada que se refere a SPS pode ser inferido como sendo igual a max_sub_layers_vps_minus1[layerIdx] onde layerIdx é igual ao valor para o qual layer_id_in_nuh[layerIdx] é igual a nuh_layer_id da camada.
[0232] Os valores de sps_max_dec_pic_buffering_minus1[i] para cada camada que se refere a SPS podem ser inferidos como sendo iguais a max_vps_dec_pic_buffering_minus1[lsIdx][i] para i na faixa de 0 a MaxSubLayers[IxIdx]-1, inclusive, onde lsIdx está na faixa de 0 a vps_num_layer_sets_minus1, inclusive, e denota o índice, dentro do conjunto de conjuntos de camadas de saída que é especificado pelo VPS, do conjunto de camada de saída para o qual a camada é a camada mais alta e a única camada de saída alvo.
[0233] Os valores de sps_max_num_reorder_pics[i], e sps_max_latency_increase_plus1[i] para cada camada que se refere a SPS podem ser inferidos como sendo iguais a max_vps_num_reorder_pics[layerIdx][i] e max_vps_latency_increase_plus1[layerIdx][i], onde layerIdx é igual ao valor para o qual layer_id_in_nuh[layerIdx] é igual a nuh_layer_id da camada, com i na faixa de 0 a sps_max_sub_layers_minus1, inclusive. O valor de sps_temporal_id_nesting_flag para cada camada que se refere a SPS pode ser inferido como sendo igual a vps_temporal_id_nesting_flag. [ENCERRAR EXEMPLO C]
[0234] Como pode ser observado a partir da discussão acima e da Tabela 9, alguns exemplos não sinalizam sps_max_sub_layers_minus1 e sps_temporal_id_nesting_flag quando nuh_layer_id_>0.
[0235] [INICIAR EXEMPLO F] Os valores de conformance_window_flag,conf_win_left_offset, conf_win_right_offset, conf_win_top_offset, conf_win_bottom_offset,log2_max_pic_order_cnt_lsb_minus4, log2_min_luma_conding_block_size_minus3, log2_diff_max_min_luma_coding_block_size, log2_min_transform_block_size_minus2, log2_diff_max_min_transform_block_size; max_transform_hierarchy_depth_inter, max_transform_hierarchy_depth_intra, scaling_list_enabled_flag, sps_scaling_list_data_present_flag, amp_enabled_flag, sample_adaptive_offset_enabled_flag, pcm_enabled_flag, pcm_sample_bit_depth_luma_minus1, pcm_sample_bit_depth_chroma_minus1, log2_min_pcm_luma_coding_block_size_minus3, log2_diff_max_min_pcm_luma_coding_block_size, pcm_loop_filter_disabled_flag, long_term_ref_pics_present_flag, num_long_term_ref_pics_sps, lt_ref_pic_poc_lsb_sps[i], used_by_curr_pic_lt_flag[i], sps_temporal_mvp_enabled_flag e strong_intra_smoothing_enabled_flag para cada camada que se refere a SPS são inferidos como sendo iguais a conformance_window_vps_flag, conf_win_vps_left_offset, conf_win_vps_right_offset, conf_win_vps_top_offset, conf_win_vps_bottom_offset, log2_vps_max_pic_order_cnt_lsb_minus4, log2_vps_min_luma_coding_block_size_minus3, log2_vps_diff_max_min_luma_coding_size_minus2, log2_vps_diff_max_min_transform_block_size, max_vps_transform_hierarchy_depth_inter, max_vps_transform_hierarchy_depth_intra, scaling_list_enabled_vps_flag, sps_scaling_list_data_present_vps_flag, amp_enabled_vps_flag, sample_adaptive_offset_enabled_vps_flag, pcm_enabled_vps_flag, pcm_vps_sample_bit_depth_luma_minus1, pcm_vps_sample_bit_depth_chroma_minus1, log2_vps_min_pcm_luma_coding_block_size_minus3, log2_vps_diff_max_min_pcm_luma_coding_block_size, pcm_vps_loop_filter_disabled_flag, long_term_ref_pics_present_vps_flag, num_long_term_ref_pics_vps, lt_ref_pic_poc_lsb_vps[i], used_by_curr_pic_lt_vps_flag[i], temporal_mvp_enabled_vps_flag, strong_intra_smoothing_enabled_vps_flag, respectivamente, da estrutura de sintaxe vps_other_sps_params_idx[layerIdx]- th other_sps_parameters() no VPS ativo, onde layerIdx é igual ao valor para o qual layer_id_in_nuh [layerIdx] é igual a nuh_layer_id da camada.
[0236] Quando sps_scaling_list_data_present_vps_flag é igual a 1, o valor da estrutura de sintaxe scaling_list_data() para cada camada que se refere ao SPS pode ser inferido como sendo igual à estrutura de sintaxe scaling_list_data() na estrutura de sintaxe vps_other_sps_params_idx[layerIdx]-th other_sps_parameters() no VPS ativo, onde layerIdx é igual ao valor para o qual layer_id_in_nuh[layerIdx] pode ser igual a nuh_layer_id da camada. [ENCERRAR EXEMPLO F];
[0237] [INICIAR EXEMPLO D] O valor da estrutura de sintaxe short_term_rps_candidates() para cada camada que se refere a SPS pode ser inferido como sendo igual à estrutura de sintaxe vps_st_rps_idx[layerIdx]-th short_term_rps_candidates() no VPS ativo, onde layerIdx é igual ao valor para o qual layer_id_in_nuh [layerIdx] é igual a nuh_layer_id e na camada.[ENCERRAR EXEMPLO D].
[0238] [INICIAR EXEMPLO E] Em alguns exemplos, o valor da estrutura de sintaxe vui_parameters()para cada camada que se refere a SPS pode ser inferido como sendo igual à estrutura de sintaxe vps_vui_params_idx[layerIdx]-th vui_parameters() no VPS ativo, onde layerIdx é igual ao valor para o qual layer_id_in_nuh [layerIdx] é igual a nuh_layer_id da camada. [ENCERRAR EXEMPLO E].
[0239] O parâmetro conf_win_left_offset, conf_win_right_offset, conf_win_top_offset, e conf_win_bottom_offset especifica as amostras das imagens na sequência de vídeo codificada (CVS) que são enviadas a partir do processo de decodificação, em termos de uma região retangular especificada nas coordenadas de imagem para envio. Quando [INICIAR EXEMPLO F] inherit_sps_params_from_vps_flag é igual a 0 e [ENCERRAR EXEMPLO F] conformance_window_flag é igual a 0, os valores de conf_win_left_offset, conf_win_right_offset, conf_win_top_offset, e conf_win_bottom_offset podem ser inferidos como sendo iguais a 0.
[0240] A janela de cropping em conformidade contém amostras de luminescência com coordenadas de imagem horizontal de SubWidthC * conf_win_left_offset para pic_width_in_luma_samples - (SubWidthC * conf_win_right_offset+1) e coordenadas de imagem vertical de SubHeightC * conf_win_top_offset para pic_height_in_luma_samples - (SubHeightC * conf_win_bottom_offset+1), inclusive.
[0241] O valor de SubWidthC* (conf_win_left_offset+conf_win_right_offset) pode ser inferior a pic_width_in_luma_samples, e o valor de SubHeightC* (conf_win_top_offset + conf_win_bottom_offset) pode ser inferior a pic_height_in_luma_samples.
[0242] Quando ChromaArrayType não é igual a 0, as amostras especificadas correspondentes dos dois conjuntos de crominância são as amostras possuindo as coordenadas de imagem (x/SubWidthC, y/SubHeightC), onde (x,y) são coordenadas de imagem das amostras de luminescência especificadas.
[0243] Nota 3 - Os parâmetros de desvio de janela de cropping em conformidade só são aplicados à saída. Todos os processos de decodificação internos são aplicados ao tamanho de imagem não cropped.
[0244] O parâmetro sps_sub_layer_ordering_info_present_flag igual a 1 [INICIAR EXEMPLO C], quando inherit_sps_params_from_vps_flag é igual a 0, [ENCERRAR EXEMPLO C] especifica que sps_max_dec_pic_buffering_minus1[i], sps_max_num_reorder_pics[i], e sps_max_latency_increase_plus1[i] estão presentes para as subcamadas sps_max_sub_layers_minus1 + 1. sps_sub_camada_ordering_info_present_flag igual a 0 [INICIAR EXEMPLO C], quando inherit_sps_params_from_vps_flag é igual a 0, [ENCERRAR EXEMPLO C] especifica que os valores sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1] , sps_max_num_reorder_pics[sps_max_sub_layers_minus1], e sps_max_latency_increase_plus1[sps_max_sub_layers_minus1] aplicam a todas as subcamadas.
[0245] O parâmetro sps_max_dec_pic_buffering_minus1[i] plus 1 especifica o tamanho máximo necessário para o armazenador de imagens decodificado para CVS em unidades de armazenadores de imagem quando HighestTid é igual a i. Em alguns exemplos, o valor de sps_max_dec_pic_buffering_minus1[i] pode estar na faixa de 0 a MaxDpbSize-1 (como especificado na subcláusula A.4), inclusive. Quando i é superior a 0, sps_max_dec_pic_buffering_minus1[i] pode ser superior a ou igual a sps_max_dec_pic_buffering_minus1[i-1]. O valor de sps_max_dec_pic_bufferng_minus1[i] pode ser inferior a ou igual a vps_max_dec_pic_buffering_minus1[i] para cada valor de i. Quando [INICIAR EXEMPLO C] inherit_sps_params_from_vps_flag for igual a 0 e [ENCERRAR EXEMPLO C] sps_max_dec_pic_buffering_minus1[i] não estiver presente para i na faixa de 0 para sps_max_sub_layers_minus1- 1, inclusive, devido a sps_sub_layer_ordering_info_present_flag ser igual a 0, pode ser inferido como sendo igual a sps_max_dec_pic_buffering_minus1[sps_max_sub_layers_minus1]
[0246] O parâmetro sps_max_num_reorder_pics[i] indica o número máximo permitido de imagens que podem preceder qualquer imagem no CVS na ordem de decodificação e segue essa imagem na ordem de saída quando HighestTid for igual a i. O valor de sps_max_num_reorder_pics[i] pode estar na faixa de 0 para sps_max_dc_pic_buffering_minus1[i], inclusive. Quando i for superior a 0, sps_max_num_reorder_pics[i] pode ser superior a ou igual a sps_max_num_reorder_pics[i-1]. O valor de sps_max_num_reorder_pics[i] pode ser inferior a ou igual a vps_max_num_reorder_pics[i] para cada valor de i. Quando [INICIAR EXEMPLO C] inherit_sps_params_from_vps_flag for igual a 0 e [ENCERRAR EXEMPLO C] sps_max_num_reorder_pics[i] não estiver presente para i na faixa de 0 a sps_max_sub_layers_minus1 -1, inclusive, devido a sps_sub_layer_ordering_info_present_flag ser igual a 0, pode ser inferido como sendo igual a sps_max_num_reorder_pics[sps_max_sub_layers_minus1).
[0247] O parâmetro sps_max_latency_increase_plus1[i] não igual a 0 é utilizado para computar o valor de SpsMaxLatencyPictures[i], que especifica o número máximo de imagens que podem preceder qualquer imagem no CVS na ordem de saída e segue essa imagem na ordem de decodificação quando HighestTid for igual a i.
[0248] Quando sps_max_latency_increase_plus1[i] não for igual a 0, o valor de SpsMaxLatencyPictures[i] é especificado como segue: SpsMaxLatencyPictures[i] = sps_max_num_reorder_pcs[i] + (79) sps_max_latency_increase_plus1[i]-1
[0249] Quando sps_max_latency_increase_plus1[i] for igual a 0, nenhum limite correspondente é expresso. Em alguns exemplos, o valor de sps_max_latency_increase_plus1[i] pode estar na faixa de 0 a 232-2, inclusive. Em alguns exemplos, quando vps_max_latency_increase_plus1[i] não for igual a 0, o valor de sps_max_latency_increase_plus[i] pode não ser igual a 0 e pode ser inferior a ou igual a vps_max_latency_increase_plus1[i] para cada valor de i. Quando [INICIAR EXEMPLO C] inherit_sps_params_from_vps_flag for igual a 0 e [ENCERRAR EXEMPLO C] sps_max_latency_increase_plus1[i] não estiver presente para i na faixa de 0 até sps_max_sub_layers_minus1 -1, inclusive, devido a sps_sub_layer_ordering_info_present_flag ser igual a 0, pode ser inferido como sendo igual a sps_max_latency_increase_plus1[sps_max_sub_layers_minus1].
[0250] O parâmetro sps_scaling_list_data_present_flag igual a 1 especifica que os dados de lista de escalonamento estão presentes em SPS [INICIAR EXEMPLO F] ou herdados a partir de VPS ativo [ENCERRAR EXEMPLO F]. Em alguns exemplos, sps_scaling_list_data_present_flag igual a 0 especifica que os dados de lista de escalonamento não estão presentes em SPS [INICIAR EXEMPLO F] e não herdados do VPS ativo [ENCERRAR EXEMPLO F]. Quando [INICIAR EXEMPLO F] inherit_sps_params_from_vps_flag for igual a 0 e sps_scaling_list_data_present_flag [ENCERRAR EXEMPLO F] não estiver presente, o valor de sps_scaling_list_data_present_flag pode ser inferido como sendo igual a 0. Quando scaling_list_enabled_flag for igual a 1 e sps_scaling_list_data_present_flag for igual a 0, os dados de lista de escalonamento padrão são utilizados para derivar o conjunto ScalingFactor como descrito na semântica de dados de lista de escalonamento especificada na subcláusula 7.4.5 do padrão HEVC.
[0251] O parâmetro pcm_loop_filter_disabled_flag especifica se o processo de filtro de circuito está desativado nas amostras reconstruídas em uma unidade de codificação com pcm_flag igual a 1 como segue: Se pcm_loop_filter_disabled_flag for igual a 1, os processos de filtro de desbloqueio e de filtro de desvio adaptativo de amostra nas amostras reconstruídas em uma unidade de codificação com pcm_flag igual a 1 são desativados. Do contrário (o valor de pcm_loop_filter_disabled_flag é igual a 0), os processos de filtro de desbloqueio e filtro de desvio adaptativo de amostra nas amostras reconstruídas em uma unidade de codificação com pcm_flag igual a 1 não são desativados.
[0252] Quando [INICIAR EXEMPLO F] inherit_sps_params_from_vps_flag for igual a 0 e [ENCERRAR EXEMPLO F] pcm_loop_filter_disabled_flag não estiver presente, pode ser inferido como sendo igual a 0.
[0253] [INICIAR EXEMPLO D]
[0254] [ENCERRAR EXEMPLO D]
[0255] O parâmetro lt_ref_pic_poc_lsb_sps[i] especifica o módulo de contagem de ordem de imagem MaxPicOrderCntLsb da imagem de referência de longo termo candidata i especificada [INICIAR EXEMPLO F] por [ENCERRAR EXEMPLO F] SPS. O número de bits utilizados para representar lt_ref_pic_poc_lsb_sps[i] é igual a log2_max_pic_order_cnt_lsb_minus4 + 4.
[0256] O parâmetro used_by_curr_pic_lt_sps_flag[i] igual a 0 especifica que a imagem de referência de longo termo candidata i especificada [INICIAR EXEMPLO F] por [ENCERRAR EXEMPLO F] SPS não é utilizada para referência por uma imagem que inclui em seu RPS de longo termo a imagem de referência de longo termo candidata i especificada [INICIAR EXEMPLO F] por [ENCERRAR EXEMPLO F] SPS.
[0257] [INICIAR EXEMPLO E]
[0258] [ENCERRAR EXEMPLO E]
[0259] A figura 4 é um fluxograma ilustrando um método ilustrativo para decodificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui. No exemplo ilustrado da figura 4, um decodificador de vídeo 30 pode receber um conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível (402). O conjunto codificado por não entropia das estruturas de sintaxe de perfil, tier e nível pode estar em uma posição dentro de uma extensão VPS antes dos elementos de sintaxe da extensão VPS que são codificados por entropia.
[0260] O decodificador de vídeo 30 pode fazer referência a uma dentre as estruturas de sintaxe de perfil, tier e nível para cada um dentre uma pluralidade de conjuntos de camada de saída (404) e decodificar os dados de vídeo de um dos conjuntos de camada de saída com base na informação a partir da estrutura de sintaxe de perfil, tier e nível referida para o conjunto de camada de saída (406). Por exemplo, o decodificador de vídeo 30 pode ignorar um conjunto de camada de saída se o perfil, tier ou nível da sequência de bits do conjunto de camada de saída indicar que uma capacidade maior do que a capacidade de decodificação do decodificador de vídeo 30, como indicado pelo perfil, tier e nível do decodificador, é necessária para decodificação da sequência de bits. Quando a capacidade de decodificação necessária, como indicado pelo perfil, tier e nível da sequência de bits do conjunto de camadas de saída, não for superior à capacidade de decodificação do decodificador de vídeo 30, o decodificador de vídeo 30 decodifica a sequência de bits do conjunto de camadas de saída utilizando os processos de decodificação necessários como indicado pelo perfil, tier e nível da sequência de bits.
[0261] Em alguns exemplos, o decodificador de vídeo 30 pode receber um SPS com um nuh_layer_id igual a 0, onde SPS inclui uma estrutura de sintaxe de perfil, tier e nível para uma camada de dados de vídeo.
[0262] Em alguns exemplos, o decodificador de vídeo 30 pode receber um indicador de camada de saída [i][j] que, quando igual a 1, especifica que uma camada j no conjunto de camadas é uma camada de saída alvo de um conjunto de camadas de saída i, e, quando igual a 0, especifica que a camada j no conjunto de camadas não é superior à camada de saída alvo do conjunto de camadas de saída i. Por exemplo, o codificador de vídeo 20 pode transmitir um indicador de camada de saída [i][j] que, quando igual a 1, especifica que uma camada j no conjunto de camadas é uma camada de saída alvo de um conjunto de camadas de saída i, e, quando igual a 0, especifica que a camada j no conjunto de camadas não é a camada de saída alvo do conjunto de camadas de saída i. O decodificador de vídeo 30 pode transmitir um indicador de camada de saída [i][j] que, quando igual a 1, especifica que uma camada j no conjunto de camadas é uma camada de saída alvo de um conjunto de camadas de saída i, e, quando igual a 0, especifica que a camada j no conjunto de camadas não é a camada de saída alvo do conjunto de camadas de saída i.
[0263] O decodificador de vídeo 30 também pode gerar o conjunto de camadas de saída com base no indicador de camadas de saída [i][j]. Por exemplo, o codificador de vídeo 20 também pode codificar o conjunto de camadas de saída com base no indicador de camada de saída [i][j].
[0264] A figura 5 é um fluxograma ilustrando um método ilustrativo para codificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui. No exemplo ilustrado na figura 5, o codificador de vídeo 20 pode gerar um conjunto de camadas de saída com base no indicador de camadas de saída [i][j]. Por exemplo, o codificador de vídeo 20 pode se referir a uma dentre as estruturas de sintaxe de perfil, tier e nível para cada um dentre uma pluralidade de conjuntos de camada de saída (502). O codificador de vídeo 20 também pode codificar o conjunto de camadas de saída com base no indicador de camada de saída [i][j] (504).
[0265] O codificador de vídeo 20 pode codificar um VPS com extensão VPS possuindo um conjunto codificado por não entropia das estruturas de sintaxe de perfil, tier e nível (506). Em alguns exemplos, o codificador por entropia 20 pode transmitir, armazenar, ou causar o armazenamento de VPS e extensão VPS possuindo um conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível. O conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível pode estar em uma posição dentro de uma extensão VPS antes dos elementos de sintaxe da extensão VPS que são codificados por entropia. Por exemplo, o codificador de vídeo 30 pode codificar dados de vídeo de acordo com um perfil, tier ou nível que é selecionado. O codificador de vídeo 20 também pode codificar a sintaxe de perfil, tier ou nível no VPS para uso pelo decodificador.
[0266] Em alguns exemplos, o codificador de vídeo 20 pode codificar um SPS com um nuh_layer_id igual a 0, onde SPS inclui uma estrutura de sintaxe de perfil, tier e nível para uma camada de dados de vídeo. Por exemplo, o codificador de vídeo 20 pode enviar um SPS com um nuh_layer_id igual a 0, onde SPS inclui uma estrutura de sintaxe de perfil, tier e nível para uma camada de dados de vídeo. Quando um SPS com nuh_layer_id igual a 0 é referido por uma camada com nuh_layer_id superior a 0, a estrutura de sintaxe profile_tier_level() no SPS não é aplicada para essa camada.
[0267] De acordo, como pode ser observado acima, cada camada precisa fazer referência a um SPS. Convencionalmente, quaisquer duas camadas que possuem valores diferentes de resoluções espaciais, profundidades de bit ou formatos de cor precisam fazer referência a dois SPSs diferentes visto que esses parâmetros de formato de representação são sinalizados no SPS. No entanto, quando esses parâmetros para todos os SPSs exceto os com nuh_layer_id igual a 0 são movidos para o VPS, e quando é especificado que os parâmetros de formato de representação em um SPS com nuh_layer_id igual a 0 que é referido por uma camada com nuh_layer_id superior a 0 são ignorados, é possível que as camadas com valores diferentes de resoluções espaciais, profundidades de bit, ou formatos de cor façam referência aos mesmos SPSs. Em outras palavras, de acordo com algumas modalidades dessa descrição, as camadas com valores diferentes de resoluções espaciais, profundidades de bit, ou formatos de cor podem compartilhar o mesmo SPS, desde que outros parâmetros SPS necessários para as camadas sejam iguais.
[0268] Em alguns exemplos, o codificador de vídeo 20 pode transmitir um indicador de camada de saída [i][j] que, quando igual a 1, especifica que uma camada j no conjunto de camadas é uma camada de saída alvo de um conjunto de camadas de saída i, e, quando igual a 0, especifica que a camada j no conjunto de camadas não é a camada de saída alvo do conjunto de camadas de saída i. Por exemplo, o codificador de vídeo 20 pode transmitir um indicador de camada de saída [i][j] que, quando igual a 1, especifica que uma camada j no conjunto de camadas é uma camada de saída alvo de um conjunto de camadas de saída i, e, quando igual a 0, especifica que a camada j no conjunto de camada não é a camada de saída alvo do conjunto de camadas de saída i.
[0269] A figura 6 é um fluxograma ilustrando um método ilustrativo para decodificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui. No exemplo ilustrado da figura 6, um decodificador de vídeo 30 pode receber uma informação de dependência de camada codificada por não entropia em uma posição dentro de uma extensão VPS antes dos elementos de sintaxe da extensão VPS que são codificadas por entropia (602).
[0270] O decodificador de vídeo 30 pode decodificar a informação de dependência de camada codificada por não entropia antes de um elemento de sintaxe codificado por entropia (604). Em um exemplo, o decodificador de vídeo 30 pode decodificar a informação de dependência de camada codificada por não entropia antes de qualquer elemento de sintaxe codificado por entropia.
[0271] O decodificador de vídeo 30 pode decodificar os dados de vídeo de uma ou mais camadas de dados de vídeo com base na informação de dependência de camada codificada por não entropia (606). A informação de dependência de camada pode indicar se uma das camadas é uma camada de referência direta para outras das camadas. Em alguns exemplos, quando a informação de dependência de camada indicar se uma das camadas é uma camada de referência direta para outra das camadas, a informação de dependência de camadas também pode indicar quais camadas são uma camada de referência direta para outra das camadas. Em outras palavras, a informação de dependência de camada pode indicar se uma das camadas é uma camada de referência direta para outra das camadas e identificar a camada que é uma camada de referência direta para outras camadas. Em alguns exemplos, a informação de dependência de camadas inclui um direct_dependency_flag[i][j] que, quando igual a 0, especifica que uma camada com índice j não é uma camada de referência direta para uma camada com índice i, e quando iguala 1, especifica que a camada com índice j pode ser uma camada de referência direta para a camada com índice i. Quando da decodificação de uma imagem, o decodificador de vídeo 30 pode derivar um conjunto de imagens de referência intercamada com base na informação de dependência de camada, entre outras informações, e pode derivar adicionalmente uma lista de imagens de referência com base no conjunto de imagens de referência intercamada, entre outras informações, e então pode decodificar a predição intercamada de utilização de imagem a partir de uma imagem em uma camada de referência direta.
[0272] A figura 7 é um fluxograma ilustrando um método ilustrativo para codificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui. O codificador de vídeo 20 pode codificar dados de vídeo de uma ou mais das camadas de dados de vídeo com base em uma informação de dependência de camada codificada por não entropia (702). O codificador de vídeo 20 pode codificar uma informação de dependência de camada codificada por não entropia em uma posição dentro de uma extensão do conjunto de parâmetros de vídeo (VPS) antes dos elementos de sintaxe da extensão VPS que são codificados por entropia (704). Por exemplo, o codificador de vídeo 20 pode codificar os dados de vídeo de uma ou mais das camadas de dados de vídeo com base na informação de dependência de camada codificada por não entropia. A informação de dependência de camada pode indicar se uma das camadas é uma camada de referência direta para outra das camadas. Em alguns exemplos, o codificador de vídeo 20 pode transmitir, armazenar ou causar o armazenamento de uma informação de dependência de camada codificada por não entropia em uma posição dentro de uma extensão de conjunto de parâmetros de vídeo (VPS) antes dos elementos de sintaxe da extensão VPS que são codificados por entropia.
[0273] Em alguns exemplos, a informação de dependência de camada inclui direct_dependency_flag[i][j] que, quando igual a 0, especifica que uma camada com índice j não é uma camada de referência direta para uma camada com índice i, e quando igual a 1, especifica que a camada com índice j pode ser uma camada de referência direta para a camada com índice i.
[0274] A figura 8 é um fluxograma ilustrando um método ilustrativo para decodificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui. No exemplo da figura 8, mais de um conjunto de camadas de saída pode ser sinalizado para um conjunto de camadas. De acordo, se mais de um conjunto de camadas de saída for sinalizado para um conjunto de camadas, um decodificador de vídeo 30, por exemplo, por meio de interface de entrada 28, pode receber um primeiro conjunto de camadas de saída para um conjunto de camadas (802). O decodificador de vídeo 30 também pode receber um segundo conjunto de camadas de saída para o conjunto de camadas (804). Adicionalmente, enquanto o exemplo da figura 8 ilustra dois conjuntos de camada de saída para um conjunto de camada, será compreendido que três, quatro ou mesmo mais conjuntos de camadas de saída podem ser sinalizados para um conjunto de camadas. O decodificador de vídeo 30 pode decodificar os dados de vídeo para pelo menos um dentre o primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída (806).
[0275] A figura 9 é um fluxograma ilustrando um método ilustrativo para codificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui. No exemplo da figura 9, mais de um conjunto de camadas de saída pode ser sinalizado para um conjunto de camadas. De acordo, o codificador de vídeo 20 pode codificar dados de vídeo para pelo menos um dentre um primeiro conjunto de camadas de saída e um segundo conjunto de camadas de saída (902). De acordo, a interface de saída 22 pode transmitir dados codificados a partir do codificador de vídeo 20. Os dados transmitidos podem incluir o primeiro conjunto de camada de saída para um conjunto de camadas (904) e o segundo conjunto de camadas de saída para o conjunto de camadas (906). Em alguns exemplos, a interface de saída 22 pode transmitir dados para a interface de entrada 28. Em outros exemplos, a interface de saída 22 pode transmitir os dados para o dispositivo de armazenamento 34 para armazenamento.
[0276] A figura 10 é um fluxograma ilustrando um método ilustrativo para decodificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui. O exemplo da figura 10 ilustra a sinalização do formato de representação no VPS, potencialmente de uma forma que seja acessível sem decodificação por entropia. Em outras palavras, um formato de representação no VPS não é codificado por entropia. Pode, por exemplo, ser codificado com comprimento fixo. De acordo, o decodificador de vídeo 30 pode receber um formato de representação codificado por não entropia dentro de um VPS, por exemplo, através da interface de entrada 28 (1002). O formato de representação pode incluir um ou mais dentre formato de crominância, planos de cores diferentes são separadamente codificados, largura de imagem, altura de imagem, profundidade de bit de luminescência, e profundidade de bit de crominância. O decodificador de vídeo 30 também pode decodificar dados de vídeo com base no formato de representação codificado por não entropia dentro de VPS (1004). Visto que o formato de representação está no VPS potencialmente em uma forma que seja acessível sem decodificação por entropia, os dispositivos que não realizam a codificação por entropia podem ter acesso ao formato de representação, por exemplo, em alguns casos Entidades de Rede Cientes de Mídia (MANEs) podem não ter um dispositivo de codificação por entropia. O decodificador de vídeo 30 pode decodificar o formato de representação no VPS, potencialmente sem decodificação por entropia de acordo com as técnicas dessa descrição, e cada camada pode ser associada com um formato de representação em particular.
[0277] A figura 11 é um fluxograma ilustrando um método ilustrativo para codificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui. O exemplo da figura 11 ilustra a sinalização do formato de representação no VPS, potencialmente de uma forma que seja acessível sem decodificação por entropia. Em outras palavras, um formato de representação no VPS não é codificado por entropia. Pode ser, por exemplo, codificado com comprimento fixo. De acordo, o codificador de vídeo 20 pode codificar os dados de vídeo com base no formato de representação codificado por não entropia dentro do VPS (1102). O formato de representação pode incluir um ou mais dentre formato de crominância, caso diferentes planos de cores sejam codificados separadamente, largura de imagem, altura de imagem, profundidade de bit de luminescência, e profundidade de bit de crominância. O codificador de vídeo 20 pode transmitir um formato de representação codificado por não entropia dentro de um VPS (1104). O codificador de vídeo 20 pode codificar o formato de representação n VPS, de uma forma que seja acessível sem decodificação por entropia de acordo com as técnicas dessa descrição, e cada camada pode ser associada com um formato de representação em particular.
[0278] A figura 12 é um fluxograma ilustrando um método ilustrativo para codificação de dados de vídeo de acordo com os sistemas e métodos descritos aqui. O exemplo da figura 12 ilustra a sinalização de uma informação de sinal visual, por exemplo, video_format, video_full_range_flag, colour_primaries, transfer_characteristics, matrix_coeffs, por camada no VPS. De acordo, o decodificador de vídeo 30 pode receber um VPS incluindo uma série de camadas, cada camada incluindo a informação de sinal visual (1002). O decodificador de vídeo 30 também pode decodificar os dados de vídeo com base na informação de sinal visual recebida sinalizada por camada no VPS.
[0279] A figura 13 é um fluxograma ilustrando um método ilustrativo para codificação de dados de vídeo de acordo com os sistema e métodos descritos aqui. O exemplo da figura 13 ilustra a sinalização da informação de sinal visual, por exemplo, video_format, video_full_range_flag, colour_primaries, transfer_characteristics, matrix_coeffs, por camada no VPS. De acordo, o codificador de vídeo 20 pode codificar os dados de vídeo com base na informação de sinal visual recebida sinalizada por camada no VPS (1302). O codificador de vídeo 20 pode transmitir o VPS incluindo uma série de camadas, cada camada incluindo informação de sinal visual para cada uma dentre uma série de camadas (1304).
[0280] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação das mesmas. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código, um meio legível por computador e executadas por uma unidade de processamento com base em hardware. O meio legível por computador pode incluir meio de armazenamento legível por computador, que corresponde a um meio tangível tal como o meio de armazenamento de dados, ou meio de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um local para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa forma, o meio legível por computador geralmente pode corresponder a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação tal como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que pode ser acessado por um ou mais computadores ou um ou mais processadores para recuperar as instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa descrição. Um produto de programa de computador pode incluir um meio legível por computador.
[0281] Por meio de exemplo, e não de limitação, tal meio de armazenamento legível por computador pode compreender, RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente chamada de meio legível por computador. Por exemplo, se instruções forem transmitidas a partir de um sítio da rede, servidor ou outra fonte remota utilizando um cabo coaxial, um cabo de fibra ótica, um par trançado, linha de assinante digital (DSL), ou tecnologias sem fio, tal como infravermelho, rádio, e micro-ondas, então o cabo coaxial, o cabo de fibra ótica, o par trançado, DSL ou tecnologias sem fio tal como infravermelho, rádio, e micro-ondas são incluídos na definição de meio. Deve-se compreender, no entanto, que meio de armazenamento legível por computador e meio de armazenamento de dados não incluem conexões, ondas portadoras, sinais, ou outra mídia transiente, mas, em vez disso, direcionado a meio de armazenamento tangível não transiente. Disquete e disco, como utilizados aqui, incluem disco compacto (CD), disco a laser, disco ótico, disco versátil digital (DVD), disquete e um disco Blu-ray, onde disquetes reproduzem normalmente os dados magneticamente, enquanto discos reproduzem dados oticamente com laser. Combinações do acima exposto também devem ser incluídas dentro do escopo de meio legível por computador.
[0282] Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASICs), conjuntos lógicos programáveis em campo (FPGAs), ou outros conjuntos de circuitos integrados e lógicos discretos equivalentes. De acordo, o termo "processador, como utilizado aqui pode fazer referência a qualquer uma dentre a estrutura acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui. Adicionalmente, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro de hardware dedicado e/ou módulos de software configurados para codificar e decodificar, ou incorporados em um codec combinado. Além disso, técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0283] As técnicas dessa descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de CIs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nessa descrição para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas descritas, mas não exigem necessariamente a realização por unidades de hardware diferentes. Em vez disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequado.
[0284] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das reivindicações a seguir.

Claims (12)

1. Método para decodificar dados de vídeo de múltiplas camadas, o método caracterizado por compreender: receber, a partir de uma sequência de bits de vídeo codificado, os dados de vídeo de múltiplas camadas compreendendo: um primeiro conjunto de camadas de saída (802) incluído em um conjunto de camadas dos dados de vídeo de múltiplas camadas, o primeiro conjunto de camadas de saída representando um subconjunto do conjunto de camadas de modo que o primeiro conjunto de camadas de saída é associado com uma primeira lista de camadas de saída alvo extraídas da sequência de bits de vídeo codificado; um segundo conjunto de camadas de saída (804) incluído no conjunto de camadas dos dados de vídeo de múltiplas camadas, o segundo conjunto de camadas de saída representando um subconjunto do conjunto de camadas de modo que o segundo conjunto de camadas de saída é associado com uma segunda lista de camadas de saída alvo extraídas da sequência de bits de vídeo codificado; um conjunto de parâmetros de sequência, SPS, para os dados de vídeo de múltiplas camadas, em que o SPS inclui resolução espacial, profundidade de bit e parâmetros de formato de cor para apenas uma camada de base dos dados de vídeo de múltiplas camadas; um conjunto de parâmetros de vídeo, VPS, para os dados de vídeo de múltiplas camadas, em que o VPS inclui resolução espacial, profundidade de bit e parâmetros de formato de cor para todas as camadas dos dados de vídeo de múltiplas camadas; uma primeira camada dos dados de vídeo de múltiplas camadas, a primeira camada sendo associada com o SPS e o VPS; e uma segunda camada dos dados de vídeo de múltiplas camadas, a segunda camada tendo um valor diferente de pelo menos um dentre uma resolução espacial, uma profundidade de bit, ou um formato de cor da primeira camada, e estando associado com o SPS e com o VPS; decodificar (806) dados de vídeo codificado para pelo menos um dentre o primeiro conjunto de camadas de saída ou o segundo conjunto de camadas de saída utilizando pelo menos a primeira lista de camadas de saída alvo ou a segunda lista de camadas de saída alvo, respectivamente; e decodificar dados de vídeo codificado para a primeira camada e a segunda camada utilizando informação incluída no mesmo SPS, e extraindo informação relacionada com resolução espacial, profundidade de bit, e formato de cor da respectiva camada do SPS, quando a respectiva camada é a camada de base, e não aplicando informação relacionada com resolução espacial, profundidade de bit, e formato de cor incluída no SPS, e extraindo informação relacionada com resolução espacial, profundidade de bit, e formato de cor da respectiva camada do VPS, quando a respectiva camada não é a camada de base.
2. Método, de acordo com a reivindicação 1, caracterizado pelo SPS incluir Informação de Utilização de Vídeo (VUI); e em que a informação de temporização não é contida no SPS que inclui VUI.
3. Método, de acordo com a reivindicação 1, caracterizado por uma camada no conjunto de camadas ser uma camada de saída alvo de um dentre o primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída, que é um conjunto de camadas de saída padrão e em que não existe qualquer sinalização explícita da camada de saída alvo para o conjunto de camadas de saída padrão.
4. Método, de acordo com a reivindicação 1, caracterizado por compreender adicionalmente: determinar, pelo decodificador de vídeo, que um elemento de sintaxe layer_id_included_flag[][] para os dados de vídeo utilizados para output_layer_set_idx[i] igual a 0 é para o conjunto de camadas 0; e alterar, pelo decodificador de vídeo, o output_layer_set_idx [i] para um elemento de sintaxe output_layer_set_idx_minus1[i] com base na determinação.
5. Método, de acordo com a reivindicação 1, caracterizado por compreender adicionalmente: receber, pelo decodificador de vídeo, a partir da sequência de bits de vídeo codificado, um conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível em uma extensão de conjunto de parâmetros de vídeo (VPS); referir a uma dentre as estruturas de sintaxe de perfil, tier e nível para cada uma dentre uma pluralidade de conjuntos de camadas de saída que incluem o primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída, onde a decodificação de dados de vídeo codificados para pelo menos um dentre um dentre o primeiro conjunto de camadas de saída ou o segundo conjunto de camadas de saída se baseia na informação de um ou mais dentre as estruturas de sintaxe de perfil, tier ou nível referidas para o respectivo conjunto de camadas de saída do primeiro conjunto de camadas de saída ou do segundo conjunto de camadas de saída.
6. Método para codificar dados de vídeo de múltiplas camadas em uma sequência de bits codificada, o método caracterizado por compreender: codificar, na sequência de bits codificada, dados de vídeo para pelo menos um dentre um primeiro conjunto de camadas de saída (902) e um segundo conjunto de camadas de saída (904), em que os dados de vídeo incluem pelo menos uma dentre uma primeira lista de camadas de saída alvo associada com o primeiro conjunto de camadas de saída ou uma segunda lista de camadas de saída alvo associada com o segundo conjunto de camadas de saída, respectivamente, ambos os primeiro conjunto de camadas de saída e segundo conjunto de camadas de saída sendo incluídos em um único conjunto de camadas dos dados de vídeo de múltiplas camadas; codificar, na sequência de bits codificada, dados de vídeo para uma primeira camada dos dados de vídeo de múltiplas camadas e uma segunda camada dos dados de vídeo de múltiplas camadas em um conjunto de parâmetro de sequência, SPS, associado com os dados de vídeo de múltiplas camadas, em que o SPS inclui a resolução espacial, profundidade de bit, e formato de cor apenas para uma camada de base dos dados de vídeo de múltiplas camadas; e codificar, na sequência de bit codificada, dados de vídeo para a primeira camada dos dados de vídeo de múltiplas camadas e a segunda camada dos dados de vídeo de múltiplas camadas em um conjunto de parâmetros de vídeo, VPS, associado com os dados de vídeo múltiplas camadas, pelos quais o VPS inclui a resolução espacial, profundidade de bit, e formato de cor de todas as camadas dos dados de vídeo de múltiplas camadas; codificar, na sequência de bits codificada: o primeiro conjunto de camadas de saída para o conjunto de camadas; o segundo conjunto de camadas de saída; o SPS associado com os dados de vídeo de múltiplas camadas; e uma primeira camada dos dados de vídeo de múltiplas camadas, a primeira camada sendo associada com o SPS; e uma segunda camada dos dados de vídeo de múltiplas camadas, a segunda camada tendo um valor diferente de pelo menos um dentre uma resolução espacial, uma profundidade de bit, ou um formato de cor da primeira camada, e sendo associado com o mesmo SPS que a primeira camada.
7. Método, de acordo com a reivindicação 6, caracterizado pelo SPS incluir Informação de Utilização de Vídeo (VUI); e em que a informação de temporização não é contida no SPS que inclui a VUI.
8. Método, de acordo com a reivindicação 6, caracterizado por uma camada no conjunto de camadas ser uma camada de saída alvo de um dentre o primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída, que é um conjunto de camadas de saída padrão e onde não existe qualquer sinalização explícita da camada de saída alvo para o conjunto de camadas de saída padrão.
9. Método, de acordo com a reivindicação 6, caracterizado por compreender adicionalmente: determinar, pelo codificador de vídeo, que um elemento de sintaxe layer_id_included_flag[][] para os dados de vídeo utilizados para output_layer_set_idx[i] igual a 0 é para o conjunto de camadas 0; e alterar, pelo codificador de vídeo, o output_layer_set_idx[i] para um elemento de sintaxe output_layer_set_idx_minus1[i] com base na determinação.
10. Método, de acordo com a reivindicação 6, caracterizado por compreender adicionalmente: codificar, pelo codificador de vídeo, na sequência de bits de vídeo codificado, um conjunto codificado por não entropia de estruturas de sintaxe de perfil, tier e nível em uma extensão de conjunto de parâmetros de vídeo (VPS); e referir a uma dentre as estruturas de sintaxe de perfil, tier e nível para cada um dentre uma pluralidade de conjuntos de camada de saída que incluem o primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída, em que a codificação dos dados de vídeo para pelo menos um dentre o primeiro conjunto de camadas de saída ou o segundo conjunto de camadas de saída compreende codificar, pelo codificador de vídeo, os dados de vídeo para o pelo menos um dentre o primeiro conjunto de camadas de saída ou o segundo conjunto de camadas de saída com base na informação de uma ou mais dentre as estruturas de sintaxe de perfil, tier ou nível referidas para o respectivo conjunto de camadas de saída do primeiro conjunto de camadas de saída ou do segundo conjunto de camadas de saída.
11. Aparelho para decodificar dados de vídeo, caracterizado por compreender: meios para receber, a partir de um sequência de bits de vídeo codificada, dados de vídeo de múltiplas camadas compreendendo: um primeiro conjunto de camadas de saída incluído em um conjunto de camadas dos dados de vídeo de múltiplas camadas, o primeiro conjunto de camadas de saída representando um subconjunto do conjunto de camadas de modo que o primeiro conjunto de camadas de saída é associado com uma primeira lista de camadas de saída alvo extraída a partir da sequência de bits de vídeo codificado; um segundo conjunto de camadas de saída incluído no conjunto de camadas dos dados de vídeo de múltiplas camadas, o segundo conjunto de camadas de saída representando um subconjunto do conjunto de camadas de modo que o segundo conjunto de camadas de saída é associado com uma segunda lista de camadas de saída alvo extraída a partir da sequência de bits de vídeo codificado; um conjunto de parâmetros de sequência, SPS, para os dados de vídeo de múltiplas camadas, em que o SPS inclui resolução espacial, profundidade de bit e parâmetros de formato de cor para apenas uma camada de base dos dados de vídeo de múltiplas camadas; um conjunto de parâmetros de vídeo, VPS, para os dados de vídeo de múltiplas camadas, em que o VPS inclui resolução espacial, profundidade de bit e parâmetros de formato de cor para todas as camadas dos dados de vídeo de múltiplas camadas, uma primeira camada dos dados de vídeo de múltiplas camadas, a primeira camada sendo associada com o SPS e com o VPS; e uma segunda camada dos dados de vídeo de múltiplas camadas, a segunda camada tendo um valor diferente de pelo menos um dentre uma resolução espacial, uma profundidade de bit, ou um formato de cor da primeira camada, e sendo associada com o SPS e o VPS; meios para decodificar dados de vídeo codificados para pelo menos um dentre o primeiro conjunto de camadas de saída e o segundo conjunto de camadas de saída utilizando pelo menos a primeira lista de camadas de saída alvo ou a segunda lista camadas de saída alvo, respectivamente; e meios para decodificar dados de vídeo codificados para a primeira camada e a segunda camada utilizando informação incluída no mesmo SPS, e extraindo informação relacionada com resolução espacial, profundidade de bit e formato de cor da respectiva camada do SPS, quando a respectiva camada é a camada de base, e não aplicando informação relacionada com resolução espacial, profundidade de bit, e formato de cor incluída no SPS, e extraindo informação relacionada com a resolução espacial, profundidade de bit e formato de cor da respectiva camada a partir do VPS, quando a respectiva camada não é a camada de base.
12. Memória legível por computador caracterizada pelo fato de que possui instruções nela armazenadas que, quando executadas, fazem com que um computador realize o método conforme definido em qualquer uma das reivindicações 1 a 10.
BR112015025643-0A 2013-04-08 2014-04-08 Codificação de dados de vídeo para um conjunto de camada de saída BR112015025643B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361809858P 2013-04-08 2013-04-08
US61/809,858 2013-04-08
US14/247,110 US9473771B2 (en) 2013-04-08 2014-04-07 Coding video data for an output layer set
US14/247,110 2014-04-07
PCT/US2014/033367 WO2014168965A1 (en) 2013-04-08 2014-04-08 Coding video data for an output layer set

Publications (2)

Publication Number Publication Date
BR112015025643A2 BR112015025643A2 (pt) 2017-07-18
BR112015025643B1 true BR112015025643B1 (pt) 2023-07-25

Family

ID=

Similar Documents

Publication Publication Date Title
KR102220258B1 (ko) 비디오 코딩 확장들을 위한 파라미터 세트 설계들
JP6585096B2 (ja) マルチレイヤビデオコーディング
BR112017020102B1 (pt) Processo de amostragem descendente para modo de previsão de modelo linear
BR112016029751B1 (pt) Método e dispositivo para codificar um fluxo de bits de acordo com hevc escalonável, uma extensão 3d de hevc ou uma extensão de múltiplas vistas de hevc, e método e dispositivo para decodificar dados de vídeo de acordo com hevc escalonável, uma extensão 3d de hevc ou uma extensão de múltiplas vistas de hevc
BR112016022079B1 (pt) 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
BR112017017307B1 (pt) Método de processamento de dados de vídeo de múltiplas camadas, dispositivo de vídeo para processamento de dados de vídeo de múltiplas camadas e memória legível por computador
BR112016008224B1 (pt) Escalabilidade de gama de cores com base em tabela de pesquisa tridimensional em codificação de vídeo de múltiplas camadas
BR112016007916B1 (pt) Sinalização para armazenamento temporário de figuração subdecodificada (sub-dpb) com base em operações de dpb em codificação de vídeo
BR112016014132B1 (pt) Sinalização de informações de divisão para tabela de consulta 3d para escalabilidade de gama de cores em codificação de vídeo de multicamadas
JP6701100B2 (ja) マルチレイヤビデオコーデック内の回復点seiメッセージ
BR112016008240B1 (pt) Sistemas e métodos para definir separadamente dependências para previsão de camada intermediária com base em subcamada
BR112015025643B1 (pt) Codificação de dados de vídeo para um conjunto de camada de saída
BR112016029790B1 (pt) Método para decodificar dados de vídeo, aparelho e memória legível por computador
BR112016030194B1 (pt) Codificação de vídeo de multi-camada
BR112016021476B1 (pt) Método e dispositivo para codificar dados de vídeo e memória legível por computador
BR112016024129B1 (pt) Sinalização de camadas de referência para predição de cor 3d para escalabilidade de gama de cores
BR112016014129B1 (pt) Sinalização de informações de divisão para tabela de consulta 3d para escalabilidade de gama de cores em codificação de vídeo de multicamadas
BR112015021727B1 (pt) Processamento paralelo para codificação de vídeo