BR112016011311B1 - Design de valor de poc para codificação de vídeo de várias camadas - Google Patents

Design de valor de poc para codificação de vídeo de várias camadas Download PDF

Info

Publication number
BR112016011311B1
BR112016011311B1 BR112016011311-0A BR112016011311A BR112016011311B1 BR 112016011311 B1 BR112016011311 B1 BR 112016011311B1 BR 112016011311 A BR112016011311 A BR 112016011311A BR 112016011311 B1 BR112016011311 B1 BR 112016011311B1
Authority
BR
Brazil
Prior art keywords
poc
reset
value
image
video
Prior art date
Application number
BR112016011311-0A
Other languages
English (en)
Other versions
BR112016011311A2 (pt
Inventor
Ye-Kui Wang
Fnu HENDRY
Adarsh Krishnan Ramasubramonian
Ying Chen
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016011311A2 publication Critical patent/BR112016011311A2/pt
Publication of BR112016011311B1 publication Critical patent/BR112016011311B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/65Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience
    • H04N19/68Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using error resilience involving the insertion of resynchronisation markers into the bitstream

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

DESENHO DE VALOR DE POC PARA CODIFICAÇÃO DE VÍDEO DE VÁRIAS CAMADAS. Em um exemplo, um aparelho para codificar dados de vídeo inclui uma memória que compreende um armazenador de imagens decodificadas (DPB) configurado para armazenar dados de vídeo, e um codificador de vídeo configurado para codificar dados que representam um valor para um identificador de período de reinicialização de total de ordens de imagem (POC), em que os dados são incluídos em um cabeçalho de segmento de fatia para uma fatia associada a uma imagem codificada de uma camada de dados de vídeo, e em que o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada, e reinicializar pelo menos parte de um valor de POC para a imagem codificada no período de reinicialização de POC na camada e valores de POC para uma ou mais imagens na camada que estão atualmente armazenadas no DPB.

Description

[0001] Este pedido reivindica o beneficio do pedido provisório norte-americano No. 61/906 373, depositado a 19 de novembro de 2013.
CAMPO TÉCNICO
[0002] Esta revelação refere-se à codificação de vídeo.
ANTECEDENTES
[0003] Capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de aparelhos, que incluem televisões digitais, sistemas de broadcast direto digitais, sistemas de broadcast sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou de mesa, computadores tablet, leitoras de e-books, câmeras digitais, aparelhos de gravação digitais, tocadores de meios digitais, aparelhos para jogos de vídeo, consoles para jogos de vídeo, telefones celulares ou de rádio-satélite, os chamados “telefones inteligentes”, aparelhos de teleconferência de vídeo, aparelhos de fluxo contínuo de vídeo e semelhantes. Os aparelhos de vídeo digital implementam técnicas de codificação de vídeo, tais como as descritas nos padrões definidos pelo MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação Avançada de Vídeo (AVC), o padrão de Codificação de Vídeo de Alta Eficácia (HEVC) atualmente em desenvolvimento e extensões de tais padrões. Os aparelhos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de maneira mais eficaz pela implementação de tais técnicas de codificação de vídeo.
[0004] As técnicas de codificação de vídeo incluem predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou remover a redundância inerente a sequências de vídeo. Para codificação de vídeos baseada em blocos, uma fatia de vídeo (um quadro de vídeo ou uma parte de um quadro de vídeo, por exemplo) pode ser particionada em blocos de vídeo, que podem ser também referidos como blocos de árvore, unidades de codificação (CUs) e/ou nós de codificação. Os blocos de vídeo em uma fatia intra-codificada (I) de uma imagem são codificados utilizando-se predição espacial com relação a amostras de referência em blocos vizinhos na mesma imagem. Os blocos de vídeo em uma fatia inter-codificada (P ou B) de uma imagem podem utilizar predição espacial com relação às amostras de referência em blocos vizinhos na mesma imagem ou predição temporal com relação a amostras de referência em outras imagens de referência. As imagens podem ser referidas como quadros, e as imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco preditivo para um bloco a ser codificado. Dados residuais representam diferenças de pixel entre o bloco original a ser codificado e o bloco preditivo. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que indica um bloco de amostras de referência que formam o bloco preditivo, e com os dados residuais que indicam a diferença entre o bloco codificado e o bloco preditivo. Um bloco intra-codificado é codificado de acordo com um modo de intra-codificação e com os dados residuais. Para compactação adicional, os dados residuais podem ser transformados do domínio de pixel no domínio de transformada, do que resultam coeficientes de transformada residuais, que podem ser então quantizados. Os coeficientes de transformada quantizados, inicialmente dispostos em um arranjo bidimensional podem ser varridos de modo a se produzir um vetor unidimensional de coeficientes de transformada, e a codificação por entropia pode ser aplicada de modo a se obter ainda mais compactação.
SUMÁRIO
[0006] Em geral, esta revelação descreve técnicas para sinalização e derivação de contagem de ordens de imagem (POC) aperfeiçoadas em codificação de vídeo de várias camadas. Em particular, esta revelação descreve um desenho de sinalização e derivação de POC que pode aperfeiçoar a resiliência em termos de erros e proporciona suporte para cenários de imagens faltantes-colocalizadas onde em uma unidade de acesso aja uma imagem IRAP em uma camada, mas imagem nenhuma para outra camada. Estas técnicas podem ser utilizadas quando se codificam dados de vídeo de camada única ou dados de vídeo de várias camadas. Em geral, estas técnicas incluem sinalizar um identificador de período de reinicialização de POC que indica um período de reinicialização de POC no qual ocorre uma fatia. Conforme discutido mais detalhadamente em seguida, os codificadores de vídeo podem ser configurados para efetuar uma reinicialização de valor de POC a partir da obtenção de uma fatia que tem um novo identificador de período de reinicialização de POC. Os codificadores de vídeo podem ser configurados para efetuar uma reinicialização de valor de POC (de uma imagem no período de reinicialização de POC e imagens na mesma camada da imagem que inclui o novo identificador de período de reinicialização de POC que são armazenadas atualmente em um buffer de imagens decodificadas, por exemplo) uma vez por período de reinicialização de POC. Desta maneira, se uma imagem-âncora de POC for perdida ou corrompida ou não tiver existido de todo, os valores de POC para as imagens subsequentes na mesma camada podem ser ainda recuperados e, consequentemente, as imagens de referência podem ser corretamente identificadas e imagens podem ser transmitidas na ordem correta.
[0007] Em um exemplo, um método para decodificar dados de vídeo inclui decodificar, por um decodificador de vídeo, dados que representam um valor para um identificador de período de reinicialização de contagem de ordens de imagem (POC), no qual, os dados são associados a uma imagem codificada de uma camada de dados de vídeo, e no qual o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada, e reinicializar, pelo codificador de vídeo, pelo menos parte de um valor de POC para a imagem codificada e valores de POC para uma ou mais imagens na camada que estão atualmente armazenadas em um buffer de imagens decodificadas (DPB) do decodificador de vídeo.
[0008] Em outro exemplo, um método para codificar dados de vídeo inclui codificar, por um codificador de vídeo, dados que representam um valor para um identificador de período de reinicialização de contagem de ordens de imagem (POC), no qual, os dados são associados a uma imagem codificada de uma camada de dados de vídeo, e no qual o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada, e reinicializar, pelo codificador de vídeo, pelo menos parte de um valor de POC para a imagem codificada e valores de POC para uma ou mais imagens na camada que estão atualmente armazenadas em um buffer de imagens decodificadas (DPB) do decodificador de vídeo.
[0009] Em outro exemplo, um aparelho para codificar dados de vídeo inclui uma memória que compreende um buffer de imagens decodificadas (DPB) configurado para armazenar dados de vídeo, e um codificador de vídeo configurado para codificar dados que representam um valor para um identificador de período de reinicialização de contagem de ordens de imagem (POC), no qual os dados são associados a uma imagem codificada de uma camada de dados de vídeo, e no qual o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada e reinicializar pelo menos parte de um valor de POC para a imagem codificada e valores de POC para uma ou mais imagens na camada que estão atualmente armazenadas no DPB.
[0010] Em outro exemplo, um aparelho para codificar dados de vídeo inclui um dispositivo para codificar dados que representam um valor para um identificador de período de reinicialização de contagem de ordens de imagem (POC), no qual os dados são associados a uma imagem codificada de uma camada de dados de vídeo, e no qual o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada e um dispositivo para reinicializar pelo menos parte de um valor de POC para a imagem codificada e valores de POC para uma ou mais imagens na camada que estão atualmente armazenadas no buffer de imagens decodificadas (DPB) do decodificador de vídeo.
[0011] Em outro exemplo, um meio de armazenamento passível de leitura por computador tem armazenadas nele instruções que, quando executadas, fazem com que o processador de um aparelho para codificar dados de vídeo codifique dados que representam um valor para um identificador de período de reinicialização de contagem de ordens de imagem (POC), no qual os dados são associados a uma imagem codificada de uma camada de dados de vídeo, e no qual o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada e reinicie pelo menos parte de um valor de POC para a imagem codificada e valores de POC para uma ou mais imagens na camada que estão atualmente armazenadas no buffer de imagens decodificadas (DPB) do decodificador de vídeo.
[0012] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição que se segue. Outros recursos, objetos e vantagens serão evidentes com a descrição e os desenhos e com as reivindicações.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[0013] A Figura 1 é um diagrama de blocos que mostra um sistema de codificação e decodificação de vídeo exemplar que pode utilizar técnicas para codificar informações de valor de POC de acordo com as técnicas desta revelação.
[0014] A Figura 2 é um diagrama de blocos que mostra um exemplo de codificador de vídeo que pode implementar técnicas para codificar informações de valor de POC de acordo com as técnicas desta revelação.
[0015] A Figura 3 é um diagrama de blocos que mostra um exemplo de decodificador de vídeo que pode implementar técnicas para codificar informações de valor de POC de acordo com as técnicas desta revelação.
[0016] A Figura 4 é um fluxograma que mostra um método exemplar para codificar dados que indicam um período de reinicialização de POC para uma fatia de acordo com as técnicas desta revelação.
[0017] A Figura 5 é um fluxograma que mostra um método exemplar para decodificar dados que indicam um período de reinicialização de POC para uma fatia de acordo com as técnicas desta revelação.
DESCRIÇÃO DETALHADA
[0018] Em geral, esta revelação descreve um desenho de valor de contagem de ordens de imagem (POC) para codificação de vídeo, que pode ser benéfica para codificação de vídeo de várias camadas. Esta revelação descreve diversos aperfeiçoamentos de desenho para sinalização e derivação de valores de POC na codificação de vídeo de várias camadas. As técnicas desta revelação podem ser também aplicadas à codificação de vídeo de camada única.
[0019] Os valores de POC são geralmente utilizados para identificar imagens e para controlar a saída de imagens decodificadas na ordem correta. Por exemplo, quando um bloco da imagem atual é inter-predito com relação a uma imagem de referência, a imagem de referência pode ser identificada utilizando-se um valor de POC para a imagem de referência. Mais especificamente, os valores de POC para imagens de referência a serem incluídas em uma lista de imagem de referência podem ser sinalizados em um conjunto de parâmetros, tal como um conjunto de parâmetros de sequência (SPS), um conjunto de parâmetros de imagem (PPS) e/ou em um cabeçalho de fatia que corresponde ao bloco. Desta maneira, um codificador de vídeo pode identificar uma imagem de referência sinalizando um índice na lista de imagens de referência que corresponde à 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 construindo a lista de imagens de referência (com base nos valores de POC) e utilizando o índice de referência para identificar a posição de uma imagem de referência na lista de imagens de referência.
[0020] Os padrões de codificação de vídeo incluem o ITU-T H.261, o ISO/IEC MPEG-1 Visual, o ITU-T H.262 ou ISO/IEC MPEG-2 Visual, o ITU-T H.263, O ISO/IEC MPEG-4 Visual e o ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), que inclui sua Codificação Escalonável de Vídeo (SVC) e extensões da Codificação de Vídeo de Várias Vistas (MVC). Recentemente, o desenho de um novo padrão de codificação de vídeo, a saber, a Codificação de Vídeo de Alta Eficácia (HEVC) foi finalizado pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo (VCEG) ITU-T e do Grupo de Especialistas em Imagens em Movimento (MPEG) ISO/IEC a especificação de Rascunho HEVC mais recente referida como WD10 HEVC daqui por diante, está disponível de: http://phenix.int- evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC- o1003-vl.zip. A extensão de várias vistas da HEVC, a saber, a MV-HEVC, está sendo também desenvolvida pelo JCT-3V. Um Rascunho Operacional (WD) recente da MV-HEVC, referido como WD6 MV-HEVC daqui por diante, está disponível de: http://phenix.it- sudparis.eu/jct2/doc_end_user/documents/6_Geneva/wg11/JCT3V -F1004-v3.zip. A extensão escalonável da HEVC denominada de SHVC, está também sendo desenvolvida pelo JCT-VC. Um Rascunho Operacional (WD) recente da SHVC, e referido como WD4 SHVC daqui por diante, está disponível de: http://phenix.int- evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC- O1008-vL.zip.
[0021] Um valor de POC, representado por PicOrderCntVal, para uma imagem codificada específica denota a ordem relativa da imagem no processo de transmissão de imagens com relação a outras imagens na mesma sequência de vídeo codificada. O valor de POC inclui bits menos significativos (LSB) e bits mais significativos (MSB); o POC é obtido concatenando-se os MSB com os LSB. Os LSB podem ser sinalizados no cabeçalho da fatia, e os MSB podem ser computados pelo decodificador com base no tipo de unidade NAL da imagem atual e nos MSB e LSB da imagem anterior em ordem de decodificação que não é do tipo de unidade líder ignorado de acesso aleatório (RASL) ou líder decodificável de acesso aleatório (RADL) NAL, ou não é uma imagem de não referência de sub-camada mas tem um valor de temporal_id que é igual a 0. Tais imagens que têm TemporalID igual a 0 e nuh_layer_id igual a nuh_layer_id da imagem atual e que não são imagens RASL, imagens RADL ou imagens de não referência de sub-camada serão daqui por diante referidas como imagens de âncora de POC.
[0022] Quando a imagem atual não é uma imagem IRAP com NoRaslOutputFlag igual a um valor de 1, ou uma imagem CRA que é a primeira imagem do fluxo de bits, o valor de MSB de POC é referido como sendo igual a 0. Em um fluxo de bits de várias camadas, (um fluxo de bits SHVC ou MV-HEVC com mais de uma camada, por exemplo), podem existir unidades de acesso onde uma ou mais de uma imagem é uma imagem IRAP e uma ou mais imagens são imagens não IRAP; tais AUs são referidas como AUs IRAP não alinhadas. Quando se decodificam fluxos de bits que contêm AUs IRAP não alinhadas, é frequentemente provável que o POC derivado para imagem com base nos valores de LSB de POC sinalizados violem o requisito de fluxo de bits de que todas as imagens em uma unidade de acesso devem ter o mesmo valor de PicOrderCntVal.
[0023] No WD5 MV-HEVC, o indicador poc_reset_flag pode ser utilizado para reinicializar o poc das imagens de modo que, mesmo quando AUs IRAP não alinhadas estão presentes no fluxo de bits, o valor de PicOrderCntVal da imagem atual e das imagens no DPB seria ajustado de modo que o POC de todas as imagens em uma AU fosse o mesmo.
[0024] Chen et alii, “ALINHAMENTO DE POC DE CAMADA CRUZADA PARA FLUXOS DE BITS DE VÁRIAS CAMADAS QUE PODEM INCLUIR IMAGENS IRAP NÃO ALINHADAS”, pedido de patente norte-americano No. de série 14/245 115, depositado a 4 de abril de 2014, descrevem outro método para obter uma reinicialização de POC, que utiliza dois indicadores: poc_msb_reset_flag e poc_lsb_reset_flag. O primeiro indicador reinicializa os MSB de PicOrderCntVal e o ultimo indicador reinicializa os LSB do PicOrderCntVal. Ambos estes indicadores são sinalizados no cabeçalho da fatia.
[0025] O documento provisório norte-americano No. 61/890 868, depositado a 14 de outubro de 2013, propõe uma mensagem SEI que contém informações para recuperação de valores de POC corretos quando uma imagem que contém uma indicação de reinicialização ou de MSB de POC ou de POC é perdida.
[0026] Os documentos JCTVC-O0275v3, disponível em http://phenix.int- evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC- O0275-v3.zip e JCTVC-O0176v3, disponível em http://phenix.int- evry.fr/jct/doc_end_user/documents/15_Geneva/wg11/JCTVC- O0176v3.zip , propõem alguns outros métodos para sinalizar e derivar valores de POC na codificação de vídeo de várias camadas.
[0027] Desenhos de POC existentes, isto é, métodos existentes para sinalizar e derivar valores de POC na codificação de vídeo de várias camadas, podem encontrar os problemas seguintes: Em alguns métodos, a derivação de POC para imagens de uma camada específica depende de informações, tais como o tipo de imagem indicado pelo tipo de unidade NAL, de imagens de camadas mais baixas. Assim, se tal imagem de camada mais baixa for perdida, os valores de POC para algumas imagens (imagens da camada específica, por exemplo) não podem ser derivados corretamente. Casos de uso tais como aqueles nos quais uma unidade de acesso inclui uma imagem IRAP em uma camada mais nenhuma imagem de todo para outra camada (referidos como cenários de imagens existentes-colocalizadas) não seriam suportados ausentes as técnicas desta revelação. Alguns métodos têm problemas em especificar claramente o alcance de persistência dependente de POC de algumas mensagens SEI ou a semântica dependente de POC de alguns elementos de sintaxe de mensagens SEI.
[0028] O desenho de valor de POC descrito nesta revelação inclui diversos aspectos qualquer um ou todos eles podendo ser implementados sozinhos ou em qualquer combinação. As técnicas desta revelação podem superar um ou mais dos problemas discutidos acima. Em um exemplo, codificadores de vídeo (codificadores de vídeo e decodificadores de vídeo, por exemplo) podem codificar (codificar ou decodificar) um identificador de período de reinicialização de POC para uma fatia de dados de vídeo, por exemplo. O identificador de período de reinicialização de POC pode fazer parte de um cabeçalho de seguimento de fatia para uma fatia de modo a identificar o período de reinicialização de POC ao qual a fatia corresponde.
[0029] Determinadas técnicas desta revelação são baseadas no reconhecimento de que, ocasionalmente, o valor de POC para a fatia atual (ou uma imagem atual que inclui a fatia atual) pode não ser determinável, ou por que uma imagem que tem um valor de POC de referência (isto é, um valor de POC que serve como referência para derivar o valor de POC para a fatia atual ou a imagem atual) foi perdida ou não foi recebida. Por exemplo, uma unidade de acesso pode incluir dados para uma imagem de uma imagem de camada base, mais pode não incluir (devido a perda ou omissão de, por exemplo) dados para uma imagem de camada de aperfeiçoamento. Isto pode resultar em que o valor de POC não é determinável corretamente. Por conseguinte, um codificador de vídeo pode efetuar uma reinicialização de valor de POC no máximo uma vez por período de reinicialização de POC, o que pode permitir que um decodificador de vídeo determine valores de POC, mesmo depois de receber uma unidade de acesso que inclui dados para uma imagem de uma camada base, mas não dados para uma imagem de uma camada de aperfeiçoamento. Em geral, a reinicialização de valor de POC pode incluir determinar um valor para um valor de POC de âncora para o período de reinicialização de POC e ajustar valores de POC de imagens na mesma camada e que estão atualmente armazenadas em um buffer de imagens decodificadas (DPB), com base pelo menos em parte no valor de POC de âncora. Desta maneira, mesmo quando o valor de POC de âncora real não pode ser determinado (devido a perda ou outros erros, por exemplo), valores de POC para o período de reinicialização de POC podem ser determinados e referir-se apropriadamente a valores de POC de imagens decodificadas anteriormente no DPB, que podem ser utilizadas como imagens de referência para decodificar imagens subsequentes. A reinicialização de POC pode incluir reinicializar apenas bits mais significativos (MSB) de um valor de POC ou uma reinicialização completa (que inclui a reinicialização tanto de MSB quanto de bits menos significativos (LSB)) do valor de POC.
[0030] As técnicas desta revelação podem suportar também técnicas nas quais uma unidade de acesso (isto é, uma unidade de dados que inclui todas as unidades de camada de abstração de rede (NAL) para uma ocorrência de tempo específica) inclui dados para uma camada, mais não inclui dados para outra camada.por exemplo, camadas diferentes de dados de vídeo podem ter taxas de quadros diferentes, para fins de capacidade de escalonamento temporal, por exemplo. A imagem da camada para qual a unidade de acesso tem dados pode ser uma imagem de ponto de acesso intra-aleatório (IRAP) e, portanto, funciona como uma imagem de âncora de POC para essa camada. Tipicamente, é desejável que os valores de POC sejam alinhados entre camadas. Portanto, as técnicas desta revelação podem ser utilizadas para reter um alinhamento dos valores de POC entre camadas de codificação de vídeo, mesmo se as imagens não forem apresentadas para cada ocorrência de tempo em cada camada.
[0031] Por exemplo, os codificadores de vídeo podem ser configurados para efetuar uma reinicialização de POC no máximo uma vez por período de reinicialização de POC. Várias imagens podem pertencer ao mesmo período de reinicialização de POC. Além disto, várias imagens podem indicar que os valores de POC serão reinicializados durante o período de reinicialização de POC. Entretanto, em vez de reinicializar os valores de POC em resposta a cada imagem que indica que os valores de POC serão reinicializados, um codificador de vídeo pode ser configurado para determinar se os valores de POC foram reinicializados durante o período de reinicialização de POC (em consequência de uma imagem anterior do período de reinicialização de POC indicar que os valores de POC serão reinicializados, por exemplo). Em seguida, o codificador de vídeo pode reinicializar os valores de POC apenas se os valores de POC não tiverem sido ainda reinicializados para o período de reinicialização de POC correspondente.
[0032] Além disso, os codificadores de vídeo podem ser configurados para codificar um valor de LSB de POC em um cabeçalho de segmento de fatia. Um codificador de vídeo pode utilizar tal valor de LSB de POC quando atualiza os valores de POC de imagens na mesma camada da fatia em um buffer de imagens decodificadas (DPB) ou para derivação de um valor de MSB de POC da imagem atual. Uma imagem de âncora de POC pode ter um valor de tipo de reinicialização de POC que indica ou que o valor de POC para a imagem de âncora de POC será completamente reinicializado ou apenas os MSB do valor de POC da imagem de âncora de POC serão reinicializados. O codificador de vídeo pode fixar o valor de POC de LSB da imagem de âncora de POC como igual ao valor de LSB de POC sinalizado no cabeçalho de segmento de fatia. A imagem de âncora de POC pode corresponder à primeira imagem do período de reinicialização de POC que inclui a fatia. O codificador de vídeo pode também decrementar os valores de POC de outras imagens no DPB pelo valor de LSB de POC.
[0033] Um codificador de vídeo pode ser também configurado para codificar uma indicação de dois bits (um valor para um elemento de sintaxe poc_reset_idc, por exemplo) em um cabeçalho de segmento de fatia de modo a indicar um tipo de reinicialização de POC para a imagem que inclui a fatia. A indicação pode indicar que o tipo de reinicialização de POC não é reinicializado por POC, reinicializar apenas valores de MSB do valor de POC, reinicializar valores tanto de MSB quanto de LSB do valor de POC (também referido como reinicialização completa) ou que informações adicionais são sinalizadas para indicar um tipo de reinicialização, onde as informações adicionais podem indicar se a reinicialização completa ou apenas a reinicialização de MSB será efetuada, assim como um valor de LSB de POC, conforme discutido acima. Os codificadores de vídeo podem ser configurados com a restrição de que imagens de âncora de POC (aquelas no inicio de um período de reinicialização de POC) devem ter um tipo de reinicialização de POC que indica reinicialização completa, reinicialização de MSB ou que informações adicionais são sinalizadas. Os codificadores de vídeo podem codificar várias imagens do mesmo período de reinicialização de POC que têm um tipo de reinicialização de POC que indica que informações adicionais são sinalizadas, o que pode aperfeiçoar a resiliência em termos de erros ou proporcionar suporte para cenários de imagens faltantes- colocalizadas. Desta maneira, os codificadores de vídeo podem ser configurados para efetuar uma reinicialização de POC (ou reinicialização completa ou reinicialização exclusiva de MSB, por exemplo) com base no tipo de reinicialização de POC (o valor de um elemento de sintaxe que representa o tipo de reinicialização de POC, por exemplo).
[0034] Além disso, os codificadores de vídeo podem ser configurados para codificar uma indicação em um conjunto de parâmetros, tal como um PPS ou um SPS, que indica se informações de reinicialização de POC são sinalizadas em cabeçalhos de segmento de fatia correspondentes. Por exemplo, um PPS pode incluir tal indicação quando o elemento de sintaxe slice_segment_header_extension_present_flag no PPS é igual a 1, o valor da indicação pode indicar se os cabeçalhos de segmento de fatia incluirão informações de reinicialização de POC (um identificador de período de reinicialização de POC e/ou um indicador de tipo de reinicialização de POC, por exemplo).
[0035] A Figura 1 é um diagrama de bloco que mostra um sistema de codificação e decodificação de vídeo 10 exemplar que pode utilizar técnicas para codificar informações de valor de POC de acordo com as técnicas desta revelação. Conforme mostrado na Figura 1, o sistema 10 inclui um aparelho de origem 12 que gera dados de vídeo codificados a serem decodificados posteriormente por um aparelho de destino 14. Em particular, o aparelho de origem 12 envia os dados de vídeo ao aparelho de destino 14 por meio de um meio passível de leitura por computador 16. O aparelho de origem 12 e o aparelho de destino 14 podem compreender qualquer um de uma ampla faixa de aparelhos, inclusive computadores de mesa, computadores notebook (isto é, laptop), computadores tablet, conversores set-top-box, aparelhos telefônicos tais como os chamados telefones “inteligentes”, os chamados dispositivos “inteligentes”, televisões, câmeras, aparelhos de exibição, tocadores de meios digitais, consoles para jogos de vídeo, aparelhos para fluxo contínuo de vídeo ou semelhantes. Em alguns casos, o aparelho de origem 12 e o aparelho de destino 14 podem ser equipados para comunicação sem fio.
[0036] O aparelho de destino 14 pode receber os dados de vídeo codificados a serem decodificados por meio do meio passível de leitura por computador 16. O meio passível de leitura por computador 16 pode compreender qualquer tipo de meio ou aparelho capaz de mover os dados de vídeo codificados do aparelho de origem 12 para o aparelho de destino 14. Em um exemplo, o meio passível de leitura por computador 16 pode compreender um meio de comunicação para permitir que o aparelho de origem 12 transmita dados de vídeo codificados diretamente para o aparelho de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, tal como um protocolo de comunicação sem fio, e transmitidos para o aparelho de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação sem fio ou cabeado, tal como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode fazer parte de uma rede baseada e pacotes, tal como uma rede de área local, uma rede de área estendida ou uma rede global, como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base ou outro equipamento que possa ser útil para facilitar a comunicação do aparelho de origem 12 com o aparelho de destino 14.
[0037] Em alguns exemplos, dados codificados podem ser transmitidos da interface de saída 22 para um aparelho de armazenamento. Da mesma maneira, os dados codificados podem ser acessados do aparelho de armazenamento por uma interface de entrada. O aparelho de armazenamento pode incluir qualquer um de diversos meios de armazenamento de dados distribuídos ou acessados localmente, tais como uma unidade de disco, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil ou quaisquer outros meios de armazenamento digitais para armazenar dados de vídeo codificados. Em outro exemplo, o aparelho de armazenamento pode corresponder a um servidor de arquivos ou outro aparelho de armazenamento intermediário que possa armazenar o vídeo codificado gerado pelo aparelho de origem 12. O aparelho de destino 14 pode acessar dados de vídeo armazenados do aparelho de armazenamento por meio de fluxo contínuo ou download. O servidor de arquivos pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o aparelho de destino 14. Servidores de arquivos exemplares incluem um servidor da Web (para um site da Web, por exemplo), um servidor FTP, aparelhos de armazenamento anexados à rede (NAS) ou uma unidade de disco local. O aparelho de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, inclusive uma conexão com a Internet. Isto pode incluir um canal sem fio (uma conexão Wi-Fi, por exemplo) uma conexão cabeada (como, por exemplo, DSL, modem a cabo, etc.), ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivos. A transmissão de dados de vídeo codificados do aparelho de armazenamento pode ser uma transmissão de fluxo contínuo, uma transmissão de download ou uma combinação delas.
[0038] As técnicas desta revelação não estão necessariamente limitadas a aplicativos ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte a diversos aplicativos multimídia tais como broadcasts de televisão através do ar, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo de fluxo contínuo da Internet tais como fluxo contínuo adaptativo dinâmico através de http (DASH), vídeo digital que é codificado em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outros aplicativos. Em alguns exemplos, o sistema 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicativos tais como fluxo contínuo de vídeo, repetição de vídeo, execução de broadcasts de vídeo e/ou telefonia com vídeo.
[0039] No exemplo da Figura 1, o aparelho de origem 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20 e uma interface de saída 22. O aparelho de destino 14 inclui uma interface de entrada 28, um decodificador de vídeo 30 e um aparelho de exibição 32. De acordo com esta revelação, o codificador de vídeo 20 do aparelho de origem 12 pode ser configurado para aplicar as técnicas para codificar informações de valor de POC de acordo com as técnicas desta revelação. Em outros exemplos, um aparelho de origem e um aparelho de destino podem incluir outros componentes ou disposições. Por exemplo, o aparelho de origem 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, tal como uma câmera externa. Da mesma maneira, o aparelho de destino 14 pode formar interface com um aparelho de exibição externo, em vez de incluir um aparelho de exibição integrado.
[0040] O sistema 10 mostrado na Figura 1 é meramente um exemplo. Técnicas para codificar informações de valor de POC de acordo com as técnicas desta revelação podem ser executadas por qualquer aparelho de codificação e/ou decodificação de vídeo digital. Embora geralmente as técnicas desta revelação sejam executadas por um aparelho de codificação de vídeo, as técnicas desta revelação podem ser também executadas por um codificador/decodificador de vídeo, tipicamente referido como “CODEC”. Além do mais, as técnicas desta revelação podem ser também executadas por um pré-processador de vídeo. O aparelho de origem 12 e o aparelho de destino 14 são meramente exemplos de aparelhos de codificação nos quais o aparelho 12 gera dados de vídeo codificados para transmissão para o aparelho de destino 14. Em alguns exemplos, os aparelhos 12, 14 podem funcionar de maneira substancialmente simétrica de modo que cada um dos aparelhos 12, 14 inclua componentes de codificação e decodificação de vídeo. Consequentemente, o sistema 10 pode suportar transmissão unidirecional ou bidirecional entre os aparelhos de vídeo 12, 14, como, por exemplo, para fluxo contínuo de vídeo, repetição de vídeo, execução de broadcast de vídeo ou telefonia com vídeo.
[0041] A fonte de vídeo 18 do aparelho de origem 12 pode incluir um aparelho de captação de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo que contém vídeos previamente captados, e/ou uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo. Como outra alternativa, a fonte de vídeo 18 pode gerar dados baseados em gráficos de computador como a fonte de vídeo ou uma combinação de vídeos ao vivo, vídeos arquivados ou vídeos gerados por computador. Em alguns casos, se a fonte de vídeo 18 for uma câmera de vídeo, o aparelho de origem 12 e o aparelho de destino 14 podem formar os chamados telefones com câmera ou telefones com vídeo. Conforme mencionado acima, contudo, as técnicas descritas nesta revelação, podem ser aplicadas à codificação de vídeo em geral e podem ser aplicadas a aplicativos sem fio e/ou cabeados. Em cada caso, o vídeo captado, pré-captado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. As informações de vídeo codificadas podem ser então transmitidas pela interface de saída 22 em um meio passível de leitura por computador 16.
[0042] O meio passível de leitura por computador 16 pode incluir meios transitórios, tais como um broadcast sem fio ou transmissão em rede cabeada (ou meios de armazenamento não transitórios, por exemplo) tais como um disco rígido, uma unidade flash, um disco compacto, um disco de vídeo digital, um disco Blu-ray ou outros meios passíveis de leitura por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados do aparelho de origem 12 e enviar os dados de vídeo codificados ao aparelho de destino 14 (por meio de transmissão em rede, por exemplo). Da mesma maneira, um aparelho de computação de uma instalação de produção de meio, tal como uma instalação de estampagem de disco pode receber dados de vídeo codificados do aparelho de origem 12 e produzir um disco que contém os dados de vídeo codificados. Portanto, o meio passível de leitura por computador 16 pode ser entendido como incluindo um ou mais meios de armazenamento passíveis de leitura por computador de diversas formas, em diversos exemplos.
[0043] A interface de entrada 28 do aparelho de destino 14 recebe informações do meio passível de leitura por computador 16. As informações do meio passível de leitura por computador 16 podem incluir informações de sintaxe definidas pelo codificador de vídeo 20, que são também utilizadas pelo decodificador de vídeo 30, que incluem elementos de sintaxe que descrevem características e/ou processamento de blocos e outras unidades codificadas, como, por exemplo, GOPs. O aparelho de exibição 32 exibe os dados de vídeo decodificados ao usuário e pode compreender qualquer um de diversos aparelhos de exibição, tais como um tubo de raios catódicos (CRT), uma tela de cristal líquido (LCD), uma tela de plasma ou uma tela de diodo emissor de luz orgânico (OLED) ou outro tipo de aparelho de exibição.
[0044] O codificador de vídeo 20 e o decodificador de vídeo 30 podem funcionar, respectivamente, de acordo com um padrão de codificação de vídeo, tal como o padrão de Codificação de Vídeo de Alta Eficácia (HEVC) atualmente em desenvolvimento e podem conformar-se ao Modelo de Teste HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem funcionar, respectivamente, de acordo com outros padrões patenteados ou industriais, tais como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, Codificação Avançada de Vídeo (AVC), ou extensões de tais padrões. As técnicas desta revelação, contudo, não estão limitadas a qualquer padrão de codificação específico. Outros exemplos de padrão de compactação de vídeo incluem o MPEG-2 e o ITU-T H.263. Embora não mostrado na Figura 1, sob alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, respectivamente integrados com um codificador e um decodificador de áudio e podem incluir unidades MUX-DEMUX apropriadas ou outro hardware e software para processar codificação tanto de áudio quanto de vídeo em um fluxo de dados comum ou em fluxos de dados separado. Se aplicável, as unidades MUX-DEMUX podem conformar-se ao protocolo de multiplexador ITU H.223, a outros protocolos, tais como o protocolo de datagrama de usuário (UDP).
[0045] O padrão ITU-T H.264/MPEG-4 (AVC) foi formulado pelo Grupo de Especialistas em Codificação de Vídeo (VCEG) ITU-T juntamente com o Grupo de Especialistas em Imagens em Movimento ISO-IEC (MPEG) como o produto de uma parceria coletiva conhecida como Equipe de Vídeo Conjunta (JVT). Sob alguns aspectos, as técnicas descritas nesta revelação podem ser aplicadas a aparelhos que se conformam geralmente ao padrão H.264. O padrão H.264 é descrito na recomendação ITU-T H.264, Codificação Avançada de Vídeo para Serviços Audiovisuais Genéricos pelo Grupo de Estudos ITU-T e datado de março de 2005, que pode ser aqui referido como padrão H.264 ou especificação H.264 ou como padrão especificação H.264/AVC. A Equipe de Vídeo Conjunta (JVT) continua a trabalhar em extensões do H.264/MPEG-4 AVC.
[0046] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um deles, implementados como qualquer um de diversos circuitos de codificador adequados, tais como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados específicos de aplicativo (ASICs), arranjos de portas programáveis no campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações deles. Quando as técnicas são implementadas parcialmente em software, um aparelho pode armazenar instruções para o software em um meio passível de leitura por computador não transitório adequado e executar as instruções em hardware utilizando um ou mais processadores para executar as técnicas desta revelação. Cada um do codificador de vídeo 20 e do decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, ambos os quais podem ser integrados como parte de um codificador/decodificador (codec) em um respectivo aparelho.
[0047] O JCT-VC estava trabalhando no desenvolvimento do padrão HEVC. Os esforços de padronização HEVC são baseados em um modelo de evolução de um aparelho de codificação de vídeo referido como Modelo de Teste HEVC (HM). O HM presume várias capacidades adicionais de aparelhos de codificação de vídeo relativas à aparelhos existentes de acordo com o ITU-T H.264/AVC, por exemplo. Ao passo que o H.264 apresenta nove modos de codificação de intra-predição, o HM pode apresentar um máximo de trinta e três modos de codificação de intra-predição.
[0048] Em geral, o modelo operacional do HM descreve que um quadro ou imagem de vídeo pode ser dividida em uma sequência de blocos de árvore ou maiores unidades de codificação (LCUs) que inclui amostras tanto luma quanto croma. Os dados de sintaxe dentro de um fluxo de bits podem definir o tamanho para a LCU, que a maior unidade de codificação em termos do número de pixels. Uma fatia inclui vários blocos de árvore consecutivos em ordem de codificação. Um quadro ou imagem de vídeo pode ser particionada em uma ou mais fatias. Cada bloco de árvore pode ser dividido em unidades de codificação (CUs) de acordo com uma transformação quadtree. Em geral, uma estrutura de dados de transformação quadtree inclui um nó por CU, com um nó-raiz correspondendo ao bloco de árvore. Se uma CU for dividida em quatro sub-CUs, o nó que corresponde à CU inclui quatro nós-folha, cada um dos quais corresponde a uma das sub-CUs.
[0049] Cada nó da estrutura de dados da transformação quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó na transformação quadtree pode incluir um indicador de divisão que indica se a CU que corresponde ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos recursivamente e podem depender de a CU ser ou não dividida em sub-CUs. Se uma CU não for dividida ainda mais, ela é referida como uma CU-folha. Nesta revelação, quatro sub-CUs de uma CU-folha serão referidas como CUs-folha mesmo se não houver divisão explícita da CU-folha original. Por exemplo, se uma CU no tamanho 16x16 não for dividida ainda mais, as quatro sub-CUs 8x8 serão referidas como CUs-folha embora a CU 16x16 jamais fosse dividida.
[0050] Uma CU tem uma finalidade semelhante à de um macro-bloco do padrão H.264, exceto pelo fato de que uma CU não tem uma distinção de tamanho. Por exemplo, um bloco de árvore pode ser dividido em quatro nós-filho (também referidos como sub-CUs), e cada nó-filho pode por sua vez ser um nó-pai e ser dividido em outros quatro nós- filho. Um nó-filho não dividido, final, referido como um nó-folha da transformação quadtree, compreende um nó de codificação, também referido como CU-folha. Os dados de sintaxe associados a um fluxo de bits codificado podem definir um número máximo de vezes em que um bloco de árvore pode ser dividido referido como profundidade de CU máxima, e podem definir também o tamanho mínimo dos nós de codificação. Por conseguinte, um fluxo de bits pode definir também a menor unidade de codificação (SCU). Esta revelação utiliza o termo “bloco” para referir-se a qualquer uma de uma CU, PU ou TU, no contexto da HEVC, ou estruturas de dados semelhantes no contexto de outros padrões (macro- blocos e sub-blocos deles no H.264/AVC, por exemplo).
[0051] Uma CU inclui um nó de codificação e unidades de predição (PUs) e unidades de transformada (TUs) associadas ao nó de codificação. O tamanho da CU corresponde ao tamanho do nó de codificação e deve ser de conformação quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do bloco de árvore com o máximo de 64x64 pixels ou mais. Cada CU pode conter uma ou mais PUs e uma ou mais TUs. Os dados de sintaxe associados a uma CU podem descrever, por exemplo, o particionamento da CU em uma ou mais PUs. Os modos de particionamento podem diferir entre se a CU é saltada ou codificada no modo direto, codificada no modo de intra-predição ou codificada no modo de inter-predição. As PUs podem ser particionadas de modo a serem de conformação não quadrada. Os dados de sintaxe associados a uma CU podem descrever também, por exemplo, o particionamento da CU em uma ou mais TUs de acordo com uma transformação quadtree. Uma TU pode ser de conformação quadrada ou não quadrada (retangular, por exemplo).
[0052] O padrão HEVC proporciona transformações de acordo com TUs que podem ser diferentes para CUs diferentes. As TUs são tipicamente dimensionadas com base no tamanho das PUs dentro de uma dada CU definida para uma LCU particionada, embora este possa não ser sempre o caso. As TUs são tipicamente do mesmo tamanho ou menores que as PUs. Em alguns exemplos, amostras residuais que correspondem a uma CU podem ser subdivididas em unidades menores utilizando-se uma estrutura de transformação quadtree conhecida como “transformação quadtree residual” (RQT). Os nós-folha da RQT podem ser referidos como unidade de transformada (TUs). Os valores de diferença de pixel associados às TUs podem ser transformados de modo a se produzirem coeficientes de transformada que podem ser quantizados.
[0053] Uma CU-folha pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa uma área espacial que corresponde a toda ou a uma parte da CU correspondente e pode incluir dados para recuperar uma amostra de referência para a PU. Além do mais, uma PU inclui dados relacionados com predição. Por exemplo, quando a PU é codificada no modo intra, dados para a PU podem ser incluídos em uma transformação quadtree residual (RQT) que pode incluir dados que descrevem um modo de intra-predição para uma TU que corresponde à PU. Como outro exemplo, quando a PU é codificada no modo inter, a PU pode incluir dados que definem um ou mais vetores de movimento para a PU. Os dados que definem o vetor de movimento para uma PU podem descrever, por exemplo, um componente horizontal do vetor de movimento, um componente vertical do vetor de movimento, uma resolução para o vetor de movimento (precisão de um quarto de pixel ou precisão de um oitavo de pixel, por exemplo), uma imagem de referência que o vetor de movimento indica e/ou uma lista de imagens de referência (Lista 0, Lista 1 ou Lista C, por exemplo) para o vetor de movimento.
[0054] Informações de movimento para uma PU inter-predita (mais especificamente, uma parte inter- predita de uma CU à qual uma PU corresponde) podem incluir um identificador de lista de imagens de referência e um índice de referência que corresponde à posição de uma imagem de referência na lista de imagens de referência. O codificador de vídeo 20, por exemplo, pode construir a lista de imagens de referência (que inclui quaisquer modificações feitas em uma lista de imagem de referência construída originalmente) e efetua uma busca de movimento entre as imagens de referência na lista de imagens de referência de modo a identificar um bloco intimamente correspondente (com base na soma de métricas de diferença absoluta (SAD) ou em métricas semelhantes, por exemplo), também referido como bloco de referência. De modo a sinalizar a localização do bloco de referência, o codificador de vídeo 20 pode codificar o identificador de lista de imagens de referência e o índice de referência para a PU. Além disto, o codificador de vídeo 20 pode codificar dados que representam imagens de referência a serem incluídas na lista de imagens de referência, como por exemplo, sinalizando dados que representam valores de POC para as imagens de referência em um cabeçalho de fatia ou em um conjunto de parâmetros, tal como um conjunto de parâmetros de imagem ou um conjunto de parâmetros de sequência.
[0055] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser geralmente configurados para funcionar de acordo com um padrão de codificação de vídeo ou uma extensão de um padrão de codificação de vídeo tal como MV-HEVC ou SHVC. Para fins de exemplificação, as técnicas desta revelação são descritas em seguida com relação à MV-HEVC, mas deve ficar entendido que estas técnicas podem ser aplicadas a outros padrões ou extensões de codificação de vídeo, tais como SHVC.
[0056] Um período de reinicialização de POC pode ser definido da maneira seguinte, como por exemplo no subparágrafo F3 da MV-HEVC: F.3.1 período de reinicialização de total de ordens de imagem (POC): Uma sequência de imagens em ordem de decodificação dentro de uma camada que todas têm poc_reset_idc maior do que 0 e o mesmo valor de poc_reset_period_id. Alternativamente, a locução “dentro de uma camada” na definição acima pode ser omitida, da maneira seguinte, por exemplo: F.3.2 período de reinicialização de total de ordens de imagem: Uma sequência de imagens em ordem de decodificação que todas têm poc_reset_idc maior que 0 e o mesmo valor de poc_reset_period_id. Em um exemplo, a MV-HEVC (ou outro padrão ou extensão de padrão aplicável) pode exigir que as imagens em um período de reinicialização de POC sejam continuas em ordem de decodificação dentro de uma camada. Entretanto, permitir que estas imagens sejam intercaladas com imagens com poc_reset_idc igual a 0 na mesma camada pode adicionar flexibilidade e permitir a utilização do mesmo overhead de modo a se obter melhor resiliência em termos de erros para perdas de pacotes agrupados.
[0057] O codificador de vídeo 20 pode atribuir fatias a respectivos períodos de reinicialização de POC. Cada período de reinicialização de POC pode incluir uma ou mais fatias. Assim, quando os valores de POC são reinicializados para um período de reinicialização de POC (que inclui a reinicialização de valores de POC de imagens de referência que precedem o período de reinicialização de POC em ordem de codificação), o codificador de vídeo 20 pode sinalizar os valores de POC de imagens de referência a serem incluídas em uma lista de imagens de referência com base nos valores de POC reinicializados.
[0058] Em geral, quando efetua uma reinicialização de POC, o codificador de vídeo 20 e o decodificador de vídeo 30 reinicializam respectivamente o valor de POC de uma imagem de âncora de POC e outras imagens atualmente armazenadas em um buffer de imagens decodificadas (DPB). Em seguida, o codificador de vídeo 20 e o decodificador de vídeo 30 podem determinar respectivamente valores de POC para outras imagens no período de reinicialização de POC com base no valor de POC reinicializado da imagem de âncora de POC. Em alguns exemplos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem efetuar respectivamente a reinicialização de POC para a imagem de âncora de POC, isto é, durante a codificação da imagem de âncora de POC.
[0059] De acordo com as técnicas desta revelação, um período de reinicialização de POC específico de camada pode ser especificado com base em um identificador de período de reinicialização de POC sinalizado em cabeçalhos de segmento de fatia. Ou seja, o codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar respectivamente dados que representam o identificador de período de reinicialização de POC em cabeçalhos de segmentos de fatia. Cada imagem não IRAP que pertence a uma unidade de acesso que contém pelo menos uma imagem IRAP pode ser o inicio de um período de reinicialização de POC na camada que contém a imagem não IRAP. Ou seja, o codificador de vídeo 20 pode configurar um tipo de reinicialização de POC para uma imagem não IRAP de uma unidade de acesso que contém pelo menos uma imagem IRAP de modo a indicar que a imagem não IRAP é o inicio de um novo período de reinicialização de POC. Além disto, o codificador de vídeo 20 pode efetuar uma reinicialização de POC com base no tipo de reinicialização de POC. Em tal unidade de acesso, cada imagem seria o inicio de um período de reinicialização de POC na camada que contém a imagem. A reinicialização de POC, ou os MSB de POC apenas ou tanto os MSB de POC e o LSB de POC, e a atualização dos valores de POC das imagens da mesma camada no DPB podem ser aplicadas apenas para a primeira imagem dentro de cada período de reinicialização de POC.
[0060] O codificador de vídeo 20 pode sinalizar um valor de LSB de POC em um cabeçalho de segmento de fatia que o decodificador de vídeo 30 pode utilizar para derivar valores de POC de imagens e uma camada que inclui a fatia que tem o cabeçalho de segmento de fatia. O valor de LSB de POC sinalizado no cabeçalho de segmento de fatia pode ser utilizado para derivação do valor de POC delta, que é utilizado para atualizar os valores de POC das imagens da mesma camada no DPB, e também para derivação dos MSB de POC do valor de POC da imagem atual. Quando a imagem atual tem tal valor de LSB de POC sinalizado, e quando a imagem de âncora de POC associada à imagem atual está presente no fluxo de bits, a imagem de âncora de POC tem uma indicação ou da reinicialização de POC ou da reinicialização de MSB de POC. Tal valor de LSB de POC sinalizado para imagem atual é igual ao valor de LSB de POC da imagem de âncora de POC, que é também a primeira imagem do período de reinicialização de POC da imagem atual.
[0061] O codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar respectivamente um elemento de sintaxe de indicação de dois bits de um cabeçalho de segmento de fatia que indica o tipo de reinicialização de POC para uma fatia que tem o cabeçalho de segmento de fatia. O codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar respectivamente um valor de 0 para esta indicação para imagens sem valor de POC ou reinicialização de valor de MSB de POC. O codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar respectivamente um valor de 1 para esta indicação para imagens com apenas reinicialização de MSB de POC. O codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar respectivamente um valor de 2 para esta indicação para imagens com reinicialização de POC completa. O codificador de vídeo 20 e o decodificador de vídeo 30 podem codificar respectivamente um valor de 3 para esta indicação para imagens ou com reinicialização de POC completa ou reinicialização de MSB de POC e com informações adicionais sinalizadas. O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser respectivamente configurados com a restrição de que uma imagem com um valor 1 ou 2 da indicação de dois bits deve ser o inicio de um período de reinicialização de POC. Alternativamente, em alguns exemplos, uma imagem com um valor 3 para a indicação de dois bits pode ser também o inicio de um período de reinicialização de POC. O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser respectivamente configurados com a restrição de que uma imagem que pertence a um período de reinicialização de POC, mas que não é a primeira imagem do período de reinicialização de POC deve ter um valor 3 para a indicação de dois bits.
[0062] Casos de uso nos quais uma unidade de acesso inclui uma imagem IRAP em uma camada, mas nenhuma imagem de todo para outra camada são suportados através de uma imagem com um valor 3 para a indicação de dois bits que é o inicio de um período de reinicialização de POC. Em outras palavras, pelo fornecimento de informações de sinalização adicionais indicadas por um valor de 3 para a indicação de dois bits, o codificador de vídeo e o decodificador de vídeo 30 podem codificar respectivamente dados de vídeo que incluem pelo menos uma unidade de acesso que tem uma imagem IRAP em uma camada e nenhuma imagem em outra camada.
[0063] As técnicas desta revelação podem aperfeiçoar a resiliência em termos de erros. Por exemplo, a perda de uma imagem no inicio de um período de reinicialização de POC pode ser superada tendo-se uma ou mais imagens na mesma camada que se seguem a essa imagem em ordem de decodificação e as quais é atribuído um valor 3 para a indicação de dois bits. As informações adicionais podem incluir um valor de LSB de POC para a imagem de âncora de POC que inicia o período de reinicialização de POC. Assim, o mesmo processo para suporte de cenários de imagens existentes-colocalizadas pode ser aplicado para resolver o problema da resiliência em termos de erros.
[0064] A tabela seguinte é um exemplo de sintaxe para um cabeçalho de segmento de fatia de acordo com as técnicas desta revelação. O cabeçalho de sintaxe de fatia pode ser modificado com relação ao da MV-HEVC. Na tabela de sintaxe exemplar e na semântica abaixo, acréscimos à MV-HEVC são representados utilizando-se itálico e supressões da MV-HEVC são representadas utilizando-se texto entre colchetes precedido por “removido” ([removido: “texto removido”], por exemplo). Além do mais, afirmações referentes a “requisitos” devem ser entendidas como fazendo parte do texto do padrão ou extensão de padrão, e não um requisito para fins das técnicas desta revelação.
Figure img0001
[0065] Alternativamente, poc_reset_period_id pode ser sinalizado utilizando-se um número diferente de bits, como por exemplo, como u(14).
[0066] Quando presente, o valor dos elementos de sintaxe de cabeçalho de segmento de fatia slice_pic-parameter_set_id, pic output-flag, no output of_prior_picsJlag, slice_pic order entJsb, short_term_ref_pic_set_spsJlag, short term ref_pic set idx, num long term sps, num long term_pics, slice temporal_mvp enabledJlag, discardable Jlag, cross Jayer_bla Jlag, inter Jayer_pred enabledJlag, num inter layer ref_pics minus 1, poc reset ide, poc reset_period id, full_poc_resetJlag, and pocjsb_val será o mesmo em todos os cabeçalhos de segmento de fatia de uma imagem codificada. Quando presente, o valor dos elementos de sintaxe de cabeçalho de segmento de fatia lt_idx_sps[ i ], poclsbltf i ], used_by_curr_pic_lt Jlag[ i ], delta jjoc msb_present Jlagf i], delta jioc msb cycle It[ i ], and inter_layer_pred_layer_idc[ I ] será o mesmo em todos os cabeçalhos de segmento de fatia de uma imagem codificada para cada valor possível de i.
[0067] [removido: ”poc_reset_flag”] igual a 1 especifica que a contagem de ordens de imagem derivada para a imagem atual é igual a 0. poc_reset_flag igual a 0 especifica que a contagem de ordens de imagem derivada para a imagem atual pode ou pode não ser igual a 0. Quando não presente, o valor de poc_reset_flag é inferido como sendo igual a 0. OBSERVAÇÃO: -- quando poc_reset_flag é igual a 1 em uma imagem de camada base, PicOrderCntVal é derivado de maneira diferente dependendo de se o processo de decodificação do subparágrafo 8.3.1 ou do subparágrafo F.8.3.1 é aplicado. Além disto, quando uma imagem de camada base com poc_reset_flag igual a 1 é prevTid0Pic de acordo com o subparágrafo 8.3.1 ou F.8.3.1, a variável PrevPicOrderCntLsb é derivada de maneira diferente nos subparágrafos 8.3.1 e F.8.3.1. De modo a se evitar que PicOrderCntMsb seja atualizado incorretamente em um dos subparágrafos 8.3.1 ou F.8.3.1, quando prevTid0Pic é uma imagem de camada base com poc_reset_flag igual a 1 e uma ou outra das condições seguintes é verdadeira para prevpicordercntlsb derivado com um dos subparágrafos 8.3.1 ou F.8.3.1, o valor de pic_order_cnt_lsb de prevTid0Pic será tal que a mesma condição seja verdadeira também para prevPicOrdercntlsb derivado com o outro dos subparágrafos 8.3.1 ou F.8.3.1: ( slice_pic_order_cnt_lsb < prevPicOrderCntLsb ) && (( prevPicOrderCntLsb - slice_pic_order_cnt_lsb ) >= ( MaxPicOrderCntLsb / 2 ) ) - ( slice_pic_order_cnt_lsb > prevPicOrderCntLsb ) && ( ( slice_pic_order_cnt_lsb - prevPicOrderCntLsb ) > ( MaxPicOrderCntLsb / 2 ) )”].
[0068] slice_segment_header_extension_length especifica o comprimento dos dados de extensão de cabeçalho de segmento de fatia em bytes, não incluindo os bits utilizados para sinalizar slice_segment_header_extension_length propriamente dito. Se poc_reset_info_present_flag for igual a 0, o valor de slice_segment__header_extension_length estará no intervalo de 0 a 256, inclusive. Caso contrário, o valor de slice_segment_header_extension_length deve estar na faixa de 1 a 256, inclusive, quando poc_reset_idc é menor que 3, e na faixa de 1 + Ceil ((log2_max_pic_order_cnt_lsb_minus4 + 5) / 8) a 256, inclusive, quando poc_reset_idc é igual a 3.
[0069] poc_reset_idc igual a 0 especifica que nem os bits mais significativos nem os bits menos significativos do valor de contagem de ordens de imagem para a imagem atual são reinicializados. poc_reset_idc igual a 1 especifica que apenas os bits mais significativos do valor de contagem de ordens de imagem para a imagem atual podem ser reinicializados. poc_reset_idc igual a 2 especifica que tanto os bits mais significativos quanto os bits menos significativos do valor de contagem de ordens de imagem para a imagem atual podem ser reinicializados. poc_reset_idc igual a 3 especifica que ou apenas os bits mais significativos ou tanto os bits mais significativos quanto os bits menos significativos do valor de contagem de ordens de imagem para a imagem atual podem ser reinicializados e informações de contagem de ordem de imagens adicionais são sinalizadas. Quando não presente, o valor de poc_reset_poc é inferido como sendo igual a 0.
[0070] É um requisito da conformação de fluxos de bits que as seguintes restrições se apliquem: - O valor de poc_reset_idc não será igual a 1 ou 2 para uma imagem RASL, uma imagem RADL, uma imagem de não-referência de sub-camada ou uma imagem que tenha TemporalId maior do que 0. - Quando o valor de poc_reset_idc de uma imagem em uma unidade de acesso é igual a 1, o valor de poc_reset_idc de todas as imagens na unidade de acesso será igual a 1. (Em alternativa, este elemento pode ser gravado: Quando presente, o valor de poc_reset_idc de todas as imagens em uma unidade de acesso será o mesmo.). - Quando o valor de poc_reset_idc de uma imagem em uma unidade de acesso é igual a 2, o valor de poc_reset_idc de todas as imagens na unidade de acesso deve ser igual a 2. (Alternativamente, este elemento pode ser omitido em sua totalidade). - Quando uma imagem em uma unidade de acesso é uma imagem IRAP com um valor específico de nal_unit_type e há pelo menos uma outra imagem na mesma unidade de acesso com um valor diferente de nal_unit_type, o valor de poc_reset_idc será igual a 1 ou 2 para todas as imagens na unidade de acesso. Quando a imagem com nuh_layer_id igual a 0 em uma unidade de acesso é uma imagem IDR e há pelo menos uma imagem não-IDR na mesma unidade de acesso, o valor de poc_reset_idc será igual a 1 para todas as imagens na unidade de acesso. - Quando a imagem com nuh_layer_id igual a 0 em uma unidade de acesso não é uma imagem IDR, o valor de poc_reset_idc não será igual a 1 para qualquer imagem na unidade de acesso.
[0071] poc_reset_period_id identifica um período de reinicialização de POC. Não haverá duas imagens consecutivas em ordem de decodificação na mesma camada que têm o mesmo valor de poc_reset_period_id e poc_reset_idc igual a 1 ou 2.
[0072] OBSERVAÇÃO - Não é proibido que várias imagens em uma camada tenham o mesmo valor de poc_reset_period_id e tenham poc_reset_idc igual a 1 ou 2 a menos que tais imagens ocorram em duas unidades de acesso consecutivas em ordem de decodificação. Para reduzir ao mínimo a probabilidade de tais duas imagens aparecerem no fluxo de bits devido a perdas de imagens, extração de fluxos de bits, operações de busca ou emenda, os codificadores devem fixar o valor de poc_reset_period_id como sendo um valor aleatório para cada período de reinicialização de POC (sujeito às restrições acima especificadas).
[0073] Em alguns exemplos, o seguinte pode ser inserido adicionalmente depois da "OBSERVAÇÃO" acima: É um requisito da conformação de fluxos de bits que as seguintes restrições se apliquem: - Quando imagens com poc_reset_idc igual a 1 e 3 estão presentes no mesmo período de reinicialização de POC, todas as imagens com poc_reset_idc igual a 3 nesse período de reinicialização de POC se seguirão à imagem com poc_reset_idc igual a 1, a fim de decodificação. - Quando imagens com poc_reset_idc igual a 2 e 3 estão presentes no mesmo período de reinicialização de POC, todas as imagens com poc_reset_idc igual a 3 nesse período de reinicialização de POC se seguirão à imagem com poc_reset_idc igual a 2 em ordem de decodificação.
[0074] full_poc_reset_flag igual a 1 especifica que tanto os bits mais significativos quanto os bits menos significativos do valor de contagem de ordens de imagem para a imagem atual são reinicializados quando a imagem anterior, a fim de decodificação na mesma camada não pertence ao mesmo período de reinicialização de POC. full_poc_reset_flag igual a 0 especifica que apenas os mais bits significativos do valor de contagem de ordens de imagem para a imagem atual são reinicializados quando a imagem anterior, em ordem de decodificação na mesma camada não pertence ao mesmo período de reinicialização de POC.
[0075] poc_lsb_val especifica um valor que pode ser utilizado para derivar a contagem de ordens de imagem da imagem atual. O comprimento do elemento de sintaxe é poc_lsb_val é log2_max_pic_ order_cnt_lsb_minus4 + 4 bits.
[0076] É um requisito da conformação de fluxos de bits que, quando poc_reset_idc é igual a 3, e a imagem anterior picA em ordem de decodificação que está na mesma camada ou a imagem atual, tem poc_reset_idc igual a 1 ou 2, e pertence ao mesmo período de reinicialização de POC está presente no fluxo de bits, PicA seja a mesma imagem da imagem anterior em ordem de decodificação que está na mesma camada da imagem atual, que não seja uma imagem RASL, uma imagem RADL ou uma imagem de não referência de sub-camada e que tenha TemporalId igual a 0 e o valor de poc_lsb_val da imagem atual seja igual ao valor do slice_pic_order_cnt_lsb da PicA.
[0077] As variáveis numRsvBits e BytesInSliceSegmtHdrExt são derivadas da maneira seguinte: iff !poc_reset_info_present Jlag ) { numRsvBits = 0 BytesInSliceSegmtHdrExt = 0 } else iff poc_reset_idc = = 0) { numRsvBits = 6 BytesInSliceSegmtHdrExt = 1 else iffpoc_reset_idc < 3 ) { numRsvBits = 0 BytesInSliceSegmtHdrExt = 1 else { numRsvBits = 8 - (log2_max_pic_order_cnt_lsb_minus4 + 5 ) % 8 bitsInSliceSegmtHdrExt = 1 + Ceilf ( log2_max_pic_order_cnt_lsb_minus4 + 5 ) / 8 ) }
[0078]slice_segment_header_extension_reserved_bit s pode ter qualquer valor. O comprimento do elemento de sintaxe slice_segment_header_extension_reserved_bits é igual a numRsvBits bits. Os Decodificadores devem ignorar o valor de slice_segment_header_extension_reserved_bits. Seu valor não afeta a conformação do decodificador a perfis especificados na versão desta Especificação.
[0079] O decodificador de vídeo 30 pode executar o seguinte processo de decodificação para iniciar a decodificação da primeira imagem em uma unidade de acesso: O valor de PocResetFlag é fixado em 0. A variável DeltaPocVal é fixada em 0. A variável UpdateSubDpbFlag [i] é fixada como igual a 0 para todos os valores de i de 0 a 63, inclusive.
[0080] O Decodificador de vídeo 30 pode executar o seguinte processo de decodificação para encerrar a decodificação da última imagem em uma unidade de acesso: Se PocResetFlag for igual a 1, é aplicável o seguinte: Para todos os valores de i de 0 a 63, inclusive, se UpdateSubDpbFlag [i] é igual a 0 a PicOrderCntVal de cada imagem que está no DPB e tem nuh_layer_id igual a i é decrementada em DeltaPocVal.
[0081] O codificador de vídeo 20 e decodificador de vídeo 30 podem codificar respectivamente uma indicação incluída no PPS para controlar a presença de informações de reinicialização de POC em cabeçalhos de segmento de fatia para fatias de imagens que correspondem ao PPS. Por exemplo, o PPS pode incluir um elemento de sintaxe slice_segment_header_extension_present_flag. as informações de reinicialização de POC podem estar presente em fatias de imagens que correspondem ao PPS sob a condição de que slice_segment_header_extension_present_flag seja igual a 1. Em geral, pode ser dito que uma imagem corresponde a um PPS quando uma fatia da imagem inclui um elemento de sintaxe identificador de PPS que tem um valor igual ao valor para um identificador do PPS.
[0082] A tabela seguinte apresenta um exemplo de sintaxe para o PPS. Este exemplo representa uma sintaxe modificada para o PPS para executar as técnicas desta revelação. Um objeto acrescentado relativo à MV-HEVC é mostrado em itálico na tabela e na semântica para elementos de sintaxe do PPS. Por conseguinte, o codificador de vídeo 20 e decodificador de vídeo 30 podem codificar respectivamente PPSs acordo com a sintaxe e a semântica seguintes:
Figure img0002
[0083] pps_extension_flag igual a 0 especifica que nenhum elemento de sintaxe pps_extension_data_flag está presente na estrutura de sintaxe RBSP PPS. Quando slice_segment_header_extension_present_flag é igual a 0, pps_extension_flag será igual a 0 em fluxos de bits que se conformam a esta versão desta Especificação, o valor de 1 para pps_extension_flag é reservado para utilização futura pelo ITU-T|ISO/IEC, e os decodificadores ignorarão todos os dados que se seguem ao valor 1 para pps_extension_flag em uma unidade NAL PPS.
[0084] poc_reset_info_present_flag igual a 0 especifica que o elemento de sintaxe poc_reset_idc não está presente nos cabeçalhos de segmento de fatia da fatia referente ao PPS. poc_reset_info_present_flag igual a 1 especifica que o elemento de sintaxe poc_reset_idc está presente nos cabeçalhos de segmento de fatia da fatia referente ao PPS.
[0085] pps_extension2_flag igual a 0 especifica que nenhum elemento de sintaxe pps_extension_data_flag esta presente na estrutura de sintaxe RBSP PPS. pps_extension2_flag será igual a 0 em fluxos de bits que se conformam a esta versão desta Especificação. O valor de 1 para pps_extension2_flag é reservado para utilização futura pela ITU-T|ISO/IEC. Os Decodificadores ignorarão todos os dados que se seguem ao valor 1 para pps_extension2_flag em uma unidade NAL PPS.
[0086] A seguinte definição de uma função matemática pode ser adicionada à MV HEVC, como por exemplo, ao subparágrafo 5.8 da MV-HEVC:
Figure img0003
[0087] o decodificador de vídeo 30 pode executar o seguinte processo de decodificação para valores de POC. Este processo pode ser descrito em uma versão modificada da MV-HEVC ou outra extensão de um padrão de codificação de vídeo. São mostradas em seguida alterações relativas à MV-HEVC, onde o texto em itálico representa acréscimos e supressões são mostrados utilizando-se [removidos: ""].
[0088] A saída desse processo é PicOrderCntVal, a contagem de ordens de imagem da imagem atual. Os totais de ordens de imagem são utilizados para identificar imagens, para derivar parâmetros de movimento no modo de fusão e predição de vetores de movimento, e para verificação da conformação dos decodificadores (ver subparágrafo C.5 da MV-HEVC). Cada imagem codificada está associada a uma variável de contagem de ordens de imagem, denotada como PicurderCntVal.
[0089] [removido: “if FirstPicInLayerDecodedFlag” [nuh_layer_id] for igual a 0 ou a imagem atual for uma imagem IRAP com NoRaslOutputFlag igual a 1, a variável PicOrderCntMsb é fixada como igual a 0. [Ed (MH): Quando a primeira imagem em uma camada de aperfeiçoamento está em uma unidade de acesso que se segue em ordem de decodificação e precede em ordem de saída uma unidade de acesso IRAP inicial com NoClrasOutputFlag igual a 1, PicOrderCntVal da primeira imagem na camada de aperfeiçoamento difere do PicOrderCntVal da imagem de camada base na mesma unidade de acesso.] [Ed (MH): Esta derivação de PicOrderCntMsb igual a 0 impõe a restrição de que a partida em termos de camada até a camada mais elevada deve ocorrer dentro de uma faixa de POC de 0 a MaxPicOrder LSB - 1, inclusive.] Caso contrário, PicOrderCntMsb é derivado da maneira seguinte: A variável prevPicOrderCntLsb é fixada como igual a prevPicOrderCnt[nuh_layer_id] & (MaxPicOrderCntLsb-1). A variável prevPicOrderCntMsb é fixada como igual a prevPicOrderCnt[nuh_layer_id] - prevPicOrderCntLsb. PicOrderCntMsb é derivado da maneira seguinte: if( (slice_pic_order_cnt_lsb < prevPicOrderCntLsb ) && (( prevPicOrderCntLsb - slice pic order cnt Isb ) >= ( MaxPicOrderCntLsb / 2 ) ) ) PicOrderCntMsb = prevPicOrderCntMsb + MaxPicOrderCntLsb (F-23) else if( (slice_pic_order_cnt_lsb > prevPicOrderCntLsb ) && ( (slice_pic_order_cnt_lsb - prevPicOrderCntLsb ) > ( MaxPicOrderCntLsb / 2 ))) PicOrderCntMsb = prevPicOrderCntMsb - MaxPicOrderCntLsb cise PicOrderCntMsb = prevPicOrderCntMsb PicOrderCntVal é derivado da maneira seguinte: PicOrdcrCntVal = PicOrderCntMsb + slice pic order cnt Isb (F-24) Quando poc_reset_flag é igual a 1, as etapas seguintes se aplicam na ordem enumerada: O PicOrderCntVal de cada imagem que está no DPB e pertence à mesma camada da imagem atual é decrementado em PicOrderCntVal. PrevPicOrderCnt[nuh_layer_id] é decrementado em PicOrderCntVal. PicOrderCntVal fixado como igual a 0. Quando a imagem atual não é uma imagem RASL, uma imagem RADL ou uma imagem de não-referência de sub-camada, e a imagem atual tem TemporalId igual a 0, [“PrevPicOrderCnt[nuh_layer_id] é fixado como igual a PicOrderCntVal”].
[0090] Se FirstPicInLayerDecodedFlag[nuh_layer_id] for igual a 1, poc_reset_idc é maior que 0, e a imagem atual é a primeira imagem, em ordem de decodificação em um período de reinicialização de POC, é aplicável o seguinte: (alternativamente, este elemento pode ser escrito como: Se FirstPicInLayerDecodedFlag[nuh_layer_id] for igual a 1 e, poc_reset_idc for maior do que 0, ou, FirstPicInLayerDecodedFlag[nuh_layer_id] for igual a 1 e poc_reset_idc for igual a 3 e a imagem atual estiver contida na primeira unidade de acesso de imagem, em ordem de decodificação em um período de reinicialização de POC e não houver imagem com poc_reset_idc igual a 1 ou 2, nesse período de reinicialização de POC, o seguinte se aplica): As variáveis pocMsbDelta e pocLsbDelta são derivadas da maneira seguinte: prevPicOrderCntLsb = PrevPicOrderCnt[ nuh_layer_id] & ( MaxPicOrderCntLsb - 1) prevPicOrderCntMsb = PrevPicOrderCnt[ nuh JayerJd] - prevPic OrderCntLsb if( pocresetidc == 3) pocLsbVal = poc_lsb_val else pocLsbVal = slice_pic order entJsb pocMsbDelta = getCurrMsb( pocLsbVal, prevPicOrderCntLsb, prevPicOrderCntMsb, MaxPicOrderCntLsb ) if(poc reset idc = = 2 | | (poc reset idc == 3 && full_poc_resetJlag ) ) pocLsbDelta = pocLsbVal else pocLsbDelta = 0 O PicOrderCntVal de cada imagem que está no DPB e pertence à mesma camada que o quadro atual é decrementado em pocMsbDelta + pocLsbDelta. Em alguns exemplos, as três etapas seguintes podem ser adicionalmente executadas: PocResetFlag = 1 DeltaPocVal = pocMsbDelta + pocLsbDelta UpdateSubDpbFlag[nuh_layer_id] = 1 O PicOrderCntVal da imagem atual é derivado da maneira seguinte: if(poc reset ide = = 1) PicOrderCntVal = slice_pic order entIsb else if(poc reset ide = = 2) PicOrderCntVal - 0 else {//poc reset ide = = 3 PicOrderCntMsb = getCurrMsb(slice_pic order_cnt_lsb, poc Isb val, 0, MaxPicOrderCntLsb) PicOrderCntVal = PicOrderCntMsb + slice_pic order ent Isb O valor de PrevPicOrderCnt [nuh_layer_id] é derivado da maneira seguinte: Se a imagem atual não for uma imagem RASL, uma imagem RADL, ou uma imagem de não-referência de sub-camada, e a imagem atual tiver TemporalId igual a 0, PrevPicOrderCnt [nuh_layer_id] é fixado como igual a PicOrderCntVal. Caso contrário, quando poc_reset_idc é igual a 3, PrevPicOrderCnt [nuh_layer_id] está fixado como igual a full_poc_reset_flag ? 0: poc_lsb_val.
[0091] Caso contrário, o seguinte se aplica: O PicOrderCntVal da imagem atual é derivado da maneira seguinte: if( !FirstPicInLayerDecodedFlag[ nuh_layer_id ] ) { if( poc_reset_idc = = 1 ) PicOrderCntVal = slice_pic_order_cnt_lsb else if( poc_reset_idc = = 2 ) PicOrderCntVal = 0 else if( poc_reset_idc = = 3 ) { PicOrderCntMsb = getCurrMsb(slice_pic_order_cnt_lsb, poc_lsb_val, 0, MaxPicOrderCntLsb) PicOrderCntVal = PicOrderCntMsb + slice_pic_order_cnt_lsb } else // the current picture is an IRAP picture with NoRaslOutputFlag equal to 1 PicOrderCntVal = slice_pic_order_cnt_lsb } else { // the POC derivation as in HEVC version 1 if( the current picture is an IRAP picture with NoRaslOutputFlag equal to 1 ) PicOrderCntMsb = 0 else { prevPicOrderCntLsb = PrevPicOrderCnt[ nuh_layer_id ] & ( MaxPicOrderCntLsb - 1 ) prevPicOrderCntMsb = PrevPicOrderCnt[ nuh_layer_id ] - prevPicOrderCntLsb PicOrderCntMsb = getCurrMsb( slice_pic_order_cnt_lsb, prevPicOrderCntLsb, prevPicOrderCntMsb, MaxPicOrderCntLsb ) } PicOrderCntVal = PicOrderCntMsb + slice_pic_order_cnt_lsb } O valor de PrevPicOrderCnt [nuh_layer_id} é derivado da maneira seguinte: - Se a imagem atual não for uma imagem RASL, uma imagem RADL, ou uma imagem de não-referência de sub-camada, e a imagem atual tiver TemporalId igual a 0, PrevPicOrderCnt [nuh_layer_id] é fixada como igual a PicOrderCntVal. - Caso contrário, quando FirstPicInLayerDecodedFlag [nuh_layer_id] é igual a 0 e poc_reset_idc é igual a 3, PrevPicOrderCnt [nuh_layer_id] é fixada como igual a full_poc_reset_flag? 0: poc_lsb_val.
[0092] De acordo com a MV-HEVC, o valor de PicOrderCntVal estará na faixa de -231 A 231 - 1, inclusive. Da mesma maneira, de acordo com a MV-HEVC, em um CVS, os valores de PicOrderCntVal para quaisquer duas imagens codificadas na mesma camada não serão os mesmos.
[0093] A função PicOrderCnt (picX) é especificada da maneira seguinte: PicOrderCnt (picX) = PicOrderCntVal da imagem picX (F-25)
[0094] A função DiffPicOrderCnt (picA, picB) é especificada da maneira seguinte: DiffPicOrderCnt (picA, picB) = PicOrderCnt (PicA)-PicOrderCnt(picB) (F-26)
[0095] De acordo com a MV-HEVC, o fluxo de bits não conterá dados que resultem em valores de DiffPicOrderCnt (picA, picB) utilizados no processo de decodificação que não estão na faixa de -215 a 215 - 1, inclusive.
[0096] OBSERVAÇÃO - Que X seja a imagem atual e Y e Z sejam duas outras imagens na mesma sequência, Y e Z são considerados como estando na mesma direção de ordem de saída de X quando tanto DiffPicOrderCnt (X, Y) quanto DiffPicOrderCnt ( X, Z) são positivos ou ambos são negativos.
[0097] De acordo com a MV-HEVC, as mensagens SEI seguintes têm um alcance de persistência dependente de POC: • Mensagem SEI de ponto de recuperação • Mensagem SEI de inicio de segmento de refinamento progressivo.
[0098] Em alguns exemplos, o final do alcance de persistência de tal mensagem SEI pode ser também restrito a ser anterior à imagem seguinte, em ordem de decodificação que está na mesma camada da imagem associada à mensagem SEI e que atualiza os valores de contagem de ordens de imagem das imagens no DPB. Alternativamente, é proposto restringir também o final do alcance de persistência de tal mensagem SEI de modo a ser anterior à imagem seguinte, em ordem de decodificação, que está na mesma camada da imagem associada a mensagem SEI, que tem poc_msb_reset_flag igual a 1, e para qual a imagem anterior, em ordem de decodificação na mesma camada tem poc_msb_reset_flag igual a 0. Neste caso, pode se adicionar também uma restrição de modo que, quando poc_msb_reset_flag é fixado em 1 para um conjunto de imagens depois de uma imagem picA na qual a reinicialização de MSB de POC é realmente necessária, o conjunto de imagens deve ser imediatamente posterior à PicA em ordem de decodificação e deve ser contígua em ordem de decodificação.
[0099] Uma CU-folha que tem uma ou mais PUs pode incluir também uma ou mais unidades de transformada (TUs). As unidades de transformada podem ser especificadas utilizando-se uma RQT (também referida como estrutura de transformação quadtree de TU), conforme discutido acima. Por exemplo, um indicador de divisão pode indicar se uma CU-folha está dividida em quatro unidades de transformada. Em seguida, cada unidade de transformada pode ser dividida adicionalmente em outras sub-TUs. Quando uma TU não é dividida adicionalmente, ela pode ser referida como TU- folha. Geralmente, para intra-codificação, todas as TUs- folha pertencentes a uma CU-folha compartilham o mesmo modo de intra-predição. Ou seja, o mesmo modo de intra-predição é geralmente aplicado para calcular os valores preditos para todas as TUs de uma CU-folha. Para intra-codificação, um codificador de vídeo pode calcular um valor residual para cada TU-folha utilizando o modo de intra-predição, como a diferença entre a parte da CU que corresponde à TU e o bloco original. Uma TU não está necessariamente limitada ao tamanho de uma PU. Assim, as TUs podem ser maiores ou menores que uma PU. Para intra-codificação, uma PU pode ser co-localizada com uma TU-folha correspondente para a mesma CU. Em alguns exemplos, o tamanho máximo de uma TU-folha pode corresponder ao tamanho da CU-folha correspondente.
[0100] Além do mais, as TUs de CUs-folha podem estar também associadas a respectivas estruturas de dados de transformação quadtree, referidas como transformações quadtree residuais (RQTs). Ou seja, uma CU-folha pode incluir uma transformação quadtree que indica como a CU- folha é particionada em TUs. O nó-raiz de uma transformação quadtree de TU corresponde geralmente a uma CU-folha, enquanto o nó-raiz de uma transformação quadtree de CU corresponde geralmente a um bloco de árvore (ou LCU). As TUs da RQT que não são divididas são referidas como TUs- folha. Em geral, esta revelação utiliza os termos CU e TU para referir-se à CU-folha e à TU-folha, respectivamente, a menos que observado de outra maneira.
[0101] Uma sequência de vídeo inclui tipicamente uma série de quadros ou imagens de vídeo. Um grupo de imagens (GOP) compreende geralmente uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe no cabeçalho do GOP, um cabeçalho de uma ou mais das imagens, ou em um outro lugar, que descreve o número de imagens incluídas no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo codificação para respectiva fatia. O codificador de vídeo 20 funciona tipicamente em blocos de vídeo dentro de fatias de vídeo individuais de modo a codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis e podem diferir em tamanho de acordo com o padrão de codificação especificada.
[0102] Como exemplo, o HM suporta predição em diversos tamanho de PU. Supondo-se que o tamanho de uma CU específica seja 2Nx2N, o HM suporta intra-predição em tamanhos de PU de 2Nx2N ou NxN e inter-predição em tamanhos de PU simétricos de 2Nx2N, 2NxN, Nx2N ou NxN. O HM suporta também particionamento assimétrico para inter-predição em tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. No particionamento assimétrico uma direção de uma CU não é particionada, enquanto a outra direção é particionada em 25% e 75%. A parte da CU que corresponde à partição de 25% é indicada por um “N” seguido de uma indicação de “Para Cima”, “Para Baixo”, “Esquerda” ou “Direita”. Assim, por exemplo “2NxnU” refere-se a uma CU de 2Nx2N que é particionada em sentido horizontal com uma PU de 2Nx0,5N no topo e uma PU de 2Nx1,5N na base.
[0103] Nesta revelação, “NxN” e “N por N” podem ser utilizados de maneira intercambiável para referir-se às dimensões de pixel de um bloco de vídeo em termos de dimensões verticais e horizontais, como, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16x16 terá 16 pixels na direção vertical (Y = 16) e, da mesma maneira, 16 pixels na direção horizontal (x = 16). Da mesma maneira, um bloco NxN tem geralmente N pixels na direção vertical e N pixels na direção horizontal, onde N representa um valor de número inteiro não negativo. Os pixels em um bloco podem ser dispostos em fileiras e colunas. Além do mais, os blocos não precisam ter necessariamente o mesmo número de pixels na direção horizontal como na direção vertical. Por exemplo, os blocos podem compreender NxM pixels, onde M não é necessariamente igual a N.
[0104] Após a codificação intra-preditiva ou inter-preditiva utilizando-se as PUs de uma CU, o codificador de vídeo 20 pode calcular dados residuais para as TUs da CU. As PUs podem compreender dados de sintaxe que descrevem um método ou modo para gerar dados de pixels preditivos no domínio espacial (também referido como domínio de pixel) e as TUs podem compreender coeficientes no domínio de transformada após a aplicação de uma transformada, como, por exemplo, uma transformada de senoidal discreta (DST), uma transformada de co-seno discreta (DCT), uma transformada de número inteiro, uma transformada de wavelet ou uma transformada conceptualmente semelhante a dados de vídeo residuais. Os dados residuais podem corresponder a diferenças de pixel entre os pixels da imagem não codificada e valores de predição que correspondem às PUs. O codificador de vídeo 20 pode formar as TUs incluindo os dados residuais para a CU e em seguida transformar as TUs de modo a se produzirem coeficientes de transformada para a CU.
[0105] Após quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode efetuar a quantificação dos coeficientes de transformada. A quantificação refere-se geralmente a um processo no qual coeficientes de transformada são quantizados de modo a se reduzir possivelmente a quantidade de dados utilizados para representar os coeficientes, obtendo-se compactação adicional. O processo de quantificação pode reduzir a profundidade de bit associada a alguns ou a todos os coeficientes. Por exemplo, um valor de n bits pode ser arredondado para menos até um valor de m bits durante a quantificação onde n é maior que m.
[0106] Em seguida à quantificação, o codificador de vídeo pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional que inclui os coeficientes de transformada quantizados. A varredura pode ser projetada para colocar coeficientes de energia mais elevada (e, portanto, frequência mais baixa) na frente do arranjo e colocar coeficientes de energia mais baixa (e, portanto, de frequência mais elevada) na parte detrás do arranjo. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura pré-definida para varrer os coeficientes de transformada quantizados de modo a se produzir um vetor serializado que pode ser codificado por entropia. Em outros exemplos, o codificador de vídeo 20 pode efetuar uma varredura adaptativa. Depois de varrer os coeficientes de transformada quantizados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar por entropia o vetor unidimensional, como, por exemplo, de acordo com a codificação de comprimento variável adaptativa ao contexto (CAVLC), a Codificação Aritmética Binária Adaptativa ao Contexto (CABAC), a Codificação Aritmética Binária Adaptativa ao Contexto baseada em Sintaxe (SBAC), a codificação por Entropia com Particionamento em Intervalos de Probabilidade (PIPE) ou outra metodologia de codificação por entropia. O codificador de vídeo 20 pode codificar por entropia também elementos de sintaxe associados aos dados de vídeo codificados para utilização pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[0107] Para efetuar CABAC, o codificador de vídeo 20 pode atribuir um contexto dentro de um modelo de contexto a um símbolo a ser transmitido. O contexto pode referir-se a se os valores vizinhos do símbolo são não zero ou não. Para efetuar CAVLC o codificador de vídeo 20 pode selecionar um código de comprimento variável para um símbolo a ser transmitido. As palavras de código na VLC podem ser construídas de modo que códigos relativamente mais curtos correspondam a símbolos mais prováveis, enquanto códigos mais compridos correspondem a símbolos menos prováveis. Desta maneira, a utilização da VLC pode obter uma economia de bits comparada, por exemplo, com a utilização de palavras de código de comprimento igual para cada símbolo a ser transmitido. A determinação de probabilidade pode ser baseada no contexto atribuído ao símbolo.
[0108] O codificador de vídeo 20 pode também enviar dados de sintaxe, tais como dados de sintaxe baseados em blocos, dados de sintaxe baseados em quadros, e dados de sintaxe baseados em GOP, ao decodificador de vídeo 30, como, por exemplo, em um cabeçalho de quadro, um cabeçalho de bloco, um cabeçalho de fatia ou um cabeçalho de GOP. Os dados de sintaxe de GOP podem descrever um número de quadro no respectivo GOP e os dados de sintaxe de quadro podem indicar um modo de codificação/predição utilizado para codificar o quadro correspondente.
[0109] O codificador de vídeo 20 e o decodificador de vídeo 30 podem ser, cada um, implementados como qualquer um de diversos circuitos de codificador adequados, conforme aplicável tais como um ou mais microprocessadores, processadores de sinais digitais (DSPs), circuitos integrados específicos de aplicativo (ASICs), arranjos de portas programáveis no campo (FPGAs), circuitos de lógica discreta, software, hardware, firmware ou quaisquer combinações deles. Cada um do codificador de vídeo 20 e do decodificador de vídeo 30 podem ser incluídos em um ou mais codificadores ou decodificadores, ambos os quais podem ser integrados como parte de um codificador/decodificador (CODEC) combinado. Um aparelho que inclui o codificador de vídeo 20 e/ou o decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador e/ou um aparelho de comunicação sem fio, tal como um telefone celular.
[0110] Desta maneira, o codificador de vídeo 20 e o decodificador de vídeo 30 representam respectivamente exemplos de codificadores de vídeo configurados para codificar dados que representam um valor para um identificador de período de reinicialização de contagem de ordens de imagem (POC), em que os dados estão associados a uma imagem codificada de uma camada de dados de vídeo, e em que o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada e pelo menos parte de um valor de POC para a imagem codificada e valores de POC para uma ou mais imagens na camada que estão atualmente armazenadas em um buffer de imagens decodificadas (DPB) do decodificador de vídeo.
[0111] A Figura 2 é um diagrama de blocos que mostra um exemplo de codificador de vídeo 20 que pode implementar técnicas para codificar informações de valor de POC de acordo com as técnicas desta revelação. O codificador de vídeo 20 pode efetuar intra- e inter- codificação de blocos de vídeo dentro de fatias de vídeo. A intra-codificação conta com predição espacial para reduzir ou remover a redundância espacial em vídeo dentro de um dado quadro ou imagem de vídeo. A inter-codificação conta com a predição temporal para reduzir ou remover a redundância temporal em vídeo dentro de quadros ou imagens adjacentes ou imagens adjacentes de uma sequência de vídeo. O modo intra (modo I) pode referir-se a qualquer um de vários modos de codificação espacial. Os modos inter, tais como a predição unidirecional (modo P) ou a bi-predição (modo B) pode referir-se a qualquer um de vários modos de codificação temporal.
[0112] Conforme mostrado na Figura 2, o codificador de vídeo 20 recebe o bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da Figura 2, o codificador de vídeo 20 inclui uma unidade de seleção de modo 40, uma memória de quadros de referência 64, um somador 50, uma unidade de processamento de transformadas 52, uma unidade de quantização 54 e uma unidade de codificação por entropia 56. A unidade de seleção de modo 40, por sua vez, inclui uma unidade de compensação de movimento 44, uma unidade de estimação de movimento 42, uma unidade de intra-predição 46, uma unidade de predição inter-camada 66 e uma unidade de partição 48. Para reconstrução de blocos de vídeo, o codificador de vídeo 20 inclui também uma unidade de quantização inversa 58, uma unidade de transformada inversa 60 e um somador 62. Um filtro de desbloqueio (não mostrado na Figura 2) pode ser também incluído para filtrar limites entre blocos com a finalidade de remover artefatos de bloqueio de vídeos reconstruído. Se desejado, o filtro de desbloqueio filtraria tipicamente a saída do somador 62. Filtros adicionais (na malha ou pós-malha) podem ser também utilizados além do filtro de desbloqueio. Tais filtros não são mostrados por razões de concisão, mas, se desejado, podem filtrar a saída do somador 50, (como um filtro na malha).
[0113] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro ou fatia de vídeo a ser codificada. O quadro ou fatia pode ser dividida em vários blocos de vídeo. A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 efetuam a codificação inter-preditiva do bloco de vídeo recebido com relação a um ou mais blocos em um ou mais quadros de referência de modo a se obter predição temporal. A unidade de intra-predição 46 pode efetuar alternativamente a codificação intra-preditiva do bloco de vídeo recebido com relação a um ou mais blocos vizinhos no mesmo quadro ou fatia do bloco a ser codificado de modo a se obter predição espacial. O codificador de vídeo 20 pode executar várias passagens de codificação, como, por exemplo, para selecionar o modo de codificação apropriado para cada bloco de dados de vídeo.
[0114] Além do mais, a unidade de partição 48 pode particionar blocos de dados de vídeo em sub-blocos, com base na avaliação de esquemas de particionamento anteriores em passagens de codificação anteriores. Por exemplo, a unidade de partição 48 pode particionar inicialmente um quadro ou fatia em LCUs e particionar cada uma das LCUs em sub-CUs com base na análise de distorção de taxa (como, por exemplo, otimização de distorção de taxa). A unidade de seleção de modo 40 pode produzir também uma estrutura de dados de transformação quadtree que indica o particionamento de uma LCU em sub-CUs. As CUs de nó-folha da transformação quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[0115] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, os modos de intra- codificação, de inter-codificação ou de predição inter- camada, com base, por exemplo, em resultados de erro e enviar o bloco intra-codificado, inter-codificado resultante ao somador 50 de modo a gerar dados de bloco residuais e ao somador 62 de modo a reconstruir o bloco codificado para utilização como um quadro de referência. A unidade de seleção de modo 40 envia também elementos de sintaxe, tais como vetores de movimento, indicadores intra- modais, informações de partição e outras informações de sintaxe que tais, à unidade de codificação por entropia 56.
[0116] A unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são mostradas separadamente para fins conceptuais. A estimação de movimento efetuada pela unidade de estimação de movimento 42 é o processo de gerar vetores de movimento, que estimam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de uma PU de um bloco de vídeo dentro do quadro ou imagem de vídeo atual com relação a um bloco preditivo dentro de um quadro de referência (ou outra unidade codificada) com relação ao bloco atual que é codificado dentro do quadro atual (ou outra unidade codificada). Um bloco preditivo é um bloco que se verifica corresponder intimamente ao bloco a ser codificado, em termos de diferença de pixel, que pode ser determinada pela soma da diferença absoluta (SAD), pela soma da diferença ao quadrado (SSD) ou por outras métricas de diferença.
[0117] A unidade de estimação de movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia inter-codificada comparando a posição da PU com a posição de um bloco preditivo de uma imagem de referência. A imagem de referência pode ser selecionada de uma primeira lista de imagens de referência (Lista 0) ou de uma segunda lista de imagens de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na memória de imagens de referência 64. A unidade de estimação de movimento 42 envia o vetor de movimento calculado à unidade de codificação por entropia 56 e à unidade de compensação de movimento 44.
[0118] A compensação de movimento efetuada pela unidade de compensação de movimento 44 pode envolver a busca ou geração do bloco preditivo com base no vetor de movimento determinado pela unidade de estimação de movimento 42. Mais uma vez, a unidade de estimação de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Ao receber o vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco que o vetor de movimento indica em uma das listas de imagens de referência. O somador 50 forma um bloco de vídeo residual subtraindo os valores de pixel do bloco preditivo dos valores de pixel do vídeo atual que é codificado, formando valores de diferença de pixel, conforme discutido em seguida. Em geral, a unidade de estimação de movimento 42 efetua estimação de movimento com relação a componentes luma, e a unidade de compensação de movimento 44 utiliza vetores de movimento calculados com base nos componentes luma tanto para componentes croma quanto para componentes luma. A unidade de seleção de modo 40 pode também gerar elementos de sintaxe associados aos blocos de vídeo e à fatia de vídeo para utilização delo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[0119] A unidade de estimação de movimento 42 busca imagens de referência armazenadas em um buffer de imagens decodificadas (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 serão utilizadas para codificar uma imagem, fatia de imagem e/ou uma sequência de imagens. O codificador de vídeo 20 pode codificar valores de contagem de ordens de imagem (POC) para imagens de referência utilizadas para codificar a imagem, fatia ou sequência. O codificador de vídeo 20 pode codificar os valores de POC que indicam as imagens de referência a serem incluídas na lista de imagens de referência em cabeçalhos de fatia e/ou em conjuntos de parâmetros, tais como conjuntos de parâmetros de imagem (PPSs) e/ou conjuntos de parâmetros de sequência (SPSs).
[0120] Desta maneira, 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 ou conjuntos de parâmetros. Além disto, depois de codificar um bloco utilizando o vetor de movimento produzido pela unidade de estimação de movimento 42, o codificador de vídeo 20 pode codificar informações de movimento para o bloco, onde as informações de movimento podem incluir dados que representam o 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.
[0121] Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para posições de sub-pixel de número inteiro de imagens de referência armazenadas na memória de imagens de referência 64. Por exemplo, o codificador de vídeo 20 pode interpolar valores de posições de um quarto de pixel, posições de um oitavo de pixel ou outras posições de pixel fracionárias da imagem de referência. Portanto, a unidade de estimação de movimento 42 pode efetuar uma busca de movimento com relação às posições de pixel completas e as posições de pixel fracionárias e transmitir um vetor de movimento com precisão de pixel fracionária.
[0122] De acordo com as técnicas desta revelação, o codificador de vídeo 20 pode também formar períodos de reinicialização de POC e codificar valores para identificadores de período de reinicialização de POC para fatias de imagens de modo a atribuir as fatias a respectivos períodos de reinicialização de POC. O codificador de vídeo 20 pode atribuir fatias a períodos de reinicialização de POC individualmente dentro de cada camada de dados de vídeo. Além do mais, o codificador de vídeo 20 pode determinar tipos de reinicialização de POC para as fatias e codificar valores para indicações (valores de dois bits, por exemplo) dos tipos de reinicialização de POC para as fatias.
[0123] Conforme discutido com relação à Figura 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 assegurar que a primeira imagem em cada período de reinicialização de POC tenha um tipo de reinicialização de POC que indica que os valores de POC serão completa ou parcialmente reinicializados. Além disto, o codificador de vídeo 20 pode codificar informações adicionais que indicam um valor de LSB de POC em alguns exemplos, e pode indicar um valor de LSB de POC para uma imagem de âncora de POC do período de reinicialização de POC.
[0124] o codificador de vídeo 20 pode também decrementar valores de POC de imagens de referência no DPB da memória de imagens de referência 64 e na mesma camada da imagem de âncora de POC de fatia, com base na reinicialização da imagem de âncora de POC. Assim, o codificador de vídeo 20 pode utilizar os valores de POC decrementados quando codifica valores de POC em cabeçalhos de fatia e/ou em conjuntos de parâmetros de modo a indicar imagens de referência a serem incluídas em uma lista de imagens de referência. O grau pelo qual o codificador de vídeo 20 decrementa os valores de POC de imagens no DPB pode ser o mesmo grau pelo qual a imagem de âncora de POC é decrementada. A reinicialização de POC da imagem de âncora de POC pode ser limitada a apenas à reinicialização dos MSB de POC ou à reinicialização do valor de POC completo da imagem de âncora de POC.
[0125] Antes de codificar as informações de reinicialização de POC para uma fatia, o codificador de vídeo 20 pode determinar se as informações de reinicialização de POC são necessárias para a fatia. Por exemplo, se uma imagem que inclui a fatia for uma imagem I, o codificador de vídeo 20 pode determinar que as informações de reinicialização de POC não são necessárias. Se for determinado que as informações de reinicialização de POC não são necessárias, o codificador de vídeo 20 pode evitar a codificação das informações de reinicialização de POC. Além disto, o codificador de vídeo 20 pode codificar um PPS para imagem que indica se as informações de reinicialização de POC são codificadas em cabeçalhos de segmento de fatia de fatias incluídas na imagem, com base na determinação.
[0126] A unidade de intra-predição 46 pode intra-predizer o bloco atual, como uma alternativa à inter- predição efetuada pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44, conforme descrito acima. Em particular, a unidade de intra-predição 46 pode determinar um modo de intra-predição a ser utilizado para codificar o bloco atual. Em alguns exemplos, a unidade de intra-predição 46 pode codificar o bloco atual utilizando diversos modos de intra-predição, como, por exemplo, durante passagens de codificação separadas, e a unidade de intra-predição 46 (ou a unidade de seleção de modo 40 em alguns exemplos) pode selecionar um modo de intra-predição apropriado a ser utilizado a partir dos modos testados.
[0127] Por exemplo, a unidade de intra- predição 46 pode calcular valores de distorção de taxa utilizando uma análise de distorção de taxa para os diversos modos de intra-predição testados e selecionar o modo de intra-predição que tem as melhores características de distorção de taxa entre os modos testados. A análise de distorção de taxa determina geralmente o grau de distorção (ou erro) entre um bloco codificado e um bloco codificado original que foi codificado de modo a se produzir o bloco codificado, bem como uma taxa de bits (isto é, o número de bits) utilizada para produzir o bloco codificado. A unidade de intra-predição 46 pode calcular razões a partir das distorções e taxas para os diversos blocos codificados de modo a determinar qual modo de intra-predição apresenta o melhor valor de distorção de taxa para o bloco.
[0128] Depois de selecionar um modo de intra- predição para um bloco, a unidade de intra-predição 46 pode enviar informações que indicam o modo de intra-predição selecionado para o bloco à unidade de codificação por entropia 56. A unidade de codificação por entropia 56 pode codificar as informações que indicam um modo de intra- predição selecionado. O codificador de vídeo 20 pode incluir no fluxo de bits transmitido dados de configuração, que podem incluir uma série de tabelas de índices de modo de intra-predição e uma série de tabelas de índices de modo de intra-predição modificadas (também referidas como tabelas de mapeamento em palavras de código), definições de contexto de codificação para diversos blocos e indicações do modo de intra-predição mais provável, uma tabela de índices de modo de intra-predição e uma tabela de índices de modo de intra-predição modificada a ser utilizada para cada um dos contextos.
[0129] O codificador de vídeo 20 forma um bloco de vídeo residual subtraindo os dados de predição da unidade de seleção de modo 40 do bloco de vídeo original que é codificado. O somador 50 representa o componente ou componentes que executam esta operação de subtração. A unidade de processamento de transformadas 52 aplica uma transformada, tal como uma transformada de co-seno discreta (DCT) ou transformada conceptualmente semelhante, ao bloco residual, produzindo um bloco de vídeo que compreende valores de coeficiente de transformada residuais. A unidade de processamento de transformadas 52 pode executar outras transformadas que são conceptualmente semelhantes à DCT. Podem ser também utilizadas transformadas de wavelet, transformadas de número inteiro, transformadas de sub-banda ou outros tipos de transformada. Seja como for, a unidade de processamento de transformada 52 aplica a transformada ao bloco residual, produzindo um bloco de coeficientes de transformada residuais. A transformada pode converter as informações residuais do domínio de valor de pixel no domínio de transformada, tal como um domínio de frequência.
[0130] A unidade de processamento de transformadas 52 pode enviar os coeficientes de transformada resultantes à unidade de quantização 54. A unidade de quantização 54 quantifica os coeficientes de transformada de modo a reduzir também a taxa de bits. O processo de quantificação pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes. O grau de quantificação pode ser modificado pelo ajuste de um parâmetro de quantificação. Em alguns exemplos, a unidade de quantização 54 pode efetuar então uma varredura da matriz que inclui os coeficientes de transformada quantizados. Alternativamente, a unidade de codificação por entropia 56 pode efetuar a varredura.
[0131] Em seguida à quantificaçã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 efetuar codificação de comprimento variável adaptativa ao contexto (CAVLC), codificação aritmética binária adaptativa ao contexto (CABAC), codificação aritmética binária adaptativa ao contexto baseada em sintaxe (SBAC), codificação por entropia com particionamento de intervalos de probabilidade (PIPE) ou outra ou técnica de codificação por entropia. No caso de codificação por entropia baseada em contexto, o contexto pode ser baseado em blocos vizinhos. Em seguida à codificação por entropia pela unidade de codificação por entropia 56, o fluxo de bits codificado pode ser transmitido para outro aparelho (o decodificador de vídeo 30, por exemplo) ou arquivado para transmissão ou recuperação posterior.
[0132] A unidade de quantização inversa 58 e a unidade de transformadas inversa 60 podem aplicar quantificação inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel 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 pode aplicar também um ou mais filtros de interpolação ao bloco residual reconstruído de modo a calcular valores de sub-pixel de número inteiro para utilização na estimação de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado em movimento produzido pela unidade de compensação de movimento 44 de modo a se produzir um bloco de vídeo reconstruído para armazenamento na memória de imagens de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimação de movimento 42 e pela unidade de compensação de movimento 44 como um bloco de referência de modo a se inter-codificar um bloco em um quadro de vídeo subsequente.
[0133] Desta maneira, o codificador de vídeo 20 da Figura 2 representa um exemplo de codificador de vídeo configurado para codificar dados que representam um valor para um identificador de período de reinicialização de contagem de ordens de imagem (POC), em que os dados estão associados a uma imagem codificada de uma camada de dados de vídeo, e em que o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada e a reinicialização de pelo menos parte de um valor de POC para a imagem codificada e valores de POC para uma ou mais imagens na camada que estão atualmente armazenadas no buffer de imagens decodificadas (DPB) do decodificador de vídeo.
[0134] O codificador de vídeo 20 representa também um exemplo de codificador de vídeo configurado para construir uma lista de imagens de referência que inclui uma ou mais imagens de referência, codificar um bloco da fatia utilizando uma das imagens de referência, codificar informações de movimento para o bloco, em que as informações de movimento incluem um identificador da lista de imagens de referência e um índice de referência na lista de imagens de referência que corresponde a uma das imagens de referência, e codificar um ou mais valores de POC que representam as imagens de referência incluídas na lista de imagens de referência.
[0135] A Figura 3 é um diagrama de blocos que mostra um exemplo de decodificador de vídeo 30 que pode implementar técnicas para codificar informações de valor de POC de acordo com as técnicas desta revelação. No exemplo da Figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, uma unidade de compensação de movimento 72, uma unidade de intra-predição 74, uma unidade de quantização inversa 76, uma unidade de transformação inversa 78, uma memória de imagens de referência 82 e um somador 80. O decodificador de vídeo 30 pode, em alguns exemplos, executar uma passagem de decodificação geralmente complementar à passagem de codificação descrita com relação ao codificador de vídeo 20 (Figura 2). A unidade de compensação de movimento 72 pode gerar dados de predição com base 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 nos indicadores de modo de intra-predição recebidos da unidade de decodificação por entropia 70.
[0136] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um fluxo de bits de vídeo codificado que representa os blocos de vídeo de uma fatia de vídeo codificada e elementos de sintaxe conexos do codificador de vídeo 20. A unidade de decodificação por entropia 70 do decodificador de vídeo 30 decodifica por entropia o fluxo de bits de modo a gerar coeficientes quantizados, vetores de movimento e outros elementos de sintaxe. A unidade de decodificação por entropia 70 emite os vetores de movimento e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe ao nível de fatia de vídeo e/ou ao nível de bloco de vídeo.
[0137] 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 no modo de intra- predição sinalizado e em dados de blocos decodificados anteriormente do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia inter-codificada (isto é, B, P ou GPB), a unidade de compensação de movimento 72 produz blocos preditivos para um bloco de vídeo da fatia 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 preditivos podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagens de referência. O decodificador de vídeo 30 pode construir as listas de imagens de referência, Lista 0 e Lista 1, utilizando técnicas de construção pré- definidas baseadas nas imagens de referência armazenadas no buffer de imagens decodificadas (DPB) da memória de imagens de referência 82.
[0138] Mais especificamente, o decodificador de vídeo 30 pode decodificar um conjunto de parâmetros de imagem (PPS) que contem uma indicação que indica se as fatias de uma imagem que corresponde ao PPS incluem informações de reinicialização de contagem de ordens de imagem (POC). Supondo que as fatias incluem as informações de reinicialização de POC, o decodificador de vídeo 30 pode decodificar o cabeçalho de segmento de fatia de uma fatia da imagem que inclui as informações de reinicialização de POC. As informações de reinicialização de POC podem incluir um identificador de período de reinicialização de POC e um tipo de reinicialização de POC.
[0139] O identificador de período de reinicialização de POC pode indicar o período de reinicialização de POC ao qual a fatia corresponde. O decodificador de vídeo 30 pode reinicializar valores de POC de imagens em uma camada de codificação de vídeo correspondente uma vez por período de reinicialização de POC. Desta maneira, se todas as imagens do período de reinicialização de POC são recebidas de maneira apropriada ou algumas imagens do período de reinicialização de POC são perdidas (devido à corrupção de dados ou perda de dados, por exemplo), o decodificador de vídeo 30 reinicializará os valores de POC corretamente.
[0140] O tipo de reinicialização de POC pode indicar se o valor de POC de uma imagem que inclui a fatia é completamente reinicializado ou se apenas os MSB do valor de POC são reinicializados. Além disto, o tipo de reinicialização de POC pode indicar que nenhuma reinicialização de POC será efetuada ou que informações adicionais são sinalizadas. Se o tipo de reinicialização de POC indicar que informações adicionais são sinalizadas, o decodificador de vídeo 30 pode decodificar as informações adicionais, que podem indicar um valore de LSB de POC e se o valor de POC é completamente reinicializado ou apenas os MSB são reinicializados. Desta maneira,o decodificador de vídeo 30 pode efetuar uma reinicialização de POC com base no tipo de reinicialização de POC. O decodificador de vídeo 30 pode decrementar os valores de POC para imagens armazenadas no DPB e na mesma camada pelo valor de LSB de POC das informações adicionais.
[0141] depois de efetuar a reinicialização de POC, o decodificador de vídeo 30 pode decodificar valores de POC de imagens de referência a serem incluídas em uma lista de imagens de referência. O decodificador de vídeo 30 pode decodificar estes valores de 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 construir então uma lista de imagens de referência que inclui as imagens de referência identificadas pelos valores de POC decodificados.
[0142] Depois de construir a lista de imagens de referência para uma fatia o decodificador de vídeo 30 pode decodificar blocos da fatia. A unidade de compensação de movimento 72 determina informações de predição para um bloco de vídeo da fatia de vídeo atual efetuando parse nos vetores de movimento e em outros elementos de sintaxe, e utiliza as informações de predição para produzir os blocos preditivos para o bloco de vídeo atual que é decodificado. Por exemplo, a unidade de compensação de movimento 72 utiliza alguns dos elementos de sintaxe recebidos para determinar o modo de predição (intra- ou inter-predição, por exemplo) utilizado para codificar os blocos de vídeo da fatia de vídeo, o tipo de fatia de inter-predição (fatia B, fatia P ou fatia GPB, por exemplo), vetores de movimento para cada bloco de vídeo inter-codificado da fatia, a condição de intra-predição para cada bloco de vídeo inter- codificado da fatia e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual. As informações de movimento para um bloco inter-predito podem incluir um identificador de listas 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 a ser utilizada para predizer o bloco.
[0143] A unidade de compensação de movimento 72 pode também efetuar interpolação com base em filtros de interpolação. A unidade de compensação de movimento 72 pode utilizar os filtros de interpolação utilizados pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular valores interpolados para sub-pixels de número inteiro de blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e utilizar os filtros de interpolação para produzir blocos preditivos.
[0144] A unidade de quantização inversa 76 quantifica por inversão, isto é, desquantifica, os coeficientes de transformada quantizados apresentados no fluxo de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantificação inversa pode incluir a utilização de um parâmetro de quantificação QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo na fatia de vídeo de modo a se determinar o grau de quantificação e, da mesma maneira, o grau de quantificação inversa que deve ser aplicado.
[0145] A unidade de transformada inversa 78 aplica uma transformada inversa, como, por exemplo, uma DCT inversa, uma transformada de número inteiro inversa ou um processo de transformada inversa conceptualmente semelhante, aos coeficientes de transformada de modo a produzir blocos residuais no domínio de pixel.
[0146] Depois que a unidade de compensação de movimento 72 gera o bloco preditivo para o bloco de vídeo atual com base nos vetores de movimento e em outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado somando os blocos residuais da unidade de processamento de transformada inversa 78 com os blocos preditivos correspondentes gerados pela unidade de compensação de movimento 72. O somador 80 representa o componente ou componentes que executam esta operação de soma. Se desejado, um filtro desbloqueador pode ser também aplicado para filtrar os blocos decodificados de modo a remover os artefatos de bloqueio. Outros filtros de malha (ou na malha de codificação ou depois da malha de codificação) podem ser também utilizados para suavizar as transições entre pixels ou se não aperfeiçoar a qualidade de vídeo. Os blocos de vídeo decodificados em um dado quadro ou imagem são então armazenados na memória de imagens de referência 82, que armazena as imagens de referência utilizadas na compensação de movimento subsequente. A memória de imagens de referência 82 armazena também vídeo decodificado para apresentação posterior em um aparelho de exibição, tal como o aparelho de exibição 32 da Figura 1.
[0147] Desta maneira, o decodificador de vídeo 30 da Figura 3 representa um exemplo de decodificador de vídeo configurado para decodificar dados que representam um valor para um identificador de período de reinicialização de contagem de ordens de imagem (POC), em que os dados estão associado com uma imagem codificada de uma camada de dados de vídeo, e em que o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC, que inclui a imagem codificada e a reinicialização de pelo menos parte de um valor de POC para a imagem codificada e valores de POC para uma ou mais imagens na camada que estão atualmente armazenadas no buffer de imagens decodificadas (DPB) do decodificador de vídeo.
[0148] O decodificador de vídeo 30 representa também um exemplo de decodificador de vídeo configurado para decodificar um ou mais valores de POC que representam imagens de referência a serem incluídas em uma lista de imagem de referência, construir a lista de imagens de referência com base, pelo menos em parte, no valor ou valores POC decodificados, decodificar informações de movimento para um bloco da fatia, em que as informações de movimento incluem um identificador da lista de imagem de referência e um índice de referência na lista de imagens de referência, e decodificar o bloco utilizando uma das imagens de referência que correspondem ao índice de referência na lista de imagens de referência.
[0149] A Figura 4 é um fluxograma que mostra um método exemplar para codificar dados que indicam um período de reinicialização de POC para uma fatia de acordo com as técnicas desta revelação. Além disto, o método da Figura 4 inclui codificar o bloco atual. O bloco atual pode compreender a CU atual ou uma parte da CU atual. Embora descrito com relação ao codificador de vídeo 20 (Figuras 1 e 2), deve ficar entendido que outros aparelhos podem ser configurados para executar um método semelhante ao da Figura 4.
[0150] Neste exemplo, o codificador de vídeo 20 inicialmente reinicializa inicialmente valores de POC de imagens de referência que estão na mesma camada da fatia atual que inclui o bloco atual e que estão armazenadas atualmente em um buffer de imagens decodificadas (DPB) (150). O codificador de vídeo 20 forma então uma lista de imagens de referência que inclui pelo menos algumas das imagens de referência (152). O codificador de vídeo 20 também sinaliza valores de POC das imagens de referência incluídas na lista de imagens de referência (154). Por exemplo, o codificador de vídeo 20 pode codificar valores de POC (ou partes dos valores POC, como, por exemplo, valores de LSB de POC) para as imagens de referência em um conjunto de parâmetros, tal como um SPS ou PPS e/ou em um cabeçalho de fatia para a fatia. Algumas imagens de referência (imagens de referência de longo prazo, por exemplo) podem ser sinalizadas no conjunto de parâmetros, em que outras imagens de referência (imagens de referência de curto prazo, por exemplo) podem ser sinalizadas no cabeçalho da fatia.
[0151] Deve ficar entendido que as etapas da formação da lista de imagem de referência e da sinalização de quais imagens são incluídas na lista de imagens de referência podem ser executadas várias vezes através de várias passagens de codificação diferentes, de modo a se determinar o conjunto de imagens de referência que apresenta as melhores características de distorção de taxa para, por exemplo, blocos da fatia atual. Ou seja, o codificador de vídeo 20 pode selecionar o conjunto de imagens de referência incluídas na lista de imagens de referência com base nas características de todos os blocos na fatia atual, e não apenas com base nas características individuais de um único bloco.
[0152] O codificador de vídeo 20 pode atribuir então a fatia atual a um período de reinicialização de POC (156). Por exemplo, se a fatia atual fizer parte de uma imagem de âncora, o codificador de vídeo 20 pode sinalizar que a fatia atual forma o início de um novo período de reinicialização de POC com um identificador de período de reinicialização de POC que é diferente dos identificadores de período de reinicialização de POC anteriores. Alternativamente, se a fatia atual não fizer parte de uma imagem de âncora, o codificador de vídeo 20 pode sinalizar que a fatia atual faz parte de um período de reinicialização de POC existente.
[0153] O codificador de vídeo 20 pode predizer então o bloco atual da fatia atual (158). Por exemplo, o codificador de vídeo 20 pode calcular uma ou mais unidades de predição (PUs) para o bloco atual. Mais especificamente, a unidade de estimação de movimento 42 pode efetuar uma busca de movimento pelo bloco atual entre as imagens de referência da lista de imagens de referência para identificar um bloco correspondente utilizado como bloco de referência, com base em SAD, SSD, MAD, MSD, ou em outra métricas de cálculo de erros, por exemplo. 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 codificar então informações de movimento para o bloco (160), que podem incluir valores diferentes 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 identificam juntos o bloco de referência.
[0154] O codificador de vídeo 20 pode calcular então um bloco residual para o bloco atual, de modo a se produzir uma unidade de transformada (TU) (162), por exemplo. Para calcular o bloco residual, o codificador de vídeo 20 pode calcular a diferença entre o bloco codificado original e o bloco predito para o bloco atual. O codificador de vídeo 20 pode transformar e quantizar então os coeficientes do bloco residual (164). Em seguida, o codificador de vídeo 20 pode varrer os coeficientes de transformada quantizados do bloco residual (166). Durante a varredura, ou depois da varredura, o codificador de vídeo 20 pode codificar por entropia os coeficientes (168). Por exemplo, o codificador de vídeo 20 pode codificar os coeficientes utilizando CAVLC ou CABAC. O codificador de vídeo 20 pode transmitir então os dados codificados por entropia do bloco (170).
[0155] Desta maneira, o método da Figura 4 representa um exemplo de método que inclui codificar, por um codificador de vídeo, dados que representam um valor para um identificador de período de reinicialização de contagem de ordens de imagem (POC), no qual os dados estão associados a uma imagem codificada de uma camada de dados de vídeo, e no qual o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada, e reinicializar, pelo codificador de vídeo, pelo menos parte de um valor de POC para imagem codificada e valores de POC para uma ou mais imagens na camada que estão atualmente armazenadas no buffer de imagens decodificada (DPB) do decodificador de vídeo. O método inclui também construir uma lista de imagem de referência que inclui uma ou mais imagens de referência, codificar um bloco da fatia utilizando uma das imagens de referência, codificar a informações de movimento para o bloco, no qual as informações de movimento incluem um identificador da lista de imagens de referência e um índice de referência na lista de imagens de referência que corresponde a uma das imagens de referência, e codificar um ou mais valores de POC que representam as imagens de referência incluídas na lista de imagem de referência, neste exemplo.
[0156] A Figura 5 é um fluxograma que mostra um método exemplar para decodificar de dados que indicam um período de reinicialização de POC para uma fatia de acordo com as técnicas desta revelação. Além disso, o método da Figura 4 inclui codificar o bloco atual. O bloco atual pode compreender a CU atual ou uma parte da CU atual. Embora descrito com relação ao decodificador de vídeo 30 (Figuras 1 e 3), deve ficar entendido que outros aparelhos podem ser configurados para executar um método semelhante ao da Figura 5.
[0157] Inicialmente, o decodificador de vídeo 30 decodifica um identificador de período de reinicialização de POC para a fatia atual (200), do cabeçalho de segmento de fatia da fatia atual, por exemplo. O decodificador de vídeo 30 pode decodificar também um indicador do tipo de reinicialização de POC. O método da Figura 5 é baseado na suposição de que o identificador de período de reinicialização de POC indica que a fatia atual é parte de um novo período de reinicialização de POC. Com base no fato de a fatia ser parte de um novo período de reinicialização de POC, o decodificador de vídeo 30 reinicializa valores de POC de imagens de referência no DPB (202), que são também parte da mesma camada da fatia atual. O decodificador de vídeo 30 decodifica então valores de POC de imagens de referência a serem incluídas em uma lista de imagem de referência (204), como, por exemplo, do cabeçalho de segmento de fatia e/ou de um conjunto de parâmetros, tal como um PPS ou um SPS. O decodificador de vídeo 30 forma então a lista de imagens de referência (206).
[0158] Em seguida, o decodificador de vídeo 30 decodifica informações de movimento para o bloco atual (208). As informações de movimento podem incluir, por exemplo, um identificador de lista de imagens de referência e um índice de referência na lista de imagem de referência. O decodificador de vídeo 30 prediz então o bloco atual (200), utilizando o modo de inter-predição para calcular um bloco predito para o bloco atual. Mais especificamente, decodificador de vídeo 30 utiliza o identificador de lista de imagens referência para identificar qual lista de imagens de referência a 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 decodifica então um vetor de movimento para o bloco atual e identifica um bloco de referência na imagem de referência identificada.
[0159] O decodificador de vídeo 30 pode também receber dados codificados por entropia para o bloco atual, tais como dados codificados por entropia para coeficientes de um bloco residual que corresponde ao bloco atual (212). O decodificador de vídeo 30 pode decodificar por entropia os dados codificados por entropia de modo a reproduzir os coeficientes do bloco residual (214). O decodificador de vídeo 30 pode então varrer por inversão os coeficientes reproduzidos (216), de modo a 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 por inversão e transformar por inversão os coeficientes de modo a produzir um bloco residual (218). O decodificador de vídeo 30 pode finalmente decodificar o bloco atual combinando o bloco predito e o bloco residual (220).
[0160] Desta maneira, o método da Figura 5 representa um exemplo de método que inclui decodificar, por um decodificador de vídeo, dados que representam um valor para um identificador de período de reinicialização de contagem de ordens de imagem (POC), no qual os dados consistem em uma imagem codificada de uma camada de dados de vídeo, e no qual o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que incluindo a imagem codificada, e reinicializar, pelo decodificador de vídeo, pelo menos parte de um valor de POC para a imagem codificada e valores de POC para uma ou mais imagens na camada que estão atualmente armazenadas no buffer de imagens decodificada (DPB) do decodificador de vídeo. O método neste exemplo inclui também decodificar um ou mais valores de POC que representam imagens de referência a serem incluídas em uma lista de imagens de referência, construir a lista de imagens de referência com base, pelo menos em parte, no valor ou valores de POC decodificados, decodificar informações de movimento para um bloco da fatia, no qual as informações de movimento incluem um identificador da lista de imagens de referência e um índice de referência na lista de imagens de referência, e decodificar o bloco utilizando uma das imagens de referência que correspondem ao índice de referência na lista de imagens de referência.
[0161] Deve se reconhecer que, dependendo do exemplo, determinados atos ou eventos de qualquer uma das técnicas aqui descritas podem ser executados em uma sequência diferente, podem ser adicionados, fundidos ou deixados completamente de fora (nem todos os atos ou eventos descritos são necessários para a prática das técnicas, por exemplo). Além do mais, em determinados exemplos os atos ou eventos podem ser executados concomitantemente, como, por exemplo, através de processamento de vários fluxos, processamento com interrupções ou vários processadores, e não sequencialmente.
[0162] Em um ou mais exemplos, as funções descritas podem implementadas em hardware, software, firmware ou qualquer combinação deles. Se implementadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código, em um meio passível de leitura por computador e executadas por uma unidade de processamento baseada em hardware. Os meios passíveis de leitura por computador podem incluir meios de armazenamento passíveis de leitura por computador que correspondem a um meio tangível tal como meios de armazenamento de dados ou meios de comunicação que incluam qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, como, por exemplo, de acordo com um protocolo de comunicação. Desta maneira, os meios passíveis de leitura por computador podem corresponder geralmente a (1) meios de armazenamento passíveis de leitura por computador tangíveis que são não transitórios ou (2) a um meio de comunicação tal como um sinal ou onda portadora. Os meios de armazenamento de dados podem ser quaisquer meios disponíveis que possam ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, códigos e/ou estruturas de dados para implementação das técnicas descritas nesta revelação. Um produto de programa de computador pode incluir um meio passível de leitura por computador.
[0163] A título de exemplo, e não de limitação, tais meios de armazenamento passíveis de leitura por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco óptico, armazenamento em disco magnético ou outros aparelhos de armazenamento magnético, memória flash ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado sob a forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disto, qualquer conexão é denominada apropriadamente de meio passível de leitura por computador. Por exemplo, se as instruções forem transmitidas de um site da Web, servidor ou outra fonte remota utilizando-se um cabo coaxial, um cabo de fibra ótica, um par trançado, uma linha de assinante digital (DSL) ou tecnologias sem fio, tais como infravermelho, rádio e microonda, então o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou tecnologias sem fio, tais como infravermelho, rádio e microonda são incluídos na definição de meio. Deve ficar entendido, contudo, que os meios de armazenamento passíveis de leitura por computador e os meios de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios transitórios, mas são em vez disso direcionados a meios de armazenamento não transitórios, tangíveis. Disco (disk e disc) conforme aqui utilizado, inclui disco compacto (CD), disco de laser, disco óptico, disco versátil digital (DVD), disco flexível e disco Blu-ray, onde discos (disks) reproduzem usualmente dados magneticamente, enquanto discos (discs) reproduzem dados opticamente com lasers. Combinações dos componentes acima devem ser também incluídas dentro do alcance dos meios passíveis de leitura por computador.
[0164] As instruções podem ser executadas por um ou mais processadores, tais como um ou mais processadores de sinais digitais (DSPs), microprocessadores de propósito geral, circuitos integrados específicos de aplicativo (ASICs), arranjos de portas programáveis no campo (FPGAs) ou outros circuitos lógicos integrados ou discretos equivalentes. Por conseguinte, o termo processador conforme aqui utilizado, pode referir-se a qualquer uma das estruturas precedentes ou a qualquer outra estrutura adequada para implementação das técnicas aqui descritas. Além disto, sob alguns aspectos, a funcionalidade aqui descrita pode ser proporcionada dentro de hardware dedicado e/ou módulos de software configurados para codificação e decodificação ou incorporados a um codec combinado. Além disto, as técnicas podem ser completamente implementadas em um ou mais circuitos ou elementos lógicos.
[0165] As técnicas desta revelação podem ser implementadas em uma ampla variedade de aparelhos ou equipamentos, que incluem um aparelho telefônico sem fio, um circuito integrado (IC) ou um conjunto de ICs (um conjunto de chips, por exemplo). Diversos componentes, módulos ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de aparelhos configurados para executar as técnicas descritas, mas não exigem necessariamente execução por unidades de hardware diferentes. Em vez disso, conforme descrito acima, diversas unidades podem ser combinadas em uma unidade de hardware de codec ou apresentadas por uma coleção de unidades de hardware interoperantes, que incluem um ou mais processadores descritos acima, em conjunto com software e/ou firmware adequado.
[0166] Foram descritos diversos exemplos. Estes e outros exemplos estão dentro do alcance das reivindicações seguintes.

Claims (19)

1. Método para decodificar dados de vídeo, o método caracterizado pelo fato de que compreende: decodificar (200), por um decodificador de vídeo a partir de um cabeçalho de segmento de fatia de uma fatia de uma imagem codificada, dados que representam um valor para um identificador de período de reinicialização de contagem de ordem de imagens, POC, em que um identificador de período de reinicialização de POC identifica um período de reinicialização de POC, e um período de reinicialização de POC compreende uma sequência de imagens, sendo que cada uma tem o mesmo valor de identificador de período de reinicialização de POC, em que os dados estão associados à imagem codificada de uma camada dos dados de vídeo, em que o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada, em que a imagem codificada compreende uma imagem de âncora de POC do período de reinicialização de POC, e em que a imagem de âncora de POC corresponde a uma primeira imagem do período de reinicialização de POC; e reinicializar (202), pelo decodificador de vídeo, com base, pelo menos em parte, no identificador de período de reinicialização de POC, pelo menos parte de um valor de POC para a imagem codificada em que reinicializar compreende: reinicializar todos os bits do valor de POC para a imagem de âncora de POC quando uma indicação de um tipo de reinicialização de POC para a imagem de âncora de POC indica que o valor de POC para a imagem de âncora de POC deve ser completamente reinicializada; ou reinicializar os bits mais significativos, MSB, do valor de POC quando a indicação do tipo de reinicialização de POC para a imagem de âncora de POC indica que os MSB do valor de POC para a imagem de âncora de POC devem ser reinicializados.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que reinicializar a pelo menos parte dos valores de POC para as uma ou mais imagens na camada que estão armazenadas atualmente em um buffer de imagem decodificada, DPB, compreende: decodificar dados que representam um valor de bits menos significativos, LSB de POC, em que os dados estão incluídos na imagem codificada; e reduzir valores de POC para as uma ou mais imagens na camada que estão armazenadas atualmente nos DPB pelo valor de LSB de POC.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o valor de LSB de POC é igual a um valor de LSB de POC de uma imagem de âncora de POC do período de reinicialização de POC que inclui a imagem codificada.
4. Método para codificar dados de vídeo, o método caracterizado pelo fato de que compreende: codificar, por um codificador de vídeo em um cabeçalho de segmento de fatia de uma fatia de uma imagem codificada, dados que representam um valor para um identificador de período de reinicialização de contagem de ordem de imagens, POC, em que um identificador de período de reinicialização de POC identifica um período de reinicialização de POC, e um período de reinicialização de POC compreende uma sequência de imagens, sendo que cada um tem o mesmo valor de identificador de período de reinicialização de POC, em que os dados estão associados à imagem codificada de uma camada dos dados de vídeo, em que o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada, e em que a imagem codificada compreende uma imagem de âncora de POC do período de reinicialização de POC, e em que a imagem de âncora de POC corresponde a uma primeira imagem do período de reinicialização de POC; e reinicializar (150), pelo codificador de vídeo, com base, pelo menos em parte, no identificador de período de reinicialização de POC, pelo menos parte de um valor de POC para a imagem codificada, em que reinicializar compreende: reinicializar todos os bits do valor de POC para a imagem de âncora de POC quando uma indicação de um tipo de reinicialização de POC para a imagem de âncora de POC indica que o valor de POC para a imagem de âncora de POC deve ser completamente reinicializada; ou reinicializar bits mais significativos, MSB, do valor de POC quando a indicação do tipo de reinicialização de POC para a imagem de âncora de POC indica que os MSB do valor de POC para a imagem de âncora de POC devem ser reinicializados.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que reinicializar a pelo menos parte dos valores de POC para a uma ou mais imagens na camada que estão armazenadas atualmente no DPB compreende: determinar um valor de bits menos significativos, LSB, de POC para uma imagem de âncora de POC do período de reinicialização de POC; e reduzir valores de POC para as uma ou mais imagens na camada que estão armazenadas atualmente nos DPB pelo valor de LSB de POC, o método compreendendo adicionalmente codificar dados que representam o valor de LSB de POC, em que os dados estão incluídos na imagem codificada.
6. Dispositivo para decodificar dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: uma memória compreendendo um buffer de imagem decodificada, DPB, configurado para armazenar dados de vídeo; e um decodificador de vídeo configurado para decodificar, a partir de um cabeçalho de segmento de fatia de uma fatia de uma imagem codificada, dados que representam um valor para um identificador de período de reinicialização de contagem de ordem de imagens, POC, em que um identificador de período de reinicialização de POC identifica um período de reinicialização de POC, e um período de reinicialização de POC compreende uma sequência de imagens, sendo que cada uma tem o mesmo valor de identificador de período de reinicialização de POC, em que os dados estão associados à imagem codificada de uma camada dos dados de vídeo, em que o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada, em que a imagem codificada compreende uma imagem de âncora de POC do período de reinicialização de POC, e em que a imagem de âncora de POC corresponde a uma primeira imagem do período de reinicialização de POC; o decodificador de vídeo sendo configurado adicionalmente para reinicializar pelo menos parte de um valor de POC para a imagem codificada em que reinicializar compreende: reinicializar todos os bits do valor de POC para a imagem de âncora de POC quando uma indicação de um tipo de reinicialização de POC para a imagem de âncora de POC indica que o valor de POC para a imagem de âncora de POC deve ser completamente reinicializada; ou reinicializar bits mais significativos, MSB, do valor de POC quando a indicação do tipo de reinicialização de POC para a imagem de âncora de POC indica que os MSB do valor de POC para a imagem de âncora de POC devem ser reinicializados.
7. Dispositivo, de acordo com a reivindicação 6, caracterizado pelo fato de que o decodificador de vídeo é configurado para decodificar dados que representam um valor de bits menos significativos, LSB, de POC, em que os dados estão incluídos na imagem codificada, e a redução de valores de POC para as uma ou mais imagens na camada que estão armazenadas atualmente nos DPB pelo valor de LSB de POC, em que o valor de LSB de POC é igual a um valor de LSB de POC de uma imagem de âncora de POC do período de reinicialização de POC que inclui a imagem codificada.
8. Dispositivo, de acordo com a reivindicação 6, caracterizado pelo fato de que o decodificador de vídeo é configurado adicionalmente para decodificar dados que representam um valor de dois bits para uma indicação de um tipo de reinicialização de POC a ser realizada para a imagem codificada, que indica que o tipo de reinicialização de POC não é a reinicialização de POC, reinicializar apenas de valores de MSB do valor de POC, reinicializar valores tanto de MSB quanto de LSB do valor de POC, ou que informações adicionais são sinalizadas para indicar um tipo de reinicialização, em que os dados estão incluídos na imagem codificada.
9. Dispositivo, de acordo com a reivindicação 8, caracterizado pelo fato de que o decodificador de vídeo é configurado adicionalmente para: determinar que o valor de POC para a imagem codificada não deve ser reinicializado quando o valor para a indicação for zero; determinar que apenas os bits mais significativos, MSB, do valor de POC para a imagem codificada devem ser reinicializados quando o valor para a indicação for um; determinar que tanto MSB quanto os bits menos significativos, LSB, do valor de POC para a imagem codificada devem ser reinicializados quando o valor para a indicação for dois; e determinar que as informações adicionais de reinicialização de POC são sinalizadas para a imagem codificada quando o valor para a indicação for três. em que o decodificador de vídeo é configurado, de preferência, adicionalmente para, quando o valor para a indicação for três, decodificar as informações de reinicialização de POC adicionais, em que as informações de reinicialização de POC adicionais indicam se o MSB de POC do valor de POC para a imagem codificada devem ser reinicializados ou se os MSB de POC e LSB de POC do valor de POC para a imagem codificada devem ser reinicializados, e em que as informações de reinicialização de POC adicionais indicam um valor de LSB de POC de âncora.
10. Dispositivo, de acordo com a reivindicação 6, caracterizado pelo fato de que o decodificador de vídeo é configurado para decodificar dados que representam um valor para uma indicação de um tipo de reinicialização de POC a ser realizado para a imagem codificada, em que o valor para a indicação indica que informações de reinicialização de POC adicionais são sinalizadas para a imagem codificada, em que os dados estão incluídos na imagem codificada, decodificar as informações de reinicialização de POC adicionais, em que as informações de reinicialização de POC adicionais indicam um valor de bits menos significativos, LSB, de POC de âncora, e, em resposta à determinação de que uma imagem de âncora de POC para o período de reinicialização de POC que inclui a imagem codificada foi perdida, usar um valor de POC igual ao valor de LSB de POC de âncora quando calcular valores de POC para imagens depois da imagem de âncora de POC na ordem de decodificação.
11. Dispositivo, de acordo com a reivindicação 6, caracterizado pelo fato de que o decodificador de vídeo é configurado para decodificar dados de um conjunto de parâmetros de imagem, PPS, que correspondem à imagem codificada, em que os dados do PPS indicam se as informações de reinicialização de POC são sinalizadas na imagem codificada, e em que o codificador de vídeo é configurado para codificar os dados que representam o valor para o identificador de período de reinicialização de POC quando os dados do PPS indicarem que as informações de reinicialização de POC são sinalizadas na imagem codificada, em que os dados do PPS que indicam se as informações de reinicialização de POC são sinalizadas no PPS quando um elemento de sintaxe slice_segment_header_extension_present_flag do PPS é igual a um.
12. Dispositivo para codificar dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: uma memória compreendendo um buffer de imagem decodificada, DPB, configurado para armazenar dados de vídeo; e um codificador de vídeo configurado para codificar, em um cabeçalho de segmento de fatia de uma fatia de uma imagem codificada, dados que representam um valor para um identificador de período de reinicialização de contagem de ordem de imagens, POC, em que um identificador de período de reinicialização de POC identifica um período de reinicialização de POC, e um período de reinicialização de POC compreende uma sequência de imagens, sendo que cada uma tem o mesmo valor de identificador de período de reinicialização de POC, em que os dados estão associados à imagem codificada de uma camada dos dados de vídeo, em que o valor do identificador de período de reinicialização de POC indica um período de reinicialização de POC que inclui a imagem codificada, e em que a imagem codificada compreende uma imagem de âncora de POC do período de reinicialização de POC, e em que a imagem de âncora de POC corresponde a uma primeira imagem do período de reinicialização de POC; o codificador de vídeo sendo configurado adicionalmente para reinicializar pelo menos parte de um valor de POC para a imagem codificada, em que reinicializar compreende: reinicializar todos os bits do valor de POC para a imagem de âncora de POC quando uma indicação de um tipo de reinicialização de POC para a imagem de âncora de POC indica que o valor de POC para a imagem de âncora de POC deve ser completamente reinicializada; ou reinicializar bits mais significativos, MSB, do valor de POC quando a indicação do tipo de reinicialização de POC para a imagem de âncora de POC indica que os MSB do valor de POC para a imagem de âncora de POC devem ser reinicializados.
13. Dispositivo, de acordo com a reivindicação 12, caracterizado pelo fato de que o codificador de vídeo é configurado adicionalmente para codificar dados que representam um valor de dois bits para uma indicação de um tipo de reinicialização de POC a ser realizada para a imagem codificada, que indica que o tipo de reinicialização de POC não é a reinicialização de POC, reinicializar apenas valores de MSB do valor de POC, reinicializar ambos os valores de MSB e LSB do valor de POC, ou que informações adicionais são sinalizadas para indicar um tipo de reinicialização, em que os dados estão incluídos na imagem codificada.
14. Dispositivo, de acordo com a reivindicação 13, caracterizado pelo fato de que o codificador de vídeo é configurado adicionalmente para: determinar que o valor de POC para a imagem codificada não deve ser reinicializado quando o valor para a indicação for zero; determinar que apenas os bits mais significativos, MSB, do valor de POC para a imagem codificada devem ser reinicializados quando o valor para a indicação for um; determinar que tanto MSB quanto os bits menos significativos, LSB, do valor de POC para a imagem codificada devem ser reinicializados quando o valor para a indicação for dois; e determinar que as informações adicionais de reinicialização de POC são sinalizadas para a imagem codificada quando o valor para a indicação for três; em que o codificador de vídeo é configurado adicionalmente para, quando o valor para a indicação for três, codificar as informações de reinicialização de POC adicionais, em que as informações de reinicialização de POC adicionais indicam se o MSB de POC do valor de POC para a imagem codificada devem ser reinicializados ou se os MSB de POC e LSB de POC do valor de POC para a imagem codificada devem ser reinicializados, e em que as informações de reinicialização de POC adicionais indicam um valor de LSB de POC de âncora.
15. Dispositivo, de acordo com a reivindicação 12, caracterizado pelo fato de que o codificador de vídeo é configurado para construir uma lista de imagens de referência que inclui uma ou mais imagens de referência, codificar um bloco da imagem codificada com o uso de uma das imagens de referência, codificar informações de movimento para o bloco, em que as informações de movimento incluem um identificador da lista de imagens de referência e um índice de referências na lista de imagens de referência que corresponde a uma das imagens de referência, e codificar um ou mais valores de POC que representam as imagens de referência incluídas na lista de imagens de referência.
16. Dispositivo, de acordo com a reivindicação 12, caracterizado pelo fato de que o codificador de vídeo é configurado para codificar dados de um conjunto de parâmetros de imagem, PPS, que correspondem à imagem codificada, em que os dados do PPS indicam se as informações de reinicialização de POC são sinalizadas na imagem codificada, e em que o codificador de vídeo em código é configurado para codificar os dados que representam o valor para o identificador de período de reinicialização de POC quando os dados do PPS indicarem que as informações de reinicialização de POC são sinalizadas na imagem codificada, em que os dados do PPS que indicam se as informações de reinicialização de POC são sinalizadas são sinalizados no PPS quando um elemento de sintaxe slice_segment_header_extension_present_flag do PPS é igual a um.
17. Dispositivo, de acordo com a reivindicação 6 ou 12, caracterizado pelo fato de que os dados representativos do valor para o identificador de período de reinicialização de POC estão incluídos em um cabeçalho de segmento de fatia para uma fatia da imagem codificada.
18. Dispositivo, de acordo com a reivindicação 6 ou 12, caracterizado pelo fato de que o dispositivo compreende pelo menos um dentre: um circuito integrado; um microprocessador; e um dispositivo de comunicação sem fio.
19. Memória legível por computador, caracterizada pelo fato de que contém gravado na mesma o método conforme definido em qualquer uma das reivindicações 1 a 5.
BR112016011311-0A 2013-11-19 2014-11-18 Design de valor de poc para codificação de vídeo de várias camadas BR112016011311B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361906373P 2013-11-19 2013-11-19
US61/906,373 2013-11-19
US14/543,470 US9628820B2 (en) 2013-11-19 2014-11-17 POC value design for multi-layer video coding
US14/543,470 2014-11-17
PCT/US2014/066130 WO2015077220A1 (en) 2013-11-19 2014-11-18 Poc value design for multi-layer video coding

Publications (2)

Publication Number Publication Date
BR112016011311A2 BR112016011311A2 (pt) 2017-08-08
BR112016011311B1 true BR112016011311B1 (pt) 2023-05-16

Family

ID=53173281

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016011311-0A BR112016011311B1 (pt) 2013-11-19 2014-11-18 Design de valor de poc para codificação de vídeo de várias camadas

Country Status (10)

Country Link
US (1) US9628820B2 (pt)
EP (1) EP3072298B1 (pt)
JP (1) JP6453355B2 (pt)
KR (1) KR102002207B1 (pt)
CN (1) CN107079170B (pt)
BR (1) BR112016011311B1 (pt)
ES (1) ES2696723T3 (pt)
HU (1) HUE039280T2 (pt)
MX (1) MX355823B (pt)
WO (1) WO2015077220A1 (pt)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104604234B (zh) * 2013-07-12 2019-07-16 索尼公司 图像编码设备和方法
MX352916B (es) * 2013-10-14 2017-12-14 Ericsson Telefon Ab L M Alineación de conteo de orden de imágenes en video escalable.
US9674544B2 (en) 2013-11-25 2017-06-06 Qualcomm Incorporated POC value design for multi-layer video coding
US9654774B2 (en) 2013-12-12 2017-05-16 Qualcomm Incorporated POC value design for multi-layer video coding
CN104754358B (zh) * 2013-12-27 2019-02-19 中兴通讯股份有限公司 码流的生成和处理方法、装置及系统
US10115377B2 (en) 2015-09-24 2018-10-30 Intel Corporation Techniques for video playback decoding surface prediction
US11736687B2 (en) 2017-09-26 2023-08-22 Qualcomm Incorporated Adaptive GOP structure with future reference frame in random access configuration for video coding
US20190141320A1 (en) * 2017-11-07 2019-05-09 Qualcomm Incorporated Enhanced reference picture management in video coding
US11356698B2 (en) 2019-12-30 2022-06-07 Tencent America LLC Method for parameter set reference constraints in coded video stream

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9131245B2 (en) * 2011-09-23 2015-09-08 Qualcomm Incorporated Reference picture list construction for video coding
KR20130037161A (ko) * 2011-10-05 2013-04-15 한국전자통신연구원 스케일러블 비디오 코딩을 위한 향상된 계층간 움직임 정보 예측 방법 및 그 장치
US8855433B2 (en) 2011-10-13 2014-10-07 Sharp Kabushiki Kaisha Tracking a reference picture based on a designated picture on an electronic device
US20150063463A1 (en) * 2012-04-15 2015-03-05 Samsung Electronics Co., Ltd. Method and device for coding multi-layer video, and method and device for decoding multi-layer video
US9532052B2 (en) 2013-04-08 2016-12-27 Qualcomm Incorporated Cross-layer POC alignment for multi-layer bitstreams that may include non-aligned IRAP pictures

Also Published As

Publication number Publication date
MX355823B (es) 2018-05-02
KR20160085890A (ko) 2016-07-18
CN107079170A (zh) 2017-08-18
HUE039280T2 (hu) 2018-12-28
WO2015077220A1 (en) 2015-05-28
KR102002207B1 (ko) 2019-07-19
EP3072298B1 (en) 2018-08-15
US9628820B2 (en) 2017-04-18
CN107079170B (zh) 2020-04-21
WO2015077220A9 (en) 2017-04-27
BR112016011311A2 (pt) 2017-08-08
ES2696723T3 (es) 2019-01-17
US20150139320A1 (en) 2015-05-21
MX2016006370A (es) 2016-09-16
JP2017501655A (ja) 2017-01-12
JP6453355B2 (ja) 2019-01-16
EP3072298A1 (en) 2016-09-28

Similar Documents

Publication Publication Date Title
KR102329648B1 (ko) 멀티-계층 비디오 코딩을 위한 poc 값 설계
EP2984844B1 (en) Cross-layer poc alignment for multi-layer bitstreams that may include non-aligned irap pictures
BR112016011311B1 (pt) Design de valor de poc para codificação de vídeo de várias camadas
BR112014033008B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões
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
BR112014017159B1 (pt) Conjuntos de parâmetros de codificação e cabeçalhos de unidade nal para codificação de vídeo
BR112015000597B1 (pt) Codificação de imagens de acesso aleatório 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
WO2014008136A1 (en) Signaling of long-term reference pictures for video coding
BR112014032473B1 (pt) Método e dispositivo para decodificar dados de vídeo, método e dispositvo para codificar dados de vídeo e mídia de armazenamento legível por computador
CA2873419A1 (en) Signaling data for long term reference pictures for video coding
KR101962523B1 (ko) 멀티-계층 비디오 코딩을 위한 poc 값 설계
BR112016013141B1 (pt) Design de valor poc para codificação de vídeo de multicamadas
BR112016021476B1 (pt) Método e dispositivo para codificar dados de vídeo e memória legível por computador
BR112015000599B1 (pt) Codificação de unidades nal sei para codificação de vídeo
BR112014033011B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 18/11/2014, OBSERVADAS AS CONDICOES LEGAIS