BR112014001860B1 - Método e aparelho para decodificar e codificar dados de vídeo, e memória legível por computador - Google Patents

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

Info

Publication number
BR112014001860B1
BR112014001860B1 BR112014001860-0A BR112014001860A BR112014001860B1 BR 112014001860 B1 BR112014001860 B1 BR 112014001860B1 BR 112014001860 A BR112014001860 A BR 112014001860A BR 112014001860 B1 BR112014001860 B1 BR 112014001860B1
Authority
BR
Brazil
Prior art keywords
view
visualization
display
component
components
Prior art date
Application number
BR112014001860-0A
Other languages
English (en)
Other versions
BR112014001860A2 (pt
Inventor
Marta Karczewicz
Ying Chen
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112014001860A2 publication Critical patent/BR112014001860A2/pt
Publication of BR112014001860B1 publication Critical patent/BR112014001860B1/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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • 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

CODIFICAÇÃO DE VÍDEO DE MÚLTIPLAS VISUALIZAÇÕES. Aspectos dessa descrição se referem a um método de codificação de dados de vídeo. Em um exemplo, o método inclui a obtenção, de uma sequência de bits codificada e para qualquer componente de visualização de uma primeira visualização, informação de visualização de referência indicando uma ou mais visualizações de referência para prever os componentes de visualização da primeira visualização. O método também inclui, para decodificação de um primeiro componente de visualização em uma unidade de acesso e na primeira visualização, um ou mais candidatos de referência em uma lista de imagens de referência, onde um ou mais candidatos de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, onde o número de candidatos de referência é igual ao número de visualizações de referência. O método também inclui a decodificação do primeiro componente de visualização com base em um ou mais candidatos de referência na lista de imagens de referência.

Description

[0001] Essa descrição reivindica prioridade do pedido provisório U.S. No. 61/512.771, depositado em 28 de julho de 2011, o conteúdo do qual é incorporado aqui por referência em sua totalidade.
Campo da Invenção
[0002] Essa descrição se refere à codificação de vídeo.
Descrição da Técnica Anterior
[0003] As capacidades de vídeo digital podem ser incorporadas em uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, computadores tablet, leitoras de e-book, câmeras digitais, dispositivos de gravação digital, aparelhos de reprodução de mídia digital, dispositivos de jogos de vídeo, consoles de jogos de vídeo, radiotelefones via satélite e celulares, os chamados "smartphones", dispositivos de teleconferência de vídeo, dispositivos de sequenciamento de vídeo, e similares. Os dispositivos de vídeo digital implementam as técnicas de compressão de vídeo, tal como as descritas nos padrões definidos por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informação de vídeo digital mais eficientemente pela implementação de tais técnicas de compressão de vídeo.
[0004] As técnicas de compressão de vídeo realizam a predição espacial (intraimagem) e/ou a predição temporal (interimagem) para reduzir ou remover a redundância inerente às sequências de vídeo. Para codificação de vídeo com base em bloco, uma fatia de vídeo (isso é, uma imagem ou uma parte de uma imagem) pode ser dividida em blocos de vídeo, que também podem ser referidos como blocos de árvore, unidades de codificação (CU) e/ou nós de codificação. Os blocos de vídeo em uma fatia intracodificada (I) de uma imagem são codificados utilizando-se predição espacial com relação às amostras de referência nos blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia intercodificada (P ou B) de uma imagem podem utilizar predição espacial com relação às amostras de referência nos blocos vizinhos na mesma predição de imagem ou tempo com relação às amostras de referência em outras imagens de referência.
[0005] A predição espacial ou temporal resulta em um bloco de predição para um bloco a ser codificado. Os dados residuais representam diferentes de pixel entre o bloco original a ser codificado e o bloco de predição. Um bloco intercodificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência formando o bloco de predição, e os dados residuais indicando a diferença entre o bloco codificado e o bloco de predição. Um bloco intracodificado é codificado de acordo com um modo de intracodificação e os dados residuais. Para compressão adicional, os dados residuais podem ser transformados de domínio de pixel em um domínio de transformação, resultando em coeficientes de transformação residuais, que então podem ser quantizados. Os coeficientes de transformação quantizados, inicialmente dispostos em um conjunto bidimensional, podem ser digitalizados a fim de produzir um vetor unidimensional dos coeficientes de transformação, uma codificação por entropia pode ser aplicada para alcançar ainda mais compressão.
Sumário da Invenção
[0006] Em geral, essa descrição descreve técnicas para codificação de dados de vídeo. Por exemplo, essa descrição descreve as técnicas para a realização de Codificação de Vídeo de Múltiplas Visualizações (MVC) e para uma extensão MVC para o padrão de codificação de vídeo HEVC atualmente em desenvolvimento. Isso é, MVC é uma técnica de codificação de vídeo para encapsular múltiplas visualizações dos dados de vídeo. Cada visualização pode corresponder a uma perspectiva diferente, ou ângulo, no qual os dados de vídeo correspondentes de uma cena comum foram capturados. As técnicas dessa descrição geralmente se referem à formação de unidades de camada de abstração de rede (NAL), conjuntos de parâmetros MVC e similares.
[0007] Em um exemplo, os aspectos dessa descrição são direcionados a um método de decodificação de dados de vídeo que inclui a obtenção, a partir de uma sequência de bits codificada, de uma ou mais unidades de camada de abstração de rede (NAL) para cada componente de visualização de uma pluralidade de componentes de visualização dos dados de vídeo codificados, onde cada componente de visualização da pluralidade de componentes de visualização corresponde a uma localização temporal comum, e onde as uma ou mais unidades de NAL encapsulam pelo menos uma parte dos dados de vídeo codificados para os componentes de visualização respectivos e incluem a informação indicativa de uma ordem de decodificação dos componentes de visualização respectivos; obtendo informação, a partir da sequência de bits codificada e separada das unidades NAL, indicando as relações entre identificadores de visualização para as visualizações e a ordem de decodificação dos componentes de visualização; e decodificando os dados de vídeo codificados dentre a pluralidade de componentes de vídeo na ordem de decodificação com base na informação recebida.
[0008] Em outro exemplo, os aspectos dessa descrição são direcionados a um aparelho para a decodificação de dados de vídeo que incluem um ou mais processadores configurados para obter, a partir da sequência de bits codificada, uma ou mais unidades de camada de abstração de rede (NAL) para cada componente de visualização e uma pluralidade de componentes de visualização dos dados de vídeo codificados, onde cada componente d visualização dentre a pluralidade de componentes de visualização corresponde a uma localização temporal comum, e onde uma ou mais unidades NAL encapsulam pelo menos uma parte dos dados de vídeo codificados para os componentes de visualização respectivos e incluem formação indicativa de uma ordem de decodificação dos componentes de visualização respectivos; obtendo informação, da sequência de bits codificada e separada das unidades NAL, indicando as relações, entre identificadores de visualização para as visualizações e ordem de decodificação dos componentes de visualização; e decodificando os dados de vídeo codificados dentre a pluralidade de componentes de visualização na ordem de decodificação com base na informação recebida.
[0009] Em outro exemplo, os aspectos dessa descrição são direcionados a um aparelho para a decodificação de dados de vídeo que incluem meios de obtenção, a partir de uma sequência de bits codificada, de uma ou mais unidades de camada de abstração de rede (NAL) onde cada componente de visualização dentre a pluralidade de componentes de visualização corresponde a uma localização temporal comum, e onde uma ou mais unidades NAL encapsulam pelo menos uma parte dos dados de vídeo codificados para os componentes de visualização respectivos e incluem informação indicativa de uma ordem de decodificação dos componentes de visualização respectivos; meios para obtenção de informação, a partir da sequência de bits codificada e separada das unidades NAL, indicando as relações entre identificadores de visualização para as visualizações e ordem de decodificação dos componentes de visualização, e meios para a decodificação de dados de vídeo codificados dentre a pluralidade de componentes de visualização na ordem de decodificação com base na informação recebida.
[0010] Em outro exemplo, aspectos dessa descrição são direcionados para um meio de armazenamento legível por computador não transitório possuindo instruções armazenadas no mesmo que, quando executadas, fazem com que um ou mais processadores obtenham, a partir de uma sequência de bits codificada, uma ou mais unidades de camada de abstração de rede (NAL) para cada componente de visualização dentre uma pluralidade de componentes de visualização de dados de vídeo codificados, onde cada componente de visualização dentre a pluralidade de componentes de visualização corresponde a uma localização temporal comum, e onde uma ou mais unidades NAL encapsulam pelo menos uma parte dos dados de vídeo codificados para os respectivos componentes de visualização e incluem formação indicativa de uma ordem de decodificação dos componentes de visualização respectivos; obtêm informação, a partir da sequência de bits codificada e separada das unidades NAL, indicando as relações entre os identificadores de visualização para as visualizações e a ordem de decodificação dos componentes de visualização; e decodificam os dados de vídeo codificados dentre a pluralidade de componentes de visualização na ordem de decodificação com base na informação recebida.
[0011] Em outro exemplo, aspectos dessa descrição são direcionados para um método de codificação de dados de vídeo que incluem a codificação a codificação de dados de vídeo para uma pluralidade de componentes de visualização para visualizações respectivas de dados de vídeo, onde cada um dentre a pluralidade de componentes de visualização corresponde a uma localização temporal comum; formando, como parte de uma sequência de bits codificada, uma ou mais unidades de camada de abstração de rede (NAL) para os dados de vídeo codificados de cada um dos componentes de visualização de modo que as unidades NAL incluam informação indicativa de uma ordem de decodificação dos dados de vídeo dos componentes de visualização respectivos e encapsulem pelo menos uma parte dos dados de vídeo codificados para os componentes de visualização respectivos; e fornecendo informação na sequência de bits codificada, separada das unidades NAL, indicando as relações entre os identificadores de visualização para as visualizações e a ordem de decodificação dos componentes de visualização.
[0012] Em outro exemplo, aspectos dessa descrição são direcionados a um aparelho para codificação de dados de vídeo, o aparelho compreendendo um ou mais processadores configurados para codificar dados de vídeo para uma pluralidade de componentes de visualização para visualizações respectivas de dados de vídeo, onde cada um dentre a pluralidade de componentes de visualização corresponde a uma localização temporal comum; forma, como parte de uma sequência de bits codificada, uma ou mais unidades de camada de abstração de rede (NAL) para os dados de vídeo codificados para cada um dos componentes de visualização de modo que as unidades NAL incluem informação indicativa de uma ordem de decodificação dos dados de vídeo dos componentes de visualização respectivos e encapsulam pelo menos uma parte dos dados de vídeo codificados para os componentes de visualização respectivos; e fornece informação na sequência de bits codificada, separadas das unidades NAL, indicando as relações entre os identificadores de visualização para as visualizações e a ordem de decodificação dos componentes de visualização.
[0013] Em outro exemplo, aspectos dessa descrição são direcionados a um aparelho para codificação de dados de vídeo que inclui meios para a codificação de dados de vídeo para uma pluralidade de componentes de vídeo para as visualizações respectivas de dados de vídeo, onde cada um dentre a pluralidade de componentes de visualização corresponde a uma localização temporal comum; meios para a formação, como parte de uma sequência de bits codificada, de uma ou mais unidades de camada de abstração de rede (NAL) para os dados de vídeo codificados de cada um dos componentes de visualização de modo que as unidades NAL incluam informação indicativa de uma ordem de decodificação dos dados de vídeo dos componentes de visualização respectivos e encapsulem pelo menos uma parte dos dados de vídeo codificados para os respectivos componentes de visualização; e meios para o fornecimento de informação na sequência de bits codificada, separada das unidades NAL, indicando as relações entre os identificadores de visualização para as visualizações e ordem de decodificação dos componentes de visualização.
[0014] Em outro exemplo, os aspectos dessa descrição são direcionados a um meio de armazenamento legível por computador não transitório possuindo instruções armazenadas no mesmo que, quando executadas, fazem com que um ou mais processadores codifiquem os dados de vídeo para uma pluralidade de componentes de visualização para as respectivas visualizações dos dados de vídeo, onde cada um dentre a pluralidade de componentes e visualização corresponde a um local temporal comum; formando, como parte de uma sequência de bits codificada, uma ou mais unidades de camada de abstração de rede (NAL) para os dados de vídeo codificados de cada um dos componentes de visualização de modo que as unidades NAL incluam informação indicativa de uma ordem de decodificação dos dados de vídeo dos componentes de visualização respectivos e encapsulem pelo menos uma parte dos dados de vídeo codificados para os componentes de visualização respectivos; e forneça informação na sequência de bits codificada, separada das unidades NAL, indicando as relações entre os identificadores de visualização para as visualizações e ordem de decodificação dos componentes de visualização.
[0015] Em outro exemplo, aspectos dessa descrição são direcionados a um método de decodificação de dados de vídeo que inclui a obtenção, a partir de uma sequência de bits codificada e para qualquer componente de visualização de uma primeira visualização, a informação de visualização de referência indicando uma ou mais visualizações de referência para prever os componentes de visualização da primeira visualização; incluindo, para decodificação de um primeiro componente de visualização em uma unidade de acesso e na primeira visualização, um ou mais candidatos de referência em uma lista de imagem de referência, onde os um ou mais candidatos de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, onde o número de candidatos de referência é igual ao número de visualizações de referência; e a decodificação do primeiro componente de visualização com base em um ou mais candidatos de referência na lista de imagem de referência.
[0016] Em outro exemplo, aspectos dessa descrição são direcionados a um aparelho para a decodificação de dados de vídeo, o aparelho compreendendo um ou mais processadores configurados para obter, a partir de uma sequência de bits codificada e para qualquer componente de visualização de uma primeira visualização, informação de visualização de referência indicando uma ou mais visualizações de referência para prever os componentes de visualização da primeira visualização; incluindo, para decodificação de um primeiro componente de visualização em uma unidade de acesso e na primeira visualização, um ou mais candidatos de referência em uma lista de imagem de referência, onde os um ou mais candidatos de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, onde o número de candidatos de referência é igual ao número de visualizações de referência, e decodificam o primeiro componente de visualização com base em um ou mais candidatos de referência na lista de imagem de referência.
[0017] Em outro exemplo, os aspectos dessa descrição são direcionados a um aparelho para decodificação de dados de vídeo, o aparelho compreendendo meios para obtenção, a partir de uma sequência de bits codificada e para qualquer componente de visualização de uma primeira visualização, informação de visualização de referência indicando uma ou mais visualizações de referência para predição dos componentes de visualização da primeira visualização; meios para incluir, para decodificação de um primeiro componente de visualização em uma unidade de acesso e na primeira visualização, um ou mais candidatos de referência em uma lista de imagens de referência, onde um ou mais candidatos de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, onde o número de candidatos de referência é igual ao número de visualizações de referência; e meios para a decodificação o primeiro componente de visualização com base em um ou mais candidatos de referência na lista de imagens de referência.
[0018] Em outro exemplo, aspectos dessa descrição são direcionados a um meio de armazenamento legível por computador não transitório possuindo instruções armazenadas no mesmo que, quando executadas, fazem com que um ou mais processadores obtenham, a partir de uma sequência de bits codificada e para qualquer componente de visualização de uma primeira visualização, informação de visualização de referência indicando uma ou mais visualizações de referência para prever os componentes de visualização da primeira visualização; incluindo, para decodificação de um primeiro componente de visualização em uma unidade de acesso e na primeira visualização, um ou mais candidatos de referência em uma lista de imagens de referência, onde os um ou mais candidatos de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, onde o número de candidatos de referência é igual ao número de visualizações de referência; e decodificam o primeiro componente de visualização com base em um ou mais candidatos de referência na lista de imagens de referência.
[0019] Em outro exemplo, os aspectos dessa descrição são direcionados para um método de codificação de dados de vídeo compreendendo a determinação, para qualquer componente de visualização de uma primeira visualização, informação de visualização de referência indicando uma ou mais visualizações de referência para prever os componentes de visualização da primeira visualização; incluindo, para codificação de um primeiro componente de visualização em uma unidade de aceso e na primeira visualização, um ou mais candidatos de referência em uma lista de imagens de referência, onde um ou mais candidatos de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, onde o número de candidatos de referência é igual ao número de visualizações de referência; a codificação do primeiro componente de visualização com base em um ou mais candidatos de referência na lista de imagem de referência; e fornecendo o primeiro componente de visualização codificado com a informação de visualização de referência determinada em uma sequência de bits codificada.
[0020] Em outro exemplo, aspectos dessa descrição são direcionados a um aparelho para codificação de dados de vídeo compreendendo um ou mais processadores configurados para determinar, para qualquer componente de visualização de uma primeira visualização, informação de visualização de referência indicando uma ou mais visualizações e referência para prever os componentes de visualização da primeira visualização, incluindo, para codificação de um primeiro componente de visualização em uma unidade de acesso e na primeira visualização, um ou mais candidatos de referência em uma lista de imagem de referência, onde um ou mais candidatos de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, onde o número de candidatos de referência é igual ao número de visualizações de referência; codificando o primeiro componente de visualização com base em um ou mais candidatos de referência na lista de imagem de referência; e fornecendo o primeiro componente de visualização codificado com a informação de visualização de referência determinada em uma sequência de bits codificada.
[0021] Em outro exemplo, aspectos dessa descrição são direcionados a um aparelho para codificação de dados de vídeo, o aparelho compreendendo meios de determinação, para qualquer componente de visualização de uma primeira visualização, informação de visualização de referência indicando uma ou mais visualizações de referência para predição dos componentes de visualização da primeira visualização; meios para incluir, para codificação de um primeiro componente de visualização em uma unidade de acesso e na primeira visualização, um ou mais candidatos de referência em uma lista de imagens de referência, onde um ou mais candidatos de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, onde o número de candidatos de referência é igual a um ou mais candidatos de referência na lista de imagem de referência, e meios para fornecimento do primeiro componente de visualização codificado com a informação de visualização de referência determinada em uma sequência de bits codificada.
[0022] Em outro exemplo, aspectos dessa descrição são direcionados para um meio de armazenamento legível por computador não transitório possuindo instruções armazenadas no mesmo que, quando executadas, fazem com que um ou mais processadores determinem, para qualquer componente de visualização de uma primeira visualização, informação de visualização de referência indicando uma ou mais visualizações de referência para predição dos componentes de visualização da primeira visualização; incluindo, para codificação de um primeiro componente de visualização em uma unidade de acesso e na primeira visualização, um ou mais candidatos de referência em uma lista de imagem de referência, onde os um ou mais candidatos de referência compreendem componentes de visualização na unidade de acesos e nas visualizações de referência indicadas pela informação de visualização de referência, onde o número de candidatos de referência é igual ao número de visualizações de referência; codificando o primeiro componente de visualização com base em um ou mais candidatos de referência na lista de imagens de referência, e fornecendo o primeiro componente de visualização codificado com a informação de visualização de referência determinada em uma sequência de bits codificada.
[0023] Os detalhes de um ou mais aspectos da descrição são apresentados nos desenhos em anexo e na descrição abaixo. Outras características, objetivos e vantagens das técnicas descritas nessa descrição serão aparentes a partir da descrição e dos desenhos, e a partir das reivindicações.
Breve Descrição dos Desenhos
[0024] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo ilustrativo que pode utilizar as técnicas descritas nessa descrição;
[0025] A figura 2 é um diagrama em bloco ilustrando um codificador de vídeo ilustrativo que pode implementar as técnicas descritas nessa descrição;
[0026] A figura 3 é um diagrama em bloco ilustrando um decodificador de vídeo ilustrativo que pode implementar as técnicas descritas nessa descrição;
[0027] A figura 4 é um diagrama conceitual ilustrando um padrão de predição de Codificação de Vídeo de Múltiplas Visualizações ilustrativo (MVC);
[0028] A figura 5A é um diagrama conceitual ilustrando um exemplo de uma estrutura de sequência de bits que pode ser utilizada em uma implementação de uma ou mais técnicas dessa descrição;
[0029] A figura 5B é um diagrama conceitual ilustrando um exemplo de uma visualização que pode ser incluída na estrutura de sequência de bits da figura 5A;
[0030] A figura 5C é um diagrama conceitual ilustrando um exemplo de uma unidade de Camada de Abstração de Rede (NAL) que pode ser incluída na estrutura de sequência de bits da figura 5A;
[0031] A figura 5D é um diagrama conceitual ilustrando outro exemplo de uma unidade NAL que pode ser incluída na estrutura de sequência de bits da figura 5A;
[0032] A figura 6 é um fluxograma ilustrando um método ilustrativo de codificação de uma sequência de bits de múltiplas visualizações;
[0033] A figura 7 é um fluxograma ilustrando um método ilustrativo da decodificação de uma sequência de bits de múltiplas visualizações;
[0034] A figura 8 é um fluxograma ilustrando um método ilustrativo de codificação de uma sequência de bits de múltiplas visualizações;
[0035] A figura 9 é um fluxograma ilustrando um método ilustrativo de decodificação de uma sequência de bits de múltiplas visualizações. Descrição Detalhada da Invenção De acordo com determinados sistemas de codificação, estimativa de movimento e compensação de movimento podem ser utilizadas para reduzir a redundância temporal em uma sequência de vídeo, de modo a alcançar a compressão de dados. Nesse caso, um vetor de movimento pode ser gerado identificando um bloco de predição dos dados de vídeo, por exemplo, um bloco de outra imagem de vídeo ou fatia, que pode ser utilizado para prever os valores do bloco de vídeo atual sendo codificado. Os valores do bloco de vídeo de predição são subtraídos a partir dos valores do bloco de vídeo atual para produzir um bloco de dados residuais. A informação de movimento (por exemplo, um vetor de movimento, índices de vetor de movimento, direções de predição, ou outra informação) é comunicada a partir de um codificador de vídeo para um decodificador de vídeo, juntamente com os dados residuais. O decodificador pode localizar o mesmo bloco de predição (com base no vetor de movimento) e reconstruir o bloco de vídeo codificado pela combinação de dados residuais com os dados do bloco de predição.
[0037] A Codificação de Vídeo de Múltiplas Visualizações (MVC) é um padrão de codificação de vídeo para encapsular múltiplas visualizações de dados de vídeo. Em geral, cada visualização corresponde a uma perspectiva diferente, ou ângulo, no qual os dados de vídeo correspondentes de uma cena comum foram capturados. As visualizações codificadas podem ser utilizadas para exibição tridimensional (3D) de dados de vídeo. Por exemplo, duas visualizações (por exemplo, visualizações de olho esquerdo e direito de um espectador humano) podem ser exibidas simultaneamente ou quase simultaneamente utilizando polarizações diferentes de luz e um espectador pode usar óculos polarizados passivos de modo que cada olho do espectador receba a visualização respectiva. Alternativamente, espectador pode usar óculos ativos que obturam cada olho independentemente, e um monitor pode alternar rapidamente entre as imagens de cada olho em sincronia com os óculos.
[0038] Em MVC, uma imagem em particular de uma visualização em particular é referida como um componente de visualização. Isso é, um componente de visualização de uma visualização corresponde ao caso temporal em particular da visualização. O vídeo de múltiplas visualizações pode conter uma quantidade relativamente grande de dependências estatísticas intervisualização, visto que todas as câmeras são utilizadas para capturar os dados de múltiplas visualizações que capturam a mesma cena de diferentes pontos de vista. Tais dependências podem ser exploradas para predição intervisualização e/ou temporal combinada, onde as imagens não são apenas previstas a partir de imagens temporalmente vizinhas, mas também a partir de imagens correspondentes de outras visualizações. Isso é, a predição de intervisualização pode ser realizada entre imagens na mesma unidade de acesso (isso é, dentro do mesmo momento no tempo).
[0039] A predição intervisualização é geralmente realizada como se o componente de visualização em outra visualização fosse uma referencia de interpredição. Ao invés de utilizar vetores de "movimento" para predição, a predição intervisualização utiliza vetores de "deslocamento", que são conceitualmente similares aos vetores de movimento, mas descrevem o deslocamento ao invés do movimento. As referências intervisualização em potencial são sinalizadas na extensão MVC de Conjunto de Parâmetros de Sequência (SPS) e podem ser modificadas pelo processo de construção de lista de imagem de referência, que permite a ordenação flexível das referências de predição de intervisualização ou interpredição.
[0040] Os dados de vídeo, incluindo os dados de vídeo MVC, podem ser organizados em unidades de Camada de Abstração de Rede (NAL), que fornecem uma representação de vídeo "fácil em termos de rede" para solucionar os aplicativos tal como videotelefonia, armazenamento, difusão ou sequenciamento. Por exemplo, um codificador de vídeo codifica comumente cada imagem de dados de vídeo como uma ou mais fatias independentemente decodificáveis. As fatias podem ser empacotadas em unidades NAL para transmissão através da rede. Unidades NAL incluindo dados de camada de codificação de vídeo (VCL) podem incluir dados para uma imagem ou dados para uma fatia de uma imagem. Por exemplo, unidades NAL podem incluir informação de sintaxe tal como os valores de padrão de bloco codificados (CBP), tipo de bloco, modo de codificação, tamanho máximo de bloco para uma unidade codificada (tal como quadro, fatia, bloco ou sequência) ou outra informação.
[0041] Cada unidade NAL inclui um cabeçalho que identifica um tipo de dados armazenado na unidade NAL. Um exemplo de cabeçalho de unidade NAL MVC pode incluir elementos de sintaxe indicando um identificador de visualização para a visualização à qual a unidade NAL pertence, se a unidade NAL pertencer a uma chamada imagem âncora que pode ser utilizada como um ponto de acesso randômico (para referência por outros componentes de visualização), se a unidade NAL for utilizada para predição de intervisualização para unidades NAL em outras visualizações, e uma variedade de outras informações. Como descrito aqui, uma imagem âncora pode corresponder geralmente a uma imagem de acesos randômico, e tais termos podem ser utilizados de forma intercambiável. Isso é, "acesso randômico" geralmente se refere ao ato de iniciar um processo de decodificação para uma sequência de bits em um ponto além do início da sequência. Uma imagem de acesso randômico geralmente se refere a uma imagem que contém apenas fatias intracodificadas (fatias I). As imagens codificadas que seguem uma imagem de acesso randômico em ambas a ordem de decodificação e ordem de saída não são previstas a partir das imagens anteriores à imagem de acesso randômico, na ordem de decodificação nem na ordem de saída.
[0042] Em geral, uma unidade de acesso pode incluir todos os componentes de visualização de um momento em particular. Um componente de visualização particular inclui todas as unidades NAL de uma visualização em particular em um momento em particular. Uma unidade NAL MVC pode conter um cabeçalho de unidade NAL de um byte (incluindo o tipo de unidade NAL) e pode incluir adicionalmente uma extensão de cabeçalho de unidade NAL MVC.
[0043] Enquanto H.264/AVC inclui o suporte MVC, a extensão MVC atual de H.264/AVC pode conter várias ineficiências com relação a outros padrões de codificação de vídeo. Ademais, como discutido em maiores detalhes abaixo, uma importação direta de MBC a partir de H.264/AVC para outros padrões de codificação, tal com o padrão HEVC futuro, pode não ser possível. AS técnicas dessa descrição geralmente se referem à formação de unidades NAL relacionadas com MVC, conjuntos de parâmetros relacionados com MVC e similares. Determinadas técnicas dessa descrição podem permitir a codificação MVC eficiente para o padrão HEVC futuro.
[0044] A figura 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo ilustrativo 10 que pode utilizar as técnicas para predição de vetor de movimento na codificação de múltiplas visualizações. Como ilustrado na figura 1, o sistema 10 inclui um dispositivo de origem 12 que fornece dados de vídeo codificados a serem decodificados futuramente por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 fornece dados de vídeo para o dispositivo de destino 14 através de um meio legível por computador 16. O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores desktop, computadores notebook (isso é, laptop), computadores tablet, caixas de decodificação, aparelhos telefônicos tal como os chamados "smartphones", os chamados "smart pads", televisões, câmeras, dispositivos de exibição, aparelhos de reprodução de mídia digital, consoles de jogos de vídeo, dispositivo de sequenciamento de vídeo, ou similares. Em alguns casos, o dispositivo de origem 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[0045] O dispositivo de destino 14 pode receber dados de vídeo codificados a serem decodificados através do 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 a partir do dispositivo de origem 12 para 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.
[0046] Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com ou sem fio, tal como o espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede com base em pacote, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[0047] Em alguns exemplos, os dados codificados podem ser enviados a partir da interface de saída 22 para um dispositivo de armazenamento. De forma similar, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados acessados de forma distribuída ou local tal como um disco rígido, discos Blu- ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outro meio de armazenamento digital adequado para armazenamento de dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que possa armazenar o vídeo codificado gerado pelo dispositivo de origem 12.
[0048] O dispositivo de destino 14 pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento através do sequenciamento ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenamento de dados de vídeo codificados e transmissão desses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo ilustrativos incluem um servidor de rede (por exemplo, para um sítio da rede), um servidor FTP, dispositivos de armazenamento anexados à rede (NAS), ou um acionador de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através que qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão WiFi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.) ou uma combinação de ambos que é adequada para acessar os dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento pode ser uma transmissão de sequenciamento, uma transmissão de download, ou uma combinação das mesmas.
[0049] As técnicas dessa descrição não são necessariamente limitadas a aplicações sem fio ou configurações. As técnicas podem ser aplicadas à codificação de vídeo em suporte a qualquer uma dentre uma variedade de aplicações de multimídia, tal como difusões de televisão aéreas, transmissões de televisão por cabo, transmissões de televisão via satélite, transmissões de vídeo de sequenciamento de Internet, tal como sequenciamento 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 outras aplicações. Em alguns exemplos, o sistema 10 pode ser configurado para suportar a transmissão de vídeo de uma via ou duas vias para suportar as aplicações tal como sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo, e/ou videotelefonia.
[0050] No exemplo da figura 1, o dispositivo de origem 12 inclui a fonte de vídeo 18, o codificador de vídeo 20, e interface de saída 22. O dispositivo de destino 14 inclui a interface de entrada 28, o decodificador de vídeo 30, e o dispositivo de exibição 32. De acordo com essa descrição, o codificador de vídeo 20 do dispositivo de origem 12 pode ser configurado para aplicar técnicas para predição de vetor de movimento em codificação de múltiplas visualizações. Em outros exemplos, o 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 forma, o dispositivo de destino 14 pode interfacear com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado.
[0051] O sistema ilustrado 10 na figura 1 é meramente um exemplo. As técnicas de predição de vetor de movimento em codificação de múltiplas visualizações pode ser realizada por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Apesar de geralmente as técnicas dessa descrição serem realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador/decodificador de vídeo, tipicamente referidas como "CODEC". Ademais, as técnicas dessa descrição também podem ser realizadas por um pré-processador de vídeo. O dispositivo de origem 12 e o dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo de origem 12 gera dados de vídeo codificados para transmissão par ao dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar substancialmente da mesma forma de modo que cada um dos dispositivos 12, 14 inclua componentes de codificação e decodificação de vídeo. Dessa forma, o sistema 10 pode suportar transmissão de vídeo de uma via ou duas vias entre os dispositivos 12, 14, por exemplo, para sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo, ou videotelefonia.
[0052] A fonte de vídeo 18 do dispositivo de origem 12 pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo capturado previamente e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo d vídeo. Como uma alternativa adicional, a fonte de vídeo 18 pode gerar dados com base em gráfico de computador como o vídeo fonte, 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 de câmera ou videofones. Como mencionado acima, no entanto, as técnicas descritas nessa descrição podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas às aplicações com e/ou sem fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificada pode então ser enviada pela interface de saída 22 para um meio legível por computador 16.
[0053] O meio legível por computador 16 pode incluir mídia transiente, tal como uma transmissão de rede com fio ou difusão sem fio, ou meio de armazenamento (isso é, meio de armazenamento não transitório), tal como um disco rígido, flash drive, disco compacto, disco de vídeo digital, disco Blu-ray, ou outro meio legível por computador. Em alguns exemplos, um servidor de rede (não ilustrado) pode receber os dados de vídeo codificados do dispositivo de origem 12 e fornecer os dados de vídeo codificados para o dispositivo de destino 14, por exemplo, através da transmissão de rede. De forma similar, um dispositivo de computação de uma instalação de produção de meio, tal como uma instalação de estampagem de disco, pode receber dados de vídeo codificados do dispositivo de origem 12 e produzir um disco contendo os dados de vídeo codificados. Portanto, o meio legível por computador 16 pode ser compreendido como incluindo um ou mais meios legíveis por computador de várias formas, em vários exemplos.
[0054] A interface de entrada 28 do dispositivo de destino 14 recebe informação do meio legível por computador 16. A informação do meio legível por computador 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, que também é utilizada pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem as características e/ou o processamento dos blocos e outras unidades codificadas, por exemplo, GOPs. O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário, e pode compreender qualquer um dentre uma variedade de dispositivos de exibição tal como um tubo de raio catodo (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo de emissão de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0055] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um dentre uma variedade de conjuntos de circuito de codificador ou decodificador adequados, como aplicável, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicativo (ASICs), conjuntos de porta programável em campo (FPGAs), conjunto de circuito lógico discreto, software, hardware, firmware ou qualquer combinação dos mesmos. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador de vídeo combinado (CODEC). Um dispositivo incluindo o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador, e/ou um dispositivo e comunicação sem fio, tal como um telefone celular.
[0056] Apesar de não ilustrado na figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser integrados com um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX adequadas, ou outro hardware e software, para manusear a codificação de ambos o áudio e vídeo em uma sequência de dados comum ou sequências de dados separadas. Se aplicável, unidades MUX-DEMUX podem se conformar ao protocolo de multiplexador ITU H.223, ou outros protocolos tal como o protocolo de datagrama de usuário (UDP).
[0057] No exemplo ilustrado na figura 1, o sistema 10 também inclui uma rede de distribuição de conteúdo/servidor 34 possuindo um roteador 36. Em alguns exemplos, o dispositivo de origem 12 pode se comunicar com a rede de distribuição de conteúdo/servidor 34 através de uma variedade de transmissão com e/ou sem fio ou meio de armazenamento, como descrito acima. Ademais, enquanto ilustrado separadamente no exemplo da figura 1, em alguns exemplos, o dispositivo de origem 12 e a rede de distribuição de conteúdo/servidor 34 compreendem o mesmo dispositivo. A rede de distribuição de conteúdo/servidor 34 pode armazenar uma ou mais versões de dados de vídeo codificados (do codificador de vídeo 20 do dispositivo de origem 12), e pode tornar tais dados de vídeo codificados disponíveis para acesso pelo dispositivo de destino 14 e decodificador de vídeo 30. Em alguns exemplos, o roteador 36 pode ser responsável pelo fornecimento de dados de vídeo codificados para o dispositivo de destino 14 em um formato solicitado.
[0058] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de codificação de vídeo, tal como o padrão de Codificação de Vídeo de Alta Eficiência (HEVC) atualmente em desenvolvimento, e pode se conformar ao Modelo de Texto HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões proprietários ou industriais, tal como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), ou extensões de tais padrões. As técnicas dessa descrição, no entanto, não estão limitadas a qualquer padrão de codificação em particular. Outros exemplos de padrões de codificação de vídeo incluem MPEG-2 e ITU-T H.263.
[0059] O padrão ITU-T H.264/MPEG-4 (AVC) foi formulado pelo Grupo de Especialistas de Codificação de Vídeo ITU-T (VCEG) juntamente com o Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG) como o produto de uma parceria coletiva conhecida como Equipe de Vídeo Conjunta (JVT). Em alguns aspectos as técnicas descritas nessa descrição podem ser aplicadas aos dispositivos que geralmente se conformam ao padrão H.264. O padrão H.264 é descrito na Recomendação ITU-T H.264, Codificação de Vídeo Avançada para serviços audiovisuais genéricos, pelo Grupo de Estudo ITU-T, e datado de março de 2005, que pode ser referido aqui como padrão H.264 ou especificação H.264, ou padrão ou especificação H.264/AVC. A Equipe de Vídeo Conjunta (JVT) continua a trabalhar em extensões para H.264/MPEG-4 AVC.
[0060] JCT-VC está trabalhando no desenvolvimento do padrão HEVC. Os esforços de padronização HEVC são baseados em um modelo de evolução de um dispositivo de codificação de vídeo referido como Modelo de Teste HEVC (HM). HM presume várias capacidades adicionais dos dispositivos de codificação de vídeo com relação aos dispositivos existentes de acordo com, por exemplo, ITU-T H.264/AVC. Por exemplo, ao passo que H.264 fornece nove modos de codificação intrapredição, HM pode fornecer tantos quantos trinta e três modos de codificação de intrapredição.
[0061] Em geral, delo de trabalho de HM descreve que uma imagem de vídeo pode ser dividida em uma sequência de blocos de árvore ou unidades de codificação maiores (LCU) que incluem ambas as amostras de luminescência e crominância. Os dados de sintaxe dentro de uma sequência de bits podem definir um tamanho para a LCU, que é uma maior unidade de codificação em termos de número de pixels. Uma fatia inclui um número de blocos de árvore consecutivos na ordem de codificação. Uma imagem pode ser dividida em uma ou mais fatias. Cada bloco de árvore pode ser dividido em unidades de codificação (CUs) de acordo com um quadtree. Em geral, a estrutura de dados de quadtree 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ó correspondente à CU inclui quatro nós folha, cada um dos quais corresponde a uma das sub-CUs.
[0062] Cada nó da estrutura de dados de quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó no quadtree pode incluir um indicador de divisão, indicando se a CU correspondente ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender de se a CU foi dividida em sub-CUs. Se uma CU não tiver sido dividida adicionalmente, a mesma é referida como uma CU folha. Nessa descrição, quatro sub-CUs de uma CU folha também serão referidas como CUs folha mesmo se não houver uma divisão explícita da CU folha original. Por exemplo, se uma CU de tamanho 16 x 16 não for dividida adicionalmente, as quatro sub-CUs de 8 x 8 também serão referidas como CUs folha apesar de a CU de 16 x 16 nunca ter sido dividida.
[0063] Uma CU possui uma finalidade similar a um macrobloco do padrão H.264, exceto que uma CU não possui uma distinção de tamanho. Por exemplo, um bloco de árvore pode ser dividido em quatro nós criança (também referidos como sub-CUs), e cada nó criança pode, por sua vez, ser um nó parente e ser dividido em outros quatro nós criança. Um nó criança não dividido final, referido como um nó folha do quadtree, compreende um nó de codificação, também referido como uma CU folha. Dados de sintaxe associados com uma sequência de bits codificada podem definir um número máximo de vezes em que um bloco de árvore pode ser dividido, referido como uma profundidade máxima de CU, e também podem definir uma menor unidade de codificação (SCU). Essa descrição utiliza o termo "bloco" para fazer referência a qualquer uma dentre CU, PU, ou TU, no contexto de HEVC, ou estruturas de dados similares no contexto de outros padrões (por exemplo, macroblocos e sub-blocos dos mesmos em H.264/AVC).
[0064] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformação (TUs) associadas com o nó de codificação. Um tamanho de CU corresponde a um tamanho de nó de codificação e deve ser quadrado. O tamanho da CU pode variar de 8 x 8 pixels até o tamanho do bloco de árvore com um máximo de 64 x 64 pixels ou maior. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Os dados de sintaxe associados com uma CU podem descrever, por exemplo, a partição da CU em uma ou mais PUs. Os modos de divisão podem diferir entre s a CU foi pulada ou codificada por modo direto, codificada por modo de intrapredição, ou codificada por modo de interpredição. PUs podem ser divididas de modo a não serem quadradas. Os dados de sintaxe associados com uma CU também podem descrever, por exemplo, a partição da CU em uma ou mais TUs de acordo com um quadtree. Uma TU pode ser quadrada ou não (por exemplo, retangular) em formato.
[0065] O padrão HEVC permite as transformações de acordo com as TUs, que podem ser diferentes para diferentes CUs. As TUs são tipicamente dimensionadas com base no tamanho das PUs dentro de uma determinada CU definida para uma LCU dividida, apesar disso poder nem sempre ser o caso. As TUs são tipicamente do mesmo tamanho ou menores que as PUs. Em alguns exemplos, amostras residuais correspondentes a uma CU podem ser subdivididas em unidades menores utilizando uma estrutura de quadtree conhecida como "quadtree residual" (RQT). Os nós folha do RQT podem ser referidos como unidades de transformação (TUs). Valores de diferença de pixel associados com TUs podem ser transformados para produzir os coeficientes de transformação, que podem ser quantizados.
[0066] Uma CU folha pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa uma área espacial correspondendo a toda ou uma parte da CU correspondente, e pode incluir dados para recuperação de uma amostra de referência para a PU. Ademais, uma PU inclui dados relacionados com a predição. Por exemplo, quando a PU é codificada por intramodo, os dados para a PU podem ser incluídos em um quadtree residual (RQT), que pode incluir dados descrevendo um modo de intrapredição para uma TU correspondendo à PU. Como outro exemplo, quando a PU é codificada por intermodo, a PU pode incluir dados definindo um ou mais vetores de movimento para a PU. Os dados definindo o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (por exemplo, uma precisão de um quarto de pixel ou uma precisão de um oitavo de pixel), uma imagem de referência à qual os pontos de vetor de movimento, e/ou uma lista de imagens de referência (por exemplo, Lista 0, Lista 1, ou Lista C) para o vetor de movimento.
[0067] Uma CU folha possuindo uma ou mais PUs também pode incluir uma ou mais unidades de transformação (TUs). As unidades de transformação podem ser especificadas utilizando um RQT (também referido como uma estrutura quadtree TU), como discutido acima. Por exemplo, um indicador de divisão pode indicar se uma CU de folha é dividida em quatro unidades de transformação. Então, cada unidade de transformação pode ser dividida adicionalmente em sub-TUs adicionais. Quando uma TU não é dividida adicionalmente, pode ser referida como uma TU folha. Geralmente, para intracodificação, todas as TUs folha pertencentes a uma CU folha compartilham o mesmo modo de intrapredição. Isso é, o mesmo modo de intrapredição é geralmente aplicado para calcular os valores previstos para todas as TUs de uma CU folha. Para intracodificação, um codificador de vídeo 20 pode calcular um valor residual para cada TU folha utilizando um modo de intrapredição, como uma diferença entre a parte da CU correspondente à TU e o bloco original. Uma TU não é necessariamente limitada ao tamanho de uma PU. Dessa forma, as TUs podem ser maiores ou menores do que uma PU. Para intracodificação, uma PU pode ser colocalizada com uma TU folha correspondente para a mesma CU. Em alguns exemplos, o tamanho máximo de uma TU folha pode corresponder ao tamanho da CU folha correspondente.
[0068] Ademais, as TUs das CUs folha podem ser associadas também com estruturas de dados de quadtree respectivas, referidas como quadtrees residuais (RQTs). Isso é, uma CU folha pode incluir um quadtree indicando como a CU folha é dividida em duas TUs. O nó raiz de um quadtree de TU geralmente corresponde a uma CU folha, enquanto o nó raiz de um quadtree CU geralmente corresponde a um bloco de árvore (ou LCU). TUs do RQT que não são divididas são referidas como TUs folha. Em geral, essa descrição utiliza os termos CU e TU para fazer referência à CU folha e TU folha, respectivamente, a menos que notado o contrário.
[0069] Uma sequência de vídeo inclui tipicamente uma série de imagens. Como descrito aqui, "imagem" e "quadro" podem ser utilizados de forma intercambiável. Isso é, imagem contendo dados de vídeo pode ser referida como um quadro de vídeo, ou simplesmente um "quadro". Um grupo de imagens (GOP) geralmente compreende uma série de uma ou mais imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais imagens, ou em outro local, que descreve um número de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a fatia respectiva. O codificador de vídeo 20 opera tipicamente em blocos de vídeo dentro de fatias de vídeo individuais a fim de codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis, e podem diferir de tamanho de acordo com um padrão de codificação especificado.
[0070] Como um exemplo, HM suporta a predição em vários tamanhos de PU. Assumindo-se que o tamanho de uma CU em particular seja 2N x 2N, HM suporta a intrapredição em tamanhos de PU de 2N x 2N ou M x N, e a interpredição em tamanhos de PU simétricos de 2N x 2N, 2N x N, N x 2N, ou N x N. HM também suporta divisão assimétrica para interpredição em tamanhos de PU de 2N x nU, 2N x nD, nL x 2 N, e nR x 2N. Na partição assimétrica, uma direção de uma CU não é dividida, enquanto a outra direção é dividida em 25% e 75%. A parte da CU correspondente a 25% de partição é indicada por um "n" seguido por uma indicação de "para cima", "para baixo", "para a esquerda" ou "para a direita". Dessa forma, por exemplo, "2N x nU" se refere a uma CU de 2N x 2N que é dividida horizontalmente com uma PU 2N x 0,5N em cima e uma PU de 2N x 1,5N em baixo.
[0071] Nessa descrição, "N x N" e "N por N" podem ser utilizados de forma intercambiável para fazer referência às dimensões de pixel de um bloco de vídeo em termos de dimensões verticais e horizontais, por exemplo pixels de 16 x 16 ou pixels de 16 por 16. Em geral, um bloco de 16 x 16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Da mesmas forma, um bloco N x N geralmente possui N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N representa um valor inteiro não negativo. Os pixels em um bloco podem ser dispostos em fileiras e colunas. Ademais, os blocos não precisam necessariamente ter o mesmo número de pixels na direção horizontal e na direção vertical. Por exemplo, os blocos podem compreender N x M pixels, onde M não é necessariamente igual a N.
[0072] Seguindo a codificação por intrapredição ou interpredição utilizando as PUs de uma CU, o codificador de vídeo 20 pode calcular os dados residuais para as TUs da CU. As PUs podem compreender dados de sintaxe descrevendo um método ou modo de geração de dados de pixel de predição no domínio espacial (também referido como domínio de pixel) e as TUs podem compreender coeficientes no domínio de transformação seguindo a aplicação de uma transformação, por exemplo, uma transformação de cosseno discreta (DCT), uma transformação de inteiro, uma transformação wavelet, a transformação conceitualmente similar para dados de vídeo residuais. Os dados residuais podem corresponder às diferenças de pixel entre os pixels de imagem não codificada e valores de predição correspondentes às PUs. O codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU, e então transformar as TUs para produzir os coeficientes de transformação para a CU.
[0073] Seguindo quaisquer transformações para a produção de coeficientes de transformação, o codificador de vídeo 20 pode realizar a quantização dos coeficientes de transformação. A quantização geralmente se refere a um processo no qual os coeficientes de transformação são quantizados para possivelmente reduzir a quantidade de dados utilizada para representar os coeficientes, fornecendo compressão adicional. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. Por exemplo, um valor de bit n pode ser arredondado para baixo para um valor de bit m durante a quantização, onde n é maior do que m.
[0074] Seguindo a quantização, o codificador de vídeo pode digitalizar os coeficientes de transformação, produzindo um vetor unidimensional a partir de uma matriz bidimensional incluindo os coeficientes de transformação quantizados. A digitalização pode ser projetada para colocar coeficientes de energia maior (e, portanto, uma menor frequência) na frente do conjunto e colocar coeficientes de energia menor (e, portanto, maior frequência) atrás do conjunto. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de digitalização pré-definida para digitalizar os coeficientes de transformação quantizados para produzir um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode realizar uma digitalização adaptativa. Depois da digitalização dos coeficientes de transformação quantizados para a formação de um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, por exemplo, de acordo com a codificação de comprimento variável adaptativa de contexto (CAVLC), a codificação aritmética binária adaptativa de contexto (CABAC), a codificação aritmética binária adaptativa de contexto com base em sintaxe (SBAC), a codificação por Entropia de Partição de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação por entropia. O codificador de vídeo 20 também pode codificar por entropia os elementos de sintaxe com os dados de vídeo codificados para uso pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0075] Para realizar CABAC, o codificador de vídeo 20 pode designar um contexto dentro de um modelo de contexto para um símbolo a ser transmitido. O contexto pode se referir a, por exemplo, se os valores vizinhos do símbolo são diferentes de zero ou não. Para realizar CAVLC, o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. As palavras código em VLC podem ser construídas de modo que códigos relativamente mais curtos correspondam a símbolos mais prováveis, enquanto códigos mais longos correspondem a símbolos menos prováveis. Dessa forma, o uso de VLC pode alcançar uma economia de bit sobre, por exemplo, a utilização de palavras código de mesmo comprimento para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada em um contexto designado para o símbolo.
[0076] O codificador de vídeo 20 pode enviar adicionalmente dados de sintaxe, tal como dados de sintaxe com base em bloco, dados de sintaxe com base em imagem, dados de sintaxe com base em GOP, para o decodificador de vídeo 30, por exemplo, em um cabeçalho de imagem, um cabeçalho de bloco, um cabeçalho de fatia ou um cabeçalho GOP. Os dados de sintaxe GOP podem descrever várias imagens no GOP respectivo, e os dados de sintaxe de imagem podem indicar um modo de codificação/predição utilizado para codificar a imagem correspondente.
[0077] Em alguns exemplos, o codificador de vídeo 20 pode gerar e o decodificador de vídeo 30 pode receber determinados conjuntos de parâmetro, que podem ser utilizados quando da decodificação de dados de vídeo. Por exemplo, os conjuntos de parâmetro podem conter informação de cabeçalho de nível de sequência (em conjuntos de parâmetros de sequência (SPS)) e informação de cabeçalho de nível de imagem de mudança pouco frequente (nos conjuntos de parâmetros de imagem (PPS)). Com os conjuntos de parâmetro (por exemplo, PPS e SPS), a informação de mudança pouco frequente não precisa ser repetida para cada uma das sequências (por exemplo, sequência de imagens) ou imagem, dessa forma, a eficiência de codificação pode ser aperfeiçoada. Adicionalmente, o uso de conjuntos de parâmetros pode permitir a transmissão fora de banda da informação de cabeçalho importante, evitando a necessidade de transmissões redundantes para resiliência de erro. Em exemplos de transmissão fora de banda, as unidades NAL de conjunto de parâmetros podem ser transmitidas em um canal diferente de outras unidades NAL, tal como as unidades NAL de Informação de Melhoria Suplementar (SEI).
[0078] Unidades NAL SEI (referidas como mensagens SEI) podem conter informação que não é necessária para a decodificação de amostras de imagens codificadas das unidades NAL VCL, mas podem auxiliar nos processos relacionados com a decodificação, exibição, resiliência de erro, e outros fins. As mensagens SEI podem ser contidas em unidades NAL não VCL. Mensagens SEI podem ser incluídas na parte normativa de algumas especificações padrão, e, dessa forma, nem sempre são obrigatórias para implementação de decodificador em conformidade com o padrão. As mensagens SEI Podem ser mensagens SEI de nível de sequência ou mensagens SEI de nível de imagem. Alguma informação de nível de sequência pode ser contida nas mensagens SEI, tal como as mensagens SEI de informação de capacidade de escalonamento no exemplo de SVC e visualizar as mensagens SEI de informação de capacidade de escalonamento em MVC.
[0079] Em alguns exemplos, o codificador de vídeo 20 pode codificar uma sequência de bits MVC que se conforma à extensão MVC para H.264/AVC. Da mesma forma, o decodificador de vídeo 30 pode decodificar uma sequência de bits MVC que se conforma à extensão MVC para H.264/AVC. O último rascunho conjunto de MVC é descrito em JVT-AD007, revisão de rascunho "Editors de ITU-T Rec. H.264|ISO/IEC 14496-10 Codificação de Vídeo Avançada", 30o. Encontro JVT, Genebra, Suíça, janeiro e fevereiro de 2008, disponível publicamente a partir de HTTP://wftp3.itu.int/av-arch/jvt- site/2009 01 Geneva/JVT-.AD0 07.
[0080] Na extensão escalonável de H.264/AVC, os elementos de sintaxe podem ser adicionados à extensão de cabeçalho de unidade NAL para estender o cabeçalho de unidade NAL de um byte para quatro bytes para descrever as características de uma unidade NAL VCL em múltiplas dimensões. Dessa forma, uma unidade NAL VCL em HEVC pode incluir um cabeçalho de unidade NAL mais longo do que o cabeçalho de unidade NAL no padrão H.264/AVC. A extensão MVC para H.264/AVC pode ser referida nessa descrição como "MVC/AVC".
[0081] Uma unidade NAL MVC/AVC pode conter um cabeçalho de unidade NAL de um byte que inclui o tipo de unidade NAL, além de uma extensão de cabeçalho de unidade NAL MVC/AVC. Como um exemplo, a extensão de cabeçalho de unidade NAL MVC/AVC pode incluir os elementos de sintaxe na tabela 1 a seguir: Tabela 1 - sintaxe de extensão de cabeçalho de unidade NAL
Figure img0001
[0082] Na tabela 1 acima, o elemento idr_flag pode indicar se a unidade NA\l pertence a uma atualização de decodificação instantânea (IDR) ou uma imagem IDR de visualização (V-IDR) que pode ser utilizada como um ponto de acesso randômico próximo a GOP. Por exemplo, uma imagem IDR e todas as imagens que sucedem a imagem IDR em ambas uma ordem de exibição e ordem de sequência e bits pode ser adequadamente decodificada sem decodificação de imagens anteriores na ordem de sequência de bit ou na ordem de exibição. O elemento priority_id pode ser utilizado com um processo de adaptação de sequência de bit que varia a sequência de bit de acordo com as condições da rede em mudança e/ou capacidades de decodificador de vídeo 30 e/ou dispositivo de exibição 32 (por exemplo, tal como o processo de adaptação de passagem única). O elemento view_id pode ser utilizado para indicar o identificador de visualização para a visualização à qual a unidade NAL Pertence, que pode ser utilizada dentro de um decodificador MVC, por exemplo, para predição intervisualização e fora de um decodificador, por exemplo, para criação. Em alguns casos, view_id pode ser configurado igual a um id de câmera predefinido e pode ser relativamente grande. O elemento temporal_id pode ser utilizado para indicar o nível temporal da unidade NAL atual, que pode corresponder a uma taxa de quadro em particular.
[0083] O elemento anchor_pic_flag pode ser utilizado para indicar se a unidade NAL pertence à imagem de âncora que pode ser utilizada como um ponto de acesso randômico de GOP aberto. Por exemplo, imagens âncora e todas as imagens que sucedem a imagem âncora na ordem de exibição podem ser adequadamente decodificadas sem decodificação de imagens anteriores na ordem de decodificação (isso é, ordem de sequência de bits) e, dessa forma, podem ser utilizadas como pontos de acesso randômico. As imagens âncora e imagens não âncora podem ter dependências de visualização diferentes, ambas as quais podem ser sinalizadas em um SPS. Isso é, como descrito aqui, uma dependência de visualização pode se referir geralmente a uma visualização a partir da qual uma visualização sendo atualmente codificada depende. Em outras palavras, as dependências de visualização podem ser apresentadas, visualizações a partir das quais, uma visualização atualmente sendo codificada pode ser prevista. De acordo com alguns exemplos, a dependência de visualização pode ser sinalizada na extensão MVC SPS. Em tais exemplos, toda a predição intervisualização pode ser feita dentro do escopo especificado pela extensão MVC SPS. O elemento inter_view_flag pode ser utilizado para indicar se a unidade NAL é utilizada para a predição intervisualização para unidades NAL em outras visualizações.
[0084] Para portar a informação de cabeçalho de unidade NAL de 4 bytes acima para a visualização base de uma sequência de bits MVC, uma unidade NAL de prefixo pode ser definida em MVC. No contexto de MVC, a unidade de acesso à visualização de base pode incluir as unidades NAL VCL de um momento atual de uma visualização em particular, além de uma unidade NAL de prefixo para a unidade de acesso de visualização de base, que pode conter apenas o cabeçalho de unidade NAL. Se a unidade NAL de prefixo não for necessária para decodificação (por exemplo, tal como a decodificação de uma única visualização), um decodificador pode ignorar ou descartar a unidade NAL de prefixo.
[0085] Com relação a uma extensão MVC/AVC SPS, SPS MVC pode indicar visualizações que podem ser utilizadas para fins de predição de intervisualização. Por exemplo, referências de intervisualização em potencial podem se sinalizadas em e a extensão MVC/AVC SPS e podem ser modificadas pelo processo de construção de lista de imagem de referência, o que permite uma ordenação flexível das referências de predição de intervisualização ou interpredição. Um exemplo de SPS MVC/AVC é apresentado na Tabela 2 abaixo: Tabela 2 - SPS MVC Ilustrativo
Figure img0002
[0086] De acordo com alguns exemplos, a dependência de visualização pode ser sinalizada na extensão MVC SPS. Toda a predição de intervisualização pode ser feita dentro do escopo especificado pela extensão MVC SPS. Isso é, SPS pode apresentar quais as visualizações podem ser referidas para fins de predição por uma visualização sendo atualmente codificada. Na Tabela 2 acima, o elemento num_anchor_refs_109[i] pode especificar o número de componentes de visualização para a predição intervisualização na lista de imagem de referência inicializada para a Lista 0 (por exemplo, RefPicList0). Adicionalmente, o elemento anchor_ref_10[i] pode especificar view_id do componente de visualização j para a predição de intervisualização no RefPicList0 inicializado. O elemento num_anchor_refs_11[i] pode especificar o número de componentes de visualização para a predição intervisualização na lista de imagens de referência inicializada para a lista um (por exemplo, RefPicList1). O elemento anchor_ref_11[i][j] pode especificar view_id do componente de visualização j para a predição de intervisualização no RefPicList1 inicializado. O elemento num_non_anchor_refs_10[i] pode especificar o número de componentes de visualização para a precisão de intervisualização em RefPicList0 inicializada. O elemento non_anchor_ref_10[i][j] pode especificar view_id do componente de visualização j para a predição de intervisualização em RefPicList0 inicializada. O elemento num_non_anchor_refs_11[i] pode especificar o número de componentes de visualização para a predição de intervisualização em RefPicList1 inicializada. O elemento non_anchor_ref_11[i][j] pode especificar view_id do componente de visualização j para a predição de intervisualização em RefPicList inicializada.
[0087] A lista de imagem de referência inicializada ou "inicial", a lista de imagem de referência pode ser igual ou diferente de uma lista de imagem de referência final utilizada para fins de componentes de visualização de predição de intervisualização. Isso é, determinados candidatos de referência (isso é, imagens de referência que podem ser utilizadas para predição de intervisualização) podem ser removidas de uma lista de imagem de referência inicial (por exemplo, imagens redundantes). Adicionalmente, como descrito em maiores detalhes abaixo, os candidatos de referência podem ser reordenados a partir da lista de imagem de referência inicial para formar a lista de imagens de referência final.
[0088] Nesse exemplo, de acordo com MVC/AVC, as dependências de visualização para imagens âncora e imagens não âncora são mantidas separadamente e sinalizadas. Isso é, um codificador de vídeo pode determinar um total de quatro listas de imagens de referência (por exemplo, Lista 0, imagens de não âncora; Lista 1, imagens de não âncora; Lista 0, imagens âncora; Lista 1, imagens âncora). Adicionalmente, como ilustrado na Tabela 2 acima, sinalização separada é necessária para indicar uma dependência de visualização para o decodificador de vídeo 30. Isso é, SPS deve incluir sinalização de Lista 0 e Lista 1 separadas para ambos anchor_refs e non_anchor_refs.
[0089] Ademais, de acordo com a tabela 2, a dependência de intervisualização para componentes de visualização de não âncora é um subconjunto desse para os componentes de visualização âncora. Isso é, por exemplo, um componente de visualização de uma visualização âncora pode ser prevista a partir de mais de uma outra visualização, tal como a visualização 3 e 4. Uma visualização não âncora, no entanto, só pode ser prevista a partir das imagens da visualização 3 (um subconjunto de visualização âncora). Dessa forma, as dependências de visualização para componentes de visualização âncora e não âncora podem ser mantidas separadamente.
[0090] Adicionalmente, na Tabela 2, num_level_values_signalled pode especificar o número de valores de nível sinalizados para a sequência de vídeo codificada. O elemento level_idc[i] pode especificar o valor de nível i sinalizado para a sequência de vídeo codificada. O elemento num_applicable_ops_minus1[i]plus 1 pode especificar o número de pontos de operação aos quais o nível indicado por level_idc1 [i] se aplica. O elemento applicable_op_temporal_id[i][j] pode especificar temporal_id do ponto de operação j ao qual o nível indicado por level_idc[i] se aplica. O elemento applicable_op_num_targe_views_minus1[i][j] pode especificar o número de visualizações de saída alvo para o ponto de operação j ao qual o nível indicado por level_idc[i] se aplica. O elemento applicable_op_targe_view_id[i][j][k] pode especificar a visualização de saída alvo k para o ponto de operação j ao qual o nível indicado por level_idc[i] se aplica. O elemento applicable_op_num_views_minus1[i][j] pode especificar o número de visualizações, incluindo as visualizações que dependem das visualizações de saída alvo, mas que não pertencem às visualizações de saída alvo, no ponto de operação j ao qual o nível indicado por level_idc[i] se aplica.
[0091] De acordo, na extensão MVC SPS, para cada visualização, o número de visualizações que podem ser utilizadas para formar a Lista 0 de imagem de referência e a Lista 1 de imagem de referência podem ser sinalizadas. Adicionalmente, a relação de predição para uma imagem âncora, como sinalizado na extensão MVC SPS, pode ser diferente da relação de predição para a imagem não âncora (sinalizada na extensão MVC SPS) da mesma visualização.
[0092] Como descrito em maiores detalhes abaixo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem dispor de forma flexível referências de predição de visualização e temporal quando da construção de listas de imagens de referência. Permitindo a disposição flexível é fornecida não apenas o ganho de eficiência de codificação em potencial, mas também a resiliência de erro, visto que a seção de imagem de referência e os mecanismos de imagem redundante podem ser estendidos para a dimensão de visualização. O codificador de vídeo 20 e/ou decodificador 30 podem, em um exemplo, construir uma lista de imagem de referência de acordo com as etapas a seguir: (1) Inicializar a lista de imagens de referência para imagens de referência temporais (isso é, intravisualização), de modo que as imagens de referência de outras visualizações não sejam consideradas; (2) Anexar as imagens de referência de intervisualização ao final da lista na ordem na qual as imagens ocorrem na extensão SPS MVC; (3) Aplicar um processo de reordenação de lista de imagem de referência (RPLR) para ambas as imagens de referência de intravisualização e intervisualização. As imagens de referência de intervisualização podem ser identificadas nos comandos RPLR por seus valores de índice como especificado na extensão SPS MVC.
[0093] Enquanto H.264/AVC inclui o suporte MVC, a extensão MVC atual para H.264/AVC pode conter várias ineficiências com relação a outros padrões de codificação de vídeo. Ademais, como discutido em maiores detalhes abaixo, uma importação direta de MVC de H.264/AVC para outros padrões de codificação, tal como o padrão HEVC futuro, pode não ser possível. As técnicas dessa descrição geralmente se referem à formação de unidades NAL relacionadas com MVC, conjuntos de parâmetro relacionados com MVC e similares. Enquanto as técnicas dessa descrição não são limitadas a qualquer padrão de codificação em particular, determinadas técnicas dessa descrição podem permitir a codificação MVC eficiente para o padrão HEVC futuro.
[0094] Como um exemplo, o padrão H.264/MVC suporta até 1024 visualizações e utiliza um identificador de visualização (view_id) em um cabeçote de unidade NAL para identificar a visualização à qual uma unidade NAL pertence. Visto que view id tem 10 bits de comprimento, mais de 1000 visualizações diferentes podem ser singularmente identificadas pelos valores view id. No entanto, muitas aplicações de vídeo tridimensional (3D) exigem um número muito menor de visualizações. Ademais, menos visualizações podem ser necessárias para as aplicações de vídeo 3D que utilizam síntese de visualização para gerar mais visualizações (que não exigem codificação). De acordo com a extensão MVC/AVC, o cabeçalho de unidade NAL inclui um view id de 10 bits que é sempre fornecido. O view id pode aumentar substancialmente o número de bits para o cabeçalho de unidade NAL, que ocupa uma parte relativamente grande da sequencia de bits.
[0095] De acordo com os aspectos dessa descrição, um índice de ordem de visualização ("view_order_index" ou "view_idx") pode ser sinalizado como parte de um cabeçalho de unidade NAL. Isso é, codificador de vídeo 20 pode codificar e transmitir, e o decodificador de vídeo 20 pode receber e decodificar, um índice de ordem de visualização como parte de um cabeçalho de unidade NAL. Para fins de comparação, o índice de ordem de visualização pode substituir o view id que é sinalizado no cabeçalho de unidade NAL da extensão MVC para H.264/AVC (doravante "MVC/AVC"). Isso é, por exemplo, view_idx pode substituir view_id em um cabeçalho de unidade NAL.
[0096] Como discutido acima, MVC fornece a predição intervisualização. De acordo, as visualizações utilizadas para referência (isso é, visualizações que são utilizadas para prever outras visualizações) devem ocorrer na ordem de codificação mais cedo co que as visualizações de referência, como discutido acima. A ordem de visualização geralmente descreve a ordenação de visualizações em uma unidade de acesso, e um índice de ordem de visualização identifica uma visualização em particular na ordem de visualização da unidade de acesso. Isso é, um índice de ordem de visualização descreve a ordem de decodificação de um componente de visualização correspondente de uma unidade de acesso.
[0097] Um SPS pode fornecer uma relação entre view ids (view_ids) para as visualizações e índices de ordem de visualização para as visualizações. De acordo com os aspectos dessa descrição, a utilização do índice de ordem de visualização e dados em SPS, o codificador de vídeo 20 e o decodificador de vídeo 30 podem substituir o view_id de 10 bits de MVC/AVC no cabeçalho de unidade NAL pelo índice de ordem de visualização. Por exemplo, o índice de ordem de visualização pode incluir substancialmente menos do que 10 bits (por exemplo, tal como 2 bits, 3 bits ou similares). Enquanto a relação entre o índice de ordem de visualização e ids de visualização podem exigir alguma sinalização associada, por exemplo, em um SPS, cabeçalhos de unidade NAL consomem tipicamente muito mais bits do que tal sinalização. De acordo, pela redução do tamanho dos cabeçalhos de unidade NAL, as técnicas dessa descrição podem alcançar uma economia de bit acima do esquema MVC/AVC. A informação indicativa da relação pode compreender, por exemplo, uma tabela de mapeamento que mapeia os valores view_id para os valores de índice de ordem de visualização. Dessa forma, o decodificador de vídeo 30 pode simplesmente receber um valor de índice de ordem de visualização em um cabeçalho de unidade NAL e determinar view_id da unidade NAL utilizando a tabela de mapeamento.
[0098] De acordo com alguns aspectos da descrição, o índice de ordem de visualização pode ter um comprimento dinâmico, dependendo de se é uma visualização de base HEVC, um perfil, ou um número de visualizações suportadas na sequência de bits MVC. Por exemplo, uma economia de bits adicional pode ser alcançada em uma sequência MVC que inclui apenas duas visualizações (isso é, para vídeo estéreo). Nesse exemplo, um índice de ordem de visualização pode não ser necessário, visto que o decodificador de vídeo 30 pode sempre decodificar uma primeira visualização (por exemplo, a visualização 0) antes da decodificação de uma segunda visualização (por exemplo, visualização 1). Isso é, de acordo com alguns aspectos dessa descrição, uma visualização de base pode ser projetada com um índice de ordem de visualização padrão de 0, e, portanto, não precisa ser sinalizada.
[0099] Adicionalmente, uma unidade NAL de prefixo, que é incluída imediatamente antes das unidades NAL de uma visualização de base (por exemplo, visualização 0) de uma visualização de base MVC/AVC, pode não ser mais necessária quando da utilização do índice de ordem de visualização descrito acima. Por exemplo, o decodificador de vídeo 30 pode não mais exigir uma unidade NAL de prefixo para uma visualização de base, visto que um índice de ordem de visualização pode sempre ser igual a zero para a visualização de base, e uma posição temporal da visualização de base pode ser determinada utilizando-se temporal_id (incluído em MVC/AVC). De acordo, o codificador de vídeo 20 pode sinalizar temporal_id em um cabeçalho de unidade NAL, que pode fornecer toda a informação necessária para o decodificador de vídeo 30 para associar um componente de visualização em particular com uma visualização em particular e com uma localização temporal adequada.
[0100] Com relação ao padrão HEVC emergente, de acordo com os aspectos dessa descrição, quando uma unidade NAL de prefixo não é utilizada para visualização de base em conformidade com HEVC, um indicador pode ser adicionado ao cabeçalho de unidade NAL da visualização de base HEVC. O indicador só pode ser utilizado para indicar se o componente de visualização (dessa unidade NAL em particular) pode ser utilizado para componentes de visualização de interpredição de outras visualizações de sequência de bits.
[0101] Adicionalmente, de acordo com os aspectos da descrição, o índice de ordem de visualização pode ser utilizado com um valor de contagem de ordem de imagem (POC) (por exemplo, que indica uma ordem de exibição das imagens) ou um valor de quadro (por exemplo, que indica uma ordem de decodificação das imagens) para identificar um componente de visualização de uma sequência de bits.
[0102] Como outro exemplo, como notado acima, SPS MVC/AVC pode indicar visualizações dependentes (isso é, visualizações referidas por uma ou mais outras visualizações para fins de predição) separadamente para cada visualização. Por exemplo, um anchor_pic_flag incluído em um cabeçalho de unidade NAL MVC/AVC pode ser utilizado para indicar se a unidade NAL pertence a uma imagem âncora que pode ser utilizada como um ponto de acesso randômico GOP abeto. Em MVC/AVC, como descrito acima, a dependência de visualização é sinalizada diferentemente para imagens âncora e imagens não âncora. De acordo, para visualizações dependentes sinalizadas para cada visualização, quatro categorias diferentes são consideradas, cada uma das quais é diferenciada pelo fato de se uma imagem é para uma imagem âncora ou se uma imagem é para a Lista 0 ou Lista 1. Tal desenho não apenas exige um número relativamente grande de bits para manter tais demarcações, mas também pode complicar a construção da lista de imagem de referência (por exemplo, cada categoria deve ser mantida durante a construção e reordenação da lista de referência).
[0103] De acordo com os aspectos dessa descrição, o codificador de vídeo 20 pode sinalizar (e o decodificador de vídeo 30 pode receber tal sinalização) a dependência de visualização para cada visualização de uma sequência de bits MVC comumente para todos os componentes de visualização independentemente de se os componentes de visualização são para as imagens âncora e imagens não âncora. Em alguns exemplos, SPS inclui uma indicação de dependências de visualização para os componentes de visualização, ao invés de se basear na informação em um cabeçalho de unidade NAL. Dessa forma, o codificador de vídeo 20 e o decodificador de vídeo 30 podem não utilizar o anchor_pic_flag utilizado no cabeçalho de unidade NAL MVC/AVC.
[0104] Um componente de visualização de uma visualização dependente sinalizada pode ser utilizado como uma imagem de referência em ambas as Listas 0 e 1. Adicionalmente, a construção da lista de imagem de referência e reordenação da lista de imagem de referência para a Lista 0 e Lista 1 podem ser baseadas também na sinalização comum para imagens âncora e imagens não âncora. Em alguns exemplos, um nível de sequência, mensagem de informação de melhoria suplementar (SEI) podem ser utilizados para indicar quando uma imagem não âncora possui uma dependência de visualização diferente de uma imagem âncora.
[0105] De acordo, determinados aspectos dessa descrição se referem à remoção da imagem âncora/imagem não âncora e distinção da sinalização de Lista 0/Lista 1 de MVC/AVC, simplificando, assim, a sequência de bits, além da construção de uma lista de imagem referência. Por exemplo, de acordo com os aspectos dessa descrição, o decodificador de vídeo 30 pode receber para qualquer componente de visualização uma primeira visualização, informação de visualização de referência indicando uma ou mais visualizações de referência para prever os componentes de visualização da primeira visualização. Isso é, o decodificador de vídeo 30 pode receber informação de visualização de referência indicando as dependências de visualização para as imagens âncora de uma visualização e imagens não âncora de uma visualização similar. A informação de visualização de referência pode incluir, por exemplo, um índice de ordem de visualização (indicando uma ordem de decodificação da visualização em uma unidade de acesso) associado com cada visualização de referência, como descrito acima.
[0106] Adicionalmente, quando a decodificação de uma imagem particular (de uma unidade de acesso) de uma visualização em particular, o decodificador de vídeo 30 pode incluir candidatos de referência (por exemplo, componentes de visualização a partir dos quais a imagem em particular pode ser prevista) da mesma unidade de acesso à imagem em particular e das visualizações de referência indicadas pela informação de visualização de referência. Em alguns casos, o decodificador de vídeo 30 pode adicionar candidatos de referência à lista de imagem de referência a partir de cada visualização de referência, de modo que o número de candidatos de referência seja igual ao número de visualizações de referência. Adicionalmente, o decodificador de vídeo 30 pode adicionar candidatos de referência à Lista 1, Lista 0 ou ambas. O decodificador de vídeo 30 pode então decodificar a imagem em particular com base em uma das imagens de referência na lista de imagens de referência.
[0107] Como outro exemplo adicional, como descrito acima, um priority_id é incluído no cabeçalho da unidade NAL de uma sequência de bits em conformidade com MVC/AVC. Priority_id fornece uma indicação da prioridade de uma unidade NAL em particular. Mais particularmente, cada unidade NAL recebe convencionalmente um valor de prioridade. Em resposta a uma solicitação por valor de prioridade P, todas as unidades NAL possuindo valores de prioridade inferiores a ou iguais a P serão fornecidos (isso é, as unidades NAL Possuindo valores priority_id superiores a P são descartados). Dessa forma, valores de prioridade mais baixo especificam prioridades mais altas. Deve-se compreender que as unidades NAL da mesma visualização pode ter prioridades diferentes, por exemplo, para capacidade de escalonamento temporal dentro da visualização.
[0108] Essa prioridade pode ser utilizada para fins de escalonamento. Por exemplo, para recuperar os dados de vídeo consumindo o mínimo de largura de banda (a custa de formação de uma representação de qualidade relativamente baixa) o decodificador de vídeo 30 (ou, mais geralmente, o dispositivo de destino 14) pode solicitar apenas as unidades NAL de prioridade mais alta a serem transmitidas a partir de uma fonte tal como o dispositivo de origem 12/codificador de vídeo 20, e priority_id pode ser utilizado para filtrar as unidades NAL de prioridade mais baixa. Em alguns exemplos, o roteador 36 de rede de distribuição de conteúdo/servidor 34 pode utilizar priority_id para separar as unidades NAL de prioridade relativamente alta a partir das unidades NAL de prioridade mais baixa. Para produzir uma representação de qualidade relativamente mais alta (à custa de consumo de largura de banda maior), o decodificador de vídeo 30 pode solicitar as unidades NAL possuindo uma prioridade mais baixa para suplementar as unidades NAL de prioridade mais alta, por exemplo, pela especificação de um valor de prioridade mais alto.
[0109] De acordo com os aspectos dessa descrição, ao invés de sinalizar priority_id no cabeçalho de unidade NAL, o codificador de vídeo 20 pode fornecer valores de priority_id em um SPS. Isso é, priority_id para cada visualização com um determinado nível temporal pode ser sinalizado no nível de sequência. Adicionalmente, de acordo com os aspectos dessa descrição, a adaptação de passagem única pode ser permitida desde que o contexto de sinalização associado com a adaptação seja conhecido.
[0110] Como discutido acima, em alguns exemplos, o roteador 36, que pode ser responsável pelo envio de sequência de bits para o dispositivo de destino 14, pode utilizar os valores priority_id SPS para filtrar determinadas visualizações. Isso é, o roteador 36 pode receber a sequência de bits total, mas extrair uma subsequência de bits incluindo unidades NAL possuindo valores priority_id em e abaixo de um valor de prioridade especificado pelo dispositivo de destino 14, e enviar a subsequência para o dispositivo de destino.
[0111] Em outro exemplo adicional, de acordo com MVC/AVC, a adaptação de passagem única exige um priority_id de 6 bits no cabeçalho de unidade NAL. Por exemplo, como notado acima, um MVC/AVC SPS pode incluir uma indicação de nível de visualização para a capacidade de escalonamento de visualização. Isso é, cada visualização de uma sequência de bits MVC pode ser codificada de forma hierárquica e pode receber um nível de visualização numérico.
[0112] De acordo com os aspectos dessa descrição, um SPS pode incluir a informação de nível de visualização. Dessa forma, quando o dispositivo de destino 14 solicita visualizações do nível de visualização V a partir da rede de distribuição de conteúdo/servidor 34, o dispositivo de destino 14 recebe todas as visualizações possuindo níveis de visualização inferiores a ou iguais a V. Similar ao uso de valores de priority_id descritos acima, o roteador 36 da rede de distribuição de conteúdo/servido 34 pode utilizar os níveis de visualização para extrair uma subsequência incluindo dados para visualizações possuindo níveis de visualização inferiores a ou iguais a um nível de visualização solicitado pelo cliente.
[0113] Outros aspectos dessa descrição se referem a um processo de transcodificação leve para converter uma subsequência de bits de um perfil maior em uma sequência de bits em conformidade com um perfil inferior. Tal processo de transcodificação pode ser realizado, por exemplo, pela rede de distribuição de conteúdo/servido 34. De acordo com os aspectos dessa descrição, a transcodificação pode ser realizada nas etapas a seguir: (1) Remapeamento de valores view_idx e view_id em SPS (2) Redimensionamento do cabeçalho de unidade NAL com um view_idx de comprimento curto.
[0114] Assumindo-se, por exemplo, que uma sequência de bits de perfil de televisão de ponto de visualização livre (FVT) contenha 32 visualizações, com view_idx igual a view_id para cada visualização. Nesse exemplo, a sequência de bits possui uma subsequência de bits contendo 8 visualizações, com view_idx igual a 0, 4, 8, 12, 16, 20, 24, 28. Essa subsequência de bits contém adicionalmente uma subsequência de bits que contém duas visualizações, com valores view_id 0 e 4.
[0115] De acordo com os aspectos dessa descrição, os valores view_idx para a subsequência de bits de 8 visualizações podem ser remapeados de acordo com a Tabela 3 abaixo: Tabela 3 - Remapeamento View_Idx
Figure img0003
[0116] De acordo com aspectos dessa descrição, os valores view_idx para a subsequência de bits de 2 visualizações podem ser remapeados de acordo com a tabela 4 abaixo. Tabela 4 - remapeamento de view_idx
Figure img0004
Figure img0005
[0117] De acordo com os aspectos dessa descrição, um view_idx em um cabeçalho de unidade NAL pode ser remapeado de acordo com a Tabela 5 abaixo: Tabela 5 - remapeamento de view_idx
Figure img0006
[0118] Alternativamente, o processo de transcodificação leve descrito acima pode não exigir o remapeamento de view_idx se uma sequência de bits em conformidade permitir um espaço no índice de ordem de visualização.
[0119] A figura 2 é um diagrama em bloco ilustrando um codificador de vídeo ilustrativo 20 que pode implementar as técnicas descritas nessa descrição para codificação de uma sequência de bits de múltiplas visualizações. O codificador de vídeo 20 recebe os dados de vídeo a serem codificados. No exemplo da figura 2, o codificador de vídeo 20 inclui uma unidade de seleção de modo 40, um somador 50, uma unidade de processamento de transformação 52, uma unidade de quantização 54, uma unidade de codificação por entropia 56, e memória de imagem de referência 64. A unidade de seleção de modo 40, por sua vez, inclui a unidade de estimativa de movimento ou disparidade 42, a unidade de compensação de movimento 44, a unidade de intrapredição 46, a unidade de partição 48.
[0120] Para a reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui a unidade de quantização inversa 58, a unidade de processamento de transformação inversa 60 e o somador 62. Um filtro de desbloqueio (não ilustrado na figura 2) também pode ser incluído para filtrar os limites de bloco para remover os artefatos de bloqueio do vídeo reconstruído. Se desejável, o filtro de desbloqueio filtrará tipicamente a saída do somador 62. Filtros de circuito adicionais (em circuito ou pós-circuito) também podem ser utilizados em adição ao filtro de desbloqueio. Tais filtros não são ilustrados por motivos de brevidade, mas se desejado, podem filtrar a saída do somador 50 (como um filtro em circuito).
[0121] A unidade de seleção de modo 40 pode receber dados de vídeo brutos na forma de blocos de uma ou mais visualizações. A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, com base nos resultados de erro, e fornece o bloco intra ou intercodificado resultante para o somador 50 para gerar dados de bloco residuais e para o somador 62 para reconstruir o bloco codificado para uso como uma imagem de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, tal como vetores de movimento, indicadores intramodo, informação de partição, e outra informação de sintaxe similar, para a unidade de codificação por entropia 56.
[0122] A unidade de estimativa de movimento ou disparidade 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente por motivos conceituais. A estimativa de movimento, realizada pela unidade de estimativa de movimento ou disparidade 42, é o processo de geração de vetores de movimento, que estimam o movimento para os blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de um PU de um bloco de vídeo dentro de uma imagem atual com relação a um bloco de predição dentro de uma imagem de referência (ou outra unidade codificada) com relação ao bloco atual sendo codificado dentro da imagem atual (ou outra unidade codificada).
[0123] Um bloco de predição é um bloco que é considerado muito próximo do bloco a ser codificado, em termos de diferença de pixel, que pode ser determinado pela soma da diferença absoluta (SAD), a soma da diferença quadrada (SSD), ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular os valores para as posições de pixel de subinteiro das imagens de referência armazenadas na memória de imagem de referência 64, que também podem ser referidas como um armazenador de imagem de referência. Por exemplo, o codificador de vídeo 20 pode interpolar os valores das posições de um quarto de pixel, posições de um oitavo de pixel, ou outras posições de pixel fracionado da imagem de referência. Portanto, a unidade de estimativa de movimento ou disparidade 42 pode realizar uma busca de movimento com relação às posições de pixel cheio e posições de pixel fracionado e enviar um vetor de movimento com precisão de pixel fracionado.
[0124] A unidade de estimativa de movimento ou disparidade 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia intercodificada pela comparação da posição da PU para a posição de um bloco de predição de uma imagem de referência. A unidade de disparidade ou estimativa de movimento 42 também pode ser configurada para realizar a predição de intervisualização, caso no qual a unidade de disparidade ou estimativa de movimento 42 pode calcular os vetores de deslocamento entre os blocos de uma imagem de visualização (por exemplo, visualização 0) e os blocos correspondentes de uma imagem de visualização de referência (por exemplo, visualização 1). Em geral, os dados para um vetor de disparidade ou movimento pode incluir uma lista de imagem de referência, um índice para dentro da lista de imagem de referência (ref_idx), um componente horizontal, e um componente vertical. A imagem de referência pode ser selecionada a partir de uma primeira lista de imagens de referência (Lista 0), uma segunda lista de imagens de referência (Lista 1), ou uma lista de imagens de referência combinada (Lista C), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagem de referência 64. Com relação à lista combinada, o codificador de vídeo 20 seleciona alternativamente os registros de duas listas (isso é, Lista 0 e Lista 1) a serem inseridas (anexadas) à lista combinada. Quando um registro já foi colocado na lista combinada, pela verificação do número POC, o codificador de vídeo 20 pode não inserir o registro novamente. Para cada lista (isso é, Lista 0 ou Lista 1), o codificador de vídeo 20 pode selecionar os registros com base em ordem ascendente do índice de referência.
[0125] A unidade de estimativa de disparidade ou movimento 42 pode gerar e enviar um vetor de disparidade ou movimento que identifica o bloco de predição da imagem de referência para a unidade de codificação por entropia 56 e unidade de compensação de movimento 44. Isso é, a unidade de estimativa de movimento ou disparidade 42 pode gerar e enviar os dados de vetor de movimento que identificam a lista de imagem de referência contendo o bloco de predição, um índice para dentro da lista de imagens de referência identificando a imagem do bloco de predição, e um componente horizontal e vertical para localizar o bloco de predição dentro da imagem identificada.
[0126] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver a coleta ou geração de bloco de predição com base no vetor de disparidade ou movimento determinado pela unidade de estimativa de disparidade ou movimento 42. Novamente, a unidade de estimativa de disparidade ou movimento 42 e a unidade de compensação de movimento 44 pode ser integrada de forma funcional, em alguns exemplos. Mediante o recebimento do vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco de predição ao qual o vetor de movimento aponta em uma das listas de imagem de referência.
[0127] O somador 50 forma um bloco de vídeo residual pela subtração de valores de pixel do bloco de predição dos valores de pixel do bloco de vídeo atual sendo codificado, formando os valores de diferença de pixel, como discutido abaixo. Em geral, a unidade de estimativa de disparidade ou movimento 42 realiza a estimativa de movimento com relação aos componentes de luminescência, e a unidade de compensação de movimento 44 utiliza os vetores de movimento calculados com base nos componentes de luminescência para ambos os componentes de crominância e os componentes de luminescência. A unidade de seleção de modo 40 também pode gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0128] A unidade de intrapredição 46 pode intraprever um bloco atual, como uma alternativa para a interpredição realizada pela unidade de estimativa de disparidade ou movimento 42 e a unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de intrapredição 46 pode determinar um modo de intrapredição para ser utilizado para a codificação de um bloco atual. Em alguns exemplos, a unidade de intrapredição 46 pode codificar um bloco atual utilizando vários modos de intrapredição, por exemplo, durante passagens de codificação separadas, e a unidade de intrapredição 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo de intrapredição adequado para ser utilizado a partir dos modos de teste.
[0129] Por exemplo, a unidade de intrapredição 46 pode calcular valores de distorção de taxa utilizando uma análise de distorção de taxa para os vários modos de intrapredição testados, e selecionar o modo de intrapredição possuindo as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco não codificado, original, que foi codificado para produzir o bloco codificado, além de uma taxa de bits (isso é, um número de bits) utilizada para produzir o bloco codificado. A unidade de intrapredição 46 pode calcular as razões das distorções e taxas para os vários blocos codificados para determinar qual modo de intrapredição exibe o melhor valor de distorção de taxa para o bloco.
[0130] Depois da seleção de um modo de intrapredição para um bloco, a unidade de intraprecisão 46 pode fornecer informação indicativa do modo de intrapredição selecionado para o bloco para unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar a informação indicando o modo de intrapredição selecionado. O codificador de vídeo 20 pode incluir s dados de configuração de sequência de bits transmitidos, que podem incluir uma pluralidade de tabelas de índice de modo de intrapredição e uma pluralidade de tabelas de índice de modo de intrapredição modificadas (também referidas como tabelas de mapeamento de palavra código), definições de contextos de codificação para vários blocos, e indicações de um modo de intrapredição mais provável, uma tabela de índice de modo de intrapredição, e uma tabela de índice de modo de intrapredição modificada para uso para cada um dos contextos.
[0131] O codificador de vídeo 20 forma um bloco de vídeo residual pela subtração dos dados de predição a partir da unidade de seleção de modo 40 a partir do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que realizam essa operação de subtração. A unidade de processamento de transformação 52 aplica uma transformação, tal como uma transformação de cosseno discreto (DCT) ou uma transformação conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo compreendendo os valores de coeficiente de transformação residuais. A unidade de processamento de transformação 52 pode realizar outras transformações que são conceitualmente similares à DCT. As transformações de wavelet, transformações de inteiro, transformações de sub-banda ou outros tipos de transformações podem ser utilizadas também. Em qualquer caso, a unidade de processamento de transformação 52 aplica a transformação ao bloco residual, produzindo um bloco de coeficientes de transformação residuais. A transformação pode converter a informação residual de um domínio de valor de pixel para um domínio de transformação, tal como um domínio de frequência.
[0132] A unidade de processamento de transformação 52 pode enviar os coeficientes de transformação resultantes para a unidade de quantização 54. A unidade de quantização 54 quantiza os coeficientes de transformação para reduzir ainda mais a taxa de bit. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. O grau de quantização pode ser modificado pelo ajuste de um parâmetro de quantização. Em alguns exemplos, a unidade de quantização 54 pode então realizar uma digitalização da matriz incluindo os coeficientes de transformação quantizados. Alternativamente, a unidade de codificação por entropia 56 pode realizar a digitalização.
[0133] Seguindo a quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformação quantizados. Por exemplo, a unidade de codificação por entropia 56 pode realizar a codificação de comprimento variável adaptativa de contexto (CAVLC), a codificação aritmética binária adaptativa de contexto (CABAC), a codificação aritmética binária adaptativa de contexto com base em sintaxe (SBAC), a codificação por entropia de partição de intervalo de probabilidade (PIPE), a codificação ou outra técnica de codificação por entropia. NO caso de codificação por entropia com base em contexto, o contexto pode ser baseado em blocos vizinhos. Seguindo a codificação por entropia pela unidade de codificação por entropia 56, a sequência de bits codificada pode ser transmitida para outro dispositivo (por exemplo, o decodificador de vídeo 30) ou arquivada para transmissão ou recuperação futura.
[0134] A unidade de quantização inversa 58 e a unidade de processamento de transformação inversa 60 aplicam a quantização inversa e a transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso posterior como um bloco de referência. A unidade de movimento compensado 44 pode calcular um bloco de referência pela adição do bloco residual a um bloco de predição de uma das imagens da memória de imagem de referência 64. A unidade de compensação de movimento 55 pode aplicar também um ou mais filtros de interpolação para o bloco residual reconstruído para calcular os valores de pixel de subinteiro para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído para o bloco de predição de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para o armazenamento na memória de imagem de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimativa de disparidade ou movimento 42 e unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em uma imagem subsequente.
[0135] O codificador de vídeo 20 pode gerar um número de elementos de sintaxe, como descrito acima, que podem ser codificados pela unidade de codificação por entropia 56 ou outra unidade de codificação do codificador de vídeo 20. Em alguns exemplos, o codificador de vídeo 20 pode gerar e codificar os elementos de sintaxe para uma sequência de bits MVC, como descrito acima.
[0136] Como notado acima, um identificador de visualização pode ser incluído em um cabeçalho de unidade NAL para identificar a visualização à qual uma unidade NAL Pertence. O view_id pode aumentar substancialmente o número de bits para o cabeçalho da unidade NAL, que ocupa uma parte relativamente grande da sequência e bits. De acordo com os aspectos dessa descrição, o codificador de vídeo 20 pode sinalizar um índice de ordem de visualização como parte de um cabeçalho de unidade NAL. Isso é, o codificador de vídeo 20 pode substituir view_id que pode ser comumente sinalizado no cabeçalho de unidade NAL por um índice de ordem de visualização. O índice de ordem de visualização pode descrever a ordem de decodificação de um componente de visualização correspondente de uma unidade de acesso. O índice de ordem de visualização pode ser utilizado com um valor POC ou um valor de quadro para identificar um componente de visualização de uma sequência de bits. O codificador de vídeo 20 também pode gerar um SPS que fornece uma indicação de uma relação entre os view_ids para as visualizações e os índices de ordem de visualização para as visualizações. Por exemplo, o codificador de vídeo 20 pode gerar uma tabela de mapeamento que mapeia os valores view_id para visualizar os valores de índice de ordem de visualização e incluir tal tabela de mapeamento em um SPS. Em outros exemplos, o codificador de vídeo 20 pode indicar a relação entre view_ids e os índices de ordem de visualização de uma forma alternativa.
[0137] O codificador de vídeo 20 também pode evitar a codificação de uma unidade NAL de prefixo, que pode ser tipicamente incluído imediatamente antes de uma visualização de base. Ao invés disso, o codificador de vídeo 20 pode sinalizar um temporal_id cabeçalho de unidade NAL, que pode fornecer toda a informação necessária para o decodificador de vídeo 30 para associar um componente de visualização em particular com uma visualização em particular e com uma localização temporal adequada (por exemplo, de acordo com um índice de ordem de visualização de base padrão igual a zero). Em alguns exemplos, o codificador de vídeo 20 pode adicionar um indicador ao cabeçalho de unidade NAL da visualização de base para indicar se o componente de visualização (dessa unidade NAL em particular) pode ser utilizado para interprever os componentes de visualização de outras visualizações da sequencia de bits.
[0138] De acordo com os aspectos dessa descrição, o codificador de vídeo 20 pode sinalizar as dependências de visualização para cada visualização comumente para todos os componentes de visualização, independentemente de se os componentes de visualização são para imagens âncora e imagens não âncora e se os componentes de visualização pertencem à Lista 0 ou Lista 1. Em alguns exemplos, o codificador de vídeo 20 pode incluir uma indicação em um SPS que identifica diferentes dependências de visualização para imagens âncora e imagens não âncora.
[0139] De acordo com ouros aspectos dessa descrição, ao invés da sinalização de priority_id no cabeçalho de unidade NAL, o codificador de vídeo 20 pode fornecer valores priority_id em um SPS. Isso é, um priority_id para cada visualização com um nível temporal determinado pode ser sinalizado no nível de sequência. Adicionalmente, de acordo com os aspectos dessa descrição, a adaptação de única passagem pode ser permitida desde que o contexto de sinalização associado com a adaptação seja conhecida. Adicionalmente, o codificador de vídeo 20 pode sinalizar a informação de nível de visualização de sinal em um SPS.
[0140] A figura 3 é um diagrama em bloco ilustrando um decodificador de vídeo ilustrativo 30 que pode implementar as técnicas descritas nessa descrição para decodificação de uma sequência de bits de múltiplas visualizações. No exemplo da figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 80, a unidade de predição 81 possuindo uma unidade de compensação de movimento 82 e a unidade de intrapredição 84, a unidade de quantização inversa 86, a unidade de transformação inversa 88, o somador 90 e a memória de imagem de referência 92.
[0141] Durante o processo de decodificação, o decodificador de vídeo 30 recebe uma sequência de bits de vídeo codificada que representa os bloco de vídeo de uma fatia de vídeo codificada e elementos de sintaxe associados do codificador de vídeo 20. A unidade de decodificação por entropia 80 do decodificador de vídeo 30 decodifica por entropia a sequência de bits para gerar os coeficientes quantizados, vetores de movimento e outros elementos de sintaxe. A unidade de decodificação por entropia 80 envia os vetores de movimento e outros elementos de sintaxe para a unidade de predição 81. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou nível de bloco de vídeo.
[0142] Por exemplo, o decodificador de vídeo 30 pode receber um número de unidades NAL possuindo um cabeçalho de unidade NAL que identifica um tipo de dados armazenado na unidade NAL (por exemplo, dados VCL e dados não VCL). Os conjuntos de parâmetro podem conter a informação de cabeçalho de nível de sequência, tal como um SPS, PPS ou outro conjunto de parâmetros descrito acima.
[0143] De acordo com os aspectos dessa descrição, o decodificador de vídeo 30 pode receber um índice de ordem de visualização como parte de um cabeçalho de unidade NAL. Isso é, o decodificador de vídeo 30 pode receber um índice de ordem de visualização ao invés de view id que pode ser comumente sinalizado no cabeçalho de unidade NAL. O índice de ordem de visualização pode descrever a ordem de decodificação de um componente de visualização correspondente de uma unidade de acesso. Adicionalmente, o decodificador de vídeo 30 pode receber informação indicativa da relação entre um índice de ordem de visualização recebida e um view id correspondente. A informação pode incluir, por exemplo, uma tabela de mapeamento que mapeia valores view_id para visualizar os valores de índice de ordem de visualização. Dessa forma, o decodificador de vídeo 30 pode simplesmente receber um valor de índice de ordem de visualização em um cabeçalho de unidade NAL e determina view_id da unidade NAL utilizando a tabela de mapeamento. Em alguns exemplos, a informação de relação pode ser recebida em um SPS. O decodificador de vídeo 30 pode utilizar também o índice de ordem de visualização com um valor POC ou um valor de quadro (número de quadro ou frame_num) para identificar um componente de visualização de uma sequência de bits.
[0144] Em alguns exemplos, de acordo com os aspectos dessa descrição, o decodificador de vídeo 30 pode não receber uma unidade NAL de prefixo, que pode ser tipicamente incluída imediatamente antes de uma visualização de base. Ao invés disso, o decodificador de vídeo 30 pode receber um temporal_id em um cabeçalho de unidade NAL, que pode fornecer toda a informação necessária para o decodificador de vídeo 30 para associar um componente de visualização em particular a uma visualização em particular e com uma localização temporal (por exemplo, de acordo com um índice de ordem de visualização de base padrão igual a zero). Em alguns exemplos, o decodificador de vídeo 30 pode receber um indicador no cabeçalho de unidade NAL da visualização de base para indicar se o componente de visualização (dessa unidade NAL em particular) pode ser utilizado para interprever os componentes de visualização de outras visualizações da sequência de bits.
[0145] De acordo com os aspectos dessa descrição, o decodificador de vídeo 30 também pode receber as dependências de visualização para cada visualização comumente para todos os componentes de visualização, independentemente de se os componentes de visualização são para imagens âncora e imagens não âncora, e independentemente de se o componente de visualização será incluído na Lista 0 ou Lista 1. Em alguns exemplos, o decodificador de vídeo 30 pode receber uma indicação em um SPS que identifica diferentes dependências de visualização para imagens âncora e imagens não âncora.
[0146] De acordo com outros aspectos dessa descrição, ao invés de sinalizar priority_id no cabeçalho de unidade NAL, o codificador de vídeo 20 pode fornecer valores priority_id em um SPS. Adicionalmente, de acordo com os aspectos dessa descrição, a adaptação de passagem única pode ser permitida desde que o contexto de sinalização associado com a adaptação seja conhecido. O decodificador de vídeo 30 também pode receber determinada informação de nível de visualização em um SPS.
[0147] Quando a fatia de vídeo é codificada como uma fatia intracodificada (I), a unidade de intrapredição 84 da unidade de predição 81 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intrapredição sinalizado e dados dos blocos decodificados anteriormente da imagem atual. Quando a imagem é codificada como uma fatia intercodificada (isso é, B, P ou GPB), a unidade de compensação de movimento 82 da unidade de predição 81 produz blocos de predição para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação por entropia 80. Os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagem de referência. O decodificador de vídeo 30 pode construir as listas de imagem de referência, Lista 0 e Lista 1 (ou uma lista combinada, Lista C) utilizando as técnicas de construção padrão com base nas imagens de referência armazenadas na memória de imagem de referência 92.
[0148] A unidade de compensação de movimento 82 determina a informação de predição para um bloco de vídeo da fatia de vídeo atual pela análise de vetores de movimento e outros elementos de sintaxe, e utiliza a informação de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 82 utiliza alguns dos elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra ou interpredição) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de interpredição (por exemplo, fatia B, fatia P ou fatia GPB), informação de construção para uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo intercodificado da fatia, situação de interpredição para cada bloco de vídeo intercodificado da fatia, e outras informações para decodificação de blocos de vídeo na fatia de vídeo atual.
[0149] A unidade de quantização inversa 86 quantiza de forma invertida, isso é, desquantiza, os coeficientes de transformação quantizados fornecidos na sequência de bits e decodificados pela unidade de decodificação por entropia 80. O processo de quantização inversa pode incluir o uso de um parâmetro de quantização calculado pelo codificador de vídeo 20 para cada bloco de vídeo na fatia de vídeo para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado.
[0150] A unidade de processamento de transformação inversa 88 aplica uma transformação inversa, por exemplo, uma DCT inversa, uma transformação de inteiro inversa, ou um processo de transformação inversa conceitualmente similar aos coeficientes de transformação a fim de produzir blocos residuais no domínio de pixel. De acordo com os aspectos dessa descrição, a unidade de processamento de transformação inversa 88 pode determinar a forma na qual as transformações foram aplicadas aos dados residuais. Isso é, por exemplo, a unidade de processamento de transformação inversa 88 pode determinar um RQT que representa a forma na qual as transformações (por exemplo, DCT, transformação inteira, transformação de wavelet, ou uma ou mais outras transformações) foram aplicadas às amostras de luminescência residuais e as amostras de crominância residuais associadas com um bloco de dados de vídeo recebidos.
[0151] Depois da unidade de compensação de movimento 82 gerar o bloco de predição para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado pela soma dos blocos residuais da unidade de processamento de transformação inversa 88 com os blocos de predição correspondentes gerados pela unidade de compensação de movimento 82. O somador 90 representa o componente ou componentes que realizam essa operação de soma. Se desejável, um filtro de desbloqueio também pode ser aplicado para filtrar os blocos decodificados a fim de remover os artefatos de bloqueio. Outros filtros de circuito (no circuito de codificação ou depois do circuito de codificação) também podem ser utilizados para suavizar as transições de pixel ou de outra forma aperfeiçoar a qualidade de vídeo. Os blocos de vídeo decodificados em uma determinada imagem são então armazenados na memória de imagem de referência 92, que armazena as imagens de referência utilizadas para a compensação de movimento subsequente. A memória de imagem de referência 92 também armazena vídeo decodificado para apresentação posterior em um dispositivo de exibição, tal como um dispositivo de exibição 32 da figura 1.
[0152] A figura 4 é um diagrama conceitual ilustrando um padrão de predição MVC ilustrativo. No exemplo da figura 4, oito visualizações são ilustradas, e doze localizações temporais são ilustradas para cada visualização. Em geral, cada fileira na figura 4 corresponde a uma visualização, enquanto cada coluna indica uma localização temporal. Cada uma das visualizações pode ser identificada utilizando-se um identificador de visualização ("view_id") que pode ser utilizado para indicar uma localização de câmera relativa com relação às outras visualizações. No exemplo ilustrado na figura 4, os IDs de visualização são indicados como "S0" a "S7", apesar de IDs de visualização numérica também poderem ser utilizados. Adicionalmente, cada uma das localizações temporais pode ser identificada utilizando-se um valor de contagem de ordem de imagem (POC), que indica uma ordem de exibição das imagens. No exemplo ilustrado na figura 4, os valores POC são indicados como "T0" a "T11".
[0153] apesar de MVC possuir uma chamada visualização de base que é decodificável por decodificadores H.264/AVC e par de visualização estéreo poder ser suportado por MVC, MVC pode suportar mais de duas visualizações como uma entrada de vídeo 3D. De acordo, um criador de um cliente possuindo um decodificador MVC pode esperar o conteúdo de vídeo 3D com múltiplas visualizações.
[0154] As imagens na figura 4 são indicadas utilizando-se um bloco sombreado incluindo uma letra, designando se a imagem correspondente é intracodificada (isso é, um quadro I), ou intercodificada em uma direção (isso é, como um quadro P) ou em múltiplas direções (isso é, como um quadro B). Em geral, as previsões são indicadas pelas setas, onde a imagem para qual se aponta utiliza o objeto de onde se aponta para predição de referência. Por exemplo, o quadro P de visualização S2 na localização temporal T0 é previsto a partir do quadro I de visualização S0 a localização temporal T0. Cada uma das imagens ilustradas na figura 4 pode ser referida como um componente de visualização. Isso é, um componente de visualização de uma visualização corresponde ao caso temporal em particular da visualização.
[0155] Como com a codificação de vídeo de visualização singular, as imagens de uma sequência de vídeo de múltiplas visualizações podem ser codificadas de forma previsível com relação às imagens em locais temporais diferentes. Por exemplo, o quadro b da visualização S0 na localização temporal T1 possui uma seta apontada para o mesmo a partir do quadro I da visualização S0 na localização temporal T0, indicando que o quadro b é previsto a partir do quadro I. Adicionalmente, no entanto, no contexto da codificação de vídeo de múltiplas visualizações, as imagens podem ser previstas na forma de intervisualização. Isso é, um componente de visualização pode utilizar os componentes de visualização em outras visualizações para referência. Em MVC, por exemplo, a predição de intervisualização é realizada como se o componente de visualização em outra visualização fosse uma referência de interpredição. As referências de intervisualização em potencial podem se sinalizadas na extensão MVC SPS e podem ser modificadas pelo processo de construção de lista de imagem de referência, que permite a ordenação flexível das referências de interpredição ou intervisualização.
[0156] A figura 4 fornece vários exemplos de predição de intervisualização. As imagens de visualização S1, no exemplo da figura 4, são ilustrados como sendo previstas a partir das imagens em diferentes locais temporais da visualização S1, além de previstas por intervisualização a partir das imagens de visualizações S0 e S2 nas mesmas localizações temporais. Por exemplo, o quadro b da visualização S1 na localização temporal T1 é previsto a partir de cada um dos quadros B da visualização S1 nas localizações temporais T0 e T2, além de quadros b das visualizações S0 e S2 na localização temporal T1.
[0157] No exemplo da figura 4, o "B" maiúsculo e o "b" minúsculo devem indicar diferentes relações hierárquicas entre as imagens, ao invés de diferentes metodologias de codificação. Em geral, os quadros "B" maiúsculo são relativamente mais altos na hierarquia de predição do que os quadros "b" minúsculo. A figura 4 também ilustra variações na hierarquia de predição utilizando diferentes níveis de sombreamento, onde uma quantidade de imagens de maior de sombreamento (isso é, relativamente mais escuras) são mais altas na hierarquia de predição do que as imagens possuindo menos sombreamento (isso é, relativamente mais claras). Por exemplo, todos os quadros I na figura 4 são ilustrados com sombreamento total, enquanto os quadros P possuem um sombreamento um pouco mais leve, e os quadros B (e os quadros b minúsculo) possuem vários níveis de sombreamento com relação uma à outra, mas sempre mais claro do que o sombreamento dos quadros P e quadros I.
[0158] Em geral, a hierarquia de predição é relacionada com os índices de ordem de visualização, visto que as imagens relativamente mais altas na hierarquia de predição devem ser decodificada antes da decodificação das imagens que estão relativamente mais baixas na hierarquia, de modo que as imagens relativamente mais altas na hierarquia possam ser utilizadas como imagens de referência durante a decodificação das imagens relativamente mais baixas na hierarquia. Um índice de ordem de visualização é um índice que indica a ordem de decodificação dos componentes de visualização em uma unidade de acesso. Os índices de ordem de visualização podem ser implicados em um conjunto de parâmetros, tal como SPS.
[0159] Dessa forma, as imagens utilizadas como uma imagem de referência podem ser decodificadas antes da decodificação das imagens que são codificadas com referência às imagens de referência. Um índice de ordem de visualização é um índice que indica a ordem de decodificação dos componentes de visualização em uma unidade de acesso. De acordo com MVC/AVC, para cada índice de ordem de visualização i, view_id correspondente é sinalizado. A decodificação dos componentes de visualização segue a ordem ascendente dos índices de ordem de visualização. Se todas as visualizações estiverem presentes, então o conjunto de índices de ordem de visualização compreende um conjunto consecutivamente ordenado a partir de zero para um a menos do que o número cheio de visualizações.
[0160] Em alguns casos, um subconjunto de uma sequência de bits inteira pode ser extraído para formar uma subsequência de bits que ainda se conformará ao MVC. Pode haver muitas subsequências de bits que aplicações específicas podem exigir, com base, por exemplo, em um serviço fornecido por um servidor, a capacidade, suporte, e capacidades dos decodificadores de um ou mais clientes, e/ou a preferência de um ou mais clientes. Por exemplo, um cliente pode exigir apenas três visualizações, e pode haver duas situações. Em um exemplo, um cliente pode exigir uma experiência de visualização suave e pode preferir as visualizações com valores view_id S0, S1 e S2, enquanto outro cliente pode exigir a capacidade de escalonamento da visualização e preferir visualizações com valores view_id S0, S2 e S4. Ambas essas subsequências de bits podem ser decodificadas como sequências de bits MVC independentes e podem ser suportadas simultaneamente. Em geral, posição da câmera, orientação, e relação geométrica entre diferentes visualizações podem ser inferidas a partir de View ID ou View Order Index. Para essa finalidade, ambos os parâmetros de câmera intrínsecos e extrínsecos podem ser incluídos na sequência de bits utilizando uma mensagem SEI de Informação de Aquisição de Múltiplas Visualizações.
[0162] Enquanto a figura 4 ilustra oito visualizações (S0-S7), como notado acima, a extensão MVC/AVC suporta até 1024 visualizações e utiliza um view_id em um cabeçalho de unidade NAL para identificar a visualização à qual uma unidade NAL pertence. De acordo com os aspectos dessa descrição, um índice de ordem de visualização pode ser sinalizado como parte de um cabeçalho de unidade NAL. Isso é, para fins de comparação, um índice de ordem de visualização pode substituir view_id que é sinalizado no cabeçalho de unidade NAL da extensão MVC/AVC. A ordem de visualização descreve geralmente a ordenação das visualizações em uma unidade de acesso, e um índice de ordem de visualização identifica uma visualização em particular na ordem de visualização da unidade de acesso. Isso é, um índice de ordem de visualização descreve a ordem de decodificação de um componente de visualização correspondente de uma unidade de acesso.
[0163] De acordo com os aspectos dessa descrição, um SPS pode fornecer uma relação entre view_ids para as visualizações e índices de ordem de visualização para as visualizações. Utilizando-se o índice de ordem de visualização e dados em SPS, o codificador de vídeo 20 e o decodificador de vídeo 30 podem substituir o view_id de 10 bits de MVC/AVC no cabeçalho de unidade NAL pelo índice de ordem de visualização, que pode levar a uma economia de bit maior do que o esquema MVC/AVC.
[0164] Um SPS ilustrativo que fornece uma relação entre view_ids para as visualizações e índices de ordem de visualização é fornecido na Tabela 6 abaixo: Tabela 6: Extensão MVC de conjunto de parâmetro de sequência.
Figure img0007
[0165] No exemplo ilustrado na tabela 6, elementos de sintaxe em negrito e itálico indicam distanciamentos da sintaxe SPS MVC/AVC, isso é, modificações relativas à sintaxe SPS MVC/AVC. Por exemplo, SPS ilustrado na tabela 6 específica as relações de dependência de intervisualização para uma sequência de vídeo codificada. SPS também específica valores de nível para um subconjunto de pontos de operação para a sequência de vídeo codificada. Todos os SPSs que são referidos por uma sequência de vídeo codificada devem ser idênticos. No entanto, algumas visualizações identificadas por view_id[i] podem não ser representadas na sequência de vídeo codificada. Adicionalmente, algumas visualizações ou subconjuntos temporais descritos por SPS podem ter sido removidos da sequência de vídeo codificada original, e, dessa forma, podem não estar presentes na sequência de vídeo codificada. A informação em SPS, no entanto, pode sempre ser aplicada às visualizações restantes e subconjuntos temporais.
[0166] Na tabela 6 acima, o elemento num_views_minus1 plus 1 pode especificar o número máximo de visualizações codificadas na sequência de vídeo codificada. O valor de num_view_minus1 pode estar na faixa de 0 a 31, inclusive. Em alguns casos, o número real de visualizações na sequência de vídeo codificada pode ser inferior a num_views_minus1 plus 1. O elemento view_id[i] pode especificar o identificador de visualização da visualização com um índice de ordem de visualização igual a i. O elemento view_level[i] pode especificar o view_level da visualização com um índice de ordem de visualização igual a i. Em alguns exemplos, todos os componentes de visualização com um view_level até um valor predefinido (VL) pode ser decodificável sem decodificação de qualquer componente de visualização com um view_level maior que VL.
[0167] De acordo com os aspectos dessa descrição, o elemento num_ref_views[i] pode especificar o número de componentes de visualização para predição por intervisualização na lista de imagens de referência inicial RefPicList0 e RefPicList1 quando da decodificação de componentes de visualização com índice de ordem de visualização igual a i. O valor do elemento num_ref_views[i] pode não ser superior a Min(15, num_views_minus1). O valor de num_ref_views[0] pode ser igual a 0. Adicionalmente, de acordo com os aspectos dessa descrição, o elemento ref_view_idx[i][j] pode especificar o índice de ordem de visualização do componente de visualização j para a predição de intervisualização na lista de imagem de referência inicial RefPicList0 e RefPicList1 quando da decodificação de um componente de visualização com o índice de ordem de visualização igual a 1. O valor de ref_view_idx[i][j] pode estar na faixa de 0 a 31, inclusive.
[0168] De acordo, em vários aspectos dessa descrição, as dependências de visualização para imagens âncora e imagens não âncora podem não precisar mais ser mantidas e sinalizadas separadamente. Isso é, o codificador de vídeo 20 e/ou o codificador de vídeo 30 pode utilizar uma lista de imagem de referência singular (ou manter duas listas de imagens de referência, Lista 0 e Lista 1) para imagens âncora e imagens não âncora da mesma forma. Dessa forma, como ilustrado na Tabela 6 acima, a sinalização separada não é necessária para indicar uma dependência de visualização para o decodificador de vídeo 30. Ao invés disso, SPS inclui ref_view_idx, que pode ser utilizado para construir ambas a Lista 0 e a Lista 1 para visualizar os componentes.
[0169] De acordo com tais aspectos dessa descrição, por exemplo, o decodificador de vídeo 30 pode receber, para qualquer componente de visualização uma primeira informação de visualização de referência, primeira visualização, indicando uma ou mais visualizações de referência para predição de componentes de visualização da primeira visualização. Isso é, o decodificador de vídeo 30 pode receber informação de visualização de referência indicando dependências de visualização para imagens âncora de uma visualização e imagens não âncora de uma visualização similar. Quando da codificação de uma imagem em particular (de uma unidade de acesso) de uma visualização em particular, então, o decodificador de vídeo 30 pode incluir candidatos de referência (por exemplo, componentes de visualização dos quais a imagem em particular pode ser prevista) da mesma unidade de acesso que a imagem em particular e das visualizações de referência indicadas pela informação de visualização de referência. Em alguns casos, o decodificador de vídeo 30 pode adicionar candidatos de referência à lista de imagens de referência a partir de cada visualização de referência, de modo que o número de candidatos de referência seja igual ao número de visualizações de referência. Adicionalmente, o decodificador de vídeo 30 pode adicionar candidatos de referência à Lista 1, Lista 0 ou ambas. O decodificador de vídeo 30 pode então decodificar a imagem em particular com base em uma das imagens de referência na lista de imagens de referência.
[0170] Ademais, de acordo com a Tabela 6, a dependência intervisualização para componentes de visualização não âncora podem não ser mais sinalizados em um SPS como um subconjunto da dependência de intervisualização para componentes de visualização de âncora. Ao invés disso, um componente de visualização de uma visualização âncora pode ser previsto a partir de mais de uma outra visualização, tal como a visualização 3 e 4, e uma visualização não âncora também pode ser prevista a partir das imagens de visualização 3 e visualização 4. Se uma restrição de dependência de visualização de restrição adicional for desejada para as imagens de não âncora, tal restrição pode ser fornecida na sinalização suplementar, tal como uma mensagem SEI.
[0171] O elemento num_level_values_signalled_minus1 plus 1 pode especificar o número de valores de nível sinalizados para a sequência de vídeo codificada. O valor de num_level_values_signalled_minus1 pode estar na faixa de 0 a 63, inclusive. O elemento level_idc[i] pode especificar o valor de nível i sinalizado para a sequência de vídeo codificada. O elemento num_applicable_ops_minus1[i] plus 1 pode especificar o número de pontos de operação aos quais o nível indicado pelo level_idc[i] se aplica. O valor do elemento num_applicable_ops_minus[i] pode estar na faixa de 0 a 1023, inclusive. O elemento applicable_op_temporal_id[i][j] pode especificar temporal_id do ponto de operação j ao qual o nível indicado pelo level_idc[i] se aplica. O elemento applicable_op_num_target_views_minus1[i][j] plus 1 pode especificar o número de visualizações de saída alvo para o ponto de operação j ao qual o nível indicado por level_idc[i] se aplica. O valor do elemento applicable_op_num_target_views_minus1[i][j] pode estar na faixa de 0 a 1023, inclusive.
[0172] O elemento applicable_op_target_view_idx[i][j][k] pode especificar o índice de ordem de visualização da visualização de saída alvo k para o ponto de operação j ao qual o nível indicado por level_idc[i] se aplica. O valor do elemento applicable_op_target_view_idx[i][j][k] pode estar na faixa de 0 a 31, inclusive. Applicable_op_num_views_minus1[i][j] plus 1 pode especificar o número de visualizações necessárias para a decodificação das visualizações de saída alvo correspondentes ao ponto de operação j ao qual o nível indicado pelo level_idc[i] se aplica. O número de visualizações especificadas por applicable_op_num_views_minus1 pode incluir as visualizações de saída alvo e as visualizações das quais as visualizações de saída alvo dependem como especificado pelo processo de extração de subsequência de bits.
[0173] Em outro exemplo, de acordo com os aspectos dessa descrição, o valor de ref_view_idx[i][j] pode precisar ser menor do que i, com base em uma ordem de decodificação dos componentes de visualização no mesmo momento.
[0174] Ref_view_idx[i][j] pode ser adicionalmente reduzido em tamanho (para economia de bit adicional X MVC/AVC). Por exemplo, uma economia de bit adicional pode ser alcançada em uma sequência MVC que inclui apenas duas visualizações (isso é, para o vídeo estéreo). Nesse exemplo, um índice de ordem de visualização pode não ser necessário, visto que o decodificador de vídeo 30 pode sempre decodificar uma primeira visualização (por exemplo, visualização 0) antes da decodificação de uma segunda visualização (por exemplo, visualização 1). Um exemplo de SPS reduzido é fornecido na Tabela 7 abaixo: Tabela 7 - extensão MVC de conjunto de parâmetros de sequência.
Figure img0008
[0175] No exemplo ilustrado na Tabela 7, o elemento ref_view_idx_diff_minus1[i][j]plus i+1 pode especificar o índice de ordem de visualização do componente de visualização j para a predição de intervisualização na lista de imagem de referência inicial RefPicList0 e RefPicList1 quando da decodificação de um componente de visualização com o índice de ordem de visualização igual a i. O valor do elemento ref_view_idx_diff_minus1[i][j] pode estar na faixa de 0 a 30-i, inclusive.
[0176] Outros exemplos também são possíveis. Por exemplo, ao invés de sinalizar a dependência de visualização em um SPS (tal como exemplos ilustrados nas Tabelas 6 e 7 acima), a dependência de visualização pode ser sinalizada em um PPS. Em outro exemplo, a dependência de visualização pode ser sinalizada no SPS, e uma dependência de visualização pode ser adicionalmente sinalizada em um PPS que está dentro do escopo da dependência de visualização sinalizada no conjunto de parâmetro de sequência. Por exemplo, em um SPS, uma visualização dependente (por exemplo, visualização 2) pode ser sinalizada como sendo dependente da visualização 0 e visualização 1, enquanto em um PPS, a visualização dependente (por exemplo, visualização 2) pode ser sinalizada como apenas sendo dependente da visualização 0.
[0177] De acordo com alguns aspectos dessa descrição, a construção de lista de imagem de referência e reordenação pode ser alterada de MVC/AVC. Por exemplo, de acordo com os aspectos dessa descrição, um índice de visualização (view_idx) descrito acima pode ser utilizado durante a construção e/ou reordenação de lista de imagem de referência. Uma sintaxe de modificação MVC de lista de imagem de referência ilustrativa é fornecida nas tabelas 8 e 9 abaixo: Tabela 8 - Modificação de lista de imagem de referência MVC
Figure img0009
Tabela 9 - Modificação de lista de imagem de referência MVC
Figure img0010
Nas Tabelas 8 e 9, o elemento modification_of_pic_nums_idc juntamente com abs_diff_pic_num_minus1, long_term_pic_num ou abs_diff_view_idx_minus1 pode especificar qual das imagens de referência ou componentes de referência de intervisualização apenas são remapeados. Por exemplo, o elemento abs_diff_view_idx_minus1 plus1 pode especificar a diferença absoluta entre o índice de referência de intervisualização para colocar o índice atual na lista de imagens de referência e o valor de predição do índice de referência de intervisualização.
[0179] Em outro exemplo, de acordo com os aspectos dessa descrição, inter_view_index de uma referência de intervisualização pode ser sinalizada diretamente. Tal sintaxe de modificação MVC de lista de imagem de referência é fornecida nas tabelas 10 e 11 abaixo: Tabela 10 - Modificação de lista de imagem de referência MVC
Figure img0011
Tabela 11 - Modificação de lista de imagem de referência MVC
Figure img0012
[0180] Nas tabela 10 e 11, uma imagem de referência de intervisualização pode ser identificada por inter_view_index como segue: VOIdx = ref_view_idx[CurrVOIdx][inter_view_index] onde CurrVOIdx é o índice de ordem de visualização do componente de visualização atual. De acordo com um valor POC da imagem atual, POC e VOIdx podem ser utilizados para identificar uma imagem de referência de intervisualização.
[0181] Em alguns exemplos, o processo de decodificação MVC para a construção de listas de imagem de referência pode ser invocada no começo do processo de decodificação para cada fatia P, SP ou B. Durante a invocação desse processo, apenas as imagens de referência possuindo o mesmo valor de view_idx que a fatia atual podem ser consideradas. As imagens de referência decodificadas podem ser marcadas como "utilizada para referência de curto prazo" ou "utilizado para referência de longo termo". Imagens de referência de curto termo podem ser identificadas pelos valores de frame_num e view_idx, e, para imagens de referência de intervisualização, adicionalmente por PicOrderCnt(). Imagens de referência de longo termo podem ser designadas um índice de quadro de longo termo e identificados pelos valores de índice de quadro de longo termo, view_idx e, para imagens de referência de intervisualização, adicionalmente por PicOrderCnt().
[0182] Em adição às imagens de referência, os componentes de referência de intervisualização apenas (que podem ser imagens de não referência e podem não ser marcados durante um processo de marcação de imagem de referência) também podem ser incluídos em uma lista de imagem de referência. Os componentes de referência de intervisualização apenas podem ser identificados pelo valor de view_idx e por PicOrderCnt().
[0183] Durante a invocação do processo de construção de lista de imagem de referência, o processo a seguir, identificado em MVC/AVC como subcláusula 8.2.4.1, pode ser invocado para especificar: a designação de variáveis FrameNum, FrameNumWrap, e PicNum para cada uma das imagens de referência de curto termo; e a designação da variável LongTermPicNum para cada uma das imagens de referência de longo termo.
[0184] Imagens de referência e, quando presente, componentes de referência de intervisualização apenas, são solucionados através dos índices de referência. Um índice de referência é um índice em uma lista de imagens de referência. Quando da decodificação de uma fatia P ou SP, existe uma lista de imagem de referência única RefPicList0. Quando da decodificação de uma fatia B, existe uma segunda lista de imagens de referência independente RefPicList1 em adição a RefPicList0.
[0185] No começo do processo de decodificação para cada fatia, a lista de imagem de referência RefPicList0, e para fatias B RefPicList1, podem ser derivadas como especificado pelas etapas ordenadas a seguir: 1. A lista de imagem de referência inicial RefPicList0 e para fatias B RefPicList1 são derivadas como especificado na subcláusula 8.2.4.2 de MVC/AVC. 2. As imagens de referência de intervisualização ou componentes de referência de intervisualização apenas são anexados à lista de imagem de referência inicial RefPicList0 e para as fatias B RefPicList1 como especificado na subcláusula 6.4.1 (apresentado abaixo). 3. Quando ref_pic_list_modification_flag_10 for igual a 1, ou, quando a decodificação de uma fatia B, ref_pic_list_modification_flag_11 for igual a 1, a lista de imagem de referência RefPicList0 e para fatias B RefPicList1 são modificadas como especificado na subcláusula 6.4.2 (apresentado abaixo).
[0186] adicionalmente, o número de registros na lista de imagem de referência modificada RefPicList0 é num_ref_idx_10_active_minus1 + 1 e para fatias B o número de registros na lista de imagem de referência modificada, RefPicList1 é num_ref_idx_11_active_minus1 + 1. Uma imagem de referência ou componente de referência de intervisualização apenas pode aparecer em mais de um índice nas listas de imagem de referência modificadas RefPicList0 ou RefPicList1.
[0187] Durante a invocação do processo especificado na subcláusula 6.4.1, uma referência de predição de intervisualização anexada a RefPicListX (com X sendo 0 ou 1) pode não existir. No entanto, uma referência de predição de intervisualização que não existe pode não estar em RefPicListX modificado depois da invocação do processo especificado na subcláusula 6.4.2 (apresentado abaixo).
[0188] Em um exemplo, a subcláusula 6.4.1 é apresentada abaixo, incluindo um processo de inicialização para uma lista de imagem de referência para as referências de predição de intervisualização: * Registros para esse processo são uma lista de imagens de referência RefPicListX (com X sendo 0 ou 1), inter_view_flag e informação de dependência de visualização que foi decodificado a partir de seq_parameter_set_mvc_extension(). * O resultado desse processo é possivelmente a lista de imagem de referência modificada RefPicListX, que ainda é referida como uma lista de imagem de referência inicial RefPicListX. * Com i sendo o valor de view_idx para a fatia atual, as imagens de referência de intervisualização e componentes de referência de intervisualização apenas são anexados à lista de imagens de referência como especificado abaixo: * Para cada valor do índice de referência intervisualização j a partir de 0 até num_ref_views[i]-1, inclusive, em ordem ascendente de j, a referência de predição de intervisualização com view_idx igual a ref_view_idx[i][j] da mesma unidade de acesso que a fatia atual é anexada a RefPicListX.
[0189] Em um exemplo, a subcláusula 6.4.2 é apresentada abaixo, incluindo um processo de modificação para as listas de imagem de referência: * O registro no processo é a lista de imagens de referência RefPicList0 e, quando da decodificação de uma fatia B, também a lista de imagem de referência RefPicList1. * Resultados desse processo são possivelmente uma lista de imagens de referência modificada RefPicList0 e, quando da decodificação de uma fatia B, também uma lista de imagem de referência possivelmente modificada RefPicList1. * Quando ref_pic_list_modification_flag_10 for iguala 1, as etapas ordenadas a seguir são especificadas: 1. Deixe refIdxL0 ser um índice na lista de imagens de referência RefPicList0. É inicialmente configurada para que seja igual a 0. 2. Os elementos de sintaxe correspondentes modification_of_nums_idc são processados na ordem em que ocorrem na sequência de bits. Para cada um desses elementos de sintaxe, o seguinte se aplica: * Se modification_of_pic_nums_idc for igual a 0 ou iguala 1, o processo especificado na subcláusula 6.4.2.1 (apresentado abaixo) é invocado com RefPicList0 e refIdxL0 fornecido como entrada, e a saída é designada para RefPicList0 e refIdxL0. * Do contrário, se modification_of_pic_nums_idc for igual a 2, o processo especificado na subcláusula 6.4.2.2 (apresentado abaixo) é invocado com RefPicList0 e refIdxL0 fornecido como entrada, e a saída é designada pra RefPicList0 e refIdxL0. * Do contrário, se modification_of_pic_nums for igual a 4 ou igual a 5, o processo especificado na subcláusula 6.4.2.3 (apresentado abaixo) é invocado com RefPicList0 e refIdxL0 fornecidos como entrada, e a saída é designada para RefPicList0 e refIdxL0. * Do contrário (modification_of_pic_nums_idc é igual a 3), o processo de modificação para a lista de imagens de referência RefPicList0 é encerrado. * Quando ref_pic_list_modification_flag_11 é igual a 1, as seguintes etapas ordenadas são especificadas: 1. Deixe refIdxL1 ser um índice dentro da lista de imagens de referência RefPicList1. É inicialmente configurado para 0. 2. Os elementos de sintaxe correspondentes modification_of_pic_nums_idc são processados na ordem em que ocorrem na sequência de bits. Para cada um desses elementos de sintaxe, o seguinte se aplica. * Se modification_of_pics_num_idc for iguala 0 ou igual a 1, o processo especificado na subcláusula 6.4.2.1 (apresentado abaixo) é invocado com RefPicList1 e refIdxL1 fornecidos como entrada, e a saída é designada para RefPicList1 e refIdxL1. * Do contrário, se modification_of_pic_nums_idc for iguala 2, o processo especificado na subcláusula 6.4.2.2 (apresentado abaixo) é invocado com RefPicList1 e refIdxL1 fornecidos como entrada, e a saída é designada para RefPicList1 e refIdxL1. * Do contrário, se modification_of_pic_nums_idc for igual a 4 ou igual a 5, o processo especificado na subcláusula 6.4.2.3 (apresentado abaixo) é invocado com RefPicList1 e refIdx1 fornecidos como entrada, e a saída é designada para RefPicList1 e refIdxL1. * Do contrário (modification_of_pic_nums_idc é igual a 3), o processo de modificação para a lista de imagens de referência RefPicList1 é encerrado.
[0190] Em um exemplo, a subcláusula 6.4.2.1 é apresentada abaixo, incluindo um processo de modificação de uma lista de imagens de referência para imagens de referência de curto termo para interpredição: * Os registros desse processo são um índice refIdxLX e a lista de imagens de referência RefPicListX (com X sendo igual a 0 ou 1). * Os registros desse processo são um índice incrementado refIdxLX e uma lista de imagens de referência RefPicListX. * A variação picNumLXNoWrap é derivada como segue: * Se modification_of_pic_nums_idc for igual a 0, if(picNumLXPred - (abs_diff_pic_num_minus1 + 1) < 0) picNumLxNoWrap = picNumLXPred - (abs_diff_pic_num_minus1 + 1) + MxPicNum (H- 1) ou picNumLXNoWrap = picNumLXPred - (abs_diff_pic_num_minus1 + 1) * Do contrário (modification_of_pic_nums_idc é igual a 1), if)picNumLXPred + (abs_diff_pic_num_minus1 + 1) >= MaxPicNum) picNumLXNoWrap = picNumLXPred + (abs_diff_pic_num_minus1 + 1) - MaxPicNum (H-2) ou picNumLXNoWrap = picNumLXPred + (abs_diff_pic_num_minus1 + 1) onde picNumLXPred é o valor de predição para a variável picNumLXNoWrap. Quando o processo especificado nessa subcláusula é invocado pela primeira vez para uma fatia (isso é, para a primeira ocorrência de modification_of_pic_nums_idc igual a 0 ou 1 em ref_pic_list_modification()syntax), picNumL0Pred e picNumL1Pred são inicialmente configurados iguais a CurrPicNum. Depois de cada designação de picNumLXNoWrap, o valor de picNumLXNoWrap é designado para picNumLXPred.
[0191] Em alguns exemplos, a variável picNumLX é derivada como especificado pelo seguinte pseudocódigo: if(picNumLXNoWrap > CurrPicNum) picNumLX = picNumLXNoWrap = MaxPicNum (H-3) ou picNumLX = picNumLXNoWrap onde picNumLX pode ser igual a PicNum de uma imagem de referência que é marcada como "utilizado para referência de curto termo" e pode não ser igual a PicNum de uma imagem de referência de curto termo que é marcada como "não existente". O processo a seguir pode ser conduzido para colocar a imagem com o número de imagem de curto termo picNumLX na posição de índice refIdxLX, mudando a posição de quaisquer outras imagens restantes para depois na lista, e incrementando o valor de refIdxLX: for (cIdx = num_ref_idx_1X_active_minus1 + 1; cIdx > refIdxLX; cIdx --) RefPicListX[cIdx] = RefPicListX[cIdx - 1] RefPicListX[refIdxLX++] = imagem de referência de curto termo com PicNum igual a picNumLX nIdx = refIdxLX for(cIdx = refIdxLX; cIdx <= num_ref_idx_1X_active_minus1 + 1; cIdx++) (H-4) if(PicNumF(RefPicListX[cIdx])!=picNumLX || viewIDX(RefPicListX[cIdx])!=currViewIDX) RefPicListX[nIdx++] = RefPicListX[cIdx] onde a função viewIDX(refpic) retorna view_idx da imagem de referência refpic, a variável currViewIDX sendo igual a view_idx da fatia atual, e a função PicNumF (RefPicListX[cIdx]) sendo derivada como segue: * Se a imagem de referência RefPicListX[cIdx] for marcada como "utilizada para referência de curto termo", PicNumF (RefPicListX [cIdx]) é PicNum da imagem RefPicListX[cIdx]. * Do contrário, (a imagem de referência RefPicListX[cIdx] não é marcada como "utilizada para referência de curto termo"), PicNumF(RefPicListX[cIdx]) é igual a MaxPicNum.
[0192] Em um exemplo, a subcláusula 6.4.2.2 é apresentada abaixo, incluindo um processo de modificação de uma lista de imagens de referência para imagens de referência de curto termo para interpredição. * Os registros nesse processo são um índice refIdxLX (com X sendo 0 ou 1) e a lista de imagens de referência RefPicListX. desse processo são um índice incrementado refIdxLX e uma lista de imagens de referência modificada RefPicListX. * O procedimento a seguir é conduzido para colocar a imagem com o número de imagem de longo termo long_term_pic_num na posição de índice refIdxLX, mudar a posição de quaisquer outras imagens restantes para depois na lista, e incrementar o valor de refIdxLX: for(cIdx = num_ref_idx_1X_active_minus1 + 1; cIdx > refIdxLX; cIdx - -) RefPicListX[cIdx] = RefPicListX[cIdx-1] RefPicListX[refIdxLX++] = imagem de referência de longo termo com LongTermPicNum igual a long_term_pic_num nIdx = refIdxLX for(cIdx = refIdxLX; cIdx <= num_ref_idx_1X_active_minus1 + 1; cIdx++)(H-5) if(LongTermPicNumF(RefPicListX[cIdx])!=long_term_ pic_num|| viewIDX(RefPicListX[cIdx])! = currViewIDX) RefPicListX[nIdx++]=RefPicListX[cIdx] onde a função viewIDX(refpic) retorna view_idx da imagem de referência refpic, a variável currViewIDX é igual a view_idx da fatia atual, e a função LongTermPicNumF(RefPicListX[cIdx]) pode ser derivada como segue: * Se a imagem de referência RefPicListX[cIdx] for marcada como "utilizada para referência de longo termo", LongTermPicNumF[RefPicListX[cIdx]" é LongTermPicNum da imagem RefPicListX[cIdx]. * Do contrário (a imagem de referência RefPicListX [cIdx] não é marcada como "utilizada para referência de longo termo"), LongTermPicNumF (RefPicListX[cIdx]) é igual a 2* (maxLongTermFrameIdx+1).
[0193] Em um exemplo, a subcláusula 6.4.2.3 é apresentada abaixo, que inclui um processo de modificação de uma lista de imagens de referência para as referências de predição de intervisualização; * Os registros para esse processo são a lista de imagens de referência RefPicListX (com X sendo 0 ou 1) e um índice refIdxLX nessa lista. * As saídas desse processo são uma lista de imagens de referência modificada RefPicListX (com X sendo 0 ou 1) e um índice incrementado refIfxLX. * Deixe currVOIdx ser a variável VOIdx da fatia atual. A variável maxViewIdx é configura igual a num_ref_views[currVOIdx]. * A variável picInterViewIdxLX é derivada como segue: *Se modification_of_pic_nums_idc for igual a 4, if(picInternViewIdxLXPred = picInterViewIdxLXPred - (abs_diff_inter_view_minus1 + 1) + maxViewIdx (H-6) ou picInterViewIdxLX = picInterViewIdxLXPred - (abs_diff_inter_view_minus1 + 1) * Do contrário (modification_of_pic_nums_idc é igual a 5), if(picInterViewIdxLXPred + (abs_diff_inter_view_minus1 + 1) >= maxViewIdx) picInterViewIDxLX = picInterViewIdxLXPred + (abs_diff_inter_view_minus1 + 1) - maxViewIdx (H-7) ou picInterViewIdxLX = picInterViewIdxLXPred + (abs_diff_inter_view_minus1 + 1) onde picInterViewIdxLXPred é o valor de predição para a variável picInterViewIdxLX. Quando o processo especificado nessa subcláusula é invocado pela primeira vez para RefPicList0 ou RefPicList1 de uma fatia (isso é, para a primeira ocorrência de modification_of_pic_nums_idc igual a 4 ou 5 na ref_pic_list_modification() syntax), picInterViewIdxL0Pred e picInterViewIdxL1Pred podem ser inicialmente configuradas iguais a -1. Depois de cada designação de picInterViewIdxLX, o valor de picInterViewIdxLX é designado para picInterViewIdxLXPred.
[0194] A sequência de bits pode não conter dados que resultam em picInterViewIdxLX igual a menos de 0 ou picInterViewIdxLX superior a maxViewIdx. A variável targetViewIDX pode ser derivada como segue: targetViewIDX = ref_view_idx[currVOIdx][picInterViewIdxLX] (H-8).
[0195] O procedimento a seguir pode ser conduzido para colocar a referência de predição de intervisualização com o índice de referência de intervisualização igual a picInterViewIdxLX na posição de índice refIdxLX e muda a posição de quaisquer imagens restantes para depois na lista: for(cIdx = num_ref_idx_1X_active_minus1 + 1; cIdx > refIdxLX; cIdx - -) RefPicListX[cIdx] = RefPicListX[cIdx - 1] RefPicListX[refIdxLX ++] = referência de predição de intervisualização com view_idx igual a targetViewIDX nIdx = refIdxLX for(cIdx = refIdxLX; cIdx <= num_ref_idx_1X_active_minus1+ 1; cIdx ++) (H-10) if(viewIDX(RefPicListX[cIdx])!=targetViewIDX || PictureOrderCnt(RefPicListX[cIdx])!=currPOC) RefPicListX[nIdx++] = RefPicListX[cIdx] onde a função viewIDX(refpic) retorna view_idx da imagem de referência refpic, a variável currViewIDX é igual a view_idx da fatia atual, e a variável currPOC é igual a PicOrderCnt() da fatia atual.
[0196] Em alguns exemplos, um processo padrão pode ser utilizado para combinar as listas de imagens de referência. Por exemplo, um processo de combinação de lista de imagem de referência padrão pode incluir a verificação se uma imagem de referência (de RefPicList0 ou RefPicList1) é a primeira ocorrência da imagem de referência que está sendo adicionada à lista combinada. Para realizar tal verificação, um codificador de vídeo (tal como o codificador de vídeo 20 ou decodificador de vídeo 30) pode comparar uma imagem atual CurrPic e qualquer imagem PicA em uma lista, incluindo imagens de referência de intervisualização e imagens de referência temporais. A comparação pode ser feita como segue: if(ViewIDX(CurrPic) = = ViewIDX(PicA)&&POC(CurrPic)==POC (PicA)) retorna verdadeiro; ou retorna falso;
[0197] A figura 5A é um diagrama conceitual ilustrando um exemplo de uma estrutura de sequência de bits 100 que pode ser utilizada em uma implementação de uma ou mais das técnicas dessa descrição. A sequência de bits 100 pode se conformar a um padrão de codificação de vídeo, tal como o padrão HEVC. Ademais, em alguns exemplos, a sequência de bits 100 pode se conformar a uma extensão MVC para um padrão de codificação de vídeo.
[0198] No exemplo ilustrado na figura 5A, a sequência de bits 100 inclui uma pluralidade de unidades de acesso 102-1 a 102-N (coletivamente, unidades de acesso 102). Como notado acima, as unidades de acesso 102 podem incluir um conjunto de componentes de visualização (referidos como visualizações), tal como as visualizações 104-1 a 104-M (coletivamente, visualizações 104). Em geral, as unidades de aceso 102 incluem todos os dados para um caso temporal comum, por exemplo, dados para um componente de visualização por visualização. Em alguns exemplos, cada unidade de acesso de unidades de acesso 102 inclui o mesmo número de visualizações 104. A decodificação de cada unidade de acesso das unidades de acesso 102 pode resultar em uma imagem decodificada por visualização. As unidades de acesso 102 podem conter dados de vídeo codificados que podem ser utilizados para criar a reprodução de vídeo tridimensional.
[0199] A figura 5B é um diagrama conceitual ilustrando um exemplo de uma visualização 104-N que pode ser incluída na estrutura da sequência de bits 100 da figura 5A. Em geral, cada componente de visualização em uma unidade de acesso (tal como as visualizações 104 na unidade de acesso 102-N) contém um conjunto de unidades NAL de camada de codificador/decodificador (codec) de vídeo (VCL). Isso é, em um exemplo ilustrado na figura 5B, a visualização 104-N inclui unidades NAL 106-1 a 106-3 em uma forma ou ordem específica. Tipicamente, os componentes de visualização são dispostos na mesma ordem em cada unidade de acesso, de modo que o componente de visualização k em cada unidade de acesso corresponda à mesma visualização. Em outros exemplos, a visualização 104-N pode incluir outros números de unidade NAL.
[0200] A figura 5C é um diagrama conceitual ilustrando uma unidade NAL ilustrativa 108, que pode ser similar em estrutura às unidades NAL 106 ilustradas na figura 5B. A unidade NAL 108 geralmente inclui um cabeçalho de unidade NAL 110 e uma carga útil 112. Adicionalmente, o cabeçalho de unidade NAL 110 inclui uma primeira parte 114 e uma extensão de cabeçalho de unidade NAL 116, que pode se conformar à extensão MVC/AVC.
[0201] Por exemplo, a primeira parte 114 inclui o elemento ref_idc e um elemento de tipo de unidade NAL. O elemento ref_idc pode indicar se a unidade NAL é utilizada como uma referência para outras unidades NAL. Por exemplo, um valor ref_idc de 00 pode indicar que o conteúdo de NALU não é utilizado para reconstruir as imagens armazenadas (que podem ser utilizadas para a referência futura). Tais NALUs podem ser descartadas sem arriscar a integridade das imagens de referência. Os valores acima de 00 podem indicar que a decodificação de NALU necessária para manter a integridade das imagens de referência. O elemento de tipo de unidade NAL pode indicar o tipo de pacotes da unidade NAL 108.
[0202] A extensão de cabeçalho de unidade NAL 116 geralmente inclui um indicador IDR (IDR), um ID de prioridade (priority_id), um ID de visualização (view_id), um ID temporal (temporal_id), um indicador de imagem âncora (APF) e um indicador de intervisualização (IVF). Como descrito com relação à figura 1 acima, o indicador IDR pode indicar se a unidade NAL 108 pertence a uma atualização de decodificação instantânea (IDR) ou uma imagem view-IDR (V- IDR) que pode ser utilizada como um ponto de acesso randômico de GOP fechado. Priority_id pode ser utilizado com um processo de adaptação de sequência de bits que varia a sequência de bits de acordo com a alteração das condições de rede e/ou capacidades de decodificador de vídeo 30 e/ou dispositivo de exibição 32 (por exemplo, tal como o processo de adaptação de passagem única). View_id pode ser utilizado para indicar o identificador de visualização para a visualização à qual a unidade NAL pertence. Temporal_id pode ser utilizado para indicar o nível temporal da unidade NAL atual, que pode corresponder a uma taxa de quadro em particular. APF pode ser utilizado para indicar se a unidade NAL pertence a uma imagem âncora que pode ser utilizada como um ponto de acesso randômico de GOP aberto. IVF pode ser utilizado para indicar se a unidade NAL é utilizada para predição de intervisualização para unidades NAL em outras visualizações.
[0203] Como discutido acima, view_id de MVC/AVC tem 10 bits de comprimento, e pode ser utilizado para identificar de forma singular mais de 1000 visualizações diferentes. Geralmente, no entanto, o número de visualizações codificadas de fato é tipicamente de várias ordens de magnitude inferior a 1000 visualizações. Por exemplo, a figura 4 inclui oito visualizações para um conteúdo de multimídia MVC determinado. Visto que o cabeçalho de unidade NAL 110 é incluído para cada unidade NAL, view_id pode consumir uma quantidade substancial da sequência de bits. Aspectos dessa descrição, como descrito com relação ao exemplo ilustrado na figura 5D, podem eliminar view_id a partir do cabeçalho de unidade NAL, reduzindo, dessa forma, o número de bits necessários para codificar os dados de vídeo MVC.
[0204] A figura 5D é um diagrama conceitual ilustrando uma unidade NAL ilustrativa 120, que pode ser similar em estrutura a unidades NAL 106 ilustradas na figura 5B. O exemplo ilustrado na figura 5D ilustra uma unidade NAL ilustrativa de acordo com aspectos dessa descrição. Por exemplo, a unidade NAL 120 inclui um cabeçalho de unidade NAL para aspectos dessa descrição. Por exemplo, a unidade NAL 120 inclui um cabeçalho de unidade NAL 122 e carga útil 124. Adicionalmente, o cabeçalho de unidade NAL inclui uma primeira parte 126 e uma extensão de cabeçalho de unidade NAL 128.
[0205] Como com o exemplo ilustrado na figura 5C, a primeira parte 126 inclui um elemento ref_idc e um elemento de tipo de unidade NAL. O elemento ref_idc pode indicar se a unidade NAL é utilizada como uma referência para outras unidades NAL. O elemento de tipo de unidade NAL pode indicar o tipo de pacotes de unidade NAL 120.
[0206] Como ilustrado no exemplo da figura 5D, no entanto, ao invés de incluir um view_id na extensão de cabeçalho de unidade NAL 128, um índice de ordem de visualização é sinalizado como parte do cabeçalho de unidade NAL 122. Isso é, de acordo com os aspectos dessa descrição, o índice de ordem de visualização do cabeçalho de unidade NAL 122 pode substituir view_id que é sinalizado no cabeçalho de unidade NAL 110 (figura 5C). Como notado acima, a ordem de visualização geralmente descreve a ordenação das visualizações em uma unidade de acesso, tal como uma das unidades de acesso 102 (figura 5A). O índice de ordem de visualização pode indicar uma visualização em particular, tal como uma das visualizações 104, na ordem de visualização da unidade de acesso. Isso é, o índice de ordem de visualização pode descrever a ordem de decodificação de um componente de visualização correspondente de uma unidade de acesso.
[0207] Uma tabela de sintaxe de cabeçalho de unidade NAL ilustrativa para a extensão 128 é fornecida na Tabela 12 abaixo. Tabela 12 - extensão MVC de cabeçalho de unidade NAL
Figure img0013
[0208] No exemplo ilustrado na figura 13, um non_idr_flag que é igual a 0 pode indicar que a unidade de acesso atual é uma unidade de acesso IDR. O valor de non_idr_flag pode ser igual para todas as unidades NAL VCL de uma unidade de acesso. Em alguns casos, non_idr_flag pode ser inferido como sendo igual a 0 para uma unidade NAL de visualização de base que possui nal_unit_type igual a 5. Adicionalmente, non_idr_flag pode ser inferido como sendo igual a 1 para uma unidade NAL de visualização básica que possui nal_unit_type igual a 1. Para unidades NAL nas quais non_idr_flag está presente, uma variável IdrPicFlag pode ser modificada pela configuração do indicador igual a 1 quando non_idr_flag é igual a 0, e configurando igual a 0 quando non_idr_flag é igual a 1.
[0209] Adicionalmente, um anchor_pic_flag que é igual a 1 pode especificar que a unidade de acesso atual é uma unidade de acesso âncora. Em alguns casos, anchor_pic_flag pode ser inferido como sendo igual a 0 para uma unidade NAL de visualização base que possui nal_unit_type igual a 1, e pode ser inferido como igual 1 para uma unidade NAL de visualização de base que possui nal_unit_type igual a 4 (Atualização de Decodificação Limpa).
[0210] View_idx pode especificar um índice de ordem de visualização para a unidade NAL. Em geral, as unidades NAL com o mesmo valor de view_idx pertence à mesma visualização. O tipo de unidade NAL igual a 20 pode ser utilizado para indicar um tipo de unidade NAL para visualizar os componentes não na visualização de base.
[0211] Como ilustrado no exemplo da tabela 12, em contraste com o exemplo ilustrado na figura 5C, priority_id, temporal_id, e inter_view_flag foram removidos, e view_id foi substituído por view_idx. Em alguns exemplos, inter_view_flag pode ser movido para fora da extensão 128, como ilustrado no cabeçalho de unidade NAL ilustrativo da tabela 13 abaixo: Tabela 13 - cabeçalho de unidade NAL para visualização de base
Figure img0014
[0212] No exemplo ilustrado na Tabela 13, um elemento inter_view_flag que é igual a 0 pode indicar que o componente de visualização atual não é utilizado para predição de intervisualização por qualquer outro componente de visualização na unidade de acesso atual. Um inter_view_flag que é igual a 1 pode indicar que o componente de visualização atual pode ser utilizado para predição de intervisualização por outros componentes de visualização na unidade de acesso atual. O valor de inter_view_flag pode ser igual para todas as unidades NAL VCL de um componente de visualização.
[0213] Adicionalmente, no exemplo ilustrado na Tabela 13, quando nal_unit_type é igual a 1 ou 5, um índice de ordem de visualização pode ser inferido para 0, e view_id desse componente de visualização é view_id[0]. Em tal exemplo, uma extensão de cabeçalho de unidade NAL pode não ser necessária. Isso é, em uma sequência MVC que inclui apenas duas visualizações (isso é, para vídeo estéreo), um índice de ordem de visualização pode não ser necessário, como um decodificador (tal como o decodificador de vídeo 30) pode sempre decodificar uma primeira visualização (por exemplo, visualização 0) antes da decodificação de uma segunda visualização (por exemplo, visualização 1).
[0214] Em alguns exemplos, uma unidade NAL de prefixo, que pode ser não maior do que o necessário para uma visualização de base (por exemplo, visualização 0). Por exemplo, uma unidade NAL de prefixo para uma visualização de base pode não ser maior do que o necessário, visto que um índice de ordem de visualização é sempre igual a zero para a visualização de base, e uma posição temporal da visualização de base pode ser determinada utilizando-se temporal_id. De acordo, temporal_id em um cabeçalho de unidade NAL fornece toda a informação necessária para associar um componente de visualização em particular com uma visualização em particular e com um local temporal adequado.
[0215] A Tabela 14 inclui outro cabeçalho de unidade NAL, que se refere a uma extensão de cabeçalho de unidade NAL: Tabela 14 - cabeçalho de unidade NAL
Figure img0015
[0216] No exemplo ilustrado na Tabela 14, um inter_view_flag que é igual a 0 pode indicar que o componente de visualização atual não é utilizado para predição de intervisualização por qualquer outro componente de visualização na unidade de acesso atual. Um inter_view_flag que é igual a 1 pode indicar que o componente de visualização atual pode ser utilizado para predição de intervisualização por outros componentes de visualização na unidade de acesso atual. O valor de inter_view_flag pode ser igual para todas as unidades NAL VCL de um componente de visualização. Adicionalmente, nal_unit_header_mvc_extension se refere a uma extensão, tal como a ilustrada na Tabela 12 acima.
[0217] De acordo com outros aspectos dessa descrição, um cabeçalho de unidade NAL para uma sequência de bits MVC pode ser projetado de acordo com a Tabela 15 abaixo: Tabela 15 - cabeçalho de unidade NAL
Figure img0016
[0218] No exemplo ilustrado na Tabela 15, a formação do cabeçalho de unidade NAL pode depender, por exemplo, de nal_unit_type. Isso é, por exemplo, quando nal_unit_type é igual a 20, e a unidade NAL MVC, a unidade NAL pode incluir non_idr_flag, anchor_pic_flag, e view_idx descritos acima. De acordo, para um perfil estéreo, um cabeçalho de unidade NAL pode ser projetado de acordo com a Tabela 16 abaixo: Tabela 16 - cabeçalho de unidade NAL
Figure img0017
[0219] Em outro exemplo adicional, de acordo com outros aspectos dessa descrição, um cabeçalho de unidade NAL para uma sequência de bits MVC pode ser projetado de acordo com a Tabela 17 abaixo: Tabela 17 - cabeçalho de unidade NAL
Figure img0018
[0220] Independentemente da configuração particular do cabeçalho de unidade NAL, como descrito acima com relação à figura 4, um conjunto de parâmetros de sequência (SPS) pode fornecer uma relação entre view_ids para as visualizações e índices de ordem de visualização para as visualizações. De acordo, utilizando-se o índice de ordem de visualização e os dados em SPS, view_id de 10 bits de MVC/AVC pode ser substituído no cabeçalho de unidade NAL pelo índice de ordem de visualização, o que pode resultar em uma economia de bits através do esquema MVC/AVC. O índice de ordem de visualização pode ser utilizado com um valor POC ou valor de quadro (número de quadro) para identificar um componente de visualização de uma sequência de bits. Por exemplo, com referência à grade de componentes de visualização ilustrada na figura 4 para uma grade Cartesiana, o índice de ordem de visualização pode fornecer as coordenadas y (por exemplo, S0, S1, S2) de um componente de visualização em particular, enquanto o valor POC ou valor de quadro pode fornecer as coordenadas x (por exemplo, T0, T1, T2) do componente de visualização particular. A identificação dos componentes dessa forma podem ser implementados, por exemplo, em uma lista de imagens de referência.
[0221] De acordo com outros aspectos dessa descrição, a dependência de visualização para cada visualização de uma sequência de bits MVC pode ser sinalizada de forma comum para todos os componentes de visualização, independentemente de se os componentes de visualização são para imagens âncora e imagens não âncora. Em alguns exemplos, um SPS pode incluir dependências de visualização para os componentes de visualização, ao invés de se basear na informação em um cabeçalho de unidade NAL. Dessa forma, anchor_pic_flag utilizado na extensão de cabeçalho de unidade NAL 128 pode ser removido.
[0222] Nesse exemplo, um componente de visualização de uma visualização dependente sinalizada pode ser utilizada como uma imagem de referência em ambas a Lista0 e Lista1, como descrito acima com relação à figura 4. Adicionalmente, a construção de lista de imagem de referência e a reordenação da lista de imagem de referência para a Lista0 e Lista 1 também podem ser baseadas em sinalização comum para imagens âncora e imagens não âncora. Em alguns exemplos, um nível de sequência, mensagem de informação de melhoria suplementar (SEI) pode ser utilizada para indicar quando uma imagem não âncora possui uma dependência de visualização diferente de uma imagem âncora.
[0223] De acordo com outros aspectos dessa descrição, ao invés de sinalizar priority_id no cabeçalho de unidade NAL, o codificador de vídeo 20 pode fornecer valores de priority_id em um SPS. Como discutido acima, em alguns exemplos, o roteador 36 pode utilizar valores de priority_id SPS para filtrar determinadas visualizações. Isso é, o roteador 36 pode receber a sequência de bits total, mas extrai uma subsequência de bits incluindo unidades NAL possuindo valores priority_id em e abaixo de um valor de prioridade especificado pelo dispositivo de destino 14, e envia a subsequência de bits para o dispositivo de destino.
[0224] Adicionalmente, de acordo com os aspectos dessa descrição, uma mensagem de adaptação de prioridade pode ser utilizada para realizar a adaptação. Por exemplo, a Tabela 18 abaixo ilustra uma mensagem SEI de adaptação de prioridade ilustrativa: Tabela 18 - mensagem SEI de adaptação de prioridade:
Figure img0019
[0225] No exemplo ilustrado na Tabela 18, num_temporal_id_minus1 plus 1 pode indicar temporal_id mais alto das unidades NAL da sequência de bits MVC. O elemento same_priority_id_flag[i][j] é igual a 1 e pode indicar que priority_id das unidades NAL com temporal_id i e um índice de ordenação de visualização j é igual a priority_id sinalizado anteriormente, que pode ser priority_id[i][j-1], quando j > 0, ou priority_id[i-1][j] quando j = 0 e i>0. O elemento priority_id[i][j] pode especificar um identificador de prioridade para unidades NAL com temporal_id igual a i e o índice de ordem de visualização igual a j. Um valor inferior de priority_id pode indicar uma prioridade maior.
[0226] A adaptação pode ser baseada no cabeçalho de unidade NAL e uma mensagem SEI, tal como ilustrado na Tabela 18. Por exemplo, um processo de adaptação pode assumir que temporal_id e view_idx da unidade NAL é TID e VIDX, e priority_id alvo é PID. Nesse exemplo, se priority_id[TID][VIDX] não for maior que PID, a unidade NAL é mantida, do contrário, a unidade NAL é filtrada.
[0227] Enquanto o exemplo descreve a informação de prioridade em uma mensagem SEI, em outros exemplos, a informação descrita como sendo sinalizada na mensagem SEI pode ser sinalizada como uma parte opcional de um conjunto de parâmetros, tal como SPS MVC.
[0228] A figura 6 é um fluxograma ilustrando um método ilustrativo de codificação de uma sequência de bits de múltiplas visualizações. O exemplo ilustrado na figura 6 é geralmente descrito como sendo realizado pelo codificador de vídeo 20 (figuras 1 e 2). No entanto, deve-se compreender que o processo descrito com relação à figura 6 pode ser realizada por uma variedade de outros processadores, unidades de processamento, unidades de codificação com base em hardware tal como codificador/decodificadores (CODECs) e similares.
[0229] No exemplo da figura 6, o codificador de vídeo 20 pode codificar dados de vídeo para uma pluralidade de componentes de visualização (140). Por exemplo, o codificador de vídeo 20 pode codificar uma pluralidade de visualizações diferentes, com cada visualização correspondendo a uma perspectiva diferente, ou ângulo, no qual os dados de vídeo correspondente de uma cena comum foram capturados. Como notado acima, uma imagem em particular de uma visualização particular é referida como um componente de visualização. Isso é, um componente de visualização de uma visualização corresponde ao caso temporal particular da visualização.
[0230] O codificador de vídeo 20 também pode formar unidades NAL que incluem uma indicação de uma ordem de decodificação dos componentes de visualização (142). Por exemplo, como descrito com relação às figuras 5A a 5D, de acordo com os aspectos dessa descrição, o codificador de vídeo 20 pode fornecer uma indicação de um índice de ordem de visualização (view_idx) nos cabeçalhos de unidade NAL que fornece uma indicação da ordem de decodificação dos componentes de visualização. Em geral, as unidades NAL com o mesmo valor de view)idx pertencem à mesma visualização.
[0231] O codificador de vídeo 20 também pode fornecer informação, separadamente das unidades NAL que fornecem uma indicação de relações entre os identificadores de visualização e a ordem de decodificação (144). Em alguns exemplos, o codificador de vídeo 20 pode gerar um conjunto de parâmetros, tal como um SPS, que indica uma relação entre identificadores de visualização para as visualizações e índices de ordem de visualização para as visualizações. Em outros exemplos, o codificador de vídeo 20 pode indicar a relação entre os índices de ordem de visualização e identificadores de visualização de uma forma diferente.
[0232] Utilizando o índice de ordem de visualização e a informação separada, o codificador de vídeo 20 pode substituir o identificador de visualização de 10 bits tipicamente incluído em um cabeçalho de unidade NAL pelo índice de ordem de visualização, que pode fornecer uma economia de bits. Por exemplo, um índice de ordem de visualização pode incluir substancialmente menos bits do que um identificador de visualização. Enquanto o codificador de vídeo 20 deve sinalizar a relação entre o índice de ordem de visualização e os identificadores de visualização, por exemplo, em um SPS, os cabeçalhos de unidade NAL tipicamente consomem muito mais bits do que tal sinalização. A substituição de um identificador de visualização em um cabeçalho de unidade NAL com um índice de ordem de visualização pode reduzir o tamanho dos cabeçalhos de unidade NAL, alcançando, dessa forma, uma economia de bit através da codificação de um identificador de visualização em um cabeçalho de unidade NAL.
[0233] Deve-se compreender também que as etapas ilustradas e descritas com relação à figura 6 são fornecidas meramente como um exemplo. Isso é, as etapas do método da figura 6 não precisam ser necessariamente realizadas na ordem ilustrada na figura 6, e menos, mais ou outras etapas podem ser realizadas.
[0234] A figura 7 é um fluxograma ilustrando um método ilustrativo de decodificação de uma sequência de bits de múltiplas visualizações. O exemplo ilustrado na figura 7 é geralmente descrito como sendo realizado pelo decodificador de vídeo 30 (figuras 1 e 3). No entanto, deve-se compreender que o processo descrito com relação à figura 7 pode ser realizado por uma variedade de outros processadores, unidades de processamento, unidades de codificação com base em hardware tal como codificador/decodificadores (CODECs) e similares.
[0235] No exemplo da figura 7, o decodificador de vídeo 30 pode receber uma ou mais unidades NAL para cada componente de visualização que inclui informação indicativa de uma ordem de decodificação dos componentes de visualização respectivos (150). De acordo com os aspectos dessa descrição, como descrito com relação à figura 6, a ordem de decodificação dos componentes de visualização respectivos podem ser indicados utilizando-se um índice de ordem de visualização. De acordo, o decodificador de vídeo 30 pode receber uma indicação de um índice de ordem de visualização (view_idx) nos cabeçalhos de unidade NAL que fornecem uma indicação da ordem de decodificação dos componentes de visualização. Em geral, as unidades NAL com o mesmo valor de view_idx pertencem à mesma visualização.
[0236] O decodificador de vídeo 30 também pode receber informação indicando as relações entre identificadores de visualização e a ordem de decodificação dos componentes de visualização (152). Em alguns exemplos, o decodificador de vídeo 30 pode receber um conjunto de parâmetros, tal como um SPS, que indica uma relação entre identificadores de visualização para as visualizações e índices de ordem de visualização para as visualizações. Em outros exemplos, o decodificador de vídeo 30 pode receber uma indicação diferente da relação entre os índices de ordem de visualização e identificadores de visualização.
[0237] O decodificador de vídeo 30 também pode decodificar os dados de vídeo de múltiplas visualizações utilizando informação recebida. Isso é, por exemplo, o decodificador de vídeo pode decodificar cada uma das visualizações, e determinar o identificador de visualização adequado utilizando a informação separada recebida. O decodificador de vídeo 30 pode então apresentar uma representação 3D utilizando as visualizações, por exemplo, no dispositivo de exibição 32.
[0328] Deve-se compreender que as etapas ilustradas e descritas com relação à figura 7 são fornecidas meramente como um exemplo. Isso é, as etapas do método da figura 7 não precisam necessariamente ser realizadas na ordem ilustrada na figura 7, e menos, mais ou outras etapas podem ser realizadas.
[0329] A figura 8 é um fluxograma ilustrando um método ilustrativo de codificação de uma sequência de bits de múltiplas visualizações. O exemplo ilustrado na figura 8 é geralmente descrito como sendo realizado pelo codificador de vídeo 20 (figuras 1 e 2). Em outros exemplos, o processo descrito com relação à figura 8 pode ser realizado por uma variedade de outros processadores, unidades de processamento, unidades de codificação com base em hardware tal como codificador/decodificadores (CODECs), e similares. No exemplo da figura 8, o codificador de vídeo 20 pode determinar, para qualquer componente de visualização de uma primeira visualização, a informação de visualização de referência indicando uma ou mais visualizações de referência para componentes de visualização de predição da primeira visualização (160). Por exemplo, como notado acima, as dependências de visualização podem ser sinalizadas da mesma forma para todos os componentes de visualização de uma visualização, independentemente de se um componente de visualização em particular de uma unidade de acesso em particular é uma imagem âncora (ponto de acesso randômico), ou se o componente de visualização em particular da unidade de acesso em particular é uma imagem não âncora. Em alguns casos, a informação de visualização de referência pode indicar dependências de visualização utilizando valores de índice de visualização de referência (valores de índice de ordem de visualização para as visualizações de referência). Isso é, a informação de visualização de referência pode conter valores de índice de visualização de referência para cada visualização de referência, que pode indicar a ordem de decodificação da visualização de referência em uma unidade de acesso. Em outros exemplos, a informação de visualização de referência pode conter valores de diferença do índice de visualização de referência, que podem indicar uma diferença entre um índice de ordem de visualização de uma visualização de referência em particular e um índice de ordem de visualização do componente de visualização atualmente sendo codificado. Nos exemplos nos quais os valores de índice de ordem de visualização são utilizados, como descrito acima, o codificador de vídeo 20 também pode fornecer informação adicional que indica as relações entre os valores de índice de ordem de visualização e os identificadores de visualização das visualizações.
[0240] O codificador de vídeo 20 também pode, quando da codificação de um primeiro componente de visualização em uma unidade de acesso na primeira visualização, incluir um ou mais candidatos de referência em uma lista de imagem de referência com base na unidade de acesso de onde o primeiro componente de visualização pertence, a informação de visualização de referência, e o número de visualizações de referência indicado pela informação de visualização de referência (162). Por exemplo, como descrito acima, o codificador de vídeo 20 pode construir uma lista de imagem de referência que inclui as imagens de referência candidatas para prever o primeiro componente de visualização (imagens de referência "candidatas", visto que as imagens de referência podem ser removidas de uma lista de imagem de referência final). O codificador de vídeo 20 pode identificar as imagens de referência candidatas de intervisualização em cada uma das visualizações de referência indicadas pela informação de visualização de referência que pertencem à mesma unidade de acesso (por exemplo, possuem o mesmo caso temporais) como o primeiro componente de visualização. O codificador de vídeo 20 pode adicionar todos os componentes de visualização identificados para a lista de imagem de referência.
[0241] De acordo, no exemplo ilustrado na figura 8, o codificador de vídeo 20 pode construir a lista de imagem de referência sem considerar se um componente de visualização atualmente sendo codificado é uma imagem âncora ou imagem não âncora. Ademais, o codificador de vídeo 20 pode construir a lista de imagem de referência sem considerar se as imagens de referência candidatas são incluídas na Lista 0 ou Lista 1. Isso é, o codificador de vídeo 20 pode construir uma Lista 0 de imagem de referência ou uma Lista 1 de imagem de referência utilizando a mesma informação de visualização de referência. Adicionalmente, o codificador de vídeo 20 pode adicionar os candidatos de referência identificados para ambas a Lista 0 ou Lista 1 da mesma forma.
[0242] O codificador de vídeo 20 também pode codificar o primeiro componente de visualização com base em um ou mais candidatos de referência na lista de imagem de referência (164). Por exemplo, o codificador de vídeo 20 pode identificar um componente de visualização na lista de imagem de referência, gerar dados residuais utilizando componente de visualização identificado, e codificar os dados residuais como descrito com relação à figura 2. O codificador de vídeo 20 também pode fornecer o primeiro componente de visualização codificado com a informação de visualização de referência determinada em uma sequência de bits codificada (166).
[0243] Deve-se compreender que as etapas ilustradas e descritas com relação à figura 8 são fornecidas meramente como um exemplo. Isso é, as etapas do método da figura 8 utilizados não precisam ser necessariamente realizados na ordem ilustrada na figura 8, e menos, mais ou outras etapas podem ser realizadas.
[0244] A figura 9 é um fluxograma ilustrando um método ilustrativo de decodificação de uma sequência de bits de múltiplas visualizações. O exemplo ilustrado na figura 9 é geralmente descrito como sendo realizado pelo decodificador de vídeo 30 (figuras 1 e 3). Em outros exemplos, o processo descrito com relação à figura 9 pode ser realizado por uma variedade de outros processadores, unidades de processamento, unidades de codificação com base em hardware tal como codificador/decodificadores (CODECs), e similares.
[0245] No exemplo ilustrado na figura 9, o decodificador de vídeo 30 pode obter, a partir de uma sequência de bits codificada e para qualquer componente de visualização de uma primeira visualização, a informação de visualização de referência indicando uma ou mais visualizações de referência para prever os componentes de visualização da primeira visualização (170). Por exemplo, como notado acima com relação à figura 8, as dependências de visualização podem ser sinalizadas da mesma forma para todos os componentes de visualização de uma visualização, independentemente de se um componente de visualização em particular de uma unidade de acesso particular é uma imagem âncora (ponto de acesso randômico), ou se o componente de visualização em particular da unidade de acesso particular é uma imagem não âncora. Em alguns casos, a informação de visualização de referência pode indicar as dependências de visualização utilizando os valores de índice de visualização de referência (os valores de índice de ordem de visualização para as visualizações de referência). Isso é, a informação de visualização de referência pode conter os valores de índice de visualização de referência para cada visualização de referência, que pode indicar a ordem de decodificação da visualização de referência em uma unidade de acesso. Em outros exemplos, a informação de visualização de referência pode conter valores de diferença de índice de visualização de referência, o que pode indicar uma diferença entre um índice de ordem de visualização de uma visualização de referência em particular e um índice de ordem de visualização do componente de visualização atualmente sendo codificado. Nos exemplos nos quais os valores de índice de ordem de visualização são atualizados, como descrito acima, o decodificador de vídeo 30 também pode obter informação adicional da sequência de bits codificada que indica as relações entre os valores de índice de ordem de visualização e identificadores de visualização das visualizações. Tal informação pode ser obtida a partir do nível de sequência.
[0246] O decodificador de vídeo 30 também pode, quando da decodificação de um primeiro componente de visualização em uma unidade de acesso na primeira visualização, incluir um ou mais candidatos de referência em uma lista de imagem de referência com base na unidade de acesso a partir da qual o primeiro componente de visualização pertence, a informação de visualização de referência, e o número de visualizações de referência indicado pela informação de visualização de referência (172). Por exemplo, como descrito acima, o decodificador de vídeo 30 pode construir uma lista de imagem de referência que inclui as imagens de referência candidatas para prever o primeiro componente de visualização. O decodificador de vídeo 30 pode identificar as imagens de referência candidatas de intervisualização em cada uma das visualizações de referência indicadas pela informação de visualização de referência que pertence à mesma unidade de acesso (por exemplo, possui um mesmo caso temporal) que o primeiro componente de visualização. O decodificador de vídeo 30 pode adicionar todos os componentes de visualização identificados para a lista de imagem de referência.
[0247] De acordo, no exemplo ilustrado na figura 9, o decodificador de vídeo 30 pode construir a lista de imagem de referência sem considerar se um componente de visualização atualmente sendo codificado é uma imagem âncora ou imagem não âncora. Ademais, o decodificador de vídeo 30 pode construir a lista de imagem de referência sem considerar se as imagens de referência candidatas são incluídas na Lista 0 ou Lista 1. Isso é, o decodificador de vídeo 30 pode construir uma Lista 0 de imagem de referência ou uma Lista 1 de imagem de referência utilizando a mesma informação de visualização de referência, que pode ser obtida apenas a partir da sequência de bits codificada uma vez. Adicionalmente, o decodificador de vídeo 30 pode adicionar os candidatos de referência identificados para ambas a Lista 0 ou Lista 1 de mesma forma.
[0248] O decodificador de vídeo 30 também pode decodificar o primeiro componente de visualização com base em um ou mais candidatos de referência na lista de imagem de referência (174). Por exemplo, o decodificador de vídeo 20 pode identificar um componente de visualização na lista de imagem de referência, combinar o componente de visualização identificado com dados residuais decodificados (a partir da sequência de bits codificada) para gerar o componente de visualização, como descrito com relação à figura 3 acima.
[0249] Deve-se compreender que as etapas ilustradas e descritas com relação à figura 9 são fornecidas meramente como um exemplo. Isso é, as etapas do método da figura 9 não precisam ser necessariamente realizadas na ordem ilustrada na figura 9, e menos, mais ou outras etapas podem ser realizadas.
[0250] Enquanto determinados elementos de sintaxe descritos com relação a essa descrição receberam nomes ilustrativos para fins de explicação, deve-se compreender que os conceitos descritos nessa descrição são mais geralmente aplicáveis a quaisquer elementos de sintaxe, independentemente do nome. Por exemplo, enquanto determinados aspectos se referem a um "índice de ordem de visualização", "view_order_index" ou "view_idx", deve-se compreender que tal elemento de sintaxe pode receber um nome alternativo em um padrão de codificação futuro.
[0251] Enquanto determinadas técnicas dessa descrição são descritas com relação ao padrão HEVC emergente, deve-se compreender que as técnicas não estão limitadas a qualquer padrão de codificação em particular. Isso é, as técnicas se referem mais geralmente para alcançar as eficiências de codificação na codificação de vídeo de múltiplas visualizações, por exemplo, através de idades NAL mais curtas e/ou menos complexas e conjuntos de parâmetro, como descrito acima.
[0252] Deve-se compreender que, dependendo do exemplo, determinados atos ou eventos de qualquer um dos métodos descritos aqui podem ser realizados em uma sequência diferente, podem ser adicionados, misturados, ou deixados de fora totalmente (por exemplo, nem todos os atos descritos ou eventos são necessários para a prática do método). Ademais, em determinados exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, através do processamento de múltiplas sequências, processamento interrompido ou múltiplos processadores, ao invés de sequencialmente. Adicionalmente, enquanto determinados aspectos dessa descrição são descritos como sendo realizados por um único módulo ou unidade para fins de clareza, deve-se compreender que as técnicas dessa descrição podem ser realizadas por uma combinação de unidades ou módulos associados com um codificador de vídeo.
[0253] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementados em software, as funções podem ser armazenadas em ou transmitidas como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento com base em hardware. A mídia legível por computador pode incluir meio de armazenamento legível por computador, que corresponde a um meio tangível tal como mídia de armazenamento de dados, ou mídia de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação.
[0254] Dessa forma, o meio legível por computador geralmente pode corresponder a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação tal como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que possa ser acessado por um ou mais computadores ou um ou mais processadores para recuperar instruções, um código e/ou estruturas de dados para implementação das técnicas descritas nessa descrição. Um produto de programa de computador pode incluir um meio legível por computador.
[0255] Por meio de exemplo, e não de limitação, tal meio de armazenamento legível por computador pode compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente chamada de um meio legível por computador. Por exemplo, se instruções forem transmitidas a partir de um sítio da rede, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra ótica, par torcido, linha de assinante digital (DSL), ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas, então o cabo coaxial, o cabo de fibra ótica, o par torcido, DSL ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas são incluídos na definição de meio.
[0256] Deve-se compreender, no entanto, que o meio de armazenamento legível por computador e o meio de armazenamento de dados não incluem conexões, ondas portadoras, sinais, ou outro meio de transiente, mas são, ao invés disso, direcionados para meio de armazenamento tangível não transiente. Disquete e disco, como utilizado aqui, inclui o disco compacto (CD), o disco a laser, o disco ótico, o disco versátil digital (DVD), disquete e disco blu-ray onde disquetes reproduzem normalmente dados magneticamente, enquanto discos reproduzem os dados oticamente com lasers. As combinações do acima exposto também devem ser incluídas dentro do escopo de meio legível por computador.
[0257] Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, circuitos integrados específicos de aplicativo (ASICs), conjuntos lógicos programáveis em campo (FPGAs), ou outro conjunto de circuito lógico discreto ou integrado equivalente. De acordo, o termo "processador", como utilizado aqui pode se referir a qualquer uma das estruturas acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui. Adicionalmente, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro de módulos de hardware e/ou software dedicados configurados para codificação e decodificação, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0258] As técnicas dessa descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chip). Vários componentes, módulos, ou unidades são descritos nessa descrição para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas descritas, mas não exigem necessariamente a realização por unidades de hardware diferentes. Ao invés disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou mais processadores como descrito acima, em conjunto com software e/ou firmware adequado.
[0259] Vários aspectos da descrição foram descritos. Esses e outros aspectos estado dentro do escopo das reivindicações a seguir.

