BR112015006059B1 - Codificação de vídeo codm comportamentos [de imagem [de ponto [de acesso aleatório melhorados - Google Patents

Codificação de vídeo codm comportamentos [de imagem [de ponto [de acesso aleatório melhorados Download PDF

Info

Publication number
BR112015006059B1
BR112015006059B1 BR112015006059-5A BR112015006059A BR112015006059B1 BR 112015006059 B1 BR112015006059 B1 BR 112015006059B1 BR 112015006059 A BR112015006059 A BR 112015006059A BR 112015006059 B1 BR112015006059 B1 BR 112015006059B1
Authority
BR
Brazil
Prior art keywords
images
bla
cra
cpb
image
Prior art date
Application number
BR112015006059-5A
Other languages
English (en)
Other versions
BR112015006059A2 (pt
Inventor
Ye-Kui Wang
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112015006059A2 publication Critical patent/BR112015006059A2/pt
Publication of BR112015006059B1 publication Critical patent/BR112015006059B1/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter
    • 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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

CODIFICAÇÃO DE VÍDEO COM COMPORTAMENTOS DE IMAGEM DE PONTO DE ACESSO ALEATÓRIO MELHORADOS. Esta invenção descreve técnicas para a seleção de parâmetros de buffer de imagem codificados (CPB) usados para definir um CPB para um dispositivo de codificação de vídeo para imagens de acesso aleatório limpas (CRA) e imagens de acesso à link quebradas (BLA) em um bitstream de vídeo. Um dispositivo de codificação de vídeo recebe um bitstream incluindo uma ou mais imagens CRA ou imagens BLA, também recebe uma mensagem indicando quando usar um conjunto alternativo de parâmetros CPB para pelo menos uma das imagens CRA ou imagens BLA. A mensagem pode ser recebida a partir de um meio externo, como um meio de processamento incluído em um servidor de streaming ou entidade de rede. O dispositivo de codificação de vídeo define uma variável definida para indicar o conjunto de parâmetros CPB para uma determinada imagem com base na mensagem recebida, e seleciona o conjunto de parâmetros CPB para a determinada imagem com base na variável para a imagem.

Description

[0001] Este pedido reivindica o benefício do Pedido de Patente Provisório No US 61/703,695, depositado em 20 de setembro de 2012, o conteúdo total do qual é incorporado aqui a título de referência.
Campo da Invenção
[0002] Esta invenção geralmente refere-se ao processamento de dados de vídeo e, mais particularmente, imagens de acesso aleatório usadas nos dados de vídeo.
Descrição da Técnica Anterior
[0003] Capacidades de vídeo digitais podem ser incorporadas em uma ampla gama de dispositivos, incluindo televisores digitais, sistemas de transmissão digital direta, sistemas de transmissão sem fio, assistentes digitais pessoais (PDAs), laptops ou computadores de mesa, computadores tablet, e-books, câmeras digitais, os dispositivos de gravação digital, reprodutores de mídia digitais, os dispositivos de jogos de vídeo, videogames, telefones celulares de rádio ou satélite, os chamados "telefones inteligentes", aparelhos de vídeo de teleconferência, os dispositivos de streaming de vídeo, e afins. Dispositivos de vídeo digital implementam técnicas de codificação de vídeo, tais como aquelas descritos nos padrões definidos pelo MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), Codificação de Vídeo de Alta Eficiência (HEVC) padrão atualmente em desenvolvimento e extensão de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de forma mais eficiente através da implementação de tais técnicas de codificação de vídeo.
[0004] Técnicas de codificação de vídeo incluem a predição espacial (intra-imagem) e/ou predição temporal (inter-imagem) para reduzir ou eliminar a redundância inerente nas sequências de vídeo. Para a codificação de vídeo baseada em bloco, uma fatia de vídeo (por exemplo, um quadro de vídeo ou de uma porção de um quadro de vídeo) pode ser dividida em blocos de vídeo, que também podem ser referidos como treeblocks, unidades de codificação (UC) e/ou nós de codificação. Os blocos de vídeo em uma fatia intra-codificada (I) de uma imagem são codificados usando a predição espacial em relação às amostras de referência em blocos vizinhos no mesmo quadro. Os blocos de vídeo em uma fatia inter-codificada (P ou B) de uma imagem podem usar a predição espacial em relação às amostras de referência em blocos vizinhos no mesmo quadro, ou a predição temporal, no que diz respeito às amostras de referência em outros quadros de referência. As imagens podem ser referidas como quadros e imagens de referência podem ser referidas como quadros de referência.
[0005] A predição espacial ou temporal resulta em um bloco de predição para um bloco de ser codificado. Dados residuais representam as diferenças entre o bloco de pixel original a ser codificado e o bloco de predição. Um bloco inter-codificado é codificado de acordo com um vetor de movimento que aponta para um bloco de amostras de referência que formam o bloco de predição, e os dados residuais indicando a diferença entre o bloco codificado e o bloco de predição. Um bloco intra-codificado é codificado de acordo com um modo de intra-codificação e os dados residuais. Para a compressão adicional, os dados residuais podem ser transformados a partir do domínio de pixel para um domínio de transformada, resultando em coeficientes de transformada residuais, os quais, em seguida, podem ser quantificados. Os coeficientes de transformada quantificados, inicialmente dispostos em uma matriz bidimensional, podem ser verificados, a fim de produzir um vetor unidimensional de coeficientes de transformada, e a codificação de entropia pode ser aplicada para conseguir ainda mais compressão.
Sumário da Invenção
[0006] Em geral, esta invenção descreve técnicas para fornecer suporte aprimorado de imagens de ponto de acesso aleatório (RAP), incluindo imagens de acesso aleatório limpas (CRA) e imagens de acesso à link quebradas (BLA), na codificação de vídeo. Em alguns casos, as imagens RAP podem alternativamente ser referidas como imagens de ponto de acesso intra aleatório (IRAP). Em particular, esta invenção descreve técnicas para a seleção de parâmetros de buffer de imagem codificados (CPB) usados para definir um CPB para um dispositivo de codificação de vídeo para imagens CRA ou imagens BLA em um bitstream de vídeo. Ou um conjunto padrão ou um conjunto alternativo de parâmetros CPB podem ser usados para definir o CPB. Se o conjunto padrão é utilizado quando o conjunto alternativo deveria ter sido selecionado, o CPB pode sobrecarregar.
[0007] Em um exemplo, a invenção é direcionada para um método de processamento de dados de vídeo compreendendo receber um bitstream representando uma pluralidade de imagens incluindo uma ou mais das imagens CRA ou imagens BLA, e receber uma mensagem indicando quando usar um conjunto alternativo de parâmetros de CPB para pelo menos uma das imagens CRA ou as imagens BLA. O método compreende ainda configurar uma variável definida para indicar o conjunto de parâmetros CPB para uma das imagens CRA ou imagens BLA com base na mensagem recebida, e selecionar o conjunto de parâmetros CPB para uma das imagens CRA ou imagens BLA com base na variável para a imagem.
[0008] Em outro exemplo, a invenção é direcionada para um dispositivo de codificação de vídeo para processar dados de vídeo, o dispositivo compreendendo a CPB configurado para armazenar dados de vídeo, e um ou mais processadores configurados para receber um bitstream representeando uma pluralidade de imagens incluindo uma ou mais das imagens CRA ou imagens BLA, receber uma mensagem indicando quando usar um conjunto alternativo de parâmetros CPB para pelo menos uma das imagens CRA ou as imagens BLA, configurar uma variável definida para indicar o conjunto de parâmetros CPB para uma das imagens CRA ou imagens BLA com base na mensagem recebida, e selecionar o conjunto de parâmetros CPB para uma das imagens CRA ou imagens BLA com base na variável para a imagem.
[0009] Ainda em outro exemplo, a invenção é direcionada para um dispositivo de codificação de vídeo para processar dados de vídeo, o dispositivo compreendendo meios para receber um bitstream representando uma pluralidade de imagens incluindo uma ou mais das imagens CRA ou imagens BLA, meios para receber uma mensagem indicando quando usar um conjunto alternativo de parâmetros de CPB para pelo menos uma das imagens CRA ou as imagens BLA, meios para configurar uma variável definida para indicar o conjunto de parâmetros CPB para uma das imagens CRA ou imagens BLA com base na mensagem recebida, e meios para selecionar o conjunto de parâmetros CPB para uma das imagens CRA ou imagens BLA com base na variável para a imagem.
[00010] Em um exemplo adicional, a invenção é direcionada para uma mídia legível por computador compreendendo instruções para processar dados de vídeo, as instruções, quando executadas, fazem com que um ou mais processadores receba um bitstream representeando uma pluralidade de imagens incluindo uma ou mais das imagens CRA ou imagens BLA, receba uma mensagem indicando quando usar um conjunto alternativo de parâmetros CPB para pelo menos uma das imagens CRA ou as imagens BLA, defina uma variável definida para indicar o conjunto de parâmetros CPB para uma das imagens CRA ou imagens BLA com base na mensagem recebida, e selecione o conjunto de parâmetros CPB para uma das imagens CRA ou imagens BLA com base na variável para a imagem.
[00011] Os detalhes de um ou mais exemplos são apresentados nos desenhos anexos e na descrição abaixo. Outras características, objetos, e vantagens serão evidentes a partir da descrição e desenhos e das reivindicações.
Breve Descrição das Figuras
[00012] FIG. 1 é um diagrama em bloco ilustrando um sistema de codificação e decodificação de vídeo exemplar que pode utilizar as técnicas descritas nesta invenção.
[00013] FIG. 2 é um diagrama em bloco ilustrando um codificador de vídeo exemplar que pode implementar as técnicas descritas nesta invenção.
[00014] FIG. 3 é um diagrama em bloco ilustrando um decodificador de vídeo exemplar que pode implementar as técnicas descritas nesta invenção.
[00015] FIG. 4 é um diagrama em bloco ilustrando um dispositivo de destino exemplar configurado para funcionar de acordo com um decodificador de referência hipotético (HRD).
[00016] FIG. 5 é um fluxograma ilustrando uma operação exemplar de seleção de um conjunto de parâmetros de buffer de imagem codificados (CPB) com base em uma variável que indica o conjunto de parâmetros CPB para uma imagens de ponto de acesso aleatório (RAP) particular em um bitstream.
[00017] FIG. 6 é um fluxograma ilustrando uma operação exemplar para definir um tipo de unidade de camada de abstração de rede (NAL) para uma imagem RAP particular com base em uma variável que indica o conjunto de parâmetros CPB para a imagem.
[00018] FIG. 7 é um fluxograma ilustrando uma operação exemplar para selecionar um conjunto de parâmetros CPB para uma imagem RAP particular com base em um tipo de unidade NAL para a imagem e uma variável que indica o conjunto de parâmetros CPB para a imagem.
[00019] FIG. 8 é um fluxograma ilustrando uma operação exemplar para selecionar um conjunto de parâmetros CPB com base em uma variável definida para indicar um tipo de unidade de camada de abstração de rede (NAL) para uma imagem RAP particular em um bitstream.
[00020] FIG. 9 é um diagrama em bloco ilustrando um conjunto exemplar de dispositivos que fazem parte de uma rede.
Descrição Detalhada da Invenção
[00021] Esta invenção descreve técnicas para fornecer suporte aprimorado de imagens de ponto de acesso aleatório (RAP), incluindo imagens de acesso aleatório limpas (CRA) e imagens de acesso à link quebradas (BLA), na codificação de vídeo. Em alguns casos, as imagens RAP podem alternativamente ser referidas como imagens de ponto de acesso intra aleatório (IRAP). Em particular, esta invenção descreve técnicas para a seleção de parâmetros de buffer de imagem codificados (CPB) usados para definir um CPB para um dispositivo de codificação de vídeo para imagens CRA ou imagens BLA em um bitstream de vídeo. Um decodificador de referência hipotético (HRD) baseia-se em parâmetros de HRD, que incluem informações de período de armazenamento no buffer e informações da sincronização da imagem. A informação de período de armazenamento no buffer define parâmetros CPB, ou seja, atrasos de remoção de CPB iniciais e deslocamentos de atraso de remoção de CPB iniciais. Ou um conjunto padrão ou um conjunto alternativo de parâmetros CPB podem ser usados para definir o CPB com base no tipo de imagem usada para inicializar o HRD. Se o conjunto padrão é utilizado quando o conjunto alternativo deveria ter sido escolhido, o CPB em um dispositivo de codificação de vídeo em conformidade com o HRD pode sobrecarregar.
[00022] De acordo com as técnicas, um dispositivo de codificação de vídeo recebe um bitstream representeando uma pluralidade de imagens incluindo uma ou mais imagens CRA ou imagens BLA, e também recebe uma mensagem indicando quando usar um conjunto alternativo de parâmetros CPB para cada uma das imagens CRA ou imagens BLA. A mensagem pode ser recebida a partir de um meio externo, como um meio de processamento incluído em um servidor de streaming, um elemento de rede intermediário, ou outra entidade de rede.
[00023] O dispositivo de codificação de vídeo define uma variável definida para indicar o conjunto de parâmetros CPB para uma dada das imagens CRA ou imagens BLA com base na mensagem recebida. O dispositivo de codificação de vídeo então seleciona o conjunto de parâmetros CPB para a determinada das imagens CRA ou as imagens BLA com base na variável para a imagem. O conjunto de parâmetros CPB selecionado é aplicado a um CPB incluído em um codificador de vídeo ou decodificador de vídeo para garantir que o CPB não sobrecarregará durante a codificação de vídeo. Em alguns casos, o dispositivo de codificação de vídeo pode definir um tipo de unidade da camada de abstração de rede (NAL) para a determinada das imagens CRA ou as imagens BLA. O dispositivo de codificação de vídeo pode definir o tipo de unidade NAL para a imagem como sinalizado, ou o dispositivo de codificação de vídeo pode definir o tipo de unidade NAL com base na variável para a imagem. O dispositivo de codificação de vídeo pode selecionar o conjunto de parâmetros CPB para a dada imagem com base no tipo de unidade NAL e a variável para a imagem.
[00024] FIG. 1 é um diagrama em bloco que ilustra um sistema de codificação e decodificação de vídeo exemplar 10 que pode utilizar as técnicas descritas nesta invenção. Como mostrado na FIG. 1, o sistema 10 inclui um dispositivo de origem 12 que fornece dados de vídeo codificados a serem decodificados em um momento posterior por um dispositivo de destino 14. Em particular, o dispositivo de origem 12 fornece os dados de vídeo para o dispositivo de destino 14 através de uma mídia legível por computador 16. O dispositivo de origem 12 e dispositivo de destino 14 podem compreender qualquer de uma ampla faixa de dispositivos, incluindo computadores de mesa, computadores notebook (ou seja, laptop), tablets, decodificadores, aparelhos de telefone, tais como os chamados "smart" phones, os chamados "smart" pads, televisores, câmeras, os dispositivos de visualização, reprodutores de mídia digital, consoles de vídeo games, dispositivo de streaming de vídeo ou similares. Em alguns casos, o dispositivo de origem 12 e dispositivo de destino 14 podem ser equipados para comunicação remota.
[00025] O dispositivo de destino 14 pode receber os dados de vídeo codificados para serem decodificados através da mídia legível por computador 16. A mídia legível por computador 16 pode compreender qualquer tipo de mídia ou dispositivo capaz de mover os dados de vídeo codificados do dispositivo de origem 12 para o dispositivo de destino 14. Em um exemplo, a mídia legível por computador 16 pode compreender uma meio de comunicação para permitir que o dispositivo de origem 12 transmita os dados de vídeo codificados diretamente para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação remota, e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com fio ou sem fio, como um espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão física. O meio de comunicação pode fazer parte de uma rede baseada em pacote, como uma rede de área local, uma rede de área ampla, ou uma rede global como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que pode ser útil para facilitar a comunicação do dispositivo de origem 12 para o dispositivo de destino 14.
[00026] Em alguns exemplos, dados codificados podem ser produzidos a partir da interface de saída 22 para um dispositivo de armazenamento. Similarmente, os dados codificados podem ser acessados a partir do dispositivo de armazenamento pela interface de entrada. O dispositivo de armazenamento pode incluir qualquer de uma variedade de mídias de armazenamento de dados distribuídas ou acessadas localmente como um disco rígido, discos Blu-ray, DVDs, CDROMs, memória flash, memória volátil ou não-volátil, ou qualquer outra mídia de armazenamento digital adequada para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que pode armazenar o vídeo codificado gerado pelo dispositivo de origem 12. O dispositivo de destino 14 pode acessar os dados de vídeo armazenados a partir do dispositivo de armazenamento através de streaming ou download. O servidor de arquivo pode ser qualquer tipo de servidor capaz de armazenar dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo exemplares incluem um servidor da web (ex., para um website), um servidor FTP, os dispositivos de armazenamento anexos à rede (NAS), ou um disco rígido local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão da Internet. Este pode incluir um canal remoto (ex., uma conexão Wi-Fi), uma conexão com fio (ex., DSL, modem a cabo, etc.), ou uma combinação de ambos que é adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados do dispositivo de armazenamento pode ser uma transmissão por streaming, uma transmissão por download, ou uma combinação dos mesmos.
[00027] As técnicas desta invenção não são necessariamente limitadas às aplicações ou configurações remotas. As técnicas podem ser aplicadas à codificação de vídeo no suporte de qualquer de uma variedade de aplicações multimídia, como transmissões televisivas pelo ar, transmissões de televisão por cabo, transmissões de televisão por satélite, transmissões de streaming de vídeo da Internet, como streaming dinâmico adaptativo sobre HTTP (DASH), vídeo digital que é codificado em uma mídia de armazenamento de dados, decodificação de vídeo digital armazenado em uma mídia de armazenamento de dados, ou outras aplicações. Em alguns exemplos, o sistema 10 pode ser configurado para suportar a transmissão de vídeo de uma via ou duas vias para suportar aplicações como streaming de vídeo, reprodução de vídeo, transmissão de vídeo, e/ou telefonia por vídeo.
[00028] No exemplo da FIG. 1, o dispositivo de origem 12 inclui a fonte de vídeo 18, codificador de vídeo 20, e interface de saída 22. O dispositivo de destino 14 inclui a interface de entrada 28, o decodificador de vídeo 30, e dispositivo de exibição 32. Em outros exemplos, um dispositivo de origem e um dispositivo de destino podem incluir outros componentes ou arranjos. Por exemplo, o dispositivo de origem 12 pode receber dados de vídeo de uma fonte de vídeo externa 18, como uma câmera externa. Da mesma forma, o dispositivo de destino 14 pode fazer interface com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado.
[00029] O sistema ilustrado 10 da FIG. 1 é meramente um exemplo. As técnicas desta invenção podem ser realizadas por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Embora geralmente as técnicas sejam realizadas por um dispositivo de codificação de vídeo, as técnicas também podem ser realizadas por um codificador de vídeo/decodificador, normalmente referido como um "CODEC". Além disso, as técnicas desta invenção também podem ser realizadas por um pré-processador de vídeo. O dispositivo de origem 12 e dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo de origem 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem funcionar de uma maneira substancialmente simétrica tal que cada um dos dispositivos 12, 14 inclui componentes de codificação e decodificação de vídeo. Daqui, o sistema 10 pode suportar a transmissão de vídeo de uma via ou duas vias entre os dispositivos de vídeo 12, 14, ex., para streaming de vídeo, reprodução de vídeo, transmissão de vídeo, ou telefonia por vídeo.
[00030] Fonte de vídeo 18 do dispositivo de origem 12 pode incluir um dispositivo de captura de vídeo, como uma câmera de vídeo, um arquivo de vídeo contendo o vídeo capturado anteriormente, e/ou uma interface de alimentação de vídeo para receber vídeo a partir de um provedor de conteúdo de vídeo. Como uma alternativa adicional, a fonte de vídeo 18 pode gerar dados com base em gráficos de computador como o vídeo fonte, ou uma combinação de vídeo ao vivo, vídeo arquivado, e vídeo gerado por computador. Em alguns casos, se a fonte de vídeo 18 é uma câmera de vídeo, dispositivo de origem 12 e dispositivo de destino 14 podem formar os chamados telefones câmera ou telefones por vídeo. Como mencionado acima, no entanto, as técnicas descritas nesta invenção podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas a aplicações remotas e/ou com fio. Em cada caso, o vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. A informação de vídeo codificada pode então ser produzida pela interface de saída 22 sobre uma mídia legível por computador 16.
[00031] A mídia legível por computador 16 pode incluir uma mídia transiente, como uma transmissão remota ou transmissão de rede com fio, ou mídia de armazenamento (isto é, mídia de armazenamento não transitória), como um disco rígido, unidade flash, disco compacto, disco de vídeo digital, disco Blu-ray, ou outras mídias legíveis por computador. Em alguns exemplos, um servidor de rede (não mostrado) pode receber dados de vídeo codificados do dispositivo de origem 12 e fornecer os dados de vídeo codificados para o dispositivo de destino 14, ex., através da transmissão de rede. Similarmente, um dispositivo de computação de uma facilidade de produção de mídia, como uma facilidade de estampagem de disco, pode receber dados de vídeo codificados do dispositivo de origem 12 e produzir um disco contendo os dados de vídeo codificados. Portanto, a mídia legível por computador 16 pode ser compreendida por incluir umas ou mais mídia legível por computador de várias formas, em vários exemplos.
[00032] A interface de entrada 28 do dispositivo de destino 14 recebe a informação a partir da mídia legível por computador 16. A informação da mídia legível por computador 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, que também é usada pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem características e/ou processamento dos blocos e outras unidades codificadas, ex., GOPs. O dispositivo de exibição 32 exibe os dados de vídeo codificados para um usuário, e pode compreender qualquer de uma variedade de dispositivos de exibição como um tubo de raio de cátodo (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo de emissão de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[00033] O codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com um padrão de codificação de vídeo, como o padrão de Codificação de Vídeo de Alta Frequência (HEVC) atualmente em desenvolvimento, e pode ser de acordo com o Modelo de Teste HEVC (HM). Alternativamente, codificador de vídeo 20 e decodificador de vídeo 30 podem funcionar de acordo com outros padrões proprietários ou industriais, como o padrão ITU-T H.264, alternativamente referido como MPEG 4, Parte 10, Codificação de vídeo avançada (AVC), ou extensões de tais padrões. As técnicas desta invenção, no entanto, não são limitadas a qualquer padrão de codificação particular. Outros exemplos de padrão de codificação de vídeos incluem MPEG-2 e ITU-T H.263. Embora não mostrado na FIG. 1, em alguns aspectos, o codificador de vídeo 20 e decodificador de vídeo 30 podem cada ser integrado com um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX adequadas, ou outro hardware e software, para manejar a codificação de ambos áudio e vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, as unidades MUX-DEMUX podem ser de acordo com o protocolo de multiplexador ITU H.223, ou outros protocolos como o protocolo de datagrama do usuário (UDP).
[00034] O padrão ITU-T H.264/MPEG-4 (AVC) foi formulado pelo ITU-T Grupo de Especialistas em Codificação de Vídeo (VCEG) junto com o ISO/IEC Grupo de Especialistas de Imagem em Movimento (MPEG) como o produto de uma parceria coletiva conhecida como a Equipe de Vídeo Conjunta (JVT). Em alguns aspectos, as técnicas descritas nesta invenção podem ser aplicadas aos dispositivos que geralmente se conformam ao padrão H.264. O padrão H.264 é descrito na Recomendação de ITU-T H.264, Codificação de vídeo Avançada para serviços audiovisuais genéricos, pelo Grupo de Estudo de ITU-T, e datada de Março de 2005, que pode ser referida aqui como o padrão H.264 ou especificação H.264, ou o padrão ou especificação H.264/AVC. A Equipe de Vídeo Conjunta (JVT) continua a trabalhar nas extensões para H.264/MPEG-4 AVC.
[00035] O codificador de vídeo 20 e decodificador de vídeo 30 cada pode ser implementado como qualquer de uma variedade de circuitos de codificador adequado, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou qualquer combinação dos mesmos. Quando as técnicas são implementadas parcialmente em software, um dispositivo pode armazenar as instruções para o software em uma mídia legível por computador adequada, não-transitória e executar as instruções em hardware usando um ou mais processadores para realizar as técnicas desta invenção. Cada um dentre o codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em um respectivo dispositivo.
[00036] A JCT-VC está trabalhando no desenvolvimento do padrão HEVC. Os esforços de padronização de HEVC são baseados em um modelo de evolução de um dispositivo de codificação de vídeo referido como o modelo de teste de HEVC (HM). O HM presume vários recursos adicionais dos dispositivos relativos aos dispositivos existentes de acordo com a codificação de vídeo, por exemplo, ITU-T H.264/AVC. Por exemplo, enquanto H.264 oferece nove modos de codificação de intra-predição, o HM pode fornecer até trinta e três modos de codificação de intra-predição.
[00037] Em geral, o modelo de trabalho do HM descreve que um quadro de vídeo ou imagem pode ser dividido em uma sequência de treeblocks ou maiores unidades de codificação (LCU), que incluem tanto amostras luma e croma. A sintaxe de dados dentro de um bitstream de dados pode estabelecer um tamanho para a LCU, que é uma unidade de codificação maior em termos de número de pixels. Uma fatia inclui um número de treeblocks consecutivos na ordem de codificação. Um quadro de vídeo ou imagem pode ser dividido em uma ou mais fatias. Cada treeblock pode ser dividido em unidades de codificação (UCs) de acordo com uma quadtree. Em geral, uma estrutura de dados em quadtree inclui um nó por CU, com um nó raiz correspondente ao treeblock. Se uma CU é dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro nós de folha, cada um dos quais corresponde a uma das sub-CUs.
[00038] Cada nó da estrutura de dados em quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó no quadtree pode incluir uma bandeira de divisão, que indica se a CU correspondente ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender do fato de a CU ser dividida em sub-CUs. Se uma CU não é divida mais, ela é referida como uma CU de folha. Nesta invenção, quatro sub-CUs de uma folha de CU também serão referidas como CUs de folha, mesmo se não houver divisão explícita da CU de folha original. Por exemplo, se uma CU de tamanho 16x16 não é dividida ainda mais, as quatro sub-CUs 8x8 também serão referidas como CUs de folha embora a CU de 16x16 nunca tenha sido dividida.
[00039] Uma CU tem um efeito semelhante ao de um macrobloco do padrão H.264, exceto pelo fato de que uma CU não tem uma diferença de tamanho. Por exemplo, um treeblock pode ser dividido em quatro nós filhos (também conhecidos como sub-CUs), e cada nó filho pode, por sua vez, ser um nó pai e ser dividido em mais quatro nós filhos. Um nó filho final, não dividido, referido como um nó de folha do quadtree, compreende um nó de codificação, também conhecido como uma CU de folha. Os dados de sintaxe associados a um bitstream de dados codificados podem estabelecer um número máximo de vezes que um treeblock pode ser dividido, referido como uma profundidade de CU máxima, e também pode estabelecer um tamanho mínimo dos nós de codificação. Por conseguinte, um bitstream também pode estabelecer uma unidade de codificação menor (SCU). Esta invenção utiliza o termo "bloco" para se referir a qualquer um de uma CU, PU, ou TU, no contexto de HEVC, ou estruturas de dados ou semelhantes, no contexto de outros padrões (por exemplo, macroblocos e sub-blocos do mesmo em H.264/AVC).
[00040] A CU inclui um nó de codificação e unidades de predição (UP) e as unidades de transformada (TUS) associadas ao nó de codificação. Um tamanho da CU corresponde a um tamanho do nó de codificação e deve ter uma forma quadrada. O tamanho da CU pode variar de 8x8 pixels até o tamanho do treeblock com um máximo de 64x64 pixels ou maiores. 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, uma divisão da CU em uma ou mais PUs. Os modos de divisão podem diferir sea CU é ignorada ou codificada de modo direto, codificada por modo de intra-predição, ou codificada por modo de interpredição. As PUs podem ser dividias para serem não quadradas no formato. Os dados de sintaxe associados com uma CU também descrevem, por exemplo, a divisão da CU em uma ou mais TUs de acordo com um quadtree. Uma TU pode ser quadrada ou não-quadrada (por exemplo, retangular) no formato.
[00041] O padrão de HEVC permite as transformações de acordo com as TUs, que podem ser diferentes para diferentes UCs. As TUs são tipicamente dimensionadas com base no tamanho de PUs dentro de uma determinada CU definida para uma LCU dividida, embora esse possa não ser sempre o caso. As TUs são geralmente do mesmo tamanho ou menores do que as PUs. Em alguns exemplos, as amostras residuais correspondendo a uma CU podem ser subdivididas em unidades menores que utilizam uma estrutura de quadtree conhecida como "quadtree residual" (RQT). Os nós de folha do RQT podem ser referidos como unidades de transformada (TUS). Os valores de diferença de pixel associados com as TUs podem ser transformados para produzir coeficientes de transformada, que podem ser quantificados.
[00042] Uma CU de folha pode incluir uma ou mais unidades de predição (PUs). Em geral, uma PU representa uma área espacial correspondente a toda ou a uma porção da UC correspondente, e pode incluir dados para obter uma amostra de referência para a PU. Além disso, uma PU inclui dados referentes à predição. Por exemplo, quando a PU é codificada intra-modo, dados para a PU podem ser incluídos em um quadtree residual (RQT), que pode incluir dados que descrevem um modo de intra-predição para um TU correspondente ao PU. Como outro exemplo, quando a PU é codificada no inter-modo, o 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 (por exemplo, precisão de pixel de um quarto ou uma precisão de pixel de um oitavo), uma imagem de referência para a qual o vetor de movimento aponta, e ou uma lista de imagens/referência (por exemplo, lista 0, lista 1, ou lista C) para o vetor de movimento.
[00043] Uma CU de folha com uma ou mais PUs também pode incluir uma ou mais unidades de transformada (TUs). As unidades de transformada podem ser especificadas utilizando um RQT (também referido como uma estrutura de quadtree de TU), como discutido acima. Por exemplo, uma bandeira de divisão pode indicar se uma CU de folha é dividida em quatro unidades de transformada. Em seguida, cada unidade de transformada pode ser dividida ainda em sub-TUs adicionais. Quando uma TU não é dividida mais, pode ser referida como uma TU de folha. Geralmente, para a intra-codificação, todas as TUs de folha pertencentes a uma CU de folha compartilham o mesmo modo de intra-predição. Isto é, o mesmo modo de intra-predição é geralmente aplicado para calcular os valores previstos para todas as TUs de uma CU de folha. Para a intra-codificação, um codificador de vídeo pode calcular um valor residual em cada uma das TU de folhas utilizando o modo de intrapredição, tal como a diferença entre a porção da CU correspondente ao TU e o bloco original. Um TU não está necessariamente limitado ao tamanho de uma PU. Assim, a TU pode ser maior ou menor do que uma PU. Para a intracodificação, a PU pode ser colocado com um correspondente folha-TU para o mesmo CU. Em alguns exemplos, a dimensão máxima de uma TU de folha pode corresponder ao tamanho da CU da folha-correspondente.
[00044] Além disso, as TUs das Cu de folha também podem ser associadas com as respectivas estruturas de dados em quadtree, referida como quadtrees residuais (RQTs). Isto é, uma CU de folha pode incluir um quadtree indicando a forma como a CU da folha é dividida em TUs. O nó de raiz de um TU com quadtree geralmente corresponde a uma CU de folha, enquanto o nó raiz de uma quadtree de CU geralmente corresponde a um treeblock (ou LCU). TUs da RQT que não são divididas são referidas como TUs de folha. Em geral, essa invenção utiliza os termos CU e TU para se referir a CU folha e TU folha, respectivamente, salvo indicação em contrário.
[00045] Uma sequência de vídeo normalmente inclui uma série de quadros de vídeo ou imagens. Um grupo de imagens (GOP) geralmente compreende uma série de uma ou mais das imagens de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de uma ou mais imagens, ou em outro lugar, que descreve um número de imagens incluído no GOP. Cada fatia de uma imagem pode incluir dados de sintaxe de fatia que descrevem um modo de codificação para a respectiva fatia. O codificador de vídeo 20 normalmente funciona nos blocos de vídeo dentro de fatias de vídeo individuais a fim de codificar os dados de vídeo. Um bloco de vídeo pode corresponder a um nó de codificação dentro de uma CU. Os blocos de vídeo podem ter tamanhos fixos ou variáveis, e podem diferir em tamanho de acordo com um padrão de codificação especificado.
[00046] Como exemplo, o HM suporta a predição em vários tamanhos de PU. Assumindo-se que o tamanho de uma CU particular é 2Nx2N, o HM suporta a intra-predição em tamanhos de PU de 2Nx2N ou NxN, e a inter-predição em tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, ou NxN. O HM também suporta a divisão assimétrica para a interpredição em tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Na divisão assimétrica, uma direção de uma CU não é dividida, enquanto a outra direção é dividida em 25% e 75%. A parte da CU correspondente à divisão de 25% é indicada por um "n" seguido por uma indicação de "Cima", "Baixo", "Esquerda" ou "Direita". Assim, por exemplo, "2NxnU" refere-se a uma CU de 2Nx2N dividida horizontalmente com uma PU de 2Nx0,5N na parte superior e de 2Nx1.5N PU na parte inferior.
[00047] Nesta invenção, "NxN" e "N por N" podem ser usados indistintamente para referir-se as dimensões de pixel de um bloco de vídeo em termos de dimensões verticais e horizontais, por exemplo, 16x16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16x16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels em uma direção horizontal (x = 16). Do mesmo modo, um bloco de NxN geralmente tem N pixels em uma direção vertical e N pixels em uma direção horizontal, em que N representa um valor inteiro positivo. Os pixels de um bloco podem ser dispostos em filas e colunas. Além disso, os blocos não têm necessariamente de ter o mesmo número de pixels na direção horizontal que na direção vertical. Por exemplo, os blocos podem compreender NxM pixels, em que M não é necessariamente igual a N.
[00048] Depois da codificação intra-previsiva ou inter-previsiva utilizando as PUs de uma CU, o codificador de vídeo 20 pode calcular dados residuais para as TUs de uma CU.. As PUs podem compreender dados de sintaxe que descrevem um método ou modo de gerar dados de pixel preditos no domínio espacial (também referido como o domínio de pixel) e as TUs podem compreender coeficientes em um domínio de transformada após a aplicação de uma transformada, ex., uma transformada de cosseno discreta (DCT), uma transformada de número inteiro, uma transformada em ondeleta, ou uma transformada conceitualmente similar aos dados residuais de vídeo. Os dados residuais podem corresponder às 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 depois transformar as TUs para produzir coeficientes de transformada para a CU.
[00049] Depois de quaisquer transformadas para produzir coeficientes de transformada, o codificador de vídeo 20 pode realizar a quantificação de coeficientes de transformada. A quantificação geralmente refere-se a um processo no qual os coeficientes de transformada são quantificados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes, proporcionando a compressão adicional. O processo de quantificação pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. Por exemplo, um valor de bit n- pode ser arredondado para baixo para um valor de bit m- durante quantificação, onde n é maior que m.
[00050] Depois da quantificação, o codificador de vídeo pode varrer os coeficientes de transformada, produzindo um vetor unidimensional a partir da matriz bidimensional incluindo os coeficientes de transformada quantificados. A varredura pode ser projetada para colocar coeficientes de energia maior (e, portanto, de frequência inferior) na frente da matriz e colocar coeficientes de menor energia (e, portanto, maior frequência) na parte de trás da matriz. Em alguns exemplos, o codificador de vídeo 20 pode utilizar uma ordem de varredura predefinida para varrer os coeficientes de transformada quantificados para produzir um vetor em série que pode ser de entropia codificada. Em outros exemplos, o codificador de vídeo 20 pode realizar uma varredura adaptativa. Após a varredura dos coeficientes de transformada quantificados para formar um vetor unidimensional, o codificador de vídeo 20 pode codificar a entropia do vetor unidimensional, ex., de acordo com 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 com base na sintaxe (SBAC), Codificação por Entropia de Divisão de Intervalo de Probabilidade (PIPE) ou outra metodologia de codificação de entropia. O codificador de vídeo 20 também pode codificar a entropia dos elementos de sintaxe associados aos dados de vídeo codificados para uso pelo decodificador de vídeo 30 na decodificação dos dados de vídeo.
[00051] Para realizar a 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 se referir a, por exemplo, se valores vizinhos do símbolo são diferentes de zero ou não. Para realizar a CAVLC, o codificador de vídeo 20 pode escolher um código de comprimento variável para um símbolo a ser transmitido. As palavras código em VLC podem ser construídas tal que códigos relativamente mais curtos correspondem aos símbolos mais prováveis, enquanto códigos mais longos correspondem aos símbolos menos prováveis. Deste modo, o uso de VLC pode conseguir uma economia de bit, por exemplo, usando palavras código de comprimento igual para cada símbolo a ser transmitido. A determinação da probabilidade pode ser com base em um contexto atribuído ao símbolo.
[00052] O codificador de vídeo 20 pode ainda enviar dados de sintaxe, como dados de sintaxe a base de bloco, dados de quadro baseados em quadro, e dados de sintaxe a base de GOP, para o decodificador de vídeo 30, ex., em um cabeçalho do quadro, um cabeçalho do bloco, um cabeçalho de fatia, ou um cabeçalho de GOP. Os dados de sintaxe de GOP podem descrever um número de quadros no respectivo GOP, e os dados de sintaxe do quadro podem indicar um modo de codificação/predição usado para codificar o quadro correspondente.
[00053] Codificador de vídeo 20 e decodificador de vídeo 30 cada um pode ser implementado como qualquer de uma variedade de circuito de codificador ou decodificador adequado, como aplicável, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis em campo (FPGAs), circuito de lógica discreta, software, hardware, firmware ou qualquer combinação dos mesmos. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador de vídeo/decodificador combinado (CODEC). Um dispositivo incluindo codificador de vídeo 20 e/ou decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador, e/ou um dispositivo de comunicação remoto, como um telefone celular.
[00054] Padrões de codificação de vídeo podem incluir uma especificação de um modelo de armazenamento em buffer de vídeo. Em AVC e HEVC, o modelo de armazenamento em buffer é referido como um decodificador de referência hipotético (HRD), que inclui um modelo de armazenamento em buffer de ambos um buffer de imagem codificada (CEC) e um buffer de imagem decodificada (DPB) incluídos no codificador de vídeo 20 e/ou decodificador de vídeo 30, e os comportamentos de CPB e DPB são matematicamente especificados. O HRD impõe diretamente restrições em diferentes momentos, tamanhos de buffer e taxas de bits e, indiretamente, impõe restrições sobre as características e estatísticas do bitstream. Um conjunto completo de parâmetros HRD inclui cinco parâmetros básicos: atraso de remoção de CPB inicial, tamanho de CPB, taxa de bit, atraso da saída de DPB inicial e o tamanho de DPB. Em AVC e HEVC, a conformidade do bitstream e conformidade do decodificador são especificadas como partes da especificação de HRD. Embora seja nomeado como um tipo de decodificador, o HRD é normalmente necessário no lado do codificador para garantir a conformidade do bitstream, ou seja, a conformidade do bitstream gerado pelo codificador às exigências do decodificador, enquanto que normalmente não é necessário no lado do decodificador.
[00055] Nos modelos de AVC e HEVC HRD, a decodificação ou remoção de COB é com base na unidade de acesso, e assume-se que a decodificação da imagem é instantânea. Em aplicações práticas, se um decodificador em conformidade segue estritamente os tempos de decodificação sinalizados, por exemplo, nas mensagens de informação de melhoria suplementar de sincronização da imagem (SEI), para começar a decodificação das unidades de acesso, em seguida, o mais cedo possível para produzir uma determinada imagem decodificada é igual ao tempo de decodificação daquela determinada imagem mais o tempo necessário para decodificar essa imagem particular. Ao contrário dos modelos de AVC e HEVC HRD, o tempo necessário para a decodificação de uma imagem no mundo real não é igual a zero. Os termos "instantâneo" e "instantaneamente", como utilizados nesta invenção podem referir-se a qualquer período de tempo que pode ser assumido como sendo instantâneo em um ou mais modelos de codificação ou um aspecto idealizado de qualquer um ou mais modelos de codificação, com o entendimento de que este pode ser diferente de "instantâneo" no sentido físico ou literal. Por exemplo, para os fins desta descrição, uma função ou processo pode ser considerado nominalmente "instantâneo" se ocorrer em ou dentro de uma margem prática de um tempo possível mais rápido hipotético ou idealizado para a função ou processo a ser executado. A sintaxe e nomes de variáveis, como aqui utilizados podem, em alguns exemplos ser entendidos, de acordo com o seu significado dentro do modelo HEVC.
[00056] As descrições a seguir da operação do decodificador de referência hipotético (HRD) exemplar, operação exemplar para um buffer de imagem codificado, sincronização exemplar de uma chegada de bitstream, sincronização exemplar da remoção da unidade de decodificação, decodificação exemplar de uma unidade de decodificação, operação exemplar para um buffer de imagem decodificada, remoção exemplar das imagens de um buffer de imagem decodificada, saída de imagem exemplar, e marcação de imagem decodificada atual exemplar e armazenamento são fornecidos para ilustrar exemplos de codificador de vídeo 20 e/ou decodificador de vídeo 30 quer podem ser configurados para armazenar uma ou mais unidades de decodificação dos dados de vídeo em um buffer de imagem, obter um respectivo tempo de remoção de buffer para as uma ou mais unidades de decodificação, remover as unidades de decodificação do buffer de imagem de acordo com o tempo de remoção de buffer obtido para cada uma das unidades de decodificação, e codificar dados de vídeo correspondentes às unidades de decodificação removidas, dentre outras funções. As operações podem ser definidas ou realizadas de modo diferente, em outros exemplos. Desta maneira, o codificador de vídeo 20 e/ou decodificador de vídeo 30 podem ser configurados para funcionar de acordo com vários exemplos das operações de HRD descritas abaixo.
[00057] O HRD pode ser inicializado em qualquer uma das mensagens de informação de melhoria suplementar (SEI) do período de armazenamento em buffer. Antes da inicialização, o CPB pode estar vazio. Após a inicialização, o HRD pode não ser inicializado novamente pelas mensagens SEI do período de armazenamento em buffer subsequente. A unidade de acesso que é associada com a mensagem SEI do período de armazenamento em buffer que inicializa o CPB pode ser referida como a unidade de acesso 0. O buffer de imagem decodificada pode conter buffers de armazenamento de imagem. Cada um dos buffers de armazenamento de imagem pode conter uma imagem decodificada que é marcada como “usada para referência” ou é mantida para saída futura. Antes da inicialização, o DPB pode estar vazio.
[00058] O HRD (ex., codificador de vídeo 20 e/ou decodificador de vídeo 30) pode funcionar como segue. Os dados associados com as unidades de decodificação que fluem para o CPB de acordo com um cronograma de chegada especificado podem ser entregues por um programador de fluxo hipotético (HSS). Em um exemplo, os dados associados com cada unidade de decodificação podem ser removidos e decodificados instantaneamente pelo processo de decodificação instantâneo nos tempos de remoção de CPB. Cada imagem decodificada pode ser colocada no DPB. Uma imagem decodificada pode ser removida do DPB no último do tempo de saída do DPB ou o tempo em que ele se torna não mais necessários para a referência da inter-predição.
[00059] O HRD depende dos parâmetros HRD, incluindo parâmetros CPB do atraso de remoção de CPB inicial e deslocamento de atraso de remoção de CPB inicial. Em alguns casos, os parâmetros HRD podem ser determinados com base em um tipo de imagem usado para inicializar o HRD. No caso do acesso aleatório, o HRD pode ser inicializado com a imagem de ponto de acesso aleatório (RAP), como uma imagem de acesso aleatório limpa (CRA) ou uma imagem de acesso a link rompido (BLA). Em alguns casos, as imagens RAP podem alternativamente ser referidas como imagens de ponto de acesso intra-aleatório (IRAP). Por exemplo, um conjunto alternativo de parâmetros CPB pode ser usado quando o HRD é inicializado com uma imagem BLA que não tem imagens de topo não-decodificáveis associadas, também referida como marcadas para imagens de descarte (TFD) ou imagens de Topo Não Reconhecidas de Acesso Aleatório (RASL), no bitstream. Caso contrário, o conjunto de parâmetros CPB padrão é usado para o HRD. Se um conjunto de parâmetros CPB padrão é utilizado quando o conjunto alternativo deveria ter sido selecionado, o CPB pode sobrecarregar.
[00060] Em alguns exemplos, uma dada imagem CRA ou imagem BLA pode ter imagens TFD associadas em um bitstream original e as imagens TFD podem ser removidas do bitstream original por um meio externo. O meio externo pode compreender um meio de processamento incluído em um servidor de streaming, um elemento de rede intermediário, ou outra entidade de rede. O meio externo, no entanto, pode ser incapaz de alterar o tipo sinalizado da dada imagem CRA ou imagem BLA para refletir a remoção das imagens TFD associadas. Neste caso, o conjunto de parâmetros CPB padrão pode ser selecionado com base no tipo sinalizado da imagem CRA ou imagem BLA no bitstream original. Isto pode resultar em uma sobrecarga do CPB porque as imagens TFD foram removidas pelo meio externo tal que a imagem não tem mais imagens TFD associadas e o conjunto alternativo de parâmetros CPB deve ser usado para o HRD.
[00061] Esta invenção descreve técnicas para a seleção de parâmetros CPB usados para definir um CPB para codificador de vídeo 20 e/ou decodificador de vídeo 30 para imagens CRA ou BLA imagens em um bitstream de vídeo. De acordo com as técnicas, o decodificador de vídeo 30 recebe um bitstream representeando uma pluralidade de imagens incluindo uma ou mais imagens CRA ou imagens BLA, e também recebe uma mensagem indicando quando usar um conjunto alternativo de parâmetros CPB para pelo menos uma das imagens CRA ou as imagens BLA. A mensagem pode ser recebida a partir de um meio externo, como um meio de processamento incluído em um servidor de streaming, um elemento de rede intermediário, ou outra entidade de rede.
[00062] Decodificador de vídeo 30 define uma variável definida para indicar o conjunto de parâmetros CPB para uma dada das imagens CRA ou imagens BLA com base na mensagem recebida. O decodificador de vídeo 30 então seleciona o conjunto de parâmetros CPB para a determinada das imagens CRA ou as imagens BLA com base na variável para a imagem. Em alguns casos, o decodificador de vídeo 30 pode definir um tipo de unidade da camada de abstração de rede (NAL) para a determinada das imagens CRA ou as imagens BLA, e pode selecionar o conjunto de parâmetros CPB para a dada imagem com base no tipo de unidade NAL e a variável para a imagem.
[00063] O conjunto de parâmetros CPB selecionado é aplicado a um CPB incluído no decodificador de vídeo 30 para garantir que o CPB não vai sobrecarregar durante a decodificação de vídeo. O codificador de vídeo 20 pode ser configurado para realizar uma operação similar e aplicar o conjunto de parâmetros CPB selecionado a um CPB incluído no codificador de vídeo 20 para garantir que o CPB incluído no codificador de vídeo 20 não vai sobrecarregar durante a codificação de vídeo, e que o CPB incluído no decodificador de vídeo 30 não vai sobrecarregar mediante o recebimento de um bitstream codificado pelo codificador de vídeo 20.
[00064] A FIG. 2 é um diagrama em blocos que ilustra um exemplo de codificador de vídeo 20 que pode implementar as técnicas descritas nesta invenção. O codificador de vídeo 20 pode realizar a intra- e intercodificação dos blocos de vídeo dentro das fatias de vídeo. A intra codificação depende da predição espacial para reduzir ou remover a redundância espacial em vídeo dentro de um determinado quadro de vídeo ou imagem. A intercodificação depende da predição temporal para reduzir ou remover a redundância temporal em vídeo dentro dos quadros adjacentes ou imagens de uma sequência de vídeo. O intramodo (modo I) pode se referir a qualquer de vários modos de codificação com base espacial. Os inter-modos, como a predição unidirecional (modo P) ou bi-predição (modo B), podem se referir a qualquer um dos vários modos de codificação baseados no tempo.
[00065] Como mostrado na FIG. 2, o codificador de vídeo 20 recebe um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da FIG. 2, o codificador de vídeo 20 inclui a unidade de seleção de modo 40, somador 50, unidade de processamento de transformada 52, unidade de quantificação 54, unidade de codificação de entropia 56, buffer de imagem decodificada (DPB) 64 e buffer de imagem codificado (CPB) 66. A unidade de seleção de modo 40, por sua vez, inclui a unidade de compensação de movimento 44, a unidade de estimativa do movimento 42, a unidade de processamento de intra-predição 46 e a unidade de divisão 48. Para a reconstrução do bloco de vídeo, o codificador de vídeo 20 também inclui a unidade de quantificação inversa 58, unidade de processamento de transformada inversa 60, e somador 62. Um filtro de desbloqueio (não mostrado na FIG. 2) também pode ser incluído para filtrar os limites do bloco para remover os artefatos de blocagem do vídeo reconstruído. Se desejado, o filtro de desbloqueio normalmente filtraria a saída do somador 62. Filtros adicionais (em circuito ou pós circuito) também podem ser usados além do filtro de desbloqueio. Tais filtros não são mostrados por brevidade, mas se desejado, podem filtrar a saída do somador 50 (como um filtro em circuito).
[00066] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro de vídeo ou fatia a ser decodificada. O quadro ou fatia pode ser dividido em vários blocos de vídeo. A unidade de estimativa do movimento 42 e unidade de compensação de movimento 44 realizam a codificação inter-previsiva do bloco de vídeo recebido em relação a um ou mais blocos em um ou mais quadros de referência para fornecer a predição temporal. A unidade de processamento de intra-predição 46 pode alternativamente realizar a codificação intra-previsiva do bloco de vídeo recebido em relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer a predição espacial. O codificador de vídeo 20 pode realizar várias passagens de codificação, ex., para escolher um modo de codificação adequado para cada bloco dos dados de vídeo.
[00067] Além disso, a unidade de divisão 48 pode dividir blocos de dados de vídeo em sub-blocos, com base na avaliação dos esquemas de divisão anteriores nas passagens de codificação anteriores. Por exemplo, a unidade de divisão 48 pode inicialmente dividir um quadro ou fatia em LCUs, e a divisão de cada uma das LCUs em sub-CUs com base nas análises de distorção de taxa (ex., otimização da distorção de taxa). A unidade de seleção de modo 40 pode ainda produzir uma estrutura de dados em quadtree indicativa da divisão de uma LCU em sub-CUs. As CUs de nó de folha do quadtree podem incluir uma ou mais PUs e uma ou mais TUs.
[00068] A unidade de seleção de modo 40 pode escolher um dos modos de codificação, intra ou inter, ex., com base nos resultados de erro, e fornecer o bloco intraou inter-codificado resultante para o somador 50 para gerar dados de bloco residual e para o somador 62 para reconstruir o bloco codificado para uso como um quadro de referência. A unidade de seleção de modo 40 também fornece elementos de sintaxe, como vetores de movimento, indicadores de intra-modo, informação de divisão, e outras dessas informações de sintaxe, para a unidade de codificação de entropia 56.
[00069] A unidade de estimativa do movimento 42 e unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente para fins conceituais. A estimativa de movimento, realizadas pela unidade de estimativa do movimento 42, é o processo de geração dos vetores de movimento, que estima 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 de um quadro de vídeo ou imagem atual em relação a um bloco de predição dentro de um quadro de referência (ou outra unidade codificada) em relação ao bloco atual sendo codificado dentro do quadro atual (ou outra unidade codificada). Um bloco de predição é um bloco que é descoberto por corresponder muito de perto ao bloco a ser codificado, em termos de diferença de pixel, que pode ser determinada pela soma da diferença absoluta (SAD), soma da diferença ao quadrado (SSD), ou outras métricas de diferença. Em alguns exemplos, o codificador de vídeo 20 pode calcular valores para as posições de pixel subinteiras das imagens de referência armazenadas na DPB 64. Por exemplo, codificador de vídeo 20 pode interpolar valores de posições de pixel de um quarto, posições de pixel de um oitavo, ou outras posições de pixel fracionárias da imagem de referência. Portanto, a unidade de estimativa do movimento 42 pode realizar uma busca de movimento em relação às posições de pixel cheias e posições de pixel fracionárias e produzir um vetor de movimento com a precisão de pixel fracionária.
[00070] A unidade de estimativa do movimento 42 calcula um vetor de movimento para uma PU de um bloco de vídeo em uma fatia inter-codificada pela comparação da posição da PU com a position de um bloco de predição de uma imagem de referência. A imagem de referência pode ser escolhida a partir da primeira lista de imagem de referência (Lista 0) ou segunda lista de imagem de referência (Lista 1), cada uma das quais identifica uma ou mais imagens de referência armazenadas na DPB 64. A unidade de estimativa do movimento 42 envia o vetor de movimento calculado para a unidade de codificação de entropia 56 e unidade de compensação de movimento 44.
[00071] A compensação do movimento, realizada pela unidade de compensação de movimento 44, pode envolver buscar ou gerar o bloco de predição com base no vetor de movimento determinado pela unidade de estimativa do movimento 42. Novamente, a unidade de estimativa do movimento 42 e unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos. Mediante recebimento do vetor de movimento para a PU do bloco de vídeo atual, a unidade de compensação de movimento 44 pode localizar o bloco de predição para o qual o vetor de movimento aponta em uma das listas de imagem de referência. O somador 50 forma um bloco de vídeo residual pela subtração dos valores de pixel do bloco de predição dos valores de pixel do bloco de vídeo atual sendo codificado, formando valores de diferença de pixel, como discutido abaixo. Em geral, a unidade de estimativa do movimento 42 realiza a estimativa de movimento em relação aos componentes luma, e a unidade de compensação de movimento 44 usa vetores de movimento calculados com base nos componentes luma para ambos os componente cromas e componentes luma. A unidade de seleção de modo 40 também pode gerar elementos de sintaxe associados com os blocos de vídeo e a fatia de vídeo para uso pelo decodificador de vídeo 30 na decodificação dos blocos de vídeo da fatia de vídeo.
[00072] A unidade de processamento de intrapredição 46 pode intra-predizer um bloco atual, como uma alternativa à inter-predição realizada pela unidade de estimativa do movimento 42 e unidade de compensação de movimento 44, como descrito acima. Em particular, a unidade de processamento de intra-predição 46 pode determinar um modo de intra-predição para usar para codificar um bloco atual. Em alguns exemplos, a unidade de processamento de intra-predição 46 pode codificar um bloco atual usando vários modos de intra-predição, ex., durante passagens de codificação separadas, e unidade de processamento de intrapredição 46 (ou unidade de seleção de modo 40, em alguns exemplos) pode escolher um modo de intra-predição adequado para uso a partir dos modos testados.
[00073] Por exemplo, a unidade de processamento de intra-predição 46 pode calcular os valores de distorção de taxa usando uma analise de distorção de taxa para os vários modos de intra-predição testados, e escolher o modo de intra-predição tendo as melhores características de distorção de taxa dentre os modos testados. A análise de distorção de taxa geralmente determina uma quantidade de distorção (ou erro) entre um bloco codificado e um original, bloco não codificado que foi codificado para produzir o bloco codificado, assim como uma taxa de bit (isto é, um número de bits) usada para produzir o bloco codificado. A unidade de processamento de intra-predição 46 pode calcular as razões a partir das distorções e taxas para os vários blocos codificados para determinar qual modo de intra-predição exibe o melhor valor de distorção de taxa para o bloco.
[00074] Após selecionar um modo de intrapredição para um bloco, a unidade de processamento de intra-predição 46 pode fornecer a informação indicativa do modo de intra-predição escolhido para o bloco para a unidade de codificação de entropia 56. A unidade de codificação de entropia 56 pode codificar a informação que indica o modo de intra-predição selecionado. O codificador de vídeo 20 pode incluir nos dados da configuração do bitstream transmitido, que podem incluir uma pluralidade de tabelas do índice de modo de intra-predição e um pluralidade de tabelas do índice de modo de intra-predição modificadas (também referidas como tabelas de mapeamento de palavra código), as definições dos contextos de codificação para vários blocos, e indicações de um modo de intrapredição mais provável, uma tabela do índice do modo de intra-predição, e uma tabela do índice de modo de intrapredição modificado para usar para cada um dos contextos.
[00075] O codificador de vídeo 20 forma um bloco de vídeo residual pela subtração dos dados de predição da unidade de seleção de modo 40 a partir do bloco de vídeo original sendo codificado. O somador 50 representa o componente ou componentes que realizam esta operação de subtração. A unidade de processamento de transformada 52 aplica uma transformada, como uma transformada de cosseno discreta (DCT) ou uma transformada conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficiente de transformada residual. A unidade de processamento de transformada 52 pode realizar outras transformadas que são conceitualmente similares à DCT. Transformadas de onduleta, transformadas de número inteiro e transformadas de sub-banda ou outros tipos de transformada também poderiam ser usados. Em qualquer caso, 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 a informação residual de um domínio de valor de pixel para um domínio de transformada, como um domínio de frequência. A unidade de processamento de transformada 52 pode enviar os coeficientes de transformada resultantes para a unidade de quantificação 54. A unidade de quantificação 54 quantifica os coeficientes de transformada para reduzir ainda mais a taxa de bit. O processo de quantificação pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. O grau de quantificação pode ser modificado pelo ajuste de um parâmetro de quantificação. Em alguns exemplos, a unidade de quantificação 54 pode então realizar uma varredura da matriz incluindo os coeficientes de transformada quantificados. Alternativamente, a unidade de codificação de entropia 56 pode realizar a varredura.
[00076] Após a quantificação, a unidade de codificação de entropia 56 codifica a entropia dos coeficientes de transformada quantificados. Por exemplo, a unidade de codificação de entropia 56 pode realizar a 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 com base na sintaxe (SBAC), codificação por Entropia de Divisão de Intervalo de Probabilidade (PIPE) ou outra técnica de codificação por entropia. No caso da codificação por entropia com base no contexto, o contexto pode ser baseado nos blocos vizinhos. Depois da codificação por entropia pela unidade de codificação de entropia 56, o bitstream codificado pode ser armazenado em buffer e armazenado mais ou menos temporariamente no CPB 66, transmitido para outro dispositivo (ex., o decodificador de vídeo 30) ou arquivado para transmissão posterior ou recuperação.
[00077] A unidade de quantificação inversa 58 e unidade de processamento de transformada inversa 60 aplicam a quantificação inversa e transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, ex., para uso posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência pela adição do bloco residual a um bloco de predição feito de quadros do DPB 64. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular valores de pixel subinteiros para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de predição compensado de movimento produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenar no DPB 64. O bloco de vídeo reconstruído pode ser usado pela unidade de estimativa do movimento 42 e a unidade de compensação de movimento 44 como um bloco de referência para inter-codificar um bloco em um quadro de vídeo subsequente.
[00078] DPB 64 pode ser ou pode estar incluído em um dispositivo de armazenamento de dados, como qualquer memória permanente ou volátil capaz de armazenar dados, como memória de acesso aleatório dinâmica síncrona (SDRAM), memória de acesso aleatório dinâmica embutida (eDRAM), ou memória de acesso aleatório estática (SRAM). DPB 64 pode funcionar de acordo com qualquer combinação de comportamentos de buffer de imagem codificada exemplar e/ou buffer de imagem decodificada descritos nesta invenção. Por exemplo, o codificador de vídeo 20 pode ser configurado para funcionar de acordo com um decodificador de referência hipotético (HRD). Neste caso, o DPB 64 incluído no codificador de vídeo 20 pode ser definido pelos parâmetros HRD, incluindo parâmetros CPB e parâmetros DPB, de acordo com um modelo de armazenamento em buffer do HRD.
[00079] Da mesma forma, CPB 66 pode ser ou pode estar incluído em um dispositivo de armazenamento de dados como qualquer memória permanente ou volátil capaz de armazenar dados, como memória de acesso aleatório dinâmica síncrona (SDRAM), memória de acesso aleatório dinâmica embutida (eDRAM), ou memória de acesso aleatório estática (SRAM). Embora mostrado como fazendo parte do codificador de vídeo 20, em alguns exemplos, o CPB 66 pode fazer parte de um dispositivo, unidade ou módulo externo ao codificador de vídeo 20. Por exemplo, CPB 66 pode fazer parte de uma unidade programadora de fluxo, ex., um programador de entrega ou um programador de fluxo hipotético (HSS) externo ao codificador de vídeo 20. No caso onde o codificador de vídeo 20 é configurado para funcionar de acordo com um HRD, o CPB 66 incluído no codificador de vídeo 20 pode ser definido pelos parâmetros HRD, incluindo os parâmetros CPB do atraso e deslocamento de remoção do CPB iniciais, de acordo com um modelo de armazenamento em buffer do HRD.
[00080] De acordo com as técnicas desta invenção, o codificador de vídeo 20 pode aplicar ou um conjunto padrão ou um conjunto alternativo de parâmetros CPB ao CPB 66 para garantir que o CPB 66 não se sobrecarregará durante a codificação dos dados de vídeo, e que um CPB incluído no decodificador de vídeo 30 não se sobrecarrega mediante recebimento de um bitstream codificado gerado pelo codificador de vídeo 20. Se o conjunto padrão é utilizado quando o conjunto alternativo deveria ter sido escolhido, o CPB 66 incluído no codificador de vídeo 20 ou o CPB incluído no decodificador de vídeo 30 pode se sobrecarregar. A seleção dos parâmetros CPB adequados é principalmente uma preocupação quando uma imagem de ponto de acesso aleatório (RAP), como uma imagem de acesso aleatório limpa (CRA) ou uma imagem de acesso a link rompido (BLA), é usada para inicializar o HRD. As técnicas, portanto, podem proporcionar um suporte melhorado das imagens RAP na codificação de vídeo.
[00081] Codificador de vídeo 20 pode ser configurado para receber um bitstream representeando uma pluralidade de imagens incluindo uma ou mais imagens CRA ou imagens BLA, e também recebe uma mensagem indicando quando usar um conjunto alternativo de parâmetros CPB para pelo menos uma das imagens CRA ou as imagens BLA. Em alguns casos, o bitstream pode ser recebido em uma porção de decodificação do codificador de vídeo 20, i.e., unidade de quantificação inversa 58 e unidade de processamento de transformada inversa 60, diretamente a partir de uma porção de codificação do codificador de vídeo 20, ex., unidade de codificação de entropia 56 ou CPB 66. A mensagem pode ser recebida a partir de um meio externo, como um meio de processamento incluído em um servidor de streaming, um elemento de rede intermediário, ou outra entidade de rede.
[00082] Codificador de vídeo 20 define uma variável definida para indicar o conjunto de parâmetros CPB para uma dada das imagens CRA ou imagens BLA com base na mensagem recebida. Codificador de vídeo 20 então seleciona o conjunto de parâmetros CPB para a determinada das imagens CRA ou as imagens BLA com base na variável para a imagem. Codificador de vídeo 20 aplica o conjunto de parâmetros CPB selecionado ao CPB 66 incluído no codificador de vídeo 20 para garantir que o CPB 66 não vai sobrecarregar durante a codificação de vídeo, e para garantir que o CPB incluído no decodificador de vídeo 30 não vai sobrecarregar mediante o recebimento de um bitstream codificado pelo codificador de vídeo 20. Em alguns casos, codificador de vídeo 20 pode definir um tipo de unidade da camada de abstração de rede (NAL) para a determinada das imagens CRA ou as imagens BLA, e pode selecionar o conjunto de parâmetros CPB para a dada imagem com base no tipo de unidade NAL e a variável para a imagem. O processo de seleção de parâmetro de CPB para imagens RAP é descrito em mais detalhe com relação ao decodificador de vídeo 30 da FIG. 3.
[00083] FIG. 3 é um diagrama em bloco que ilustra um exemplo de decodificador de vídeo 30 que pode implementar as técnicas descritas nesta invenção. No exemplo de FIG. 3, o decodificador de vídeo 30 inclui uma unidade de decodificação de entropia 70, unidade de processamento de predição 71 incluindo a unidade de compensação de movimento 72 e unidade de processamento de intra-predição 74, unidade de quantificação inversa 76, unidade de processamento de transformada inversa 78, somador 80, buffer de imagem codificado (CPB) 68 e buffer de imagem decodificada (DPB) 82. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente recíproca à passagem de codificação descrita com relação ao codificador de vídeo 20 a partir da FIG. 2.
[00084] Durante o processo de decodificação, o decodificador de vídeo 30 recebe um bitstream do vídeo codificado que representa blocos de vídeo de uma fatia do vídeo codificado e elementos de sintaxe associados do codificador de vídeo 20. O decodificador de vídeo 30 pode receber o bitstream de vídeo codificado a partir de uma entidade de rede 29. A entidade de rede 29 pode, por exemplo, se um servidor de streaming, um elemento de rede com reconhecimento de mídia (MANE), um editor/emendador de vídeo, um elemento de rede intermediário, ou outro dispositivo similar configurado para aplicar uma ou mais das técnicas acima descritas. A entidade de rede 29 pode incluir um meio externo configurado para realizar as técnicas desta invenção. Como descrito acima, algumas das técnicas descritas nesta invenção podem ser implementadas pela entidade de rede 29 antes da entidade de rede 29 transmitir o bitstream de vídeo codificado para o decodificador de vídeo 30. Em alguns sistemas de decodificação de vídeo, a entidade de rede 29 e decodificador de vídeo 30 podem ser partes de dispositivos separados, enquanto que em outros exemplos, a funcionalidade descrita com relação à entidade de rede 29 pode ser realizada pelo mesmo dispositivo que compreende decodificador de vídeo 30.
[00085] Antes da codificação de entropia pela unidade de codificação de entropia 70, o bitstream pode ser armazenado em buffer ou armazenado mais ou menos temporariamente no CPB 68. A unidade de decodificação de entropia 70 do decodificador de vídeo 30 então decodifica a entropia do bitstream para gerar coeficientes quantificados, vetores de movimento ou indicadores do modo de intra-predição, e outros elementos de sintaxe. A unidade de decodificação de entropia 70 encaminha os vetores de movimento e outros elementos de sintaxe para a unidade de compensação de movimento 72. O decodificador de vídeo 30 pode receber os elementos de sintaxe no nível de fatia de vídeo e/ou o nível de bloco de vídeo.
[00086] Quando a fatia de vídeo é codificada como uma fatia intra-codificada (I), a unidade de processamento de intra-predição 74 pode gerar a predição dados para um bloco de vídeo da fatia de vídeo atual com base em um modo de intra-predição sinalizado e dados dos blocos anteriormente decodificados do quadro ou imagem atual. Quando o quadro de vídeo é codificado como uma fatia inter-codificada (i.e., B ou P), a unidade de compensação de movimento 72 produz blocos de predição para um bloco de vídeo da fatia de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe recebidos da unidade de decodificação de entropia 70. Os blocos de predição podem ser produzidos a partir de uma das imagens de referência dentro de uma das listas de imagem de referência. O decodificador de vídeo 30 pode construir o quadro de listas de referência, Lista 0 e Lista 1, usando técnicas de construção padrão com base nas imagens de referência armazenadas no DPB 82.
[00087] A unidade de compensação de movimento 72 determina a informação de predição para um bloco de vídeo da fatia de vídeo atual pela análise dos vetores de movimento e outros elementos de sintaxe, e usa a informação de predição para produzir os blocos de predição para o bloco de vídeo atual sendo decodificado. Por exemplo, a unidade de compensação de movimento 72 usa alguns dos elementos de sintaxe recebidos para determinar um modo de predição (ex., intra- ou inter-predição) usado para codificar os blocos de vídeo de uma fatia de vídeo, um tipo de fatia de inter-predição (ex., fatia B ou fatia P), informação de construção para uma ou mais das listas de imagem de referência para a fatia, vetores de movimento para cada bloco de vídeo inter-codificado da fatia, status de inter-predição para cada bloco de vídeo inter-codificado da fatia, e outras informações para decodificar os blocos de vídeo na fatia de vídeo atual.
[00088] A unidade de compensação de movimento 72 também pode realizar a interpolação com base nos filtros de interpolação. A unidade de compensação de movimento 72 pode usar filtros de interpolação como usado pelo codificador de vídeo 20 durante a codificação dos blocos de vídeo para calcular valores interpolados para pixels subinteiros dos blocos de referência. Neste caso, a unidade de compensação de movimento 72 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 a partir dos elementos de sintaxe recebidos e usar os filtros de interpolação para produzir blocos de predição. A unidade de quantificação inversa 76 quantifica inversamente, i.e., de quantifica, os coeficientes de transformada quantificados fornecidos no bitstream e decodificados pela unidade de decodificação de entropia 70. O processo de quantificação inversa pode incluir o uso de um parâmetro de quantificação QPY calculado pelo decodificador de vídeo 30 para cada bloco de vídeo em uma fatia de vídeo para determinar um grau de quantificação e, da mesma forma, um grau de quantificação inversa que deveria ser aplicada.
[00089] A unidade de processamento de transformada inversa 78 aplica uma transformada inversa, ex., uma DCT inversa, uma transformada de número inteiro inversa, ou um processo de transformada inversa conceitualmente similar, aos coeficientes de transformada a fim de produzir blocos residuais no domínio de pixel.
[00090] Após a unidade de compensação de movimento 72 gerar o bloco de predição para o bloco de vídeo atual com base nos vetores de movimento e outros elementos de sintaxe, o decodificador de vídeo 30 forma um bloco de vídeo decodificado pela soma dos blocos residuais a partir da unidade de processamento de transformada inversa 78 com os blocos de predição correspondentes gerados pela unidade de compensação de movimento 72. O somador 90 representa o componente ou componentes que realizam esta operação de soma. Se desejado, um filtro de desbloqueio também pode ser aplicadas para filtrar os blocos decodificados a fim de remover artefatos de blocagem. Outros filtros de circuito (ou no circuito de codificação ou após o circuito de codificação) também podem ser usados para transições de pixel suaves, ou de outra forma para melhorar a qualidade do vídeo. Os blocos decodificados de vídeo em um dado quadro ou imagem são então armazenados no DPB 82, que armazena as imagens de referência usadas para a compensação do movimento subsequente. O DPB 82 também armazena o vídeo decodificado para a apresentação posterior em um dispositivo de exibição, como dispositivo de exibição 32 da FIG. 1.
[00091] O DPB 82 pode ser ou pode estar incluído em um dispositivo de armazenamento de dados, como qualquer memória permanente ou volátil capaz de armazenar dados, como memória de acesso aleatório dinâmica síncrona (SDRAM), memória de acesso aleatório dinâmica embutida (eDRAM), ou memória de acesso aleatório estática (SRAM). O DPB 82 pode funcionar de acordo com qualquer combinação de comportamentos de buffer de imagem codificada exemplar e/ou buffer de imagem decodificada descritos nesta invenção. Por exemplo, a decodificador de vídeo 30 pode ser configurada para funcionar de acordo com um decodificador de referência hipotético (HRD). Neste caso, o decodificador de vídeo 30 pode decodificar parâmetros HRD, incluindo parâmetros CPB e parâmetros DPB, usados para definir o DPB 82 de acordo com um modelo de armazenamento em buffer do HRD.
[00092] Da mesma forma, o CPB 68 pode ser ou pode estar incluído em um dispositivo de armazenamento de dados como qualquer memória permanente ou volátil capaz de armazenar dados, como memória de acesso aleatório dinâmica síncrona (SDRAM), memória de acesso aleatório dinâmica embutida (eDRAM), ou memória de acesso aleatório estática (SRAM). Embora mostrado como fazendo parte do decodificador de vídeo 30, em alguns exemplos, CPB 68 pode fazer parte de um dispositivo, unidade ou módulo externo ao decodificador de vídeo 30. Por exemplo, o CPB 68 pode fazer parte de uma unidade programadora de fluxo, ex., um programador de entrega ou um programador de fluxo hipotético (HSS) externo ao decodificador de vídeo 30. No caso onde o decodificador de vídeo 30 é configurado para funcionar de acordo com um HRD, o decodificador de vídeo 30 pode decodificar parâmetros HRD, incluindo os parâmetros CPB do atraso e deslocamento de remoção do CPB iniciais, usados para definir o CPB 68 de acordo com um modelo de armazenamento em buffer do HRD.
[00093] De acordo com as técnicas desta invenção, o decodificador de vídeo 30 pode aplicar ou um conjunto padrão ou um conjunto alternativo de parâmetros CPB ao CPB 68 para garantir que o CPB 68 não se sobrecarrega durante a decodificação dos dados de vídeo. Se o conjunto padrão é utilizado quando o conjunto alternativo deveria ter sido escolhido, o CPB 68, inclui um decodificador de vídeo 30 configurado para funcionar de acordo com o HRD, pode se sobrecarregar. A seleção dos parâmetros CPB adequados é principalmente uma preocupação quando uma imagem de ponto de acesso aleatório (RAP), como uma imagem de acesso aleatório limpa (CRA) ou uma imagem de acesso a link rompido (BLA), é usada para inicializar o HRD. As técnicas, portanto, podem proporcionar um suporte melhorado das imagens RAP na codificação de vídeo.
[00094] Decodificador de vídeo 30 recebe um bitstream representeando uma pluralidade de imagens incluindo uma ou mais imagens CRA ou imagens BLA, e também recebe uma mensagem indicando quando usar um conjunto alternativo de parâmetros CPB para pelo menos uma das imagens CRA ou as imagens BLA. A mensagem pode ser recebida a partir da entidade de rede 29 ou outros meios externos, como um meio de processamento incluído em um servidor de streaming ou um elemento de rede intermediário.
[00095] Decodificador de vídeo 30 define uma variável definida para indicar o conjunto de parâmetros CPB para uma dada das imagens CRA ou imagens BLA com base na mensagem recebida. O dispositivo de codificação de vídeo então seleciona o conjunto de parâmetros CPB para a determinada das imagens CRA ou as imagens BLA com base na variável para a imagem. O decodificador de vídeo 30 aplica o conjunto de parâmetros CPB selecionado ao CPB 68 para garantir que CPB 68 não vai sobrecarregar durante a decodificação de vídeo. Em alguns casos, o decodificador de vídeo 30 pode definir um tipo de unidade da camada de abstração de rede (NAL) para a determinada das imagens CRA ou as imagens BLA. O decodificador de vídeo 30 pode definir o tipo de unidade NAL para a imagem como sinalizado, ou pode definir o tipo de unidade NAL com base na variável para a imagem. O decodificador de vídeo 30 pode então selecionar o conjunto de parâmetros CPB para a dada imagem com base no tipo de unidade NAL e a variável para a imagem.
[00096] Em geral, esta invenção descreve técnicas para fornecer o suporte melhorado das imagens RAP, incluindo métodos melhorados de seleção de parâmetros HRD para imagens RAP, e manejo de uma imagem CRA como uma imagem BLA. Como descrito acima, padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), incluindo suas extensões de Codificação de Vídeo Escalável (SVC) e Codificação de Vídeo em Multivista (MVC). Além disso, há um novo padrão de codificação de vídeo, a saber Codificação de Vídeo de Alta Eficiência (HEVC), sendo desenvolvido pela Equipe de Colaboração Conjunta sobre Codificação de Vídeo (JCT-VC) do Grupo de Especialistas em Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialistas em Imagem em Movimento ISO/IEC (MPEG). Um Projeto de Trabalho (WD) recente de HEVC (doravante referido como HEVC WD8) é descrito no documento JCTVC-J1003_d7, Bross et al., “High Efficiency Vídeo Coding (HEVC) Text Specification Draft 8,” Joint Collaborative Team on Vídeo Coding (JCT-VC) of ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 10th Meeting: Stockholm, Sweden, 11-20 July 2012, o qual, como o de 20 de setembro de 2012, está disponível em http://phenix.intevry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVCJ1003-v8.zip.
[00097] Acesso aleatório refere-se a uma decodificação de um bitstream de vídeo a partir de uma imagem codificada que não é a primeira imagem codificada no bitstream. O acesso aleatório a um bitstream é necessário em muitas aplicações de vídeo, como a transmissão e streaming, por exemplo, para que os usuários sintonizaremse a um programa a qualquer hora, para alternar entre diferentes canais, para saltar para partes específicas do vídeo, ou para mudar para um bitstream diferente para a adaptação do fluxo da taxa de bits, taxa de quadros, resolução espacial, e assim por diante. Esse recurso é ativado através pela inserção de imagens de acesso aleatório ou pontos de acesso aleatório muitas vezes em intervalos regulares, no bitstream de vídeo.
[00098] A junção de bitstream refere-se à concatenação de dois ou mais bitstreams ou suas partes. Por exemplo, um primeiro bitstream pode ser acrescentado por um segundo bitstream, possivelmente com algumas modificações, quer em um ou ambos os bitstreams para gerar um bitstream emendado. A primeira imagem codificada no segundo bitstream também é referida como o ponto de junção. Portanto, as imagens após o ponto de junção no bitstream emendado foram originadas a partir do segundo bitstream enquanto as imagens anteriores do ponto de junção no bitstream emendado foram originadas a partir do primeiro bitstream.
[00099] A junção de bitstreams é realizada por emendadores de bitstream. Emendadores de bitstream são muitas vezes leves e muito menos inteligentes do que codificadores. Por exemplo, eles podem não ser equipados com capacidades de decodificação e codificação de entropia. A comutação de bitstream pode ser utilizada em ambientes de streaming adaptativo. Uma operação de comutação de bitstream em uma determinada imagem no bitstream comutado é efetivamente uma operação de junção de bitstream, em que o ponto de junção é o ponto de comutação de bitstream, ou seja, a primeira imagem a partir do bitstream comutado.
[000100] Imagens de restauração de codificação instantâneas (IDR) conforme especificado em AVC ou HEVC podem ser usadas para acesso aleatório. No entanto, desde que as imagens que seguem uma imagem IDR na ordem de decodificação não podem usar imagens decodificadas antes da imagem IDR como referência, os bitstreams que dependem das imagens IDR para acesso aleatório pode ter significativamente menor eficiência de codificação. Para melhorar a eficiência de codificação, o conceito de imagens de acesso aleatório limpas (CRE) foi introduzido em HEVC para permitir que as imagens que seguem uma imagem CRA na ordem de decodificação, mas a precedem, na ordem de saída para usar imagens descodificadas antes de uma imagem CRA como imagens de referência.
[000101] As imagens que seguem uma imagem CRA na ordem de codificação, mas precede a imagem CRA na ordem de saída são referidas como imagens de topo associadas com a imagem CRA ou imagens de topo da imagem CRA. As imagens de topo de uma imagem CRA são corretamente decodificáveis se a decodificação começa a partir de uma imagem IDR ou CRA antes da imagem CRA atual. As imagens de topo de uma imagem CRA podem ser não decodificáveis quando o acesso aleatório a partir da imagem CRA atual ocorre. As imagens de topo, portanto, são normalmente descartadas durante a decodificação do acesso aleatório. Para impedir a propagação de erro a partir das imagens de referência que podem não estar disponíveis dependendo de onde a decodificação começa, todas as imagens que seguem uma imagem CRA tanto na ordem de codificação quanto ordem de saída não devem usar qualquer imagem que precede a imagem CRA ou na ordem de codificação ou ordem de saída, que inclui as imagens de topo, como imagens de referência.
[000102] O conceito de imagens de acesso à link rompido (BLA) foi ainda introduzido em HEVC após a introdução das imagens CRA e é baseado no conceito de imagens CRA. Uma imagem BLA normalmente se origina a partir da junção de bitstream na posição de uma imagem CRA e, no bitstream unido, a imagem CRA do ponto de junção é alterada para uma imagem BLA. As imagens IDR, imagens CRA e imagens BLA são coletivamente referidas como imagens do ponto de acesso aleatório (RAP) ou imagens de ponto de acesso intraaleatório (IRAP).
[000103] Segue uma discussão das maiores diferenças entre imagens BLA e imagens CRA. Para uma imagem CRA, as imagens de topo associadas são corretamente decodificáveis se a decodificação começa a partir de uma imagem RAP antes da imagem CRA na ordem de codificação, e pode ser não-corretamente decodificável quando o acesso aleatório a partir da imagem CRA ocorre (i.e., quando a decodificação começa a partir da imagem CRA, ou em outras palavras, quando a imagem CRA é a primeira imagem no bitstream). Para uma imagem BLA, as imagens de topo associadas podem ser não decodificáveis em todos os casos, mesmo quando a decodificação começa a partir de uma imagem RAP antes da imagem BLA na ordem de codificação.
[000104] Para uma imagem CRA ou BLA particular, algumas das imagens de topo associadas são corretamente decodificáveis mesmo quando a imagem CRA ou BLA é a primeira imagem no bitstream. Estas imagens de topo são referidas como imagens de topo decodificáveis (DLPs), e outras imagens de topo são referidas como imagens de topo não decodificáveis (NLPs). Em alguns casos, as DLPs podem alternativamente ser referidas como imagens de Topo Decodificáveis de Acesso Aleatório (RADL). As NLPs são referidas como imagens marcadas para descarte (TFD) em HEVC WD8. Em outros casos, as NLPs podem alternativamente ser referidas como imagens de Topo Não Reconhecidas de Acesso Aleatório (RASL). Para os fins desta invenção, os termos “imagens de topo não decodificáveis,” “imagens TFD” e “imagens RASL” podem ser usados indistintamente.
[000105] Em HEVC WD8, o decodificador de referência hipotético (HRD) é especificado no Anexo C. O HRD depende dos parâmetros HRD, que podem ser fornecidos no bitstream na estrutura de sintaxe hrd_parameters( ) incluída no conjunto de parâmetro de vídeo (VPS) e/ou o conjunto de parâmetro de sequência (SPS), mensagens de informação de melhoria suplementar (SEI) do período de armazenamento em buffer, e a mensagem SEI de sincronização da imagem. A mensagem SEI do período de armazenamento em buffer inclui principalmente parâmetros CPB, a saber, buffer inicial dos atrasos de remoção da imagem codificada (CPB) e deslocamentos de atraso de remoção de CPB iniciais. Dois conjuntos de parâmetros CPB podem ser fornecidos, referidos como o conjunto padrão sinalizado pelos elementos de sintaxe initial_cpb_removal_delay[ ] e initial_cpb_removal_delay_offset[ ], e o conjunto alternativo, sinalizado pelos elementos de sintaxe initial_alt_cpb_removal_delay[ ] e initial_alt_cpb_removal_delay_offset[ ].
[000106] Quando sub_pic_cpb_params_present_flag é igual a 0, e rap_cpb_params_present_flag é igual a 1, o seguinte se aplica. O decodificador de vídeo 30 usa o conjunto alternativo de parâmetros CPB para definir CPB 68 quando o HRD é inicializado com uma imagem BLA que não tem imagens TFD associadas no bitstream. Uma imagem BLA não tem imagens de topo não-decodificáveis associadas tem um nal_unit_type que indica uma imagem BLA com imagens de leitura decodificáveis, ex., BLA_W_DLP, ou indica uma imagem BLA sem nenhuma imagem de topo, ex., BLA_N_LP. Se ao invés o conjunto padrão for usado, o CPB pode se sobrecarregar. Quando o HRD e inicializado com uma imagem CRA ou uma imagem BLA que tem imagens TFD associadas, o decodificador de vídeo 30 usa o conjunto de parâmetros CPB padrão para definir CPB 68. Uma imagem BLA que tem imagens TFD associadas tem uma nal_unit_type que indica uma imagem BLA com imagens de leitura não decodificáveis, ex., BLA_W_TFD. Isto é refletido no seguinte texto na subcláusula C.2.1 de HEVC WD8: As variáveis InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas como segue. – Se qualquer uma das seguintes condições for verdadeira, InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas para os valores das initial_alt_cpb_removal_delay[ SchedSelIdx ] e initial_alt_cpb_removal_delay_offset[ SchedSelIdx] correspondentes, respectivamente, da mensagem SEI de período de armazenamento em buffer associada: – A unidade de acesso 0 é uma unidade de acesso BLA para a qual a imagem codificada tem nal_unit_type igual a BLA_W_DLP ou BLA_N_LP, e o valor de rap_cpb_params_present_flag da mensagem SEI de período de armazenamento em buffer associada é igual a 1; – SubPicCpbFlag é igual a 1. – Caso contrário, InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas para os valores das initial_cpb_removal_delay[ SchedSelIdx ] e initial_cpb_removal_delay_offset[ SchedSelIdx ] correspondentes, respectivamente, da mensagem SEI de período de armazenamento em buffer associada. Como pode ser visto a partir do acima, a seleção de qual conjunto de parâmetros CPB usar para uma dada imagem pode ser baseada no valor de nal_unit_type da imagem.
[000107] HEVC WD8 também inclui o seguinte texto na sub-cláusula 8.1 para o manejo de uma imagem CRA como uma imagem BLA. Quando a imagem atual é uma imagem CRA, o seguinte se aplica. – Se algum meio externo não especificado nesta Especificação está disponível para definir a variável HandleCraAsBlaFlag para um valor, HandleCraAsBlaFlag é definida para o valor fornecido pelo meio externo. – Caso contrário, o valor de HandleCraAsBlaFlag é definido para 0. Quando HandleCraAsBlaFlag é igual a 1, o seguinte se aplica durante os processos de análise e decodificação para cada unidade NAL de fatia codificada: – O valor de nal_unit_type é definido para BLA_W_TFD. – O valor de no_output_of_prior_pics_flag é definido para 1. Em HEVC WD8, uma imagem CRA tem nal_unit_type igual a CRA_NUT no cabeçalho da unidade NAL de duas fatias codificadas, e pode ter imagens TFD e imagens DLP associadas .
[000108] As seguintes questões são associadas com métodos existentes para seleção dos parâmetros CPB para imagens CRA, imagens BLA, e imagens CRA manipuladas como imagens BLA. A primeira questão é associada com a seleção dos parâmetros CPB para imagens CRA e imagens BLA. As imagens CRA podem ter imagens TFD associadas. Quando uma imagem CRA tem imagens TFD associadas no bitstream original, mas as imagens TFD associadas são descartas por um servidor de streaming ou um elemento de rede intermediário, a fim de possibilitar a seleção do conjunto de parâmetros CPB apropriado, i.e., o conjunto alternativo, entidade de rede 29 ou outros meios externos devem mudar uma imagem CRA para uma imagem BLA antes de enviá-la para o decodificador de vídeo 30. No entanto, a entidade de rede 29 pode não ser capaz de fazer isso. Em tais situações, ou a seleção do conjunto apropriado do atraso e deslocamento de remoção do CPB iniciais pode não ser bem sucedida, o que pode resultar na sobrecarga do CPB 68, ou o descarte das imagens TFD não pode ser realizado, o que resultar no desperdício da largura de banda ou qualidade de vídeo inferior.
[000109] A segunda questão é associada com a manipulação de uma imagem CRA como uma imagem BLA. As imagens CRA podem ter imagens TFD associadas. Quando uma imagem CRA tem imagens TFD associadas no bitstream original, mas as imagens TFD associadas são descartadas pela entidade de rede 29 ou outros meios externos, como um meio de processamento incluído no servidor de streaming ou um elemento de rede intermediário, o meio externo indica manejar a imagem CRA como uma imagem BLA. Como especificado em HEVC WD8, o decodificador de vídeo 30 então define o valor de nal_unit_type para indicar uma imagem BLA com imagens de leitura não decodificáveis, ex., BLA_W_TFD, o que resulta no uso do conjunto de parâmetros CPB padrão e consequentemente CPB 68 pode se sobrecarregar.
[000110] As técnicas desta invenção fornecem comportamentos da imagem RAP melhorados capazes de eliminar ou evitar as questões descritas acima. De acordo com as técnicas, as variáveis são definidas, e os valores das variáveis podem ser definidos pela entidade de rede 29 ou outros meios externos, como um meio de processamento incluído no servidor de streaming, o elemento de rede intermediário, ou outra entidade de rede, fora do escopo da especificação de codificação de vídeo. Em um exemplo, uma variável pode especificar quando um conjunto alternativo de parâmetros CPB é usado, e qual tipo de unidade NAL é usado quando uma imagem CRA é manipulada como uma imagem BLA. Em outro exemplo, uma variável pode especificar o valor do tipo de unidade NAL a ser usado para uma imagem particular, a partir da qual ele pode ser derivado quando o conjunto de parâmetros CPB padrão ou alternativo é usado.
[000111] Nas seções a seguir, as técnicas mencionadas acima são descritas em maiores detalhes. Sublinhados podem indicar adições relativas ao HEVC WD8 e tachados podem indicar deleções relativas ao HEVC WD8.
[000112] Em um exemplo, o decodificador de vídeo 30 recebe um bitstream representeando uma pluralidade de imagens incluindo uma ou mais imagens CRA ou imagens BLA. O decodificador de vídeo 30 também recebe uma mensagem a partir da entidade de rede 29 indicando quando usar um conjunto alternativo de parâmetros CPB para pelo menos uma das imagens CRA ou as imagens BLA. O decodificador de vídeo 30 define uma variável definida para indicar o conjunto de parâmetros CPB para uma dada das imagens CRA ou imagens BLA com base na mensagem recebida. O decodificador de vídeo 30 então seleciona o conjunto de parâmetros CPB para a determinada das imagens CRA ou as imagens BLA com base na variável para a imagem.
[000113] De acordo com este exemplo, uma variável UseAltCpbParamsFlag pode ser definida para cada imagem BLA ou CRA. O valor desta variável é definido pela entidade de rede 29 ou algum outro meio externo para ou 0 ou 1. Se tal meio externo não estiver disponível, o decodificador de vídeo 30 pode definir o valor da variável para 0.
[000114] Neste caso, o texto na sub-cláusula 8.1 de HEVC WD8, que é citado acima, pode ser substituído com o seguinte: Quando a imagem atual é uma imagem BLA que tem nal_unit_type igual a BLA_W_TFD ou é uma imagem CRA, o seguinte se aplica. – Se algum meio externo não especificado nesta Especificação está disponível para definir a variável UseAltCpbParamsFlag para um valor, UseAltCpbParamsFlag é definida para o valor fornecido pelo meio externo. – Caso contrário, o valor de UseAltCpbParamsFlag é definido para 0. Quando a imagem atual é uma imagem CRA, o seguinte se aplica. – Se algum meio externo não especificado nesta Especificação está disponível para definir a variável HandleCraAsBlaFlag para um valor, HandleCraAsBlaFlag é definida para o valor fornecido pelo meio externo. – Caso contrário, o valor de HandleCraAsBlaFlag é definido para 0. Quando a imagem atual é uma imagem CRA e HandleCraAsBlaFlag é igual a 1, o seguinte se aplica durante os processos de análise e decodificação para cada unidade NAL de fatia codificada, e a imagem CRA é considerada como uma imagem BLA e a unidade de acesso CRA é considerada como uma unidade de acesso BLA: – Se UseAltCpbParamsFlag é igual a 0, o valor de nal_unit_type é definido para BLA_W_TFD. Caso contrário, o valor de nal_unit_type é definido para BLA_W_DLP. – O valor de no_output_of_prior_pics_flag é definido para 1. Além disso, o texto na sub-cláusula C.2.1 de HEVC WD8, citado acima pode ser substituído com o seguinte: As variáveis InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas como segue. – Se uma das condições a seguir for verdadeira, InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas para os valores do initial_alt_cpb_removal_delay[ SchedSelIdx ] e initial_alt_cpb_removal_delay_offset[ SchedSelIdx] correspondentes, respectivamente, da mensagem SEI de período de armazenamento em buffer associada: – A unidade de acesso 0 é uma unidade de acesso BLA para a qual a imagem codificada tem nal_unit_type igual a BLA_W_DLP ou BLA_N_LP, e o valor de rap_cpb_params_present_flag da mensagem SEI de período de armazenamento em buffer associada é igual a 1; – A unidade de acesso 0 é uma unidade de acesso BLA para a qual a imagem codificada tem nal_unit_type igual a BLA_W_TFD ou é uma unidade de acesso CRA, UseAltCpbParamsFlag é igual a 1, e o valor de rap_cpb_params_present_flag da mensagem SEI de período de armazenamento em buffer associada é igual a 1; – SubPicCpbFlag é igual a 1. – Caso contrário, InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas para os valores do initial_cpb_removal_delay[ SchedSelIdx ] e initial_cpb_removal_delay_offset[ SchedSelIdx] correspondentes, respectivamente, da mensagem SEI de período de armazenamento em buffer associada.
[000115] A entidade de rede 29 ou outros meios externos configurados para definir o valor de UseAltCpbParamsFlag pode funcionar como segue. A entidade de rede 29 pode enviar uma mensagem para um decodificador de vídeo 30 ou para um receptor contendo o decodificador de vídeo 30. A mensagem pode indicar que, para uma imagem BLA ou CRA particular, tinha associado imagens TFD, mas as imagens TFD associadas foram descartadas, e assim o conjunto alternativo de parâmetros CPB deve ser usado. Mediante recebimento de tal mensagem, o decodificador de vídeo 30 pode definir o valor de UseAltCpbParamsFlag para a imagem BLA ou CRA particular para 1. Se a BLA ou CRA particular não tem imagens TFD, ou tinha imagens TFD que não foram descartadas, então nenhuma mensagem precisa ser enviada ou uma mensagem é enviada para instruir o decodificador de vídeo 30 para definir o valor de UseAltCpbParamsFlag para a imagem BLA ou CRA particular para 0.
[000116] Em alguns casos, o decodificador de vídeo 30 pode definir um tipo de unidade da camada de abstração de rede (NAL) para a determinada das imagens CRA ou as imagens BLA, e pode selecionar o conjunto de parâmetros CPB para a dada imagem com base no tipo de unidade NAL e a variável para a imagem. Como um exemplo adicional, ao invés de usar somente um tipo de unidade NAL que indica uma imagem CRA geral, ex., CRA_NUT, as técnicas desta invenção possibilitam o uso de três tipos diferentes de unidade NAL que respectivamente indicam uma imagem CRA com imagens de leitura não decodificáveis, ex., CRA_W_TFD, indica uma imagem CRA com imagens de leitura decodificáveis, ex., CRA_W_DLP, e indica uma imagem CRA sem nenhuma imagem de topo, ex., CRA_N_LP. Neste caso, a Tabela 7-1 em HEVC WD8 e as observações abaixo da tabela são modificadas como mostrado abaixo. Tabela 7-1 – Códigos do tipo de unidade NAL e classes do tipo da unidade NAL
Figure img0001
Figure img0002
OBSERVAÇÃO 3 – Uma imagem CRA tendo nal_unit_type igual a CRA_W_TFD pode ter imagens TFD associadas, ou imagens DLP associadas, ou ambas presentes no bitstream. Uma imagem CRA tendo nal_unit_type igual a CRA_W_DLP não tem imagens TFD associadas presentes no bitstream, mas pode ter imagens DLP associadas no bitstream. Uma imagem CRA tendo nal_unit_type igual a CRA_N_LP não tem imagens de topo associadas presentes no bitstream. OBSERVAÇÃO 4 – Uma imagem BLA tendo nal_unit_type igual a BLA_W_TFD pode ter imagens TFD associadas, ou imagens DLP associadas, ou ambas presentes no bitstream. Uma imagem BLA tendo nal_unit_type igual a BLA_W_DLP não tem imagens TFD associadas presentes no bitstream, mas pode ter imagens DLP associadas no bitstream. Uma imagem BLA tendo nal_unit_type igual a BLA_N_LP não tem imagens de topo associadas presentes no bitstream. OBSERVAÇÃO 5 – Uma imagem IDR tendo nal_unit_type igual a IDR_N_LP não tem imagens de topo associadas presentes no bitstream. Uma imagem IDR tendo nal_unit_type igual a IDR_W_DLP não tem imagens TFD associadas presentes no bitstream, mas pode ter imagens DLP associadas no bitstream.
[000117] Além disso, semelhante ao primeiro exemplo descrito acima, uma variável UseAltCpbParamsFlag é definida para cada imagem BLA ou CRA. O valor desta variável é definido pela entidade de rede 29, ou outros meios externos, ou para 0 ou 1. Se tal meio externo não estiver disponível, o decodificador de vídeo 30 pode definir o valor da variável para 0.
[000118] Neste caso, o texto na sub-cláusula 8.1 de HEVC WD8, citado acima, pode ser substituído com o seguinte: Quando a imagem atual é uma imagem BLA que tem nal_unit_type igual a BLA_W_TFD ou é uma imagem CRA que tem nal_unit_type igual a CRA_W_TFD, o seguinte se aplica. – Se algum meio externo não especificado nesta Especificação está disponível para definir a variável UseAltCpbParamsFlag para um valor, UseAltCpbParamsFlag é definida para o valor fornecido pelo meio externo. – Caso contrário, o valor de UseAltCpbParamsFlag é definido para 0. Quando a imagem atual é uma imagem CRA, o seguinte se aplica. – Se algum meio externo não especificado nesta Especificação está disponível para definir a variável HandleCraAsBlaFlag para um valor, HandleCraAsBlaFlag é definida para o valor fornecido pelo meio externo. – Caso contrário, o valor de HandleCraAsBlaFlag é definido para 0. Quando a imagem atual é uma imagem CRA e HandleCraAsBlaFlag é igual a 1, o seguinte se aplica durante os processos de análise e decodificação para cada unidade NAL de fatia codificada, e a imagem CRA é considerada como uma imagem BLA e a unidade de acesso CRA é considerada as a BLA unidade de acesso: – Se o valor de nal_unit_type igual a CRA_W_TFD, o valor de nal_unit_type é definido para BLA_W_TFD. Caso contrário, se o valor de nal_unit_type igual a CRA_W_DLP, o valor de nal_unit_type é definido para BLA_W_DLP. Caso contrário, o valor de nal_unit_type é definido para BLA_N_LP. – O valor de no_output_of_prior_pics_flag é definido para 1. Além disso, o texto na sub-cláusula C.2.1 de HEVC WD8, citado acima, pode ser substituído com o seguinte: As variáveis InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas como segue. – Se uma das condições a seguir for verdadeira, InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas para os valores do initial_alt_cpb_removal_delay[ SchedSelIdx ] e initial_alt_cpb_removal_delay_offset[ SchedSelIdx] correspondentes, respectivamente, da mensagem SEI de período de armazenamento em buffer associada: – A unidade de acesso 0 é uma unidade de acesso BLA para a qual a imagem codificada tem nal_unit_type igual a BLA_W_DLP ou BLA_N_LP, e o valor de rap_cpb_params_present_flag da mensagem SEI de período de armazenamento em buffer associada é igual a 1; – A unidade de acesso 0 é uma unidade de acesso CRA para a qual a imagem codificada tem nal_unit_type igual a CRA_W_DLP ou CRA_N_LP, e o valor de rap_cpb_params_present_flag da mensagem SEI de período de armazenamento em buffer associada é igual a 1; – A unidade de acesso 0 é uma unidade de acesso BLA para a qual a imagem codificada tem nal_unit_type igual a BLA_W_TFD ou is a CRA unidade de acesso para a qual a imagem codificada tem nal_unit_type igual a CRA_W_TFD, UseAltCpbParamsFlag é igual a 1, e o valor de rap_cpb_params_present_flag da mensagem SEI de período de armazenamento em buffer associada é igual a 1; – SubPicCpbFlag é igual a 1. – Caso contrário, InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas para os valores do initial_cpb_removal_delay[ SchedSelIdx ] e initial_cpb_removal_delay_offset[ SchedSelIdx] correspondentes, respectivamente, da mensagem SEI de período de armazenamento em buffer associada.
[000119] A entidade de rede 29 ou outros meios externos configurados para definir o valor de UseAltCpbParamsFlag pode funcionar como segue. A entidade de rede 29 pode enviar uma mensagem para o decodificador de vídeo 30 ou um receptor contendo o decodificador de vídeo 30. A mensagem pode indicar que, para uma imagem BLA ou CRA particular, tinha associado imagens TFD, mas as imagens TFD associadas foram descartadas, e assim o conjunto alternativo de parâmetros CPB deve ser usado. Mediante recebimento de tal mensagem, o decodificador de vídeo 30 pode definir o valor de UseAltCpbParamsFlag para a imagem BLA ou CRA particular para 1. Se a BLA ou CRA particular não tem imagens TFD, ou teve imagem TFD, mas não descartada, então nenhuma mensagem precisa ser enviada ou uma mensagem é enviada para instruir decodificador de vídeo 30 para definir o valor de UseAltCpbParamsFlag para a imagem BLA ou CRA particular para 0.
[000120] Em outro exemplo, o decodificador de vídeo 30 recebe um bitstream representeando uma pluralidade de imagens incluindo uma ou mais imagens CRA ou imagens BLA, e também recebe uma mensagem a partir da entidade de rede 29 indicando um tipo de unidade NAL para pelo menos uma das imagens CRA ou as imagens BLA. O decodificador de vídeo 30 define uma variável definida para indicar o tipo de unidade NAL para uma dada das imagens CRA ou imagens BLA com base na mensagem recebida. O decodificador de vídeo 30 então define o tipo de unidade NAL para a determinada das imagens CRA ou as imagens BLA, e seleciona o conjunto de parâmetros CPB para a dada imagem com base no tipo de unidade NAL.
[000121] De acordo com este exemplo, uma variável UseThisNalUnitType pode ser definida para cada imagem CRA ou BLA. O valor desta variável é definido pela entidade de rede 29 ou algum outro meio externo. Se tal meio externo não estiver disponível, o decodificador de vídeo 30 pode definir o valor da variável para nal_unit_type da imagem CRA ou BLA. Em alguns exemplos, valores possíveis desta variável são CRA_NUT, BLA_W_TFD, BLA_W_DLP e BLA_N_LP. Em outros exemplos, valores possíveis para esta variável podem incluir outros nal_unit_types configurados para indicar uma imagem CRA geral, uma imagem BLA com imagens de leitura não decodificáveis, uma imagem BLA com imagens de leitura decodificáveis, e uma imagem BLA sem nenhuma imagem de topo.
[000122] Neste caso, o texto na sub-cláusula 8.1 de HEVC WD8, que é citado acima, pode ser substituído com o seguinte: Quando a imagem atual é uma imagem BLA ou CRA, o seguinte se aplica. – Se algum meio externo não especificado nesta Especificação está disponível para definir a variável UseThisNalUnitType para um valor, UseThisNalUnitType é definida para o valor fornecido pelo meio externo. Para uma imagem BLA com nal_unit_type igual a BLA_N_LP, o meio externo pode somente definir UseThisNalUnitType para BLA_N_LP; Para uma imagem BLA com nal_unit_type igual a BLA_W_DLP, o meio externo pode somente definir UseThisNalUnitType ou para BLA_W_DLP ou BLA_N_LP; Para uma imagem BLA com nal_unit_type igual a BLA_W_TFD, o meio externo pode somente definir UseThisNalUnitType para uma dentre BLA_W_TFD, BLA_W_DLP e BLA_N_LP; Para uma imagem BLA, o meio externo não deve nunca definir UseThisNalUnitType para indicar uma imagem CRA ou qualquer outro tipo de imagem; Para uma imagem CRA, o meio externo pode definir UseThisNalUnitType para uma dentre CRA_NUT, BLA_W_TFD, BLA_W_DLP e BLA_N_LP, não qualquer outro valor. – Caso contrário, o valor de UseThisNalUnitType é definido para nal_unit_type da imagem atual. Quando a imagem atual é uma imagem CRA ou BLA, o seguinte se aplica durante os processos de análise e decodificação para cada unidade NAL de fatia codificada: – O valor de nal_unit_type é definido para UseThisNalUnitType, e a imagem atual ou unidade de acesso é considerada como uma imagem CRA ou BLA ou unidade de acesso de acordo com o valor de nal_unit_type igual a UseThisNalUnitType. – O valor de no_output_of_prior_pics_flag é definido para 1 se a imagem atual era uma imagem CRA antes da etapa acima e se tornou uma imagem BLA. O texto na sub-cláusula C.2.1 de HEVC WD8, que é citado acima, não precisa ser alterado.
[000123] Como um exemplo adicional, ao invés de usar somente um tipo de unidade NAL que indica uma imagem CRA geral, ex., CRA_NUT, as técnicas desta invenção possibilitam o uso de três tipos diferentes de unidade NAL que respectivamente indica uma imagem CRA com imagens de leitura não decodificáveis, ex., CRA_W_TFD, indica uma imagem CRA com imagens de leitura decodificáveis, ex., CRA_W_DLP, e indica uma imagem CRA sem nenhuma imagem de topo, ex., CRA_N_LP. Neste caso, Tabela 7-1 in HEVC WD8 e as observações abaixo da tabela são alteradas como descrito acima.
[000124] Além disso, similar ao segundo exemplo descrito acima, uma variável UseThisNalUnitType é definida para cada imagem CRA ou BLA. O valor desta variável é definido pela entidade de rede 29 ou outros meios externos. Se tal meio externo não estiver disponível, o decodificador de vídeo 30 pode definir o valor da variável para nal_unit_type da imagem CRA ou BLA. Em alguns exemplos, valores possíveis desta variável são CRA_W_TFD, CRA_W_DLP, CRA_N_LP, BLA_W_TFD, BLA_W_DLP e BLA_N_LP. Em outros exemplos, valores possíveis para esta variável podem incluir outros nal_unit_types configurados para indicar uma imagem CRA com imagens de leitura não decodificáveis, uma imagem CRA com imagens de leitura decodificáveis, uma imagem CRA sem nenhuma imagem de topo, uma imagem BLA com imagens de leitura não decodificáveis, uma imagem BLA com imagens de leitura decodificáveis, e uma imagem BLA sem nenhuma imagem de topo.
[000125] Neste caso, o texto na sub-cláusula 8.1 de HEVC WD8, citado acima, pode ser substituído com o seguinte: Quando a imagem atual é uma imagem BLA ou CRA, o seguinte se aplica. – Se algum meio externo não especificado nesta Especificação está disponível para definir a variável UseThisNalUnitType para um valor, UseThisNalUnitType é definida para o valor fornecido pelo meio externo. Para uma imagem BLA com nal_unit_type igual a BLA_N_LP, o meio externo pode somente definir UseThisNalUnitType para BLA_N_LP; Para uma imagem BLA com nal_unit_type igual a BLA_W_DLP, o meio externo pode somente definir UseThisNalUnitType ou para BLA_W_DLP ou BLA_N_LP; Para uma imagem BLA com nal_unit_type igual a BLA_W_TFD, o meio externo pode somente definir UseThisNalUnitType para um de BLA_W_TFD, BLA_W_DLP e BLA_N_LP; Para uma imagem BLA, o meio externo não deve nunca definir UseThisNalUnitType para indicar uma imagem CRA ou qualquer outro tipo de imagem. Para uma imagem CRA com nal_unit_type igual a CRA_N_LP, o meio externo pode somente definir UseThisNalUnitType para CRA_N_LP ou BLA_N_LP; Para uma imagem CRA com nal_unit_type igual a CRA_W_DLP, o meio externo pode somente definir UseThisNalUnitType para CRA_W_DLP, CRA_N_LP, BLA_W_DLP ou BLA_N_LP; Para uma imagem CRA com nal_unit_type igual a CRA_W_TFD, o meio externo pode somente definir UseThisNalUnitType para CRA_W_TFD, CRA_W_DLP, CRA_N_LP, BLA_W_TFD, BLA_W_DLP ou BLA_N_LP. – Caso contrário, o valor de UseThisNalUnitType é definido para nal_unit_type da imagem atual. Quando a imagem atual é uma imagem CRA ou BLA, o seguinte se aplica durante os processos de análise e decodificação para cada unidade NAL de fatia codificada: – O valor de nal_unit_type é definido para UseThisNalUnitType, e a imagem atual ou unidade de acesso é considerada como uma imagem CRA ou BLA ou unidade de acesso de acordo com o valor de nal_unit_type igual a UseThisNalUnitType. – O valor de no_output_of_prior_pics_flag é definido para 1 se a imagem atual era uma imagem CRA antes da etapa acima e se tornou uma imagem BLA. Além disso, o texto na sub-cláusula C.2.1 de HEVC WD8, citado acima, pode ser substituído com o seguinte: As variáveis InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas como segue. – Se uma das condições a seguir for verdadeira, InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas para os valores do initial_alt_cpb_removal_delay[ SchedSelIdx ] e initial_alt_cpb_removal_delay_offset[ SchedSelIdx] correspondentes, respectivamente, da mensagem SEI de período de armazenamento em buffer associada: – Unidade de acesso 0 é uma unidade de acesso BLA para a qual a imagem codificada tem nal_unit_type igual a BLA_W_DLP ou BLA_N_LP, e o valor de rap_cpb_params_present_flag da mensagem SEI de período de armazenamento em buffer associada é igual a 1; – Unidade de acesso 0 é uma unidade de acesso CRA para a qual a imagem codificada tem nal_unit_type igual a CRA_W_DLP ou CRA_N_LP, e o valor de rap_cpb_params_present_flag da mensagem SEI de período de armazenamento em buffer associada é igual a 1; – SubPicCpbFlag é igual a 1. – Caso contrário, InitCpbRemovalDelay[ SchedSelIdx ] e InitCpbRemovalDelayOffset[ SchedSelIdx ] são definidas para os valores do initial_cpb_removal_delay[ SchedSelIdx ] e initial_cpb_removal_delay_offset[ SchedSelIdx] correspondentes, respectivamente, da mensagem SEI de período de armazenamento em buffer associada.
[000126] FIG. 4 é um diagrama em bloco ilustrando um dispositivo de destino exemplar 100 configurado para funcionar de acordo com um decodificador de referência hipotético (HRD). Neste exemplo, o dispositivo de destino 100 inclui interface de entrada 102, programador de fluxo 104, buffer de imagem codificada (CPB) 106, o decodificador de vídeo 108, buffer de imagem decodificada (DPB) 110, unidade de fornecimento 112, e interface de saída 114. O dispositivo de destino 100 pode corresponder substancialmente ao dispositivo de destino 14 da FIG. 1. A interface de entrada 102 pode compreender qualquer interface de entrada capaz de receber um bitstream codificado dos dados de vídeo e pode corresponder substancialmente à interface de entrada 28 da FIG. 1. Por exemplo, a interface de entrada 102 pode compreender um receptor, um modem, uma interface de rede, como uma interface com fio ou sem fio, uma memória ou interface de memória, uma unidade para a leitura de dados de um disco, como uma interface de unidade ótica ou interface de mídia magnética, ou outro componente de interface.
[000127] A interface de entrada 102 pode receber um bitstream codificado incluindo dados de vídeo e fornecer o bitstream para o programador de fluxo 104. O programador de fluxo 104 extrai unidades de dados de vídeo, como unidade de acessos e/ou unidades de decodificação, a partir do bitstream e armazena as unidades extraídas para o CPB 106. Desta maneira, o programador de fluxo 104 representa uma implementação exemplar de um programador de fluxo hipotético (HSS). O CPB 106 pode se conformar substancialmente com CPB 68 da FIG. 3, exceto aquele como mostrado na FIG. 4, o CPB 106 está separado do decodificador de vídeo 108. O CPB 106 pode ser separado de ou integrado como parte do decodificador de vídeo 108 em diferentes exemplos.
[000128] O decodificador de vídeo 108 inclui DPB 110. O decodificador de vídeo 108 pode se conformar substancialmente com decodificador de vídeo 30 das FIGS. 1 e 3. O DPB 110 pode se conformar substancialmente com DPB 82 da FIG. 3. Assim, o decodificador de vídeo 108 pode decodificar as unidades de decodificação do CPB 106. Além disso, o decodificador de vídeo 108 pode produzir imagens decodificadas a partir do DPB 110. O decodificador de vídeo 108 pode passar as imagens produzidas para a unidade de fornecimento 112. A unidade de fornecimento 112 pode colher as imagens e então passar as imagens colhidas para a interface de saída 114. A interface de saída 114, por sua vez, pode fornecer as imagens colhidas para um dispositivo de exibição, o qual pode se conformar substancialmente com o dispositivo de exibição 32 da FIG. 1.
[000129] O dispositivo de exibição pode fazer parte do dispositivo de destino 100, ou pode estar comunicativamente acoplado ao dispositivo de destino 100. Por exemplo, o dispositivo de exibição pode compreender uma tela, tela sensível ao toque, projetor ou outra unidade de exibição integrada com o dispositivo de destino 100, ou pode compreender um monitor separado como uma televisão, monitor, projetor, tela sensível ao toque, ou outro dispositivo que está comunicativamente acoplado ao dispositivo de destino 100. O acoplamento comunicativo pode compreender um acoplamento com fio ou sem fio, como por um cabo coaxial, cabo de vídeo composto, cabo de vídeo de componente, um cabo de Interface de Multimídia de Alta Definição (HDMI), uma transmissão de radiofrequência, ou outro acoplamento com fio ou sem fio.
[000130] FIG. 5 é um fluxograma ilustrando uma operação exemplar de seleção de um conjunto de parâmetros de buffer de imagem codificados (CPB) com base em uma variável que indica o conjunto de parâmetros CPB para uma imagem de ponto de acesso aleatório (RAP) particular em um bitstream. A operação ilustrada é descrita com relação ao decodificador de vídeo 30 da FIG. 3 que inclui CPB 68. Em outros exemplos, uma operação similar pode ser realizada pelo codificador de vídeo 20 da FIG. 2 que inclui CPB 66, o dispositivo de destino 100 da FIG. 4 que inclui CPB 106 e o decodificador de vídeo 108, ou outros dispositivos incluindo codificadores de vídeo ou decodificadores de vídeo com CPBs configurados para funcionar de acordo com as operações HRD.
[000131] O decodificador de vídeo 30 recebe um bitstream incluindo uma ou mais imagens CRA ou imagens BLA (120). Junto com o bitstream, o decodificador de vídeo 30 também recebe uma mensagem indicando quando usar um conjunto alternativo de parâmetros CPB para uma particular das imagens CRA ou BLA (122). Mais especificamente, o decodificador de vídeo 30 pode receber a mensagem a partir de um meio externo, como entidade de rede 29, que é capaz de descartar imagens TFD associadas com a imagem particular, e é também capaz de informar ao decodificador de vídeo 30 quando as imagens TFD foram descartadas.
[000132] Por exemplo, quando a imagem particular tinha imagens TFD em uma saída de bitstream original do codificador de vídeo 20 e as imagens TFD foram descartadas pelos meios externos, a mensagem recebida pelo decodificador de vídeo 30 indica o uso do conjunto alternativo de parâmetros CPB para a imagem particular. Como outro exemplo, quando a imagem particular não tem imagens TFD na saída de bitstream original do codificador de vídeo 20 ou a imagem particular tinha imagens TFD no bitstream original e as imagens TFD não foram descartadas pelos meios externos, a mensagem recebida pelo decodificador de vídeo 30 não indica o uso do conjunto alternativo de parâmetros CPB para a imagem particular. Neste caso, ou o conjunto padrão ou o conjunto alternativo de parâmetros CPB pode ser usado para uma das imagens CRA ou imagens BLA com base no tipo de unidade NAL da imagem.
[000133] O decodificador de vídeo 30 define uma variável, ex., UseAltCpbParamsFlag, definida para indicar um conjunto de parâmetros CPB para a imagem particular com base na mensagem recebida (124). Por exemplo, o decodificador de vídeo 30 pode definir UseAltCpbParamsFlag igual a 1 quando a mensagem recebida indica o conjunto alternativo de parâmetros CPB para a imagem particular. Reciprocamente, o decodificador de vídeo 30 pode definir UseAltCpbParamsFlag igual a 0 quando a mensagem recebida não indica explicitamente o conjunto alternativo de parâmetros CPB para a imagem particular. Em alguns casos, o decodificador de vídeo 30 pode não receber uma mensagem para pelo menos uma das imagens CRA ou as imagens BLA. O decodificador de vídeo 30 pode então definir UseAltCpbParamsFlag igual a 0.
[000134] O decodificador de vídeo 30 então define um tipo de unidade NAL para a imagem particular (126). Em alguns casos, o decodificador de vídeo 30 pode definir o tipo de unidade NAL para a imagem particular como sinalizado no bitstream. Em outros casos, o decodificador de vídeo 30 pode definir o tipo de unidade NAL para a imagem particular com base pelo menos em parte na variável para a imagem. A operação de seleção do tipo de unidade NAL é descrita em mais detalhe abaixo com relação à FIG. 6. O decodificador de vídeo 30 seleciona o conjunto padrão ou o conjunto alternativo de parâmetros CPB para a imagem particular com base no tipo de unidade NAL e a variável para a imagem particular (128). Em particular, o decodificador de vídeo 30 seleciona o conjunto de parâmetros CPB padrão para um ou mais tipos de unidade NAL quando a variável não indica o conjunto alternativo de parâmetros CPB, e seleciona o conjunto alternativo de parâmetros CPB para os um ou mais tipos de unidade NAL quando a variável indica o conjunto alternativo de parâmetros CPB e para um ou mais tipos de unidade NAL diferentes. A operação de seleção do conjunto de parâmetro CPB é descrita em mais detalhe abaixo com relação à FIG. 7.
[000135] FIG. 6 é um fluxograma ilustrando uma operação exemplar para definir um tipo de unidade de camada de abstração de rede (NAL) para uma imagem RAP particular com base em uma variável que indica o conjunto de parâmetros CPB para a imagem. A operação ilustrada é descrita com relação ao decodificador de vídeo 30 da FIG. 3 que inclui CPB 68. Em outros exemplos, uma operação similar pode ser realizada pelo codificador de vídeo 20 da FIG. 2 que inclui CPB 66, dispositivo de destino 100 da FIG. 4 que inclui CPB 106 e decodificador de vídeo 108, ou outros dispositivos incluindo codificadores de vídeo ou decodificadores de vídeo com CPBs configurados para funcionar de acordo com as operações HRD.
[000136] O decodificador de vídeo 30 recebe um bitstream incluindo uma ou mais imagens CRA ou imagens BLA (150). O decodificador de vídeo 30 recebe uma mensagem indicando quando usar um conjunto alternativo de parâmetros CPB para uma particular das imagens CRA ou imagens BLA (152). O decodificador de vídeo 30 define a variável definida para indicar o conjunto de parâmetros CPB para a imagem particular com base na mensagem recebida (154).
[000137] Quando a imagem particular é uma imagem BLA (ramificação NÃO de 156), o decodificador de vídeo 30 define o tipo de unidade NAL para a imagem BLA particular como sinalizado no bitstream (158). Quando a imagem particular é uma imagem CRA (ramificação SIM de 156) e quando as imagens CRA não são manipuladas como uma imagem BLA (ramificação NÃO de 160), o decodificador de vídeo 30 também define o tipo de unidade NAL para a imagem CRA particular como sinalizado no bitstream (158).
[000138] Convencionalmente, quando uma imagem CRA é manipulada como uma imagem BLA, o tipo de unidade NAL para a imagem CRA é definido para indicar uma imagem BLA com imagens de leitura não decodificáveis, ex., BLA_W_TFD, o que resulta na seleção do conjunto de parâmetros CPB padrão para a imagem. Em alguns casos, a imagem pode não ter imagens TFD associadas e o uso do conjunto de parâmetros CPB padrão pode resultar na sobrecarga do CPB. De acordo com as técnicas desta invenção, quando a imagem particular é uma imagem CRA (ramificação SIM de 156) e a imagem CRA é manipulada como uma imagem BLA (ramificação SIM de 160), o decodificador de vídeo 30 define o tipo de unidade NAL para a imagem CRA particular com base em uma variável para a imagem particular.
[000139] Por exemplo, quando a variável não indica explicitamente o conjunto alternativo de parâmetros CPB (ramificação NÃO de 162), o decodificador de vídeo 30 define o tipo de unidade NAL para a imagem particular para indicar uma imagem BLA com imagens de leitura não decodificáveis, ex., BLA_W_TFD, o que indica que uma imagem particular tem imagens TFD associadas (164). Neste caso, o conjunto de parâmetros CPB padrão será aproximadamente selecionado para a imagem particular. Quando a variável indica o conjunto alternativo de parâmetros CPB (ramificação SIM de 162), o decodificador de vídeo 30 define o tipo de unidade NAL para a imagem particular para indicar uma imagem BLA com imagens de leitura decodificáveis, ex., BLA_W_DLP, o que indica que uma imagem particular não tem imagens TFD associadas (166). Neste caso, o conjunto alternativo de parâmetros CPB será aproximadamente selecionado para a imagem particular. Deste modo, as técnicas garantem que o CPB do decodificador de vídeo não sobrecarregará devido ao uso dos parâmetros CPB inadequados.
[000140] FIG. 7 é um fluxograma ilustrando uma operação exemplar para a seleção de um conjunto de parâmetros CPB para uma imagem RAP particular com base em um tipo de unidade NAL para a imagem e uma variável que indica o conjunto de parâmetros CPB para a imagem. A operação ilustrada é descrita com relação ao decodificador de vídeo 30 da FIG. 3 que inclui CPB 68. Em outros exemplos, uma operação similar pode ser realizada pelo codificador de vídeo 20 da FIG. 2 que inclui CPB 66, dispositivo de destino 100 da FIG. 4 que inclui CPB 106 e decodificador de vídeo 108, ou outros dispositivos incluindo codificadores de vídeo ou decodificadores de vídeo com CPBs configurados para funcionar de acordo com as operações de HRD.
[000141] Decodificador de vídeo 30 recebe um bitstream incluindo uma ou mais imagens CRA ou imagens BLA (170). O decodificador de vídeo 30 recebe uma mensagem indicando quando usar um conjunto alternativo de parâmetros CPB para uma particular das imagens CRA ou imagens BLA (172). O decodificador de vídeo 30 define a variável definida para indicar o conjunto de parâmetros CPB para a imagem particular com base na mensagem recebida (174). O decodificador de vídeo 30 então define um tipo de unidade NAL para a imagem particular (176). Como descrito acima com relação à FIG. 6, o decodificador de vídeo 30 pode definir o tipo de unidade NAL para a imagem particular como sinalizado no bitstream, ou pode definir o tipo de unidade NAL para a imagem particular com base na variável para a imagem.
[000142] Quando a imagem particular é uma imagem BLA que tem um tipo de unidade NAL que indica uma imagem BLA com imagens de leitura decodificáveis, ex., BLA_W_DLP, ou indica uma imagem BLA sem nenhuma imagem de topo, ex., BLA_N_LP, o que indica que uma imagem particular não tem imagens TFD associadas (ramificação SIM de 178), o decodificador de vídeo 30 seleciona o conjunto alternativo de parâmetros CPB para a imagem particular com base no tipo de unidade NAL (180). Convencionalmente, o conjunto de parâmetros CPB padrão é usado para quaisquer imagens CRA ou imagens BLA com imagens TFD associadas, ex., BLA_W_TFD. Em alguns casos, no entanto, as imagens TFD associadas com a imagem particular no bitstream original podem ser descartadas antes do bitstream alcançar um decodificador de vídeo. O decodificador de vídeo então usa os parâmetros CPB padrão com base no tipo de unidade NAL mesmo quando a imagem não tem mais imagens TFD associadas, o que pode resultar na sobrecarga do CPB.
[000143] De acordo com as técnicas desta invenção, quando a imagem particular é uma imagem CRA ou uma imagem BLA que tem um tipo de unidade NAL que indica uma imagem BLA com imagens de leitura não decodificáveis, ex., BLA_W_TFD, o que indica que uma imagem particular tem imagens TFD associadas (ramificação SIM de 182), o decodificador de vídeo 30 seleciona o conjunto de parâmetros CPB para usar para a imagem particular com base na variável para a imagem particular. Por exemplo, quando a variável não indica explicitamente o conjunto alternativo de parâmetros CPB (ramificação NÃO de 184), o decodificador de vídeo 30 seleciona o conjunto de parâmetros CPB padrão para a imagem particular com base na variável (186). Quando a variável indica o conjunto alternativo de parâmetros CPB (ramificação SIM de 184), o decodificador de vídeo 30 seleciona o conjunto alternativo de parâmetros CPB para a imagem particular com base na variável (188). Deste modo, as técnicas garantem que o CPB do decodificador de vídeo não sobrecarregará devido ao uso dos parâmetros CPB inadequados.
[000144] FIG. 8 é um fluxograma ilustrando uma operação exemplar para selecionar um conjunto de parâmetros CPB com base em uma variável definida para indicar um tipo de unidade de camada de abstração de rede (NAL) para uma imagem RAP particular em um bitstream. A operação ilustrada é descrita com relação ao decodificador de vídeo 30 da FIG. 3 que inclui CPB 68. Em outros exemplos, uma operação similar pode ser realizada pelo codificador de vídeo 20 da FIG. 2 que inclui CPB 66, dispositivo de destino 100 da FIG. 4 que inclui CPB 106 e decodificador de vídeo 108, ou outros dispositivos incluindo codificadores de vídeo ou decodificadores de vídeo com CPBs configurados para funcionar de acordo com operações HRD.
[000145] O decodificador de vídeo 30 recebe um bitstream incluindo uma ou mais imagens CRA ou imagens BLA (190). Junto com o bitstream, o decodificador de vídeo 30 também recebe uma mensagem indicando um tipo de unidade NAL para uma particular das imagens CRA ou BLA (192). Mais especificamente, o decodificador de vídeo 30 pode receber a mensagem a partir de um meio externo, como entidade de rede 29, que é capaz de descartar as imagens TFD associadas com a imagem particular, e é também capaz de informar ao decodificador de vídeo 30 quando as imagens TFD foram descartadas.
[000146] Por exemplo, quando a imagem particular tinha imagens TFD em uma saída de bitstream original do codificador de vídeo 20 e as imagens TFD foram descartadas pelos meios externos, a mensagem recebida pelo decodificador de vídeo 30 pode indicar um tipo de unidade NAL que indica uma imagem BLA com imagens de leitura decodificáveis, ex., BLA_W_DLP, ou indica uma imagem BLA sem nenhuma imagem de topo, ex., BLA_N_LP, para a imagem particular. Como outro exemplo, quando a imagem particular tinha imagens TFD no bitstream original e as imagens TFD não foram descartadas pelos meios externos, a mensagem recebida pelo decodificador de vídeo 30 pode indicar um tipo de unidade NAL que indica uma imagem BLA com imagens de leitura não decodificáveis, ex., BLA_W_TFD, para uma das imagens CRA ou imagens BLA.
[000147] O decodificador de vídeo 30 define uma variável, ex., UseThisNalUnitType, definida para indicar um tipo de unidade NAL para a imagem particular com base na mensagem recebida (194). Por exemplo, o decodificador de vídeo 30 pode definir UseThisNalUnitType igual ao tipo de unidade NAL indicado pela mensagem recebida para a imagem particular. Em alguns casos, o decodificador de vídeo 30 pode não receber uma mensagem para pelo menos uma das imagens CRA ou as imagens BLA. O decodificador de vídeo 30 pode então definir UseThisNalUnitType igual ao tipo de unidade NAL sinalizado para a imagem particular no bitstream. O decodificador de vídeo 30 define um tipo de unidade NAL para a imagem particular com base na variável (196). O decodificador de vídeo 30 então seleciona o conjunto padrão ou o conjunto alternativo de parâmetros CPB para a imagem particular com base no tipo de unidade NAL para a imagem particular (198).
[000148] FIG. 9 é um diagrama em blocos ilustrando um conjunto exemplar de dispositivos que fazem parte da rede 200. Neste exemplo, a rede 200 inclui dispositivos de roteamento 204A, 204B (dispositivos de roteamento 204) e dispositivo de transcodificação 206. Os dispositivos de roteamento 204 e dispositivo de transcodificação 206 são destinados a representar um pequeno número de dispositivos que podem fazer parte da rede 200. Outros dispositivos de rede, como comutadores, hubs, portas, firewalls, pontes, e outros dispositivos similares também podem ser incluídos dentro da rede 200. Além disso, os dispositivos de rede adicionais podem ser fornecidos ao longo de um caminho de rede entre o dispositivo servidor 202 e dispositivo cliente 208. O dispositivo servidor 202 pode corresponder ao dispositivo de origem 12 da FIG. 1, enquanto o dispositivo cliente 208 pode corresponder ao dispositivo de destino 14 da FIG. 1, em alguns exemplos.
[000149] Em geral, os dispositivos de roteamento 204 implementam um ou mais protocolos de roteamento para trocar dados de rede através da rede 200. Em alguns exemplos, os dispositivos de roteamento 204 podem ser configurados para realizar operações de proxy ou cache. Portanto, em alguns exemplos, os dispositivos de roteamento 204 podem ser referidos como dispositivos de proxy. Em geral, os dispositivos de roteamento 204 executam protocolos de roteamento para descobrir rotas através da rede 200. Pela execução de tais protocolos de roteamento, o dispositivo de roteamento 204B pode descobrir uma rota de rede a partir de si mesmo para o dispositivo servidor 202 através do dispositivo de roteamento 204A.
[000150] As técnicas desta invenção podem ser implementadas pelos dispositivos de rede como dispositivos de roteamento 204 e dispositivo de transcodificação 206, mas também podem ser implementadas pelo dispositivo cliente 208. Desta maneira, os dispositivos de roteamento 204, dispositivo de transcodificação 206, e dispositivo cliente 208 representam exemplos de dispositivos configurados para realizar as técnicas desta invenção, incluindo as técnicas citadas na parte de REIVINDICAÇÕES desta invenção. Além disso, os dispositivos da FIG. 1, e o codificador mostrado na FIG. 2 e o decodificador mostrado na FIG. 3 também são dispositivos exemplares que podem ser configurados para realizar as técnicas desta invenção, incluindo as técnicas citadas na parte de REIVINDICAÇÕES desta invenção.
[000151] Deve-se reconhecer que, dependendo do exemplo, certos atos ou eventos podem ser adicionados de qualquer das técnicas aqui descritas que podem ser realizadas em uma sequência diferente, podem ser adicionadas, fundidas ou deixadas de fora (por exemplo, nem todos os atos ou eventos descritos são necessários para a prática das técnicas). Além disso, em alguns exemplos, atos ou eventos podem ser realizados simultaneamente, por exemplo, através do processamento multi-segmentado, processamento de interrupção, ou múltiplos processadores, em vez de sequencialmente.
[000152] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementadas em software, as funções podem ser armazenadas ou transmitidas através de uma ou mais instruções ou códigos em uma mídia legível por computador e executadas por uma unidade de processamento baseada em hardware. As mídias legíveis por computador podem incluir mídias de armazenamento legíveis por computador, as quais correspondem a uma mídia tangível, tais como mídias de armazenamento de dados ou meios de comunicação, incluindo qualquer mídia que facilita a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Deste modo, as mídias legíveis por computador podem geralmente corresponder à (1) mídia de armazenamento legível por computador tangível que é não transitória ou (2) um meio de comunicação, tal como um sinal ou onda portadora. As mídias de armazenamento de dados podem ser qualquer mídia disponível, que pode ser acessada por um ou mais computadores ou um ou mais processadores para recuperar as instruções, o código e/ou as estruturas de dados para a implementação das técnicas descritas nesta invenção. Um produto de programa de computador pode incluir uma mídia legível por computador.
[000153] A título de exemplo, e não de limitação, tais mídias de armazenamento legíveis por computador podem incluir RAM, ROM, EEPROM, CD-ROM ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnéticos, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar o código do programa desejado, sob a forma de instruções ou estruturas de dados, e que pode ser acessado por um computador. Além disso, qualquer conexão é corretamente considerada um meio legível por computador. Por exemplo, se as instruções são transmitidas a partir de um site, servidor, ou outra fonte remota usando um cabo coaxial, cabo de fibra ótica, par trançado, linha de assinante digital (DSL), ou tecnologias sem fio como o infravermelho, rádio e microondas, em seguida, o cabo coaxial, cabo de fibra óptica, par trançado, DSL ou tecnologias sem fio como o infravermelho, rádio e microondas estão incluídos na definição de suporte. Deve-se compreender, contudo, que as mídias de armazenamento legíveis por computador e as mídias de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outros meios de comunicação transitórios, mas são ao invés direcionadas para meios de armazenamento não transitórios, tangíveis. Disco e disquete, como aqui utilizado, inclui disco compacto (CD), disco laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu-ray, onde disquetes geralmente reproduzem dados magneticamente, enquanto que os discos reproduzem dados oticamente com lasers. Combinações dos anteriores, também devem ser incluídas no escopo das mídias legíveis por computador.
[000154] As instruções podem ser executadas por um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores de uso geral, circuitos integrados de aplicação específica (ASIC), arranjos lógicos programáveis em campo (FPGA), ou outro circuito lógico discreto ou integrado equivalente. Por conseguinte, o termo "processador", tal como aqui utilizado pode se referir a qualquer uma das estruturas anteriores ou qualquer outra estrutura adequada para a aplicação das técnicas aqui descritas. Além disso, em alguns aspectos, a funcionalidade aqui descrita pode ser fornecida dentro de módulos de hardware e/ou software dedicados configurados para a codificação e decodificação, ou incorporada em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[000155] As técnicas da presente invenção podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um monofone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chips). Vários componentes, módulos ou unidades são descritos nesta invenção para enfatizar aspectos funcionais dos dispositivos configurados para executar as técnicas divulgadas, mas não exigem necessariamente a realização por diferentes unidades de hardware. Em vez disso, tal como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou fornecidas por um conjunto de unidades de hardware interoperativas, incluindo um ou mais processadores, como descrito acima, em conjunto com o software e/ou firmware adequado.
[000156] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das reivindicações anexas.

Claims (10)

1. Método para processar dados de vídeo, o método caracterizado por compreender: receber (170) um fluxo de bits representando uma pluralidade de imagens incluindo uma ou mais imagens de acesso aleatório limpas (CRA) possuindo um tipo de unidade NAL indicando uma imagem CRA com imagens marcadas para descarte (TFD) associadas, ou uma ou mais imagens de acesso de enlace rompido (BLA) possuindo um tipo de unidade NAL indicando uma imagem BLA com imagens TFD associadas, em que as imagens TFD são imagens dianteiras não decodificáveis; receber (172), a partir de meios externos, uma mensagem indicando se as imagens TFD de pelo menos uma dentre as uma ou mais imagens CRA ou as uma ou mais imagens BLA foram descartadas pelos meios externos, e, assim, se deve se usar um conjunto alternativo de parâmetros de buffer de imagem codificada (CPB) para a pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA; configurar (174) uma variável UseAltCpbParamsFlag definida para indicar um conjunto de parâmetros CPB para a pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA, com base na mensagem recebida, tal que a variável indica o conjunto alternativo de parâmetros CPB quando as imagens TFD foram descartadas pelos meios externos; e selecionar o conjunto alternativo de parâmetros CPB para a pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA, quando a variável indicar o conjunto alternativo de parâmetros CPB, ou selecionar um conjunto padrão de parâmetros CPB para a pelo menos uma das uma ou mais imagens CRA ou das uma ou mais imagens BLA quando a variável não indicar o conjunto alternativo de parâmetros CPB.
2. Método, de acordo com a reivindicação 1, caracterizado por compreender também inicializar um decodificador de referência hipotético (HRD) usando pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA e parâmetros HRD associados, sendo que os parâmetros HRD incluem o conjunto de parâmetros CPB selecionado.
3. Método, de acordo com a reivindicação 1, caracterizado por compreender também definir um tipo de unidade da camada de abstração de rede (NAL) para pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA, em que selecionar um conjunto padrão de parâmetros CPB ou conjunto alternativo de parâmetros CPB compreende selecionar um conjunto padrão de parâmetros CPB ou conjunto alternativo de parâmetros CPB para pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA com base no tipo de unidade NAL e no valor da variável UseAltCpbParamsFlag.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA compreende uma imagem CRA que é manipulada como uma imagem BLA, e em que definir o tipo de unidade NAL compreende definir o tipo de unidade NAL para a imagem CRA manipulada como a imagem BLA com base no valor da variável UseAltCpbParamsFlag, em que definir o tipo de unidade NAL para a imagem CRA manipulada como a imagem BLA compreende preferivelmente: com base no valor da variável UseAltCpbParamsFlag, indicar uso do conjunto alternativo de parâmetros CPB, definir o tipo de unidade NAL para a imagem CRA manipulada como a imagem BLA para indicar uma imagem BLA com imagens dianteiras decodificáveis associadas; e com base no valor da variável UseAltCpbParamsFlag, não indicar uso do conjunto alternativo de parâmetros CPB, definir o tipo de unidade NAL para a imagem CRA manipulada como a imagem BLA para indicar uma imagem BLA com imagens dianteiras não decodificáveis associadas.
5. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que a pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA compreende uma imagem CRA, e em que definir o tipo de unidade NAL compreende definir o tipo de unidade NAL para a imagem CRA para indicar uma imagem CRA geral, ou para indicar uma de uma imagem CRA com imagens TFD associadas, uma imagem CRA com imagens dianteiras decodificáveis, ou uma imagem CRA sem imagens dianteiras como sinalizado no fluxo de bits.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que cada um do conjunto padrão de parâmetros CPB e conjunto alternativo de parâmetro CPB inclui retardos de remoção de CPB iniciais e deslocamentos de retardo de remoção de CPB iniciais.
7. Método, de acordo com a reivindicação 1, caracterizado por compreender também aplicar o conjunto de parâmetros CPB selecionado para pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA para um CPB incluído em um dispositivo de decodificação de vídeo para assegurar que o CPB não sobrecarrega durante a decodificação dos dados de vídeo.
8. Método, de acordo com a reivindicação 1, caracterizado por compreender também aplicar o conjunto de parâmetros CPB selecionado para pelo menos uma de uma ou mais imagens CRA ou uma ou uma ou mais imagens BLA a um primeiro CPB incluído em um dispositivo de codificação de vídeo para assegurar que o primeiro CPB incluído no dispositivo de codificação de vídeo não sobrecarregará durante a codificação dos dados de vídeo, e para assegurar que um segundo CPB incluído em um dispositivo de decodificação de vídeo não sobrecarregará mediante recebimento de um fluxo de bits codificado gerado pelo dispositivo de codificação de vídeo.
9. Dispositivo de codificação de vídeo para processar dados de vídeo, o dispositivo caracterizado por compreender: meios para receber um fluxo de bits representando uma pluralidade de imagens incluindo uma ou mais imagens de acesso aleatório limpas (CRA) possuindo um tipo de unidade NAL indicando uma imagem CRA com imagens marcadas para descarte (TFD) associadas, ou uma ou mais imagens de acesso de enlace rompido (BLA) possuindo um tipo de unidade NAL indicando uma imagem BLA com imagens TFD associadas, em que as imagens TFD são imagens dianteiras não decodificáveis; meios para receber, a partir de meios externos, uma mensagem indicando se as imagens TFD de pelo menos uma dentre as uma ou mais imagens CRA ou as uma ou mais imagens BLA foram descartadas pelos meios externos, e, assim, se deve se usar um conjunto alternativo de parâmetros de buffer de imagem codificada (CPB) para a pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA; meios para configurar uma variável UseAltCpbParamsFlag definida para indicar um conjunto de parâmetros CPB para a pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA, com base na mensagem recebida, tal que a variável indica o conjunto alternativo de parâmetros CPB quando as imagens TFD foram descartadas pelos meios externos; e meios para o conjunto alternativo de parâmetros CPB para a pelo menos uma de uma ou mais imagens CRA ou uma ou mais imagens BLA, quando a variável indicar o conjunto alternativo de parâmetros CPB, ou selecionar um conjunto padrão de parâmetros CPB para a pelo menos uma das uma ou mais imagens CRA ou das uma ou mais imagens BLA quando a variável não indicar o conjunto alternativo de parâmetros CPB.
10. Memória legível por computador caracterizada pelo fato de que possui instruções nela armazenadas que, quando executadas, fazem com que um computador realize o método conforme definido em qualquer uma das reivindicações de 1 a 8.
BR112015006059-5A 2012-09-20 2013-08-27 Codificação de vídeo codm comportamentos [de imagem [de ponto [de acesso aleatório melhorados BR112015006059B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261703695P 2012-09-20 2012-09-20
US61/703,695 2012-09-20
US13/952,340 US9374583B2 (en) 2012-09-20 2013-07-26 Video coding with improved random access point picture behaviors
US13/952,340 2013-07-26
PCT/US2013/056904 WO2014046850A1 (en) 2012-09-20 2013-08-27 Video coding with improved random access point picture behaviors

Publications (2)

Publication Number Publication Date
BR112015006059A2 BR112015006059A2 (pt) 2017-07-04
BR112015006059B1 true BR112015006059B1 (pt) 2023-04-11

Family

ID=50274437

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015006059-5A BR112015006059B1 (pt) 2012-09-20 2013-08-27 Codificação de vídeo codm comportamentos [de imagem [de ponto [de acesso aleatório melhorados

Country Status (24)

Country Link
US (1) US9374583B2 (pt)
EP (1) EP2898677B1 (pt)
JP (1) JP6271558B2 (pt)
KR (1) KR101721344B1 (pt)
CN (1) CN104641637B (pt)
AR (1) AR093236A1 (pt)
AU (1) AU2013318467B2 (pt)
BR (1) BR112015006059B1 (pt)
CA (1) CA2883439C (pt)
DK (1) DK2898677T3 (pt)
ES (1) ES2684546T3 (pt)
HK (1) HK1205841A1 (pt)
HU (1) HUE039076T2 (pt)
IL (1) IL237365B (pt)
MY (1) MY181728A (pt)
PH (1) PH12015500517A1 (pt)
PT (1) PT2898677T (pt)
RU (1) RU2624100C2 (pt)
SG (1) SG11201501407TA (pt)
SI (1) SI2898677T1 (pt)
TW (1) TWI559774B (pt)
UA (1) UA117462C2 (pt)
WO (1) WO2014046850A1 (pt)
ZA (1) ZA201502302B (pt)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2813075A1 (en) * 2012-02-08 2014-12-17 Thomson Licensing Method and apparatus for using an ultra-low delay mode of a hypothetical reference decoder
US9351016B2 (en) 2012-04-13 2016-05-24 Sharp Kabushiki Kaisha Devices for identifying a leading picture
US20140003520A1 (en) * 2012-07-02 2014-01-02 Cisco Technology, Inc. Differentiating Decodable and Non-Decodable Pictures After RAP Pictures
US9374585B2 (en) * 2012-12-19 2016-06-21 Qualcomm Incorporated Low-delay buffering model in video coding
US10264272B2 (en) * 2013-10-15 2019-04-16 Qualcomm Incorporated Device and method for scalable coding of video information
US20150195549A1 (en) * 2014-01-08 2015-07-09 Qualcomm Incorporated Support of non-hevc base layer in hevc multi-layer extensions
US20150264404A1 (en) * 2014-03-17 2015-09-17 Nokia Technologies Oy Method and apparatus for video coding and decoding
US10715833B2 (en) * 2014-05-28 2020-07-14 Apple Inc. Adaptive syntax grouping and compression in video data using a default value and an exception value
US10116576B2 (en) * 2015-10-19 2018-10-30 Samsung Electronics Co., Ltd. Methods and apparatus for random access of HEVC bitstream for MMT
WO2020139829A1 (en) * 2018-12-27 2020-07-02 Futurewei Technologies, Inc. On intra random access point pictures and leading pictures in video coding
WO2020178126A1 (en) * 2019-03-01 2020-09-10 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Hypothetical reference decoder
ES2967911T3 (es) * 2019-04-03 2024-05-06 Huawei Tech Co Ltd Codificación de vídeo entrelazado con imágenes principales
US11695965B1 (en) 2022-10-13 2023-07-04 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video coding using a coded picture buffer

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MY134659A (en) * 2002-11-06 2007-12-31 Nokia Corp Picture buffering for prediction references and display
US8599925B2 (en) * 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
US8358665B2 (en) 2008-08-15 2013-01-22 Qualcomm Incorporated Method and apparatus for controlling the presentation of multimedia data from a multiplex signal between devices in a local area network
US20100098156A1 (en) 2008-10-16 2010-04-22 Qualcomm Incorporated Weighted prediction based on vectorized entropy coding
JP5072893B2 (ja) * 2009-03-25 2012-11-14 株式会社東芝 画像符号化方法および画像復号化方法
US8665964B2 (en) 2009-06-30 2014-03-04 Qualcomm Incorporated Video coding based on first order prediction and pre-defined second order prediction mode
US8537200B2 (en) 2009-10-23 2013-09-17 Qualcomm Incorporated Depth map generation techniques for conversion of 2D video data to 3D video data
US8861599B2 (en) * 2011-03-08 2014-10-14 Sony Corporation Context reduction for last transform position coding
US9516379B2 (en) 2011-03-08 2016-12-06 Qualcomm Incorporated Buffer management in video codecs
US9706227B2 (en) 2011-03-10 2017-07-11 Qualcomm Incorporated Video coding techniques for coding dependent pictures after random access
US9026671B2 (en) 2011-04-05 2015-05-05 Qualcomm Incorporated IP broadcast streaming services distribution using file delivery methods
EP2732626A1 (en) 2011-07-15 2014-05-21 Telefonaktiebolaget L M Ericsson (PUBL) An encoder and method thereof for assigning a lowest layer identity to clean random access pictures

Also Published As

Publication number Publication date
TW201424392A (zh) 2014-06-16
HUE039076T2 (hu) 2018-12-28
SG11201501407TA (en) 2015-04-29
HK1205841A1 (en) 2015-12-24
SI2898677T1 (en) 2018-08-31
CA2883439C (en) 2017-08-01
KR20150060776A (ko) 2015-06-03
MY181728A (en) 2021-01-05
US9374583B2 (en) 2016-06-21
EP2898677B1 (en) 2018-05-30
WO2014046850A1 (en) 2014-03-27
KR101721344B1 (ko) 2017-03-29
PT2898677T (pt) 2018-10-08
EP2898677A1 (en) 2015-07-29
US20140079140A1 (en) 2014-03-20
PH12015500517B1 (en) 2015-04-27
JP2015533048A (ja) 2015-11-16
AU2013318467B2 (en) 2017-04-20
ZA201502302B (en) 2021-09-29
IL237365B (en) 2018-05-31
CN104641637B (zh) 2019-04-02
RU2015114441A (ru) 2016-11-10
CA2883439A1 (en) 2014-03-27
BR112015006059A2 (pt) 2017-07-04
JP6271558B2 (ja) 2018-01-31
UA117462C2 (uk) 2018-08-10
ES2684546T3 (es) 2018-10-03
CN104641637A (zh) 2015-05-20
AU2013318467A1 (en) 2015-03-19
IL237365A0 (en) 2015-04-30
AR093236A1 (es) 2015-05-27
TWI559774B (zh) 2016-11-21
RU2624100C2 (ru) 2017-06-30
DK2898677T3 (en) 2018-08-27
PH12015500517A1 (en) 2015-04-27

Similar Documents

Publication Publication Date Title
KR102115051B1 (ko) 브로큰 링크 픽처들을 갖는 비디오 시퀀스들에서 참조 픽처들의 마킹
BR112015006059B1 (pt) Codificação de vídeo codm comportamentos [de imagem [de ponto [de acesso aleatório melhorados
ES2707892T3 (es) Operaciones de almacenamiento en memoria intermedia de vídeo para acceso aleatorio en la codificación de vídeo
BR112014033008B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões
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
BR112015006441B1 (pt) Indicação e ativação de conjuntos de parâmetros para codificação de vídeo
ES2810202T3 (es) Adaptación de transmisión continua basada en imágenes de acceso aleatorio limpio (CRA)
BR112014024849B1 (pt) Armazenamento em buffer de vídeo de baixo retardo em codificação de vídeo
BR112014010418B1 (pt) Acesso aleatório com gerenciamento de buffer de imagem decodificada avançada (dpb) na codificação de vídeo
BR112015016230B1 (pt) Sinalização condicional de informação de temporização de contagem de ordem de imagens para temporização de vídeo em codificação de vídeo
WO2014011363A1 (en) Sei message including fixed-length coded video parameter set id (vps_id)
BR112016012510B1 (pt) Método e dispositivo para codificar dados de vídeo
BR112015007273B1 (pt) Método e dispositivo para processar dados de vídeo de múltiplas camadas, dispositivo de codificação de vídeo e memória legível por computador
BR112016011818B1 (pt) Projeto de valor de poc para codificação de vídeo de multicamada
BR112014033011B1 (pt) Conjunto de parâmetros de vídeo para hevc e extensões
BR112016029306B1 (pt) Método e dispositivo para decodificar, bem como, método e dispositivo para codificar dados de vídeo de acordo com um padrão de codificação de vídeo de alta eficiência (hevc) uma extensão multivista do mesmo ou uma extensão escalonável do mesmo, e, memória legível por computador
BR112014031749B1 (pt) Acesso randômico e sinalização de imagens de referência de longo termo em codificação de vídeo

Legal Events

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

Ipc: H04N 7/00 (2011.01)

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B15K Others concerning applications: alteration of classification

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

Ipc: H04N 19/196 (2014.01), H04N 19/70 (2014.01), H04N

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

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