BR112015008574B1 - Métodos para decodificar e codificar dados de vídeo, dispositivos para decodificar e codificar dados de vídeo, e, memória legível por computador - Google Patents

Métodos para decodificar e codificar dados de vídeo, dispositivos para decodificar e codificar dados de vídeo, e, memória legível por computador Download PDF

Info

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

Links

Images

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)

Abstract

CAMADAS-ALVO DE SAÍDA EM CODIFICAÇÃO DE VÍDEO. Em um exemplo, um dispositivo inclui um codificador de vídeo configurado para codificar um fluxo de bits multi-camada que compreende uma pluralidade de camadas de dados de vídeo, onde a pluralidade de camadas de dados de vídeo é associada a uma pluralidade de conjuntos de camadas, e onde cada conjunto de camadas contém uma ou mais camadas de dados de vídeo da pluralidade de camadas, e para codificar um ou mais elementos de sintaxe do fluxo de bits que indicam um ou mais pontos operacionais de saída, onde cada ponto de operação de saída é associado a um conjunto de camadas da pluralidade de conjuntos de camadas e a uma ou mais camadas-alvo de saída da pluralidade de camadas.

Description

[0001] Este pedido reivindica o benefício do pedido de patente provisório norte-americano N°. 61/720 364, depositado a 30 de outubro de 2012 cujo conteúdo inteiro é por este incorporado à guisa de referência.
Campo Técnico
[0002] Esta revelação refere-se à codificação vídeo.
Antecedentes
[0003] Capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, que incluem televisões digitais, sistema de broadcast direto digitais, sistemas de broadcast sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou de mesa, computadores tablet, leitoras de e-books, câmeras digitais, dispositivos de gravação digitais, tocadores de meios digitais, dispositivos para jogos de vídeo, consoles para jogos de vídeo, telefones celulares ou de radio-satélite, os chamados “telefones inteligentes”, dispositivos para teleconferência de vídeo, dispositivos de fluxo contínuo de vídeo e semelhantes. Os dispositivos de vídeo digital implementam técnicas de codificação de vídeo tais como as descritas nos padrões definidos pelo MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 Parte 10, Codificação Avançada de Vídeo (AVC), o padrão de Codificação de Vídeo de Alta Eficácia (HEVC) atualmente em desenvolvimento, e extensões de tais padrões, tais como Codificação Escalonável de Vídeo (SVC) e Codificação de Vídeo de Várias Vistas (MVC). A versão 6 do Rascunho Operacional (WD) da HEVC, Bross et alii, “rascunho de especificação de texto de codificação vídeo de Alta Eficácia 6”, Equipe Colaborativa Conjunta em Codificação de Vídeo (JCT-VC) do ITU-T SG16 WP3 e ISO I-IEC JTC1/SC29/WG11, 8° Encontro: San José, CA, EUA, 1-10 de fevereiro de 2012, está disponível de http://phenix.it- sudparis.eu/jct/doc end user/current/document.php?id=5096. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de maneira mais eficaz pela implementação de tais técnicas de codificação vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover a redundância inerente a sequências de vídeo. Para codificação de vídeo baseada em blocos, uma fatia de vídeo (uma imagem de vídeo ou uma parte de uma imagens de vídeo, por exemplo) pode ser particionada em blocos de vídeo que podem ser também 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 intra-codificada (I) de uma imagem são codificados utilizando-se predição espacial com referência a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia inter-codificada (P ou B) de uma imagem podem utilizar predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e as imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que indica um bloco de amostras de referência que forma o bloco preditivo e os dados residuais que indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intra-codificado é codificado de acordo com um modo de intra-codificação e os dados residuais. Para compactação adicional, os dados residuais podem ser transformados do domínio de pixel em um domínio de transformada, do que resultam coeficientes de transformada residuais, que podem ser então quantificados. Os coeficientes de transformada quantificados inicialmente dispostos em um arranjo bidimensional, podem ser varridos de modo a se produzir um vetor unidimensional de coeficientes de transformada, e a codificação por entropia pode ser aplicada de modo a se obter uma compactação ainda maior.
Sumário
[0006] As técnicas desta revelação incluem determinar uma ou mais camadas-alvo de saída na codificação vídeo de várias vistas e/ou na codificação escalonável de vídeo. Por exemplo, um ponto operacional, conforme definido na especificação base HEVC. atual (WD6, conforme observado acima), pode incluir várias camadas de dados de vídeo, de modo que um ponto operacional se refere a um conjunto de camadas que tem uma ou mais camadas de um fluxo de bits de dados de vídeo. Em algumas ocorrências, apenas um subconjunto de tais camadas pode ser decodificado para saída, como, por exemplo, para exibição. De acordo com aspectos desta revelação, pode ser definido um ponto de operação de saída que identifica especificamente as camadas-alvo de dados de vídeo para saída.
[0007] Em um exemplo, um método para decodificar dados de vídeo inclui obter, de um fluxo de bits multi-camada, uma pluralidade de camadas de dados de vídeo que inclui uma pluralidade de conjuntos de camadas, onde cada conjunto de camadas contém uma ou mais camadas de dados de vídeo da pluralidade de camadas, e determinar, com base em um ou mais elementos de sintaxe do fluxo de bits, um ou mais pontos operacionais de saída, onde cada ponto de operação de saída é associado a um conjunto de camadas da série de conjunto de camadas e a uma ou mais camadas-alvo de saída da pluralidade de camadas.
[0008] Em outro exemplo, um método para codificar dados de vídeo inclui codificar uma pluralidade de camadas de dados de vídeo que inclui uma série de conjunto de camadas, onde cada conjunto de camadas contém uma ou mais camadas de dados de vídeo da pluralidade de camadas, e codificar um ou mais elementos de sintaxe que indicam um ou mais pontos operacionais de saída, onde cada ponto de operação de saída é associado a um conjunto de camadas da série de conjunto de camadas e a uma ou mais camadas-alvo da pluralidade de camadas.
[0009] Em outro exemplo, um aparelho inclui um ou mais processadores configurados para codificar um fluxo de bits multi-camada que compreende uma pluralidade de camadas de dados de vídeo onde a pluralidade de camadas de dados de vídeo é associada a uma série de conjunto de camadas, e onde cada conjunto de camadas contém uma ou mais camadas de dados de vídeo da pluralidade de camadas, e para codificar um ou mais elementos de sintaxe do fluxo de bits que indicam um ou mais pontos operacionais de saída, onde cada ponto de operação de saída é associado a um conjunto de camadas da série de conjunto de camadas e a uma ou mais camadas-alvo de saída da pluralidade de camadas.
[0010] Em outro exemplo, um dispositivo para codificar dados de vídeo inclui um mecanismo para codificar um fluxo de bits multi-camada que compreende uma pluralidade de camadas de dados de vídeo, onde a pluralidade de camadas de dados de vídeo é associada a uma série de conjunto de camadas, e onde cada conjunto de camadas contém uma ou mais camadas de dados de vídeo da pluralidade de camadas, e um mecanismo para codificar um ou mais elementos de sintaxe do fluxo de bits que indicam um ou mais pontos operacionais de saída, onde cada ponto de operação de saída é associado a um conjunto de camadas da série de conjunto de camadas e a uma ou mais camadas-alvo de saída da pluralidade de camadas.
[0011] Em outro exemplo, um meio de armazenamento legível por computador não transitório tem armazenadas nele instruções que, quando executadas, fazem com que o processador de um dispositivo para codificar dados de vídeo codifique um fluxo de bits multi-camada que compreende uma pluralidade de camadas de dados de vídeo, onde a pluralidade de camadas de dados de vídeo é associada a uma série de conjunto de camadas, e onde cada conjunto de camadas contém uma ou mais camadas de dados de vídeo da pluralidade de camadas, e codifique um ou mais elementos de sintaxe do fluxo de bits que indicam um ou mais pontos de operação de saída em que cada ponto de operação de saída é associado a um conjunto de camadas da série de conjunto de camadas e a uma ou mais camadas-alvo de saída da pluralidade de camadas.
[0012] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição que se segue. Outros recursos, objetos e vantagens serão evidentes a partir da descrição e dos desenhos e a partir das reivindicações.
Descrição Resumida Dos Desenhos
[0013] A Figura 1 é um diagrama de blocos que mostra um sistema de codificação e decodificação de vídeo exemplar que pode utilizar técnicas para determinar uma ou mais camadas-alvo de saída, de acordo com aspectos desta revelação.
[0014] A Figura 2 é um diagrama de blocos que mostra um exemplo de codificador de vídeo que pode implementar técnicas para determinar uma ou mais camadas- alvo de saída, de acordo com aspectos desta revelação.
[0015] A Figura 3 é um diagrama de blocos que mostra um exemplo de decodificador de vídeo 30 que pode implementar técnicas para determinar uma ou mais camadas- alvo de saída, de acordo com aspectos desta revelação.
[0016] A Figura 4 é um diagrama conceptual que mostra um padrão de predição MVC exemplar.
[0017] A Figura 5 é um diagrama conceptual que mostra uma sequência de codificação escalonável de vídeo exemplar.
[0018] A Figura 6 é um fluxograma que mostra um processo exemplar para codificar um ponto de operação de saída, de acordo com aspectos desta revelação.
[0019] A Figura 7 é um fluxograma que mostra um processo exemplar para decodificar um ponto de operação de saída, de acordo com aspectos desta revelação.
Descrição Detalhada
[0020] As técnicas desta revelação incluem determinar uma ou mais camadas-alvo de saída na codificação vídeo de várias vistas e/ou na codificação escalonável de vídeo. Atualmente, o Grupo de Especialistas em Imagens em Movimento (MPEG) está desenvolvendo um padrão de vídeo tridimensional (3DV) baseado no padrão de codificação vídeo de alta eficácia (HEVC) vindouro. Parte dos esforços de padronização inclui também a padronização de um codec de vídeo de várias vistas de um codec escalonável de vídeo com base na HEVC baseada na HEVC. Por exemplo, o esforço de padronização inclui o desenvolvimento de uma extensão de várias vistas da HEVC, referida como MV-HEVC, e outro é o codec 3DV baseado na HEVC aperfeiçoado em profundidade, referido como 3D-HEVC. Com relação à codificação escalonável de vídeo, a capacidade de escalonamento de vistas e/ou a capacidade de escalonamento espacial podem contribuir também para serviços de vídeo tridimensionais, uma vez que tais capacidades de escalonamento proporcionam extensões retro-compatíveis para mais vistas e/ou o aperfeiçoamento da resolução de vistas de uma maneira que permite a decodificação por dispositivos legados.
[0021] Para dados de vídeo tridimensionais em geral, cada vista corresponde a uma perspectiva ou ângulo diferente, à qual os dados de vídeo correspondente de uma cena comum foram captados. As vistas codificadas podem ser utilizadas na exibição tridimensional (3D) de dados de vídeo. Por exemplo, duas vistas (vistas de olho esquerdo e direito de um observador humano, por exemplo) podem ser exibidas simultaneamente ou quase simultaneamente utilizando-se polarizações de luz diferentes, e o observador pode usar óculos polarizados, passivos, de modo que cada um dos olhos do observador receber uma vista respectiva. Alternativamente, o observador pode utilizar óculos ativos que obturam cada olho de maneira independente, e uma exibição pode alternar-se rapidamente entre imagens de cada olho em sincronização com os óculos.
[0022] Com a codificação de várias vistas, tal como a Codificação de Vídeo de Várias Vistas (MVC) apresentada no Anexo H do padrão ITU-T H.264 (alternativamente referido como padrão de Codificação Avançada de Vídeo (AVC) MPEG-4 Parte 10), uma imagem específica de uma vista específica é referida como componente de vista. Ou seja, um componente de vista de uma vista corresponde a uma ocorrência temporal específica de vista. O vídeo de várias vistas pode conter uma quantidade relativamente grande de dependências estatísticas intervista, uma vez que todas as Câmeras utilizadas para captar os dados de várias vistas captam a mesma cena de pontos de vista diferentes. Tais dependências podem ser exploradas para predição temporal ou inter-vista combinadas, onde as imagens são não só preditas a partir de imagens temporalmente vizinhas, mas também a partir de imagens correspondentes de outras vistas. Ou seja, a predição inter-vista pode ser executada entre imagens na mesma unidade de acesso (isto é, dentro da mesma ocorrência de tempo).
[0023] Conforme observado acima, a codificação escalonável de vídeo pode ser também utilizada para codificar várias vistas de modo a se obter capacidade de escalonamento de vistas e/ou capacidade de escalonamento espacial. Por exemplo, a Codificação Escalonável de Vídeo (SVC) é descrita no Anexo G do padrão H.264/AVC e pode ser utilizada para codificar várias camadas de dados de vídeo. Em algumas ocorrências, cada camada corresponder a uma vista específica.
[0024] Conforme aqui descrita, uma “camada de vídeo” pode refere-se geralmente a uma sequência de imagens que têm pelo menos uma característica comum, tal como vista, taxa de quadros, resolução ou semelhante. Por exemplo, uma camada presente invenção dados de vídeo associados a uma vista específica de dados de vídeo de várias vistas. Como outro exemplo, uma camada pode incluir dados de vídeo associados a uma camada específica de dados de vídeo escalonáveis. Assim, esta revelação pode referir- se de maneira intercambiável a uma camada e a uma vista de dados de vídeo.
[0025] Seja como for, um codificador de vídeo (tal como um codificador de vídeo ou decodificador de vídeo, conforme descrito mais detalhadamente em seguida) pode utilizar um ou mais conjuntos de parâmetros para descrever ou determinar diversas características de dados de vídeo codificados. Com conjuntos de parâmetros, as informações que se alteram de maneira não frequente não precisam ser repetidas para cada imagem o sequência de imagens, aumentando assim a eficácia de codificação. Em algumas ocorrências, conjuntos de parâmetros podem formar uma parte de um fluxo de bits de vídeo. Em outras ocorrências, conjuntos de parâmetros podem ser recebidos por um decodificador de vídeo de outras maneiras (como, por exemplo, transmissão fora da banda, codificação rígida ou semelhante). Uma sequência de vídeo codificada, juntamente com seus conjuntos de parâmetros conexos, pode representar uma parte decodificável de maneira independente de um fluxo de bits de vídeo.
[0026] A HEVC herda o conceito de conjunto de parâmetros do H.264 AVC, mas inclui várias modificações e acréscimos. Em geral, um conjunto de parâmetros de sequência (SPS) contém informações que se aplicam a todas as fatias de uma sequência de vídeo codificada. A HEVC de uma sequência de vídeo codificada contém todas as imagens entre uma primeira imagem de renovação de decodificação instantânea (IDR) (incluída na sequência) e a imagem IDR seguinte (não incluída na sequência) ou o fim do fluxo de bits (se a primeira imagem IDR for a última no fluxo de bits). Um conjunto de parâmetros de imagem (PPS) contém informações que podem alterar-se de imagem para imagem.
[0027] A HEVC inclui também uma estrutura de conjunto de presente revelação de vídeo (VPS). Em geral, uma VPS descreve as características totais de uma sequência de vídeo codificada, inclusive as dependências entre sub- camadas temporais. Uma VPS pode permitir a capacidade de extensão compatível do padrão HEVC em uma camada de sistemas. Por exemplo, uma VPS pode fornecer informações adicionais sobre uma estrutura de fluxo de bits escalonável ou de várias vistas que podem ser relevantes para um decodificador capaz de decodificar tais camadas, mas que permite que um decodificador legado decodifique uma camada base e ignore tais camadas.
[0028] Quando várias camadas de dados de vídeo são incluídas em um fluxo de bits, um ponto operacional pode ser utilizado para efetuar parse ou extrair determinadas camadas do fluxo de bits. Por exemplo, o fluxo de bits multi-camada pode incluir uma série de pontos operacionais para facilitar a decodificação e exibição de um sub-conjunto de dados decodificados recebidos. Conforme aqui descrito, um “ponto operacional” pode referir-se geralmente a um conjunto de camada, que pode incluir uma ou mais camadas de dados de vídeo. Conforme observado acima, uma camada pode referir-se geralmente a uma sequência de imagens que têm pelo menos uma característica comum, tal como vista, taxa de quadros, resolução ou semelhante (como, por exemplo, uma vista de dados de vídeo, uma camada de dados de vídeo escalonável e semelhante). Assim, um ponto operacional pode referir-se a um conjunto de camadas que tem uma ou mais vistas de dados de vídeo, uma ou mais camadas de dados de vídeo ou semelhante. Por conseguinte, um “ponto operacional” e um “conjunto de camadas” podem ser utilizados aqui de maneira intercambiável.
[0029] A utilização de pontos operacionais diferentes pode permitir que diversos dispositivos de cliente efetuem adaptação. Ou seja, dispositivos de clientes com capacidades de renderização e decodificação diferentes podem extrair vistas diferentes para exibir dados de vídeo bidimensionais ou tridimensionais. Os dispositivos de cliente podem também negociar com um dispositivo servidor a recuperação de dados de taxa de bits variáveis para adaptar a meios de transportação de diversas capacidade de largura de banda.
[0030] Por conseguinte, cada ponto operacional pode representar uma combinação diferente de vistas de dados de vídeo de várias vistas e/ou uma combinação diferente de camadas de dados de vídeo escalonáveis codificados a taxas de quadros e resoluções espaciais variáveis, como, por exemplo, conjuntos de camadas diferentes. Em outras palavras um ponto operacional pode referir-se à codificação de dados de vídeo de várias vistas em três dimensões, que incluem a dimensão de vista (que reflete o número de vistas), a dimensão temporal (que reflete a taxa de quadros) e a dimensão espacial (que reflete a resolução espacial). Em algumas ocorrências, mais de um ponto operacional pode ser associado ao mesmo subconjunto de fluxo de bits. Ou seja, mais de um conjunto de camadas pode ser associado ao mesmo fluxo de bits, de modo que um fluxo de bits inclui um ou mais conjuntos de camadas.
[0031] Um codificador de vídeo pode definir vários conjuntos de camadas para diversas combinações de vistas/camadas base e vistas/camadas de aperfeiçoamento. Um conjunto de camadas específico pode inclui várias camadas de dados de vídeo, inclusive uma ou mais camadas-alvo de saída para exibição. Por exemplo, uma vista de saída alvo pode incluir uma vista de dados de vídeo de várias vistas que se destina a ser transmitida, como, por exemplo, que pode ser vista quando exibida. Da mesma maneira, uma camada-alvo de saída pode incluir uma camada de dados de vídeo escalonáveis que se destina a ser transmitida. Conforme aqui descrito, vista de saída alvo e camada-alvo de saída podem ser utilizadas de maneira intercambiável.
[0032] Com relação à MVC, por exemplo, os pontos operacionais podem ser sinalizados em um SPC. Vistas de saída alvo de dados MVC podem ser sinalizadas juntamente com o nível temporal mais elevado-alvo dos dados MVC. Com relação à SVC, uma camada-alvo de saída pode ser automaticamente selecionada de acordo com a camada mais elevada de um ponto operacional, como, por exemplo, com o dependency_id e quality_id mais elevados. Com relação à HEVC, um ponto operacional pode especificar um sub-fluxo de bits que pode ser extraído com base no nível temporal mais elevado do sub-fluxo de bits. A HEVC pode utilizar também uma lista de valores de nu_reserved_zero_6bits, que podem ser renomeados para layer_ids.
[0033] Quando se adapta a HEVC para utilização com várias camadas de dados de vídeo, tal como para uma extensão de codificação de várias vistas da HEVC (MV-HEVC), os pontos operacionais podem ser sinalizados unicamente em um VPS. Por exemplo, as vistas que estão presentes no fluxo de bits ( a ser decodificado) podem ser sinalizadas em um VPS para cada ponto operacional. Com relação à padronização de uma extensão escalonável da HEVC (HSVC ou alternativamente, SHVC), antecipa-se que a camada com o layer_id mais elevado será a camada-alvo de saída para um por outro lado específico.
[0034] A abordagem atual aos pontos operacionais na HEVC que inclui a utilização da estrutura de VPS pode ter desvantagens quando se codifica com várias camadas. Por exemplo, os pontos operacionais definidos na HEVC podem ser suficientes para fins de extração de fluxo de bits, mas o VPS não especifica vistas/camadas-alvo de saída dos pontos operacionais. Ou seja, o VPS não identifica as camadas específicas de dados de vídeo que se destinam à exibição.
[0035] Sem conhecimento de quais camadas-alvo de saída, as imagens decodificadas de determinadas camadas que não são utilizadas para saída podem ser mantidas em um buffer de imagens decodificadas (DPB) por mais tempo que o necessário, aumentando-se assim os requisitos de armazenamento para sequências de várias vistas. Além disto, quando várias vistas são incluídas em um fluxo de bits, o provedor de conteúdos pode querer controlar ou sub-fluxo de bits que são decodificados e apresentados como saída para um monitor par controle da experiência de visualização. Por exemplo, o provedor de conteúdos pode não querer permitir que o usuário veja imagens a partir um determinado sub- fluxo de bits ou combinação de sub-fluxos de bits. Tal controle pode não estar disponível com o esquema de VPS atual da HEVC.
[0036] As técnicas desta revelação incluem determinar, a partir de uma pluralidade de camadas de dados de vídeo que incluem vários conjuntos de camadas (cada um deles contendo uma ou mais camadas de dados de vídeo), um ou mais pontos de operação de saída associados a um conjunto de camadas do vários conjuntos de camadas e uma ou mais camadas-alvo de saída. Por exemplo, as técnicas desta revelação incluem determinar um ponto operacional que identifica uma ou mais vistas de saída alvo para dados de vídeo de várias vistas e/ou e camadas-alvo de saída para dados de vídeo escalonáveis.
[0037] As técnicas desta revelação incluem também sinalizar, por um codificador de vídeo, um ou mais elementos de sintaxe que indicam o ponto de operação de saída e/ou camadas-alvo de saída, e efetuar parse por um decodificador de vídeo a partir de um fluxo de bits codificado, em um ou mais elementos de sintaxe que indicam o ponto de operação de saída e/ou camadas-alvo de saída. O fornecimento e a utilização de uma indicação de um ponto de operação de saída com camada(s) de saída alvo pode aumentar a eficácia com relação aos gerenciamentos do armazenador de imagens decodificadas e pode aumentar a flexibilidade com relação a indicação de vistas e/ou camadas específicas a serem transmitidas (exibidas, por exemplo).
[0038]De acordo com aspectos desta revelação, um ponto operacional conforme definido na especificação base HEVC atual (WD6, conforme observado acima, por exemplo) pode corresponder a um ou mais pontos operacionais de saída, com cada ponto de operação de saída tendo uma vista ou vistas e/ou umas uma ou mais camadas-alvo de saída diferentes. Em algumas ocorrências, por exemplo, um codificador de vídeo (tal como um codificador de vídeo ou decodificador de vídeo) pode utilizar várias camadas de dados de vídeo de um conjunto de camadas para codificar apropriadamente os dados de vídeo. Entretanto, apenas um sub-conjunto das camadas decodificadas pode ser desejável para saída, como, por exemplo, para exibição. De acordo com aspectos desta revelação, o codificador de vídeo pode determinar um ponto de operação de saída que identifica especificamente as camadas-alvo de dados de vídeo para saída. Em alguns casos, o codificador de vídeo pode determinar mais de um ponto de operação de saída para um conjunto de camadas, de modo a acomodar combinações diferentes de camadas de dados de vídeo para saída, por exemplo.
[0039] Em um exemplo para fins de ilustração, suponha-se que um conjunto de camadas inclua uma vista base (vista0), uma primeira vista (vista1), uma segunda vista (vista2) e uma terceira vista (vista3) para um aplicativo estéril (duas vistas para saída, por exemplo). Suponha-se também que a vista2 e a vista3 proporcionem uma saída estéril ótima. Neste exemplo, um decodificador de vídeo pode utilizar a vista base com referência para decodificar a vista2 e a vista3. Além disto, se o decodificador de vídeo se conformar a determinados padrões de codificação convencionais (tais como as extensões MVC ou SVC do H.264/AVC observadas acima), o decodificador de vídeo pode selecionar o nível mais elevado do ponto operacional para saída, isto é, a camada base apesar de a vista2 e a vista3 serem as vistas ótimas para saída.
[0040] De acordo com aspectos desta revelação, um conjunto de camadas especifica o sub-fluxo ou sub-fluxos que são decodificados, e um ponto de operação de saída indica um sub-conjunto de camadas dentro do conjunto de camadas que serão transmitidas. Assim, no exemplo acima, um decodificador de vídeo pode decodificar o conjunto de camadas que tem a vista base, a primeira vista, a segunda vista e a terceira vista. Além disto, o decodificador de vídeo pode determinar um ponto de operação de saída para o conjunto de camadas, onde o ponto de operação de saída inclui a vista2 e a vista3. Assim, o codificador de vídeo pode codificar e transmitir a vista2 e a vista3 para exibição.
[0041] Um ponto de operação de saída, conforme descrito acima, não especificado anteriormente para a HEVC. Além disto, a extensão MVC do H.264/AVC não encontrou o problema de determinar quais sub-fluxos de bits de um ponto operacional são destinados à exibição, uma vez que a MVC não utiliza o conceito de pontos operacionais e todas as vistas-alvo de um fluxo de bits MVC são especificadas por todas as vistas no fluxo de bits. Por conseguinte, embora as técnicas desta revelação possam ser implementadas com diversos padrões, os aspectos desta revelação provêm um mecanismo para vistas de saída alvo específicas de um ponto operacional a ser especificado utilizando-se o padrão HEVC.
[0042] A Figura 1 é um diagrama de blocos que mostra um sistema de codificação e decodificação 10 exemplar que pode utilizar técnicas para determinar uma ou mais camadas-alvo de saída, de acordo com aspectos desta revelação. Conforme mostrado na Figura 1, o sistema 10 inclui um dispositivo de origem 12 que provê dados de vídeo codificados a serem decodificados posteriormente por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 fornece os dados de vídeo ao dispositivo de destino 14 por meio de um meio legível por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 pode compreender qualquer um de uma ampla faixa de dispositivos que inclui computadores de mesa, computadores notebook (isto é, laptop), computadores tablet conversores set-topbox, dispositivos telefônicos tais como os chamados telefones “inteligentes”, os chamados mecanismos “inteligentes”, televisões, câmeras, dispositivos de exibição, tocadores de meios digitais, consoles para jogos de vídeo, dispositivos de fluxo contínuo de vídeo ou semelhantes. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0043] O dispositivo de destino 14 pode receber os dados de vídeo codificados a serem decodificados por meio de meio legível por computador 16. O meio legível por computador 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem 12 até o dispositivo de destino 14. Em um exemplo, o meio legível por computador 16 pode compreender um meio de comunicação para permitir que o dispositivo de origem 12 transmita dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou cabeado, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, tal como uma rede de área local, uma rede de área estendida ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro aparelho que possa ser útil para facilitar a comunicação do dispositivo de origem 12 com o dispositivo de destino 14.
[0044] em alguns exemplos, os dados codificados podem ser transmitidos da interface de saída 22 para um dispositivo de armazenamento. Da mesma maneira, os dados codificados podem ser acessados do dispositivo de armazenamento por uma interface de entrada. O dispositivo de armazenamento pode incluir qualquer um de diverso meios de armazenamento de dados distribuídos ou acessados localmente, tais como uma unidade rígida, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou quaisquer outros meios de armazenamento digital adequados para armazenar dados de vídeo codificados. Em outro exemplo, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que possa armazenar o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar os dados de vídeo armazenados do dispositivo de armazenamento por meio de fluxo contínuo ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivos exemplares incluem um servidor da Web (para um site da Web, por exemplo), um servidor FTP, dispositivos de armazenamento anexados à rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão com dados padrão, inclusive uma conexão com a Internet. Isto pode incluir um canal sem fio (uma conexão WiFi, por exemplo), uma conexão cabeada (como, por exemplo, DSL, modem a cabo, etc.) ou uma combinação de ambos que seja adequada para acessar os dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados do dispositivo de armazenamento 32 pode ser uma transmissão em fluxo contínuo, uma transmissão de download ou uma combinação de ambas.
[0045] As técnicas desta revelação não estão limitadas necessariamente a aplicações ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte a qualquer um de diversos aplicativos multimídia, tais como broadcasts de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo de fluxo contínuo por meio da Internet, tais como fluxo contínuo adaptativo dinâmico através de http (DASH), vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados, ou outros dispositivos. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional em suporte a aplicativos tais como fluxo contínuo de vídeo, repetição de vídeo, execução de broadcast de vídeo e/ou telefonia com vídeo.
[0046] No exemplo da Figura 1, o dispositivo de origem 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20 e uma interface de saída 22. O dispositivo de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. De acordo com esta revelação, o codificador de vídeo 20 do dispositivo de origem 12 pode ser configurado para aplicar as técnicas para determinar uma ou mais camadas-alvo de saída. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, tal como uma câmera externa. Da mesma maneira, o dispositivo de destino 14 pode formar interface com um dispositivo de execução externo em vez de inclui um dispositivo de execução integrado.
[0047] O sistema 10 mostrado da Figura 1 é meramente um exemplo. Técnicas podem determinar uma ou mais camadas-alvo de saída podem ser executadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora geralmente as técnicas desta revelação sejam executadas por um dispositivo de codificação vídeo, as técnicas podem ser também executadas por um codificador/decodificador de vídeo tipicamente referido como “CODEC”. Além do mais, as técnicas desta revelação podem ser executadas por um pré-processador de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 são meramente exemplos de dispositivos de codificação nos quais o dispositivo de origem 12 gera dados de vídeo codificados pra transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem funcionar de maneira substancialmente simétrica, de modo que cada um dos dispositivos 12, 14 incluam componentes de codificação e decodificação de vídeo. Consequentemente, o sistema 10 pode suportar transmissão de vídeo unidirecional ou bidirecional entre os dispositivos de vídeo 12, 14, como, por exemplo, para fluxo contínuo de vídeo, repetição de vídeo, execução de broadcast de vídeo ou telefonia com vídeo.
[0048] A fonte de vídeo 18 do dispositivo de origem 12 pode incluir um dispositivo de captação de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo que contém vídeo previamente captado e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Como outra alternativa, a fonte de vídeo 18 pode gerar dados baseados em gráficos de computador como o vídeo de origem ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de origem 12 e o dispositivo de destino 14 podem formar os chamados telefones com câmera ou telefones com vídeo. Conforme mencionado acima, contudo, as técnicas descritas nesta revelação podem ser aplicadas à codificação de vídeo em geral e podem ser aplicadas a aplicativos sem fio e/ou cabeados. Em cada caso, o vídeo captado, pré- captado, ou gerado por computador pode ser codificado pelo codificador de vídeo 20. As informações de vídeo codificadas podem ser então transmitidas pela interface de saída 22 em um meio legível por computador 16.
[0049] O meio legível por computador 16 pode incluir meios transitórios, tais como um broadcast sem fio ou uma transmissão em rede cabeada ou meios de armazenamento (isto é, meios de armazenamento não transitórios) tais como disco rígido, unidade flash, um disco compacto, um disco de vídeo digital, um disco Blu- ray, ou outros meios passíveis de leitura por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados do dispositivo de origem 12 e enviar os dados de vídeo codificados ao dispositivo de destino 14, por meio de uma transmissão em rede. Da mesma maneira, um dispositivo de computação de uma instalação de produção de meios, tal como uma instalação de estampagem de discos, pode receber dados de vídeo codificados do dispositivo de origem 12 e produzir um disco que contém os dados de vídeo codificados. Portanto, pode se entender que o meio legível por computador 16 inclui um ou mais meios passíveis de leitura por computador de diversas formas, em diversos exemplos.
[0050] A interface de entrada 28 do dispositivo de destino 14 recebe informações do meio legível por computador. As informações do meio legível por computador 16 podem incluir informações de sintaxe definidas pelo codificador de vídeo 20, as quais são também utilizadas pelo decodificador de vídeo 30, as quais incluem elementos de sintaxe que descrevem as características e/ou processamento de blocos e outras unidades codificadas, como, por exemplo, GOPs. O dispositivo de exibição 32 exibe os dados de vídeo codificados para o usuário e pode compreender qualquer um de diversos dispositivos de exibição, tais como um tubo de raios catódicos (CRT), uma tela de cristal líquido (LCD), uma tela de plasma, uma tela de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0051] Embora não mostrado na Figura 1, sob alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, integrados com um codificador e decodificador de áudio e podem incluir unidades MUX-DEMUX apropriadas ou outro hardware e software, para processar a codificação tanto de áudio quanto de vídeo em um fluxo de dados comum ou em fluxo de dados separado. Se aplicável, as unidades MUX-DEMUX podem conformar-se ao protocolo de multiplexador ITU-H.223 ou a outros protocolos tais como o protocolo de datagrama de usuário (UDP).
[0052] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, implementados como qualquer um de diversos circuitos de codificador ou decodificador adequados, conforme aplicados, tais como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados específicos de aplicativo (ASICs), arranjos de portas programáveis no campo (FPGAs), componentes lógicos discretos, software, hardware, firmware ou qualquer combinação deles. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio de armazenamento legível por computador não transitório adequado e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta revelação. Cada um do codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, um ou outro dos quais pode ser integrado como parte de um codificador/decodificador (CODEC). Um dispositivo que inclui o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0053] No exemplo mostrado na Figura 1, o sistema 10 inclui também um servidor/rede de entrega de conteúdo 34 que tem um roteador 36. Em alguns exemplos, o dispositivo de origem 12 pode comunicar-se com um servidor/rede de entrega de conteúdo 34 por meio de diversos meios de transmissão ou armazenamento sem fio e/ou cabeados, conforme descrito acima. Além do mais, embora mostrados separadamente no exemplo da Figura 1, em alguns exemplos o dispositivo de origem 12 e o servidor/rede de entrega de conteúdo 34 compreendem o mesmo dispositivo. O servidor/rede de entrega de conteúdo 34 pode armazenar uma ou mais versões dos dados de vídeo codificados (do codificador de vídeo 20 do dispositivo de origem 12) e pode disponibilizar tais dados de vídeo codificados para acesso pelo dispositivo de destino 14 e pelo decodificador de vídeo 30. Em alguns exemplos, o roteador 36 pode ser responsável pelo fornecimento de dados de vídeo codificados ao dispositivo de destino 14 no formato solicitado.
[0054] Esta revelação pode referir-se de maneira geral a “sinalização” pelo codificador de vídeo 20 e/ou pelo servidor/rede de entrega de conteúdo 34, de determinadas informações para outro dispositivo, tal como o decodificador de vídeo 30. Deve ficar entendido, contudo, que o codificador de vídeo 20 e/ou o servidor/rede de entrega de conteúdo 34 podem sinalizar informações associando determinados elementos de sintaxe a diversas partes codificadas de parte de vídeo. Ou seja, o codificador de vídeo 20 e/ou o servidor/rede de entrega de conteúdo 34 podem “sinalizar” dados armazenando determinados elementos de sintaxe para cabeçalhos de diversas codificadas de dados de vídeo. Em alguns casos, tais elementos de sintaxe podem ser codificados e armazenados (armazenados no dispositivo de armazenamento 24, por exemplo) antes de serem recebidos e decodificados pelo decodificador de vídeo 30. Assim, o termo “sinalização” pode referir-se de maneira geral à comunicação de sintaxe ou outros dados para decodificar direção vertical compactados, se tal comunicação ocorre em tempo real ou quase real ou dentro de uma duração de tempo, tal como pode ocorre quando se armazenam elementos de sintaxe em um maio no momento da codificação, os quais podem ser então recuperados por um dispositivo de decodificação em qualquer momento depois de serem armazenados neste meio.
[0055] O codificador de vídeo 20 e o decodificador de vídeo 30 podem funcionar de acordo com um padrão de compactação de vídeo, tal como o ITU-T H.264, alternativamente referido como MPEG-4 Parte 10, Codificação Avançada de Vídeo (AVC) ou extensões de tais padrões. O padrão ITU-T H.264/MPEG-4 (AVC) foi formulado pelo Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) juntamente com o Grupo de Especialistas de Imagens em Movimento ISO/TEC-MPEG como o produto de uma parceria coletiva conhecida como Equipe de Vídeo Conjunta (JVT). Sob alguns aspectos as técnicas descritas nesta revelação podem ser aplicadas a dispositivos que se conformam geralmente ao padrão H.264. O padrão H.264 é descrito na recomendação ITU-T H.264, Codificação Avançada de Vídeo para Serviços Áudio Visuais Genéricos, pelo Grupo de Estudos ITU-T, e datado de março de 2005, o qual pode ser aqui referido como o padrão H.264 ou especificação H.264, ou o padrão ou especificação H.264/AVC. Outros exemplos de padrão de compactação de vídeo incluem o MPEG-2 e o ITU-T H.263.
[0056] Embora as técnicas desta revelação não sejam limitadas a qualquer padrão de codificação específico, as técnicas podem ser relevantes para o padrão HEVC. Mais especificamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para codificar dados de vídeo de acordo com uma extensão do padrão HEVC, como, por exemplo, a extensão de várias vistas ou a extensão de vídeo tridimensional (3DV) que inclui a extensão escalonável de vídeo (EVC).
[0057] Em geral, a HEVC permite que uma imagem de vídeo seja dividida em uma sequência de blocos de árvore ou maiores unidades de codificação (LCUs) que inclui amostras tanto luma quanto croma. Os dados de sintaxe dentro de um fluxo de bits pode definir uma tamanho para a LCU, que é a maior unidade de codificação em termos do número de pixels. Uma fatia inclui várias unidades de árvore de codificação (CTUs) consecutivas. Cada uma das CTUs pode compreender um bloco de árvore de codificação de amostras luma, dois blocos de árvore de codificação correspondentes de amostras croma e estruturas de sintaxe utilizadas para codificar as amostras dos blocos de árvore de codificação. Em uma imagem monocromática ou uma imagem que tem três planos coloridos separados, uma CTU pode compreender um único bloco de árvore de codificação e estruturas de sintaxe utilizadas para codificar as amostras do bloco de árvore de codificação.
[0058] Uma imagem de vídeo pode ser particionada em uma ou mais fatias. Cada bloco de árvore pode ser dividido em unidades de codificação (CUs) de acordo com uma transformação quad-tree. Em geral, uma estrutura de dados de transformação quad-tree inclui um nó por CU, com um nó-raiz correspondendo ao bloco de árvore. Se uma CU for dividida em quatro sub-CUs, o nó que corresponde à CU inclui quatro nós-folha, cada um dos quais corresponde a uma das sub-CUs. Uma CU pode compreender um bloco de codificação de amostras luma e dois blocos de codificação correspondentes de amostras croma de uma imagem que tem um arranjo de amostras luma, um arranjo de amostras Cb e um arranjo de amostras Cr e estruturas de sintaxe utilizadas para codificar as amostras dos blocos de codificação. Em uma imagem monocromática ou uma imagem que tem três planos coloridos separados, uma CU pode compreender um único bloco de codificação e estruturas de elementos de sintaxe utilizadas para codificar as amostras do bloco de codificação. Um bloco de codificação é um bloco NxN de amostras.
[0059] Cada nó da estrutura de dados de transformação quad-tree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó na transformação quad-tree pode incluir um indicar de divisão, que indica se a CU que corresponde ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos recursivamente e podem depender de a CU ser ou não dividida em sub-CUs. Se uma CU não for dividida adicionalmente, ela é referida como CU-folha. Nesta revelação, quatro sub-CUs de uma CU-folha serão também referidas como CUs-folha mesmo se não houver divisão explícita da CU-folha original. Por exemplo, se uma CU no tamanho 16x16 não for dividida adicionalmente as quatro sub-CUs de 8x8 serão também referidas como CU-folha, embora a CU de 16x16 não tenha sido jamais dividida.
[0060] Uma CU tem uma finalidade semelhante à de um macrobloco do padrão H.264, exceto pelo fato de que uma CU não tem uma distinção de tamanho. Por exemplo, um bloco de árvore pode ser dividido em quatro nós-filhos (também referido como sub-CUs), e cada nó-filho pode por sua vez ser um nó-pai e ser dividido em outros quatro nós- filhos. Um nó-filho não dividido final referido como um nó- folha da transformação quad-tree, compreende um nó de codificação, também referido como CU-folha. Os dados de sintaxe associados a um fluxo de bits codificado podem definir o número máximo de vezes em que um bloco de árvore pode ser dividido, referido como profundidade de CU máxima, e podem definir também o tamanho mínimo dos nós de codificação. Por conseguinte, um fluxo de bits pode definir também a menor unidade de codificação (SCU). Esta revelação utiliza o termo “bloco” para referir-se a qualquer uma de uma CU, PU ou TU, no contexto da HEVC ou a estruturas de dados semelhantes no contexto de outros padrões (macro- blocos e sub-blocos deles no H.264/AVC, por exemplo).
[0061] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformada (TUs) associadas ao nó de codificação. O tamanho da CU corresponde ao tamanho do nó de codificação e deve ser de conformação quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do bloco de árvore com um máximo de 64x64 pixels ou mais. Cada CU pode conter uma ou mais PUs e uma ou mais TUS.
[0062] Em geral, uma PU representa uma área espacial que corresponde a toda ou a uma parte da CU correspondente, e pode incluir dados para recuperar uma amostra de referência para a PU. Além do mais, uma PU inclui dados relacionados com predição. Por exemplo, quando a PU é codificada de maneira intra-modal, dados para a PU podem ser incluídos em uma transformação quad-tree residual (RQT), que pode incluir dados que descrevem um modo de intra-predição para uma TU que corresponde à PU. Como outro exemplo, quando a PU é codificada de maneira inter-modal, a PU pode incluir dados que definem um ou mais vetores de movimento para a PU. Um bloco de predição pode ser um bloco retangular (isto é, quadrado ou não quadrado) de amostras ao qual a mesma predição é aplicada. Uma PU de uma CU pode compreender um bloco de predição de amostras luma, dois blocos de predição correspondentes de amostras croma de uma imagem e estruturas de sintaxe utilizadas para predizer as amostras do bloco de predição. Em uma imagem monocromática ou uma imagem que tem três planos coloridos separados, uma PU pode compreender um único bloco de produção e estruturas de sintaxe utilizadas para predizer as amostras do bloco de predição.
[0063] As TUs podem incluir coeficientes no domínio de transformada após a aplicação de uma transformada, como, por exemplo, uma transformada de co- seno discreta (DCT), uma transformada de número inteiro, uma transformada de wavelet ou uma transformada conceptualmente semelhante, a dados de vídeo residuais. Os dados residuais podem corresponder à diferenças de pixel entre os pixels da imagem não codificada e os valores de predição que correspondem às PUs. O codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU e em seguida transformar as TUs de modo a produzir coeficientes de transformada para a CU. Um bloco de transformada pode ser um bloco retangular de amostras ao qual a mesma transformada é aplicada. Uma unidade de transformada (TU) de uma CU pode compreender um bloco de transformada de amostras luma, dois blocos de transformada correspondentes de amostras croma e estruturas de sintaxe utilizadas para transformar as amostras do bloco de transformada. Em uma imagem monocromática ou em uma imagem que tem três planos coloridos separados, uma TU pode compreender um único bloco de transformada e estruturas de sintaxe utilizadas para transformar as amostras do bloco de transformada.
[0064] Em seguida à codificação intra- preditiva ou inter-preditiva que utiliza as PUs de uma CU, o codificador de vídeo 20 pode calcular dados residuais para as TUs da CU. As PUs podem compreender dados de sintaxe que descrevem um método ou modo para gerar dados de pixel preditivos no domínio espacial (também referido como domínio de pixel) e as TUs podem compreender coeficientes no domínio de transformada após a aplicação de uma transformada como, por exemplo, uma transformada de cosseno discreta (DCT), uma transformada de número inteiro, uma transformada de wavelet ou uma transformada conceptualmente semelhante a dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixel entre os pixels da imagem não codificada e os valores de predição que correspondem às PUs. O codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU e em seguida transformar as TU de modo a produzir coeficientes de transformada para a CU.
[0065] Em seguida a quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode efetuar a quantificação dos coeficientes de transformada. A quantificação refere-se geralmente a um processo no qual coeficientes de transformada são quantificados de modo a se reduzir possivelmente a quantidade de dados utilizados para representar os coeficientes, obtendo-se compactação adicional. O processo de quantificação pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para menos até um valor de m bits durante a quantificação, onde n é maior que m.
[0066] Após a quantificação, o codificador de vídeo pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional que inclui os coeficientes de transformada quantificados. A varredura pode ser projetada para colocar coeficientes de energia mais elevada (e, portanto, de frequência mais baixa) na frente do arranjo e para colocar coeficientes de energia mais baixa (e, portanto, de frequência mais elevada) na parte posterior do arranjo. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura pré-definida para varrer os coeficientes de transformada quantificados de modo a produzir um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode efetuar uma varredura adaptativa. Depois de varrer os coeficientes de transformada quantificados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, como, por exemplo, de acordo com a codificação de comprimento variável adaptativa ao contexto (CAVLC), a codificação aritmética binária adaptativa ao contexto (CABAC), a codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SEBAC), a codificação por Entropia com Particionamento de Intervalos de Probabilidade (PIPE) ou outra metodologia de codificação por entropia. O codificador de vídeo 20 pode codificar por entropia também os elementos de sintaxe associados aos dados de vídeo codificados para utilização pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0067] Para efetuar CABAC, o codificador de vídeo 20 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode referir-se, por exemplo, a se os valores vizinhos do símbolo são não zero ou não. Para efetuar CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. Palavras de código na VLC podem ser construídas de modo que códigos relativamente mais curtos correspondam a símbolos mais prováveis, enquanto códigos mais compridos correspondem a símbolos menos prováveis. Desta maneira, a utilização da VLC pode levar a uma economia de bits em comparação, por exemplo, com a utilização de palavras de código de igual comprimento para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada no contexto atribuído ao símbolo.
[0068] O codificador de vídeo 20 pode também enviar dados de sintaxe, tais como dados de sintaxe baseados em blocos, dados de sintaxe baseados em imagens e dados de sintaxe baseados em grupos de imagem (GOP), ao decodificador de vídeo 30, como, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia ou um cabeçalho de GOP. Os dados de sintaxe de GOP pode descrever o número de imagens no respectivo GOP e os dados de sintaxe de imagem podem indicar um modo de codificação/predição utilizado para codificar a imagem correspondente.
[0069] Em alguns exemplos, o codificador de vídeo 20 pode gerar e o decodificador de vídeo 30 pode receber determinados conjuntos de parâmetros, que podem ser utilizados na decodificação de dados de vídeo. Por exemplo, os conjuntos de parâmetros podem incluir um SPS, PPS ou VPS, que aperfeiçoam a eficácia ao sinalizarem separadamente informações que se alteram de maneira não frequente. Além disto, a utilização de conjuntos de parâmetros pode permitir a transmissão fora da banda das informações de cabeçalho importantes, evitando a necessidade de transmissões redundantes para resiliência em termos de erros. Em exemplos de transmissão fora da banda, unidades de camadas de abstração de rede (NAL) de conjuntos de parâmetros podem ser transmitidas em um canal diferente do de outras unidades NAL, tais como unidades NAL de Informações de Aperfeiçoamento Suplementares (SEI).
[0070] As unidades NAL SEI (referidas como mensagens SEI) podem conter informações que não são necessárias para decodificar as amostras de imagens codificadas de unidades NAL VCL, mas podem ajudar nos processos relacionados com decodificação, exibição, resiliência em termos de erros e outras finalidades. As mensagens SEI podem ser contidas em unidades NAL não VCL. As mensagens SEI podem ser incluídas na parte normativa de algumas especificações de padrão e, portanto, não são sempre obrigatórias para implementação em decodificar em conformidade com o padrão. As mensagens SEI podem ser mensagens SEI ao nível de sequência ao nível de imagem. Algumas informações ao nível de sequência podem ser contidas em mensagem SEI, tais como mensagens SEI com informações de capacidade de escalonamento no exemplo da SVC e mensagens SEI com informações de capacidade de escalonamento de vistas na MVC.
[0071] Na HEVC, o codificador de vídeo 20 pode definir pontos operacionais de modo a indicar um sub-fluxo de bits que pode ser extraído de um fluxo de bits codificado com base no nível temporal mais elevado do sub- fluxo de bits, assim como em uma lista de nuh_reserved_zero6bits. Por exemplo, o codificador de vídeo 20 pode sinalizar pontos operacionais de acordo com a Tabela 1, mostrada abaixo: TABELA 1: Pontos Operacionais
Figure img0001
[0072] Na Tabela 1 acima, op_layer_id_included_flag[ opIdx ][ i ] igual a 1 pode especificar que a camada com layer_id igual a 1 a i está presente para o OpIdx-ésimo conjunto de valores de layer_id. Além disto, op_layer_id_included_flag[ opIdx ][ i ] igual a 1 pode especificar que a camada com layer_id igual a i não está presente para o OpIdx-ésimo conjunto de valores de layer_id.
[0073] O codificador de vídeo 20 pode sinalizar também o elemento de sintaxe vps_max_nuh_reserved_zero_layer_id no VPS, onde vps_max_nuh_reserved_zero_layer_id especifica o maior valor de nuh_reserved_zero_6bits para todas as unidades NAL na sequência de vídeo codificada no OpLayerIdSet: operacionais aos quais a estrutura de sintaxe opIdx-th hrd_parameters() no conjunto de parâmetros de vídeo se aplica.
[0074] Em algumas ocorrências, o codificador de vídeo 20 pode sinalizar pontos operacionais para utilização com a extensão de várias vistas da HEVC (MV- HEVC) ou da 3D-HEVC. O rascunho operacional mais recente da extensão de várias vistas da MV-HEVC e da 3D da HEVC é especificado em “Rascunho Operacional MV-HEVC1”, Equipe de Colaboração Conjunta no Desenvolvimento de Extensões de Codificação de Vídeo 3D do ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 1°. Encontro: Estocolmo, SE, 16-20 de julho de 2012, JCT3V-A1004 disponível em http://phenix.it- sudparis.eu/jct2/doc end user/docments/1 Stockholm/wg11/JCT 3V-A1004-v1.zip e “Modelo de Teste 3D-HEVC1”, Equipe de Colaboração Conjunta no Desenvolvimento de Extensões de Codificação de Vídeo 3D do ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29?WG 11, 1°. Encontro: Estocolmo, SE, 16-20 de julho de 2012, JCT 3V-A 1005 disponível em http://phenix.int- evry.fr/jct2/doc end user/documents/1 Stockholm/wg11/JCT3V- A1005-v1.zip respectivamente.
[0075] Os pontos operacionais da MV-HEVC e/ou da 3D-HEVC podem ser sinalizados unicamente no conjunto de parâmetros de vídeo. Por exemplo, o codificador de vídeo 20 pode sinalizar as vistas a estarem presentes e decodificadas para cada ponto operacional.
[0076] Conforme observado acima, os pontos operacionais definidos na HEVC podem ser suficientes para fins de extração de fluxos de bits, mas o VPS não especifica vistas/camadas-alvo de saída dos pontos operacionais. Ou seja, o VPS não identifica as camadas específicas dos dados de vídeo que se destinam a exibição.
[0077] Sem o conhecimento de quais camadas são camadas-alvo de saída, as imagens decodificadas de determinadas camadas que não são utilizadas para saída podem ser mantidas em um armazenador de imagens decodificadas (DPB) do codificador de vídeo 20 e/ou do decodificador de vídeo 30 por mais tempo que o necessário. Aumentando-se assim os requisitos de armazenamento para sequência de várias vistas. Além disto, quando várias vistas são incluídas em um sub-fluxo de bits, o provedor de conteúdos associado ao servidor/rede de entrega de conteúdos 34 pode querer controlar quais sub-fluxo de bits são decodificados pelo decodificador de vídeo 30 ou fornecidos como saída ao dispositivo de exibição 32 para controle da experiência de visualização. Tal controle pode não estar disponível com o esquema de VPS atual.
[0078] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para executar uma ou mais das diversas técnicas desta revelação, sozinhas ou em qualquer combinação. Por exemplo, de acordo com aspectos desta revelação, o codificador de vídeo 20 pode indicar um ou mais elementos de sintaxe em um fluxo de bits codificado, dados que indicam um ponto operacional, como, por exemplo, um conjunto de camadas, que tem uma pluralidade de camadas de dados de vídeo. Além disto, o codificador de vídeo 20 pode codificar um ou mais elementos de sintaxe que indicam um ponto de operação de saída para o ponto operacional, onde o ponto de operação de saída é associado a uma ou mais camadas-alvo de saída da pluralidade de camadas dos dados de vídeo.
[0079] Da mesma maneira, o decodificador de vídeo 30 pode obter de um fluxo de bits codificado, dados que indicam um ponto operacional, como, por exemplo, um conjunto de camadas que tem uma pluralidade de camadas de dados de vídeo. Além disto, o decodificador de vídeo 30 pode determinar, com base em um ou mais elementos de sintaxe do fluxo de bits codificado um ponto de operação de saída para o ponto operacional, onde o ponto de operação de saída é associado a uma ou mais camadas-alvo de saída da pluralidade de camadas dos dados de vídeo.
[0080] De acordo com aspectos desta revelação, por exemplo, para uma extensão de várias vistas da HEVC (MV-HEVC) ou uma extensão de vídeo tridimensional da HEVC (3DV, que pode incluir uma ou mais camadas de dados de profundidade), o codificador de vídeo 20 pode sinalizar camadas-alvo de saída para cada ponto de operação de saída em um VPS ou extensão de VPS. O decodificador de vídeo 30 pode receber tal sinalização e determinar camadas-alvo de saída para cada ponto de operação de saída.
[0081] Como exemplo, com relação à MV-HEVC, um ponto de operação de saída pode referir-se a um conjunto de camadas com uma lista de saída alvo identificadas que pertencem às vistas incluídas no ponto operacional. O codificador de vídeo 20 pode sinalizar o ponto de operação de saída em uma extensão de VPS, conforme mostrado no exemplo da Tabela 2 abaixo: TABELA 2 - Extensão de VPS com Ponto de operação de saída
Figure img0002
[0082] No exemplo da Tabela 2 acima, num_leyer_operation_points pode especificar o número máximo de pontos de operação de saída presentes nas sequências de vídeo codificadas aos quais o conjunto de parâmetros de vídeo se aplica. Além disto, op_point_index pode identificar o ponto operacional com base no i-ésimo ponto de operação de saída atual que é formado. Além disto, outpout_layer_flag[ op_point_index ][ j ] igual a 1 pode indicar que a camada com layer_id igual a j é o alvo para saída para o i-iésimo ponto de operação de saída atual. Além disto, outpout_layer_flag[ j ] igual a 0 pode indicar que a camada com layer_id igual a j não é o alvo para a saída para o i-ésimo operacional de saída atual.
[0083] Como outro exemplo, o codificador de vídeo 20 pode sinalizar o ponto de operação de saída em um VPS, conforme mostrado no exemplo da Tabela 3 abaixo: TABELA 3 - VPS com Ponto de operação de saída
Figure img0003
[0084] No exemplo da tabela 3 acima, num_target_views pode especificar o número de vista de saída alvo para o i-ésimo operacional de saída atual. Além disto, target_layer_id[ i ][ j ] pode especificar o layer_id da j-ésima vista de saída alvo do i-ésimo operacional de saída atual.
[0085] Em ainda outro exemplo, o codificador de vídeo 20 pode sinalizar vistas de saída alvo sinalizando outras estruturas de sintaxe. Por exemplo, o codificador de vídeo 20 pode codificar dados que indicam vistas de saída alvo em uma mensagem SEI ou utilizando outras técnicas de sinalização fora da banda.
[0086] Com relação à 3D-HEVC um ponto de operação de saída pode referir-se a um ponto operacional como, por exemplo, um conjunto de camadas, com uma lista de vistas de textura ou profundidade de saída alvo identificadas que pertencem às vistas incluídas no ponto operacional. O codificador de vídeo 20 pode sinalizar o ponto de operação de saída para a 3D-HEVC utilizando uma sintaxe e uma semântica semelhantes às descritas acima com relação à MVHEVC. Para a 3D-HEVC, contudo, para o codificador de vídeo 20 cada layer_id sinalizada para ser uma vista de saída alvo pode corresponder ou a uma vista de profundidade ou a uma vista de textura.
[0087] Com relação à HSVC a camada-alvo de saídade um ponto operacional pode ser derivada para ser a camada com o layer_id numericamente mais elevado. Por exemplo, um ponto de operação de saída pode ser um ponto operacional, como, por exemplo, um conjunto de camadas, com apenas a camada que tem o maior layer_id no ponto operacional que é considerado para a saída. Assim, o decodificador de vídeo 30 pode decodificar um elemento de sintaxe layer_id de modo a determinar o ponto de operação de saída para um ponto operacional específico.
[0088] Assim, de acordo com aspectos desta revelação, um ponto operacional, conforme definido na especificação base HEVC atual, pode corresponder a um ou mais pontos operacionais de saída, com cada ponto de operação de saída tendo uma vista ou vistas e/ou camadas- alvo de saída diferentes. Por exemplo, o codificar 20 pode sinalizar em um fluxo de bits codificado (e o decodificador de vídeo 30 pode obter, por execução de parse, um fluxo de bits codificado) uma indicação de que um sub-conjunto das camadas decodificadas pode ser desejável para saída, como, por exemplo, para exibição. Embora descrito com relação ao codificador de vídeo 20 acima, em alguns exemplos o servidor/rede de entrega de conteúdos 34 pode ser responsável por tal sinalização.
[0089] Por exemplo, o servidor/rede de entrega de conteúdos 34pode determinar quais camadas de um fluxo de bits são ótimas para saída. Neste exemplo, o servidor/rede de entrega de conteúdos 34 pode ser responsável pela geração e/ou alteração de um VPS, uma extensão de VPS, uma mensagem SEI ou outra estrutura para indicar camadas-alvo de saída para um ponto de operação de saída.
[0090] Com relação ao gerenciamento do armazenador de imagens decodificadas (também referido como memória de imagens de referência, conforme descrito, por exemplo, com relação às Figuras 2 e 3), de acordo com aspectos desta revelação, quando um ponto de operação de saída está sendo decodificado, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode remover uma imagem decodificada de uma camada que não é visada para saída do armazenador de imagens decodificadas desde que a imagem já não seja mais necessária à predição temporal (inter- predição dentro de uma camada ou uma vista, por exemplo) ou predição inter-camada/inter-vista. Para facilitar a remoção, o codificador de vídeo 20 pode fixar um PicOutputFlag de cada componente de vista de uma camada que não pertence a uma vista ou camada-alvo de saída igual a 0. Assim, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode determinar quais imagens não são utilizadas para referência e não transmitir e remover tais imagens do armazenador de imagens decodificadas com base na determinação.
[0091] A Figura 2 é um diagrama de blocos que mostra um exemplo de codificador de vídeo 20 que pode implementar técnicas para determinar uma ou mais camadas- alvo de saída, de acordo com aspectos desta revelação. O codificador de vídeo 20 pode efetuar intra e inter codificação de blocos de vídeo dentro de fatias de vídeo. A intra-codificação recorre à predição espacial para reduzir ou remover a redundância espacial em vídeo dentro de uma imagem de vídeo. A inter-codificação recorre à predição temporal para reduzir ou remover a redundância temporal em vídeo dentro de imagens adjacentes de uma sequência de vídeo. O intra-modo (modo I) pode referir-se a qualquer um de vários modos de compactação espacial. Os inter-modos, tais como a predição unidirecional (modo P) ou bi-predição (modo B), podem referir-se a qualquer um de vários modos de compactação temporal.
[0092] Conforme observado acima, o codificador de vídeo 20 pode ser adaptado para efetuar codificação de vídeo de várias vistas e/ou escalonável. Em algumas ocorrências, o codificador de vídeo 20 pode ser configurado para conformar-se a um padrão de codificação de vídeo MV- HEVC, de modo que cada vista em uma ocorrência de tempo possa ser processada por um decodificador, tal como o decodificador de vídeo 30. Em outras ocorrências, o codificador de vídeo 20 pode ser configurado para conformar-se a um padrão de codificação de vídeo 3D-HEVC e pode ser configurado para codificar um mapa de profundidade para cada vista além de codificar mapas de textura (isto é, valores luma e croma) para cada vista. Em ainda outras ocorrências, o codificador de vídeo 20 pode ser configurado para codificar várias camadas escalonáveis de dados de vídeo de acordo com um padrão de codificação de vídeo HSVC. Embora seja feita referência a padrões de codificação específicos, deve ficar entendido que as técnicas não específicas de qualquer padrão de codificação e podem ser implementadas com padrões futuros e/ou ainda não desenvolvidos.
[0093] Seja como for, conforme mostrado na Figura 2, o codificador de vídeo 20 recebe o bloco de vídeo atual dentro de uma imagens de vídeo a ser codificada. No exemplo da Figura 2, o codificador de vídeo 20 inclui uma unidade de seleção de modo 40, uma memória de imagens de referência 64, um somador 50, uma unidade de processamento de transformadas 52, uma unidade de quantificação 54 e uma unidade de codificação por entropia 56. A unidade de seleção de modo 40, por sua vez, inclui uma unidade de compensação de movimento 44, uma unidade de estimação de movimento 42, uma unidade de intra-predição 46 e uma unidade de partição 48. Para reconstrução de blocos de vídeo, o codificador de vídeo 20 inclui também uma unidade de quantificação inversa 58, uma unidade de transformada inversa 60 e um somador 62. Um filtro de desbloqueio (não mostrado na Figura 2) pode ser também incluído para filtrar fronteiras entre blocos de modo a remover artefatos de blocagem de vídeo reconstruído. Se desejável, o filtro de desbloqueio filtraria tipicamente a saída do somador 62. Filtros adicionais (em malha ou pós-malha) podem ser também utilizados além do filtro de desbloqueio. Tais filtros não são mostrados por razões de concisão, mas, se desejado, podem filtrar a saída do somador 50 (como um filtro em malha).
[0094] Durante o processo de codificação, o codificador de vídeo 20 recebe uma imagem ou fatia de vídeo a ser codificada. A imagem ou fatia pode ser dividida em vários blocos de vídeo. A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 efetuam codificação inter-preditiva do bloco de vídeo recebido com relação a um ou mais blocos em uma ou mais imagens de referência, de modo a se obter predição temporal. A unidade de intra-predição 46 pode efetuar alternativamente codificação intra-preditiva do bloco de vídeo recebido com relação a um ou mais blocos vizinhos na mesma imagem ou fatia do bloco a ser codificado, de modo a se obter predição espacial. O codificador de vídeo 20 pode executar várias passagens de codificação, como, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0095] Além do mais, a unidade de partição 48 pode particionar blocos de dados de vídeo em sub-blocos, com base na avaliação de esquemas de particionamento anteriores em passagens de codificação anteriores. Por exemplo, a unidade de partição 48 pode particionar inicialmente uma imagem ou fatia em LCUs, e particionar cada uma das LCUs em sub-CUs com base na análise de distorção de taxa (otimização de distorção de taxa, por exemplo). A unidade de seleção de modo 40 pode produzir também uma estrutura de dados de transformação quad-tree que indica o particionamento de uma LCU em sub-CUs. As CUs de nó-folha da transformação quad-tree podem incluir uma ou mais PUs e uma ou mais TUs.
[0096] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra- ou intercomo, por exemplo, com base em resultados de erro e envia o bloco intra- ou inter-codificado resultante ao somador 50 para gerar dados de bloco residuais e ao somador 62 para reconstruir o bloco codificado para utilização como uma imagem de referência. A unidade de seleção de modo 40 também provê elementos de sintaxe, tais como vetores de movimento, indicadores de intra-modo, informações de partição e outras informações de sintaxe que tais, para a unidade de codificação por entropia 56.
[0097] A unidade de estimação de movimento 42 e unidade de compensação de movimento 44 podem ser altamente integradas, mas são mostradas separadamente para fins conceptuais. A estimação de movimento efetuada pela unidade de estimação de movimento 42, é o processo de gerar vetores de movimento, que estimam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro da imagem de vídeo atual com relação a um bloco preditivo dentro de uma imagem de referência (ou outra unidade codificada) com relação ao bloco atual que é codificado dentro da imagem atual (ou outra unidade codificada). Um bloco preditivo é um bloco que se verifica corresponder intimamente ao bloco a ser codificado, em termos de diferença de pixel, o que pode ser determinado pela soma da diferença absoluta (SAD), pela soma da diferença ao quadrado (SSD) ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de sub-pixel de número inteiro de imagens de referência armazenadas na memória de imagens de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de um quarto de pixel, posições de um oitavo de pixel ou outras posições de pixel fracionárias da imagem de referência. Portanto, a unidade de estimação de movimento 42 pode efetuar uma busca de movimento com relação às posições de pixel completas e posições de pixel fracionárias e transmitir um vetor de movimento com precisão de pixel fracionária.
[0098] A unidade de estimação de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia inter-codificada comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0) ou de 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 imagens de referência 64. A unidade de estimação de movimento 42 envia o vetor de movimento calculado à unidade de codificação por entropia 56 e à unidade de compensação de movimento 44.
[0099] A compensação de movimento efetuada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco preditivo com base no vetor de movimento determinado pela unidade de estimação de movimento 42. Mais uma vez, a unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Ao receber o vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco preditivo que o vetor de movimento indica em uma das listas de imagens de referência. O somador 50 forma um bloco de vídeo residual subtraindo valores de pixel do bloco preditivo dos valores de pixel do bloco de vídeo atual que é codificado, formando valores de diferença de pixel conforme discutido em seguida. Em geral, a unidade de estimação de movimento 42 efetua estimação de movimento com relação a componentes luma e a unidade de compensação de movimento 44 utiliza vetores de movimento calculados com base nos componentes luma tanto para componentes croma quanto componentes luma. A unidade de seleção de modo 40 pode gerar também elementos de sintaxe associados aos blocos de vídeo e à fatia de vídeo para utilização pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0100] A unidade de intra-predição 46 pode intra-predizer o bloco atual, como alternativa para a inter-predição efetuada pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44, conforme descrito acima. Em particular, a unidade de intra- predição 46 pode determinar um modo de intra-predição a ser utilizado para codificar o bloco atual. Em alguns exemplos, a unidade de intra-predição 46 pode codificar o bloco atual utilizando diversos modos de intra-predição, como, por exemplo, durante passagens de codificação separadas, e a unidade de intra-predição 46 (ou a unidade de seleção de modo 40, em alguns exemplos) pode selecionar o modo de intra-predição apropriado a ser utilizado a partir dos modos testados.
[0101] Por exemplo, a unidade de intra- predição 46 pode calcular valores de distorção de taxa utilizando uma análise de distorção de taxa para os diversos modos de intra-predição testados, e selecionar o modo de intra-predição que tem as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa determina geralmente o grau de distorção (ou erro) entre um bloco codificado e um bloco não codificado original que foi codificado de modo a se produzir o bloco codificado, assim como uma taxa de bits (isto é, o número de bits) utilizada para produzir o bloco codificado. A unidade de intra-predição 46 pode calcular razões a partir das distorções e taxas para os diversos blocos codificados de modo a determinar qual o modo de intra-predição apresenta o melhor valor de distorção de taxa para o bloco.
[0102] Depois de selecionar o modo de intra- predição para um bloco, a unidade de intra-predição 46 pode fornecer informações que indicam o modo de intra-predição selecionado para o bloco à unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar as informações que indicam o modo de intra- predição selecionado. O codificador de vídeo 20 pode incluir no fluxo de bits transmitido dados de configuração, que podem incluir uma série de tabelas de índices de modo de intra-predição e uma série de tabelas de índices de modo de intra-predição modificadas (também referidas como tabelas de mapeamento em palavras de código), definições de contexto de codificação para diversos blocos e indicações do modo de intra-predição mais provável, uma tabela de índices de modos de intra-predição modificada a ser utilizada para cada um dos contextos.
[0103] O codificador de vídeo 20 forma um bloco de vídeo residual subtraindo os dados de predição da unidade de seleção de modo 40 do bloco de vídeo original que é codificado. O somador 50 representa o componente ou componentes que executam esta operação de subtração. A unidade de processamento de transformadas 52 aplica uma transformada, tal como uma transformada de cosseno discreta (DCT) ou uma transformada conceptualmente semelhante ao bloco residual, produzindo um bloco de vídeo que compreende valores de coeficientes de transformada residuais. A unidade de processamento de transformadas 52 pode executar outras transformadas que são conceptualmente semelhantes à DCT, podem ser também utilizadas transformadas de wavelet, transformadas de número inteiro, transformadas de sub-banda ou outros tipos de transformadas.
[0104] Seja como for, a unidade de processamento de transformadas 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter as informações residuais de um domínio de valor de pixel em um domínio de transformada, tal como um domínio de frequência. A unidade de processamento de transformadas 52 pode enviar os coeficientes de transformada resultantes à unidade de quantificação 54. A unidade de quantificação 54 quantifica os coeficientes de transformada de modo a reduzir ainda mais a taxa de bits. O processo de quantificação pode reduzir a profundidade de bits associada a alguns ou todos os coeficientes. O grau de quantificação pode ser modificado pelo ajuste de um parâmetro de quantificação. Em alguns exemplos, a unidade de quantificação 54 pode efetuar então uma varredura da matriz que inclui os coeficientes de transformada quantificados. Alternativamente, a unidade de codificação por entropia 56 pode efetuar a varredura.
[0105] Em seguida à quantificação, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformada quantificados. Por exemplo, a unidade de codificação por entropia 56 pode efetuar codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação por entropia com particionamento de intervalos de probabilidade (PIPE) ou outra técnica de codificação por entropia. No caso da codificação por entropia baseada no contexto, o contexto pode ser baseado em blocos vizinhos. Em seguida à codificação por entropia pela unidade de codificação por entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (o decodificador de vídeo 30, por exemplo) ou arquivado para transmissão ou recuperação posterior.
[0106] A unidade de quantificação inversa 58 e a unidade de transformada inversa 60 aplicam quantificação inversa e transformação inversa, e respectivamente, para reconstruir o bloco residual no domínio de pixel, como, por exemplo, para utilização posterior como bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência adicionando o bloco residual a um bloco preditivo de uma das imagens da memória de imagens de referência 64. A unidade de compensação de movimento 44 pode aplicar também um ou mais filtros de interpolação ao bloco residual reconstruído de modo a calcular valores de sub-pixel de número inteiro para utilização na estimação de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado em movimento produzido pela unidade de compensação de movimento 44 de modo a se produzir um bloco de vídeo reconstruído para armazenamento na memória de imagens de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência para inter-codificar um bloco no quadro de vídeo subsequente.
[0107] O codificador de vídeo 20 pode gerar vários elementos de sintaxe, conforme descrito acima, que podem ser codificados pela unidade de codificação por entropia 56 ou por outra unidade de codificação do codificador de vídeo 20. Em alguns exemplos, o codificador de vídeo 20 pode gerar e codificar elementos de sintaxe para um fluxo de bits multi-vista e/ou várias camadas, conforme descrito acima.
[0108] De acordo com aspectos desta revelação, por exemplo, a unidade de codificação por entropia 56 pode codificar um ou mais elementos de sintaxe em um fluxo de bits codificado que indicam um ponto operacional, como, por exemplo, um conjunto de camadas, que tem uma pluralidade de camadas de dados de vídeo. Além disto, a unidade de codificação por entropia 56 pode codificar um ou mais elementos de sintaxe que indicam um ponto de operação de saída para o conjunto de camadas, onde o ponto de operação de saída é associado a uma ou mais camadas-alvo de saída da pluralidade de camadas dos dados de vídeo.
[0109] Em alguns exemplos, de acordo com aspectos desta revelação, o codificador de vídeo 20 pode indicar camadas-alvo de saída para um ponto de operação de saída de acordo com um padrão de codificação de vídeo, tal como a MV-HEVC, a 3D-HEVC ou a HSVC. Com relação à codificação de vídeo de várias vistas (MV-HEVC ou 3D-HEVC, por exemplo) por exemplo, o codificador de vídeo 20 pode codificar uma extensão de VPS, (tal como a mostrada e descrita com relação ao exemplo da Tabela 2 acima, por exemplo), um VPS (tal como o mostrado e descrito com relação ao exemplo da Tabela 3 acima, por exemplo), uma mensagem SEI ou outra mensagem para indicar um ou mais pontos operacionais de saída, com cada ponto de operação de saída tendo camadas da saída alvo conexas. Conforme observado acima, quando se codificam vistas de profundidade, um ponto de operação de saída pode referir-se a um ponto operacional com uma lista de vistas de textura ou profundidade de saída alvo identificadas que pertencem às vistas incluídas no ponto operacional.
[0110] Com relação à HSVC, o codificador de vídeo 20 pode codificar um layer_id para cada camada de dados de vídeo (conforme descrito mais detalhadamente com relação à Figura 5 abaixo, por exemplo). De acordo com aspectos desta revelação, um ponto de operação de saída pode ser um ponto operacional com apenas a camada que tem o maior layer_id no ponto operacional que é considerado para a saída.
[0111] Assim, de acordo com aspectos desta revelação, um ponto operacional, conforme definido na especificação base HEVC atual, pode corresponder a um ou mais pontos operacionais de saída, com cada ponto de operação de saída tendo uma vista ou vista e/ou camada e/ou camadas de saída de vídeo-alvo diferentes. Por exemplo, o codificador de vídeo 20 pode sinalizar em um fluxo de bits codificado a indicação de que um sub-conjunto das camadas decodificadas pode ser desejável para saída como, por exemplo, exibição.
[0112] De acordo com aspectos desta revelação, o codificador de vídeo 20 pode remover uma ou mais imagens da memória de imagens de referência 64 com base no ponto de operação de saída e nas camadas-alvo de saída determinados. Por exemplo, o codificador de vídeo 20 pode remover da memória de imagens de referência imagens que não são destinadas à saída e que não são necessárias à predição temporal (inter-predição dentro de uma camada ou uma vista, por exemplo) ou para predição inter-camada/inter-vista.
[0113] Desta maneira, o codificador de vídeo 20 representa um exemplo de codificador de vídeo configurado para codificar uma pluralidade de camadas de dados de vídeo que inclui uma série de conjunto de camadas, onde cada conjunto de camadas contém uma ou mais camadas de dados de vídeo da pluralidade de camadas. O codificador de vídeo 20 é também configurado para codificar um ou mais elementos de sintaxe de um fluxo de bits que indicam um ou mais pontos operacionais de saída, onde cada ponto de operação de saída é associado a um conjunto de camadas da pluralidade de conjuntos de camadas e uma ou mais camadas- alvo de saída da pluralidade de camadas.
[0114] A Figura 3 é um diagrama de blocos que mostra um exemplo de decodificador de vídeo 30 que pode implementar técnicas para determinar uma ou mais camadas- alvo de saída, de acordo com aspectos desta revelação. No exemplo da Figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, uma unidade de compensação de movimento 72, uma unidade de intra-predição 74, uma unidade de quantificação inversa 76, uma unidade de transformação inversa 78, uma memória de imagens de referência 82 e um somador 80.
[0115] Conforme observado acima, o decodificador de vídeo 30 pode ser adaptado para efetuar codificação de vídeo de várias vistas e/ou escalonável. Em algumas ocorrências o decodificador de vídeo 30 pode ser configurado para conformar-se a um padrão de codificação de vídeo MV-HEVC. Em outras ocorrências, o decodificador de vídeo 30 pode ser configurado para conformar-se a um padrão de codificação de vídeo 3D-HEVC e pode ser configurado para decodificar um mapa de profundidade para cada vista além de codificar mapas de textura (valores luma e croma, por exemplo), para cada vista. Em ainda outras ocorrências, o decodificador de vídeo 30 pode ser configurado para decodificar várias camadas escalonáveis de dados de vídeo de acordo com um padrão de codificação vídeo HEVC. Embora seja feita referência a padrões de codificação específicos, deve ficar entendido que as técnicas não são específicas de qualquer padrão de codificação e podem ser implementadas com padrões futuros e/ou ainda não desenvolvidos.
[0116] O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação passagem de decodificação geralmente correspondente à passagem de codificação descrita com relação ao codificador de vídeo 20 (Figura 2). A unidade de compensação de movimento 72 pode gerar dados de predição com base nos vetores de movimento recebidos da unidade de decodificação por entropia 70, enquanto a unidade de intra-predição 74 pode gerar dados de predição com base nos indicadores de modo de intra-predição recebidos da unidade de decodificação por entropia 70.
[0117] Durante o processo de decodificação o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe conexos do codificador de vídeo 20. O decodificador de vídeo 30 pode receber os elementos de sintaxe ao nível de fatia de vídeo ou ao nível de bloco de vídeo.
[0118] A unidade de decodificação por entropia 70 decodifica o fluxo de bits de modo a gerar coeficientes quantificados, vetores de movimento ou indicadores de modo de intra-predição. Em alguns exemplos, a unidade de decodificação por entropia 70 ou outra unidade do decodificador de vídeo pode efetuar parse em e decodificar elementos de sintaxe de um fluxo de bits multi-vista e/ou várias camadas, conforme descrito acima.
[0119] De acordo com aspectos desta revelação, a unidade de decodificação por entropia 70 pode obter, de um fluxo de bits codificado, dados que indicam um ponto operacional, como, por exemplo, um conjunto de camadas, que tem uma pluralidade de camadas de dados de vídeo. Além disto, a unidade de decodificação por entropia 70 pode decodificar um ou mais elementos de sintaxe que indicam um ponto de operação de saída para o ponto operacional, onde o ponto de operação de saída é associado a uma ou mais camadas-alvo de saída da pluralidade de camadas dos dados de vídeo. O decodificador de vídeo 30 pode determinar, com base nos um ou mais elementos de sintaxe, o ponto de operação de saída e as camadas-alvo de saída.
[0120] Em alguns exemplos, de acordo com aspectos desta revelação, o decodificador de vídeo 30 pode conformar-se a um padrão de codificação vídeo tal como a MV-HEVC 3D-HEVC ou a HSVC. Por exemplo, com relação à codificação vídeo de várias vistas (MV-HEVC ou 3D-HEVC, por exemplo), o decodificador de vídeo 30 pode efetuar parse em sub-fluxos de bits de um fluxo de bits codificado recebido com base no ponto de operação de saída e nas camadas-alvo de saída indicados em uma extensão de VPS (tal como a mostrada e descrita com relação ao exemplo da Tabela 2 acima, por exemplo), um VPS (tal como o mostrado e descrito com relação ao exemplo da Tabela 3 acima, por exemplo), uma mensagem SEI ou outra mensagem. Quando se decodificam vistas de profundidade, um ponto de operação de saída pode referir-se a um ponto operacional com uma lista de várias de textura ou profundidade de saída alvo identificadas que pertencem às várias incluídas no ponto operacional.
[0121] Com relação à HSVC a unidade de decodificação por entropia 70 pode decodificar um layer_id para camada de dados de vídeo. De acordo com aspectos desta revelação, o decodificador de vídeo 30 pode inferir um ponto de operação de saída com base na camada que tem o maior layer_id no ponto operacional.
[0122] Assim, de acordo com aspectos desta revelação, um ponto operacional, conforme definido na especificação base HEVC atual, pode corresponder a um ou mais pontos operacionais de saída, com cada ponto de operação de saída tendo uma vista ou várias e/ou umas uma ou mais camadas-alvo de saída diferentes. A unidade de decodificação por entropia 70 pode decodificar um sub-fluxo de bits que incluem as camadas-alvo de saída com base em um ou mais elementos de sintaxe submetidos a parse e decodificados a partir de um fluxo de bits codificado e recebido.
[0123] A unidade de decodificação por entropia 70 emite os vetores de movimento e outros elementos de sintaxe para a unidade de compensação de movimento 72. Para uma camada de saída específica, quando a fatia de vídeo é codificada uma fatia intra-codificada (I), a unidade de intra-predição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base no modo de intra-predição sinalizado e em dados de blocos decodificados anteriormente da imagem atual. Quando a imagem de vídeo e codificada como uma fatia intra- codificada (isto é, B, P ou GPB), a unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fatia vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação por entropia 70. Os blocos preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de imagens de referência, Lista 0 e Lista 1, utilizando técnicas de construção pré-definidas com base nas imagens de referência armazenadas na memória de imagens de referência 82.
[0124] A unidade de compensação de movimento 72 determina informações de predição para um bloco de vídeo da fatia de vídeo atual efetuando parse nos vetores de movimento e em outros elementos de sintaxe, e utiliza as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual que é decodificado. Por exemplo, a unidade de compensação de movimento 72 utiliza alguns dos elementos de sintaxe recebidos para determinar um modo de predição (intra- ou inter-predição, por exemplo) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de inter-predição (fatia B, fatia P ou fatia GPB, por exemplo), informações de construção para uma ou mais das Listas de imagens de referência para a fatia, vetores de movimento para cada bloco de vídeo inter- codificado da fatia, a condição de inter-predição para cada bloco de vídeo inter-codificado da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[0125] A unidade de compensação de movimento 72 pode utilizar o vetor de movimento decodificado para recuperar dados de uma imagem decodificada anteriormente, como, por exemplo, da memória de imagens de referência 82. A unidade de compensação de movimento 72 pode também efetuar interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode utilizar os filtros de interpolação utilizados pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular valores interpolados para sub-pixels de número inteiro de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[0126] A unidade de quantificação inversa 76 quantifica por inversão, isto é, desquantifica os coeficientes de transformada quantificados apresentados no fluxo de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantificação inversa pode incluir a utilização de um parâmetro de quantificação QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo de modo a se determinar o grau de quantificação e, da mesma maneira, o grau de quantificação inversa que deve ser aplicado. A unidade de transformada inversa 78 aplica uma transformada inversa, como, por exemplo, uma DCT inversa, uma transformada de número inteiro inversa ou um processo de transformada inversa conceptualmente semelhante, aos coeficientes de transformada de modo a se produzirem blocos residuais no domínio de pixel.
[0127] Depois que a unidade de compensação de movimento 72 gera o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e em outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado somando os blocos residuais da unidade de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. O somador 80 representa o componente ou componentes que executam esta operação de soma. Se desejado, um filtro de desbloqueio pode ser também aplicado para filtrar os blocos decodificados de modo a se removerem os artefatos de bloqueio. Outros filtros de malha (ou na malha de codificação ou depois da malha de codificação) podem ser também utilizados para suavizar as transições entre pixels ou senão aperfeiçoar a qualidade de vídeo. Os blocos de vídeo decodificados em um dado quadro ou imagem são em seguida armazenados na memória de imagens de referência 82, que armazena imagens de referência utilizadas para compensação de movimento subsequente. A memória de imagens de referência 82 armazena também vídeo decodificado para apresentação posterior em um dispositivo de exibição, tal como o dispositivo de exibição 32 da Figura 1.
[0128] De acordo com alguns aspectos desta revelação, o decodificador de vídeo 30 pode remover uma ou mais imagens da memória de imagens de referência com base no ponto de operação de saída e nas camadas-alvo de saída determinados. Por exemplo, o decodificador de vídeo 30 pode remover, da memória de imagens de referência 82, imagens que não são destinadas à saída e que não são necessárias para predição temporal (inter-predição dentro de uma camada ou uma vista, por exemplo) ou para predição inter- camada/inter-vista. O decodificador de vídeo 30 pode determinar se imagens da memória de imagens de referência 82 são utilizadas para predição ou incluídas em uma camada- alvo de saídacom base em um ou mais elementos de sintaxe do fluxo de bits decodificado. Por exemplo, a unidade de decodificação por entropia 70 pode decodificar um PicOtputFlag para cada componente de vista de uma camada que indica se a imagem pertence a uma vista de saída alvo. O decodificador de vídeo 30 pode remover da memória de imagens de referência 82 imagens que não pertencem à vista de saída alvo que são marcadas “não utilizadas para referência” durante a decodificação.
[0129] Por conseguinte, em um exemplo, o decodificador de vídeo 30 pode decodificar um ponto de operação de saída de um ou mais pontos de operação de saída associados a um conjunto de camadas assim como decodificar um conjunto de camadas decodificadas mas não emitidas que incluem uma ou mais camadas que não são uma das uma ou mais camadas-alvo de saída que pertencem ao conjunto de camadas. Além disto, o decodificador de vídeo 30 pode marcar uma primeira imagem decodificada incluída nas uma ou mais camadas-alvo de saída em um armazenador de imagens decodificadas como uma imagem a ser utilizada para emissão, e marcar uma segunda imagem decodificada imagem codificada incluída no conjunto de camadas decodificadas, mas não emitidas no armazenador de imagens decodificadas como uma imagem a não ser utilizada para emissão, de modo que a imagem a não ser utilizada para emissão seja removida do armazenador de imagens decodificadas antes da imagem a ser utilizada para emissão. Além disto, o decodificador de vídeo 30 pode determinar se a imagem marcada como a não ser utilizada para emissão é utilizada para uma da inter- predição e da predição inter-camada e remover a imagem marcada como a não ser utilizada para emissão do armazenador de imagens decodificadas quando a imagem a não ser utilizada para emissão não é utilizada para uma da inter-predição e predição inter-camada.
[0130] Desta maneira, o decodificador de vídeo 30 representa um exemplo de decodificador de vídeo 30 que pode obter, de um fluxo de bits multi-camada, uma pluralidade de camadas de dados de vídeo que inclui uma série de conjunto de camadas, onde cada conjunto de camadas contém uma ou mais camadas de dados de vídeo da pluralidade de camadas. O decodificador de vídeo 30 pode também determinar, com base em um ou mais elementos de sintaxe do fluxo de bits, um ou mais pontos operacionais de saída, onde cada ponto de operação de saída é associado a um conjunto de camadas da série de conjunto de camadas e a uma ou mais camadas-alvo de saída da pluralidade de camadas.
[0131] A Figura 4 é um diagrama conceptual que mostra um padrão de predição MVC exemplar. Embora a Figura 4 seja descrita com relação ao H.264 AVC e MVC, deve ficar entendido que um padrão de predição semelhante pode ser utilizado com outros esquemas de codificação vídeo de várias vistas, inclusive a MV-HEVC e 3D-HEVC (várias vistas mais profundidade). Assim, as referências à MVC em seguida se aplicas à codificação de vídeo de várias vistas em geral e não são restritas à H.264/MVC.
[0132] No exemplo da Figura 4, oito vistas (que têm IDs de vista “S0” a “S7”) são mostradas, e doze localizações temporais (“T0” a “T11”) são mostradas para cada vista. Ou seja, cada fileira na Figura 4 corresponde a uma vista, enquanto cada coluna indica uma localização temporal.
[0133] Embora a MVC tenha a chamada vista base, que é decodificável por decodificadores H.264/AVC e um par de vistas estéril possa ser suportado também pela MVC, a vantagem da MVC é que ela pode suportar um exemplo que utiliza mais de duas vistas como um entrada de vídeo 3D e decodifica este vídeo 3D representado pelas várias vistas. Um renderizador de um cliente que tem um decodificador MVC pode esperar um conteúdo de vídeo 3D com várias vistas.
[0134] As imagens na Figura 4 são indicadas na intercessão de cada fileira e cada coluna na Figura 4 utilizando-se um bloco sombreado que inclui uma letra, que designa se a imagem correspondente é intra-codificada (isto é, um quadro I) ou inter-codificada em uma direção (isto é, como um quadro P) ou em várias direções (isto é, como um quadro B). Em geral, as predições são indicadas por setas, onde a imagem indicada utiliza o ponto do objeto para referência de predição. Por exemplo, o quadro P da vista S2 na localização temporal T0 e predito a partir do quadro I da vista S0 na localização temporal T0.
[0135] Como ocorre com a codificação vídeo de vista única, as imagens de uma sequência de vídeo de codificação vídeo de várias vistas podem ser codificadas de maneira preditiva com relação a imagens em localizações temporais diferentes. Por exemplo, o quadro b da vista S0 na localização temporal T1 tem uma seta apontada para ele do quadro I da S0 na localização temporal T0, que indica que o quadro d é predito a partir do quadro I. Além disto, contudo, no contexto da codificação vídeo de várias vistas as imagens podem ser preditas inter-vista. Ou seja, um componente de vista pode utilizar os componentes de vista em outras vistas para referência. Na MVC, por exemplo, a predição inter-vista é realizada como se o componente de vista em outra vista fosse uma referência de inter- predição. As RF 2G inter-vistas potenciais são sinalizadas na extensão de MVC de Conjunto de Parâmetros de Sequência (SPS) e podem ser modificadas pelo processo de construção de listas de imagens de referência, o que permite o ordenamento flexível das RF 2G de inter-predição ou de predição de inter-vista.
[0136] Na MVC a predição inter-vista é permitida entre imagens na mesma unidade de acesso (isto é, com a mesma ocorrência de tempo). Uma unidade de acesso é geralmente uma unidade de dados que inclui todos os componentes de vista (todas as unidades NAL, por exemplo) para uma ocorrência temporal comum. Assim, na MVC, a predição inter-vista é permitida entre imagens na mesma unidade de acesso. Quando se codifica uma imagem em uma das vistas não base, a imagem pode ser adicionada a uma lista de imagens de referência, se ela estiver em uma vista diferente, mas com a mesma ocorrência de tempo (o mesmo valor de POC e, portanto, na mesma unidade de acesso, por exemplo). Uma imagem de referência de predição inter-vista pode ser colocada em qualquer posição de uma lista de imagens de referência, exatamente como qualquer imagem de referência de inter-predição.
[0137] A Figura 4 apresenta diversos exemplos de predição inter-vista. As imagens da vista S1, no exemplo da Figura 4, são mostradas como sendo preditas a partir de imagens em localizações temporais diferentes da vista S1, assim como preditas inter-vista a partir de imagens das vistas S0 e S2 nas mesmas localizações temporais. Por exemplo, o quadro b da vista S1 na localização temporal T1 é predito a partir de cada um dos quadros B da vista S1 nas localizações temporais T0 e T2, assim como os quadros b das vistas S0 e S2 na localização temporal T1.
[0138] No exemplo da Figura 4, “B” maiúsculo e “b” minúsculo pretendem indicar relações hierárquicas diferentes, e não metodologias de codificação diferentes. Em geral, as imagens “B” maiúsculo são relativamente mais elevadas na hierarquia de predição que as imagens “b” minúsculo. A Figura 4 mostra também variações na hierarquia de predição utilizando níveis diferentes de sombreamento, uma quantidade maior de imagens de sombreamento (isto é, relativamente mais escuras) são mais elevadas na hierarquia de predição do que as imagens que têm menos sombreamento (isto é, relativamente mais claras). Por exemplo, todos os quadros I na Figura 4 são mostrados com sombreamento total, enquanto os quadros P têm um sombreamento um tanto mais atenuado, e os quadros B (e os quadros b minúsculo) têm diversos níveis de sombreamento uns com relação aos outros, mas sempre mais claro que o sombreamento dos quadros P e dos quadros I.
[0139] Em geral, a hierarquia de predição está relacionada com índice de ordens de vista, no sentido de que as imagens relativamente mais elevadas na hierarquia de predição devem ser decodificadas antes da decodificação das imagens que são relativamente mais baixas na hierarquia, de modo que as imagens relativamente mais elevadas na hierarquia possam ser utilizadas com imagens de referência durante a decodificação das imagens relativamente mais baixas na hierarquia. Um índice de ordens de vista é um índice que indica a ordem de decodificação dos componentes de vista em uma unidade de acesso. Os índices de ordens de vista estão implicados na extensão de SPS MVC conforme especificada no anexo H do H.26/AVC (a emenda MVC). No SPC, para cada índico i, o view_id correspondente é sinalizado. Em alguns exemplos, a decodificação dos componentes de vista seguirá a ordem ascendente do índice de ordens de vista. Se todas as vistas forem apresentadas, então os índices de ordens de vista estão na ordem consecutiva de 0 a num views minus 1.
[0140] Desta maneira, as imagens utilizadas como imagens de referência podem ser decodificadas antes da decodificação da imagens que são codificadas com referência às imagens de referência. Um índice de ordens de vista é um índice que indica a ordem de decodificação de componentes de vista em uma unidade de acesso. Para cada índice de ordens de vista i, é sinalizado o view_id correspondente. A decodificação dos componentes de vista segue a ordem ascendente dos índices de ordens de vista. Se todas as vistas forem apresentadas, então o conjunto de índices de ordens de vista pode compreender um conjunto consecutivamente ordenado de zero a um menor que o número completo de vistas.
[0141] Para determinadas imagens a níveis iguais da hierarquia, a ordem de decodificação pode não importar com relação umas às outras. Por exemplo, o quadro I da vista S0 na localização temporal T0 é utilizado como uma imagem de referência para o quadro P da vista S2 na localização temporal T0, que é por sua vez utilizado como uma imagem de referência para o quadro P da vista S4 da localização temporal T0. Por conseguinte, o quadro I da vista S0 na localização temporal T0 deve ser decodificado antes do quadro P da vista S2 na localização temporal T0, que deve ser decodificado antes do quadro P da vista S4 na localização temporal T0. Entretanto, entre as vistas S1 e S3, a ordem de decodificação não importa, uma vez que as vistas S1 e S3 não recorrem uma à outra para predição, mas, em vez disso, são preditas apenas a partir de vistas que são mais elevadas na hierarquia de predição. Além do mais, a vista S1 pode ser decodificada antes da vista S4, desde que a vista S1 seja decodificada depois das vistas S0 e S2.
[0142] Desta maneira, pode ser utilizado um ordenamento hierárquico para descrever as vistas S0 a S7. Que anotação SA>SB signifique que a vista SA deve ser decodificada antes da vista SB utilizando-se esta notação, S0>S2>S4>S6>S7, no exemplo da Figura 4. Além disto, com relação ao exemplo da Figura 4, S0>S1, S2>S1, S2>S3, S4>S3, S4>S5 e S6>S5. Qualquer ordem de decodificação para as vistas que não viole estes requisitos é possível. Por conseguinte, são possíveis muitas ordens de decodificação diferentes.
[0143] De acordo com aspectos desta revelação, um codificador de vídeo (tal como o codificador de vídeo 20 ou o decodificador de vídeo 30) pode determinar um ponto de operação de saída que tem uma ou mais camadas-alvo de saída. Por exemplo, o codificador de vídeo 20 pode determinar uma ou mais camadas-alvo de saída a partir da estrutura de várias vistas mostrada na Figura 4 e codificar dados que indicam as camadas-alvo de saída em um fluxo de bits codificado. Da mesma maneira, o decodificador de vídeo 30 pode determinar um ponto de operação de saída que inclui as uma ou mais camadas-alvo de saída com base nos dados submetidos a parse e decodificados a partir de um fluxo de bits codificado.
[0144] Por exemplo, o codificador de vídeo 20 pode codificar uma extensão de VPS (tal como a mostrada e descrita com relação ao exemplo da Tabela 2 acima, por exemplo), um VPS (tal como o mostrado e descrito com relação ao exemplo da Tabela 3, por exemplo), uma mensagem SEI ou outra mensagem pode indicar um ou mais pontos operacionais de saída, com cada ponto de operação de saída tendo camadas-alvo de saída conexas. Conforme observado acima, quando se codificam vistas de profundidade, um ponto de operação de saída pode referir-se a um ponto operacional com uma lista de vistas de textura ou profundidade de saída alvo identificadas que pertencem às vistas incluídas no ponto operacional.
[0145] O decodificador de vídeo 30 para receber os dados e determinar vistas de saída alvo para exibição. Como exemplo, o decodificador de vídeo 30 para receber um ponto operacional que inclui as vistas S0, S2, S4 e S6. O decodificador de vídeo 30 pode determinar, com base nos elementos de sintaxe incluídos no fluxo de bits, que as vistas de saída alvo para um pode ser estéril incluem as vistas S0 e S4. O decodificador de vídeo 30 pode decodificar cada uma das S0, S2, S4 e S6, mas só pode transmitir as vistas S0 e S4.
[0146] A Figura 5 é um diagrama conceptual que mostra a codificação escalonável de vídeo. Embora a Figura 5 seja descrita com relação à H.264/AVC e SVC deve ficar entendido que camadas semelhantes podem ser codificadas utilizando-se outros esquemas de codificação vídeo de várias camadas, inclusive a HSVC. Assim, as RF 2G à SVC em seguida podem aplicar-se codificação escalonável de vídeo em geral e não são restritas à H.264/SVC.
[0147] Na SVC, as capacidades de escalonamentos podem ser habilitadas em três dimensões, que incluem, por exemplo, espacial, temporal e de qualidade (representada como uma taxa de bits ou relação sinal-ruído (SNR)). Em geral, pode ser normalmente obtida uma melhor representação adicionando-se a uma representação em qualquer dimensão. No exemplo da Figura 5, por exemplo, a camada 0 e codificada no Formato Intermediário Comum de um Quarto (QCIF) que tem uma taxa de quadros de 7,5 Hz e uma taxa de bits de 64 kilobytes por segundo (KBPS). Além disto, a camada 1 é codificada a um KCIF que tem uma taxa de quadros de 15 Hz e uma taxa de bits de 64 KBPS, camada 2 é codificada a um CIF que tem uma taxa de quadros de 15 Hz e uma taxa de bits de 256 KBPS, a camada 3 é codificada a um KCIF que tem uma taxa de quadros de 7,5 Hz e uma taxa de bits de 512 KBPS, e a camada 4 é codificada a um KCID que tem uma taxa de quadros de 30 Hz e uma taxa de bits de um Megabytes por segundo (MBPS). Deve ficar entendido, que o número, conteúdo e disposição específicos das camadas mostradas na Figura 5 são apresentados para fins de exemplificação apenas.
[0148] Seja como for, uma vez que um codificador de vídeo (tal como o codificador de vídeo 20) codificou conteúdo de maneira escalonável, um decodificador de vídeo (tal como o decodificador de vídeo 30) pode utilizar uma ferramenta de extração para adaptar o conteúdo entregue real de acordo com os requisitos do aplicativo, que podem depender, por exemplo, do cliente ou do canal de transmissão.
[0149] Na SVC as imagens que têm a camada espacial e de qualidade mais baixa são tipicamente compatíveis com o H.264/AVC. No exemplo da Figura 5, as imagens com a camada espacial e de qualidade mais baixa (as imagens na camada 0 e na camada 1, com resolução QCIF) podem ser compatíveis com o H.264/AVC. Entre elas, as imagens do nível temporal mais baixo da camada base temporal (camada 0). Esta camada base temporal (camada 0) pode ser aperfeiçoada com imagens de níveis temporais (camada 1).
[0150] Além da camada compatível com o H.264/AVC, várias camadas de aperfeiçoamento espaciais e/ou de qualidade podem ser adicionadas para obtenção de capacidades de escalonamento espaciais e/ou de qualidade. Cada camada de aperfeiçoamento ou de qualidade propriamente dita pode ser temporalmente escalonável, com a mesma capacidade de escalonamento temporal da camada compatível com H.264/AVC.
[0151] De acordo com aspectos desta revelação, um codificador de vídeo (tal como o codificador de vídeo 20 o decodificador de vídeo 30) pode determinar um ponto de operação de saída que tem uma ou mais camadas-alvo de saída. Por exemplo, o codificador de vídeo 20 pode determinar uma ou mais camadas-alvo de saída e codificar dados que indicam as camadas-alvo de saída em um fluxo de bits codificado. Da mesma maneira, o decodificador de vídeo 30 pode determinar um ponto de operação de saída que inclui uma ou mais camadas-alvo de saída com base em dados submetidos a parse e decodificados a partir de um fluxo de bits codificado.
[0152] Em alguns exemplos, as camadas-alvo de saída podem ser derivadas com base em um layer_id de um ponto operacional. Por exemplo, o decodificador de vídeo 30 pode codificar um ponto operacional que inclui a camada 0, a camada 1 e a camada 2. Neste exemplo, o decodificador de vídeo 30 pode determinar um ponto de operação de saída com base no layer_id mais elevado, como, por exemplo, a camada 2. Por conseguinte, o decodificador de vídeo 30 pode transmitir imagens da camada 2 como imagens de saída alvo.
[0153] A Figura 6 é um fluxograma que mostra um processo exemplar para codificar um ponto de operação de saída, de acordo com aspecto desta revelação. Embora descrito com relação ao codificador de vídeo 20 (Figuras 1 e 2), deve ficar entendido que outros dispositivos podem ser configurados para executar um método semelhante ao da Figura 6.
[0154] Neste exemplo, o codificador de vídeo 20 pode codificar uma pluralidade de camadas de dados de vídeo para um conjunto de camadas (100). Por exemplo, o codificador de vídeo 20 pode codificar uma série de vistas de dados de vídeo para um fluxo de bits multi-vista (que inclui, por exemplo, um fluxo de bits que se conforma ao padrão MV-HEVC ou ao padrão 3D-HEVC. Neste exemplo, um conjunto de camadas pode incluir uma série de vistas de dados de vídeo necessárias para decodificar o fluxo de bits, assim como vistas de dados de vídeo destinadas à saída, como, por exemplo, exibição por um dispositivo de cliente que decodifica o fluxo de bits. Em outro exemplo, o codificador de vídeo 20 pode codificar uma pluralidade de camadas escalonáveis de dados de vídeo para um fluxo de bits escalonável (que inclui, por exemplo, um fluxo de bits que se conforma ao padrão HSVC). Neste exemplo, o conjunto de camadas pode incluir uma pluralidade de camadas de dados de vídeo necessárias apenas para decodificar o fluxo de bits (“camadas para não serem transmitidas”, por exemplo), assim como camadas de dados de vídeo destinadas à saída.
[0155] O codificador de vídeo 20 pode determinar quais da pluralidade de camadas são camadas-alvo de saída (102). As camadas-alvo de saída podem incluir as camadas destinadas à saída, que proporcionam um representação visualizável dos dados de vídeo quando exibidos. As camadas-alvo de saída podem ser selecionadas com base na qualidade desejada de uma representação, cãs capacidades do dispositivos de codificação de vídeo, em considerações de largura de banda ou em outros fatores.
[0156] O codificador de vídeo 20 pode codificar dados que indicam um ponto de operação de saída que inclui as camadas-alvo de saída determinadas (104). Por exemplo, o codificador de vídeo 20 pode codificar um ou mais elementos de sintaxe que indicam as camadas-alvo de saída e incluir tais elementos de sintaxe em um conjunto de parâmetros. Conforme descrito acima, com relação à Tabela 2 e à Tabela 3, o codificador de vídeo 20 pode codificar os dados que indicam o ponto de operação de saída em uma extensão de VPS ou VPS. Em outros exemplos, o codificador de vídeo 20 pode codificar os dados que indicam o ponto de operação de saída em um SPC ou em outra mensagem. O codificador de vídeo 20 pode transmitir então os dados codificados por entropia (para armazenamento ou transmissão para outro dispositivo, por exemplo)(106).
[0157] A Figura 7 é um fluxograma que mostra um processo exemplar para decodificar um ponto de operação de saída, de acordo com aspectos desta revelação. Embora descrito com relação ao decodificador de vídeo 30 (Figuras 1 e 3), deve ficar entendido que outros dispositivos podem ser configurados para executar um método semelhante ao da Figura 7.
[0158] Inicialmente, o decodificador de vídeo 30 decodifica uma pluralidade de camadas de dados de vídeo para um conjunto de camadas (120). Por exemplo, o decodificador de vídeo 30 pode decodificar uma série de vistas de dados de vídeo para um fluxo de bits multi-vista que inclui, por exemplo, um fluxo de bits que se conforma ao padrão MV-HEVC ou ao padrão 3D-HEVC. Neste exemplo, o conjunto de camadas pode incluir uma série de vistas de dados de vídeo necessárias para decodificar o fluxo de bits, assim como vistas de dados de vídeo destinadas à saída. Em outro exemplo, o decodificador de vídeo 30 pode decodificar uma pluralidade de camadas escalonáveis de dados de vídeo de um fluxo de bits escalonável (que inclui, por exemplo, um fluxo de bits que se conforma ao padrão HSVC). Neste exemplo, o conjunto de camadas pode incluir uma pluralidade de camadas de dados de vídeo necessárias para decodificar o fluxo de bits, assim como camadas de dados de vídeo destinadas à saída.
[0159] O decodificador de vídeo 30 pode decodificar também dados que indicam um ponto de operação de saída que inclui uma ou mais camadas-alvo de saída (122). Conforme observado acima, as camadas-alvo de saída podem incluir as camadas destinadas à saída, que proporcionam uma representação visualizável dos dados de vídeo quando exibidos. Em alguns exemplos, as camadas-alvo de saída podem ser uma sub-conjunto da pluralidade de camadas que foram decodificadas.
[0160] Os dados que indicam as camadas-alvo de saída podem incluir um ou mais elementos de sintaxe que indicam as camadas-alvo de saída. Estes elementos de sintaxe podem ser incluídos em uma extensão de VPS, em um VPS, em um SPC ou em outro tipo de mensagem, conforme descrito acima.
[0161] O decodificar 30 pode extrair as camadas-alvo de saída do fluxo de bits com base nos dados (124). Por exemplo, o decodificador de vídeo 30 pode extrair um ou mais sub-fluxo de bits que contêm as camadas- alvo de saída do fluxo de bits. O decodificador de vídeo 30 pode decodificar também o sub-fluxo de bits ou sub-fluxos de bits. O decodificador de vídeo 30 pode transmitir então as camadas-alvo de saída para exibição (para exibição pelo dispositivo de exibição 32 (Figura 1), por exemplo)(126).
[0162] Por conseguinte, o decodificador de vídeo 30 obtém uma pluralidade de camadas de dados de vídeo que inclui uma pluralidade de conjuntos de camadas, onde cada conjunto de camadas contém uma ou mais camadas de dados de vídeo da pluralidade de camadas e determina com base em um ou mais elementos de sintaxe do fluxo de bits, um ou mais pontos operacionais de saída, onde cada ponto de operação de saída é associado a um conjunto de camadas da pluralidade de conjuntos de camadas e a uma ou mais camadas-alvo de saída da pluralidade de camadas.
[0163] Deve se reconhecer que, dependendo do exemplo, determinados atos ou eventos de qualquer uma das técnicas aqui descritas podem ser executados em uma sequência diferente, podem ser adicionados, fundidos ou completamente deixados de fora (nem todos os atos ou eventos descritos são necessários para prática das técnicas, por exemplo). Além do mais, em determinados exemplos, os atos ou eventos podem ser executados concomitantemente, como, por exemplo, através de processamento de vários fluxos de execução, processamento com interrupções ou vários processadores e não sequencialmente.
[0164] Determinados aspectos desta revelação foram descritos com relação ao padrão HEVC em desenvolvimento com fins de exemplificação. Entretanto, as técnicas descritas nesta revelação podem ser úteis em outros processos de codificação vídeo, inclusive outros processos de vídeo padrão ou patenteados ainda não desenvolvidos.
[0165] Um codificador de vídeo, conforme descrito nesta revelação pode referir-se a um codificador de vídeo ou a um decodificador de vídeo. Da mesma maneira, uma unidade de codificador de vídeo pode referir-se a um codificador de vídeo ou a um decodificador de vídeo. Da mesma maneira, a codificação vídeo pode referir-se à codificação vídeo ou decodificação de vídeo, conforme aplicável.
[0166] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação deles. Se implementadas em software, as funções podem ser armazenadas em ou transmitidas através de uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento baseada em hardware. Os meios passíveis de leitura por computador podem incluir meios de armazenamento passíveis de leitura por computador, que correspondem a um meio tangível tal como meios de armazenamento de dados ou meios de comunicação que incluem qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, de acordo com um protocolo de comunicação, por exemplo. Desta maneira, os meios passíveis de leitura por computador podem corresponder geralmente a (1) meios de armazenamento passíveis de leitura por computador que são não transitórios ou (2) um meio de comunicação tal como um sinal ou onda portadora. Os meios de armazenamento podem ser quaisquer meios disponíveis que possam ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estrutura de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio legível por computador.
[0167] A título de exemplo, e não de limitação, tais meios passíveis de leitura por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros dispositivos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado sob a forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disto, qualquer conexão é apropriadamente denominada de meio legível por computador. Por exemplo, se as instruções forem transmitidas de um site da Web, servidor ou outra fonte remota utilizando-se um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio tais como infravermelho, rádio e microondas, então o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou tecnologias sem fio tais como infravermelho, rádio e microondas são incluídos na definição de meio. Deve ficar entendido, contudo, que os meios de armazenamento passíveis de leitura por computador e os meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas são em vez disso direcionados a meios de armazenamento tangíveis não transitórios. O termo disco (disk) e disco (disc), conforme aqui utilizado, inclui disco compacto (CD), disco de laser, disco óptico, disco versátil digital (DVD), disco flexível e disco Blu-ray, em que usualmente discos (disks) reproduzem dados magneticamente, enquanto discos (discs) reproduzem dados opticamente com lasers. Combinações deles devem ser também incluídas dentro do alcance dos meios passíveis de leitura por computador.
[0168] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSP), microprocessadores de propósito geral, circuitos integrados específicos de aplicativo (ASICs), arranjos lógicos programáveis no campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo “processador”, conforme aqui utilizado, pode referir-se a qualquer uma das estruturas precedentes ou qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disto, sob alguns aspectos, a funcionalidade aqui descrita pode ser apresentada dentro de hardware dedicado e/ou em módulos de software configurados para codificação e decodificação ou incorporada a um CODEC combinado. Além disto, as técnicas podem ser completamente implementadas em um ou mais circuitos ou elemento lógicos.
[0169] As técnicas desta revelação podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, que incluem um dispositivo telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (isto é, um conjunto de chips). Diversos componentes, módulos ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de dispositivos configurados para executar as técnicas reveladas, mas não exigem necessariamente a execução por unidades de hardware diferente. Em vez disso, conforme descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware de CODEC ou providas por uma coleção de unidades de hardware inter-operantes, que incluem um ou mais processadores, conforme descrito acima em conjunto com software e/ou firmware adequado.
[0170] Foram descritos diversos exemplos. Estes e outros exemplos estão dentro do alcance das reivindicações seguintes.