Claims (15)

1. Método para decodificar dados de vídeo, caracterizado pelo fato de que compreende: obter, apenas uma vez, para uma pluralidade de componentes de visualização de uma primeira visualização, a partir de um fluxo de bits codificado, informação de visualização de referência que é aplicável a qualquer componente de visualização da primeira visualização incluindo qualquer componente de visualização que é usado como um ponto de acesso aleatório e qualquer componente de visualização que não é usado como um ponto de acesso aleatório e que é o mesmo para qualquer componente de visualização da primeira visualização incluindo qualquer componente de visualização que é usado como um ponto de acesso aleatório e qualquer componente de visualização que não é usado como um ponto de acesso aleatório, em que a informação de visualização de referência indica uma ou mais visualizações de referência para predizer a pluralidade de componentes de visualização da primeira visualização, e em que a pluralidade de componentes de visualização de uma primeira visualização compreende uma sequência de componentes de visualização da primeira visualização que incluem pelo menos um componente de visualização que é usado como um ponto de acesso aleatório e pelo menos um componente de visualização que não é usado como um ponto de acesso aleatório; incluir, para decodificar um primeiro componente de visualização da pluralidade de componentes de visualização em uma unidade de acesso e na primeira visualização, uma ou mais candidatas de referência em uma lista de imagens de referência, em que a uma ou mais candidatas de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, em que o número de candidatas de referência é igual ao número de visualizações de referência; e decodificar o primeiro componente de visualização com base em uma ou mais candidatas de referência na lista de imagens de referência.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a lista de imagens de referência compreende uma dentre uma primeira lista de imagens de referência e uma segunda lista de imagens de referência, e em que a informação de visualização de referência é igual e incluída apenas uma vez em uma primeira lista de imagens de referência e em uma segunda lista de imagens de referência de qualquer componente de visualização da primeira visualização, e em que incluir componentes de visualização das uma ou mais visualizações de referência como candidatas de referência compreende adicionar os mesmos componentes de visualização na primeira lista de imagens de referência e na segunda lista de imagens de referência.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a informação de visualização de referência compreende, para cada visualização de referência, uma indicação de um índice de ordem de visualização indicando uma ordem de decodificação de uma visualização dentro de uma unidade de acesso.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que a indicação do índice de ordem de visualização compreende uma diferença entre o índice de ordem de visualização de uma visualização de referência e o índice de ordem de visualização da primeira visualização.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que obter a informação de visualização de referência compreende obter a informação de visualização de referência em um nível de sequência incluindo obter um índice de ordem de visualização de uma ou mais visualizações de referência em um conjunto de parâmetros de sequência (SPS).
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende adicionar componentes de visualização da mesma unidade de acesso em uma dentre uma primeira lista inicial de uma primeira lista de imagens de referência, e uma segunda lista inicial de uma segunda lista de imagens de referência com base na ordem na qual as uma ou mais visualizações de referência são incluídas na informação de visualização de referência.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente reordenar uma ou mais candidatas de referência para qualquer posição de uma lista de imagens de referência final com base na informação de visualização de referência.
8. Aparelho para decodificar dados de vídeo, caracterizado pelo fato de que compreende: mecanismos para obter, apenas uma vez, para uma pluralidade de componentes de visualização de uma primeira visualização, a partir de um fluxo de bits codificado, informação de visualização de referência que é aplicável a qualquer componente de visualização da primeira visualização incluindo qualquer componente de visualização que é usado como um ponto de acesso aleatório e qualquer componente de visualização que não é usado como um ponto de acesso aleatório e que é o mesmo para qualquer componente de visualização da primeira visualização incluindo qualquer componente de visualização que é usado como um ponto de acesso aleatório e qualquer componente de visualização que não é usado como um ponto de acesso aleatório, em que a informação de visualização de referência indica uma ou mais visualizações de referência para predizer a pluralidade de componentes de visualização da primeira visualização, e em que a pluralidade de componentes de visualização de uma primeira visualização compreende uma sequência de componentes de visualização da primeira visualização que incluem pelo menos um componente de visualização que é usado como um ponto de acesso aleatório e pelo menos um componente de visualização que não é usado como um ponto de acesso aleatório; mecanismos para incluir, para decodificar um primeiro componente de visualização da pluralidade de componentes de visualização em uma unidade de acesso e na primeira visualização, uma ou mais candidatas de referência em uma lista de imagens de referência, em que a uma ou mais candidatas de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, em que o número de candidatas de referência é igual ao número de visualizações de referência; e mecanismos para decodificar o primeiro componente de visualização com base em uma ou mais candidatas de referência na lista de imagens de referência.
9. Aparelho, de acordo com a reivindicação 8, caracterizado pelo fato de que a lista de imagens de referência compreende uma dentre uma primeira lista de imagens de referência e uma segunda lista de imagens de referência, e em que a informação de visualização de referência é igual e incluída apenas uma vez na primeira lista de imagens de referência e na segunda lista de imagens de referência de qualquer componente de visualização da primeira visualização, e em que mecanismos para incluir componentes de visualização de uma ou mais visualizações de referência como candidatas de referência compreendem mecanismos para adicionar os mesmos componentes de visualização na primeira lista de imagens de referência e na segunda lista de imagens de referência.
10. Aparelho, de acordo com a reivindicação 8, caracterizado pelo fato de que a informação de visualização de referência compreende, para cada visualização de referência, uma indicação de um índice de ordem de visualização indicando uma ordem de decodificação de uma visualização dentro de uma unidade de acesso.
11. Aparelho, de acordo com a reivindicação 10, caracterizado pelo fato de que a indicação do índice de ordem de visualização compreende uma diferença entre o índice de ordem de visualização de uma visualização de referência e o índice de ordem de visualização da primeira visualização.
12. Aparelho, de acordo com a reivindicação 8, caracterizado pelo fato de que compreende adicionalmente mecanismos para adicionar componentes de visualização da mesma unidade de acesso em uma de uma primeira lista inicial de uma primeira lista de imagens de referência, e uma segunda lista inicial de uma segunda lista de imagens de referência com base na ordem na qual a uma ou mais visualizações de referência são incluídas na informação de visualização de referência.
13. Método para codificar dados de vídeo, caracterizado pelo fato de que compreende: determinar, para qualquer componente de visualização de uma primeira visualização incluindo qualquer componente de visualização que é usado como um ponto de acesso aleatório e qualquer componente de visualização que não é usado como um ponto de acesso aleatório, informação de visualização de referência indicando uma ou mais visualizações de referência para predizer uma pluralidade de componentes de visualização da primeira visualização, em que a pluralidade de componentes de visualização de uma primeira visualização compreende uma sequência de componentes de visualização da primeira visualização que inclui pelo menos um componente de visualização que é usado como um ponto de acesso aleatório e pelo menos um componente de visualização que não é usado como um ponto de acesso aleatório; incluir, para codificar um primeiro componente de visualização em uma unidade de acesso e na primeira visualização, uma ou mais candidatas de referência em uma lista de imagens de referência, em que uma ou mais candidatas de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, em que o número de candidatas de referência é igual ao número de visualizações de referência; codificar o primeiro componente de visualização com base em uma ou mais candidatas de referência na lista de imagens de referência; e prover, apenas uma vez, para pluralidade de componentes de visualização da primeira visualização, a informação de visualização de referência determinada que é aplicável a qualquer componente de visualização da pluralidade de componentes de visualização da primeira visualização em um fluxo de bits codificado e que é a mesma para qualquer componente de visualização da primeira visualização incluindo qualquer componente de visualização que é usado como um ponto de acesso aleatório e qualquer componente de visualização que não é usado como um ponto de acesso aleatório.
14. Aparelho para codificar dados de vídeo, caracterizado pelo fato de que compreende: mecanismos para determinar, para qualquer componente de visualização de uma primeira visualização incluindo qualquer componente de visualização que é usado como um ponto de acesso aleatório e qualquer componente de visualização que não é usado como um ponto de acesso aleatório, informação de visualização de referência indicando uma ou mais visualizações de referência para predizer uma pluralidade de componentes de visualização da primeira visualização, em que a pluralidade de componentes de visualização de uma primeira visualização compreende uma sequência de componentes de visualização da primeira visualização que inclui pelo menos um componente de visualização que é usado como um ponto de acesso aleatório e pelo menos um componente de visualização que não é usado como um ponto de acesso aleatório; mecanismos para incluir, para codificar um primeiro componente de visualização em uma unidade de acesso e na primeira visualização, uma ou mais candidatas de referência em uma lista de imagens de referência, em que a um ou mais candidatas de referência compreendem componentes de visualização na unidade de acesso e nas visualizações de referência indicadas pela informação de visualização de referência, em que o número de candidatas de referência é igual ao número de visualizações de referência; mecanismos para codificar o primeiro componente de visualização com base em uma ou mais candidatas de referência na lista de imagens de referência; e mecanismos para prover, apenas uma vez, para pluralidade de componentes de visualização da primeira visualização, a informação de visualização de referência determinada que é aplicável a qualquer componente de visualização da pluralidade de componentes de visualização da primeira visualização em um fluxo de bits codificado e que é a mesma para qualquer componente de visualização da primeira visualização incluindo qualquer componente de visualização que é usado como um ponto de acesso aleatório e qualquer componente de visualização que não é usado como um ponto de acesso aleatório.
15. Memória legível por computador não- transitória, caracterizada pelo fato de que possui instruções armazenadas na mesma que, quando executadas, fazem com que o um ou mais processadores executem o método tal como definido em qualquer uma das reivindicações 1 a 7 ou 13.
BR112014001860-0A 2011-07-28 2012-07-27 Método e aparelho para decodificar e codificar dados de vídeo, e memória legível por computador BR112014001860B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161512771P 2011-07-28 2011-07-28
US61/512,771 2011-07-28
US13/559,281 2012-07-26
US13/559,281 US9674525B2 (en) 2011-07-28 2012-07-26 Multiview video coding
PCT/US2012/048478 WO2013016611A1 (en) 2011-07-28 2012-07-27 Multiview video coding

