BR112016021476B1 - Método e dispositivo para codificar dados de vídeo e memória legível por computador - Google Patents

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

Info

Publication number
BR112016021476B1
BR112016021476B1 BR112016021476-5A BR112016021476A BR112016021476B1 BR 112016021476 B1 BR112016021476 B1 BR 112016021476B1 BR 112016021476 A BR112016021476 A BR 112016021476A BR 112016021476 B1 BR112016021476 B1 BR 112016021476B1
Authority
BR
Brazil
Prior art keywords
poc
image
value
video
lsb
Prior art date
Application number
BR112016021476-5A
Other languages
English (en)
Other versions
BR112016021476A8 (pt
BR112016021476A2 (pt
Inventor
Fnu HENDRY
Adarsh Krishnan Ramasubramonian
Ye-Kui Wang
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/659,213 external-priority patent/US9866869B2/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016021476A2 publication Critical patent/BR112016021476A2/pt
Publication of BR112016021476A8 publication Critical patent/BR112016021476A8/pt
Publication of BR112016021476B1 publication Critical patent/BR112016021476B1/pt

Links

Abstract

PROJETO DE VALOR DE POC PARA CODIFICAÇÃO DE VÍDEO MULTICAMADA. Em um exemplo, um método de codificação de dados de vídeo compreende codificar, por um codificador de vídeo, pelo menos uma porção de uma imagem de uma camada não-base independentemente decodificável de um fluxo de bits multicamada. O método também compreende codificar, pelo codificador de vídeo, dados indicando uma redefinição de valor de contagem de ordem de imagem (POC) para um valor de POC de bits menos significativos (LSB) da imagem apenas quando a imagem tem um valor de POC LSB para a imagem igual a zero.

Description

[0001] Este pedido reivindica o benefício do Pedido de Patente Provisório Norte-Americano No. 61/954,551, depositado em 17 de março de 2014, e do Pedido de Patente Provisório Norte-Americano No. 61/973,104, depositado em 31 de março de 2014, que são aqui incorporados em sua totalidade a título de referência.
CAMPO TÉCNICO
[0002] Esta descrição refere-se à codificação de vídeo.
ANTECEDENTES
[0003] As funcionalidades do vídeo digital podem ser incorporadas em uma gama variada de dispositivos, compreendendo televisores digitais, sistemas digitais de difusão direta, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, computadores tablet, leitores de e-book, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos de vídeo, consoles de vídeogame, telefones de rádio por satélite ou celulares, os chamados "telefones inteligentes," dispositivos de vídeo de teleconferência, dispositivos de fluxo contínuo de vídeo e outros mais. Os dispositivos de vídeo digitais implementam técnicas de codificação de vídeo, tais como as descritas nos padrões definidos pelo MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, parte 10, Codificação de Vídeo Avançada (AVC), padrão de Codificação de Vídeo com Alta Eficiência (HEVC) ITU-T H.265, e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digitais mais eficientemente através da implementação dessas técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo compreendem a predição espacial (intra-imagem) e/ou a predição temporal (inter-imagem) para reduzir ou remover a redundância inerente em sequências de vídeo. Para a codificação de vídeo baseada em blocos, uma fatia (slice) de vídeo (por exemplo, um quadro de vídeo ou uma parte de um quadro de vídeo) pode ser particionada em blocos de vídeo, que também podem ser referidos como treeblocks, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intra-codificada (I) de uma imagem são codificados utilizando-se a predição espacial com relação às amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia inter- codificada (P ou B) de uma imagem podem usar a predição espacial com relação às amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação às amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros e as imagens de referência podem ser referidas como quadros de referência. Uma imagem pode se referir a uma imagem decodificada ou uma imagem codificada.
[0005] A predição espacial ou temporal resulta em um bloco de predição para um bloco a ser codificado. Os dados residuais representam as diferenças de pixels entre o bloco original a ser codificado e o bloco de predição. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco de predição, e os dados residuais que indicam a diferença entre o bloco codificado e o bloco de predição. Um bloco intra-codificado é codificado de acordo com um modo de intra-codificação e com os dados residuais. Para maior compressão, os dados residuais podem ser transformados do domínio de pixel para um domínio da transformada, resultando em coeficientes de transformada residuais, que, então, podem ser quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em uma matriz bidimensional, podem ser varridos a fim de produzir um vetor unidimensional de coeficientes de transformada, e a codificação por entropia pode ser aplicada para obter ainda mais compressão.
SUMÁRIO
[0006] Esta descrição apresenta as técnicas para facilitar a extração de uma camada de dados de vídeo de um fluxo de bits multicamada. Por exemplo, as técnicas desta descrição podem ser utilizadas para controlar a redefinição de valor de contagem de ordem de imagem (POC) para imagens de uma camada não-base independente de fluxo de bits multicamada. Em alguns exemplos, restringir o codificador de vídeo utilizando as técnicas desta descrição pode permitir que uma camada de dados de vídeo de um fluxo de vídeo multicamada seja extraída sem alteração de dados no cabeçalho de fatia na camada. Adicionalmente, controlar os locais em que ocorre a redefinição de valor de POC pode ajudar a garantir que o codificador de vídeo pode identificar apropriadamente as imagens de referência de longo prazo em um armazenador de imagens decodificadas (DPB).
[0007] Em um exemplo, um método de codificação de dados de vídeo compreende codificar, por um codificador de vídeo, pelo menos uma porção de uma imagem de uma camada não-base independentemente decodificável de um fluxo de bits multicamada, e codificar dados indicando uma redefinição de valor de POC para um valor de POC de bits menos significativos (LSB) da imagem apenas quando a imagem tem um valor de POC LSB para a imagem igual a zero.
[0008] Em outro exemplo, um dispositivo para codificação de dados de vídeo compreende uma memória configurada para armazenar uma camada independentemente decodificável dos dados de vídeo do um fluxo de bits multicamada. O dispositivo também compreende um codificador de vídeo configurado para codificar pelo menos uma parte de uma imagem da camada não-base independentemente decodificável do fluxo de bits multicamada, e codificar dados indicando uma redefinição de valor de contagem de ordem de imagem (POC) para um valor de POC de bits menos significativos (LSB) da imagem apenas quando a imagem tem um valor de POC LSB para a imagem igual a zero.
[0009] Em outro exemplo, um dispositivo para codificação de dados de vídeo compreende meios para codificar pelo menos uma porção de uma imagem de uma camada não-base independentemente decodificável de um fluxo de bits multicamada, e meios para codificar dados indicando uma redefinição de valor de contagem de ordem de imagem (POC) para um valor de POC de bits menos significativos (LSB) da imagem apenas quando a imagem tem um valor de POC LSB para a imagem igual a zero.
[0010] Em outro exemplo, um meio de armazenamento legível por computador não transitório armazenando no mesmo instruções que, quando realizadas, fazem com que um processador de um dispositivo para codificação de dados de vídeo codifique pelo menos uma porção de uma imagem de uma camada não-base independentemente decodificável de um fluxo de bits multicamada, e codifique dados indicando uma redefinição de valor de contagem de ordem de imagem (POC) para um valor de POC de bits menos significativos (LSB) da imagem apenas quando a imagem tem um valor de POC LSB para a imagem igual a zero.
[0011] Os detalhes de um ou mais exemplos são apresentados nos desenhos que acompanham esta descrição e na descrição abaixo. Outras características, objetos e vantagens da presente descrição ficarão evidentes a partir da descrição, dos desenhos e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[0012] A FIG.1 é um diagrama de blocos ilustrando um exemplo de um sistema de codificação e decodificação de vídeo que pode utilizar as técnicas para codificação de informação de valor de POC, de acordo com as técnicas desta descrição.
[0013] A FIG.2 é um diagrama de blocos ilustrando um exemplo de um codificador de vídeo que pode implementar as técnicas para codificação de informação de valor de POC, de acordo com as técnicas desta descrição.
[0014] A FIG.3 é um diagrama de blocos ilustrando um exemplo de um decodificador de vídeo que pode implementar as técnicas para codificação de informação de valor de POC, de acordo com as técnicas desta descrição.
[0015] A FIG. 4 é um diagrama conceitual ilustrando a redefinição de valor de POC para uma camada não-base independente de um fluxo de bits multicamada.
[0016] A FIG. 5 é outro diagrama conceitual ilustrando a redefinição de valor de POC para uma camada não-base independente de um fluxo de bits multicamada.
[0017] A FIG. 6 é um fluxograma ilustrando um exemplo de método para codificar dados de vídeo de um fluxo de bits multicamada, de acordo com as técnicas desta descrição.
[0018] A FIG. 7 é um fluxograma ilustrando um exemplo de método para decodificar dados de vídeo de um fluxo de bits multicamada, de acordo com as técnicas desta descrição.
DESCRIÇÃO DETALHADA
[0019] Os aspectos desta descrição podem estar relacionados com várias técnicas de codificação de uma camada não-base independente para fluxos de bits multicamada. Em alguns casos, as técnicas podem ser efetuadas com extensões multicamada a um padrão de Codificação de Vídeo de Alta Eficiência (HEVC) tal como uma extensão de Codificação de Vídeo Multi-visualização para HEVC (MV-HEVC) ou uma extensão de Codificação de Vídeo Escalonável (SVC) para HEVC (SHVC), como observado abaixo. As técnicas desta descrição, no entanto, não estão limitadas a qualquer padrão de codificação de vídeo específico, e podem, também ou alternativamente, ser usadas com outras extensões para HEVC, outros padrões de codificação por multi-visualização e/ou outros padrões de vídeo de multicamada. Além disso, as técnicas desta descrição, conforme descrito abaixo, podem ser aplicadas independentemente ou em combinação.
[0020] Uma "camada" de dados de vídeo geralmente pode se referir a uma sequência de imagens, tendo pelo menos uma característica comum, como uma visualização, uma taxa de quadros, um formato ou uma resolução espacial, uma relação sinal-ruído ou similares. Por exemplo, uma camada pode compreender dados de vídeo associados a uma visualização específica (por exemplo, perspectiva) de dados de vídeo de multi-visualização. Como outro exemplo, uma camada pode compreender dados de vídeo associados com uma determinada camada de dados de vídeo escalonável. Assim, esta descrição pode se referir indistintamente a uma camada e a uma visualização de dados de vídeo. Ou seja, uma visualização de dados de vídeo pode ser referida como uma camada de dados de vídeo e vice- versa. Além disso, um codec multicamada (também referido como um codificador de vídeo multicamada ou um codificador- decodificador multicamada) pode se referir a um codec multi-visualização ou a um codec escalonável (por exemplo, um codec configurado para codificar e/ou decodificar dados de vídeo utilizando a MV-HEVC, a SHVC ou outra técnica de codificação multicamada).
[0021] Um fluxo de bits multicamada pode compreender uma camada base e uma ou mais camadas não-base. A camada base pode tipicamente ter um identificador de camada que é igual a zero. Uma camada não-base pode ter um identificador de camada que é maior do que zero, e pode fornecer dados de vídeo adicionais que não estão compreendidos na camada base. Por exemplo, uma camada não- base de dados de vídeo multi-visualização pode compreender uma visualização adicional de dados de vídeo. Uma camada não-base de dados de vídeo escalonáveis pode compreender uma camada adicional de dados de vídeo escalonáveis, tendo uma resolução aumentada ou diminuída em relação à camada base. Uma camada não-base pode ser intercambiavelmente referida como uma camada aprimorada.
[0022] Uma camada pode ser referida como sendo "independente", quando a camada não tem uma camada de referência direta. Ou seja, uma camada independente pode ser codificada (codificada ou decodificada) sem se referir a dados de vídeo de outra camada. Uma camada não-base independente pode se conformar a um perfil de codificação específico de um determinado padrão, que não tem que ser o mesmo de outras camadas de um fluxo de bits multicamada, ao qual a camada independente pertence. Em um exemplo não limitador para fins de ilustração, um fluxo de bits multicamada pode se conformar à MV-HEVC ou SHVC. Uma camada não-base independente de fluxo de bits multicamada pode ser codificada de forma independente (por exemplo, sem o uso de técnicas de predição de inter-camada) e pode se conformar ao padrão HEVC. Consequentemente, conforme descrito em maiores detalhes abaixo, a camada não-base independente pode ser extraída e decodificada utilizando o padrão HEVC e sem decodificar as outras camadas do fluxo de bits multicamada. Em alguns casos, um elemento de rede ciente de mídia (MANE - media aware network element), unidade de junção, ou outro dispositivo pode extrair camadas independentes de um fluxo de bits multicamada. Em tais casos, o MANE pode transmitir apenas a camada independente extraída de um decodificador de vídeo para decodificação. Em outros casos, um outro dispositivo de computação pode ser responsável pela extração de um fluxo de bits.
[0023] As técnicas desta descrição são aplicáveis para a definição de valores de contagem de ordem de imagem (POC) para codificação de vídeo e podem ser usadas para facilitar a extração de uma camada não-base independente de um fluxo de bits multicamada. Por exemplo, um codificador de vídeo pode codificar um fluxo de bits multicamada de acordo com um determinado padrão de codificação de vídeo multicamada, por exemplo, SHVC ou MV- HEVC. Um decodificador de vídeo, um elemento de rede ciente de mídia (MANE), unidade de junção ou outro dispositivo pode extrair camadas não-base independentes de tal fluxo de bits multicamada. Conforme descrito mais detalhadamente abaixo, as técnicas desta descrição podem, em alguns exemplos, permitir que uma camada possa ser extraída de um fluxo de bits multicamada como um fluxo de bits que se conforma à SHVC ou MV-HEVC e decodificada corretamente por um decodificador de vídeo configurado para decodificar utilizando o padrão HEVC sem alterar os cabeçalhos da fatia ou outra sintaxe da camada não-base independente.
[0024] Os valores POC podem indicar uma ordem de exibição de imagem e geralmente podem ser usados para identificar a imagem. Por exemplo, uma imagem tendo um valor de POC 0 é exibida antes de uma imagem tendo um valor de POC 1. Quando um bloco de uma imagem atual é interpredido em relação a uma imagem de referência, a imagem de referência pode ser identificada utilizando um valor de POC para as imagens de referência. Mais particularmente, valores POC para imagens de referência a serem incluídas em uma lista de imagens de referência podem ser sinalizados em um conjunto de parâmetros, tal como o conjunto de parâmetros da sequência (SPS), conjunto de parâmetros de imagem (PPS), e/ou um cabeçalho de fatia correspondente ao bloco. Desta forma, um codificador de vídeo pode identificar uma imagem de referência pela sinalização de um índice para a lista de imagens de referência correspondente à posição da imagem de referência na lista de imagens de referência, e um decodificador de vídeo pode identificar a imagem de referência pela construção da lista de imagens de referência (com base nos valores POC) e utilização do índice de referência para identificar a posição de uma imagem de referência na lista de imagens de referência.
[0025] Os valores POC podem ser compostos de bits menos significativos (LSBs) e de bits mais significativos (MSBs). Em geral, o valor de POC LSB pode ser sinalizado no fluxo de bits. Por exemplo, o valor de POC LSB pode estar compreendido em um cabeçalho de fatia de fatias de uma imagem. Um codificador de vídeo (codificador de vídeo ou decodificador de vídeo) pode determinar um valor de POC MSB para uma imagem com base em um valor de POC de uma imagem previamente codificada do fluxo de bits.
[0026] Os valores POC podem ser usados em uma codificação de vídeo multicamada para garantir que os dados de vídeo de múltiplas camadas são emitidos apropriadamente. Por exemplo, em codificação de vídeo multicamada (por exemplo, codificação de vídeo por multi-visualização, codificação de vídeo escalonável ou algo semelhante), uma componente de visualização pode compreender uma imagem codificada para uma determinada camada ou visualização em um determinado tempo (em termos de ordem de exibição, ou ordem de emissão). Uma unidade de acesso é, geralmente, uma unidade de dados que compreende todas as componentes de exibição (por exemplo, todas as unidades de camada de abstração de rede (NAL)) para uma instância temporal comum. As componentes de exibição de uma unidade de acesso normalmente se destinam a ser emitidas em conjunto (ou seja, com emissão substancialmente simultânea), onde emitir uma imagem geralmente envolve a transferência de imagens do DPB (por exemplo, armazenar imagens armazenadas do DPB para uma memória externa, enviar as imagens do DPB para uma tela, remover imagens do DPB ou algo parecido).
[0027] Um codificador de vídeo pode periodicamente redefinir um valor de POC. Por exemplo, o codificador de vídeo pode tipicamente redefinir um valor de POC para uma imagem de atualização de decodificador instantânea (IDR) (por exemplo, uma imagem que contém apenas fatias intra-preditas). Além de redefinir o valor de POC, o codificador de vídeo pode decrementar um valor de POC de imagens que foram processadas e armazenadas em um DPB antes da imagem atual associada com a reconfiguração da POC. Os valores POC de imagens de referência que foram decrementados podem ter um valor negativo a fim de manter a ordem de emissão apropriada dessas imagens.
[0028] Em alguns casos, um codificador de vídeo pode redefinir o valor de POC de uma imagem em uma unidade de acesso de um fluxo de bits multicamada para manter o alinhamento em camada cruzada (cross-layer) com outras imagens da unidade de acesso. Em um fluxo de bits de camada única (por exemplo, HEVC), cada unidade de acesso compreende um conjunto de unidades NAL que estão associadas umas com as outras de acordo com uma regra de classificação especifica e que são consecutivas na ordem de decodificação, e cada unidade de acesso contém exatamente uma imagem (também referida como uma imagem codificada). Em um fluxo de bits multicamada (por exemplo, um fluxo de bits SHVC ou MV-HEVC com mais de uma camada), unidades de acesso (também conhecidas como unidades de acesso multicamada) podem compreender uma ou mais imagens codificadas. Se uma ou mais imagens codificadas são incluídas em uma unidade de acesso multicamada, cada imagem codificada é disposta dentro de um sub-fluxo de bits. A título de exemplo, uma unidade de acesso multicamada pode ter uma imagem codificada em uma camada base e uma imagem codificada em uma camada aprimorada. Assim, uma unidade de acesso multicamada compreende todas as imagens codificadas em camadas com o mesmo tempo de saída, incluindo unidades NAL de camada de codificação de vídeo (VCL) e não-VCL associadas. As imagens codificadas em uma unidade de acesso podem ser associadas com o mesmo valor de POC para identificação e para garantir que as imagens da unidade de acesso são emitidas ao mesmo tempo ou substancialmente ao mesmo tempo.
[0029] No que diz respeito à reconfiguração do valor de POC para manter o alinhamento em camada cruzada, em um exemplo para fins de ilustração, uma unidade de acesso pode compreender uma imagem IDR da camada base que faz com que seja realizada a reconfiguração de valor de POC e uma imagem de camada não-base que não é uma imagem IDR. A fim de garantir que o valor de POC da imagem da camada não- base da unidade de acesso coincida com a imagem da camada base, o codificador de vídeo pode redefinir o valor de POC da imagem da camada não-base.
[0030] Conforme observado acima, uma camada não-base independente pode se conformar a um padrão de codificação particular associado com um determinado padrão para permitir que a camada não-base seja extraída de um fluxo de bits multicamada. Criar condições para que a camada não-base de um fluxo de bits multicamada seja codificada de forma independente, no entanto, pode apresentar vários desafios. Por exemplo, conforme descrito em maiores detalhes com relação à FIG. 4 abaixo, redefinir um valor de POC LSB de uma imagem de uma camada não-base independente pode causar uma questão com a identificação adequada de imagens de referência de longo prazo (LTRPs) de um conjunto de imagens de referência (RPS). Como outro exemplo, redefinir um valor de POC LSB de uma imagem da camada não-base independente pode fazer com que uma unidade de acesso contenha imagens que não sejam alinhadas em camada cruzada.
[0031] As técnicas desta descrição podem, em alguns casos, enfrentar os desafios mencionados acima. Por exemplo, as técnicas desta descrição podem ser utilizadas para permitir que uma camada não-base de um fluxo de bits multicamada seja extraída e decodificada com alterações mínimas na camada não-base (por exemplo, sem alterar cabeçalhos de fatia ou outra sintaxe da camada não-base). As técnicas desta descrição podem ser utilizadas para determinar uma localização de imagens de ponto de acesso intra aleatório (IRAP) em uma camada não-base independente. Desta forma, as técnicas desta descrição podem ser utilizadas para controlar a redefinição de valor de POC para imagens de uma camada não-base independente.
[0032] De acordo com os aspectos desta descrição, um codificador de vídeo (um codificador de vídeo ou um decodificador de vídeo) pode codificar uma imagem de uma camada independentemente decodificável de um fluxo de bits multicamada. O codificador de vídeo pode também codificar dados indicando uma redefinição de valor de POC para um valor de POC LSB da imagem somente quando o valor de POC LSB para a imagem é igual a zero. Em alguns exemplos, o codificador de vídeo pode apenas codificar dados indicando uma redefinição de um valor de POC para uma camada aprimorada quando a imagem na camada não-base independente que está sendo codificada é uma imagem IDR ou quando a imagem que está sendo codificada tem um valor de POC LSB igual a zero antes de realizar a redefinição de valor de POC. Conforme descrito mais detalhadamente abaixo, controlar os locais onde ocorre a redefinição do valor de POC pode ajudar a garantir que o codificador de vídeo pode identificar adequadamente as imagens de referência de longo prazo em um DPB e manter o fluxo de bits em conformidade com um determinado padrão de codificação de vídeo, por exemplo, tal como um padrão identificado neste documento.
[0033] Um exemplo não limitador para fins de ilustração, as técnicas desta descrição podem permitir que uma camada não-base independente seja extraída de um fluxo de bits multicamada escalonável. Por exemplo, um fluxo de bits SHVC pode compreender uma camada base, tendo uma resolução de 540p e uma camada aprimorada de 1080p. Por convenção, na camada base, uma imagem IDR pode ser incluída em até cada 32 imagens. Na camada aprimorada, uma imagem IDR pode ser incluída em um intervalo diferente, por exemplo, a cada 96 imagens.
[0034] As técnicas desta descrição podem ser utilizadas para restringir a maneira na qual um fluxo de bits escalonável é formado, de tal modo que a camada aprimorada mantenha a conformidade com o padrão HEVC base. Por exemplo, conforme descrito neste documento, as técnicas desta descrição podem ser utilizadas para controlar a maneira na qual a redefinição de valor de POC é realizada para o fluxo de bits SHVC, de tal modo que a camada aprimorada pode ser extraída do fluxo de bits SHVC e decodificada por um decodificador em conformidade com o padrão HEVC base. Consequentemente, um dispositivo de computação móvel que tem a capacidade de decodificar um fluxo de bits HEVC (mas não um fluxo de bits HEVC) pode receber e decodificar a camada aprimorada sem alterar os cabeçalhos da fatia (que contêm informações de valor de POC, conforme descrito neste documento) da camada aprimorada.
[0035] A FIG. 1 é um diagrama de blocos ilustrando um exemplo de um sistema de codificação e decodificação de vídeo 10 que pode utilizar técnicas para gerenciar valores POC de acordo com as técnicas desta descrição. Como mostrado na Fig. 1, o sistema 10 compreende um dispositivo de origem 12 que fornece os dados de vídeo codificados para serem decodificados em um momento posterior por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 fornece os dados de vídeo para o dispositivo de destino 14 através de um meio legível por computador 16.
[0036] O dispositivo de origem 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla gama de dispositivos, incluindo computadores desktop, computadores portáteis (i.e., laptop), computadores tablet, set-top box, aparelhos de telefone tais como os chamados “Telefones inteligentes”, os assim chamados “pads” inteligentes, televisores, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de videogame, dispositivo de fluxo contínuo de vídeo, ou outros dispositivos similares. Em alguns casos, o dispositivo fonte 12 e o dispositivo de destino 14 podem estar equipados para comunicação sem fio.
[0037] O meio legível por computador 16 pode compreender qualquer tipo de meio ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, o meio legível por computador 16 pode compreender um meio de comunicação para habilitar o dispositivo de origem 12 para transmitir dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio e transmitidos para o dispositivo de destino de 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou com fio, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada em pacotes, como uma rede de área local, uma rede de área estendida ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou qualquer outro equipamento que possa ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino de 14.
[0038] Em alguns exemplos, o meio legível por computador 16 pode compreender um dispositivo de armazenamento. Por exemplo, o dispositivo de armazenamento pode compreender qualquer um dentre uma variedade de meios de armazenamento de dados distribuídos ou acessados localmente como um disco rígido, discos Blu-ray, DVDs, CD- ROMs, memória flash, memória volátil ou memória não-volátil ou qualquer outro meio de armazenamento digital adequado para armazenar dados de vídeo codificados. Em mais um exemplo, o dispositivo de armazenamento pode corresponder a um servidor de arquivos ou outro dispositivo de armazenamento intermediário que pode armazenar vídeo codificado gerados pelo dispositivo de origem 12 e que pode ser acessado pelo dispositivo de destino. Exemplos de servidores de arquivos compreendem um servidor web (por exemplo, para um site), um servidor FTP, dispositivos de armazenamento ligados em rede (NAS) ou uma unidade de disco local.
[0039] No exemplo da FIG. 1, o dispositivo de origem 12 compreende a fonte de vídeo 18, o codificador de vídeo 20 e a interface de saída 22. O dispositivo de destino 14 compreende a interface de entrada 28, o decodificador de vídeo 30 e o dispositivo de exibição 32. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem compreender outros componentes ou arranjos. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma fonte externa de vídeo, como uma câmera externa. Da mesma forma, o dispositivo destino 14 pode fazer interface com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado. Consequentemente, o sistema 10 ilustrado na FIG. 1 é apenas um exemplo. As técnicas para gerenciar valores POC de acordo com as técnicas desta descrição podem ser realizadas por qualquer dispositivo de codificação e/ou de decodificação de vídeo digital.
[0040] Muito embora as técnicas desta descrição sejam geralmente realizadas por um dispositivo de codificação de vídeo, as técnicas podem ser efetuadas por um codificador/decodificador de vídeo, normalmente referido como um "CODEC". Além disso, as técnicas desta descrição também podem ser realizadas por um pré-processador de vídeo. O dispositivo de origem de 12 e o dispositivo de destino 14 são apenas exemplos desses dispositivos de codificação no qual o dispositivo de origem 12 gera dados de vídeo codificados para transmitir ao dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar de uma maneira substancialmente simétrica de tal forma que cada um dos dispositivos 12, 14 compreenda componentes de codificação de vídeo e de decodificação de vídeo. Assim, o sistema 10 pode suportar transmissão de vídeo unidirecional ou bidirecional entre dispositivos de vídeo 12, 14, por exemplo, para distribuir fluxo de vídeo, reproduzir vídeo, transmitir vídeo ou para vídeo telefonia.
[0041] A fonte de vídeo 18 do dispositivo de origem 12 pode compreender um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo vídeo capturado anteriormente, e/ou uma interface de alimentação de vídeo para receber o vídeo de um provedor de conteúdo de vídeo. Como uma alternativa adicional, a fonte de vídeo 18 pode gerar dados baseados em gráficos de computador como um vídeo de origem, ou uma combinação de vídeo ao vivo, vídeo arquivado e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 é uma câmera de vídeo, um dispositivo de origem 12 e um dispositivo de destino 14 podem formar os assim chamados telefones com câmera ou vídeo telefones. Como mencionado acima, no entanto, as técnicas descritas nesta descrição podem ser aplicáveis para codificação de vídeo em geral e podem ser aplicadas para aplicações sem fio ou com fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. As informações de vídeo codificadas podem, então, ser emitidas por uma interface de saída 22 para um meio legível por computador 16.
[0042] Conforme observado acima, O meio legível por computador 16 pode compreender um meio transitório, como uma transmissão por difusão sem fio ou por uma rede com fio, ou um meio de armazenamento (isto é, meio de armazenamento não transitório), tais como um disco rígido, flash drive, disco compacto (CD), disco de vídeo digital (DVD), disco Blu-ray ou outra mídia legível por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados do dispositivo de origem 12 e fornecer os dados de vídeo codificados para o dispositivo de destino 14, por exemplo, através de transmissão de rede. Similarmente, um dispositivo de computação de uma instalação de produção de meio, tal como uma instalação de gravação em disco, pode receber dados de vídeo codificados do dispositivo de origem 12 e produzir um disco contendo os dados de vídeo codificados. Assim, o meio legível por computador 16 pode ser entendido de modo a incluir um ou mais meios legíveis por computador de várias formas, em vários exemplos.
[0043] A interface de entrada 28 do dispositivo de destino 14 pode receber ou acessar informações do meio legível por computador 16. A informação do meio legível por computador 16 pode compreender 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 processamentos de blocos e outras unidades codificadas, por exemplo, grupos de imagens (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 raios catódicos (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[0044] O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isto pode compreender um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.) ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificado a partir do dispositivo de armazenamento pode ser uma transmissão por fluxo contínuo, uma transmissão por download, ou uma combinação das mesmas. As técnicas desta descrição não estão necessariamente limitadas às aplicações ou configurações sem fio. As técnicas podem ser aplicadas para codificar vídeo em apoio a qualquer uma dentre uma variedade de aplicações multimídia, tais como difusões de televisão através do ar, transmissões de televisão por cabo, transmissões de televisão por satélite, transmissões de vídeo por fluxo contínuo de Internet, tal como fluxo contínuo adaptativo dinâmico sobre 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 transmissão de vídeo unidirecional ou bidirecional para suportar aplicações tais como fluxo contínuo de vídeo, reprodução de vídeo, difusão de vídeo e/ou vídeo telefonia.
[0045] O codificador de vídeo 20 e o decodificador de vídeo 30 pode, cada um, ser implementado como qualquer um dentre uma variedade de circuitos de codificador adequados, como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de portas programadas em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório adequado e realizar as instruções em hardware utilizando um ou mais processadores para realizar as técnicas desta descrição. Cada um entre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, ou cada um dos quais pode ser integrado como parte de um codificador/decodificador (CODEC) combinado em um respectivo dispositivo. 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 de comunicação sem fio, tal como um telefone celular.
[0046] Embora não mostrado na FIG. 1, em alguns aspectos, cada um entre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser integrado com um codificador e um decodificador de áudio e pode compreender unidades MUX-DEMUX adequadas, ou outro hardware e software, para lidar com a codificação tanto de áudio quanto de vídeo em um fluxo de dados em comum ou fluxos de dados separados. Se aplicável, as 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).
[0047] Esta descrição geralmente pode se referir ao codificador de vídeo 20 "sinalizando" certas informações para outro dispositivo, tal como um decodificador de vídeo 30. Deve ser entendido, no entanto, que o codificador de vídeo 20 pode sinalizar as informações ao associar certos elementos de sintaxe com várias porções de dados de vídeo codificadas. Ou seja, o codificador de vídeo 20 pode "sinalizar" dados armazenando certos elementos de sintaxe de cabeçalhos de várias porções de dados de vídeo codificadas. Em alguns casos, esses elementos de sintaxe podem ser codificados e armazenados antes de serem recebidos e decodificados pelo decodificador de vídeo 30. Assim, o termo "sinalização" geralmente pode se referir à comunicação de sintaxes ou outros dados para decodificação de dados de vídeo comprimidos, se tal comunicação ocorre em tempo real, ou perto do tempo real ou ao longo de um período de tempo, tal como pode ocorrer durante a armazenagem de elementos de sintaxe em um meio no momento da codificação, o qual, então, pode ser recuperada por um dispositivo de decodificação em qualquer momento após ser armazenada nesse meio.
[0048] 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. Recentemente, a concepção de um novo padrão de codificação de vídeo, denominado Codificação de Vídeo de Alta Eficiência (HEVC), foi finalizada pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Experts em Codificação de Vídeo ITU-T (VCEG) e Grupo de Experts em Imagens em Movimento (MPEG) ISO/IEC. A extensão multi- visualização para o HEVC, denominada MV-HEVC, também está sendo desenvolvida pela JCT-3V. Um recente projeto de trabalho (WD) de MV-HEVC, referido como MV-HEVC WD7.A extensão escalonável para o HEVC, chamada SHVC, também está sendo desenvolvida pela JCT-VC. Um recente projeto de trabalho (WD) de SHVC e referido como SHVC WD5. As técnicas desta descrição, no entanto, não estão limitadas a qualquer padrão de codificação particular.
[0049] No HEVC e outros padrões de codificação de vídeo, uma sequência de vídeo normalmente compreende uma série de imagens. As imagens também podem ser referidas como "quadros". Uma imagem pode compreender três matrizes de amostras, denominadas SL, SCb e SCr. SL é uma matriz bidimensional (ou seja, um bloco) de amostras de luminância. SCb é uma matriz bidimensional de amostras de crominância Cb. SCr é uma matriz bidimensional de amostras de crominância Cr. As amostras de crominância podem também ser referidas como amostras "croma". Em outros casos, uma imagem pode ser monocromática e pode incluir apenas uma matriz de amostras de luminância.
[0050] Para gerar uma representação codificada de uma imagem, o codificador de vídeo 20 pode gerar um conjunto de unidades de codificação em árvore (CTUs). Cada uma das CTUs pode ser um bloco de codificação em árvore de amostras de luminância, dois correspondentes blocos de codificação em árvore de amostras de crominância, e estruturas de sintaxe são utilizadas para codificar as amostras dos blocos de codificação em árvore. Um bloco de codificação em árvore pode ser um bloco de amostras NxN. Uma CTU também pode ser referida como uma “treeblock" ou uma "unidade de codificação maior" (LCU). As CTUs do HEVC podem ser amplamente análogas aos macroblocos de outros padrões, tais como H.264/AVC. No entanto, uma CTU não fica necessariamente limitada a um determinado tamanho e pode compreender uma ou mais unidades de codificação (CUs).
[0051] Uma fatia pode compreender um número inteiro de CTUs ordenadas consecutivamente na leitura por varredura (raster scan). Uma fatia pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia de uma fatia pode ser uma estrutura de sintaxe que compreende elementos de sintaxe que fornecem informações sobre a fatia. Os dados da fatia podem compreender CTUs codificadas da fatia.
[0052] Esta descrição pode utilizar os termos "unidade de vídeo" ou "bloco de vídeo" ou "bloco" para se referir a uma ou mais amostras de blocos e estruturas de sintaxe utilizadas para codificar amostras de um ou mais bloco de amostras. Exemplos de tipos de unidades ou blocos de vídeo podem compreender CTUs, CUs, PUs, unidades de transformada (TUs), macroblocos, partições de macroblocos, e assim por diante. Em alguns contextos, a discussão sobre PUs pode ser intercambiada com discussão sobre macroblocos de particionamentos de macroblocos.
[0053] Para gerar uma CTU codificada, o codificador de vídeo 20 pode recursivamente realizar o particionamento quadtree nos blocos de codificação em árvore de uma CTU para dividir os blocos de codificação em árvore em blocos de codificação, daí o nome “unidades de codificação em árvore”. Um bloco de codificação é um bloco de amostras NxN. Uma CU pode ser um bloco de amostras de luminância e dois correspondentes blocos de codificação de amostras de crominância de uma imagem que tem uma matriz de amostra de luminância, uma matriz de amostra de Cb e uma matriz de amostra de Cr, e as estruturas de sintaxe utilizadas para codificar as amostras dos blocos de codificação. O codificador de vídeo 20 pode particionar um bloco de codificação de uma CU em um ou mais blocos de predição. Um bloco de predição pode ser um bloco retangular (isto é, quadrado ou não-quadrado) de amostras no qual a mesma predição é aplicada. Uma unidade de predição (PU) de uma CU pode ser um bloco de predição de amostras de luminância, dois correspondentes blocos de predição de amostras de crominância de uma imagem e estruturas de sintaxe usadas para predizer as amostras de bloco de predição. O codificador de vídeo 20 pode gerar luminância preditiva, blocos Cb e Cr para luminância, blocos de predição Cb e Cr para cada PU da CU.
[0054] O codificador de vídeo 20 pode usar intra-predição ou inter-predição para gerar os blocos preditivos para uma PU. Se o codificador de vídeo 20 utilizar intra-predição para gerar os blocos preditivos de uma PU, o codificador de vídeo 20 pode gerar os blocos preditivos da PU com base em amostras decodificadas de imagens associadas com a PU.
[0055] Se o codificador de vídeo 20 usa inter- predição para gerar os blocos preditivos de uma PU, o codificador de vídeo 20 pode gerar os blocos preditivos de PU com base em amostras decodificadas de uma ou mais imagens que não seja a imagem associada com a PU. O codificador de vídeo 20 pode usar uni-predição ou bi- predição para gerar os blocos preditivos de uma PU. Quando o codificador de vídeo 20 usa uni-predição para gerar os blocos preditivos para um PU, a PU pode ter um único vetor de movimento (MV). Quando o codificador de vídeo 20 usa bi- predição para gerar os blocos preditivos para uma PU, a PU pode ter dois vetores de movimento (MVs).
[0056] Depois que o codificador de vídeo 20 gera blocos preditivos de luminância, Cb e Cr para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar um bloco residual de luminância para a CU. Cada amostra no bloco residual de luminância da CU indica uma diferença entre uma amostra de luminância em um dos blocos preditivos de luminância da CU e uma amostra correspondente no bloco de codificação de luminância original da CU. Além disso, o codificador de vídeo 20 pode gerar um bloco residual Cb para a CU. Cada amostra no bloco residual Cb da CU pode indicar uma diferença entre uma amostra Cb em um dos blocos Cb preditivos da CU e uma amostra correspondente no bloco de codificação Cb original da CU. O codificador de vídeo 20 também pode gerar um bloco residual Cr para a CU. Cada amostra no bloco residual Cr da CU pode indicar uma diferença entre uma amostra Cr em um dos blocos Cr preditivos da CU e uma amostra correspondente no bloco de codificação Cr original da CU.
[0057] Além disso, codificador de vídeo 20 pode usar o particionamento de quadtree para decompor blocos residuais de luminância, Cb e Cr de uma CU em uma ou mais blocos de transformada de luminância, Cb e Cr. Um bloco de transformada pode ser um bloco retangular de amostras em que a mesma transformada é aplicada. Uma unidade de transformada (TU) de uma CU pode ser um bloco de transformada de amostras de luminância, dois correspondentes blocos de transformada de amostras de crominância e as estruturas de sintaxe usadas para transformar as amostras de blocos de transformada. Assim, cada TU de uma CU pode ser associada com um bloco de transformada de luminância, com um bloco de transformada Cb e com um bloco de transformada Cr. O bloco de transformada de luminância associado com a TU pode ser um sub-bloco do bloco residual de luminância da CU. O bloco de transformada Cb pode ser um sub-bloco do bloco residual Cb da CU. O bloco de transformada Cr pode ser um sub-bloco do bloco residual Cr da CU.
[0058] O codificador de vídeo 20 pode aplicar uma ou mais transformadas a um bloco de transformada de luminância de uma TU para gerar um bloco de coeficientes de luminância para a TU. Um bloco de coeficientes pode ser uma matriz bidimensional de coeficientes de transformada. Um coeficiente de transformada pode ser uma quantidade escalar. O codificador de vídeo 20 pode aplicar uma ou mais transformadas para um bloco de transformada Cb de uma TU para gerar um bloco de coeficientes Cb para a TU. O codificador de vídeo 20 pode aplicar uma ou mais transformadas para um bloco de transformada Cr de uma TU para gerar um bloco de coeficientes do Cr para a TU.
[0059] Depois de gerar um bloco de coeficientes (por exemplo, um bloco de coeficientes de luminância, um bloco de coeficientes Cb ou um bloco de coeficientes Cr), o codificador de vídeo 20 pode quantizar o bloco de coeficientes. A quantização geralmente se refere a um processo no qual transformadas de coeficientes são quantizadas para possivelmente reduzir a quantidade de dados usados para representar os coeficientes de transformada, fornecendo compressão adicional. Depois que o codificador de vídeo 20 quantiza um bloco de coeficientes, o codificador de vídeo 20 pode codificar elementos de sintaxe indicando os coeficientes de transformada quantizados. Por exemplo, o codificador de vídeo 20 pode realizar a codificação aritmética binária adaptável ao contexto (CABAC) nos elementos de sintaxe indicando os coeficientes de transformada quantizados. O codificador de vídeo 20 pode emitir os elementos de sintaxe codificados por entropia em um fluxo de bits.
[0060] O codificador de vídeo 20 pode emitir um fluxo de bits de camada única ou multicamada. Cada camada tem um fluxo de bits associado que compreende os elementos de sintaxe de codificados por entropia. O fluxo de bits pode compreender uma sequência de bits que forma uma representação de imagens codificadas e de dados associados. O fluxo de bits pode compreender uma sequência de unidades de camada de abstração de rede (NAL). Cada uma das unidades NAL compreende um cabeçalho da unidade NAL e encapsula uma carga útil de sequência de byte bruto (RBSP). O cabeçalho da unidade NAL pode compreender um elemento de sintaxe que indica uma codificação de tipo da unidade NAL. A codificação de tipo da unidade NAL especificada pelo cabeçalho da unidade NAL de uma unidade NAL indica o tipo da unidade NAL. Uma RBSP pode ser um elemento de sintaxe que contém um número inteiro de bytes e está encapsulado dentro de uma unidade NAL. Em alguns casos, uma RBSP compreende bits zero.
[0061] Diferentes tipos de unidades NAL podem encapsular tipos diferentes de RBSPs. Por exemplo, um primeiro tipo de unidade NAL pode encapsular uma RBSP para um conjunto de parâmetros de imagem (PPS), um segundo tipo de unidade NAL pode encapsular uma RBSP para uma fatia codificada, um terceiro tipo de unidade NAL pode encapsular uma RBSP para informação suplementar aprimorada (SEI) e assim por diante. As unidades NAL que encapsulam RBSPs para dados de codificação de vídeo (em oposição às RBSPs para conjuntos de parâmetros e mensagens SEI) podem ser referidas como unidades VCL NAL.
[0062] O decodificador de vídeo 30 pode receber um fluxo de bits gerado pelo codificador de vídeo 20. Além disso, o decodificador de vídeo 30 pode analisar o fluxo de bits para decodificar elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base, pelo menos em parte, nos elementos de sintaxe decodificados do fluxo de bits. O processo para reconstruir os dados de vídeo pode ser geralmente recíproco ao processo realizado pelo codificador de vídeo 20.
[0063] Por exemplo, o decodificador de vídeo 30 pode usar vetores de movimento (MVs) de PUs para determinar blocos da amostra preditivos para as PUs de uma CU atual. Adicionalmente, o decodificador de vídeo 30 pode quantizar inversamente os coeficientes dos blocos de transformadas associados às TUs da CU atual. O decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficientes de transformada para reconstruir os blocos de transformada associados com as TUs da CU atual. O decodificador de vídeo 30 pode reconstruir os blocos de codificação da CU atual adicionando as amostras dos blocos de amostras preditivos para PUs da CU atual às amostras correspondentes dos blocos de transformada das TUs da CU atual. Ao reconstruir os blocos de codificação para cada CU de uma imagem, o decodificador de vídeo 30 pode reconstruir a imagem.
[0064] O codificador de vídeo 20 e o decodificador de vídeo 30 podem atribuir a cada imagem de uma sequência de vídeo um valor de POC para identificação da imagem. O codificador de vídeo 20 pode codificar (e o decodificador de vídeo 30 pode decodificar) dados representativos de imagens de referência para serem incluídos na lista de imagens de referência, por exemplo, pela sinalização dos dados representativos de valores POC para as imagens de referência no cabeçalho de fatia e/ou em um conjunto de parâmetros, tal como uma PPS ou uma SPS. Um valor de POC, representado pelo elemento de sintaxe PicOrderCntVal, para uma determinada imagem codificada denota a ordem relativa da imagem no processo de saída de imagens em relação a outras imagens na mesma sequência de vídeo codificado. Os valores POC de imagens de referência que foram decrementados podem ter um valor negativo a fim de manter a ordem de saída apropriada dessas imagens.
[0065] Um valor de POC compreende um valor de POC LSB e um valor de POC MSB. O valor de POC LSB pode aumentar para cada imagem e especificar uma ordem de saída de um valor inicial de zero a um valor máximo (por exemplo, um valor máximo especificado utilizando de 4 a 16 bits). No exemplo de um valor de POC LSB de oito bits, para fins de ilustração, depois de um valor de POC LSB de 255, o valor de POC LSB pode rolar de 255 para zero e o valor de POC LSB pode continuar aumentando a partir de zero. O valor de POC LSB pode ser sinalizado no cabeçalho de fatia, enquanto o valor de POC MSB pode ser computado pelo decodificador de vídeo 30 com base no tipo de unidade NAL da imagem atual e o MSB e LSB da imagem anterior na ordem de decodificação, conhecidas como imagens POC-âncora. Para o SHVC e/ou o MV- HEVC, informações adicionais podem ser sinalizadas para auxiliar no cálculo de um POC MSB. Nesses exemplos, quando houver informação adicional, o cálculo de POC MSB não depende da imagem anterior na ordem de decodificação.
[0066] Uma unidade de acesso de um fluxo de bits multicamada pode compreender uma imagem IRAP, bem como uma ou mais outras imagens que não são imagens IRAP (ou seja, não-IRAP imagens). Uma imagem IRAP contém somente fatias intra-codificadas (I) e pode ser uma imagem de acesso de enlace interrompido (BLA), uma imagem de acesso aleatório limpo (CRA) ou uma imagem IDR. Para cada camada, a primeira imagem no fluxo de bits para uma sequência de vídeo codificada é uma imagem IRAP. Imagens IRAP também são fornecidas em vários pontos em cada camada de fluxo de bits multicamada. Uma unidade de acesso multicamada pode compreender imagens IRAP e imagens não-IRAP, porque as imagens IRAP podem não ser espaçadas nos mesmos intervalos dentro de cada camada. Devido ao fato de as imagens IRAP normalmente exigirem uma carga útil de bit maior do que as imagens não-IRAP inter-codificadas, o codificador de vídeo 20 pode espaçar as imagens IRAP em um intervalo maior em uma camada aprimorada em comparação com uma camada base.
[0067] Por exemplo, para um GOP de oito, o codificador de vídeo 20 pode espaçar as imagens IRAP a cada 32 imagens em uma camada base e espaçar as imagens IRAP a cada 96 imagens em uma camada aprimorada. Em um ponto no fluxo de bits multicamada quando uma camada (tal como uma camada base) tem uma imagem IRAP e outra camada não tem uma imagem IRAP, uma unidade de acesso multicamada pode ser referida como uma unidade de acesso não alinhada. As unidades de acesso multicamada subsequentes continuam a ser não alinhadas até que um POC seja redefinido. Conforme apresentado em maiores detalhes abaixo, a provisão de uma imagem IRAP em todas as camadas de uma unidade de acesso multicamada pode redefinir o alinhamento.
[0068] Em alguns casos, os valores POC podem ser redefinidos para imagens de uma unidade de acesso multicamada a fim de manter o alinhamento POC das imagens na unidade de acesso multicamada. A título de exemplo, um decodificador compatível com padrões HEVC pode ser configurado para extrair e decodificar uma camada não-base (também conhecida como uma camada aprimorada) de um fluxo de bits multicamada sem atualizar as informações do conjunto de imagens de referência (RPS) nos cabeçalhos de fatia de imagens na camada extraída. A camada aprimorada pode ser, por exemplo, uma visualização alternativa em um fluxo de bits MV-HEVC ou em um vídeo escalonado em um fluxo de bits SHVC. Um período de redefinição de POC em uma camada específica pode ser especificado com base em um identificador de período de redefinição de POC sinalizado em cabeçalhos do segmento de fatia. Ou seja, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar respectivamente dados representativos do identificador de período de redefinição de POC em cabeçalhos de segmento de fatia.
[0069] Cada imagem não-IRAP (incluindo imagens de um tipo de imagem IDR) que pertence a uma unidade de acesso que contém pelo menos uma imagem IRAP pode ser o início de um período de redefinição de POC que pode ser iniciado na camada que contém a imagem não-IRAP. Ou seja, um codificador de vídeo 20 pode definir um tipo de redefinição de POC para uma imagem não-IRAP de uma unidade de acesso contendo pelo menos uma imagem IRAP para indicar que a imagem não-IRAP é o início de um novo período de redefinição de POC. Em tal unidade de acesso, cada imagem seria, então, o início de um período de redefinição de POC em cada uma das camadas.
[0070] O codificador de vídeo 20 pode sinalizar um valor de POC LSB em um cabeçalho de segmento de fatia que o decodificador de vídeo 30 pode usar para derivar valores POC de imagens em uma camada, incluindo a fatia possuindo o cabeçalho de segmento de fatia. O valor de POC LSB sinalizado no cabeçalho de segmento de fatia pode ser usado para a derivação de um valor de POC delta, que pode ser usado para atualizar os valores POC das imagens na mesma camada no DPB e também para a derivação do POC MSB do valor de POC da imagem atual.
[0071] Ao realizar a redefinição de POC para um período de redefinição de POC, o codificador de vídeo 20 pode sinalizar o tipo de redefinição de POC no cabeçalho de segmento da fatia. O tipo de redefinição de POC pode ser indicado utilizando um índice de redefinição de valor de POC (poc_reset_idc), que pode indicar se os valores POC devem ser totalmente ou parcialmente redefinidos. Por exemplo, no MV-HEVC ou no SHVC, o tipo de redefinição de POC pode ser indicado utilizando um elemento de sintaxe poc_reset_idc. Em um exemplo, uma sintaxe poc_reset_idc que é igual a 0 especifica que nem as MSBs e nem as LSBs do valor de POC para a imagem atual são redefinidas. Um elemento de sintaxe poc_reset_idc que é igual a 1 especifica que somente as MSBs do valor de POC para uma imagem atual podem ser redefinidas. Um elemento de sintaxe poc_reset_idc que é igual a 2 especifica que ambas as MSBs e LSBs do valor de POC para a imagem atual podem ser redefinidas. Um elemento de sintaxe poc_reset_idc que é igual a 3 especifica que apenas as MSBs ou ambas MSBs e LSBs do valor de POC para a imagem atual podem ser redefinidas e uma informação POC adicional é sinalizada.
[0072] Para uma camada não-base independente ser independentemente decodificável, o codificador de vídeo 20 e o decodificador de vídeo 30 podem aplicar certas restrições ao formar e decodificar o fluxo de bits. Em um exemplo não limitador para fins de ilustração, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar fluxos de bits multicamada utilizando o MV-HEVC ou o SHVC. O codificador de vídeo 20 e o decodificador de vídeo 30 podem aplicar uma ou mais restrições ao codificar uma camada não-base independente para permitir que a camada não-base seja extraída e decodificada utilizando um decodificador compatível com HEVC. Por exemplo, para a camada não-base independente ser decodificada com êxito pelo decodificador compatível com HEVC, o codificador de vídeo 20 e decodificador de vídeo 30 podem utilizar sintaxe para a camada não-base independente em conformidade com o HEVC. Por exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar uma fatia de cabeçalhos e outra sintaxe da camada não-base independente para se conformar ao padrão de HEVC. Desta forma, um decodificador de vídeo compatível com HEVC pode decodificar a camada não-base independente sem modificar dados de cabeçalhos de fatia ou realizar outras operações de transcodificação.
[0073] Em alguns casos, redefinir um valor de POC LSB de uma imagem da camada não-base independente pode causar um problema na tentativa identificar uma imagem de referência de longo prazo (LTRP) em um RPS. Por exemplo, como mencionado acima, o codificador de vídeo 20 pode codificar (e o decodificador de vídeo 30 pode decodificar) dados representativos de imagens de referência para serem incluídos na lista de imagens de referência, por exemplo, pela sinalização dos dados representativos de valores POC para as imagens de referência no cabeçalho de fatia e/ou em um conjunto de parâmetro, como um PPS ou um SPS. Adicionalmente, antes de incluir os dados representativos de imagens de referência a serem incluídos na lista de imagens de referência, o codificador de vídeo 20 e o decodificador de vídeo 30 podem decrementar os valores POC das imagens que foram processadas e armazenadas em um DPB antes da imagem atual associada com a redefinição de POC.
[0074] As LTRPs podem ser identificadas com base em um valor de POC LSB das respectivas LTRPs. Conforme observado acima, o codificador de vídeo 20 pode ajustar normalmente (por exemplo, decrementar) os valores POC LSB das LTRPs realizando a redefinição do valor de POC para considerar a redefinição do valor de POC. Consequentemente, o codificador de vídeo 20 tipicamente pode incluir os valores POC LSB decrementados das LTRPs nos cabeçalhos de fatia (e/ou em uma PPS ou uma SPS). Para as LTRPs que são negativas em valor (por exemplo, depois da redefinição de um valor de POC), o codificador de vídeo 20 ou o decodificador de vídeo 30 pode converter o valor de POC LSB negativo para um valor de POC LSB positivo utilizando um algoritmo de conversão.
[0075] Alguns decodificadores de vídeo, no entanto, podem não estar configurados para decodificar a sintaxe associada com a redefinição do valor de POC. Em um exemplo não limitador para fins de ilustração, um decodificador de vídeo compatível com o HEVC pode receber uma camada não-base independente que foi extraída de um fluxo de bits multicamada. O decodificador de vídeo compatível com HEVC pode não interpretar corretamente valor de POC, redefinindo a sintaxe. Em tais casos, o decodificador de vídeo compatível com HEVC pode não realizar a redefinição de valor de POC. Por exemplo, o decodificador de vídeo compatível com HEVC pode descartar a informação de redefinição de valor de POC e pode não decrementar os valores POC das imagens armazenadas no DPB do decodificador de vídeo compatível com o HEVC.
[0076] No exemplo descrito acima, o decodificador de vídeo compatível com HEVC pode não identificar corretamente as LTRPs baseadas nos valores POC LSB das LTRPs sinalizadas no cabeçalho de fatia, porque o decodificador de vídeo compatível com HEVC pode não estar configurado para realizar a redefinição de valor de POC ou decrementar os valores POC das imagens armazenadas no DPB. Ou seja, o decodificador de vídeo compatível com HEVC pode receber valores POC das LTRPs que foram decrementadas pelo codificador de vídeo 20 nos cabeçalhos de fatia das imagens (devido à redefinição de valor de POC). Os valores POC das LTRPs sinalizadas no cabeçalho de fatia, no entanto, podem não alinhar corretamente com as imagens de referência no DPB, porque o decodificador de vídeo compatível com HEVC não decrementou os valores POC das imagens do DPB. Nesse sentido, o decodificador de vídeo compatível com HEVC pode não identificar corretamente as LTRPs na base DPB nos valores POC recebidos.
[0077] Em um exemplo para fins de ilustração, o codificador de vídeo 20 pode codificar uma imagem de uma camada não-base independente de um fluxo de bits multicamada utilizando LTRPs com valores POC LSB de 10 e 20. O codificador de vídeo 20 pode realizar a redefinição de valor de POC de uma imagem tendo um valor de POC LSB de 60. Consequentemente, o codificador de vídeo 20 pode decrementar em 60 os valores POC das imagens armazenadas no DPB e sinalizar as LTRPs utilizando os valores POC LSB decrementados (por exemplo, -50 e -40).
[0078] Nos casos em que um decodificador de vídeo é configurado para decodificar o fluxo de bits sem realizar a redefinição de valor de POC (tal como o decodificador de vídeo compatível com o HEVC mencionado acima), no entanto, o decodificador de vídeo pode não diminuir os valores POC LSB de imagens armazenadas no DPB. Por exemplo, na extração da camada não-base independente do fluxo de bits multicamada, o decodificador de vídeo pode decodificar as indicações dos valores LTRP POC LSB -50 e - 40 de um cabeçalho de fatia. As imagens correspondentes armazenadas no DPB, no entanto, podem ainda ter os valores de 10 e 20 pois o decodificador de vídeo 30 não realizou a redefinição do valor de POC. Logo, o decodificador de vídeo pode não identificar corretamente as LTRPs no DPB com base nos valores POC LSB sinalizados.
[0079] De acordo com os aspectos desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem controlar a maneira como é realizada a redefinição de valor de POC. As técnicas podem, em alguns casos, permitir que os valores POC de LTRPs sejam sinalizados no cabeçalho de fatia para manter a consistência com os valores POC das imagens de referência armazenadas em um DPB do decodificador de vídeo quando decodificando uma camada não-base independente.
[0080] Em um exemplo, codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar (codificar ou decodificar) uma imagem de uma camada independentemente decodificável de um fluxo de bits multicamada. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem codificar dados indicando uma redefinição de valor de POC para um valor de POC LSB da imagem apenas quando a imagem tem um valor de POC LSB para a imagem igual a zero. Em tais casos, a realização da redefinição de valor de POC não exige que o codificador de vídeo 20 ou decodificador de vídeo 30 decremente os valores POC de imagens armazenadas em um DPB, porque o valor de POC LSB já é igual a zero.
[0081] Retornando ao exemplo descrito acima, para fins de ilustração, se o codificador de vídeo 20 e decodificador de vídeo 30 realizam a redefinição do valor de POC em uma imagem que tem um valor de POC LSB igual a zero (por exemplo, ao invés do valor de POC LSB de 60 observado acima), o codificador de vídeo 20 e o decodificador de vídeo 30 não decrementam os valores POC LSB das imagens armazenadas no DPB, porque a diferença entre o valor de POC LSB e zero é zero. Por conseguinte, os valores POC LSB LTRPs sinalizados em um cabeçalho de fatia são consistentes com os valores POC LSB das imagens armazenadas em um DPB no decodificador de vídeo 30.
[0082] Em alguns exemplos, de acordo com os aspectos desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem aplicar restrições para que a redefinição de valor de POC seja realizada apenas para imagens com um valor de POC LSB que é igual a zero. Em um exemplo, para uma camada não-base independente (camadaA) ser capaz de ser extraída e manter a conformidade com um padrão específico (por exemplo, manter a conformidade com um perfil do HEVC) sem alterar o cabeçalho de fatia de uma unidade VCL NAL das imagens em camadaA, o codificador de vídeo 20 e o decodificador de vídeo 30 podem aplicar as seguintes restrições: (1) para cada cabeçalho de segment de fatia das imagens IDR em camadaA, um elemento de sintaxe slice_pic_order_cnt_lsb não deve estar presente; e (2) cada imagem na camada não terá uma imagem de referência de longo prazo que precede uma imagem de redefinição POC que redefina ambos os valores MSB e LSB do valor de POC.
[0083] Em outro exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem aplicar as seguintes restrições: (1) para cada cabeçalho de segment de fatia de uma imagem IDR em camadaA, o elemento de sintaxe slice_pic_order_cnt_lsb não deve estar presente; e (2) não deve haver nenhuma imagem de redefinição POC que redefina ambos os valores MSB e LSB de um valor de POC em camadaA, a menos que tal imagem de redefinição POC tenha POC LSB igual a 0 (antes da redefinição).
[0084] Em outro exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem aplicar as seguintes restrições: (1) para cada cabeçalho de segment de fatia de uma imagem IDR em camadaA, o elemento de sintaxe slice_pic_order_cnt_lsb não deve estar presente; (2) não deverá haver nenhuma imagem de redefinição POC que redefina ambos os valores MSB e LSB de um valor de POC em camadaA, a menos que tal imagem de redefinição POC seja também uma imagem IDR; e (3) não deve haver imagem de redefinição POC com um elemento de sintaxe poc_reset_idc igual a 3 que indica a redefinição dos valores MSB e LSB de um valor de POC em camadaA, a menos que as imagens redefinidas também sejam imagens IDR.
[0085] Em ainda outro exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 poderão condicionar a presença de um base_layer_parameter_set_compatibility_flag[i] em um valor de POC_lsb_not_present_flag[i], conforme descrito mais detalhadamente abaixo. Em ainda outro exemplo, o codificador de vídeo 20 pode sinalizar (e o decodificador de vídeo 30 pode decodificar) um indicador para cada camada não-base independente para indicar se a camada mantém compatibilidade com um determinado padrão (por exemplo, HEVC) após a extração.
[0086] As técnicas desta descrição também estão relacionadas à manutenção do alinhamento do valor de POC de imagens de uma unidade de acesso multicamada (por exemplo, garantindo que todas as imagens da unidade de acesso têm o mesmo valor de POC). Por exemplo, enquanto a redefinição do valor de POC é geralmente realizada para imagens IDR, em alguns casos na codificação multicamada, o codificador de vídeo 20 e o decodificador de vídeo 30 podem não redefinir o valor de POC de uma imagem IDR. Em um exemplo, para fins de ilustração, uma unidade de acesso pode compreender uma imagem de camada base que não é uma imagem IDR e uma imagem de camada não-base que é uma imagem IDR. Embora o codificador de vídeo 20 e o decodificador de vídeo 30 possam normalmente realizar a redefinição do valor de POC para as imagens IDR de camada não-base, a fim de manter o alinhamento de valor de POC na unidade de acesso, o codificador de vídeo 20 pode, ao contrário, sinalizar (e o decodificador de vídeo 30 pode decodificar) o valor de POC LSB da camada base para a imagem de camada não-base. Por exemplo, o codificador de vídeo 20 pode compreender uma indicação do valor de POC LSB da camada base (que não é igual a zero) em cabeçalhos de fatia de imagem da camada não-base.
[0087] O exemplo descrito acima, no entanto, pode apresentar um desafio durante a codificação de uma camada não-base independente. Em um exemplo não limitador para fins de ilustração, um decodificador de vídeo compatível com HEVC pode redefinir um valor de POC LSB de uma imagem IDR para ser igual a zero. Em um exemplo, o decodificador de vídeo compatível com HEVC pode não estar configurado para decodificar uma indicação do valor de POC LSB de cabeçalhos de fatia de fatias de imagem IDR, porque o valor de POC LSB é zero. Portanto, o decodificador de vídeo compatível com HEVC pode funcionar de forma inadequada quando um valor de POC LSB é sinalizado em cabeçalhos de fatia de uma imagem IDR, porque o decodificador de vídeo compatível com HEVC pode não estar configurado para decodificar o valor de POC LSB de cabeçalhos de fatia de imagens IDR. O decodificador pode, então, saltar para a próxima imagem IRAP em sequência, o que pode degradar a continuidade em uma experiência de usuário.
[0088] Os padrões MV-HEVCe e SHVC, acima observados, podem indicar se um sub-fluxo de bits é independentemente decodificável utilizando um ou mais elementos de sintaxe, incluindo um poc_lsb_not_present_flag. Em alguns casos, um poc_lsb_not_present_flag que é igual a 1 pode indicar que a camada que está associada com o poc_lsb_not_present_flag é independentemente decodificável, por exemplo, por um decodificador de vídeo compatível com o HEVC. Por outro lado, um poc_lsb_not_present_flag que é igual a 0 pode indicar que certa sintaxe tal como a sintaxe compreendida nos cabeçalhos de fatia talvez precisem ser modificadas para que a camada seja independentemente decodificada.
[0089] Em geral, poc_lsb_not_present_flag pode indicar se um valor de POC LSB está compreendido em um cabeçalho de fatia de uma imagem IDR. De acordo com o SHVC e o MV-HEVC, o poc_lsb_not_present_flag igual a um especifica que o valor de POC LSB não está presente nos cabeçalhos de fatia das imagens IDR. A poc_lsb_not_present_flag igual a zero especifica que o valor de POC LSB pode ou não estar presente nos cabeçalhos de fatia das imagens IDR. O poc_lsb_not_present_flag pode permitir a extração e a decodificação relativamente mais fácil de uma camada não-base, porque fornece uma indicação de que um valor de POC LSB pode estar incluído em um cabeçalho de fatia.
[0090] No que diz respeito aos padrões MV- HEVCe e SHVC, acima observados, a única restrição explícita sobre como configurar o poc_lsb_not_present_flag igual a um (por exemplo, indicando que o valor de POC LSB não está incluído no cabeçalho de fatia) é que a camada que está sendo codificada seja uma camada independente. A indicação que o valor de POC LSB não está incluído no cabeçalho da fatia, no entanto, pode criar um problema para as imagens de uma camada independente que não tem um valor de POC LSB de zero, conforme descrito em maiores detalhes com relação ao exemplo da FIG. 5 abaixo.
[0091] De acordo com os aspectos desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar dados indicando uma redefinição de valor de POC para um valor de POC LSB de uma imagem apenas quando a imagem tem um valor de POC LSB para a imagem igual a zero. Por exemplo, o codificador de vídeo 20 e decodificador de vídeo 30 aplicam uma restrição tal que o valor de poc_lsb_not_present_flag[i] não deve ser igual a um (por exemplo, indicando que o valor de POC LSB não está incluído no cabeçalho de fatia) a menos que o valor de POC LSB de uma imagem IDR na camada possa ser inferido para ser igual a zero. O valor de POC LSB de uma imagem de uma camada não-base independente pode inferir para ser igual a zero quando o valor de POC LSB de uma imagem de uma camada base da mesma unidade de acesso é uma imagem IDR, ou quando o valor de POC LSB da imagem de uma camada não-base recebe um valor zero (por exemplo, após uma progressão normal de valores POC LSB de 0 para um valor de POC LSB máximo).
[0092] A FIG. 2 é um diagrama de blocos ilustrando um exemplo de codificador de vídeo 20 que pode implementar técnicas para gerenciar valores POC, de acordo com as técnicas desta descrição. Particularmente, o codificador de vídeo 20 pode ser configurado para gerenciar valores POC de imagens de um fluxo de bits multicamada de acordo com as técnicas desta descrição. Conforme observado acima, o codificador de vídeo 20 pode ser adaptado para realizar a codificações de vídeo multi-visualização e/ou escalonável. Por exemplo, o codificador de vídeo 20 pode ser configurado para codificar um fluxo de bits em conformidade com uma ou mais extensões de padrão de codificação de vídeo, tais como SHVC ou MV-HEVC. No entanto, embora seja feito referência a padrões de codificação específicos, deve ser entendido que as técnicas não são específicas para qualquer padrão de codificação e podem ser implementadas com padrões futuros e/ou não ainda desenvolvidos.
[0093] O codificador de vídeo 20 pode realizar intra-codificação e inter-codificação de blocos de vídeo dentro de fatias de vídeo. A intra-codificação se baseia na predição espacial para reduzir ou remover redundância espacial no vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeos. A inter-codificação depende de predição temporal para reduzir ou remover redundância temporal no vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. Intra-modo (modo I) pode se referir a qualquer um dentre os vários modos de codificação com base espacial. Inter-modos, tais como a predição uni- direcional (modo P) ou a bi-predição (modo B), podem se referir a qualquer um dentre os vários modos de codificação com base temporal.
[0094] Como mostrado na FIG. 2, o codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo para ser codificado. No exemplo da FIG. 2, o codificador de vídeo 20 compreende a unidade de seleção de modo 40, a memória de imagem de referência 64, o somador 50, a unidade de processamento de transformada 52, a unidade de quantização 54 e a unidade de codificação por entropia 56. A unidade de seleção de modo 40, por sua vez, compreende a unidade de compensação de movimento 44, a unidade de estimação de movimento 42, a unidade de intra- predição 46 e a unidade de particionamento 48. Para a reconstrução do bloco de vídeo, o codificador de vídeo 20 também compreende a unidade de quantização inversa 58, a unidade de transformada inversa 60 e o somador 62. Um filtro de desblocagem (deblocking) (não mostrado na Fig. 2) também pode ser incluído para filtrar limites do bloco para remover artefatos de blocagem do vídeo reconstruído. Se desejado, o filtro de desblocagem normalmente pode filtrar a saída do somador 62. Filtros adicionais (em loop ou após o loop) também podem ser utilizados além do filtro de desblocagem. Esses filtros não são mostrados por questões de concisão, mas se desejado, pode-se filtrar a saída do somador 50 (como um filtro em loop).
[0095] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou uma fatia de vídeo para ser codificado. O quadro ou a fatia pode ser dividido em múltiplos blocos de vídeo. A memória de dados de vídeo 38 pode armazenar os dados de vídeo a serem codificado pelos componentes do codificador de vídeo 20. Os dados de vídeo armazenados na memória de dados de vídeo 38 podem ser obtidos, por exemplo, da fonte de vídeo 18. A memória de imagens de referência 64 pode ser referida como um DPB que armazena vídeos de referência para uso na codificação de dados de vídeo pelo codificador de vídeo 20, por exemplo, nos modos de intra-codificação ou inter- codificação. A memória de dados de vídeo 38 e a memória de imagens de referência 64 podem ser formadas por qualquer um dentre uma variedade de dispositivos de memória, tais como a memória de acesso aleatório dinâmica (DRAM), incluindo a DRAM síncrona (SDRAM), a RAM magnetoresistiva (MRAM), a RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 38 e a memória de imagens de referência 64 podem ser fornecidas pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 38 pode ser on-chip com outros componentes do codificador de vídeo 20, ou off-chip em relação a esses componentes.
[0096] A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 realizam a codificação inter-preditiva do bloco de vídeo recebido relativo a um ou mais blocos em um ou mais quadros de referência para fornecer a predição temporal. A unidade de intra-predição 46 pode realizar alternativamente a codificação intra-preditiva do bloco de vídeo recebido relativo a um ou mais blocos vizinhos no mesmo quadro ou fatia conforme o bloco a ser codificado para fornecer a predição espacial. O codificador de vídeo 20 pode realizar várias passagens de codificação, por exemplo, para selecionar um modo de codificação apropriado para cada bloco de dados de vídeo.
[0097] Além disso, a unidade de particionamento 48 pode particionar blocos de dados de vídeo em sub-blocos, com base na avaliação de esquemas de particionamento anteriores em passes de codificação anteriores. Por exemplo, a unidade de particionamento 48 inicialmente pode particionar um quadro ou uma fatia em LCUs, e particionar cada uma das LCUs em sub-CUs com base na análise da taxa de distorção (por exemplo, otimização da taxa de distorção). A unidade de seleção de modo 40 ainda pode produzir uma estrutura de dados quadtree indicativa de particionamento de uma LCU em sub-CUs. As CUs nós-folha da quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[0098] A unidade de modo de seleção 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, com base nos resultados de erro e fornecer o bloco intra-codificado ou inter-codificado resultante ao somador 50 para gerar blocos de dados residuais e ao somador 62 para reconstruir o bloco codificado para uso como um quadro de referência. A unidade de modo de seleção 40 também fornece elementos de sintaxe, como vetores de movimento, indicadores de intra-modo, informações de particionamento e outras informações de sintaxe, à unidade codificação por entropia 56.
[0099] A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. A estimação de movimento, realizada pela unidade de estimação de movimento 42, é o processo de geração de vetores de movimento que estimam movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro de um quadro de vídeo ou de uma imagem atual em relação a um bloco de predição dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco atual que está sendo codificado dentro da fatia atual (ou outra unidade codificada). Um bloco preditivo é um bloco que é encontrado para coincidir estreitamente com o bloco a ser codificado, em termos de diferença de pixel, o que pode ser determinado pela soma da diferença absoluta (SAD), a soma da diferença de quadrados (SSD) ou outras medidas de diferença.
[0100] A unidade de estimação de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia inter-codificada, comparando a posição da PU com a posição de um bloco de predição de uma imagem de referência. A imagem de referência pode ser selecionada de uma primeira lista de imagens de referência (lista 0) ou uma segunda lista de imagens de referência (lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagens de referência 64. A unidade de estimação de movimento 42 envia o vetor de movimento calculado para unidade de codificação por entropia 56 e para a unidade de compensação de movimento 44.
[0101] A compensação de movimento, realizada pela unidade de compensação de movimento 44, pode envolver a busca ou a geração de um bloco preditivo com base no vetor de movimento determinado pela unidade de estimação de movimento 42. Mais uma vez, a unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem estar funcionalmente integradas, em alguns exemplos. Ao receber o vetor de movimento para a PU do bloco atual, a unidade de compensação de movimento 44 pode localizar o bloco preditivo para o qual aponta o vetor de movimento em uma das listas de imagens de referência. O somador 50 forma um bloco de vídeo residual, subtraindo os valores de pixel do bloco preditivo dos valores de pixel atual do bloco de vídeo que está sendo codificado, formando os valores da diferença de pixel, como discutido abaixo. Em geral, a unidade de estimação de movimento 42 realiza a estimação de movimento em relação às componentes de luminância, e a unidade de compensação de movimento 44 utiliza os vetores de movimento calculados com base nas componentes de luminância para ambas as componentes de crominância e de luminâ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 vídeo.
[0102] A unidade de estimação de movimento 42 busca imagens de referência armazenadas em um DPB da memória de imagens de referência 64. A unidade de seleção de modo 40 pode determinar quais imagens de referência devem ser usadas para codificar uma imagem, fatia de imagens e/ou uma sequência de imagens. O codificador de vídeo 20 pode codificar valores de contagem de ordem de imagens (POC) para imagens de referência usados para codificar as imagens, a fatia ou a sequência. O codificador de vídeo 20 pode codificar os valores POC indicativos de imagens de referência para serem incluídos na lista de imagens de referência nos cabeçalhos de fatia e/ou nos conjuntos de parâmetros, tais como PPSs e/ou SPSs.
[0103] Desta forma, um decodificador de vídeo, tal como o decodificador de vídeo 30, pode reproduzir a lista de imagens de referência, incluindo as imagens de referência indicadas no cabeçalho de fatia e/ou no conjunto de parâmetros. Além disso, após a codificação de um bloco utilizando um vetor de movimento produzido pela unidade de estimação de movimento 42, o codificador de vídeo 20 pode codificar as informações de movimento para o bloco, onde as informações de movimento podem compreender dados representativos do vetor de movimento, um identificador para a lista de imagens de referência, e um índice de referência que identifica uma imagem de referência na lista de imagens de referência.
[0104] Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para as posições de pixels sub-inteiros de imagens de referência armazenadas na memória de imagens de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de pixel de um quarto, posições de pixel de um oitavo ou outras posições fracionárias de pixel da imagem de referência. Portanto, a unidade de estimação de movimento 42 pode realizar uma busca de movimento em relação às posições de pixel total e às posições de pixel fracionário e emitir um vetor de movimento com precisão de pixel fracionário.
[0105] Codificador de vídeo 20 também pode formar períodos redefinição de POC e codificar valores identificadores para períodos de redefinição de POC para fatias de imagens designarem fatias para os respectivos períodos de redefinição de POC. O codificador de vídeo 20 pode assinalar as fatias para os respectivos períodos de redefinição de POC individualmente em cada camada de dados de vídeo. Além disso, o codificador de vídeo 20 pode determinar os tipos de redefinição de POC para as fatias e codificar valores para indicações dos tipos de redefinição do POC (por exemplo, valores de dois bits) para as fatias.
[0106] Conforme discutido em relação a FIG. 1, o codificador de vídeo 20 pode ser configurado de acordo com as restrições estabelecidas por um padrão de codificação de vídeo aplicável. Por exemplo, o codificador de vídeo 20 pode garantir que a primeira imagem em cada período de redefinição de POC tenha um tipo de redefinição de POC (por exemplo, um poc_reset_idc), indicando que os valores POC devem ser totalmente ou parcialmente redefinidos. Em geral, como descrito acima, o codificador de vídeo 20 pode determinar um valor de POC MSB para uma imagem atual, baseado no valor de POC MSB da imagem codificada, antes da imagem atual, na ordem de decodificação ou com base em informações adicionais (por exemplo, o ciclo POC MSB) que são sinalizadas no cabeçalho de fatia.
[0107] De acordo com os aspectos desta descrição, o codificador de vídeo 20 pode codificar dados indicando uma redefinição de valor de POC para um valor de POC LSB de uma imagem de uma camada não-base independente, somente quando a imagem tem um valor de POC LSB para a imagem igual a zero. Por exemplo, o codificador de vídeo 20 pode codificar um elemento de sintaxe poc_reset_idc. O codificador de vídeo 20 pode definir um elemento de sintaxe poc_reset_idc igual a 0 para especificar que nem as MSBs nem as LSBs de um valor de POC para a imagem atual sejam redefinidas. O codificador de vídeo 20 pode definir um elemento de sintaxe de poc_reset_idc igual a 1 para especificar que somente as MSBs do valor de POC para o quadro atual podem ser redefinidas. O codificador de vídeo 20 pode definir um elemento de sintaxe poc_reset_idc igual a 2 para especificar que tanto as MSBs quanto as LSBs do valor de POC para uma imagem atual podem ser redefinidas. O codificador de vídeo 20 pode definir um elemento de sintaxe poc_reset_idc igual a 3 para especificar que apenas as MSBs ou tanto as MSBs quanto as LSBs do valor de POC para a imagem atual podem ser redefinidas e que as informações de contagem de ordem de imagens adicionais podem ser sinalizadas.
[0108] O codificador de vídeo 20 pode controlar a maneira como o valor de POC_reset_idc é definido com base em uma ou mais restrições. Por exemplo, codificador de vídeo 20 pode controlar a maneira como o elemento de sintaxe poc_reset_idc é definido para garantir que o fluxo de bits resultante está de acordo com um padrão específico. De acordo com os aspectos desta descrição, o codificador de vídeo 20 pode definir o elemento de sintaxe poc_reset_idc para uma imagem em uma camada não-base independente de um fluxo de bits multicamada de uma forma que permita que a camada não-base independente seja decodificada independentemente, por exemplo, sem alterar/atualizar as informações contidas nos cabeçalhos de fatia de fatias codificadas da camada não-base independente.
[0109] Por exemplo, de acordo com os aspectos desta descrição, o codificador de vídeo 20 pode codificar o elemento de sintaxe poc_reset_idc para ser igual a 2, somente quando a imagem que está sendo codificada tem um valor de POC LSB igual a zero. Isto é, quando um poc_lsb_not_present_flag para uma determinada camada que está sendo codificada é igual a 1 (por exemplo, indicando que a camada é uma camada de não-base independente) e um elemento de sintaxe slice_pic_order_cnt_lsb indicando que o valor de POC LSB da imagem é maior que zero, o codificador de vídeo 20 pode não definir o valor de POC_reset_idc para ser igual a 2.
[0110] Quando o codificador de vídeo 20 codifica o elemento de sintaxe poc_reset_idc para ser igual a 3, o codificador de vídeo 20 pode ainda codificar um elemento de sintaxe full_poc_reset_flag e um elemento de sintaxe poc_lsb_val. No MV-HEVC e no SHVC, um full_poc_reset_flag igual a 1 especifica que tanto os MSBs e quanto os LSBs do valor de POC para a imagem atual são redefinidos quando a imagem anterior, em ordem de decodificação na mesma camada não pertence ao mesmo período de redefinição de POC. Um full_poc_reset_flag igual a 0 especifica que somente os MSBs do valor de POC para a imagem atual são redefinidos quando a imagem anterior, na ordem de decodificação na mesma camada não pertence ao mesmo período de redefinição de POC. Além disso, o elemento de sintaxe poc_lsb_val especifica um valor que pode ser usado para derivar a contagem de ordem de imagem da imagem atual.
[0111] De acordo com os aspectos desta descrição, o codificador de vídeo 20 pode controlar a maneira como o poc_lsb_val é codificado dependendo se a camada que está sendo codificada é uma camada não-base independente. Por exemplo, quando poc_lsb_not_present_flag para a camada que está sendo codificada é igual a 1 e full_poc_reset_flag é igual a 1, o codificador de vídeo 20 pode definir o valor de poc_lsb_val para igual a zero. Desta forma, o codificador de vídeo 20 pode garantir que o valor de redefinição de POC é somente realizado para imagens tendo um valor de POC LSB igual a zero, o que pode permitir que as imagens de referência sejam corretamente identificadas em um conjunto de imagens de referência, conforme descrito mais detalhadamente abaixo com referência à FIG. 4.
[0112] A unidade de intra-predição 46 pode intra-predizer um bloco atual, como uma alternativa para a inter-predição realizada pela unidade de estimação de movimento 42 e a unidade compensação de movimento 44, como descrito acima. Particularmente, a unidade de intra- predição 46 pode determinar um modo de intra-predição para utilizar para codificar um bloco atual. Em alguns exemplos, a unidade de intra-predição 46 pode codificar um bloco atual utilizando vários modos de intra-predição, por exemplo, durante passes de codificação separados, e a unidade de intra-predição 46 (ou a unidade de seleção de modo 40, em alguns exemplos) pode selecionar um modo apropriado de intra-predição para utilizar a partir dos modos testados.
[0113] Por exemplo, a unidade de intra- predição 46 pode calcular valores da taxa de distorção, utilizando uma análise da taxa de distorção para os vários modos de intra-predição testados e selecionar o modo de intra-predição com as melhores características de taxa de distorção entre os modos testados. A análise da taxa de distorção geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um bloco original, o bloco não codificado que foi codificado para produzir o bloco codificado, bem como uma taxa de bits (ou seja, um número de bits) utilizada para produzir o bloco codificado. A unidade de intra-predição 46 pode calcular as razões a partir das distorções e as taxas para os vários blocos codificados para determinar qual modo de intra-predição que apresenta o melhor valor de taxa de distorção para o bloco.
[0114] Depois de selecionar um modo de intra- predição para um bloco, a unidade de intra-predição 46 pode fornecer a informação indicativa do modo de intra-predição selecionado para o bloco à unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar a informação indicando o modo de intra-predição selecionado. O codificador de vídeo 20 pode incluir dados de configuração no fluxo de bits transmitido, que podem compreender uma pluralidade de tabelas de índices de modo de intra-predição e uma pluralidade de tabelas de índices de modo de intra-predição modificados (também referidas como tabelas de mapeamento de palavras-código), definições de contextos de codificação para vários blocos e as indicações de um modo de intra-predição mais provável, uma tabela de índices de modo de intra-predição e uma tabela de índices de modo de intra-predição modificados para utilizar em cada um dos contextos.
[0115] O codificador de vídeo 20 forma um bloco de vídeo residual, subtraindo os dados de predição de uma unidade de seleção de modo 40 do bloco original a ser codificado. O somador 50 representa o componente ou componentes que realizam esta operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, tal como uma transformada discreta de cosseno (DCT) ou uma transformada conceitualmente similar, para o bloco residual, produzindo um bloco de vídeo composto por valores do coeficiente de transformada residual. A unidade de processamento da transformada 52 pode realizar outras transformadas que são conceitualmente semelhantes à DCT. Transformada Wavelet, transformada de números inteiros, transformada de sub-banda ou outros tipos de transformada também podem ser usadas. Em qualquer caso, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residual. A transformada pode converter as informações residuais de um domínio de valor de pixel em um domínio de transformada, tal como um domínio da frequência.
[0116] A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantização 54. A unidade de quantização 54 quantiza os coeficientes de transformada a fim de reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade de bits associada com alguns ou com todos os coeficientes. O grau de quantização pode ser modificado ajustando-se um parâmetro de quantização. Em alguns exemplos, a unidade quantização 54 pode, em seguida, realizar uma varredura da matriz incluindo os coeficientes de transformada quantizados. Alternativamente, a unidade de codificação por entropia 56 pode realizar a varredura.
[0117] Após a quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformada quantizados. Por exemplo, a unidade de codificação por entropia 56 pode realizar a codificação de comprimento variável adaptativa ao contexto (CAVLC), a codificação aritmética binária adaptativa ao contexto (CABAC), a codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), a codificação por entropia de particionamento de intervalo de probabilidade (PIPE) ou outra técnica de codificação por entropia. No caso de codificação por entropia baseada em contexto, o contexto pode basear-se em blocos vizinhos. Após a codificação por entropia pela unidade de codificação por entropia 56, o fluxo de bits codificado pode ser transmitido para outro dispositivo (por exemplo,decodificador de vídeo 30) ou arquivado para posterior recuperação ou transmissão.
[0118] A unidade de quantização inversa 58 e a unidade de transformada inversa 60 aplicam a quantização inversa e a transformada inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para utilização posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência, adicionando o bloco residual a um bloco preditivo de um dos quadros da memória de imagens de referência 64. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel sub-inteiro para uso em estimação de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco preditivo de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento na memória de imagens de referência 64. O bloco reconstruído de vídeo pode ser usado pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência para inter- codificar um bloco em um quadro de vídeo subsequente.
[0119] Desta maneira, o codificador de vídeo 20 da FIG. 2 representa um exemplo de um codificador de vídeo configurado para codificar pelo menos uma porção de uma imagem de uma camada independentemente decodificável de um fluxo de bits multicamada, e codificar dados indicando uma redefinição de valor de POC para um valor de POC LSB da imagem somente quando a imagem tem um valor de POC LSB para a imagem igual a zero.
[0120] A FIG. 3 é um diagrama de blocos ilustrando um exemplo de decodificador de vídeo 30 que pode implementar técnicas para gerenciar valores POC, de acordo com as técnicas desta descrição. Conforme observado acima, o decodificador de vídeo 30 pode ser adaptado para realizar codificações de vídeo multi-visualização e/ou escalonável. Por exemplo, o decodificador de vídeo 30 pode ser configurado para decodificar um fluxo de bits em conformidade com uma ou mais extensões do padrão de codificação de vídeo, tais como SHVC ou MV-HEVC. No entanto, embora seja feito referência a padrões de codificação específicos, deve ser entendido que as técnicas não são específicas para qualquer padrão de codificação e podem ser implementadas com padrões futuros e/ou ainda não desenvolvidos.
[0121] No exemplo da FIG. 3, o decodificador de vídeo 30 compreende a memória de dados de vídeo 68, a unidade decodificação por entropia 70, a unidade de compensação de movimento 72, a unidade de intra-predição 74, a unidade de quantização inversa 76, a unidade de transformada inversa 78, a memória de imagens de referência 82 e o somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita com relação ao codificador de vídeo 20 (FIG. 2). A unidade de compensação de movimento 72 pode gerar dados de predição com base em vetores de movimento recebidos da unidade de decodificação por entropia 70, enquanto a unidade de intra- predição 74 pode gerar dados de predição com base em indicadores de modo de intra-predição recebidos da unidade de decodificação por entropia 70.
[0122] A memória de dados de vídeo 68 pode armazenar dados de vídeo, como um fluxo de bits de vídeo codificado, para serem decodificados pelos componentes do decodificador de vídeo 30. Os dados de vídeo armazenados na memória de dados de vídeo 68 podem ser obtidos, por exemplo, a partir de um meio legível por computador, por exemplo, uma fonte de vídeo local, tal como uma câmera, através de comunicação de rede com fio ou sem fio de dados de vídeo, ou acessando um meio físico de armazenamento de dados. A memória de dados de vídeo 68 pode constituir um armazenador de imagens codificadas (CPB) que armazena dados codificados a partir de um fluxo de bits de vídeo codificado. A memória de imagens de referência 82 pode ser referida a um DPD que armazena dados de vídeo de referência para serem utilizados na decodificação de dados de vídeo pelo decodificador de vídeo 30, por exemplo, nos modos de intra-codificação ou de inter-codificação. A memória de dados de vídeo 68 e memória de imagens de referência 82 podem ser formadas por qualquer um dentre uma variedade de dispositivos de memória, tais como a memória de acesso aleatório dinâmica (DRAM), incluindo a DRAM síncrona (SDRAM), a RAM magnetoresistiva (MRAM), a RAM resistiva (RRAM) ou outros tipos de dispositivos de memória. A memória de dados de vídeo 68 e memória de imagens de referência 82 podem ser fornecidas pelo mesmo dispositivo de memória ou por dispositivos de memória separados. Em vários exemplos, a memória de dados de vídeo 68 pode ser on-chip com outros componentes do decodificador de vídeo 30, ou off-chip em relação a tais componentes.
[0123] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits codificado que representa os blocos de vídeo de uma fatia de vídeo codificado e um elemento de sintaxe associado do codificador de vídeo 20. A unidade de decodificação por entropia 70 do decodificador de vídeo 70 decodifica por entropia o fluxo de bits para coeficientes quantizados, vetores de movimento ou indicadores de modo de predição, e outros elementos de sintaxe. A unidade de decodificação por entropia 70 encaminha os vetores de movimento e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível fatia de vídeo e/ou no nível de bloco de vídeo.
[0124] Quando a fatia de vídeo é codificada como uma fatia intra-codificada (I), a unidade de intra- predição 74 pode gerar dados de predição para um bloco de vídeo da fatia de vídeo atual com base em um modo de intra- predição sinalizado e dados de blocos previamente decodificados do quadro atual ou da imagem atual. Quando o quadro de vídeo é codificado como uma fatia inter- codificada (por exemplo, B, P ou GPB), a unidade de compensação de movimento 72 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 70. Os blocos de predição podem ser produzidos de uma das imagens de referência dentro de uma lista de imagens de referência. O decodificador de vídeo 30 pode produzir as listas dos quadros de referência, Lista 0(L0) e Lista 1 (L1), utilizando técnicas de construção padrão baseadas nas imagens de referência armazenadas em um DPB da memória de imagens de referência 82.
[0125] Mais particularmente, o decodificador de vídeo 30 pode decodificar um PPS indicando se as fatias de uma imagem correspondente ao PPS compreendem a informação de redefinição de POC. Supondo que as fatias compreendem as informações de redefinição de POC, o decodificador de vídeo 30 pode decodificar um cabeçalho de segmento de fatia de uma fatia de imagem incluindo a informação de redefinição de POC. A informação de redefinição de POC pode incluir um identificador de período de redefinição de POC e um tipo de redefinição de POC.
[0126] O identificador de período de redefinição de POC pode indicar um período de redefinição de POC ao qual corresponde a fatia. O tipo de redefinição de POC pode indicar se o valor de POC de uma imagem, incluindo a fatia, é totalmente redefinido ou que só a MSB do valor de POC é redefinida. Além disso, o tipo de redefinição de POC pode indicar que nenhuma redefinição de POC deve ser realizada ou que informações adicionais são sinalizadas. Se o tipo de redefinição de POC indicar que informações adicionais são sinalizadas, o decodificador de vídeo 30 pode decodificar a informação adicional, que pode indicar um valor de POC LSB e se o valor de POC é totalmente redefinido ou apenas a MSB é redefinida.
[0127] De acordo com os aspectos desta descrição, o decodificador de vídeo 30 pode ser configurado para decodificar uma camada não-base independentemente decodificável de um fluxo de bits multicamada. Por exemplo, de acordo com os aspectos desta descrição, o decodificador de vídeo 30 pode decodificar dados indicando uma redefinição de valor de POC para um valor de POC LSB de uma imagem apenas quando a imagem tem um valor de POC LSB para a imagem igual a zero.
[0128] Em alguns casos, o decodificador de vídeo 30 pode ser configurado para decodificar um elemento de sintaxe poc_reset_idc. De acordo com os aspectos desta descrição, o decodificador de vídeo 30 pode decodificar o elemento de sintaxe poc_reset_idc com base em uma ou mais restrições. Por exemplo, o decodificador de vídeo 30 pode decodificar um elemento de sintaxe poc_reset_idc em conformidade com um padrão específico. Por exemplo, de acordo com os aspectos desta descrição, o decodificador de vídeo 30 pode decodificar o elemento de sintaxe poc_reset_idc para ser igual a 2, somente quando a imagem que está sendo codificada tem um valor de POC LSB igual a zero. Isto é, quando um poc_lsb_not_present_flag para uma determinada camada que está sendo codificada é igual a 1 (por exemplo, indicando que a camada é uma camada não-base independente) e um elemento de sintaxe slice_pic_order_cnt_lsb indicando o valor de POC LSB da imagem é maior que 0, o decodificador de vídeo 30 pode não decodificar um valor de poc_reset_idc que é igual a 2.
[0129] Quando o decodificador de vídeo 30 decodifica um elemento de sintaxe poc_reset_idc que é igual a 3, o decodificador de vídeo 30 pode ainda decodificar um elemento de sintaxe full_poc_reset_flag e um elemento de sintaxe poc_lsb_val. De acordo com os aspectos desta descrição, quando poc_lsb_not_present_flag para a camada que está sendo decodificada é igual a 1 e uma full_poc_reset_flag é igual a 1, o decodificador de vídeo 30 pode decodificar um valor de poc_lsb_val que é igual a 0. Desta forma, o decodificador de vídeo 30 pode garantir que a redefinição do valor de POC é realizada somente para imagens tendo um valor de POC LSB igual a zero, o que pode permitir que as imagens de referência sejam corretamente identificadas em um conjunto de imagens de referência, conforme descrito mais detalhadamente abaixo com relação a FIG. 4.
[0130] O decodificador de vídeo 30 também pode decodificar valores POC de imagens de referência para serem incluídos em uma lista de imagens de referência. O decodificador de vídeo 30 pode decodificar esses valores POC nos cabeçalhos de segmento de fatia e/ou de conjuntos de parâmetros, tais como um PPS ou um SPS. O decodificador de vídeo 30 pode, em seguida, construir uma lista de imagens de referência incluindo as imagens de referência identificadas pelos valores POC decodificados.
[0131] Depois de construir a lista de imagens de referência para uma fatia, o decodificador de vídeo 30 pode decodificar blocos de fatia. A unidade de compensação de movimento 72 determina as informações de predição para um bloco de vídeo de fatia de vídeo atual analisando os vetores de movimento e outros elementos de sintaxe, e utiliza as informações de predição para produzir os blocos de predição para o bloco de vídeo atual que está sendo decodificada. Por exemplo, a unidade de compensação de movimento 72 utiliza alguns elementos de sintaxe recebidos para determinar um modo de predição (por exemplo, intra- predição ou inter-predição) utilizado para codificar os blocos de vídeo da fatia de vídeo, um tipo de fatia de inter-predição (por exemplo, fatia B, fatia P ou fatia GPB), vetores de movimento para cada bloco de fatia de vídeo inter-codificado, o estado da inter-predição para cada bloco de fatia vídeo inter-codificado e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual. A informações de movimento para um bloco inter-predito podem compreender um identificador de lista de imagens de referência e um índice de referência para identificar uma imagem de referência na lista de imagens de referência para utilizar para predizer o bloco.
[0132] A unidade de compensação de movimento 72 também pode realizar interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode utilizar filtros de interpolação como o usado pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular valores interpolados para pixels sub- inteiros de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[0133] A unidade de quantização inversa 76 quantiza de forma inversa, ou seja, dequantiza, os coeficientes de transformada quantizados fornecidos no fluxo de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantização inversa pode compreender a utilização de um parâmetro de quantização QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo em uma 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.
[0134] A unidade de transformada inversa 78 aplica uma transformada inversa, por exemplo, uma DCT inversa, uma transformada inversa de inteiros ou um processo de transformada inversa conceitualmente similar, para os coeficientes de transformada para produzir blocos residuais no domínio do pixel.
[0135] Depois que a unidade de compensação de movimento 72 gera o bloco preditivo para o bloco de vídeo atual com base em outros elementos de sintaxe e nos vetores de movimento, o decodificador de vídeo 30 forma um bloco de vídeo decodificado somando os blocos residuais da unidade de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. O somador 80 representa o componente ou os componentes que realizam esta operação de soma. Se desejado, um filtro de desblocagem também pode ser aplicado para filtrar os blocos decodificados para remover artefatos de blocagem. Outros filtros em loop (ou no loop de codificação ou após o loop de codificação) também podem ser usados para suavizar as transições de pixel, ou outra forma de melhorar a qualidade de vídeo. Os blocos de vídeo decodificados em um determinado quadro ou imagens são, então, armazenados na memória de imagens de referência 82, que armazena as imagens de referência utilizadas para compensação de movimento subsequente. A memória de imagens de referência 82 também armazena vídeos decodificados para posterior apresentação em um dispositivo de exibição, como o dispositivo de exibição 32 da FIG.1.
[0136] Desta forma, o decodificador de vídeo 30 da FIG. 3 representa um exemplo de um decodificador de vídeo configurado para decodificar, pelo menos, uma parte de uma imagem de uma camada independentemente decodificável de um fluxo de bits multicamada e decodificar dados indicando um valor de POC redefinido para um valor de POC LSB da imagem somente quando a imagem tem um valor de POC LSB para a imagem igual a zero.
[0137] A FIG. 4 é um diagrama conceitual ilustrando a redefinição do valor de POC para uma camada não-base independente de um fluxo de bits multicamada. No exemplo da FIG. 4, o fluxo de bits multicamada compreende uma camada base (CAMADA 0) 90 e uma camada não-base independente (CAMADA 1) 92. Em geral, a metade superior do diagrama do exemplo estabelecido na FIG. 4 ilustra o fluxo de bits multicamada antes da extração, por exemplo, quando codificado por um codificador de vídeo como o codificador de vídeo 20 (indicado pela frase "antes da extração da camada 1"). A parte da metade inferior do diagrama do exemplo estabelecido na FIG. 4 ilustra um sub-fluxo de bits que contém a camada não-base 92 após a extração do fluxo de bits multicamada, por exemplo, para a decodificação por um decodificador de vídeo como o decodificador de vídeo 30 (indicado pela frase "após extração da camada 1").
[0138] Antes da extração, o codificador de vídeo 20 pode codificar a camada base 90 e a camada não- base 92 utilizando um determinado padrão de codificação de vídeo, por exemplo, o MV-HEVC ou o SHVC. Por exemplo, o codificador de vídeo 20 pode ser configurado para realizar a redefinição do valor de POC para a imagem IDR 94. O codificador de vídeo pode sinalizar o índice de redefinição do valor de POC (poc_reset_idc) que é igual a 2. Antes da redefinição de valor de POC, a imagem 94 tem um valor de POC MSB de 0 e um valor de POC LSB de 20. Após a redefinição do valor de POC, a imagem 94 tem um valor de POC MSB de 0 e um valor de POC LSB de 0. Adicionalmente, para manter o alinhamento de camada cruzada dos valores POC, o codificador de vídeo 20 pode realizar a redefinição do valor de POC da imagem 96 compreendida na camada não- base 92. Nesse sentido, antes da redefinição do valor de POC, a imagem 96 tem um valor de POC MSB de 0 e um valor de POC LSB de 20. Após a redefinição do valor de POC, a imagem 96 tem um valor de POC MSB de 0 e um valor de POC LSB de 0.
[0139] Ao realizar a redefinição do valor de POC, o codificador de vídeo 20 também pode decrementar os valores POC LSB de imagens armazenadas em um DPB para considerar a redefinição do valor de POC. Por exemplo, o codificador de vídeo 20 pode decrementar o valor de POC LSB de cada imagem de referência armazenada no DPB em 20 (por exemplo, a diferença entre o valor de POC LSB original e o valor LSB POC redefinido). Nesse sentido, antes da redefinição do valor de POC, a imagem de referência 98 tem um valor de POC MSB de 0 e um valor de POC LSB de 3. Depois da redefinição do valor de POC, a imagem de referência 98 tem um valor de POC MSB de 0 e um valor de POC LSB de -17. Da mesma forma, antes da redefinição do valor de POC, a imagem de referência 100 tem um valor de POC MSB de 0 e um valor de POC LSB de 3. Depois da redefinição de valor de POC, a imagem de referência 100 tem um valor de POC MSB de 0 e um valor de POC LSB de -17.
[0140] O codificador de vídeo 20 também codifica a imagem 102 da camada não-base 92 utilizando inter-predição. Por exemplo, o codificador de vídeo 20 identifica a imagem de referência 100 como uma LTRP e inclui a imagem de referência 100 em um RPS para codificação da imagem 102 (por exemplo, um conjunto de imagens de referência de longo prazo (LT-RPS)). O codificador de vídeo 20 também pode sinalizar o valor de POC LSB da imagem de referência 100 em um cabeçalho de fatia de uma fatia da imagem 102 ou em um conjunto de parâmetros referidos à imagem 102 para identificar a imagem de referência 100 como uma LTRP. Ou seja, o codificador de vídeo 20 pode sinalizar o valor de POC LSB da imagem de referência 100 após a realização da redefinição do valor de POC, de tal modo que o valor de POC LSB sinalizado seja 15 (após a conversão de -17 para um número positivo utilizando um algoritmo de conversão).
[0141] Após a extração, como observado acima, o decodificador de vídeo 30 pode ser configurado para decodificar a camada não-base 92 em conformidade com um determinado padrão de camada única, por exemplo, o HEVC, que não é necessariamente o mesmo padrão multicamada usado para codificar a camada não-base. Nesse sentido, o decodificador de vídeo 30 pode usar a sintaxe associada com o padrão para decodificar a camada não-base 92 e descartar ou, caso contrário, ignorar a outra sintaxe. Embora seja feito referência neste documento ao decodificador de vídeo 30 em conformidade com o HEVC, e/ou extensões do HEVC multicamada, deve ser entendido que as técnicas desta descrição não são necessariamente limitadas e, desta forma, podem ser usadas com outros padrões.
[0142] Para decodificar a imagem 102, o decodificador de vídeo 30 pode ser configurado para realizar inter-predição de uma forma recíproca a que é realizada pelo codificador de vídeo 20. Consequentemente, o decodificador de vídeo 30 pode construir a lista de imagens de referência que pode incluir uma ou mais imagens a partir do LT-RPS. Por exemplo, o decodificador de vídeo 30 pode decodificar um cabeçalho de fatia de uma fatia da imagem 102 ou um conjunto de parâmetros referidos à imagem 102 para identificar uma ou mais imagens de referência de longo prazo, incluindo a imagem de referência 100.
[0143] Conforme observado acima, o valor de POC LSB da imagem de referência 100 pode ser sinalizado no cabeçalho de fatia da imagem 102 como sendo igual a 15 (por exemplo, correspondente a um valor de POC LSB de -17 depois de realizar a redefinição do valor de POC). No entanto, o decodificador de vídeo 30 pode não estar configurado para realizar a redefinição do valor de POC. Por exemplo, durante a decodificação da imagem 96, o decodificador de vídeo 30 pode não decodificar o elemento de sintaxe poc_reset_idc e pode não decrementar os valores POC LSB das imagens armazenadas no DPB. Por conseguinte, o valor de POC LSB da imagem de referência 100 é igual a 3. A Imagem de referência 100, no entanto, é identificada no cabeçalho de fatia por um valor de POC LSB de 15. Portanto, no exemplo da FIG. 4, o decodificador de vídeo 30 pode localizar a imagem de referência 100 no DPB, porque o valor de POC LSB da imagem de referência 100 não coincide com o valor de POC LSB sinalizado no cabeçalho de fatia.
[0144] Conforme ilustrado pelo exemplo da FIG. 4, a fim de extrair uma camada independente aprimorada (tal como a camada não-base 92) que é capaz de ser decodificada por um decodificador HEVC sem alterar as informações do cabeçalho de fatia, o decodificador de vídeo 30 pode considerar se as LTRPs são usadas para predição de imagens na camada e se as imagens que redefiniram tanto POC LSB e quanto POC MSB estão presentes na camada. Esses dois parâmetros podem ser considerados para determinar se é possível extrair a camada independente aprimorada de um fluxo de bits multicamada sem ter que alterar os cabeçalhos de fatia de imagens na camada.
[0145] De acordo com os aspectos desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem controlar a maneira como a redefinição do valor de POC é realizada para camadas não-base independentes. As técnicas podem, em alguns casos, permitir que os valores POC de LTRPs sinalizadas no cabeçalho de fatia mantenham a consistência com os valores POC de imagens de referência armazenadas em um DPB do decodificador de vídeo. Em um exemplo, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar (codificar ou decodificar) uma imagem de uma camada independentemente decodificável de fluxo de bits multicamada. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem codificar dados indicando uma redefinição do valor de POC para um valor de POC LSB da imagem somente quando a imagem tem um valor de POC LSB para a imagem igual a zero. Em tais casos, para a realização da redefinição do valor de POC não há necessidade de codificador de vídeo 20 ou de decodificador de vídeo 30 para decrementar valores POC das imagens armazenadas em um DPB, porque o valor de POC LSB já é igual a zero.
[0146] Exemplos de sintaxes e de semânticas para gerenciar a redefinição de valor de POC, de acordo com várias técnicas desta descrição, estão abaixo. As sintaxes e as semânticas descritas são relativas, por exemplo, ao MV-HEVC e ao SHVC mencionados acima. Na descrição exemplar, as tabelas de sintaxes e semânticas abaixo, adicionadas ao MV-HEVC e ao SHVC são representadas utilizando itálico e exclusões são representadas utilizando texto entre colchetes precedido por "removido" (por exemplo, [removido: "texto removido"]). Em geral, declarações relativas a "exigências" devem ser entendidas como para fazer parte do texto do padrão ou da extensão do padrão e não uma exigência para fins das técnicas desta descrição. Em alguns casos, tais "exigências" podem incluir restrições de fluxo de bits que podem ser determinadas como sendo aplicáveis e, em seguida aderidas, por exemplo, a um codificador de vídeo baseado na determinação.
[0147] Em um primeiro exemplo, as seguintes alterações podem ser aplicadas às semânticas do elemento de sintaxe base_layer_parameter_set_compatibility_flag[i] na informação de usabilidade de vídeo (VUI) de conjunto de parâmetros de vídeo (VPS): base_layer_parameter_set_compatibility_flag[i] igual a 1 especifica que as seguintes restrições se aplicam para a camada com nuh_layer_id igual a layer_id_in_nuh[i]. base_layer_parameter_set_compatibility_flag[i] igual a 0 especifica que as seguintes restrições podem ou não se aplicar para a camada com nuh_layer_id igual a layer_id_in_nuh[i]. Quando não presente, o valor de base_layer_parameter_set_compatibility_flag[i] é inferido para ser igual a 0. - Cada unidade NAL de segmento de fatia codificada com valor nuh_layer_id igual a layer_id_in_nuh [i] referindo-se ao VPS deve referir-se a uma PPS com valor nuh_layer_id igual a 0. - Cada unidade NAL de segmento de fatia codificada com valor nuh_layer_id igual a layer_id_in_nuh [i] referindo-se ao VPS deve referir-se a uma SPS com valor nuh_layer_id igual a 0. - Os valores de chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8, and bit_depth_chroma_minus8, respectivamente, da SPS ativa para a camada com nuh_layer_id igual a layer_id_in_nuh[i] devem ser os mesmos valores que os de chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8, e bit_depth_chroma_minus8, respectivamente, da estrutura de sintaxe vps_rep_format_idx[i]-th rep_format( )no VPS ativo. - O valor de poc_lsb_not_present_flag[i]deve ser igual a 1. - Quando uma unidade de acesso que contem uma imagem picA com nuh_layer_id igual a layer_id_in_nuh_[i] referindo-se a um VPS que também contém uma imagem com nuh_layer_id igual a 0 and slice_pic_order_cnt_lsb maior do que 0, a imagem picA deve ser uma imagem não-IDR. Quando unidade NAL de segmento de fatia codificada com nuh_layer_id value igual a layer_id_in_nuh[i] referindo-se ao VPS que tem valor não-zero para num_long_term_sps ou num_long_term_pics, ou ambas, e slice_pic-order_cnt_lsb não é igual a 0, poc_reset_idc não deve ser igual a 2.
[0148] Em um segundo exemplo, o nome do elemento de sintaxe base_layer_parameter_set_compatibility_flag[i] para base_layer_compatibility_flag[i]. Adicionalmente, as seguintes alterações podem ser feitas para a semântica do elemento de sintaxe base_layer_parameter_set_compatibility_flag [i] no VPS VUI (indicado abaixo como base_layer_compatibility_flag[i]): base_layer_compatibility_flag[i] igual a 1 especifica que as seguintes restrições se aplicam para a camada com nuh_layer_id igual a layer_id_in_nuh[i]. base_layer_compatibility_flag[i] igual a 0 especifica que as seguintes restrições podem ser ou não aplicadas para a camada com nuh_layer_id igual a layer_id_in_nuh[ ]. Quando não presente, o valor de base_layer_compatibility_flag[i] é inferido para ser igual a 0. - Cada unidade NAL de segmento de fatia codificada com nuh_layer_id value igual a layer_id_in_nuh[i] referindo-se ao VPS deve referir-se ao PPS com valor nuh_layer_id igual a 0. - Cada unidade NAL do segmento da fatia codificada com nuh_layer_id value igual a layer_id_in_nuh[i] referindo-se ao VPS deve referir-se ao SPS com valor nuh_layer_id igual a 0. - Os valores de chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8, and bit_depth_chroma_minus8, respectivamente, do SPS ativo para a camada com nuh_layer_id igual a layer_id_in_nuh[i] devem ser os mesmos que os valores de chroma_format_idc, separate_colour_plane_flag, pic_width_in_luma_samples, pic_height_in_luma_samples, bit_depth_luma_minus8, e bit_depth_chroma_minus8, respectivamente, da estrutura de sintaxe vps_rep_format_idx[i]-th rep_format( ) no VPS ativo. - O valor de poc_lsb_not_present_flag[i] deve ser igual a 1. - Para qualquer imagem picA que tem nuh_layer_id igual a layer_id_in_nuh[i] e refere-se a VPS, aplica-se o seguinte: - Quando slice_pic_order_cnt_lsb é maior do que 0, poc_reset_idc não deve ser igual a 2. - Quando full_poc_reset_flag é igual a 1, poc_lsb_val deve ser igual a 0.
[0149] Deve ficar entendido que a sintaxe incluída neste documento é apenas para fins de exemplo. Ou seja, embora o exemplo acima seja descrito em relação a base_layer_compatibility_flag, o codificador de vídeo 20 e o decodificador de vídeo 30 podem aplicar as restrições aqui descritas com relação a outro elemento de sintaxe diferente ou de outra maneira.
[0150] Em um terceiro exemplo, uma restrição é adicionada para a semântica de poc_lsb_not_present_flag[i] tal que quando há pelo menos uma unidade de acesso que contém uma imagem não-IDR com nuh_layer_id igual a 0 e uma imagem IDR com nuh_layer_id igual a layer_id_in_nuh [i], poc_lsb_not_present_flag[i] não deve ser igual a 1. Uma condição é adicionada para a sinalização de base_layer_parameter_set_compatibility_flag de elemento a sintaxe [i], tal que o elemento sintaxe está presente somente quando o valor do poc_lsb_not_present_flag[i] é igual a 1. O valor para base_layer_parameter_set_compatibility_flag [i] quando ele não estiver presente é inferido para ser igual a 0.
[0151] Adicionalmente, a sinalização do elemento de sintaxe base_layer_parameter_set_compatibility_flag[i] com a mudança acima pode ser modificada conforme definido a seguir na tabela abaixo:
[0152] Na tabela acima, um poc_lsb_not_present_flag[i] igual a 1 especifica que o elemento de sintaxe de slice_pic_order_cnt_lsb não está presente nos cabeçalhos da fatia de imagens IDR com nuh_layer_id igual a layer_id_in_nuh[i] no CVS. Além disso, poc_lsb_not_present_flag[i] igual a 0 especifica que esse elemento de sintaxe slice_pic_order_cnt_lsb pode ou não estar presente nos cabeçalhos da fatia de imagens IDR com nuh_layer_id igual a layer_id_in_nuh[i] no CVS. Quando não está presente, o valor do poc_lsb_not_present_flag[i] é inferido para ser igual a 0.
[0153] Adicionalmente, um base_layer_parameter_set_compatibility_flag[i] igual a 1 especifica que as seguintes restrições se aplicam à camada com nuh_layer_id igual a layer_id_in_nuh[i]. Um base_layer_parameter_set_compatibility_flag[i] igual a 0 especifica que as seguintes restrições podem ou não ser aplicadas para a camada com nuh_layer_id igual a layer_id_in_nuh[i]. Em geral, base_layer_parameter_set_compatibility_flag[i] pode indicar se uma camada aprimorada usa os conjuntos de parâmetros (por exemplo, PPS e SPS) da camada base.
[0154] Em um quarto exemplo, de acordo com os aspectos desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser configurados para implementar um novo indicador para cada camada que indica se uma camada independente pode ser extraída e decodificada por um decodificador compatível com HEVC sem ter que atualizar as informações nos cabeçalhos da fatia das imagens na camada. A sinalização associada com esse indicador pode ser conforme apresentada na tabela 1 abaixo:Tabela 1
[0155] No exemplo da tabela 1 acima, slice_segment_header_update_not_required_for_extraction_fla g[i] igual a 1 especifica que os cabeçalhos de segmento da fatia de imagens com nuh_layer_id igual a layer_id_in_nuh [i] em cada CVS referindo-se ao VPS não precisa ser atualizado quando o processo de extração do sub-fluxo de bits é invocado com a camada com nuh_layer_id igual a layer_id_in_nuh [i], sendo a camada mais baixa na entrada TargetDecLayerIdList. Além disso, slice_segment_header_update_not_required_for_extraction_fla g[i] igual a 0 especifica que os cabeçalhos da fatia das imagens com nuh_layer_id igual a layer_id_in_nuh[i] no CVS podem ou talvez não precise ser atualizado quando o processo de extração do sub-fluxo de bits é invocado com a camada com nuh_layer_id igual a layer_id_in_nuh[i], sendo a camada mais baixa em TargetDecLayerIdList na entrada. Quando não está presente, slice_segment_header_update_not_required_for_extraction_fla g[i] é inferido para ser igual a 0.
[0156] A FIG. 5 é outro diagrama conceitual ilustrando a redefinição do valor de POC para uma camada não-base independente de um fluxo de bits multicamada. No exemplo da FIG. 5, o fluxo de bits multicamada compreende uma camada base (CAMADA 0) 110 e uma camada não-base independente (CAMADA 1) 112. A camada base 110 compreende a imagem IDR 114 e a imagem 116. A camada não-base 112 compreende a imagem 118 que está na mesma unidade de acesso como a imagem 114 da camada base 110 e a imagem IDR 120 que está na mesma unidade de acesso como a imagem 116 da camada base 110.
[0157] Um decodificador de vídeo, tal como o decodificador de vídeo 30, pode ser configurado para decodificar camada base 110 e a camada não-base 112 utilizando um determinado padrão de codificação de vídeo, por exemplo, o MV-HEVC ou o SHVC. O decodificador de vídeo 30 pode ser configurado para realizar a redefinição do valor de POC para a imagem 114 da camada base 110, porque a imagem 114 é uma imagem IDR. O decodificador de vídeo pode decodificar um índice de redefinição do valor de POC (poc_reset_idc) que é igual a 2 para a imagem 114.Além disso, para manter o alinhamento de camada cruzada de valores POC, o decodificador de vídeo 30 também pode realizar a redefinição do valor de POC da imagem 118 compreendida na camada não-base 112. Nesse sentido, após a redefinição do valor de POC, tanto imagem 114 de camada base 110 quanto a imagem 118 da camada não-base 112 tem um valor de POC LSB igual a zero.
[0158] O elemento de sintaxe poc_lsb_not_present_flag[i], quando incluído no MV-HEVC e no SHVC, permite que as informações POC LSB não sejam incluídas nos cabeçalhos de segmento de fatia de fatias que pertencem a uma imagem IDR de uma camada aprimorada independente, tal como a camada não-base 112. O elemento de sintaxe pode ajudar a impedir que camada não-base 112 seja extraída de um fluxo de bits multicamada e decodificada por um decodificador HEVC (por exemplo, ao invés de um decodificador configurado para MV-HEVC ou SHVC) sem modificar os cabeçalhos de segmento de fatia das imagens na camada e alterando apenas a nuh_layer_id nos cabeçalhos da unidade NAL. Por exemplo, como atualmente estabelecido nos rascunhos de trabalho do MV-HEVC e SHVC, o poc_lsb_not_present_flag igual a um especifica que o valor de POC LSB não está presente nos cabeçalhos da fatia de imagens IDR. poc_lsb_not_present_flag igual a zero especifica que o valor de POC LSB pode ou não estar presente nos cabeçalhos de fatia de imagens IDR.
[0159] A única restrição explícita sobre o poc_lsb_not_present_flag[i] incluída nos acima observados padrões MV-HEVC e SHVC, é que o valor de poc_lsb_not_present_flag[i] pode ser definido como 1 para uma camada não-base somente quando a camada é independente (por exemplo, a predição inter-camada não é usada para predizer dados de vídeo da camada). A indicação de que o valor de POC LSB não está compreendido no cabeçalho de fatia de uma camada não-base independente tal como a camada não-base 112, no entanto, pode criar um problema para as imagens que não têm um valor de POC LSB igual a zero.
[0160] Por exemplo, como mostrado no exemplo da FIG. 5, a camada não-base 112 pode estar associada com um poc_lsb_not_present_flag[i] que é definido como 1, tal que um valor de POC LSB não pode ser incluído nos cabeçalhos de fatia das imagens IDR para manter a conformidade com um decodificador HEVC. A imagem 120 é uma imagem IDR para a qual é realizada a redefinição do valor de POC (por exemplo, poc_reset_idc é igual a 1). Consequentemente, os cabeçalhos de fatia de fatias da imagem 120 podem não incluir uma indicação do valor de POC LSB. O decodificador de vídeo 30 pode inferir (por exemplo, determinar automaticamente) que o valor de POC LSB da imagem 120 é igual a zero.
[0161] Inferir que o valor de POC LSB da imagem 120 é igual a zero, no entanto, pode fazer com que o fluxo de bits multicamada não fique em conformidade com o padrão HEVC, porque o valor de POC LSB da imagem 116 da camada base 110 (que está na mesma unidade de acesso que a imagem 120 da camada não-base 112) não é igual a zero. Em vez disso, o valor de POC LSB da imagem 116 da camada base 110 é 4. Consequentemente, a unidade de acesso contendo as imagens 116 e 120 inclui imagens com valores POC diferentes, o que não é permitido para a conformidade do fluxo de bits.
[0162] De acordo com os aspectos desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar dados indicando uma redefinição de valor de POC para um valor de POC LSB de uma imagem apenas quando a imagem tem um valor de POC LSB para a imagem igual a zero. Por exemplo, o codificador de vídeo 20 e decodificador de vídeo 30 aplicam uma restrição tal que o valor de poc_lsb_not_present_flag[i] não é igual a um (por exemplo, indicando que o valor de POC LSB não está incluído no cabeçalho de fatia) a menos que o valor de POC LSB de uma imagem IDR na camada possa ser inferido para ser igual a zero. O valor de POC LSB de uma imagem de uma camada não- base independente pode ser inferido para ser igual a zero quando o valor de POC LSB da imagem da camada base da mesma unidade de acesso é uma imagem IDR, ou o valor de POC LSB da imagem da camada não-base é avaliado como zero (por exemplo, passa a ser igual a zero seguindo uma progressão normal dos valores POC LSB).
[0163] No exemplo da FIG. 5, de acordo com aspectos desta descrição, o codificador de vídeo 20 e o decodificador de vídeo 30 podem não codificar um poc_lsb_not_present_flag[i] que é igual a 1 para a camada não-base 112, porque o valor de POC LSB da imagem 120, que é uma imagem IDR, não pode ser inferido para ser igual a zero. Ao contrário, o valor de POC LSB da imagem 120 é 4. Um poc_lsb_not_present_flag que é igual a 0 pode indicar que essa camada não-base 112 não é passível de ser decodificada independentemente, por exemplo, utilizando um decodificador de vídeo compatível com HEVC, sem modificar um ou mais elementos de sintaxe como os elementos de sintaxe compreendidos em um cabeçalho de fatia da imagem 120.
[0164] Desta forma, de acordo com aspectos desta descrição, o valor do poc_lsb_not_present_flag[i] pode ser restringido de tal forma que não pode ser igual a 1 quando o fluxo de bits multicamada contém uma ou mais unidades de acesso que têm uma imagem da camada base, que é uma imagem não-IDR, com um valor de POC LSB não-zero e uma imagem da camada aprimorada (correspondente à i-ésima camada no VPS) que é uma imagem IDR. Em um exemplo, a seguinte restrição deve ser adicionada como parte da semântica de poc_lsb_not_present_flag[i] do MV-HEVC e do SHVC (por exemplo, como uma nota para a semântica de poc_lsb_not_present_flag[i]), onde as adições são representadas utilizando itálico:É uma exigência de conformidade com o fluxo de bits que, dentro de todos CVSs que se referem ao VPS, quando há pelo menos uma unidade de acesso que contém uma imagem não-IDR com nuh_layer_id igual a 0 e slice_pic_order_cnt_lsb maior que 0 e que contém uma imagem IDR com nuh_layer_id igual a layer_id_in_nuh[i], poc_lsb_not_present_flag[i] não deve ser igual a 1.
[0165] Em outro exemplo, a seguinte restrição deve ser adicionada como parte das semânticas de poc_lsb_not_present_flag[i] do MV-HEVC e do SHVC (por exemplo, como uma nota para a semântica de poc_lsb_not_present_flag[i]), onde as adições são representadas utilizando itálico:É uma exigência de conformidade com o fluxo de bits que, dentro de todo os CVSs que se referem ao VPS, quando há pelo menos uma unidade de acesso que contém uma imagem não-IDR com nuh_layer_id igual a 0 e uma imagem IDR com nuh_layer_id igual a layer_id_in_nuh[i], poc_lsb_not_present_flag[i] não deve ser igual a 1.
[0166] Em outro exemplo, a seguinte restrição deve ser adicionada como parte das semânticas de poc_lsb_not_present_flag[i] do MV-HEVC e do SHVC (por exemplo, como uma nota para a semântica de poc_lsb_not_present_flag[i]), onde as adições são representadas utilizando itálico: É uma exigência de conformidade com o fluxo de bits que, quando poc_lsb_not_present_flag[i] é igual a 1, dentro de todos CVSs que se referem ao VPS, quando uma unidade de acesso contém uma imagem IDR com nuh_layer_id igual a layer_id_in_nuh[i], o valor de slice_pic_order_cnt_lsb tem que ser igual a 0 para todas as imagens da unidade de acesso a menos que o poc_reset_idc seja igual a 2 para todas as imagens da unidade de acesso.
[0167] A FIG. 6 é um fluxograma ilustrando um exemplo de método para codificar dados de vídeo de um fluxo de bits multicamada em conformidade com as técnicas desta descrição. Além disso, o método da FIG. 6 compreende um bloco de codificação atual. O bloco atual pode compreender uma CU atual ou uma parte da CU atual. Embora descrito em relação ao codificador de vídeo 20 (FIGS. 1 e 2), deve ser entendido que outros dispositivos podem ser configurados para realizar um método semelhante ao da FIG. 6.
[0168] Neste exemplo, o codificador de vídeo 20 pode determinar se redefine um valor de POC para a imagem que compreende o bloco atual (130). Quando é realizada a redefinição do valor de POC, o codificador de vídeo 20 pode determinar um tipo de redefinição de POC e redefinir o valor de POC da imagem (132). De acordo com os aspectos desta descrição, o codificador de vídeo 20 só pode codificar dados indicando uma redefinição de valor de POC para um valor de POC LSB da imagem quando a imagem tem um valor de POC LSB para a imagem igual a zero.
[0169] Por exemplo, conforme descrito acima com relação à FIG. 2, o codificador de vídeo 20 pode codificar um elemento de sintaxe poc_reset_idc. De acordo com os aspectos desta descrição, o codificador de vídeo 20 pode controlar a maneira como o valor de poc_reset_idc é codificado com base em uma ou mais restrições. Por exemplo, o codificador de vídeo 20 pode codificar o elemento de sintaxe poc_reset_idc para ser igual a 2, somente quando a imagem que está sendo codificada tem um valor de POC LSB igual a zero. Isto é, quando um poc_lsb_not_present_flag para uma determinada camada que está sendo codificada é igual a 1 (por exemplo, indicando que a camada é uma camada não-base independente) e um elemento de sintaxe slice_pic_order_cnt_lsb indicando que o valor de POC LSB da imagem é maior que 0, o codificador de vídeo 20 pode não definir o valor de poc_reset_idc para ser igual a 2.
[0170] Quando o codificador de vídeo 20 codifica o elemento de sintaxe poc_reset_idc para ser igual a 3, o codificador de vídeo 20 pode ainda codificar um full_poc_reset_flag e um elemento de sintaxe poc_lsb_val. De acordo com aspectos desta descrição, quando um poc_lsb_not_present_flag (que pode indicar que a camada que está sendo codificada é uma camada não-base independente) para a camada que está sendo codificada é igual a 1 e full_poc_reset_flag é igual a 1, o codificador de vídeo 20 pode definir o valor de poc_lsb_val igual a 0. Desta forma, o codificador de vídeo 20 pode garantir que a redefinição do valor de POC é realizada somente para imagens tendo um valor de POC LSB igual a zero, o que pode permitir que as imagens de referência sejam devidamente identificadas, conforme descrito neste documento.
[0171] O codificador de vídeo 20 pode, então, formar uma lista de imagens de referência (134). O codificador de vídeo 20 adicionalmente sinaliza valores POC das imagens de referência incluídas na lista de imagens de referência (136). Por exemplo, o codificador de vídeo 20 pode codificar valores POC (ou partes dos valores POC, por exemplo, valores POC LSB) para as imagens de referência em um conjunto de parâmetros como um SPS ou PPS, e/ou em um cabeçalho de fatia para a fatia. Algumas imagens de referência (por exemplo, imagens de referência de longo prazo) podem ser sinalizadas no conjunto de parâmetros, enquanto que outras imagens de referência (por exemplo, imagens de referência de curto prazo) podem ser sinalizadas no cabeçalho de fatia.
[0172] Deve ser entendido que as etapas de formação da lista de imagens de referência e sinalização de quais imagens estão incluídas na lista de imagens de referência podem ser realizadas múltiplas vezes através de várias passagens de codificação diferentes, de forma a determinar o conjunto de imagens de referência que possibilita as melhores características de taxa de distorção, por exemplo, para blocos da fatia atual. Isto é, o codificador de vídeo 20 pode selecionar o conjunto de imagens de referência incluído na lista de imagens de referência com base nas características de todos os blocos na fatia atual e não simplesmente com base nas características individuais de um único bloco.
[0173] O codificador de vídeo 20 pode, então, predizer o bloco atual da fatia atual (138). Por exemplo, o codificador de vídeo 20 pode calcular uma ou mais unidades de predição (PUs) para o bloco atual. Mais particularmente, a unidade de estimação de movimento 42 pode realizar uma busca de movimento para o bloco atual dentre as imagens de referência da lista de imagens de referência, para identificar um bloco de coincidência utilizado como um bloco de referência, por exemplo, com base em SAD, SSD, MAD, MSD, ou outras medidas de cálculo de erro. A unidade de estimação de movimento 42 pode produzir um vetor de movimento para o bloco atual com base na busca de movimento. O codificador de vídeo 20 pode, então, codificar as informações de movimento para o bloco (140), que pode compreender os valores de diferença de vetor de movimento para o vetor de movimento, um identificador de lista de imagens de referência e um índice de referência, que juntos identificam o bloco de referência.
[0174] O codificador de vídeo 20 pode, então, calcular um bloco residual para o bloco atual, por exemplo, para produzir uma unidade de transformada (TU) (142). Para calcular o bloco residual, o codificador de vídeo 20 pode calcular a diferença entre o original, o bloco não codificado, e o bloco predito para o bloco atual. O codificador de vídeo 20 pode então realizar transformada e quantizar os coeficientes do bloco residual (144). Em seguida, o codificador vídeo 20 pode varrer os coeficientes de transformada quantizados do bloco residual (146). Durante a varredura, ou após a varredura, o codificador de vídeo 20 pode codificar por entropia os coeficientes (148). Por exemplo, o codificador de vídeo 20 pode codificar os coeficientes utilizando CAVLC ou CABAC. O codificador de vídeo 20 pode, então, emitir os dados codificados por entropia do bloco (150).
[0175] Desta forma, o método da FIG. 6 representa um exemplo de um método, compreendendo codificar, por um codificador de vídeo, pelo menos uma porção de uma imagem de uma camada independentemente decodificável de um fluxo de bits multicamada, e codificar, pelo codificador de vídeo, dados indicando que a redefinição de um valor de contagem de ordem imagens (POC) para um valor de POC com bits menos significativos (LSB) da imagem somente quando a imagem tem um valor de POC LSB para a imagem igual a zero.
[0176] A FIG. 7 é um fluxograma ilustrando um exemplo de método para decodificar dados de vídeo de um fluxo de bits multicamada de acordo com as técnicas desta descrição. Adicionalmente, o método da FIG. 7 inclui um bloco de decodificação atual. O bloco atual pode incluir uma CU atual ou uma porção da CU atual. Embora descrito em relação ao decodificador de vídeo 30 (FIGs. 1 e 3), deve ficar entendido que outros dispositivos podem ser configurados para realizar um método semelhante ao da FIG. 7.
[0177] Neste exemplo, o decodificador de vídeo 30 pode determinar se redefine um valor de POC para a imagem que compreende o bloco atual (160). Quando a redefinição de valor de POC é realizada, o decodificador de vídeo 30 pode decodificar os dados que indicam a redefinição de POC (162). Em alguns casos, o decodificador de vídeo 30 pode decodificar os dados que indicam um tipo de redefinição de POC. De acordo com os aspectos desta descrição, o decodificador de vídeo 30 pode codificar somente dados indicando um valor de POC redefinido para um valor de POC LSB da imagem quando a imagem tem um valor de POC LSB para a imagem igual a zero.
[0178] Por exemplo, como descrito acima em relação a FIG. 3, o decodificador de vídeo 30 pode decodificar um elemento de sintaxe poc_reset_idc. De acordo com os aspectos desta descrição, o decodificador de video 30 pode receber e decodificar um poc_reset_idc baseado em uma ou mais restrições. Por exemplo, o decodificador de vídeo 30 pode decodificar um elemento de sintaxe poc_reset_idc com um valor de 2 somente quando a imagem que está sendo codificada tem um valor de POC LSB igual a zero. Isto é, quando um poc_lsb_not_present_flag para uma determinada camada que está sendo codificada é igual a 1 (por exemplo, indicando que a camada é uma camada não-base independente) e um elemento de sintaxe slice_pic_order_cnt_lsb indicando o valor de POC LSB da imagem é maior que 0, decodificador de vídeo 30 pode não decodificar um valor de poc_reset_idc que é igual a 2.
[0179] Quando o decodificador de vídeo 30 decodifica um elemento de sintaxe poc_reset_idc que é igual a 3, o decodificador de vídeo 30 pode ainda decodificar um full_poc_reset_flag e um elemento de sintaxe poc_lsb_val. De acordo com os aspectos desta descrição, quando um poc_lsb_not_present_flag (que pode indicar que a camada que está sendo codificada é uma camada não-base independente) para a camada sendo codificada é igual a 1 e full_poc_reset_flag é igual a 1, o decodificador de vídeo 30 pode decodificar um valor de poc_lsb_val que é igual a 0. Desta forma, o decodificador de vídeo 30 pode garantir que a redefinição do valor de POC é realizada somente para imagens tendo um valor de POC LSB igual a zero, o que pode permitir que imagens de referência seja devidamente identificada, conforme descrito neste documento.
[0180] O decodificador de vídeo 30 em seguida redefine o valor de POC da imagem e decodifica os valores POC das imagens de referência (164), por exemplo, a partir do cabeçalho de segmento de fatia e/ou um parâmetro definido como um PPS ou SPS. O decodificador de vídeo 30 forma, então, a lista de imagens de referência (166).
[0181] Em seguida, o decodificador de vídeo 30 decodifica informações de movimento para um bloco atual (168). As informações de movimento podem compreender, por exemplo, um identificador de lista de imagens de referência e um índice de referência na lista de imagens de referência. O decodificador de vídeo 30, então, predita o bloco atual (170), por exemplo, utilizando o modo de inter- predição para calcular um bloco predito para o bloco atual. Mais particularmente, o decodificador de vídeo 30 utiliza o identificador de lista de imagens de referência para identificar qual lista de imagens de referência deve ser utilizada e o índice de referência para identificar um índice de referência na lista de imagens de referência. O decodificador de vídeo 30, então, decodifica um vetor de movimento para o bloco atual e identifica um bloco de referência na imagem de referência identificada
[0182] O decodificador de vídeo 30 também pode receber dados codificados por entropia para o bloco atual, tais como dados codificado por entropia para coeficientes de um bloco residual correspondente ao bloco atual (172). O decodificador de vídeo 30 pode decodificar por entropia os dados codificados por entropia para reproduzir os coeficientes do bloco residual (174). O decodificador de vídeo 30 pode, então, varrer inversamente os coeficientes reproduzidos (176), para criar um bloco de coeficientes de transformada quantizados. Ou seja, utilizando a varredura inversa, o decodificador de vídeo 30 converte um vetor unidimensional em uma matriz bidimensional. O decodificador de vídeo 30 pode, então, quantizar inversamente e transformar inversamente os coeficientes para produzir um bloco residual (178). O decodificador de vídeo 30 finalmente pode decodificar o bloco atual, combinando o bloco predito e o bloco residual (180).
[0183] Desta forma, o método da FIG. 7 representa um exemplo de um método que compreende decodificar, por um decodificador de vídeo, pelo menos uma porção de uma imagem de uma camada independentemente decodificável de um fluxo de bits multicamada, e decodificar, pelo decodificador de vídeo, dados indicando a redefinição de um valor de contagem de ordem de imagem (POC) para um valor de POC de bits menos significativos (LSB) da imagem somente quando a imagem tem um valor de POC LSB para a imagem igual a zero.
[0184] É importante ser reconhecido que, dependendo do exemplo, certos atos ou eventos de qualquer uma das técnicas descritas neste documento podem ser realizados em uma sequência diferente, podem ser adicionados, mesclados ou deixados de fora (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em certos exemplos, os atos ou os eventos podem ser realizados simultaneamente, por exemplo, através de vários segmentos de processamento multitarefa (multi-threaded), processamento de interrupção ou de múltiplos processadores, ao invés de sequencialmente.
[0185] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas 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 baseada em hardware. O meio legível por computador pode compreender o meio de armazenamento legível por computador, que corresponde a um meio tangível tal como um meio de armazenamento de dados, ou um meio 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. Desta 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 uma 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, códigos e/ou estruturas de dados para a implementação das técnicas descritas nesta descrição. Um produto de programa de computador pode incluir um meio legível por computador.
[0186] A título de exemplo e não de limitação, tal meio de armazenamento legível por computador pode incluir RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código do programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Ainda, qualquer conexão é corretamente denominada como um meio legível por computado. Por exemplo, se as instruções forem transmitidas por um site, servidor ou outra fonte remota utilizando um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio como infravermelho, rádio e microondas, o cabo coaxial, o cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio como infravermelho, rádio e microondas estão incluídos na definição de meio. Deve ser entendido, no entanto, que meio de armazenamento legível por computador e meio de armazenamento de dados não compreendem conexões, ondas portadoras, sinais ou outros meios de comunicação transitórios, mas em vez disso são direcionados para os meios de armazenamento tangíveis não transitórios. Disco, como utilizado aqui, inclui disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disquetes e discos Blu-ray, onde discos (disks) normalmente reproduzem dados magneticamente, enquanto discos (discs) reproduzem dados oticamente com lasers. As combinações desses últimos também devem ser incluídas no âmbito do meio legível por computador.
[0187] As instruções podem ser realizadas por um ou mais processadores, tais como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASICs), matrizes de campos lógicos programáveis (FPGAs) ou outros circuitos equivalentes de lógica integrada ou discreta. Nesse sentido, o termo "processador", como aqui utilizado pode se referir a qualquer um dentre as estruturas acima ou qualquer outra estrutura adequada para a aplicação das técnicas descritas neste documento. Além disso, em alguns aspectos, a funcionalidade descrita neste documento pode ser fornecida dentro de módulos de hardware e/ou software dedicado 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 de lógica.
[0188] As técnicas desta descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, compreendendo um aparelho de telefone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos neste documento para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas descritas, mas que não necessariamente exigem a realização por diferentes unidades de hardware. Pelo contrário, como descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperativas, incluindo um ou mais processadores, como descrito acima, em conjunto com o software e/ou com o firmware adequados.
[0189] Vários exemplos foram descritos. Esses e outros exemplos estão dentro do escopo das seguintes reivindicações.

Claims (13)

1. Método para codificar dados de vídeo, o método caracterizado por compreender: codificar pelo menos uma porção de uma imagem de uma camada não-base independentemente decodificável de um fluxo de bits multicamada; codificar, em um cabeçalho de fatia da imagem, um valor de bits menos significativos, LSB de contagem de ordem de imagem, POC, que indica o valor dos bits menos significativos do POC da imagem; codificar, em um cabeçalho de fatia, um elemento de sintaxe que indica um índice de redefinição de valor de POC, que indica uma redefinição de valor de contagem de ordem de imagem, POC, para o valor de bits menos significativos, LSB, de POC da imagem apenas quando a imagem tem um valor de POC LSB para a imagem igual a zero; e codificar, quando a imagem tem um valor de POC LSB que não é igual a zero, o elemento de sintaxe do índice de redefinição de valor de POC para um valor diferente de 2, em que o valor 2 especifica que ambos os bits mais significativos, MSBs e os LSBs do valor de POC para a imagem atual podem ser redefinidos.
2. Método, de acordo com a reivindicação 1, caracterizado por compreender adicionalmente codificar o elemento de sintaxe que indica um índice de redefinição de valor de POC se um tipo de imagem da imagem é um dentre uma imagem de atualização de decodificador instantânea (IDR), uma imagem de acesso de enlace interrompido (BLA), ou uma imagem de acesso aleatório limpo (CRA).
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que codificar os um ou mais elementos de sintaxe compreende codificar um índice de redefinição de valor de POC e, quando a imagem tem um valor de POC LSB que é igual a zero, codificar o índice de redefinição de valor de POC compreende codificar um elemento de sintaxe poc_reset_idc que é igual a 3.
4. Método, de acordo com a reivindicação 3, caracterizado por compreender adicionalmente codificar um elemento de sintaxe poc_lsb_val de um cabeçalho de fatia da imagem indicando que o valor de POC LSB é igual a zero.
5. Método, de acordo com a reivindicação 1, caracterizado por compreender adicionalmente codificar um ou mais elementos de sintaxe indicando que a camada não- base independentemente decodificável é uma camada independentemente decodificável.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o fluxo de bits multicamada se conforma a um dentre um padrão de codificação de vídeo de extensão de Codificação de Vídeo Multi-visualização para HEVC (MV-HEVC) ou um padrão de codificação de vídeo de extensão de Codificação de Vídeo Escalonável (SVC) para HEVC (SHVC), e em que uma camada não-base independentemente decodificável se conforma ao padrão de codificação de vídeo HEVC.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a codificação compreende codificar, e em que codificar a pelo menos uma porção da imagem compreende: gerar dados residuais para a pelo menos uma porção indicando uma diferença entre dados preditivos e a porção; aplicar uma transformada aos dados residuais para gerar coeficientes de transformada; e gerar um fluxo de bits que inclui uma indicação dos coeficientes de transformada.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que codificar compreende decodificar, e em que a decodificação da pelo menos uma porção da imagem compreende: obter coeficientes de transformada para a pelo menos uma porção a partir de um fluxo de bits codificado; aplicar uma transformada inversa aos coeficientes de transformada para gerar dados residuais; e determinar a pelo menos uma porção da imagem com base nos dados residuais gerados.
9. Dispositivo para codificar dados de vídeo, o dispositivo caracterizado por compreender: meios para codificar pelo menos uma porção de uma imagem da camada não-base independentemente decodificável do fluxo de bits multicamada; meios para codificar, em um cabeçalho de fatia da imagem, um valor de bits menos significativos, LSB de contagem de ordem de imagem, POC, que indica o valor dos bits menos significativos do POC da imagem; meios para codificar, em um cabeçalho de fatia, um elemento de sintaxe que indica um índice de redefinição de valor de POC, que indica uma redefinição de valor de contagem de ordem de imagem, POC, para o valor de bits menos significativos, LSB, de POC da imagem apenas quando a imagem tem um valor de POC LSB para a imagem igual a zero; meios para codificar, quando a imagem tem um valor de POC LSB que não é igual a zero, o elemento de sintaxe do índice de redefinição de valor de POC para um valor diferente de 2, em que o valor 2 especifica que ambos os bits mais significativos, MSBs e os LSBs do valor de POC para a imagem atual podem ser redefinidos.
10. Dispositivo, de acordo com a reivindicação 9, caracterizado pelo fato de que o fluxo de bits multicamada se conforma a um dentre um padrão de codificação de vídeo de extensão de codificação de vídeo multi-visualização para HEVC (MV-HEVC) ou um padrão de codificação de vídeo de extensão de codificação vídeo escalonável (SVC) para HEVC (SHVC), e em que uma camada não-base independentemente decodificável se conforma ao padrão de codificação de vídeo HEVC.
11. Dispositivo, de acordo com a reivindicação 9, caracterizado pelo fato de que o dispositivo compreende um codificador de vídeo, e em que o codificador de vídeo é adicionalmente configurado para: calcular dados residuais para a pelo menos uma porção indicando uma diferença entre dados preditivos e a porção; aplicar uma transformada aos dados residuais para gerar coeficientes de transformada; e gerar um fluxo de bits que inclui uma indicação dos coeficientes de transformada.
12. Dispositivo, de acordo com a reivindicação 9, caracterizado pelo fato de que o dispositivo compreende um decodificador de vídeo, e em que o decodificador de vídeo é adicionalmente configurado para: obter coeficientes de transformada para a pelo menos uma porção a partir de um fluxo de bits codificado; aplicar uma transformada inversa aos coeficientes de transformada para gerar dados residuais; e determinar a pelo menos uma porção da imagem com base nos dados residuais gerados.
13. Memória legível por computador, caracterizada pelo fato de que possui instruções nela armazenadas que, quando executadas, fazem com que o computador realize o método conforme definido em qualquer uma das reivindicações 1 a 8.
BR112016021476-5A 2014-03-17 2015-03-17 Método e dispositivo para codificar dados de vídeo e memória legível por computador BR112016021476B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201461954551P 2014-03-17 2014-03-17
US61/954,551 2014-03-17
US201461973104P 2014-03-31 2014-03-31
US61/973,104 2014-03-31
US14/659,213 US9866869B2 (en) 2014-03-17 2015-03-16 POC value design for multi-layer video coding
US14/659,213 2015-03-16
PCT/US2015/021065 WO2015142921A1 (en) 2014-03-17 2015-03-17 Poc value design for multi-layer video coding

Publications (3)

Publication Number Publication Date
BR112016021476A2 BR112016021476A2 (pt) 2017-08-15
BR112016021476A8 BR112016021476A8 (pt) 2021-07-06
BR112016021476B1 true BR112016021476B1 (pt) 2023-09-12

Family

ID=

Similar Documents

Publication Publication Date Title
US9894370B2 (en) Generic use of HEVC SEI messages for multi-layer codecs
KR101799165B1 (ko) Hevc 및 확장들에 대한 비디오 파라미터 세트
KR102434872B1 (ko) 멀티-계층 비디오 코딩에 대한 poc 값 설계
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
BR112016029751B1 (pt) Método e dispositivo para codificar um fluxo de bits de acordo com hevc escalonável, uma extensão 3d de hevc ou uma extensão de múltiplas vistas de hevc, e método e dispositivo para decodificar dados de vídeo de acordo com hevc escalonável, uma extensão 3d de hevc ou uma extensão de múltiplas vistas de hevc
BR112019027071A2 (pt) intra-predição aperfeiçoada em codificação de vídeo
BR112016000870B1 (pt) Operações de buffer de imagem decodificada para codificação de vídeo
BR112014026745B1 (pt) Métodos para decodificar e codificar dados de vídeo, dispositivo de decodificação de vídeo para decodificar dados de vídeo e memória legível por computador
BR112015032977B1 (pt) Equipamento e método para codificar informações de vídeo, equipamento e método para decodificar informações de vídeo, e memória legível por computador
BR112015006839B1 (pt) Sinalizando identificadores de camada para pontos de operação em codificação de vídeo
BR112014001799B1 (pt) Codificação de vídeo de múltiplas visualizações
US9807419B2 (en) Recovery point SEI message in multi-layer video codecs
BR112015025639B1 (pt) Alinhamento poc de camada cruzada para fluxos de bits de várias camadas que podem incluir imagens irap não alinhadas
BR112016015893B1 (pt) Método de decodificação de informações de vídeo, aparelho configurado para decodificar informações de vídeo e memória legível por computador
BR112014001860B1 (pt) Método e aparelho para decodificar e codificar dados de vídeo, e memória legível por computador
BR112020011099A2 (pt) intra-predição com pixels vizinhos distantes
BR112016015453B1 (pt) Suporte de camada base de codec diferente em codificação de vídeo de várias camadas
BR112015008574B1 (pt) Métodos para decodificar e codificar dados de vídeo, dispositivos para decodificar e codificar dados de vídeo, e, memória legível por computador
BR112016011311B1 (pt) Design de valor de poc para codificação de vídeo de várias camadas
BR112015007273B1 (pt) Método e dispositivo para processar dados de vídeo de múltiplas camadas, dispositivo de codificação de vídeo e memória legível por computador
BR112016021475B1 (pt) Dispositivo e método para codificação escalável de informação de vídeo
BR122022009499A2 (pt) Método de codificação implementado por um codificador de vídeo, dispositivo de codificação, sistema e meio legível por computador não transitório
BR112016015552B1 (pt) Métodos para codificação de um conjunto de imagens de referência (rps) entre camadas e codificação de unidades da camada de acesso à rede (nal) do fim do fluxo de bits
TW202203650A (zh) 解碼圖片緩衝器(dpb)操作和存取單元定界符(aud)