Claims (14)

1. Método para decodificar dados de vídeo, caracterizado pelo fato de compreender: obter, a partir de um fluxo de bits de multi- camadas contendo dados de vídeo de multicamadas, uma pluralidade de camadas de dados de vídeo incluindo uma pluralidade de conjuntos de camadas, em que cada conjunto de camadas contém uma ou mais camadas dentre a pluralidade de camadas; para cada conjunto de camadas da pluralidade de conjuntos de camadas, decodificar, a partir do fluxo de bits de multi-camadas, um sinalizador incluído em camada para cada camada da pluralidade de camadas, em que o sinalizador incluído em camada identifica se a camada respectiva está ou não incluída no conjunto de camadas respectivo; decodificar, a partir do fluxo de bits de multi- camadas, um primeiro elemento de sintaxe que identifica um número máximo de conjuntos de camadas de saída presente no fluxo de bits de multi-camadas, em que um conjunto de camadas de saída identifica uma ou mais camadas de saída alvo, e uma camada de saída alvo é destinada a ser enviada para exibição; e para cada conjunto de camadas de saída do número máximo de conjuntos de camadas de saída, decodificar, a partir do fluxo de bits de multi-camadas, um segundo elemento de sintaxe que identifica um conjunto de camadas com base no qual o conjunto de camadas de saída respectivo é formado, e para cada camada incluída no conjunto de camadas identificado, decodificar, a partir do fluxo de bits de multi-camadas, um sinalizador de camada de saída que identifica se a camada respectiva é ou não uma camada de saída alvo do conjunto de camadas de saída respectivo, para assim determinar as camadas de saída alvo pertencentes a cada conjunto de camada de saída. .
2. Método para codificar dados de vídeo, caracterizado pelo fato de compreender: codificar, como um fluxo de bits de multi-camadas contendo dados de vídeo de multicamadas, uma pluralidade de camadas de dados de vídeo incluindo uma pluralidade de conjuntos de camadas, em que cada conjunto de camadas contém uma ou mais camadas de dados de vídeo dentre a pluralidade de camadas; para cada conjunto de camadas da pluralidade de conjuntos de camadas, codificar, a partir do fluxo de bits de multi-camadas, um sinalizador incluído em camada para cada camada da pluralidade de camadas, em que o sinalizador incluído em camada identifica se a camada respectiva está ou não incluída no conjunto de camada respectivo; codificar, no fluxo de bits de multi-camadas, um primeiro elemento de sintaxe que identifica um número máximo de conjuntos de camadas de saída presentes no fluxo de bits de multi-camadas, em que um conjunto de camadas de saída identifica uma ou mais camadas alvo de saída, e uma camada alvo de saída para é destinada ser enviada para exibição; e para cada conjunto de camadas de saída do número máximo de conjuntos de camadas de saída, codificar, no fluxo de bits de multi-camadas, um segundo elemento de sintaxe que identifica um conjunto de camadas com base no qual o conjunto de camadas de saída respectivo é formado, e para cada camada incluída no conjunto de camadas identificado, codificar um sinalizador de camada de saída que identifica se a camada respectiva é ou não uma camada de saída alvo do conjunto de camadas de saída respectivo. .
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que, para cada sinalizador de camada de saída, quando o sinalizador de camada de saída é igual a 1, a camada respectiva é uma camada de saída alvo do conjunto de camadas respectivo, ou, quando o sinalizador de camada de saída é igual a 0, a camada respectiva não é uma camada de saída alvo do conjunto de camadas respectivo.
4. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o fluxo de bits de multi- camadas compreende um fluxo de bits de multi-vistas, tal que cada camada compreende uma vista de dados de vídeo e a uma ou mais camadas alvo de saída compreendem uma ou mais vistas alvo de saída, ou em que o fluxo de bits de multi- camadas compreende uma ou mais camadas de profundidade, tal que determinar as camadas de saída alvo pertencentes a cada conjunto de camadas alvo compreende ainda determinar uma ou mais camadas de profundidade de saída alvo compreendendo dados de profundidade.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o fluxo de bits multi- camadas compreende um fluxo de bits que tem uma pluralidade de camadas escalonáveis de dados de vídeo, de modo que determinar as camadas de saída alvo pertencentes a cada conjunto de camadas de saída compreende determinar uma ou mais camadas de saída alvo escalonáveis.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que determinar o ponto operacional de saída compreende determinar a camada alvo de saída escalonável que tem o layer_id numericamente mais elevado.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: decodificar um conjunto de camadas que devem ser decodificadas, mas não emitidas, que inclui uma ou mais camadas que não são uma das uma ou mais camadas alvo de saída, mas pertencem ao conjunto de camadas; marcar uma primeira imagem decodificada incluída nas uma ou mais camadas alvo de saída em um armazenador de imagens decodificadas como uma imagem que é para ser utilizada para envio; e marcar uma segunda imagem decodificada incluída no conjunto de camadas que são decodificadas, mas não enviadas no armazenador de imagens decodificadas como uma imagem que não deve ser utilizada para envio, de modo que a imagem que não é para ser utilizada para envio seja removida do armazenador de imagens decodificadas antes da imagem que é para ser utilizada para envio.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de compreender ainda: determinar se a imagem marcada como para não ser utilizada para envio é utilizada para uma dentre inter- predição e predição inter-camada; e remover a imagem marcada como para não ser utilizada para envio do armazenador de imagens decodificadas quando a imagem que não é para ser utilizada para envio não é utilizada para uma dentre a inter-predição e a predição inter-camada.
9. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o um ou mais elementos de sintaxe são incluídos em um de um conjunto de parâmetros de vídeo (VPS) e uma extensão de VPS do fluxo de bits codificado, ou em que o um ou mais elementos de sintaxe são incluídos em uma mensagem de informações de aperfeiçoamento suplementar (SEI) do fluxo de bits codificado.
10. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o fluxo de bits de multi- camadas compreende um fluxo de bits de multi-vistas, tal que cada camada compreende uma vista de dados de vídeo e a uma ou mais camadas alvo de saída compreendem uma ou mais vistas alvo de saída, ou em que o fluxo de bits de multi- camadas compreende uma ou mais camadas de profundidade, tal que os um ou mais conjuntos de camadas alvo compreendem uma ou mais camadas de profundidade de saída alvo que compreendem dados de profundidade.
11. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o fluxo de bits multi- camadas compreende um fluxo de bits que tem uma pluralidade de camadas escalonáveis de dados de vídeo, de modo que determinar o conjunto de camada de saída compreende determinar uma ou mais camadas alvo de saída escalonáveis, em que o conjunto de camada de saída compreende preferencialmente a camada alvo de saída escalonável que tem o layer_id numericamente mais elevado.
12. Dispositivo para decodificar dados de vídeo, caracterizado pelo fato de compreender: meios para obter, a partir de um fluxo de bits de multi-camadas contendo dados de vídeo de multicamadas, uma pluralidade de camadas de dados de vídeo incluindo uma pluralidade de conjuntos de camadas, em que cada conjunto de camada contém uma ou mais camadas dentre a pluralidade de camadas; meios para decodificar, a partir do fluxo de bits de multi-camadas, para cada conjunto de camadas da pluralidade de conjuntos de camadas, um sinalizador incluído em camada para cada camada da pluralidade de camadas, em que o sinalizador incluído em camada identifica se a camada respectiva está ou não incluída no conjunto de camada respectivo; meios para decodificar, a partir do fluxo de bits de multi-camadas, um primeiro elemento de sintaxe que identifica um número máximo de conjuntos de camadas de saída presentes no fluxo de bits de multi-camadas, em que um um conjunto de camadas de saída identifica uma ou mais camadas alvo de saída, e uma camada alvo de saída é uma camada que é pretendida para ser enviada para exibição; e meios para decodificar, a partir do fluxo de bits de multi-camadas, para cada conjunto de camadas de saída do número máximo de conjuntos de camadas de saída, um segundo elemento de sintaxe que identifica um conjunto de camada com base no qual o respectivo conjunto de camada de saída é formado, e para cada camada incluída no conjunto de camadas identificado, decodificar, a partir do fluxo de bits de multi-camadas, um sinalizador de camada de saída que identifica se a camada respectiva é ou não uma camada de saída alvo do conjunto de camadas de saída respectivo, para assim determinar as camadas de saída alvo pertencentes a cada conjunto de camada de saída.
13. Dispositivo para codificar dados de vídeo, caracterizado pelo fato de compreender: meios para codificar, como um fluxo de bits de multi-camadas contendo dados de vídeo de multicamadas, uma pluralidade de camadas de dados de vídeo incluindo uma pluralidade de conjuntos de camadas, em que cada conjunto de camadas contém uma ou mais camadas dentre a pluralidade de camadas; meios para codificar, a partir do fluxo de bits de multi-camadas, para cada conjunto de camadas da pluralidade de conjuntos de camadas, um sinalizador incluído em camada para cada camada da pluralidade de camadas, em que o sinalizador incluído em camada identifica se a camada respectiva está ou não incluída no conjunto de camada respectivo; meios para codificar, no fluxo de bits de multi- camadas, um primeiro elemento de sintaxe que identifica um número máximo de conjuntos de camadas de saída presentes no fluxo de bits de multi-camadas, em que um conjunto de camada de saída identifica uma ou mais camadas alvo de saída, e uma camada alvo de saída é destinada a ser enviada para exibição; e meios para codificar, no fluxo de bits de multi- camadas, para cada conjunto de camada de saída do número máximo de conjuntos de camadas de saída, um segundo elemento de sintaxe que identifica um conjunto de camadas com base no qual o respectivo conjunto de camadas de saída é formado, e para cada camada incluída no conjunto de camadas identificado, codificar um sinalizador de camada de saída que identifica se a camada respectiva é ou não uma camada de saída alvo do conjunto de camadas de saída respectivo.
14. Memória legível por computador, caracterizada pelo fato de possuir instruções armazenadas que, quando executadas, fazem com que um processador de um dispositivo para codificar dados de vídeo execute o método como definido em qualquer uma das reivindicações 1 a 11.
BR112015008574-1A 2012-10-30 2013-10-30 Métodos para decodificar e codificar dados de vídeo, dispositivos para decodificar e codificar dados de vídeo, e, memória legível por computador BR112015008574B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261720364P 2012-10-30 2012-10-30
US61/720,364 2012-10-30
US14/066,209 2013-10-29
US14/066,209 US9936196B2 (en) 2012-10-30 2013-10-29 Target output layers in video coding
PCT/US2013/067537 WO2014070911A1 (en) 2012-10-30 2013-10-30 Target output layers in video coding