Publications (2)

Publication Number Publication Date
BR112014001860A2 BR112014001860A2 (pt) 2017-02-21
BR112014001860B1 true BR112014001860B1 (pt) 2022-08-16

Family

ID=46614656

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014001860-0A BR112014001860B1 (pt) 2011-07-28 2012-07-27 Método e aparelho para decodificar e codificar dados de vídeo, e memória legível por computador

Country Status (9)

Country Link
US (1) US9674525B2 (pt)
EP (1) EP2737700A1 (pt)
JP (1) JP5908586B2 (pt)
KR (1) KR101617556B1 (pt)
CN (1) CN103718561B (pt)
BR (1) BR112014001860B1 (pt)
CA (1) CA2843189C (pt)
RU (1) RU2589347C2 (pt)
WO (1) WO2013016611A1 (pt)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3267681B1 (en) * 2011-07-02 2018-11-21 Samsung Electronics Co., Ltd. Apparatus for multiplexing and demultiplexing video data to identify reproducing state of video data
US10244257B2 (en) * 2011-08-31 2019-03-26 Nokia Technologies Oy Video coding and decoding
US9258559B2 (en) 2011-12-20 2016-02-09 Qualcomm Incorporated Reference picture list construction for multi-view and three-dimensional video coding
JPWO2013128832A1 (ja) * 2012-03-02 2015-07-30 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置および画像符号化復号装置
US10205961B2 (en) 2012-04-23 2019-02-12 Qualcomm Incorporated View dependency in multi-view coding and 3D coding
KR102349338B1 (ko) * 2012-09-13 2022-01-10 엘지전자 주식회사 영상 부호화/복호화 방법 및 장치
CN104769949B (zh) 2012-09-19 2018-03-13 高通股份有限公司 用于视差向量导出的图片的选择的方法和装置
CN104704836B (zh) * 2012-10-03 2018-04-17 寰发股份有限公司 三维视频、多视图视频及可缩放视频的编码方法及装置
TW201415898A (zh) * 2012-10-09 2014-04-16 Sony Corp 影像處理裝置及方法
US9930252B2 (en) * 2012-12-06 2018-03-27 Toyota Motor Engineering & Manufacturing North America, Inc. Methods, systems and robots for processing omni-directional image data
CN105325003B (zh) * 2013-04-17 2019-05-28 诺基亚技术有限公司 用于视频编码和解码的装置、方法
JP2015136057A (ja) * 2014-01-17 2015-07-27 ソニー株式会社 通信装置、通信データ生成方法、および通信データ処理方法
US9866852B2 (en) * 2014-06-20 2018-01-09 Qualcomm Incorporated Video coding using end of sequence network abstraction layer units
US9930378B2 (en) * 2015-02-11 2018-03-27 Qualcomm Incorporated Signaling of operation points for carriage of HEVC extensions
EP3404927A1 (en) * 2016-01-13 2018-11-21 Sony Corporation Information processing device and information processing method
US9955183B2 (en) * 2016-04-14 2018-04-24 Avid Technology, Inc. Open to closed group of pictures conversion in interframe video compression
MX2021002951A (es) * 2018-09-12 2021-07-15 Huawei Tech Co Ltd Un codificador de video, un decodificador de video y metodos correspondientes.
KR102166158B1 (ko) * 2018-12-19 2020-10-15 (주)이머시브캐스트 입체 영상 생성 장치, 입체 영상 복원 장치와 이를 포함하는 입체 영상 재생 시스템

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7728878B2 (en) 2004-12-17 2010-06-01 Mitsubishi Electric Research Labortories, Inc. Method and system for processing multiview videos for view synthesis using side information
EP1971154A4 (en) 2006-01-05 2010-10-27 Nippon Telegraph & Telephone VIDEO CODING METHOD AND DECODING METHOD, DEVICE THEREFOR, DEVICE THEREFOR AND STORAGE MEDIUM WITH THE PROGRAM
JP5199124B2 (ja) 2006-01-12 2013-05-15 エルジー エレクトロニクス インコーポレイティド 多視点ビデオの処理
AU2007243933B2 (en) 2006-03-29 2012-09-13 Interdigital Madison Patent Holdings Multi-view video coding method and device
CN101491095B (zh) * 2006-03-30 2013-07-10 Lg电子株式会社 用于解码/编码视频信号的方法和装置
EP2008461B1 (en) 2006-03-30 2015-09-16 LG Electronics Inc. A method and apparatus for decoding/encoding a multi-view video signal
WO2008005574A2 (en) 2006-07-06 2008-01-10 Thomson Licensing Method and apparatus for decoupling frame number and/or picture order count (poc) for multi-view video encoding and decoding
CN101518086B (zh) * 2006-07-20 2013-10-30 汤姆森特许公司 在多视图视频编码中用信号通知视图可分级性的方法和装置
TWI386064B (zh) 2006-10-10 2013-02-11 Nippon Telegraph & Telephone 內部預測編碼控制方法及裝置,其程式,以及記錄有程式之記憶媒體
CN102780883B (zh) * 2006-10-13 2015-03-04 汤姆逊许可公司 用于包含多视点视频编码的参考图像管理的方法
JP4793366B2 (ja) 2006-10-13 2011-10-12 日本ビクター株式会社 多視点画像符号化装置、多視点画像符号化方法、多視点画像符号化プログラム、多視点画像復号装置、多視点画像復号方法、及び多視点画像復号プログラム
DK2103136T3 (en) * 2006-12-21 2017-12-04 Thomson Licensing METHODS AND APPARATUS FOR IMPROVED SIGNALING USING HIGH-LEVEL SYNTHOLOGY FOR MULTIVIEW VIDEO AND DECODING
WO2008085876A2 (en) * 2007-01-04 2008-07-17 Thomson Licensing Method and apparatus for video error concealment using high level syntax reference views in multi-view coded video
WO2008088175A1 (en) 2007-01-17 2008-07-24 Lg Electronics Inc. Method and apparatus for processing a video signal
CN101669367A (zh) 2007-03-02 2010-03-10 Lg电子株式会社 用于解码/编码视频信号的方法及设备
JP2009100070A (ja) 2007-10-15 2009-05-07 Victor Co Of Japan Ltd 多視点画像符号化方法、多視点画像符号化装置及び多視点画像符号化プログラム
KR101619450B1 (ko) 2009-01-12 2016-05-10 엘지전자 주식회사 뎁스 정보를 이용한 비디오 신호 처리 방법 및 장치
WO2010086500A1 (en) 2009-01-28 2010-08-05 Nokia Corporation Method and apparatus for video coding and decoding
KR101972962B1 (ko) 2009-02-19 2019-04-26 톰슨 라이센싱 3d 비디오 포맷
US8982183B2 (en) * 2009-04-17 2015-03-17 Lg Electronics Inc. Method and apparatus for processing a multiview video signal
US20120106634A1 (en) * 2009-04-21 2012-05-03 Lg Electronics Inc. Method and apparatus for processing multi-view video signal
WO2010123203A2 (ko) 2009-04-22 2010-10-28 엘지전자 주식회사 다시점 영상의 참조 픽쳐 리스트 변경 방법
US8780999B2 (en) 2009-06-12 2014-07-15 Qualcomm Incorporated Assembling multiview video coding sub-BITSTREAMS in MPEG-2 systems
CN102342109A (zh) 2009-07-29 2012-02-01 松下电器产业株式会社 多视点视频解码装置及其方法
US8976871B2 (en) 2009-09-16 2015-03-10 Qualcomm Incorporated Media extractor tracks for file format track selection
JP5524594B2 (ja) 2009-12-14 2014-06-18 パナソニック株式会社 画像復号装置及び画像復号方法
WO2012052968A1 (en) 2010-10-20 2012-04-26 Nokia Corporation Method and device for video coding and decoding
US10237565B2 (en) 2011-08-01 2019-03-19 Qualcomm Incorporated Coding parameter sets for various dimensions in video coding
US9258559B2 (en) 2011-12-20 2016-02-09 Qualcomm Incorporated Reference picture list construction for multi-view and three-dimensional video coding