Publications (2)

Publication Number Publication Date
BR112015008574A2 BR112015008574A2 (pt) 2017-07-04
BR112015008574B1 true BR112015008574B1 (pt) 2022-03-15

Family

ID=50547169

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015008574-1A BR112015008574B1 (pt) 2012-10-30 2013-10-30 Métodos para decodificar e codificar dados de vídeo, dispositivos para decodificar e codificar dados de vídeo, e, memória legível por computador

Country Status (14)

Country Link
US (1) US9936196B2 (pt)
EP (1) EP2915334B1 (pt)
JP (1) JP6377623B2 (pt)
KR (1) KR101909331B1 (pt)
CN (1) CN104782131B (pt)
AP (1) AP2015008435A0 (pt)
BR (1) BR112015008574B1 (pt)
EC (1) ECSP15021478A (pt)
ES (1) ES2730876T3 (pt)
HU (1) HUE044973T2 (pt)
MA (1) MA38045B1 (pt)
SA (1) SA515360352B1 (pt)
TW (1) TWI532365B (pt)
WO (1) WO2014070911A1 (pt)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9661331B2 (en) 2013-03-18 2017-05-23 Vantrix Corporation Method and apparatus for signal encoding realizing optimal fidelity
US9338450B2 (en) * 2013-03-18 2016-05-10 Ecole De Technologie Superieure Method and apparatus for signal encoding producing encoded signals of high fidelity at minimal sizes
US10609405B2 (en) 2013-03-18 2020-03-31 Ecole De Technologie Superieure Optimal signal encoding based on experimental data
WO2015053597A1 (ko) * 2013-10-12 2015-04-16 삼성전자 주식회사 멀티 레이어 비디오 부호화 방법 및 장치, 멀티 레이어 비디오 복호화 방법 및 장치
US9525860B2 (en) * 2013-12-16 2016-12-20 Xerox Corporation Enhancing a spatio-temporal resolution of a depth data stream
KR102073030B1 (ko) * 2014-03-14 2020-02-04 후아웨이 테크놀러지 컴퍼니 리미티드 이미지 디코딩 장치
US10455242B2 (en) * 2015-03-04 2019-10-22 Qualcomm Incorporated Signaling output indications in codec-hybrid multi-layer video coding
KR102476207B1 (ko) * 2015-11-12 2022-12-08 삼성전자주식회사 반도체 장치의 동작 방법 및 반도체 시스템
US10499066B2 (en) * 2017-04-14 2019-12-03 Nokia Technologies Oy Method and apparatus for improving efficiency of content delivery based on consumption data relative to spatial data
US11109069B2 (en) * 2019-09-20 2021-08-31 Tencent America LLC Signaling of scalability parameters in video bitstream
US11265567B2 (en) * 2019-10-08 2022-03-01 Tencent America LLC Method for output layer set signaling in scalable video stream
WO2021137598A1 (ko) * 2019-12-30 2021-07-08 엘지전자 주식회사 Dpb 관리 프로세스를 포함하는 영상 디코딩 방법 및 그 장치
US11228776B1 (en) 2020-03-27 2022-01-18 Tencent America LLC Method for output layer set mode in multilayered video stream
WO2022065875A1 (ko) * 2020-09-22 2022-03-31 엘지전자 주식회사 동작점 정보와 출력 계층 세트 정보를 시그널링하는 미디어 파일 생성/수신 방법, 장치 및 미디어 파일을 저장한 컴퓨터 판독 가능한 기록 매체

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030215011A1 (en) * 2002-05-17 2003-11-20 General Instrument Corporation Method and apparatus for transcoding compressed video bitstreams
RU2377736C2 (ru) 2005-04-13 2009-12-27 Нокиа Корпорейшн Кодирование, хранение и передача информации о масштабируемости
US20070086521A1 (en) 2005-10-11 2007-04-19 Nokia Corporation Efficient decoded picture buffer management for scalable video coding
CN101578873B (zh) 2007-01-04 2012-07-25 汤姆森特许公司 一种解码多视图视频内容的装置和方法
JP2009296078A (ja) 2008-06-03 2009-12-17 Victor Co Of Japan Ltd 符号化データ再生装置、符号化データ再生方法、および符号化データ再生プログラム
EP2521363B1 (en) 2009-02-19 2014-05-14 Panasonic Corporation Playback device
US20100250763A1 (en) 2009-03-31 2010-09-30 Nokia Corporation Method and Apparatus for Transmitting Information on Operation Points
CN102388613B (zh) * 2009-04-09 2014-04-30 瑞典爱立信有限公司 媒体容器文件管理
US20120050475A1 (en) * 2009-05-01 2012-03-01 Dong Tian Reference picture lists for 3dv
US8948241B2 (en) * 2009-08-07 2015-02-03 Qualcomm Incorporated Signaling characteristics of an MVC operation point
US9131033B2 (en) 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
RU2517299C2 (ru) 2010-08-09 2014-05-27 Панасоник Корпорэйшн Способ кодирования изображений, способ декодирования изображений, устройство кодирования изображений и устройство декодирования изображений
WO2013009441A2 (en) 2011-07-12 2013-01-17 Vidyo, Inc. Scalable video coding using multiple coding technologies
US9819949B2 (en) * 2011-12-16 2017-11-14 Microsoft Technology Licensing, Llc Hardware-accelerated decoding of scalable video bitstreams
US9451252B2 (en) * 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
US9602827B2 (en) 2012-07-02 2017-03-21 Qualcomm Incorporated Video parameter set including an offset syntax element
US9432664B2 (en) * 2012-09-28 2016-08-30 Qualcomm Incorporated Signaling layer identifiers for operation points in video coding