Also Published As

Publication number Publication date
JP5908586B2 (ja) 2016-04-26
US20130114705A1 (en) 2013-05-09
EP2737700A1 (en) 2014-06-04
JP2014526197A (ja) 2014-10-02
RU2014107707A (ru) 2015-09-10
US9674525B2 (en) 2017-06-06
CA2843189A1 (en) 2013-01-31
CN103718561B (zh) 2017-03-08
KR101617556B1 (ko) 2016-05-02
RU2589347C2 (ru) 2016-07-10
CA2843189C (en) 2018-08-28
BR112014001860A2 (pt) 2017-02-21
WO2013016611A1 (en) 2013-01-31
CN103718561A (zh) 2014-04-09
KR20140056310A (ko) 2014-05-09

Similar Documents

Publication Publication Date Title
BR112014001799B1 (pt) Codificação de vídeo de múltiplas visualizações
BR112014001860B1 (pt) Método e aparelho para decodificar e codificar dados de vídeo, e memória legível por computador
DK2786574T3 (en) ENABLING THE PARAMETER SET FOR MULTI-EXPOSURE VIDEO CODING (MVC) COMPATIBLE THREE-DIMENSIONAL VIDEO CODING (3DVC)
BR112014017159B1 (pt) Conjuntos de parâmetros de codificação e cabeçalhos de unidade nal para codificação de vídeo
BR112015006440B1 (pt) Indicação e ativação de conjuntos de parâmetros para codificação de vídeo
BR122017006773B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões
BR112014002479B1 (pt) Conjuntos de parâmetros de codificação para várias dimensões em codificação de vídeo
US9479779B2 (en) Sub-bitstream extraction for multiview, three-dimensional (3D) and scalable media bitstreams
BR112016021476B1 (pt) Método e dispositivo para codificar dados de vídeo e memória legível por computador
BR112016013141B1 (pt) Design de valor poc para codificação de vídeo de multicamadas
BR112014033011B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões

Legal Events

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

Ipc: H04N 19/50 (2014.01), H04N 19/44 (2014.01), H04N 1

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 27/07/2012, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.