Also Published As

Publication number Publication date
WO2014070911A1 (en) 2014-05-08
MA38045B1 (fr) 2016-12-30
KR101909331B1 (ko) 2018-10-17
HUE044973T2 (hu) 2019-12-30
JP6377623B2 (ja) 2018-08-22
US9936196B2 (en) 2018-04-03
BR112015008574A2 (pt) 2017-07-04
ECSP15021478A (es) 2015-12-31
AP2015008435A0 (en) 2015-05-31
SA515360352B1 (ar) 2018-04-22
TWI532365B (zh) 2016-05-01
ES2730876T3 (es) 2019-11-13
TW201433146A (zh) 2014-08-16
KR20150079732A (ko) 2015-07-08
US20140119437A1 (en) 2014-05-01
CN104782131A (zh) 2015-07-15
MA38045A1 (fr) 2016-06-30
CN104782131B (zh) 2019-02-22
JP2015537446A (ja) 2015-12-24
EP2915334A1 (en) 2015-09-09
EP2915334B1 (en) 2019-03-13

Similar Documents

Publication Publication Date Title
JP6400660B2 (ja) Hevcおよび拡張のためのビデオパラメータセット
BR112015008574B1 (pt) Métodos para decodificar e codificar dados de vídeo, dispositivos para decodificar e codificar dados de vídeo, e, memória legível por computador
ES2854274T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
ES2780688T3 (es) Señalización para operaciones DPB basadas en un búfer de imágenes subdescodificadas (sub-DPB) en la codificación de vídeo
ES2748561T3 (es) Unidades de acceso IRAP y conmutación y empalme de flujos de bits
DK2786574T3 (en) ENABLING THE PARAMETER SET FOR MULTI-EXPOSURE VIDEO CODING (MVC) COMPATIBLE THREE-DIMENSIONAL VIDEO CODING (3DVC)
BR112015006440B1 (pt) Indicação e ativação de conjuntos de parâmetros para codificação de vídeo
ES2780686T3 (es) Tipo de dependencia entre vistas en MV-HEVC
BR112015032977B1 (pt) Equipamento e método para codificar informações de vídeo, equipamento e método para decodificar informações de vídeo, e memória legível por computador
BR112016000866B1 (pt) Processamento de compensação de iluminação para codificação de vídeo
BR112014017159B1 (pt) Conjuntos de parâmetros de codificação e cabeçalhos de unidade nal para codificação de vídeo
BR112015006856B1 (pt) Método e aparelho para decodificar dados de vídeo, método e aparelho para codificar dados de vídeo e memória legível por computador
BR112015025639B1 (pt) Alinhamento poc de camada cruzada para fluxos de bits de várias camadas que podem incluir imagens irap não alinhadas
BR112016008225B1 (pt) Aparelhos e métodos para codificação e decodificação de informações de vídeo e memória legível por computador
BR112014002479B1 (pt) Conjuntos de parâmetros de codificação para várias dimensões em codificação de vídeo
BR112016008224B1 (pt) Escalabilidade de gama de cores com base em tabela de pesquisa tridimensional em codificação de vídeo de múltiplas camadas
BR112014001799B1 (pt) Codificação de vídeo de múltiplas visualizações
BR112015006839B1 (pt) Sinalizando identificadores de camada para pontos de operação em codificação de vídeo
BR112016029611B1 (pt) Aparelho e método para codificar informações de vídeo em codificação de vídeo de alta eficiência, e, memória legível por computador
BR112016021475B1 (pt) Dispositivo e método para codificação escalável de informação de vídeo
BR112016015552B1 (pt) Métodos para codificação de um conjunto de imagens de referência (rps) entre camadas e codificação de unidades da camada de acesso à rede (nal) do fim do fluxo de bits
BR112016011818B1 (pt) Projeto de valor de poc para codificação de vídeo de multicamada
BR112016029306B1 (pt) Método e dispositivo para decodificar, bem como, método e dispositivo para codificar dados de vídeo de acordo com um padrão de codificação de vídeo de alta eficiência (hevc) uma extensão multivista do mesmo ou uma extensão escalonável do mesmo, e, memória legível por computador
BR112016021476B1 (pt) Método e dispositivo para codificar dados de vídeo e memória legível por computador
BR112016015560B1 (pt) Método e aparelho para codificar informações de vídeo de um fluxo de bits de múltiplas camadas e memória legível por computador

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Ipc: H04N 7/00 (2011.01)

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: H04N 7/00

Ipc: H04N 19/30 (2014.01), H04N 19/597 (2014.01), H04N

B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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