BR112014024850B1 - Armazenamento em buffer de vídeo de baixo retardo em codificação de vídeo - Google Patents

Armazenamento em buffer de vídeo de baixo retardo em codificação de vídeo Download PDF

Info

Publication number
BR112014024850B1
BR112014024850B1 BR112014024850-8A BR112014024850A BR112014024850B1 BR 112014024850 B1 BR112014024850 B1 BR 112014024850B1 BR 112014024850 A BR112014024850 A BR 112014024850A BR 112014024850 B1 BR112014024850 B1 BR 112014024850B1
Authority
BR
Brazil
Prior art keywords
cpb
decoding
units
video
unit
Prior art date
Application number
BR112014024850-8A
Other languages
English (en)
Other versions
BR112014024850A2 (pt
BR112014024850A8 (pt
Inventor
Ye-Kui Wang
Ying Chen
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112014024850A2 publication Critical patent/BR112014024850A2/pt
Publication of BR112014024850A8 publication Critical patent/BR112014024850A8/pt
Publication of BR112014024850B1 publication Critical patent/BR112014024850B1/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/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

ARMAZENAMENTO EM UFFER DE VÍDEO DE AIXO RETARDO EM CODIFICAÇÃO DE VÍDEO Como um exemplo, um método de codificação de dados de vídeo inclui o armazenamento de uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem. O método inclui adicionalmente a obtenção de um tempo de remoção de buffer respectivo para uma ou mais unidades de decodificação, onde a obtenção do tempo de remoção de buffer respectivo compreende o recebimento de um valor sinalizado respectivo indicativo do tempo de remoção de buffer respectivo ara pelo menos uma das unidades de decodificação. O método inclui adicionalmente a remoção das unidades de decodificação do buffer de imagem de acordo com o tempo de remoção de armazenamento obtido para cada uma das unidades de decodificação. O método inclui adicionalmente a codificação de dados de vídeo correspondendo às unidades de decodificação removidas, onde a codificação dos dados de vídeo compreende a decodificação de pelo menos uma das unidades de decodificação.

Description

[0001] Esse pedido reivindica os benefícios do pedido provisório U.S. No. 61/620.266, depositado em 4 de abril de 2012, e pedido provisório U.S. No. 61/641.063, depositado em 1 de maio de 2012, a totalidade do conteúdo dos quais é incorporada aqui por referência.
Campo Técnico
[0002] Essa descrição refere-se à codificação de vídeo.
Fundamentos
[0003] As capacidades de vídeo digital podem ser incorporadas a uma ampla faixa de dispositivos, incluindo televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes digitais pessoais (PDAs), computadores laptop ou desktop, câmeras digitais, dispositivos de gravação digital, aparelhos de mídia digital, dispositivos de jogos de vídeo, consoles de jogo de vídeo, telefones de rádio via satélite ou celular, dispositivos de teleconferência de vídeo, e similares. Os 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 Escalonável (SVC) Codificação de Vídeo de Multivisualização (MVC). Adicionalmente, a Codificação de Vídeo de Alta Eficiência (HEVC) é um padrão de codificação de vídeo sendo desenvolvido pela Equipe de Colaboração Conjunta em Codificação de Vídeo (JCT-VC) do Grupo de Especialistas de Codificação de Vídeo ITU-T (VCEG) e Grupo de Especialistas em Imagens em Movimento ISO/IEC (MPEG). Um rascunho recente do padrão HEVC futuro, referido como "Rascunho de Trabalho HEVC 6" ou "HEVC WD6", é descrito no documento JCTVC-H1003, Bross et al., "High Efficiency Video Coding (HEVC) Text Specification Draft 6", Equipe de Colaboração Conjunta de Codificação de Vídeo (JCT-VD) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 8o. Encontro: San José, Califórnia, EUA, fevereiro de 2012, que, a partir de 1 de maio de 2012 pode ser descarregado a partir de http://phenix.int- evry.fr/jct/doc end user/documents/8 San 20Jose/wg11/JCTVC- H1003-v22.zip.
[0004] As técnicas de compressão de vídeo realizam a previsão espacial e/ou previsão temporal para reduzir ou remover a redundância inerente às sequências de vídeo. Para codificação de vídeo com base em bloco, um quadro de vídeo ou fatia pode ser dividido em macroblocos. Cada macrobloco pode ser adicionalmente dividido. Os macroblocos em um quadro intracodificado (I) ou fatia são codificados utilizando previsão espacial com relação aos macroblocos vizinhos. Os macroblocos em um quadro intercodificado (P ou B) ou fatia podem utilizar a previsão espacial com relação aos macroblocos vizinhos no mesmo quadro ou fatia ou previsão temporal com relação a outras quadros de referência.
Sumário
[0005] Em geral, essa descrição descreve várias técnicas para alcançar o retardo de codec reduzido de forma interoperacional. Em um exemplo, essas técnicas podem ser alcançadas através de um comportamento de armazenamento de imagem codificada com base em sub-imagem genérica (CPB).
[0006] Em um exemplo, um método de codificação de dados de vídeo inclui o armazenamento de uma ou mais unidades de decodificação de dados de vídeo em um buffer (armazenador) de imagem. O método inclui adicionalmente a obtenção de um tempo de remoção de armazenamento temporário respectivo para uma ou amis unidades de decodificação, onde a obtenção de tempo de remoção de buffer respectivo compreende o recebimento de um valor sinalizado respectivo indicativo do tempo de remoção de buffer respectivo para pelo menos uma das unidades de decodificação. O método inclui adicionalmente a remoção das unidades de decodificação a partir do buffer de imagem de acordo com o tempo de remoção de buffer obtido para cada uma das unidades de decodificação. O método inclui adicionalmente a codificação de dados de vídeo correspondentes às unidades de decodificação removidas, onde a codificação de dados de vídeo compreende a decodificação de pelo menos uma das unidades de decodificação.
[0007] Em outro exemplo, um dispositivo para codificação de dados de vídeo é configurado para armazenar uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem. O dispositivo é adicionalmente configurado para obter um tempo de remoção de buffer respectivo para uma ou mais unidades de decodificação, onde a obtenção do tempo de remoção de armazenamento respectivo compreende o recebimento de um valor sinalizado respectivo indicativo do tempo de remoção de armazenamento respectivo para pelo menos uma das unidades de decodificação. O dispositivo é adicionalmente configurado para remover as unidades de decodificação a partir do buffer de imagem de acordo com o tempo de remoção de armazenamento obtido para cada uma das unidades de decodificação. O dispositivo é adicionalmente configurado para codificar os dados de vídeo correspondentes às unidades de decodificação removidas, onde a codificação de dados de vídeo compreende a decodificação de pelo menos uma das unidades de decodificação.
[0008] Em outro exemplo, um aparelho para codificação de dados de vídeo inclui meios para o armazenamento de uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem. O aparelho inclui adicionalmente meios para obtenção de um tempo de remoção de armazenamento respectivo para uma ou mais unidades de decodificação, onde a obtenção do tempo de remoção de armazenamento respectivo compreende o recebimento de um valor sinalizado respectivo indicativo do tempo de remoção de armazenamento respectivo para pelo menos uma das unidades de decodificação. O aparelho inclui adicionalmente meios para remover as unidades de decodificação do buffer de imagem de acordo com o tempo de remoção de armazenamento obtido para cada uma das unidades de decodificação. O aparelho inclui adicionalmente meios para codifica os dados de vídeo correspondentes às unidades de decodificação removidas, onde a codificação de dados de vídeo compreende a decodificação de pelo menos uma das unidades de decodificação.
[0009] Em outro exemplo, um meio de armazenamento legível por computador compreende instruções armazenadas que, se executadas, fazem com que um processador armazene uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem. As instruções fazem adicionalmente com que um processador obtenha um tempo de remoção de armazenamento respectivo para uma ou mais unidades de decodificação, onde a obtenção do tempo de remoção do armazenamento respectivo compreende o recebimento de um valor sinalizado respectivo indicativo de tempo de remoção de armazenamento respectivo para pelo menos uma das unidades de decodificação. As instruções fazem adicionalmente com que um processador remova as unidades de decodificação do buffer de imagem de acordo com o tempo de remoção de armazenamento obtido para cada uma das unidades de decodificação. As instruções fazem adicionalmente com que um processador codifique os dados de vídeo correspondentes às unidades de decodificação removidas, onde a codificação de dados de vídeo compreende a decodificação de pelo menos uma das unidades de decodificação.
[0010] Em outro exemplo, um método inclui o processamento de dados de vídeo de acordo com pelo menos um dentre uma pluralidade de parâmetros de informação de utilização de vídeo (VUI). A pluralidade de parâmetros VUI inclui parâmetros de armazenamento de imagem codificada de sub-imagem (CPB) presente no indicador (sub_pic_cpb_params_present_flag) que indica uma presença de parâmetros CPB de sub-imagem. A pluralidade de parâmetros VUI inclui adicionalmente uma mensagem de informação de melhoria suplementar (SEI) incluindo pelo menos um dentre um elemento de sintaxe indicando um retardo para um CPB SchedSelIdx entre um horário de chegada em um buffer de imagem codificado (CPB) de um primeiro bit de dados codificados associados com uma primeira unidade de decodificação em uma unidade de aceso associada com uma mensagem SEI de período de armazenamento, e um horário de remoção do CPB de dados codificados associados com a primeira unidade de decodificação, para o primeiro período de armazenamento depois da inicialização do decodificador de referência hipotético (HRD) (initial_du_cpb_removal_delay), e um elemento de sintaxe indicando, em combinação com um elemento de sintaxe indicando um retardo de remoção CPB (cpb_removal_delay), um desvio para o CPB SchedSelIdx para especificar um horário de distribuição inicial da primeira unidade de decodificação para o CPB (initial_du_cpb_removal_delay_offset). A pluralidade de parâmetros VUI inclui adicionalmente uma mensagem SEI incluindo pelo menos um elemento de sintaxe indicando um número de unidades de camada de acesso de rede (NAL) em uma unidade de decodificação i da unidade de acesso com a qual a mensagem SEI de temporização de imagem está associada (num_nalus_in_du_minus1), e um elemento de sintaxe que específica um número de tiques de relógio para se esperar depois da remoção de CPB da primeira unidade de decodificação na unidade de acesso associada com a mensagem SEI de período de armazenamento mais recente em uma unidade de acesso anterior antes de remover do CPB a unidade de decodificação i correspondente na unidade de acesso associada com a mensagem SEI de temporização de imagem (du_cpb_removal_delay).
[0011] Os detalhes de um ou mais exemplos são apresentados nos desenhos a seguir e na descrição abaixo. Outras características, objetivos e vantagens serão aparentes a partir da descrição e dos desenhos, e a partir das reivindicações.
Breve Descrição dos Desenhos
[0012] A figura 1 é um diagrama de blocos ilustrando um sistema de codificação e decodificação de vídeo ilustrativo que pode utilizar técnicas para desbloqueio de bordas entre blocos de vídeo, de acordo com as técnicas dessa descrição;
[0013] A figura 2 é um diagrama de blocos ilustrando um exemplo de um codificador de vídeo que pode implementar as técnicas para desbloqueio de bordas entre blocos de vídeo, de acordo com as técnicas dessa descrição;
[0014] A figura 3 é um diagrama de blocos ilustrando um decodificador de vídeo, que decodifica uma sequência de vídeo codificada, de acordo com as técnicas dessa descrição;
[0015] A figura 4 é um diagrama de blocos ilustrando um dispositivo de destino ilustrativo que pode implementar toda e qualquer uma das técnicas dessa descrição;
[0016] A figura 5 é um fluxograma que ilustra um método ilustrativo que inclui a remoção de unidades de decodificação de dados de vídeo de um buffer de imagem de acordo com um horário de remoção de buffer obtido, de acordo com as técnicas dessa descrição;
[0017] A figura 6 é um fluxograma que ilustra outro método ilustrativo que inclui a remoção de unidades de decodificação de dados de vídeo a partir de um buffer de imagem de acordo com um horário de remoção de buffer obtido, de acordo com as técnicas dessa descrição;
[0018] A figura 7 é um fluxograma que ilustra outro método ilustrativo de processamento de dados de vídeo que inclui o envio de uma imagem cortada em um processo de bumping, de acordo com as técnicas dessa descrição.
Descrição Detalhada
[0019] Os aplicativos de vídeo podem incluir reprodução local, sequenciamento, difusão/multidifusão e aplicativos de conversação. Os aplicativos de conversação podem incluir telefonia de vídeo e videoconferência e também são referidos como aplicativos de retardo baixo. Os aplicativos de conversação exigem um retardo relativamente baixo de extremidade para extremidade de todo o sistema, isso é, o retardo entre o momento quando um quadro de vídeo é capturado e o momento quando o quadro de vídeo é exibido. Tipicamente, o retardo de extremidade para extremidade aceitável para aplicativos de conversação deve ser inferior a 400 milissegundos (ms), e um retardo de extremidade para extremidade de cerca de 150 ms pode ser considerado muito bom. Cada etapa de processamento pode contribuir para o retardo de extremidade para extremidade geral, por exemplo, captura, retardo, retardo pré-processamento, retardo de codificação, retardo de transmissão, retardo de armazenamento de recepção (para de-jittering), retardo de decodificação, retardo de saída de imagem decodificada, retardo pós-processamento, e retardo de exibição. Dessa forma, tipicamente, o retardo de codec (retardo de codificação, retardo de decodificação e retardo de envio de imagem decodificada) deve ser minimizado em aplicativos de conversação. Em particular, a estrutura de codificação deve garantir que a ordem de decodificação de imagem e ordem de envio de imagem sejam idênticas de modo que o retardo de envio de imagem decodificada seja igual a zero.
[0020] Os padrões de codificação de vídeo podem incluir uma especificação de um modelo de armazenamento de vídeo. Em AVC e HEVC, o modelo de armazenamento é referido como um decodificador de referência hipotética (HRD), que inclui um modelo de armazenamento de ambos o buffer de imagem codificada (CPB) e buffer de imagem decodificada (DPB), e os comportamentos CPB e DPB são matematicamente satisfeitos. HRD impõem diretamente restrições à temporização diferente, tamanhos de buffer e taxa de bit e impõe indiretamente restrições às características e estatísticas de sequência de bits. Um conjunto completo de parâmetros HRD inclui cinco parâmetros básicos: retardo de remoção CPB inicial, tamanho CPB, taxa de bits, retardo de saída DPB inicial e tamanho de DPB.
[0021] Em AVC e HEVC, a conformidade de sequência de bit e a conformidade de decodificador são especificadas como partes da especificação HRD. Apesar de ser chamado como um tipo de decodificador, HRD é tipicamente necessário no lado do codificador para garantir a conformidade de sequência de bits, enquanto não é tipicamente necessário no lado do decodificador. Dois tipos de sequências de bit ou conformidade HRD, isso é Tipo I e Tipo II, são especificados. Além disso, dois tipos de conformidade de decodificador, conformidade de decodificador de temporização de saída e conformidade de decodificador de ordem de saída são especificados.
[0022] Nos modelos HRD HEVC e AVC, a decodificação ou remoção CPB é baseada em unidade de acesso, e é assumido que a decodificação de imagem seja instantânea. Em aplicações práticas, se um decodificador de conformidade seguir estritamente os tempos de decodificação sinalizados, por exemplo, nas mensagens de informação de melhoria suplementar de temporização de imagem (SEI), para iniciar a decodificação de unidades de acesso, então o momento mais cedo possível para se enviar uma imagem decodificada em particular é igual ao momento de decodificação dessa imagem em particular mais o tempo necessário para se decodificar essa imagem em particular. Diferentemente dos modelos HRD HEVC e AVC, o tempo necessário para se decodificar uma imagem no mundo real não é igual a zero. Os termos "instantâneo" e "instantaneamente" como utilizados por toda essa descrição podem fazer referência a qualquer duração de tempo que possa ser considerada instantânea em um ou mais modelos de codificação ou um aspecto idealizado de quaisquer um ou mais modelos de codificação, com a compreensão de que isso pode diferir de ser "instantâneo" em um sentido físico ou literal. Por exemplo, para fins dessa 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 momento hipotético ou idealizado mais cedo possível para a função ou processo ser realizado. Sintaxe e nomes variáveis como utilizados aqui podem em alguns exemplos ser compreendidos de acordo com seu significado dentro do modelo HEVC.
[0023] Um comportamento CPB com base em sub- imagem foi proposto em "Enhancement on operation of coded Picture buffer", Kazui et al., Equipe de Colaboração Conjunta de Codificação de Vídeo (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 7o. Encontro: Genebra, CH, de 21 a 30 de novembro de 2011, JCTVC-G188 (disponível em http://phenix.int- evry.fr/jct/doc end user/documents/7)Geneva/wg11/JCTVC- G188-v2.zip) a fim de alcançar o retardo de codificação de menos de um período de imagem de forma interoperacional. O método JCTVC-G188 pode ser resumido como segue: uma imagem pode ser dividida igualmente em M grupos de blocos de árvore, isso é, os primeiros M blocos de árvore em uma digitalização raster de bloco de árvore da imagem pertencendo ao primeiro grupo de blocos de árvore, os segundos M blocos de árvore na digitalização raster de bloco de árvore da imagem pertencendo ao segundo grupo de blocos de árvore, e assim por diante. O valor M pode ser sinalizado nas mensagens SEI de período de armazenamento. Esse valor pode ser utilizado para derivar o tempo de remoção CPB (isso é, o tempo de decodificação) de cada grupo de blocos de árvore. Nesse sentido, o comportamento CPB JCTVC-G188 é baseado em sub-imagem, onde cada sub- imagem é um grupo de blocos de árvore. Em alguns exemplos, uma sub-imagem pode corresponder a uma ou mais fatias, uma ou mais ondas (para divisão de frente de onda de uma imagem) ou um ou mais tiles. É considerado nesse método de JCTVC-G188 que os tempos de remoção de CPB de nível de unidade de acesso são sinalizados como normal (utilizando mensagens SEI de temporização de imagem), e dentro de cada unidade de acesso, os tempos de remoção de CPB para os grupos de bloco de árvore são considerados para se dividir de forma linear ou igual o intervalo do tempo de remoção CPB da unidade de acesso anterior para o tempo de remoção CPB da unidade de acesso atual.
[0024] Esse método de JCTVC-G188 implica adicionalmente nas considerações a seguir ou exigências de sequência de bit: (1) dentro de cada imagem, cada grupo de bloco de árvore é codificado de uma forma que exige a mesma quantidade de tempo de decodificação (não apenas no modelo HRD, mas também para decodificadores de mundo real), onde os dados codificados do primeiro grupo de bloco de árvore são considerados como incluindo todas as unidades NAL (Camada de Abstração de Rede) não VCL (Camada de Codificação de Vídeo) na mesma unidade de acesso e antes da primeira unidade NAL VCL; (2) dentro de cada imagem, o número de bits para cada grupo de bloco de árvore é idêntico, onde os dados codificados do primeiro grupo de bloco de árvore é considerado como incluindo todas as unidades NAL não VCL na mesma unidade de acesso e antes da primeira unidade NAL VCL.
[0025] Os métodos existentes para especificação de um comportamento CPB com base em sub-imagem são associados com pelo menos os seguintes problemas: (1) A exigência de que a quantidade de dados codificados para cada grupo de bloco de árvore em uma imagem codificada seja idêntica é difícil de alcançar com um desempenho de codificação equilibrado (onde os grupos de bloco de árvore para áreas com textura mais detalhada ou atividade de movimento em uma imagem podem utilizar mais bits). (2) Quando mais de um grupo de bloco de árvore é incluído em uma fatia, pode não haver uma forma fácil de dividir os bits codificados de blocos de árvore pertencentes a diferentes grupos de bloco de árvore e enviar separadamente os mesmos no lado do codificador e remover separadamente os mesmos do CPB (isso é, decodificar separadamente os mesmos).
[0026] Para se solucionar os problemas acima, essa descrição descreve um desenho genérico para suportar o comportamento CPB com base em sub-imagem, com várias alternativas. Em alguns exemplos, as características das técnicas CPB com base em sub-imagem dessa descrição podem incluir aspectos das técnicas a seguir: (1) Cada sub-imagem pode incluir um número de blocos de codificação de uma imagem codificada contínua na ordem de decodificação. Um bloco de codificação pode ser idêntico a um bloco de árvore ou a um subconjunto de um bloco de árvore; (2) A codificação das sub-imagens e alocação de bits para diferentes sub-imagens em uma imagem podem ser realizados de forma normal, sem assumir ou exigir que cada sub-imagem (isso é, grupo de bloco de árvore) em uma imagem seja codificada com a mesma quantidade de bits. Consequentemente, o tempo de remoção CPB para cada sub- imagem pode ser sinalizado na sequência de bits ao invés de ser derivado de acordo com os tempos de remoção CPB de nível de imagem sinalizada; (3) Quando mais de uma sub- imagem é incluída em uma fatia, o alinhamento de byte pode se aplicado no final de cada sub-imagem, em contraste, por exemplo, com o alinhamento de byte para tiles em HEVC WD6. Adicionalmente, o ponto de entrada de cada sub-imagem. exceto pelo primeiro na imagem codificada, pode ser sinalizada, em contraste, por exemplo, com o alinhamento de tiles em HEVC WD6. O valor sinalizado recebido pode ser indicativo do alinhamento de byte de pelo menos uma das sub-imagens dentro de um conjunto maior de dados de vídeo, tal como uma fatia, um tile, ou um quadro, por exemplo. Cada uma das características (1)-(3) pode ser aplicada independentemente ou em combinação com as outras.
[0027] Em um exemplo, a operação HRD, incluindo o comportamento CPB com base em sub-imagem, pode ser resumida como segue: Quando a sinalização indica que o comportamento CPB com base em sub-imagem está em uso, por exemplo, através de uma sinalização de nível de sequência de um elemento de sintaxe sub_pic_cpb_flag é igual a 1, a remoção ou decodificação CPB é baseada na sub-imagem, ou de forma equivalente, a unidade de decodificação, que pode ser uma unidade de acesso ou um subconjunto de uma unidade de acesso. Em outras palavras, cada vez que uma unidade de decodificação, seja uma unidade de acesso ou um subconjunto de uma unidade de acesso, é removida do CPB para fins de decodificação, o tempo de remoção de uma unidade de decodificação do CPB pode ser derivado de um retardo de remoção CPB inicial sinalizado e o retardo de remoção CPB sinalizado para a unidade de decodificação. Um fluxo insuficiente CPB é especificado como a condição na qual o tempo de remoção CPB nominal da unidade de decodificação m tr,n(m) é inferior ao tempo de remoção CPB final da unidade de decodificação m taf(m) para qualquer valor de m. Em um exemplo, quando um elemento de sintaxe low_delay_hrd_flag é igual a 0, é necessário que CPB nunca tenha um fluxo insuficiente.
[0028] Em um exemplo, os processo de envio e remoção DPB ainda podem operar no nível de imagem ou nível de unidade de acesso, isso é, cada vez que toda a imagem decodificada é enviada ou removida do DPB. A remoção de imagens decodificadas de DPB pode ocorrer instantaneamente no tempo de remoção CPB da primeira unidade de decodificação da unidade de acesso n (contendo a imagem atual).
[0029] A figura 1 é um diagrama de blocos ilustrando um sistema de codificação e decodificação de vídeo ilustrativo 10 que pode utilizar técnicas para o armazenamento de uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem, obtendo um tempo de remoção de armazenamento respectivo para uma ou mais unidades de decodificação, removendo as unidades de decodificação do buffer de imagem de acordo com o tempo de remoção de armazenamento obtido para cada uma das unidades de decodificação, e codificando os dados de vídeo correspondentes às unidades de decodificação removidas, entre outras funções.
[0030] Como ilustrado na figura 1, o sistema 10 inclui um dispositivo fonte 12 que transmite o vídeo codificado para um dispositivo de destino 14 através de um canal de comunicação 16. O dispositivo fonte 12 e o dispositivo de destino 14 podem compreender qualquer um dentre uma ampla faixa de dispositivos. Em alguns casos, o dispositivo fonte 12 e o dispositivo de destino 14 podem compreender dispositivos de comunicação sem fio, tal como aparelhos sem fio, os chamados radiotelefones celulares ou via satélite, ou qualquer dispositivo sem fio que possa comunicar informação de vídeo através de um canal de comunicação 16, caso no qual o canal de comunicação 16 é sem fio. As técnicas dessa descrição, no entanto, não estão necessariamente limitadas a aplicativos ou configurações sem fio. Por exemplo, essas técnicas podem se aplicar a difusões de televisão por ar, transmissões de televisão a cabo, transmissões de televisão via satélite, transmissões de vídeo por Internet, vídeo digital codificado que é codificado em um meio de armazenamento ou outras situações. De acordo, o canal de comunicação 16 pode compreender qualquer combinação de meio sem fio, com fio ou de armazenamento adequado para transmissão ou armazenamento de dados de vídeo codificados.
[0031] Alternativamente, os dados codificados podem ser enviados a partir do transmissor 24 para um dispositivo de armazenamento 34. De forma similar, os dados codificados podem ser acessados a partir do dispositivo de armazenamento 34 pelo receptor 26. O dispositivo de armazenamento 34 pode incluir qualquer um dentre uma variedade de meios de armazenamento de dados acessados localmente ou distribuídos tal como um disco rígido, discos Blu-ray, DVDs, CD-ROMs, memória flash, memória volátil ou não volátil, ou qualquer outro meio de armazenamento digital adequado para o armazenamento de dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento 34 pode corresponder a um servidor de arquivo, um servidor virtual, um centro de dados, uma rede redundante de centros de dados, ou outro dispositivo de armazenamento intermediário que possa reter o vídeo codificado gerado pelo dispositivo fonte 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados a partir do dispositivo de armazenamento 34 através de sequenciamento e download. Uma implementação de servidor de arquivo do dispositivo de armazenamento 34 ou uma parte do mesmo pode ser qualquer tipo de servidor capaz de armazenar os dados de vídeo codificados e transmitir esses dados de vídeo codificados para o dispositivo de destino 14. Servidores de arquivo ilustrativos incluem um servidor da rede (por exemplo, para um sítio da rede), um servidor FTP, dispositivos de armazenamento anexados à rede (NAS), ou um acionador de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão com a Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão Wi-Fi), uma conexão com fio (por exemplo, DSL, modem a cabo, etc.) ou uma combinação de ambos que seja adequada para acessar dados de vídeo codificados armazenados em um dispositivo de armazenamento remoto ou não local 34. A transmissão de dados de vídeo codificados a partir do dispositivo de armazenamento 34 pode ser uma transmissão de sequenciamento, uma transmissão de download, ou uma combinação de ambos.
[0032] No exemplo da figura 1, o dispositivo fonte 12 inclui uma fonte de vídeo 18, um codificador de vídeo 20, um modulador/demodulador (modem) 22 e um transmissor 24. O dispositivo de destino 14 inclui um receptor 26, um modem 28, um decodificador de vídeo 30, e um dispositivo de exibição 32. De acordo com essa descrição, o codificador de vídeo 20 do dispositivo fonte 12 pode ser configurado para aplicar as técnicas para o armazenamento de uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem, obtendo um tempo de remoção de armazenamento respectivo para uma ou mais unidades de decodificação, removendo as unidades de decodificação do buffer de imagem de acordo com o tempo de remoção de armazenamento obtido para cada uma das unidades de decodificação, e codificando os dados de vídeo correspondentes às unidades de decodificação removidas, entre outras funções. Em outros exemplos, um dispositivo fonte e um dispositivo de destino podem incluir outros componentes ou disposições. Por exemplo, o dispositivo fonte 12 pode receber dados de vídeo de uma fonte de vídeo externa ao invés de fonte de vídeo integrada 18, tal como uma câmera externa. Da mesma forma, o dispositivo de destino 14 pode interfacear com um dispositivo de exibição externo, ao invés de incluir um dispositivo de exibição integrado 32.
[0033] O sistema ilustrado 10 da figura 1 é meramente um exemplo. As técnicas para o armazenamento de uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem, obtendo um tempo de remoção de armazenamento respetivo para uma ou mais unidades de decodificação, removendo 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 codificando os dados de vídeo correspondentes às unidades de decodificação removidas podem ser realizados por qualquer dispositivo de codificação e/ou decodificação de vídeo digital. Apesar de as técnicas também poderem ser realizadas por um codificador/decodificador de vídeo, tipicamente referido como "CODEC". Ademais, as técnicas dessa descrição também podem ser realizadas por um pré- processador de vídeo. O dispositivo fonte 12 e o dispositivo de destino 14 são meramente exemplos de tais dispositivos de codificação nos quais o dispositivo fonte 12 gera dados de vídeo codificados para transmissão para o dispositivo de destino 14. Em alguns exemplos, os dispositivos 12, 14 podem operar de uma forma substancialmente simétrica de modo que cada um dos dispositivos 12, 14 inclua componentes de codificação e decodificação de vídeo. Dessa forma, o sistema 10 pode suportar a transmissão de vídeo de via única ou duas vias entre os dispositivos de vídeo 12, 14, por exemplo, para sequenciamento de vídeo, reprodução de vídeo, difusão de vídeo, ou videotelefonia.
[0034] A fonte de vídeo 18 do dispositivo fonte 12 pode incluir um dispositivo de captura de vídeo, tal como uma câmera de vídeo, um arquivo de vídeo contendo vídeo capturado previamente, e/ou uma alimentação de vídeo de um provedor de conteúdo de vídeo. Como uma alternativa adicional, a fonte de vídeo 10 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 for uma câmera de vídeo, o dispositivo fonte 12 e o dispositivo de destino 14 podem formar os chamados telefones com câmera ou videofones. Como mencionado acima, no entanto, as técnicas descritas nessa descrição podem ser aplicáveis à codificação de vídeo em geral, e podem ser aplicadas aos aplicativos sem 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 modulada pelo modem 22 de acordo com um padrão de comunicação e transmitida para o dispositivo de destino 14 através do transmissor 24. O modem 22 pode incluir vários misturadores, filtros, amplificadores ou outros componentes projetados para modulação de sinal. O transmissor 24 pode incluir circuitos projetados para transmitir dados, incluindo amplificadores, filtros e uma ou mais antenas.
[0035] O receptor 26 do dispositivo de destino 14 recebe informação através do canal 16, e o modem 28 demodula a informação. Novamente, o processo de codificação de vídeo pode implementar uma ou mais das técnicas descritas aqui para armazenar uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem, obter um tempo de remoção de buffer respectivo 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 os dados de vídeo correspondentes às unidades de decodificação removidas, entre outras funções. A informação comunicada através do canal 16 pode incluir informação de sintaxe definida pelo codificador de vídeo 20, que pode ser utilizada também pelo decodificador de vídeo 30, que inclui elementos de sintaxe que descrevem as características e/ou processamento de macroblocos, codificando unidades de árvore, fatias, e outras unidades codificadas, por exemplo, grupos de imagens (GOPs). O dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e podem compreender qualquer um dentre uma variedade de dispositivos de exibição tal como um tubo de raio catodo (CRT), um monitor de cristal líquido (LCD), um monitor de plasma, um monitor de diodo de emissão de luz orgânica (OLED), ou outro tipo de dispositivo de exibição.
[0036] No exemplo da figura 1, o canal de comunicação 16 pode compreender qualquer meio de comunicação sem ou com fio, tal como o espectro de frequência de rádio (RF) ou uma ou mais linhas de transmissão física, ou qualquer combinação de meio sem e com fio. O canal de comunicação 16 pode formar parte de uma rede com base em pacote, tal como uma rede de área local, uma rede de área ampla, ou uma rede global tal como a Internet. O canal de comunicação 16 geralmente representa qualquer meio de comunicação adequado ou coleção de meios de comunicação diferentes, para transmissão de dados de vídeo a partir do dispositivo fonte 12 para o dispositivo de destino 14, incluindo qualquer combinação adequada de mídia com ou sem fio. O canal de comunicação 16 pode incluir roteadores, comutadores, estações base, ou qualquer outro equipamento que possa ser útil para facilitar a comunicação a partir do dispositivo fonte 12 para o dispositivo de destino 14. Em outros exemplos, o dispositivo fonte 12 pode armazenar dados codificados em um meio de armazenamento tal como no dispositivo de armazenamento 24, ao invés de transmitir os dados. Da mesma forma, o dispositivo de destino 14 pode ser configurado para recuperar os dados codificados a partir do dispositivo de armazenamento 24 ou outro meio de armazenamento ou dispositivo.
[0037] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compressão de vídeo, tal como o descrito aqui. As técnicas dessa descrição, no entanto, não estão limitadas a qualquer padrão de codificação em particular. Apesar de não ilustrado na figura 1, em alguns aspectos, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser integrados a um codificador e decodificador de áudio, e podem incluir unidades MUX-DEMUX adequadas, ou outro hardware e software, para manusear a codificação de ambos os áudio e vídeo em uma sequência de dados comum ou sequências de dados separadas. Se aplicável, as unidades MUX-DEMUX podem se conformar ao protocolo de multiplexador ITU H.223, ou outros protocolos tal como o protocolo de datagrama de usuário (UDP).
[0038] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um dentre uma variedade de conjuntos de circuito de codificador adequado, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicativo (ASICs), conjuntos de porta programáveis em campo (FPGAs), dispositivos de comunicação sem fio que incluem um dispositivo de codificação de vídeo, tal como o codificador ou decodificador, lógica discreta, software, hardware, firmware ou qualquer combinações dos mesmos. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador combinado (CODEC) em uma câmera, computador, dispositivo móvel, dispositivo de assinante, dispositivo de difusão, caixa de decodificação, servidor ou outro dispositivo respectivo.
[0039] Uma sequência de vídeo inclui tipicamente uma série de quadros de vídeo. Um grupo de imagens (GOP) geralmente compreende uma série de um ou mais quadros de vídeo. Um GOP pode incluir dados de sintaxe em um cabeçalho do GOP, um cabeçalho de um ou mais quadros do GOP, ou outro local, que descreve um úmero de quadros incluídos no GOP. Cada quadro pode incluir dados de sintaxe de quadro que descrevem um modo de codificação para o quadro respectivo. O codificador de vídeo 20 opera tipicamente em blocos de vídeo, também referidos como unidades de codificação (CUs), dentro de quadros de vídeo individuais a fim de codificar os dados de vídeo. Um bloco de vídeo pode corresponder a uma unidade de codificação maior (LCU) ou uma partição de uma LCU. 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. Cada quadro de vídeo pode incluir uma pluralidade de fatias. Cada fatia pode incluir uma pluralidade de LCUs, que podem ser dispostas em partições, também referidas como sub-CUs. Uma LCU também pode ser referida como uma unidade de árvore de codificação.
[0040] Como um exemplo, o padrão ITU-T H.264 suporta intrapedição em vários tamanhos de bloco, tal como 16 por 16, 8 por 8 ou 4 por 4 para componentes de luminescência, e 8 x 8 para componentes de crominância, além de interpredição em vários tamanhos de bloco, tal como 16 x 16, 16 x 8, 8 x 16, 8 x 8, 8 x 4, 4 x 8 e 4 x 4 para componentes de luminescência e tamanhos escalonados correspondentes para componentes de crominância. Nessa descrição "N x N" e "N por N" pode ser utilizado de forma intercambiável para fazer referência às dimensões de pixel do bloco em termos de dimensões verticais e horizontais, por exemplo, 16 x 16 pixels ou 16 por 16 pixels. Em geral, um bloco de 16 x 16 terá 16 pixels em uma direção vertical (y = 16) e 16 pixels na direção horizontal (x = 16). Da mesma forma, um bloco N x N geralmente possui N pixels em uma direção vertical e N pixels em uma direção horizontal, onde N representa um valor inteiro não negativo. Os pixels em um boco podem ser dispostos em fileiras e colunas. Ademais, os blocos não precisam necessariamente ter o mesmo número de pixels na direção horizontal como na direção vertical. Por exemplo, blocos podem compreender N x M pixels, onde M não é necessariamente igual a N.
[0041] Os blocos de vídeo podem compreender blocos de dados de pixel no domínio de pixel, ou blocos de coeficientes de transformação no domínio de transformação, por exemplo, seguindo a aplicação de uma transformação tal como a transformação de cosseno discreto (DCT), uma transformação de inteiro, uma transformação de wavelet, ou uma transformação conceitualmente similar aos dados de bloco de vídeo residuais representando as diferenças de pixel entre os blocos de vídeo codificados e os blocos de vídeo de previsão. Em alguns casos, um bloco de vídeo pode compreender blocos de coeficientes de transformação quantizados no domínio de transformação.
[0042] Blocos de vídeo menores podem fornecer uma resolução melhor, e podem ser utilizados para localizações de um quadro de vídeo que inclui níveis altos de detalhamento. Em geral, os blocos e as várias partições, algumas vezes referidas como sub-blocos, podem ser considerados blocos de vídeo. Adicionalmente, uma fatia pode ser considerada uma pluralidade de blocos de vídeo, tal como blocos e/ou sub-blocos. Cada fatia pode ser uma unidade independentemente decodificável de um quadro de vídeo. Alternativamente, os quadros propriamente ditos podem ser unidades decodificáveis, ou outras partes de um quadro podem ser definidas como unidades decodificáveis. O termo "unidade codificada" pode se referir a qualquer unidade independentemente decodificável de um quadro de vídeo tal como todo um quadro ou uma fatia de um quadro, um grupo de imagens (GOP) também referido como uma sequência de vídeo codificada, ou outra unidade independentemente decodificável definida de acordo com as técnicas de codificação aplicáveis.
[0043] Seguindo a codificação de intrapedição ou interpredição para produzir dados de previsão e dados residuais, e seguindo quaisquer transformações (tal como transformação de inteiro 4 x 4 ou 8 x 8 utilizada em H.264/AVC ou uma transformação de cosseno discreta DCT) para produzir os coeficientes de transformação, a quantização dos coeficientes de transformação pode ser realizada. A quantização geralmente se refere a um processo no qual os coeficientes de transformação são quantizados para possivelmente reduzir a quantidade de dados utilizada para representar os coeficientes. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. Por exemplo, um valor de bit n pode ser arredondado para baixo para um valor de bit m durante a quantização, onde n é maior que m.
[0044] HEVC se refere a um bloco de dados de vídeo como uma unidade de codificação (CU), que pode incluir uma ou mais unidades de previsão (PU) e/ou uma ou mais unidades de transformação (TUs). Essa descrição também pode utilizar o termo "bloco" para fazer referência a qualquer uma dentre CU, PU ou TU. Os dados de Sintaxe dentro de uma sequência de bits pode definir uma unidade de codificação maior (LCU), que é uma unidade de codificação maior em termos de número de pixels. Em geral, uma CU possui uma finalidade similar a um macrobloco de H.264, exceto que uma CU não possui uma distinção de tamanho. Dessa forma, uma CU pode ser dividida em sub-CUs. Em geral, referências nessa descrição a uma CU podem fazer referência a uma unidade de codificação maior de uma imagem ou uma sub-CU de uma LCU. Uma LCU pode ser dividida em sub-CUs, e cada sub-CU pode ser dividida adicionalmente em sub-CUs. Os dados de sintaxe para uma sequência de bits podem definir um número máximo de vezes em que uma LCU pode ser dividida, referido como profundidade de CU. De acordo, uma sequência de bits também pode definir uma menor unidade de codificação (SCU).
[0045] Uma LCU pode ser associada a uma estrutura de dados de quadtree. Em geral, uma estrutura de dados de quadtree inclui um nó por CU, onde um nó raiz corresponde à LCU. Se uma CU for dividida em quatro sub-CUs, o nó correspondente à CU inclui quatro nós folha, cada um dos quais corresponde a uma sub-CU. Cada nó da estrutura de dados de quadtree pode fornecer dados de sintaxe para a CU correspondente. Por exemplo, um nó no quadtree pode incluir um indicador de divisão, indicando se a CU correspondente ao nó é dividida em sub-CUs. Os elementos de sintaxe para uma CU podem ser definidos de forma recursiva, e podem depender de se a CU é dividida em sub-CUs. Se uma CU não for dividida adicionalmente, é referida como uma CU folha. Nessa descrição, 4 sub-CUs de uma CU folha também serão referidas como CUs folha apesar de não haver divisão explícita da CU folha original. Por exemplo, se uma CU com tamanho de 16 x 16 não for dividida adicionalmente, as quatro sub-CUs 8 x 8 também podem ser referidas como CUs folha apesar de a CU de 16 x 16 não ter sido dividida.
[0046] Ademais, as TUs das CUs folha também podem ser associadas com as estruturas de dados de quadtree respectivas. Isso é, uma CU folha pode incluir um quadtree indicando como a CU folha é dividida em TUs. Essa descrição se refere ao quadtree indicando como uma LCU é dividida como um quadtree CU e o quadtree indicando como uma CU folha é dividida em TUs como uma quadtree TU. O nó raiz de um quadtree TU geralmente corresponde a uma CU folha, enquanto o nó raiz de um quadtree CU geralmente corresponde a uma LCU. As TUs do quadtree TU que não são divididas podem ser referidos como TUs folha.
[0047] Uma CU folha pode incluir uma ou mais unidades de previsão (Pus). Em geral, uma PU representa toda ou uma parte da CU correspondente, e pode incluir dados para recuperar uma amostra de referência para a PU. Por exemplo, quando a PU é codificada por intermodo, a PU pode incluir dados definindo um vetor de movimento para a PU. Os dados definindo o vetor de movimento 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 um quarto de pixel ou precisão de um oitavo de pixel), um quadro de referência para o qual o vetor de movimento aponta, e/ou uma lista de referência (por exemplo, lista 0 ou lista 1), para o vetor de movimento. Os dados para a CU folha definindo as PUs também podem descrever, por exemplo, a partição da CU em uma ou mais PUs. Os modos de divisão podem diferir dependendo de se a CU é não codificada, codificada por modo de intrapedição, ou codificada por modo de interpredição. Para intracodificação, uma PU pode ser tratada da mesma forma que uma unidade de transformação folha descrita abaixo.
[0048] Uma CU folha pode incluir uma ou mais unidades de transformação (TU). As unidades de transformação podem ser especificadas utilizando-se uma estrutura de quadtree TU, como discutido acima. Isso é, um indicador de divisão pode indicar se uma CU folha é dividida em quatro unidades de transformação. Então, cada unidade de transformação pode ser dividida adicionalmente em 4 sub TUs. Quando uma TU não é dividida adicionalmente, a mesma pode ser referida como uma TU folha. Em geral, um indicador de divisão pode indicar que uma TU folha é dividida em TUs de formato quadrado. A fim de indicar que uma TU é dividida em TUs de formato não quadrado, outros dados de sintaxe podem ser incluídos, por exemplo, dados de sintaxe que indicam que as TUs devem ser divididas de acordo com a transformação de quadtree não quadrada (NSQT).
[0049] Geralmente, para intracodificação, todas as TUs folha pertencentes a uma CU folha compartilham o mesmo modo de intrapedição. Isso é, o mesmo modo de intrapedição é geralmente aplicado para calcular os valores previstos para todas as TUs de uma CU folha. Para intracodificação, um codificador de vídeo pode calcular um valor residual para cada TU folha utilizando o modo de intrapedição, como uma diferença entre a parte dos valores de previsão correspondentes à TU e o bloco original. O valor residual pode ser transformado, quantizado e digitalizado. Para intercodificação, um codificador de vídeo pode realizar a previsão no nível de PU e pode calcular um residual para cada PU. Os valores residuais correspondentes a uma CU folha podem ser transformados, quantizados e digitalizados. Para intercodificação, uma TU folha pode ser maior ou menor que uma PU. Para intracodificação, uma PU pode ser colocalizada com uma TU folha correspondente. Em alguns exemplos, o tamanho máximo de uma TU folha pode ser o tamanho da CU folha correspondente.
[0050] Em geral, essa descrição utiliza os termos CU e TU para fazer referência à CU folha e à TU folha, respectivamente, a menos que notado o contrário. Em geral, as técnicas dessa descrição se referem à transformação, quantização, digitalização e codificação por entropia de dados de uma CU. Como um exemplo, as técnicas dessa descrição incluem seleção de uma transformação a ser utilizada para transformar um valor residual de um bloco intraprevisto com base em um modo de intrapedição utilizado para prever o bloco. Essa descrição também utiliza o termo "transformação direcional" ou "transformação projetada" para fazer referência a tal transformação que depende da direção de modo de intrapedição. Isso é, um codificador de vídeo pode selecionar uma transformação direcional para aplicar a uma unidade de transformação (TU). Como notado acima, a intrapedição inclui a previsão de uma TU de uma CU atual de uma imagem a partir de CUs e TUs previamente codificadas da mesma imagem. Mais especificamente, um codificador de vídeo pode intraprever uma TU atual de uma imagem utilizando um modo de intrapedição particular.
[0051] Seguindo a quantização, a codificação por entropia de dados quantizados pode ser realizada, por exemplo, de acordo com a codificação de comprimento variável adaptativa de conteúdo (CAVLC), codificação aritmética binaria adaptativa de contexto (CABAC), codificação por entropia por divisão de intervalo de probabilidade (PIPE), ou outra metodologia de codificação por entropia. Uma unidade de processamento é configurada para codificação por entropia, ou outra unidade de processamento, pode realizar outras funções de processamento, tal como codificação de comprimento zero de coeficientes quantizados e/ou geração de informação de sintaxe tal como valores de padrão de bloco codificado (CBP), tipo de macrobloco, modo de codificação, tamanho máximo de macrobloco para uma unidade codificada (tal como um quadro, fatia, macrobloco ou sequência) ou outra informação de sintaxe.
[0052] O codificador de vídeo 20 pode ser configurado para realizar a quantização inversa e transformação inversa para armazenar blocos decodificados a serem utilizados como referência para os blocos de previsão subsequentes, por exemplo, no mesmo quadro ou quadros a serem temporalmente previstos. O codificador de vídeo 20 pode enviar adicionalmente dados de sintaxe, tal como dados de sintaxe com base em bloco, dados de sintaxe com base em quadro, e dados de sintaxe com base em GOP, para o decodificador de vídeo 30, por exemplo, em um cabeçalho de quadro, um cabeçalho de bloco, um cabeçalho de fatia, ou um cabeçalho GOP. Os dados de sintaxe GOP podem descrever vários quadros no GOP respectivo, e os dados de sintaxe de quadro podem indicar um modo de codificação/previsão utilizado para codificar o quadro correspondente.
[0053] O codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser implementados como qualquer um dentre uma variedade de conjuntos de circuito de codificador ou decodificador adequado, como aplicável, tal como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicativo (ASICs), conjuntos de porta programável em campo (FPGAs), conjunto de circuito lógico discreto, software, hardware, firmware ou qualquer combinação dos mesmos. Cada codificador de vídeo 20 e decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, qualquer um dos quais pode ser integrado como parte de um codificador/decodificador de vídeo combinado (CODEC). Um aparelho incluindo o codificador de vídeo 20 e/ou decodificador de vídeo 30 pode compreender um circuito integrado, um microprocessador, e/ou um dispositivo de comunicação sem fio, tal como um telefone celular.
[0054] De acordo com as técnicas dessa descrição, o codificador de vídeo 20 e/ou o decodificador de vídeo 30 podem ser configurados para armazenar uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem, obter um tempo de remoção de armazenamento respectivo para 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 armazenamento obtido para cada uma das unidades de decodificação e codificar dados de vídeo correspondentes às unidades de decodificação removidas, entre outras funções.
[0055] As definições a seguir são fornecidas com relação a um codificador de vídeo ilustrativo 20 e/ou decodificador de vídeo 30 configurado para armazenar uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem, obter um tempo de remoção de armazenamento respectivo para 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 armazenamento obtido para cada uma das unidades de decodificação e codificar os dados de vídeo correspondentes às unidades de decodificação removidas entre outras funções.
[0056] Para fins de descrição de um conjunto de exemplos, o termo "unidade de decodificação" pode ser definido como segue: Unidade de decodificação: uma unidade de acesso ou um subconjunto de uma unidade de acesso. Se sub_pic_cpb_flag for igual a 0, uma unidade de decodificação é uma unidade de acesso; do contrário, uma unidade de decodificação é um subconjunto de uma unidade de acesso. Quando sub_pic_cpb_flag for igual a 1, a primeira unidade de decodificação em uma unidade de acesso inclui todas as unidades NAL não VCL na unidade de acesos e a primeira unidade NAL VCL na mesma unidade de acesso, e cada outra unidade de decodificação na unidade de acesso é uma unidade NAL de fatia codificada que não é a primeira unidade NAL de fatia codificada na unidade de acesso.
[0057] Para fins de descrição de um segundo conjunto de exemplos, o termo "unidade de decodificação" pode ser definido como segue, com uma definição adicional do termo "sub-imagem" como utilizado na definição ilustrativa correspondente de "unidade de decodificação": Unidade de Decodificação: uma unidade de acesso ou um subconjunto de uma unidade de acesso. Se sub_pic_cpb_flag for igual a 0, uma unidade de decodificação é uma unidade de acesso; do contrário, uma unidade de decodificação é um subconjunto de uma unidade de aceso. Quando sub_pic_cpb_flag for igual a 1, a primeira unidade de decodificação em uma unidade de acesso inclui todas as unidades NAL não VCL na unidade de acesso e a primeira sub-imagem da imagem na mesma unidade de acesso, e cada outra unidade de decodificação na unidade de acesso é uma sub-imagem que não é a primeira sub-imagem na unidade de acesso. Sub-imagem: um número de blocos de codificação de uma imagem codificada contínua na ordem de decodificação.
[0058] Na definição de acordo com o segundo conjunto de exemplos fornecido acima, quando mais de uma sub-imagem é incluída em uma fatia, o alinhamento de byte pode ser aplicado ao final de cada sub-imagem, em contraste, por exemplo, ao alinhamento de byte para tiles em HEVC WD6. Adicionalmente, o ponto de entrada de cada sub-imagem, exceto pelo primeiro na imagem codificada, podem ser sinalizados.
[0059] Em algumas alternativas, quando a sequência de bits contém múltiplas camadas escalonáveis ou vistas, uma unidade de decodificação pode ser definida como uma representação em camadas ou um componente de visualização. Todas as unidades não VCL precedendo a primeira unidade NAL VCL de uma representação em camadas ou componente de visualização também pertencem à unidade de decodificação contendo a representação de camada ou componente de visualização.
[0060] As descrições a seguir da operação de decodificador de referência hipotético ilustrativo (HRD), operação ilustrativa de um buffer de imagem codificado, temporização ilustrativa de uma chegada de sequências de bit, temporização ilustrativa da remoção de unidade de decodificação, decodificação ilustrativa de uma unidade de decodificação, operação ilustrativa de um buffer de imagem decodificada, remoção ilustrativa de imagens a partir de um buffer de imagem decodificada, envio de imagem ilustrativo, e marcação e armazenamento de imagem decodificada atual são fornecidos para ilustrar exemplos de codificador de vídeo 20 e/ou decodificador de vídeo 30 que podem ser configurados para operar de acordo com os vários exemplos de operações HRD descritas abaixo.
[0061] Como um exemplo, uma operação HRD pode ser descrita de forma resumida como segue: o tamanho CPB (número de bits) é CpbSize[SchedSelIdx]. O tamanho DPB (número de buffers de imagem) para camada X temporal é max_dec_pic_buffering[X] + 1 para cada X na faixa de 0 para max_temporal_layers_minus1, inclusive. Nesse exemplo, HRD pode operar como segue: os dados associados com as unidades de acesso que fluem para dentro de CPB de acordo com uma programação de chegada especificada podem ser distribuídos pelo programador de corrente hipotética (HSS), isso é, um programador de distribuição. Os dados associados com cada unidade de decodificação podem ser removidos e decodificados instantaneamente pelo processo de decodificação instantâneo em momentos de remoção CPB. Cada imagem decodificada pode ser colocada em DPB. Uma imagem decodificada pode ser removida do DPB no último dentre o tempo de envio DPB ou o tempo em que não se torna mais necessário para referência de interpredição.
[0062] A aritmética nesses exemplos pode ser feita com valores reais, de modo que nenhum erro de arredondamento se propague. Por exemplo, o número de bits em um CPB pouco antes de ou depois da remoção de uma unidade de decodificação não é necessariamente um inteiro.
[0063] A variável tc pode ser derivada como segue e pode ser chamada de tique de relógio:
Figure img0001
[0064] O seguinte pode ser especificado para expressar as restrições em uma modificação de anexo ilustrativa para HEVC: deixe a unidade de acesso n ser a unidade de acesso n na ordem de decodificação com a primeira unidade de acesso sendo a unidade de acesso 0; deixe a imagem n ser a imagem codificada ou a imagem decodificada da unidade de acesso n; deixe a unidade de decodificação m ser a unidade de decodificação m na ordem de decodificação com a primeira unidade de decodificação sendo a unidade de decodificação 0.
[0065] Algumas técnicas ilustrativas para a operação de um buffer de imagem codificada (CPB) são descritas como segue. De acordo com algumas técnicas de codificação de vídeo, vários métodos de operação CPB podem ser implementados. As especificações na seção de HEVC WD6 nas operações CPB podem ser modificadas por essa descrição, e podem ser aplicadas independentemente a cada conjunto de parâmetros CPB que esteja presente e a ambos os pontos de conformidade Tipo I e Tipo II.
[0066] Alguns exemplos envolvendo a temporização da chegada de sequência de bits são descritos como segue. HRD pode ser inicializado em qualquer uma das mensagens de informação de melhoria suplementar de período de armazenamento (SEI). Antes da inicialização, CPB pode estar vazio. Depois da inicialização, HRD pode não ser inicializado novamente pelas mensagens SEI de período de armazenamento subsequentes.
[0067] A unidade de aceso que é associada com a mensagem SEI de período de armazenamento que inicializa CPB pode ser referida como unidade de acesso 0. Cada unidade de decodificação pode ser referida como unidade de decodificação m, onde o número m identifica a unidade de decodificação em particular. A primeira unidade de decodificação na ordem de decodificação na unidade de acesso 0 pode ser referida como unidade de decodificação 0. O valor de m pode ser incrementado por 1 para cada unidade de decodificação subsequente na ordem de decodificação.
[0068] O momento no qual o primeiro bit da unidade de decodificação m começa a entrar em CPB pode ser referido como momento de chegada inicial tai(m). O momento de chegada inicial das unidades de decodificação pode ser derivado como segue: se a unidade de decodificação for a unidade de decodificação 0, tai(0) = 0, do contrário (a unidade de decodificação é a unidade de decodificação m com m > 0), o seguinte pode ser aplicado: se cbr_flag[SchedSelIdx] for igual a 1, o momento de chegada inicial para a unidade de decodificação m é igual ao momento de chegada final (que é derivado abaixo) da unidade de decodificação m - 1, isso é,
Figure img0002
do contrário, (cbr_flag[SchedSelIdx] é igual a 0), o momento de chegada inicial para a unidade de decodificação m é derivada por:
Figure img0003
onde tai,earliest(m) é derivado como segue.
[0069] Se a unidade de decodificação m não for a primeira unidade de decodificação de um período de armazenamento subsequente, tai,earliest(m) pode ser derivado como:
Figure img0004
com tr,n(m) sendo o tempo de remoção nominal da unidade de decodificação m a partir de CPB como especificado e initial_cpb_removal_delay[SchedSelIdx] e initial_cpb_removal_delay_offset[SchedSelIdx] sendo especificado na mensagem SEI de período de armazenamento anterior; do contrário (a unidade de decodificação m é a primeira unidade de decodificação de um período de armazenamento subsequente), tai,earliest(m) pode ser derivado como:
Figure img0005
com initial_cpb_removal_delay[SchedSelIdx] sendo especificado na mensagem SEI de período de armazenamento com a unidade de acesso contendo a unidade de decodificação m.
[0070] O momento de chegada final para unidade de decodificação pode ser derivado por:
Figure img0006
onde b(m) pode ser o tamanho em bits da unidade de decodificação m, contando os bits das unidades NAL VCL e as unidades NAL de dados de enchimento para o ponto de conformidade Tipo I ou todos os bits da sequência de bits Tipo II para o ponto de conformidade Tipo II.
[0071] Em alguns exemplos, os valores SchedSelIdx, BitRate[SchedSelIdx], e CpbSize[SchedSelIdx] podem ser restringidos como segue: Se o conteúdo dos conjuntos de parâmetros de sequência ativa para a unidade de acesso contendo a unidade de decodificação m e a unidade de acesso anterior diferirem, HSS seleciona um valor SchedSelIdx 1 de SchedSelIdx dentre os valores de SchedSelIdx fornecidos no conjunto de parâmetros de sequência ativa para a unidade de acesso contendo a unidade de decodificação m que resulta em um BitRate[SchedSelIdx1] ou CpbSize[SchedSelIdx1] para a unidade de acesso contendo a unidade de decodificação m. O valor de BitRate[SchedSelIdx1] ou CpbSize[SchedSelIdx1] podem diferir do valor de BitRate[SchedSelIdx0] ou CpbSize[SchedSelIdx0] para o valor de SchedSelIdx0 de SchedSelIdx que estava em uso para a unidade de acesso anterior; do contrário, HSS continua a operar com os valores anteriores de SchedSelIdx, BitRate[SchedSelIdx] e CpbSize[SchedSelIdx].
[0072] Quando HSS seleciona os valores de BitRate[SchedSelIdx] ou CpbSize[SchedSelIdx] que diferem dos da unidade de acesso anterior, o seguinte pode ser aplicado em alguns exemplos: a variável BitRate [SchedSelIdx] é efetivada no momento tai(m) a variável CpbSize[SchedSelIdx] é efetivada como segue: se o novo valor de CpbSize[SchedSelIdx] exceder o tamanho CPB antigo, o mesmo entra em efeito no momento tai(m), do contrário, o novo valor CpbSize[SchedSelIdx] é efetivado no tempo de remoção CPB da última unidade de decodificação da unidade de acesso contendo a unidade de decodificação m.
[0073] Quando sub_pic_cpb_flag é igual a 1, o momento de chegada CPB inicial da unidade de acesso n tai(m) pode ser configurado para o momento de chegada CPB inicial da primeira unidade de decodificação na unidade de acesso n, e o momento de chegada CPB final da unidade de acesso n tai(n) pode ser configurado para o momento de chegada CPB final da última unidade de decodificação na unidade de acesso n.
[0074] Alguns exemplos envolvendo a temporização da remoção da unidade de decodificação e decodificação de uma unidade de decodificação são descritos como segue. Quando uma unidade de decodificação m é a unidade de decodificação com m igual a 0 (a primeira unidade de decodificação da unidade de acesso que inicializa HRD), o tempo de remoção nominal da unidade de decodificação a partir de CPB pode ser especificado por:
Figure img0007
[0075] Quando uma unidade de decodificação m é a primeira unidade de decodificação da primeira unidade de acesso de um período de armazenamento que não inicializa HRD, o tempo de remoção nominal da unidade de decodificação de CPB pode ser especificado por:
Figure img0008
onde tr,n(mb) é o tempo de remoção nominal da primeira unidade de decodificação do período de armazenamento anterior e cpb_removal_delay(m) é o valor de cpb_removal_delay[i] para a unidade de decodificação m especificada na mensagem SEI de temporização de imagem associada com a unidade de acesso contendo a unidade de decodificação m.
[0076] Quando uma unidade de decodificação n é a primeira unidade de decodificação de um período de armazenamento, mb pode ser configurado igual a m no tempo de remoção tr,n(m) da unidade de decodificação n. O tempo de remoção nominal tr,n(m) de uma unidade de decodificação m que não é a primeira unidade de decodificação de um período de armazenamento pode ser fornecido por:
Figure img0009
onde tr,n(m) é o tempo de remoção nominal da primeira unidade de decodificação do período de armazenamento atual e cpb_removal_delay(m) é o valor de cpb_removal_delay[i] para a unidade de decodificação m especificado na mensagem SEI de temporização de imagem associada com a unidade de acesso contendo a unidade de decodificação m.
[0077] O tempo de remoção da unidade de decodificação m pode ser especificado como segue: se low_delay_hrd_flag for igual a 0 ou trmn(m) >= taf(m), o tempo de remoção da unidade de decodificação n pode ser especificado por:
Figure img0010
do contrário (low_delay_hrd_flag é igual a 1 e tr,n(m) < tai(m)), o tempo de remoção da unidade de decodificação m é especificado por:
Figure img0011
O último caso indica que o tamanho da unidade de decodificação m, b(m) é tão grande que impede a remoção no tempo de remoção nominal.
[0078] Quando sub_pic_cpb_flag é igual a 1, o tempo de remoção CPB nominal da unidade de acesso n tr,n(n) pode ser configurado para o tempo de remoção CPB normal da última unidade de decodificação na unidade de aceso n, o tempo de remoção CPB da unidade de acesso n, tr(n) pode ser determinado para o tempo de remoção CPB da última unidade de decodificação na unidade de acesso n.
[0079] Em alguns exemplos, no tempo de remoção CPB da unidade de decodificação m, a unidade de decodificação pode ser instantaneamente decodificada.
[0080] Alguns exemplos da operação do buffer de imagem decodificada (DPB) são descritos como segue. O buffer de imagem decodificada pode conter buffers de imagem. Cada um dos buffers de imagem pode conter uma imagem decodificada que é marcada como "utilizada para referência" ou é mantida para envio futuro. Antes da inicialização, DPB pode estar vazio (a plenitude de DPB é configurada para zero). As etapas a seguir desses exemplos das técnicas dessa descrição podem ocorrer na sequência listada.
[0081] Alguns exemplos de remoção de imagens do buffer de imagem decodificada (DPB) são descritos como segue. Em alguns exemplos, a remoção das imagens do DPB antes da decodificação da imagem atual (mas, depois de analisar o cabeçalho de fatia da primeira fatia da imagem atual) pode ocorrer instantaneamente no tempo de remoção CPB da primeira unidade de decodificação da unidade de acesso n (contendo a imagem atual) e pode prosseguir como segue.
[0082] O processo de decodificação para a imagem de imagem configurada como especificado na subcláusula 8.3.2 de HEVC WD6 pode ser invocado. Se a imagem atual for uma imagem de atualização de decodificador instantânea (IDR), o seguinte pode ser aplicado: 1. Quando a imagem IDR não é a primeira imagem IDR decodificada (por exemplo, quando nenhum envio do indicador de imagens anteriores possuir um valor diferente de 1) e o valor de pic_width_in_luma_samples (por exemplo, uma largura de imagem nas amostras de luminescência) ou pic_height_in_luma_samples ou max_dec_pic_buffering derivados do conjunto de parâmetros de sequência ativa forem diferentes do valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou max_dec_pic_buffering derivados do conjunto de parâmetros de sequência que esteve ativo para a imagem anterior, respectivamente, no_output_of_prior_pics_flag pode ser inferido como sendo igual a 1 ou configurado para ser igual a 1 por HRD, independentemente do valor real de no_output_of_prior_pics_flag. As implementações de decodificador podem manusear a imagem ou mudanças de tamanho DPB mais graciosamente do que HRD com relação às mudanças em pic_width_in_luma_samples ou pic_height_in_luma_samples. 2. Quando no_output_of_prior_pics_flag é igual a 1 ou é configurado para ou inferido como sendo igual a 1, todos os buffers de imagem no DPB podem ser esvaziados sem enviar as imagens que contêm, e a plenitude de DPB pode ser configurada para 0.
[0083] Todas as imagens k em DPB, para as quais todas as condições a seguir são verdadeiras, podem ser removidas de DPB: imagem k é marcada como "não utilizada por referência"; imagem k possui PicOutputFlag igual a 0 ou seu momento de saída DPB é menor do que ou igual ao tempo de remoção CPB da primeira unidade de decodificação (denotada como unidade de decodificação m) da imagem atual n; isso é,
Figure img0012
[0084] Quando uma imagem é removida de DPB, a plenitude de DPB pode ser reduzida por um.
[0085] Alguns exemplos de envio de imagem são descritos como segue. O seguinte pode ocorrer simultaneamente no tempo de remoção CPB da última unidade de decodificação (denotada como unidade de decodificação m) da unidade de acesso n (contendo a imagem atual), tr(m). A imagem n pode ser considerada como decodificada depois da última unidade de decodificação da imagem ser decodificada.
[0086] A variável maxPicOrderCnt (para a contagem de ordem de imagem máxima (POC)) pode ser configurada igual ao valor máximo de PicOrderCntVal (para o valor de contagem de ordem de imagem (POC)) para a imagem atual e todas as imagens em DPB que são atualmente marcadas como "utilizadas para referência de curto termo" ou que possuem um momento de envio DPB maior que tr(m). A variável minPicOrderCnt Para a contagem de ordem de imagem mínima (POC), isso é, a menor contagem de ordem de imagem (POC)) pode ser configurada para ser o mínimo de PicOrderCntVal para a imagem atual e todas as imagens em DPB que são atualmente marcadas como "utilizadas para referência de curto termo" ou que possuem um momento de envio DPB maior que tr(m). Pode ser uma exigência da conformidade de sequência de bits que o valor de maxPicOrderCnt-minPicOrderCnt seja inferior a MaxPicOrderCntLsb/2.
[0087] Quando a imagem n possui PicOutputFlag igual a 1, seu momento de envio DPB to,dpb(n) pode ser derivado por:
Figure img0013
onde dpb_output_delay(n) é o valor de dpb_output_delay especificado na mensagem SEI de temporização de imagem associada com a unidade de acesso n. A saída da imagem atual pode ser especificada como segue: se PicOutputFlag for igual a 1 e to,dpb(n) = tr(m), a imagem atual é enviada; do contrário, se PicOutputFlag for igual a 0, a imagem atual não é enviada, mas pode ser armazenada em DPB como especificado adicionalmente abaixo; do contrário (PicOutputFlag é igual a 1 e to,dpb(n)>tr(m)), a imagem atual é enviada posteriormente e será armazenada em DPB (como especificado adicionalmente abaixo) e é enviada no momento to,dpb(n) a menos que indicado para não ser enviada pela decodificação ou inferência de no_output_of_prior_pics_flag igual a 1 em um momento que antecede to,dpb(n).
[0088] Quando enviada, a imagem atual ou selecionado pode ser trabalhada, utilizando um retângulo de corte especificado no conjunto de parâmetros de sequência ativa, gerando, assim, uma imagem recortada com base na imagem selecionada, isso é, a imagem atual. Quando a imagem n é uma imagem que é enviada e não a última imagem da sequência de bits que é enviada, o valor de Δto,dpb(n) é definido como:
Figure img0014
onde nn indica a imagem que segue depois da imagem n na ordem de envio e possui PicOutputFlag igual a 1. Detalhes adicionais de um processo de bumping e um processo de recorte são fornecidos adicionalmente abaixo.
[0089] Alguns exemplos envolvendo a marcação de imagem decodificada atual e o armazenamento são descritos como segue. O seguinte pode ocorrer instantaneamente no tempo de remoção CPB da última unidade de decodificação da unidade de acesso n (contendo a imagem atual), tt(m). A imagem decodificada atual pode ser armazenada no DPB em um armazenamento de imagens vazio, e a plenitude DPB pode ser incrementada por um. Se a imagem atual for uma imagem de referência, pode ser marcada como "utilizada para referência", do contrário pode ser marcada como "não utilizada para referência".
[0090] A sintaxe e semântica ilustrativas a seguir para sinalização do modo de comportamento DPB são fornecidas com relação a um codificador de vídeo ilustrativo 20 e/ou decodificador de vídeo 30 configurados para armazenar uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem, obter um tempo de remoção de armazenamento respectivo para 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 armazenamento obtido para cada uma das unidades de decodificação, e codificar dados de vídeo correspondentes às unidades de decodificação removidas, entre outras funções.
[0091] Alguns exemplos de sintaxe e semântica para sinalização de modo de comportamento CPB são descritos como segue. A sintaxe de parâmetros de informação de utilização de vídeo (VUI) podem ser alterados pela adição de um indicador CPB de sub-imagem, sub_pic_cpb_flag, como ilustrado na Tabela 1 abaixo: Tabela 1
Figure img0015
Figure img0016
[0092] Nesse exemplo, a Tabela 1 inclui um indicador adicionado "sub_pic_cpb_flag" com relação ao HEVC convencional. Esse indicador CPB de sub-imagem, "sub_pic_cpb_flag" pode ser utilizado para sinalizar se ou não um conjunto de dados de vídeo fornecido para o buffer de imagem de codificação (CPB) inclui parâmetros de sub- imagem para a decodificação de sub-imagem. Cada um dos parâmetros de sub-imagem que o indicador "sub_pic_cpb_flag" pode sinalizar a presença podem incluir momentos de remoção de buffer, incluindo os momentos de remoção de buffer respectivos (isso é, momentos de remoção CPB) para cada uma ou mais unidades de decodificação. Um exemplo da semântica de sub_pic_cpb_flag é como segue. O elemento de sintaxe sub_pic_cpb_flag sendo igual a 0 pode especificar que CPB opera no nível de unidade de acesso. O elemento de sintaxe sub_pic_cpb_flag sendo igual a 1 pode especificar que CPB opere em um nível de unidade de decodificação que pode estar no nível de unidades de acesso ou de subconjuntos de unidades de acesso, que podem corresponder a sub-imagens. Quando sub-pic_cpb_flag não está presente, seu valor pode ser determinado ou inferido como sendo igual a 0, o que pode indicar um estado padrão no qual os dados de vídeo não incluem parâmetros de sub-imagem para a decodificação de sub-imagem.
[0093] Alguns exemplos de sintaxe e semântica para sinalização de momentos de remoção CPB das unidades de decodificação são descritos como segue. A sintaxe da mensagem SEI de período de armazenamento pode permanecer inalterada como em HEVC WD6, enquanto a semântica dos elementos de sintaxe initial_cpb_removal_delay[SchedSelIdx] e initial_cpb_removal_delay_offset[SchedSelIdx] podem ser alterados como segue. Nesse exemplo, o elemento de sintaxe initial_cpb_removal_delay[SchedSelIdx] pode especificar o retardo para CPB SchedSelIdx entre o momento de chegada ao CPB do primeiro bit dos dados codificados associados com a primeira unidade de decodificação na unidade de acesso associada com a mensagem SEI de período de armazenamento e o tempo de remoção de CPB dos dados codificados associados com a mesma unidade de decodificação para o primeiro período de armazenamento depois da inicialização HRD. Esse elemento de sintaxe pode ter um comprimento em bits fornecido por initial_cpb_removal_delay_length_minus1 + 1. Isso pode se referir às unidades de um relógio de 90 kHz. Nesse exemplo, esse elemento de sintaxe initial_cpb_removal_delay[SchedSelIdx] pode não ser igual a 0 e pode não exceder 90000*(CpbSize[SchedSelIdx] ^ BitRate[SchedSelIdx]), o equivalente em tempo ao tamanho CPB em unidades de relógio de 90 kHz.
[0094] Nesse exemplo, o elemento de sintaxe initial_cpb_removal_delay_offset[SchedSelIdx] pode ser utilizado para o CPB SchedSelIdx em combinação com o elemento de sintaxe cpb_removal_delay para especificar o momento de distribuição inicial das unidades de decodificação para o CPB. Adicionalmente, o elemento de sintaxe initial_cpb_removal_delay_offset{SchedSelIdx] pode estar em unidades de um relógio de 90 kHz. O elemento de sintaxe initial_cpb_removal_delay_offset[SchedSelIdx] pode ser um código de comprimento fixo cujo comprimento em bits é fornecido por initial_cpb_removal_delay_length_minus1 + 1. Esse elemento de sintaxe pode não ser utilizado pelos decodificadores e pode ser necessário para o programador de distribuição (HSS) especificado no Anexo C de HEVC WD6.
[0095] Em alguns exemplos, a sintaxe e semântica da mensagem SEI de temporização de imagem pode ser alterada como ilustrado na Tabela 2 abaixo: Tabela 2
Figure img0017
[0096] No exemplo da Tabela 2, a mensagem SEI pic_timing inclui um sinal adicionado num_decoding_units_minus1, e para realizar um circuito sobre o número de unidades de decodificação, que sinaliza um retardo de remoção respectivo de uma unidade de decodificação a partir do buffer de imagem codificada, quando sub-_pic_cpb_flag dos parâmetros VUI, por exemplo, de acordo com a Tabela 1 acima, é verdadeiro. Dessa forma, a mensagem SEI pic_timing pode incluir a informação indicando um número de tiques de relógio que se deve esperar até a remoção de cada uma dentre uma pluralidade de unidades de decodificação no nível de unidade de decodificação. O retardo de remoção de uma unidade de decodificação pode ser o mesmo retardo para cada unidade de decodificação em uma carga útil ou outra unidade de dados. Em outros exemplos, diferentes retardos de remoção podem ser aplicados a diferentes unidades de decodificação. O retardo de remoção pode ser expresso em termos de número de bits, com uma conversão de tempo implícita do número de bits com relação à taxa de processamento e bit para o relógio aplicável.
[0097] A sintaxe da mensagem SEI de temporização de imagem pode depender do conteúdo do conjunto de parâmetros de sequência que é ativo para a imagem codificada associada com a mensagem SEI de temporização de imagem. No entanto, a menos que a mensagem SEI de temporização de imagem de uma unidade de acesso de atualização de decodificação instantânea (IDR) seja precedida por uma mensagem SEI de período de armazenamento dentro da mesma unidade de acesso, a ativação do conjunto de parâmetros de sequência associado (e, para imagens IDR que não são a primeira imagem na sequência de bits, a determinação de que a imagem codificada é uma imagem IDR) pode não ocorrer até a decodificação da primeira unidade de Camada de Abstração de Rede (NAL) de fatia codificada da imagem codificada. Visto que a unidade NAL de fatia codificada da imagem codificada segue a mensagem SEI de temporização de imagem na ordem de unidade NAL, pode haver casos nos quais é necessário que um decodificador armazene a carga útil de sequência de byte bruto (RBSP) contendo a mensagem SEI de temporização de imagem até determinar os parâmetros do conjunto de parâmetros de sequência que serão ativos para a imagem codificada, e então realizar a análise da mensagem SEI de temporização de imagem. O decodificador pode armazenar uma ou mais unidades de decodificação de dados de vídeo em uma ordem de decodificação contínua no buffer de imagem.
[0098] A presença da imagem SEI de temporização de imagem na sequência de bits pode ser especificada em um exemplo como segue: se CpbDpbDelaysPresentFlag for igual a 1, uma mensagem SEI de temporização de imagem pode estar presente em cada unidade de acesso da sequência de vídeo codificada. Do contrário CpbDpbDelaysPresentFlag é igual a 0, e nenhuma mensagem SEI de temporização de imagem pode estar presente em qualquer unidade de acesso da sequência de vídeo codificada.
[0099] Nesse exemplo, o elemento de sintaxe num_decoding_units_minus1 plus 1 pode especificar o número de unidades de decodificação na unidade de acesso com a qual a mensagem SEI de temporização de imagem está associada. Quando sub_pic_cpb_flag for igual a 0, o elemento de sintaxe num_decoding_units_minus1 pode não estar presente e o valor pode ser determinado para ou inferido para ser igual a 0.
[0100] Nesse exemplo, o elemento de sintaxe cpb_removal_delay[i] pode especificar como muitos tiques de relógio aos quais se esperar depois da remoção do CPB da primeira unidade de decodificação na unidade de acesso associada com a mensagem SEI de período de armazenamento mais recente em uma unidade de acesso anterior antes da remoção a partir do CPB da unidade de decodificação i na unidade de acesso associada com a mensagem SEI de temporização de imagem. Esse valor também pode ser utilizado para calcular um momento de chegada mais cedo possível dos dados de unidade de decodificação no CPB para HSS. O elemento de sintaxe pode ser um código de comprimento fixo cujo comprimento em bits é fornecido por cpb_removal_delay_length_minus1 + 1. cpb_removal_delay[i] pode ser o restante de um contador de módulo 2(cpb_removal_delay_length_minus1+1) .
[0101] O valor de cpb_removal_delay_length_minus1 que determina o comprimento (em bits) do elemento de sintaxe cpb_removal_delay[i] pode ser o valor de cpb_removal_delay_length_minus1 codificado no conjunto de parâmetros de sequência que está ativo para a imagem codificada associada com a mensagem SEI de temporização de imagem. No entanto, cpb_removal_delay[i] pode especificar um número de tiques de relógio com relação ao tempo de remoção da primeira unidade de decodificação na unidade de acesso anterior contendo uma mensagem SEI de período de armazenamento, que pode ser uma unidade de acesso de uma sequência de vídeo codificada diferente.
[0102] Nesse exemplo, o elemento de sintaxe dpb_output_delay pode ser utilizado para computar o momento de envio DPB da imagem. O elemento de sintaxe dpb_output_delay pode especificar quantos tiques de relógio se deve esperar depois da remoção da última unidade de decodificação em uma unidade de acesso a partir de CPB antes de a imagem decodificada ser enviada a partir de DPB.
[0103] Uma imagem pode não ser removida de DPB em seu momento de envio quando ainda estiver marcada como "utilizada para referência de curto termo" ou "utilizada para referência de longo termo". Apenas um dpb_output_delay pode ser especificado para uma imagem decodificada. O comprimento do elemento de sintaxe dpb_output_delay pode ser fornecido em bits por dpb_output_delay_length_minus1 + 1. Quando max_dec_pic_buffering]max_temporal_layers_minus1] é igual a 0, dpb_output_delay pode ser igual a 0.
[0104] O momento de envio derivado de dpb_output_delay de qualquer imagem que é enviada a partir de um decodificador de conformidade de temporização de envio pode preceder o momento de envio derivado de dpb_output_delay de todas as imagens em qualquer sequência de vídeo codificada subsequente na ordem de decodificação. A ordem de envio de imagem estabelecida pelos valores desse elemento de sintaxe pode ser a mesma ordem que a estabelecida pelos valores de PicOrderCnt(). Para imagens que não são enviadas pelo processo de "bumping" visto que precedem, na ordem de decodificação, uma imagem IDR com no_output_of_prior_pics_flag igual a 1 ou inferido como sendo igual a 1, os momentos de saída derivados de dpb_output_delay podem aumentar com o aumento do valor de PicOrderCnt() com relação a todas as imagens dentro da mesma sequência de vídeo codificada. Em um exemplo alternativo, uma nova mensagem SEI, que pode ser chamada de mensagem SEI de temporização de unidade de decodificação, cada uma associada com uma unidade de decodificação, pode ser especificada, para portar o retardo de remoção CPB para a unidade de decodificação associada.
[0105] Dessa forma, pela implementação de qualquer combinação das definições ilustrativas, a operação HRD ilustrativa, a operação ilustrativa de um buffer de imagem codificada, a temporização ilustrativa de uma chegada de sequência de bits, a temporização ilustrativa da remoção de unidade de decodificação, a decodificação ilustrativa de uma unidade de decodificação, a operação ilustrativa de um buffer de imagem decodificada, a remoção ilustrativa das imagens de um buffer de imagem decodificada, o envio de imagem ilustrativo, e uma marcação e armazenamento de imagem decodificada atual ilustrativos, e sintaxe e semântica ilustrativas para sinalização do modo de comportamento CPB, codificador de vídeo 20 e/ou decodificador de vídeo 30 podem ser configurados para armazenar uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem, obter um tempo de remoção de armazenamento respectivo para 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 armazenamento obtido para cada uma das unidades de decodificação e codificar os dados de vídeo correspondentes às unidades de decodificação removidas, entre outras funções.
[0106] Como uma alternativa às técnicas descritas acima, uma unidade de decodificação pode ser definida como segue: "Uma unidade de acesso ou um subconjunto de uma unidade de aceso. Se SubPicCpbFlag for igual a 0, uma unidade de decodificação é uma unidade de acesso. Do contrário, uma unidade de decodificação inclui uma ou mais unidades NAL VCL e unidades NAL não VCL associadas em uma unidade de acesso. Para a primeira unidade NAL VCL em uma unidade de acesso, as unidades NAL não VCL são todas as unidades NAL não VCL na unidade de acesso e antes da primeira unidade NAL VCL e as unidades NAL de dados de enchimento, se algum, seguindo imediatamente a primeira unidade NAL não VCL. Para uma unidade NAL VCL que não é a primeira unidade NAL VCL em uma unidade de acesso, as unidades NAL não VCL associadas são as unidades NAL de dados de enchimento, se algum, seguindo imediatamente a unidade NAL não VCL".
[0107] Nesse exemplo, as operações de decodificador de referência hipotéticos (HRD) podem ser resumidas como segue. O tamanho CPB (número de bits) é CpbSize[SchedSelIdx]. O tamanho DPB (número de buffers de imagem) para a camada temporal X pode ser max_dec_pic_buffering[X]+1 para cada X na faixa de 0 a max_temporal_layers_minus1, inclusive. Uma variável SubPicCpbPreferredFlag pode ser utilizada como um indicador preferido de buffer de imagem codificada de sub-imagem, e pode ser especificado por dispositivos externos, ou quando não especificado por dispositivos externos, configurado para 0. Um indicador presença de parâmetros de imagem codificada de sub-imagem, sub_pic_cpb_params_present_flag, pode ser utilizado para sinalizar se os parâmetros necessários para a codificação de subconjuntos de uma ou mais unidades de acesso estão disponíveis. Um único indicador de armazenamento de imagem codificada de sub- imagem SubPicCpbFlag, pode indicar se ambos o indicador preferido de buffer de imagem codificada de sub-imagem e o indicador de presença de parâmetros de imagem codificada de sub-imagem, ou codificado para 1. Um codificador de vídeo pode utilizar esse indicador de buffer de imagem codificada de sub-imagem, SubPicCpbFlag, para determinar se codifica as unidades de acesso de dados de vídeo ou para codificar os subconjuntos de uma ou mais unidades de acesso, tal como sub-imagens, de dados de vídeo, à medida que os dados de vídeo são removidos do CPB.
[0108] A variável SubPicCpbFlag pode ser derivada como segue: SubPicCpbFlag = SubPicCpbPreferredFlag && sub_pic_cpb_params_present_flag (C-1)
[0109] Se SubPicCpbFlag for igual a 0, CPB pode operar no nível de unidade de acesso, e cada unidade de decodificação pode ser uma unidade de acesso. Do contrário, CPB pode operar no nível de sub-imagem, e cada unidade de decodificação pode ser um subconjunto de uma unidade de acesso.
[0110] O decodificador de vídeo 30/108 pode determinar que uma ou mais unidades de decodificação compreendem unidades de acesso pela determinação de que um indicador preferido de buffer de imagem codificada de sub- imagem (por exemplo, SubPicCpbPreferredFlag), possui um valor igual a zero ou que um indicador de presença de parâmetros de buffer de imagem codificada de sub-imagem (por exemplo, sub_pic_cpb_params_present_flag) possui um valor igual a zero.
[0111] O HRD (por exemplo, codificador de vídeo 20 e/ou decodificador de vídeo 30) pode operar como segue. Os dados associados com as unidades de decodificação que fluem para dentro de CPB de acordo com uma programação de chegada especificada podem ser distribuídos por 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 momentos de remoção CPB. Cada imagem decodificada pode ser localizada no DPB. Uma imagem decodificada pode ser removida do DPB no último entre o momento de envio DPB ou o momento que o mesmo não se torna mais necessário para referência de interpredição.
[0112] As operações aritméticas descritas nessa descrição podem ser feitas com valores reais, de modo que nenhum erro de arredondamento seja propagado. Por exemplo, o número de bits em um CPB pouco antes de ou depois da remoção de uma unidade de decodificação pode não ser necessariamente um inteiro.
[0113] A variável tc pode ser derivada como segue e chamada de tique de relógio:
Figure img0018
[0114] O seguinte pode ser especificado para expressar as restrições nesse exemplo das técnicas dessa descrição: deixemos a unidade de acesso n ser a unidade de acesso n na ordem de decodificação com a primeira unidade de acesso sendo a unidade de acesso 0; deixemos a imagem n ser a imagem codificada ou a imagem decodificada da unidade de acesso n; deixemos a unidade de decodificação m ser a unidade de decodificação m na ordem de decodificação com a primeira unidade de decodificação sendo a unidade de decodificação 0.
[0115] As operações do buffer de imagem codificada (CPB) podem ser definidas como segue. As especificações nesse exemplo podem ser aplicadas independentemente a cada conjunto de parâmetros CPB que estejam presentes e a ambos os pontos de conformidade Tipo I e Tipo II.
[0116] Com relação à temporização da chegada de sequência de bits, HRD pode ser inicializado em qualquer uma das mensagens SEI de período de armazenamento. Antes da inicialização, CPB pode estar vazio. Depois da inicialização, HRD pode não ser inicializado novamente pelas mensagens SEI de período de armazenamento subsequentes.
[0117] Cada unidade de acesso pode ser referida como uma unidade de acesso respectiva n, onde o número n identifica a unidade de acesso em particular. A unidade de acesso que é associada com a mensagem SEI do período de armazenamento que inicializa CPB pode ser referida como unidades de acesso 0. O valor de n pode ser incrementado por 1 para cada unidade de acesso subsequente na ordem de decodificação.
[0118] Cada unidade de decodificação pode ser referida respectivamente como unidade de decodificação m, onde o número m identifica a unidade de decodificação em particular. A primeira unidade de decodificação na ordem de decodificação na unidade de acesso 0 pode ser referida como unidade de decodificação 0. O valor de m pode ser incrementado por 1 para cada unidade de decodificação subsequente na ordem de decodificação.
[0119] Nesse exemplo, se a variável SubPicCpbFlag for igual a 0, a variável InitCpbRemovalDelay[SchedSelIdx] pode ser configurada para initial_cpb_removal_delay[SchedSelIdx] da mensagem SEI de período de armazenamento associada, e InitCpbRemovalDelayOffset[SchedSelIdx] pode ser configurado para initial_cpb_removal_delay_offset[SchedSelIdx] da mensagem SEI de período de armazenamento associada. Do contrário, a variável InitCpbRemovalDelay[SchedSelIdx] pode ser configurada para initial_du_cpb_removal_delay]SchedSelIdx] da mensagem SEI de período de armazenamento associada, e InitCpbRemovalDelayOffset[SchedSelIdx] pode ser configurada para initial_du_cpb_removal_delay_offset[SchedSelIdx] da mensagem SEI de período de armazenamento associada.
[0120] O momento no qual o primeiro bit da unidade de decodificação n começa a entrar no CPB pode ser referido como o momento de chegada inicial tai(m). O momento de chegada inicial das unidades de decodificação pode ser derivado como segue: se a unidade de decodificação for a unidade de decodificação 0, tai(0) = 0; do contrário (a unidade de decodificação é a unidade de decodificação m com m > 0), o seguinte pode ser aplicado: se cbr_flag[SchedSelIdx] for igual a 1, o momento de chegada inicial para a unidade de decodificação m, pode ser igual ao momento de chegada final (que é derivado abaixo) da unidade de acesso m - 1, isso é,
Figure img0019
do contrário (cbr_flag[SchedSelIdx] é igual a 0), o momento de chegada inicial para a unidade de decodificação m pode ser derivado por:
Figure img0020
onde tai,earliest(m) pode ser derivado como segue: se a unidade de decodificação n não for a primeira unidade de decodificação de um período de armazenamento subsequente:
Figure img0021
com tr,n(m) sendo o tempo de remoção nominal da unidade de decodificação m de CPB; do contrário, (a unidade de decodificação m é a primeira unidade de decodificação de um período de armazenamento subsequente), tai,earliest(m) pode ser derivado como
Figure img0022
[0121] O momento de chegada final taf para a unidade de decodificação m pode ser derivado por:
Figure img0023
onde b(m) é o tamanho em bits de unidade de decodificação m, contando os bits das unidades NAL VCL e as unidades NAL de dados de enchimento para o ponto de conformidade Tipo I ou todos os bits da sequência de bits Tipo II para o ponto de conformidade Tipo II.
[0122] Em alguns exemplos, os valores de SchedSelIdx, BitRate[SchedSelIdx], e CpbSize[SchedSelIdx] podem ser restringidos como segue: se o conteúdo dos conjuntos de parâmetros de sequência ativa para a unidade de acesso contendo a unidade de decodificação m e a unidade de acesso anterior diferirem, HSS pode selecionar um valor SchedSelIdx1 de SchedSelIdx dentre os valores de SchedSelIdx fornecidos no conjunto de parâmetros de sequência ativa para a unidade de acesso contendo a unidade de decodificação m que resulta em um BitRate{SchedSelIdx1] ou CpbSize[SchedSelIdx1] para a unidade de acesso contendo a unidade de decodificação m. O valor de BitRate[SchedSelIdx1] ou CpbSize[SchedSelIdx1] podem diferir do valor de BitRate{SchedSelIdx0] ou CpbSize[SchedSelIdx0] para o valor SchedSelIdx0 de SchedSelIdx que estava em uso para a unidade de acesso anterior; do contrário, HSS pode continuar a operar com valores anteriores de SchedSelIdx, BitRate[SchedSelIdx] e CpbSize[SchedSelIdx].
[0123] Quando HSS seleciona valores de BitRate[SchedSelIdx] ou CpbSize[SchedSelIdx] que diferem dos da unidade de acesso anterior, o seguinte pode ser aplicado: a variável BitRate[SchedSelIdx] pode ser efetivada no momento tai(m); a variável CpbSize[SchedSelIdx] pode ser efetivada como segue: se o novo valor de CpbSize[SchedSelIdx] exceder o tamanho CPB antigo, o mesmo pode ser efetivado no momento tai(m); do contrário, o novo valor de CpbSize[SchedSelIdx] pode ser efetivada no tempo de remoção CPB da última unidade de decodificação da unidade de acesso contendo a unidade de decodificação m.
[0124] Quando a variável SubPicCpbFlag é igual a 1, o momento de chegada CPB inicial da unidade de acesso n tai(n) pode ser configurado para o momento de chegada CPB inicial da primeira unidade de decodificação na unidade de acesso n, e o momento de chegada CPB final da unidade de acesso n taf(n) pode ser configurada para o momento de chegada CPB final da última unidade de decodificação na unidade de acesso n. Quando SubPicCpbFlag for igual a 0, cada unidade de decodificação pode ser uma unidade de acesso, tal como os momentos de chegada CPB inicial e final da unidade de acesso n podem ser os momentos de chegada CPB inicial e final da unidade de decodificação m.
[0125] A discussão a seguir fornece um exemplo para a temporização da remoção de unidade de decodificação e decodificação de uma unidade de decodificação. Se SubPicCpbFlag for igual a 0, a variável CpbRemovalDelay(m) pode ser configurada para o valor de cpb_removal_delay especificado na mensagem SEI de temporização de imagem associada com a unidade de acesso que é a unidade de decodificação m. Do contrário, a variável CpbRemovalDelay(m) pode ser configurada para o valor de du_cpb_removal_delay[i] para a unidade de decodificação m especificada na mensagem SEI de temporização de imagem associada com a unidade de acesso que contém a unidade de decodificação m.
[0126] Quando uma unidade de decodificação m é a unidade de decodificação m igual a 0 (a primeira unidade de decodificação da unidade de acesso que inicializa HRD), o tempo de remoção nominal da unidade de decodificação de CPB pode ser especificado por:
Figure img0024
[0127] Quando uma unidade de decodificação m é a primeira unidade de decodificação da primeira unidade de acesso de um período de armazenamento que não inicializa HRD, o tempo de remoção nominal da unidade de decodificação de CPB pode ser especificado por
Figure img0025
onde tr,n(mb) é o tempo de remoção nominal da primeira unidade de decodificação do período de armazenamento anterior.
[0128] Quando uma unidade de decodificação m é a primeira unidade de decodificação de um período de armazenamento, mb pode ser configurado igual a m no tempo de remoção tr,n(m) da unidade de decodificação m.
[0129] O tempo de remoção nominal tr,n(m) de uma unidade de decodificação m que não é a primeira unidade de decodificação de um período de armazenamento pode ser fornecido por:
Figure img0026
onde tr,n(mb) é o tempo de remoção nominal da primeira unidade de decodificação do período de armazenamento atual.
[0130] O tempo de remoção da unidade de decodificação m pode ser especificado como segue: Se low_delay_hrd_flag for igual a 0 ou tr,n(m)>=taf(m), o tempo de remoção da unidade de decodificação m pode ser especificado por: tr(m) = tr,n(m) Do contrário, (low_delay_hrd_flag é igual a 1 e tr,n(m)<taf(m)), e o tempo de remoção da unidade de decodificação m pode ser especificado por:
Figure img0027
O último caso, nesse exemplo, indica que o tamanho da unidade de decodificação m, b(m), é tão grande que impede a remoção no tempo de remoção nominal.
[0131] Quando SubPicCpbFlag é igual a 1, o tempo de remoção CPB nominal da unidade de acesso n, tr,n(n) pode ser configurado para o tempo de remoção CPB normal da última unidade de decodificação no tempo de remoção da última unidade de decodificação na unidade de acesso n. Quando SubPicCpbFlag é igual a 0, cada unidade de decodificação m é uma unidade de acesso n, nesse exemplo, e dessa forma, o tempo de remoção nominal e o tempo de remoção CPB da unidade de acesso n são o tempo de remoção CPB nominal e o tempo de remoção CPB da unidade de decodificação m. No tempo de remoção CPB da unidade de decodificação m, em alguns exemplos, a unidade de decodificação pode ser decodificada instantaneamente.
[0132] Nesse exemplo, o buffer de imagem decodificada (DPB) pode operar como segue. O buffer de imagem decodificada pode conter um ou mais buffers de imagem. Cada um dos buffers de imagem pode conter uma imagem decodificada que é marcada como "utilizada para referência" ou é mantida para envio futuro. Antes da inicialização, DPB pode estar vazio (a variável de plenitude de DPB pode ser configurada para zero). As etapas a seguir desse exemplo podem ocorrer na sequência listada.
[0133] Primeiro, as imagens podem ser removidas do DPB. A remoção das imagens do DPB antes da decodificação da imagem atual (mas depois da análise do cabeçalho de fatia da primeira fatia da imagem atual) pode ocorrer instantaneamente no tempo de remoção CPB da primeira unidade de decodificação da unidade de acesso n (contendo a imagem atual) e pode prosseguir como segue. O processo de decodificação para a imagem de referência determinada como especificado na subcláusula 8.3.2 de HEVC WD6 pode ser invocado. Se a imagem atual for uma imagem IDR, o seguinte pode se aplicar: quando a imagem IDR não é a primeira imagem decodificada e o valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou max_dec_pic_buffering derivados do conjunto de parâmetros de sequência ativa for diferente do valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou max_dec_pic_buffering derivado do conjunto de parâmetros de sequência que estava ativo para a imagem anterior, respectivamente, no_output_of_prior_pics_flag (isso é, um no output of prior pictures flag) pode ser inferido como sendo igual a 1 pelo HRD, ou configurado para 1 para seu próprio processamento pelo HRD, independentemente do valor real de no_output_of_prior_pics_flag. As implementações de decodificador podem tentar manusear a imagem ou as mudanças de tamanho de DPB mais graciosamente do que o HRD com relação a mudanças em pic_width_in_luma_samples ou pic_height_in_luma_samples.
[0134] Quando no_output_of_prior_pics_flag for igual a 1 ou for inferido como sendo igual a 1, todos os buffers de imagem no DPB podem ser esvaziados sem enviar as imagens que contêm, e a plenitude de DPB pode ser configurada para 0. (O processamento adicional que pode ser realizado se no_output_of_prior_pics_flag possuir um valor que não é igual a 1 é descrito adicionalmente abaixo). Todas as imagens k em DPB, para as quais as seguintes condições são verdadeiras, podem ser removidas do DPB: imagem k é marcada como "não utilizada para referência"; imagem k possui PicOutputFlag igual a 0 ou seu momento de envio DPB é inferior a ou igual ao tempo de remoção CPB da primeira unidade de decodificação (denotada como unidade de decodificação m) da imagem atual n; isso é, to,dpb(k)<=tr(m).
[0135] Quando uma imagem é removida de DPB, a plenitude de DPB pode ser reduzida por um. Para o envio de imagem, o seguinte pode ocorrer instantaneamente no tempo de remoção CPB da unidade de acesso n, tr(n);
[0136] A imagem n pode ser considerada decodificada depois de a última unidade de decodificação da imagem ser decodificada.
[0137] Quando a imagem n possui PicOutputFlag igual a 1, seu momento de envio DPB to,dpb(n) pode ser derivado por:
Figure img0028
onde dpb_output_delay(n) é o valor de dpb_output_delay especificado na mensagem SEI de temporização de imagem associada com a unidade de acesso n.
[0138] O envio da imagem atual pode ser especificado como segue: se PicOutputFlag for igual a 1 e to,dpb(n) = tr(n), a imagem atual pode ser enviada; do contrário, se PicOutputFlag for igual a 0, a imagem atual pode não ser enviada, mas pode ser armazenada em DPB; do contrário (PicOutputFlag é igual a 1 e to,dpb(n) > tr(n)), a imagem atual pode ser enviada posteriormente e pode ser armazenada em DPB (como especificado na subcláusula C.3.3 de HEVC WD6 como modificado por essa descrição), e pode ser enviada no momento to,dpb(n) a menos que indicado o não envio pela decodificação ou inferência de no_output_of_prior_pics_flag igual a 1 em um momento que precede to,dpb(n). Em outras palavras, a imagem atual pode ser armazenada em DPB e pode ser enviada posteriormente, por exemplo, no momento toa,adpb(n), se nenhum envio do indicador de imagens anteriores não for igual a 1.
[0139] Quando do envio, a imagem pode ser trabalhada, utilizando o retângulo de recorte especificado no conjunto de parâmetro de sequência ativo.
[0140] Quando a imagem n é uma imagem que é enviada e não é a última imagem da sequência de bits que é enviada, o valor de um intervalo de tempo de envio DPB Δto,dpb(n) pode ser definido como segue:
Figure img0029
onde nn pode indicar que a imagem que segue após a imagem n na ordem de envio e possui PicOutputFlag igual a 1, de modo que o intervalo de tempo de saída DPB Δto,dpb(n) pode ser definido como a diferença entre o momento de envio DPB de uma imagem subsequente depois que a imagem n na ordem de envio e o momento de envio DPB da imagem n.
[0141] Para a marcação de armazenamento de imagem decodificada atual, o seguinte pode ser implementado instantaneamente no tempo de remoção CPB da unidade de acesso n, tr(n): a imagem decodificada atual pode ser armazenada em DPB em um buffer de imagem vazio, e a plenitude DPB pode ser incrementada por um; se a imagem atual for uma imagem de referência, pode ser marcada como "utilizada para referência", do contrário pode ser marcada como "não utilizada para referência".
[0142] Para a operação da ordem de saída de DPB, o buffer de imagem decodificada pode conter um ou mais buffers de imagem. Cada um dos buffers de imagem pode conter uma imagem decodificada que é marcada como "utilizada para referência" ou é mantida para envio futuro. Uma inicialização HRD, o DPB pode estar vazio. As etapas a seguir podem ocorrer na ordem listada.
[0143] As imagens podem ser removidas do DPB como segue. A remoção de imagens do DPB antes da decodificação da imagem atual (mas depois da análise do cabeçalho de fatia da primeira fatia da imagem atual) pode ser implementada instantaneamente quando a primeira unidade de decodificação da unidade de acesso contendo a imagem atual é removida do CPB e pode prosseguir como segue.
[0144] O processo de decodificação para a imagem de referência configurado como especificado na subcláusula 8.3.4.3 de HEVC WD6, como modificado de acordo com essa descrição, pode ser invocado (como parcialmente descrito acima, e como adicionalmente descrito como segue).
[0145] Se a imagem atual for uma imagem IDR, o seguinte pode se aplicar: quando a imagem IDR não é a primeira imagem IDR decodificada e o valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou max_dec_pic_buffering derivados do conjunto de parâmetros de sequência ativa for diferente do valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou max_dec_pic_buffering derivado do conjunto de parâmetros de sequência que estava ativo para a imagem anterior, respectivamente, no_output_of_prior_pics_flag pode ser configurado para ou inferido como sendo igual a 1 pelo HRD, independentemente do valor real de no_output_of_prior_pics_flag. As implementações de decodificador podem tentar manusear as mudanças no valor de pic_width_in_luma_samples ou pic_height_in_luma_samples ou max_dec_pic_buffering mais graciosamente do que HRD; quando no_output_of_prior_pics_flag é igual a 1 ou é inferido como sendo igual a 1, todos os buffers de imagem no DPB podem ser esvaziados sem envio das imagens que contêm; do contrário, os buffers de imagem contendo uma imagem que é marcada como "não necessária para envio" e "não utilizada para referência" podem ser esvaziados (sem envio).
[0146] Quando qualquer uma das condições a seguir é verdadeira, um processo de "bumping" especificado na subcláusula C.5.2.1 de HEVC WD6 como modificado por essa descrição pode ser invocado repetidamente até que exista um buffer de imagem vazio para armazenar a imagem decodificada atual: o número de imagens de DPB que é marcado como "necessário para envio" é maior do que um número de imagens de reordenação em uma camada temporal atual, isso é, num_reorder_pics[temporal_id]; ou, o número de imagens em DPB com número de imagens em DPB com valores de identificador de camada temporal, temporal_id, inferior a ou igual a um valor de identificador de camada temporal, temporal_id, da imagem atual é igual a um valor de armazenamento máximo de imagem da camada temporal atual mais um, isso é, max_dec_pic_buffering[temporal_id] + 1; ou, quando a imagem atual é uma imagem IDR para a qual o indicador de não envio de imagens anteriores, no_output_of_prior_pics_flag, possui um valor não igual a e não inferido como sendo igual a 1.
[0147] As seguintes etapas podem ser realizadas: os buffers de imagem contendo uma imagem que são marcados como "não necessários para envio" e "não utilizados para referência" podem ser esvaziados (sem envio); e todos os buffers de imagem não vazios no DPB podem ser esvaziados pela invocação repetida do processo de "bumping" especificado abaixo.
[0148] Portanto, um processo de "bumping" pode ser invocado em qualquer um dos casos a seguir: a imagem atual é uma imagem IDR e no_output_of_prior_pics_flag não é igual a 1 e não está configurado para ou inferido como sendo igual a 1, como especificado na subcláusula C.5.2. de HEVC WD6 como modificado por essa descrição; ou; o número de imagens no DPB que são marcadas "necessárias para envio" é maior do que um número de imagens reordenadas em uma camada temporal atual, isso é, num_reorder_pics[temporal_id], como especificado na subcláusula C.5.2 de HEVC WD6 como modificado por essa descrição; ou, o número de imagens no DPB com temporal_id inferior a ou igual a um valor de identificador de camada temporal, temporal_id, da imagem atual é igual a um valor máximo de armazenamento de imagem da camada temporal atual mais um, isso é, max_dec_pic_buffering[temporal_id] + 1, como especificado na subcláusula C.5.2 de HEVC WD6 como modificado por essa descrição.
[0149] O processo de "bumping" pode incluir as etapas ordenadas a seguir: 3. A imagem que é primeira para envio pode ser selecionada como uma possuindo o menor valor de PicOrderCntVal de todas as imagens no DPB marcadas como "necessária para envio". 4. A imagem é trabalhada, utilizando-se um retângulo de recorte especificado no parâmetro de sequência ativa configurado para a imagem, a imagem trabalhada pode ser enviada, e a imagem pode ser marcada como "não necessária para envio". 5. Se o buffer de imagem que inclui a imagem que foi trabalhada e enviada contiver uma imagem marcada como "não utilizada para referência", o buffer de imagem pode se esvaziado.
[0150] O seguinte pode ocorrer instantaneamente para a decodificação, marcação e armazenamento de imagem, quando a última unidade de decodificação da unidade de acesso n contendo a imagem atual é removida do CPB.
[0151] A imagem atual pode ser considerada como decodificada depois de a última unidade de decodificação da imagem ser decodificada. A imagem decodificada atual pode ser armazenada em um buffer de imagem vazio no DPB, e o seguinte pode ser aplicado: se a imagem decodificada atual possuir PicOutputFlag igual a 1, pode ser marcada como "necessária para envio"; do contrário (a imagem decodificada atual possui PicOutputFlag igual a 0), pode ser marcada como "não necessária para envio".
[0152] Se a imagem decodificada atual for uma imagem de referência, pode ser marcada como "utilizada para referência", do contrário (a imagem decodificada atual é uma imagem de não referência), pode ser marcada como "não utilizada para referência".
[0153] Portanto, um processo de bumping pode incluir a seleção de uma imagem possuindo um menor valor de contagem de ordem de imagem (POC) das imagens no DPB e que é marcado como necessário para envio como uma imagem selecionada; o trabalho da imagem selecionada como especificado em um parâmetro de sequência ativa configurado para a imagem selecionada, gerando, assim, uma imagem trabalhada com base na imagem selecionada; envio da imagem trabalhada, e marcação da imagem selecionada como não necessária para envio.
[0154] Os elementos de sintaxe podem ser utilizados para sinalizar um modo de comportamento CPB, utilizando as semânticas definidas abaixo. A sintaxe de parâmetros VUI e semânticas podem ser alteradas para como ilustrado na Tabela 3 abaixo (semântica dos elementos de sintaxe existentes não é alterada com relação a HEVC WD6, nesse exemplo). Tabela 3
Figure img0030
Figure img0031
[0155] No exemplo da Tabela 3, os parâmetros VUI incluem um indicador adicionado sub_pic_cpb_params_present_flag, com relação ao HEVC convencional. A semântica para esse indicador pode ser definida como segue: sub_pic_cpb_params_present_flag sendo igual a 1 pode especificar que os parâmetros de retardo de remoção CPB de nível de sub-imagem estão presentes e CPB pode operar no nível de unidade de acesso ou nível de sub- imagem. A variável sub_pic_cpb_flag sendo igual a 0 pode especificar que os parâmetros de retardo de remoção CPB de nível de sub-imagem não estão presentes e CPB precisa operar no nível de unidade de acesso. Quando sub_pic_cpb_params_present_flag não estão presentes, seu valor pode ser configurado para ou inferido como sendo igual a 0.
[0156] Os elementos de sintaxe também podem ser utilizados para sinalizar os momentos de remoção CPB das unidades de decodificação, utilizando a semântica descrita abaixo. Nesse exemplo, os elementos de sintaxe podem ser sinalizados em uma mensagem SEI de período de armazenamento, por exemplo, de acordo com o exemplo da Tabela 4. Tabela 4
Figure img0032
Figure img0033
[0157] No exemplo da Tabela 4, a mensagem SEI de período de armazenamento inclui uma condicional adicional relativa ao HEVC convencional, que inclui adicionalmente, quando sub_pic_cpb_flag é verdadeiro, dois elementos de sintaxe são adicionados, initial_du_cpb_removal_delay [SchedSelIdx] e initial_du_cpb_removal_delay_offset[SchedSelIdx]. Esses elementos de sintaxe condicionais e adicionados podem ser adicionados dentro de um ou ambos os condicionais para quando NalHrdBpPresentFlag for verdadeiro e/ou quando VclHardBpPresentFlag for verdadeiro.
[0158] A Tabela 5 fornece um exemplo alternativo no qual uma mensagem SEI diferente é definida para sinalizar o retardo de remoção CPB inicial e o desvio de retardo de remoção CPB inicial para a operação CPB de nível de sub-imagem: Tabela 5
Figure img0034
Figure img0035
[0159] No exemplo da Tabela 4 acima, quando NalHrdBpPresentFlag ou VclHrdBpPresentFlag são iguais a 1, uma mensagem SEI de período de armazenamento pode ser associada com qualquer unidade de acesso na sequência de bits, e uma mensagem SEI de período de armazenamento pode ser associada com cada unidade de acesso IDR, com cada unidade de acesso CRA, e com cada unidade de acesso associada com uma mensagem SEI de ponto de recuperação. Para algumas aplicações, a presença frequente de uma mensagem SEI de período de armazenamento pode ser desejável. Em alguns exemplos, um período de armazenamento pode ser especificado como o conjunto de unidades de acesso entre dois casos da mensagem SEI de período de armazenamento na ordem de decodificação.
[0160] Nos exemplos das Tabelas 4 e 5 acima, a variável seq_parameter_set_id pode especificar o conjunto de parâmetros de sequência que contém os atributos HRD de sequência. O valor de seq_parameter_set_id pode ser igual ao valor de seq_parameter_set_id no conjunto de parâmetros de imagem referidos pela imagem codificada primária associada com a mensagem SEI de período de armazenamento. Em alguns exemplos, o valor de seq_parameter_set_id pode estar na faixa de 0 a 31, inclusive.
[0161] No exemplo da Tabela 4 acima, initial_cpb_removal_delay[SchedSelIdx] pode especificar o retardo para o CPB SchedSelIdx entre o momento de chegada ao CPB do primeiro bit de dados codificados associados com a unidade de acesso associada com a mensagem SEI de período de armazenamento e o tempo de remoção do CPB dos dados codificados associados com a mesma unidade de acesso, para o primeiro período de armazenamento depois da inicialização HRD. Esse elemento de sintaxe pode ter um comprimento em bits fornecido por initial_cpb_removal_delay_length_minus1 + 1. Pode ser em unidades de um relógio 90 kHz nesse exemplo. O elemento de sintaxe initial_cpb_removal_delay[SchedSelIdx] pode não ser igual a 0, nesse exemplo, e pode não exceder 90000*(CpbSize[SchedSelIdx] BitRate{SchedSelIdx]), o equivalente em tempo ao tamanho de CPB em unidades de relógio de 90 kHz, nesse exemplo.
[0162] No exemplo da Tabela 4 acima, o elemento de sintaxe initial_cpb_removal_delay_offset[SchedSelIdx] pode ser utilizado para o CPB SchedSelIdx em combinação com cpb_removal_delay para especificar o tempo de distribuição inicial das unidades de acesso codificadas para o CPB. O elemento de sintaxe initial_cpb_removal_delay_offset[SchedSelIdx] pode estar em unidades de um relógio de 90 kHz nesse exemplo. O elemento de sintaxe initial_cpb_removal_delay_offset[SchedSelIdx] pode ser um código de comprimento fixo cujo comprimento em bits é fornecido por initial_cpb_removal_delay_length_minus1 + 1. Esse elemento de sintaxe pode não ser utilizado por decodificadores e pode ser necessário apenas para o programador de distribuição (HSS) especificado no Anexo C de HEVC WD6. Através de toda a sequência de vídeo codificada, a soma de initial_cpb_removal_delay[SchedSelIdx] e initial_cpb_removal_delay_offset[SchedSelIdx] pode ser constante para cada valor de SchedSelIdx.
[0163] Nos exemplos das Tabelas 4 e 5 acima, o elemento de sintaxe initial_du_cpb_removal_delay[SchedSelIdx] pode especificar o retardo para o CPB SchedSelIdx entre o momento de chegada ao CPB do primeiro bit dos dados codificados associados com a primeira unidade de decodificação na unidade de acesso associada com a mensagem SEI de período de armazenamento, e o tempo de remoção de CPB dos dados codificados associados com a mesma unidade de decodificação, para o primeiro período de armazenamento depois da inicialização HRD. Esse elemento de sintaxe pode ter um comprimento em bits fornecido por initial_cpb_removal_delay_length_minus1+1. Esse elemento de sintaxe pode estar em unidades de um relógio de 90 kHz, nesse exemplo. Nesse exemplo, o elemento de sintaxe initial_du_cpb_removal_delay[SchedSelIdx] pode não ser igual a 0 e pode não exceder 90000*[CpbSize[SchedSelIdx] ^ BitRate[SchedSelIdx]), o equivalente em tempo ao tamanho de CPB em unidades de relógio de 90 kHz.
[0164] Nos exemplos das Tabelas 4 e 5 acima, o elemento de sintaxe initial_du_cpb_removal_delay_offset[SchedSelIdx] pode ser utilizado para o CPB SchedSelIdx em combinação com cpb_removal_delay para especificar o momento de distribuição inicial das unidades de decodificação para o CPB. O elemento de sintaxe initial_cpb_removal_delay_offset[SchedSelIdx] pode estar em unidades de um relógio de 90 kHz nesse exemplo. O elemento de sintaxe initial_du_cpb_removal_delay_offset[SchedSelIdx] pode ser um código de comprimento fixo cujo comprimento em bits é fornecido por initial_cpb_removal_delay_length_minus1+1. Esse elemento de sintaxe pode não ser utilizado pelos decodificadores e pode ser necessário apenas para o programador de distribuição (HSS) especificado no Anexo C de HEVC WD6, nesse exemplo.
[0165] Através de toda a sequência de vídeo codificada, a soma de initial_du_cpb_removal_delay[SchedSelIdx] e initial_du_cpb_removal_delay_offset[SchedSelIdx] pode ser constante para cada valor de SchedSelIdx.
[0166] A Tabela 6 abaixo fornece uma sintaxe de mensagem SEI de temporização de imagem ilustrativa: Tabela 6
Figure img0036
[0167] Nesse exemplo, a mensagem SEI de temporização de imagem inclui uma declaração condicional adicionado para sub_pic_cpb_flag, que quando verdadeiro sinaliza um elemento de sintaxe num_decoding_units_minus1 e um para o circuito que sinaliza, para cada uma das unidades de decodificação, um numb_nalus_in_du_minus1 e um du_cpb_removal_delay correspondentes. Alternativamente, o mapeamento das unidades NAL para cada unidade de decodificação pode ser sinalizado utilizando-se outros meios, por exemplo, pela inclusão de um ID de unidade de decodificação para cada unidade NAL VCL, por exemplo, no cabeçalho de unidade NAL, o cabeçalho de fatia, ou uma nova mensagem SEI. O ID de decodificação para cada unidade NAL não VCL pode ser igual à unidade NAL VCL associada.
[0168] A sintaxe da mensagem SEI de temporização de imagem no exemplo da Tabela 6 pode ser dependente do conteúdo do conjunto de parâmetros de sequência que está ativo para a imagem codificada associada com a mensagem SEI de temporização de imagem. No entanto, a menos que a mensagem SEI de temporização de imagem de uma unidade de acesso IDR seja precedida por uma mensagem SEI de período de armazenamento dentro da mesma unidade de acesso, a ativação do conjunto de parâmetros de sequência associada (e, para imagens IDR que não são a primeira imagem na sequência de bits, a determinação de que a imagem codificada é uma imagem IDR) pode não ocorrer até a decodificação da primeira unidade NAL de fatia codificada da imagem codificada. Visto que a unidade NAL de fatia codificada da imagem codificada pode seguir a mensagem SEI de temporização de imagem na ordem de unidade NAL, aqui pode haver casos nos quais se um decodificador armazenar RBSP contendo a mensagem SEI de temporização de imagem até a determinação dos parâmetros do parâmetro de sequência que estarão ativos para imagem codificada e então realizar a análise da imagem SEI de temporização de imagem.
[0169] A presença da mensagem SEI de temporização de imagem, de acordo com o exemplo da Tabela 6, na sequência de bits pode ser especificada como segue: se CpbDpbDelaysPresentFlag for igual a 1, uma mensagem SEI de temporização de imagem pode estar presente em cada unidade de acesso da sequência de vídeo codificada; do contrário (CpbDpbDelaysPresentFlag é igual a 0), nenhuma mensagem SEI de temporização de imagem precisa estar presente em qualquer unidade de acesso da sequência de vídeo codificada.
[0170] A variável cpb_removal_delay pode especificar quantos tiques de relógio (ver subcláusula E.2.1 de HEVC WD6) pelos quais esperar após a remoção de CPB da unidade de acesso associada com a mensagem SEI de período de armazenamento mais recente em uma unidade de acesso anterior antes de remover do buffer os dados de unidade de acesso associados com a mensagem SEI de temporização de imagem. Esse valor também pode ser utilizado para calcular um momento mais cedo possível de chegada dos dados de unidade de acesso ao CPB para o HSS, como especificado no Anexo C de HEVC WD6. O elemento de sintaxe pode ser um código de comprimento fixo cujo comprimento em bits é fornecido por cpb_removal_delay_length_minus1+1. O cpb_removal_delay pode ser o restante de um contador de módulo 2 (cpb_removal_delay_length_minus1+1). O valor de cpb_removal_delay_length_minus1 que determina o comprimento (em bits) do elemento de sintaxe cpb_removal_delay pode ser o valor de cpb_removal_delay_length_mins1 codificado no conjunto de parâmetros de sequência que esteve ativo para a imagem codificada primária associada com a mensagem SEI de temporização de imagem. No entanto, cpb_removal_delay pode especificar um número de tiques de relógio com relação ao tempo de remoção da unidade de acesso anterior contendo uma mensagem SEI de período de armazenamento, que pode ser uma unidade de acesso de uma sequência de vídeo codificada diferente.
[0171] A variável dpb_output_delay pode ser utilizada para computar o momento de envio DPB da imagem. Essa variável pode especificar quantos tiques de relógio precisam ocorrer após a remoção da última unidade de decodificação em uma unidade de acesso a partir de CPB antes de a imagem decodificada ser enviada a partir de DPB (ver subcláusula C.2 de HEVC WD6). Uma imagem pode não ser removida do DPB em seu momento de envio quando ainda estiver marcada como "utilizada para referência de curto termo" ou "utilizada para referência de longo termo" nesse exemplo. Apenas a variável dpb_output_delay pode ser especificada para uma imagem decodificada nesse exemplo.
[0172] O comprimento do elemento de sintaxe dpb_output_delay pode ser fornecido em bits por dpb_output_delay_length_minus1+1. Quando max_dec_pic_buffering[max_temporal_layers_minus1) for igual a 0, dpb_output_delay também pode ser igual a 0.
[0173] O momento de envio derivado de dpb_output_delay de qualquer imagem que é enviada a partir de um decodificador de conformidade de temporização de saída como especificado na subcláusula C.2 de HEVC WD6 como modificado por essa descrição pode preceder o momento de envio derivado de dpb_output_delay de todas as imagens em qualquer sequência de vídeo codificada subsequente na ordem de decodificação.
[0174] A ordem de envio de imagem estabelecida pelos valores desse elemento de sintaxe pode ser a mesma ordem que a estabelecida pelos valores de PicOrderCnt() como especificado pela subcláusula C.5 de HEVC WD6.
[0175] Para imagens que não são enviadas pelo processo de "bumping" da subcláusula C.5 de HEVC WD6 como modificado por essa descrição visto que precedem, na ordem de decodificação, uma imagem IDR com no_output_of_prior_pics_flag igual a 1 ou configurado para ou inferido como sendo igual a 1, os momentos de envio derivados de dpb_output_delay podem aumentar com o aumento do valor de PicOrderCnt() com relação a todas as imagens dentro da mesma sequência de vídeo codificada.
[0176] A variável num_decoding_units_minus1 plus 1 pode especificar o número de unidades de decodificação na unidade de acesso com a qual a mensagem SEI de temporização de imagem está associada. O valor de num_decoding_units_minus1 pode estar na faixa de 0 a X, inclusive, por exemplo.
[0177] A variável num_nalus_in_du_minus1[i]plus1 pode especificar o número de unidades NAL na unidade de decodificação i da unidade de acesso com a qual a mensagem SEI de temporização de imagem está associada. O valor de num_nalus_in_du_minus1[i] pode estar na faixa de 0 a X, inclusive, por exemplo.
[0178] A primeira unidade de decodificação da unidade de acesso pode incluir as primeiras unidades NAL consecutivas num_nalus_in_du_minus1 [0]+1 na ordem de decodificação na unidade de acesso. A unidade de decodificação i (com i sendo maior que 0) da unidade de acesso pode incluir as unidades NAL consecutivas num_nalus_in_du_minus1[i]+1 seguindo imediatamente a última unidade NAL na unidade de decodificação anterior da unidade de acesso, na ordem de decodificação. Pode haver pelo menos uma unidade NAL VCL em cada unidade de decodificação, por exemplo.
[0179] A variável du_cpb_removal_delay[i] pode especificar quantos tiques de relógio (ver subcláusula E.2.1 de HEVC WD6) que se precisa esperar depois da remoção do CPB da primeira unidade de decodificação na unidade de acesso associada com a mensagem SEI de período de armazenamento mais recente em uma unidade de acesso anterior antes de remover do CPB a unidade de decodificação i na unidade de acesso associada com a mensagem SEI de temporização de imagem. Esse valor também pode ser utilizado para calcular um momento de chegada mais cedo possível de dados da unidade de decodificação no CPB para HSS, como especificado no Anexo C de HEVC WD6. O elemento de sintaxe pode ser um código de comprimento fixo cujo comprimento em bits pode ser fornecido por cpb_removal_delay_length_minus1 + 1. O du_cpb_removal_delay[i] pode ser o restante do contador de módulo 2 (cpb_removal_delay_length_minus1+1). O valor de cpb_removal_delay_length_minus1 que determina o comprimento (em bits) do elemento de sintaxe du_cpb_removal_delay[i] pode ser o valor de cpb_removal_delay_length_minus1 codificado no conjunto de parâmetros de sequência que é ativo para a imagem codificada associada com a mensagem SEI de temporização de imagem. No entanto, du_cpb_removal_delay[i] específica um número de tiques de relógio com relação ao tempo de remoção da primeira unidade de decodificação na unidade de acesso anterior contendo uma mensagem SEI de período de armazenamento, que pode ser uma unidade de acesso de uma sequência de vídeo codificada diferente.
[0180] A figura 2 é um diagrama de blocos ilustrando um exemplo de codificador de vídeo 20 que pode implementar as técnicas envolvidas com o armazenamento de uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem, obtendo um tempo de remoção de buffer respectivo para uma ou mais unidades de decodificação, removendo 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 codificando os dados de vídeo correspondentes às unidades de decodificação removidas, entre outras funções, como descrito nessa descrição. O codificador de vídeo 20 pode realizar a intra e intercodificação de blocos dentro dos quadros de vídeo, incluindo unidades de codificação (CUs) ou sub-CUs das CUs. A intracodificação se baseia na previsão espacial para redução ou remoção de redundância espacial em vídeo dentro de um quadro de vídeo determinado. A intercodificação se baseia na previsão temporal para reduzir ou remover a redundância temporal no vídeo dentro de quadros adjacentes de uma sequência de vídeo. O intramodo (modo I) pode se referir a qualquer um dos vários modos de compressão com base espacial e intermodos tal como a previsão unidirecional (modo P) ou previsão bidirecional (modo B) pode se referir a qualquer um dos vários modos de compressão com base temporal. Apesar de alguns componentes para a codificação de intermodo serem apresentados na figura 2, deve-se compreender que o codificador de vídeo 20 pode incluir adicionalmente componentes para a codificação de intramodo, tal como a unidade de intrapedição 46. Componentes adicionais que também podem ser incluídos não são ilustrados na figura 2 para fins de brevidade e clareza.
[0181] Como ilustrado na figura 2, o codificador de vídeo 20 recebe blocos de vídeo incluindo um bloco de vídeo atual dentro de um quadro de vídeo a ser codificado. No exemplo da figura 2, o codificador de vídeo 20 inclui a unidade de compensação de movimento 44, a unidade de estimativa de movimento 42, a memória de imagem de referência 64, o somador 50, a unidade de transformação 52, a unidade de quantização 54, a unidade de codificação por entropia 56, o buffer 90, e o buffer de imagem codificada 92. Para a reconstrução de bloco de vídeo, o codificador de vídeo 20 também inclui a unidade de quantização inversa 58, a unidade de transformação inversa 60 e o somador 62.
[0182] Durante o processo de codificação, o codificador de vídeo 20 recebe um quadro de vídeo ou fatia a ser codificado. O quadro ou fatia pode ser dividido em múltiplos blocos de vídeo. A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 realizam a codificação por interpredição do bloco de vídeo recebido com relação a um ou mais blocos em um ou mais quadros de referência para fornecer compressão temporal. A unidade de intrapedição 46 também pode realizar a codificação por intrapedição do bloco de vídeo recebido com relação a um ou mais blocos vizinhos no mesmo quadro ou fatia que o bloco a ser codificado para fornecer compressão espacial.
[0183] A unidade de seleção de modo 40 pode selecionar um dos modos de codificação, intra ou inter, por exemplo, com base nos resultados de erro, e pode fornecer o bloco intra ou intercodificado resultante para o somador 50 para gerar os dados de bloco residual e para o somador 62 para reconstruir o bloco codificado para uso como um quadro de referência.
[0184] A unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser altamente integradas, mas são ilustradas separadamente por motivos conceituais. A estimativa de movimento é o processo de geração de vetores de movimento, que estimam o movimento para blocos de vídeo. Um vetor de movimento, por exemplo, pode indicar o deslocamento de um bloco de previsão dentro de um quadro de referência de previsão (ou outra unidade codificada) com relação ao bloco atual sendo codificado dentro do quadro atual (ou outra unidade codificada). Um bloco de previsão é um bloco que é considerado como combinando com o bloco a ser codificado, em termos de diferença de pixel, o que pode ser determinado pela soma de uma diferença absoluta (SAD), a soma da diferença quadrada (SSD), ou outras métricas de diferença. Um vetor de movimento também pode indicar o deslocamento de uma partição de um macrobloco. A compensação de movimento pode envolver coletar ou gerar o bloco de previsão com base no vetor de movimento determinado pela estimativa de movimento. Como notado, a unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 podem ser funcionalmente integradas, em alguns exemplos.
[0185] No caso de intercodificação, a unidade de estimativa de movimento 42 calcula um vetor de movimento para o bloco de vídeo de um quadro intercodificado pela comparação do bloco de vídeo com blocos de vídeo de um quadro de referência na memória de imagem de referência 64. A unidade de compensação de movimento 44 também pode interpolar pixels sub-inteiro do quadro de referência, por exemplo, um quadro I ou um quadro P. Como um exemplo, os vetores de movimento podem ser previstos a partir de duas listas de quadros de referência: lista 0, que inclui quadros de referência possuindo uma ordem de exibição mais cedo do que um quadro atual sendo codificado, e lista 1, que inclui os quadros de referência possuindo uma ordem de exibição posterior ao quadro atual sendo codificado. Portanto, os dados armazenados na memória de imagem de referência 64 podem ser organizados de acordo com essas duas listas de quadros de referência.
[0186] A unidade de estimativa de movimento 42 compara os blocos de um ou mais quadros de referência a partir da memória de imagem de referência 64 com um bloco a ser codificado de um quadro atual, por exemplo, um quadro P ou um quadro B. Quando os quadros de referência na memória de imagem de referência 64 incluem valores para pixels sub- inteiro, um vetor de movimento calculado pela unidade de estimativa de movimento 42 pode se referir a uma localização de pixel de sub-inteiro de um quadro de referência. A unidade de estimativa de movimento 42 e/ou a unidade de compensação de movimento 44 também podem ser configuradas para calcular valores para as posições de pixel sub-inteiro dos quadros de referência armazenados na memória de imagem de referência 64 se nenhum valor para as posições de pixel de sub-inteiro forem armazenados na memória de imagem de referência 64. A unidade de estimativa de movimento 42 envia o vetor de movimento calculado para a unidade de codificação por entropia 56 e unidade de compensação de movimento 44. O bloco de quadro de referência identificado por um vetor de movimento pode ser referido como um bloco de previsão.
[0187] A unidade de compensação de movimento 44 pode calcular os dados de previsão com base no bloco de previsão. O codificador de vídeo 20 forma um bloco de vídeo residual pela subtração dos dados de previsão fornecidos pela unidade de compensação de movimento 44 a partir do bloco de vídeo original sendo codificados. O somador 50 representa o componente ou componentes que realizam essa operação de subtração. A unidade de transformação 52 aplica uma transformação, tal como a transformação de cosseno discreto (DCT) ou uma transformação conceitualmente similar, ao bloco residual, produzindo um bloco de vídeo compreendendo valores de coeficiente de transformação residual. A unidade de transformação 52 pode realizar outras transformações, tal como as definidas pelo padrão H.264, que são conceitualmente similares à DCT. Como outros exemplos, a unidade de transformação 52 pode realizar transformações de wavelet, transformações de inteiros, transformações de sub-bandas, ou outros tipos de transformações. A unidade de transformação 52 aplica a transformação ao bloco residual, produzindo um bloco de coeficientes de transformação residual. A transformação pode converter a informação residual de um domínio de valor de pixel para um domínio de transformação, tal como um domínio de frequência. A unidade de quantização 54 quantiza os coeficientes de transformação residual para reduzir ainda mais a taxa de bits. O processo de quantização pode reduzir a profundidade de bit associada com alguns ou todos os coeficientes. O grau de quantização pode ser modificado pelo ajuste de um parâmetro de quantização.
[0188] Seguindo a quantização, a unidade de codificação por entropia 56 codifica por entropia os coeficientes de transformação quantizados. Por exemplo, a unidade de codificação por entropia 56 pode realizar a codificação de comprimento variável adaptativa de conteúdo (CAVLC), a codificação aritmética binaria adaptativa de contexto (CABAC), a codificação por entropia de partição de intervalo de probabilidade (PIPE) ou outra técnica de codificação por entropia. Seguindo a codificação por entropia pela unidade de codificação por entropia 56, os dados de vídeo codificados podem ser armazenados mais ou menos temporariamente no buffer de imagem codificada 92, transmitidos para outro dispositivo, e/ou arquivados para transmissão ou recuperação posterior. No caso de codificação aritmética binaria adaptativa de contexto, o contexto pode ser baseado nos macroblocos vizinhos.
[0189] Em alguns casos, a unidade de codificação por entropia 56 ou outra unidade do codificador de vídeo 20 pode ser configurada para realizar outras funções de codificação, em adição à codificação por entropia. Por exemplo, a unidade de codificação por entropia 56 pode ser configurada para determinar os valores de padrão de bloco codificados (CBP) para os macroblocos e partições. Além disso, em alguns casos, a unidade de codificação por entropia 56 pode realizar a codificação de comprimento de funcionamento dos coeficientes em uma unidade de codificação maior (LCU) ou uma sub-CU de uma LCU. Em particular, a unidade de codificação por entropia 56 pode aplicar uma digitalização em ziguezague ou outro padrão de digitalização para digitalizar os coeficientes de transformação em uma LCU ou partição e codificar as sequências de zeros para compressão adicional. A unidade de codificação por entropia 56 e/ou outros elementos do codificador de vídeo 20 também pode formar unidades de decodificação a partir dos dados de vídeo codificados. As unidades de decodificação podem ser sub-imagens, tal como uma sequência de blocos de árvore, uma ou mais fatias, uma ou mais ondas e/ou um ou mais tiles, por exemplo. A unidade de codificação por entropia 56 e/ou outros elementos do codificador de vídeo 20 também podem adicionar dados de enchimento para as sub-imagens com tamanhos diferentes para alcançar o alinhamento de byte. A unidade de codificação por entropia 56 também pode construir informação de cabeçalho com elementos de sintaxe adequados para transmissão na sequência de bits de vídeo codificada. Por exemplo, a informação de cabeçalho pode incluir dados de sinalização indicando se as unidades de decodificação são unidades de acesso ou unidades de subacesso. Isso pode incluir a sinalização de um valor para um indicador preferido de buffer de imagem codificada de sub-imagem, sinalizados em parâmetros HRD. A unidade de codificação por entropia 56 e/ou outros elementos do codificador de vídeo 20 também podem adicionar elementos de sintaxe tal como mensagens SEI de período de armazenamento, sinalizando parâmetros VUI, sinalizando dados indicativos de pontos de entrada para várias sub-imagens, e/ou momentos de remoção de armazenamento para unidades de decodificação, por exemplo.
[0190] A unidade de quantização inversa 58 e a unidade de transformação inversa 60 aplicam a quantização inversa e a transformação inversa, respectivamente, para reconstruir o bloco residual no domínio de pixel, por exemplo, para uso posterior como um bloco de referência. A unidade de compensação de movimento 44 pode calcular um bloco de referência pela adição do bloco residual a um bloco de previsão de um dos quadros da memória de imagem de referência 64. A unidade de compensação de movimento 44 também pode aplicar um ou mais filtros de interpolação ao bloco residual reconstruído para calcular os valores de pixel de sub-inteiro para uso na estimativa de movimento. O somador 62 adiciona o bloco residual reconstruído ao bloco de previsão de movimento compensado produzido pela unidade de compensação de movimento 44 para produzir um bloco de vídeo reconstruído para armazenamento na memória de imagem de referência 64. O bloco de vídeo reconstruído pode ser utilizado pela unidade de estimativa de movimento 42 e a unidade de compensação de movimento 44 como um bloco de referência para intercodificar um bloco em um quadro de vídeo subsequente.
[0191] A memória de imagem de referência 64 pode incluir o buffer 90. O buffer 90 pode ser ou incluir ou ser incluído em um dispositivo de armazenamento de dados tal como qualquer memória permanente ou volátil capaz de armazenar dados, tal como a memória de acesso randômico dinâmica sincronizada (SDRAM), a memória de acesso randômico dinâmica embutida (eDRAM), ou a memória de acesso randômico estática (SRAM). O buffer 90 pode incluir buffers de imagem e/ou buffers de imagem decodificados e pode operar de acordo com qualquer combinação de comportamentos de buffer de imagem codificada ilustrativo e/ou buffer de imagem decodificada descritos nessa descrição. Por exemplo, o codificador de vídeo 20 pode realizar o gerenciamento do padrão de bloco decodificado (DPB) utilizando o buffer 90 e/ou o gerenciamento de padrão de bloco codificado (CPB) do buffer de imagem codificado 82 de acordo com as técnicas dessa descrição.
[0192] O buffer de imagem codificada 92 pode ser ou incluir ou ser incluído em um dispositivo de armazenamento de dados tal como qualquer memória permanente ou volátil capaz de armazenar dados, tal como memória de acesso randômico dinâmica sincronizada (SDRAM), memória de acesso randômico dinâmica embutida (eDRAM), ou memória de acesso randômico estática (SRAM). Apesar de ilustrado como fazendo parte do codificador de vídeo 20, em alguns exemplos, o buffer de imagem codificada 92 pode fazer parte de um dispositivo, unidade, ou módulo externo ao codificador de vídeo 20. Por exemplo, o buffer de imagem codificada 92 pode fazer parte de uma unidade de programador de sequência (ou programador de distribuição ou programador de sequência hipotética (HSS)) externo ao codificador de vídeo 20. O codificador de vídeo 20 pode formar unidades de decodificação a partir de dados de vídeo codificados e fornecer unidades de decodificação para a unidade de programador de sequência. O codificador de vídeo 20 pode formar as unidades de decodificação com números variáveis de bits ou números variáveis de blocos, em alguns exemplos. A unidade de programador de sequência pode implementar as técnicas dessa descrição para enviar as unidades de decodificação, incluindo sub-imagens, tal como uma sequência de blocos de árvore, uma ou mais fatias, uma ou mais ondas, e/ou um ou mais tiles, para um decodificador de vídeo para decodificação, em momentos que podem ser indicados por um tempo de remoção de buffer obtido (por exemplo, sinalizado). O codificador de vídeo 20 pode formar unidades de decodificação para incluir um número de blocos de codificação dispostos continuamente na ordem de decodificação, em alguns exemplos. A unidade de programador de sequência pode desencapsular adicionalmente as unidades de acesso para extrair uma ou mais unidades de camada de abstração de rede (NAL) incluindo as unidades de decodificação. Da mesma forma, a unidade de programador de sequência pode desencapsular as unidades NAL para extrair as unidades de decodificação.
[0193] O codificador de vídeo 20 pode armazenar unidades de acesso a e remover unidades de acesso do buffer de imagens codificadas 92 de acordo com o comportamento do decodificador de referência hipotético (HRD) como modificado pelas técnicas dessa descrição. O codificador de vídeo 20 pode aplicar parâmetros HRD incluindo retardo de remoção CPB inicial, tamanho de CPB, taxa de bit, retardo de saída DPB inicial, e tamanho de DPB, além de momentos de remoção de armazenamento para as unidades de decodificação, e valores para os indicadores preferidos de buffer de imagem codificada de sub-imagem para sinalizar se as unidades de decodificação dos dados de vídeo são unidades de acesso ou subconjuntos de unidades de acesso, por exemplo. O codificador de vídeo 20 pode formar mensagens SEI nas unidades de acesso que sinalizam períodos de armazenamento e momentos de remoção de buffer para as unidades de decodificação. Por exemplo, o codificador de vídeo 20 pode fornecer parâmetros de informação de capacidade de utilização de vídeo (VUI) com sintaxe que inclui um indicador CPB de sub-imagem, tal como no exemplo da Tabela 1 acima.
[0194] As unidades de decodificação podem incluir sub-imagens de uma imagem comum, e o codificador de vídeo 20 pode incluir momentos de remoção de armazenamento para cada uma das sub-imagens da imagem comum nas mensagens SEI para as unidades de acesso. As diferentes sub-imagens podem ser codificadas com quantidades diferentes de dados, com algumas sub-imagens sendo codificadas em números diferentes de bits ou blocos, e o codificador de vídeo 20 pode formar um tempo de remoção de buffer respectivo correspondente para cada uma das sub-imagens de uma imagem em comum. O codificador de vídeo 20 também pode codificar algumas imagens com sub-imagens do mesmo tamanho de dados. Outros componentes também podem realizar uma ou mais das funções descritas acima para o codificador de vídeo 20. Por exemplo, uma unidade de encapsulamento de um dispositivo fonte (tal como um dispositivo fonte 12 da figura 1) também pode formar mensagens SEI que incluem qualquer um dos parâmetros acima.
[0195] Portanto, o codificador de vídeo 20 pode fornecer que cada sub-imagem possa incluir um número de blocos de codificação de uma imagem codificada contínua na ordem de decodificação, e de modo que um bloco de codificação possa ser idêntico a um bloco de árvore ou um subconjunto de um bloco de árvore. O codificador de vídeo 20 pode fornecer que a codificação de sub-imagens e alocação de bits para sub-imagens diferentes em uma imagem possam ser realizados sem precisar que cada sub-imagem (isso é, grupo de bloco de árvore) em uma imagem seja codificada com a mesma quantidade de bits. O codificador de vídeo 20 pode sinalizar o tempo de remoção de CPB para cada sub-imagem na sequência de bits, ao invés de momentos de remoção CPB serem derivados de acordo com os momentos de remoção CPB de nível de imagem sinalizados. O codificador de vídeo 20 também pode incluir mais de uma sub-imagem em uma fatia, e aplicar o alinhamento de byte no final de cada sub-imagem. O codificador de vídeo 20 também pode sinalizar o ponto de entrada de cada sub-imagem com um valor que indica o alinhamento de byte de pelo menos uma das sub- imagens dentro de um conjunto maior de dados de vídeo, tal como uma fatia, um tile, ou um quadro, por exemplo. O codificador de vídeo 20 pode aplicar qualquer uma ou mais dessas características em exemplos diferentes de acordo com essa descrição.
[0196] As localizações ilustradas para a memória de imagem de referência 64, o buffer 90 e o buffer de imagem codificada 92 na figura 2 servem à finalidade ilustrativa. A memória de imagem de referência 64, o buffer 90, e o buffer de imagem codificada 92 podem ser localizados em um único dispositivo de armazenamento ou qualquer número de dispositivos de armazenamento distintos. Os dispositivos de armazenamento podem incluir qualquer combinação de mídia legível por computador volátil e/ou não volátil.
[0197] Dessa forma, o codificador de vídeo 20 representa um exemplo de um codificador de vídeo configurado para armazenar uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem, obter um tempo de remoção de buffer respectivo para 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 os dados de vídeo correspondendo às unidades de decodificação removidas, entre outras funções.
[0198] A figura 3 é um diagrama de blocos ilustrando um exemplo de decodificador de vídeo 30, que decodifica uma sequência de vídeo codificada. No exemplo da figura 3, o decodificador de vídeo 30 inclui uma unidade de decodificação por entropia 70, unidade de compensação de movimento 72, unidade de intrapedição 74, unidade de quantização inversa 76, unidade de transformação inversa 78, memória de imagem de referência 82, somador 80, buffer de imagem codificada 94 e buffer 96. O decodificador de vídeo 30 pode, em alguns exemplos, realizar uma passagem de decodificação geralmente alternada com relação à passagem de codificação descrita com relação ao codificador de vídeo 20 (figura 2). A unidade de compensação de movimento 72 pode gerar dados de previsão com base em vetores de movimento recebidos da unidade de decodificação por entropia 70.
[0199] A unidade de compensação de movimento 72 pode utilizar os vetores de movimento recebidos nessa sequência de bits para identificar um bloco de previsão em quadros de referência na memória de imagem de referência 82. A unidade de intrapedição 74 pode utilizar os modos de intrapedição recebidos na sequência de bits para formar um bloco d previsão a partir de blocos espacialmente adjacentes. A unidade de quantização inversa 76 quantiza de forma inversa, isso é, desquantiza, os coeficientes de bloco quantizado fornecidos na sequência de bits e decodificados pela unidade de decodificação por entropia 70. O processo de quantização inversa pode incluir um processo convencional, por exemplo, como definido pelo padrão de decodificação H.264. O processo de quantização inversa também pode incluir o uso de um parâmetro de quantização QPY calculado pelo codificador 20 para cada macrobloco para determinar um grau de quantização e, da mesma forma, um grau de quantização inversa que deve ser aplicado.
[0200] A unidade de transformação inversa 78 aplica uma transformação inversa, por exemplo, uma DCT inversa, uma transformação de inteiro inversa, ou um processo de transformação inversa conceitualmente similar, aos coeficientes de transformação a fim de produzir os blocos residuais no domínio de pixel. A unidade de compensação de movimento 72 produz os blocos de movimento compensado, possivelmente realizando a interpolação com base nos filtros de interpolação. Identificadores para os filtros de interpolação a serem utilizados para a estimativa de movimento com precisão de subpixel podem ser incluídos nos elementos de sintaxe. A unidade de compensação de movimento 72 pode utilizar filtros de interpolação como utilizado pelo codificador de vídeo 20 durante a codificação do bloco de vídeo para calcular os valores interpolados para os pixels sub-inteiro de um bloco de referência. A unidade de compensação de movimento 72 pode determinar os filtros de interpolação utilizados pelo codificador de vídeo 20 de acordo com a informação de sintaxe recebida e utilizar os filtros de interpolação para produzir os blocos de previsão.
[0201] A unidade de compensação de movimento 72 utiliza parte da informação de sintaxe para determinar os tamanhos dos macroblocos utilizados para codificar os quadros da sequência de vídeo codificada, informação de partição que descreve como cada macrobloco de um quadro de sequência de vídeo codificada é dividido, modos indicando como cada partição é codificada, um ou mais quadros de referência (e listas de quadros de referência) para cada macrobloco intercodificado ou partição, e outras informações para decodificar a sequência de vídeo codificada. O somador 80 soma os blocos residuais com os blocos de previsão correspondentes gerados pela unidade de compensação de movimento 72 ou unidade de intrapedição para formar os blocos decodificados.
[0202] A memória de imagem de referência 82 pode incluir o buffer 96. O buffer 96 pode ser ou incluir um dispositivo de armazenamento de dados tal como qualquer memória permanente ou volátil capaz de armazenar dados, tal como a memória de acesso randômico dinâmica sincronizada (SDRAM), memória de acesso randômico dinâmica embutida (eDRAM), ou memória de aceso randômico estática (SRAM). O armazenamento 96 pode incluir um ou mais buffers de imagem e/ou um ou mais buffers de imagem decodificada e podem operar de acordo com qualquer combinação de comportamentos de buffer de imagem codificada ilustrativo e/ou buffer de imagem decodificada descritos nessa descrição. Por exemplo, o codificador de vídeo 30 pode realizar o gerenciamento DPB utilizando o buffer 96 e/ou o gerenciamento CPB do buffer de imagem codificada 94 de acordo com as técnicas dessa descrição.
[0203] O buffer de imagem codificada 94 pode ser implementado como um dispositivo de armazenamento de dados tal como qualquer memória permanente ou volátil capaz de armazenar dados, tal como a memória de acesso randômico dinâmica (SDRAM), a memória de aceso randômico dinâmica embutida (eDRAM), ou a memória de acesos randômico estática (SRAM). O buffer de imagem codificada 94 pode operar de acordo com qualquer combinação dos comportamentos de buffer de imagem codificada ilustrativos descritos aqui.
[0204] Apesar de ilustrado como fazendo parte do decodificador de vídeo 30, em alguns exemplos, o buffer de imagem codificada 94 pode formar parte de um dispositivo, unidade, ou módulo externo ao decodificador de vídeo 30. Por exemplo, o buffer de imagem codificada 94 pode fazer parte de uma unidade de programador de sequência externa ao decodificador de vídeo 30. A unidade de programador de sequência pode implementar as técnicas dessa descrição para enviar as unidades de decodificação incluindo as sub- imagens, tal como uma sequência de blocos de árvore, uma ou mais fatias, uma ou mais ondas, e/ou um ou mais tiles para o decodificador de vídeo 30 para decodificação nos momentos indicados por um tempo de remoção de buffer obtido (por exemplo, sinalizado). A unidade de programador de sequência pode desencapsular adicionalmente as unidades de acesso para extrair uma ou mais unidades de camada de abstração de rede (NAL) incluindo as unidades de decodificação. Da mesma forma, a unidade de programador de sequência pode desencapsular as unidades NAL para extrair as unidades de decodificação.
[0205] O decodificador de vídeo 30 pode receber e armazenar as unidades de acesso para e remover as unidades de acesso do buffer de imagem codificada 94 de acordo com o comportamento do decodificador de referência hipotética (HRD) como modificado pelas técnicas dessa descrição. O decodificador de vídeo 30 pode decodificar e obter parâmetros HRD incluindo retardo de remoção CPB inicial, tamanho de CPB, taxa de bit, retardo de envio DPB inicial, e tamanho DPB, além de momentos de remoção de buffer para as unidades de decodificação, e valores para indicadores preferidos de armazenamento de imagem codificada de sub- imagem que sinalizam se as unidades de decodificação de dados de vídeo são unidades de acesso ou subconjuntos de unidades de acesso, por exemplo. O decodificador de vídeo 30 pode decodificar e obter mensagens SEI nas unidades de acesso que sinalizam períodos de armazenamento e momentos de remoção de armazenamento para unidades de decodificação. Por exemplo, o decodificador de vídeo 30 pode decodificar e obter os parâmetros de informação de capacidade de utilização de vídeo (VUI) com sintaxe que inclui um indicador CPB de sub-imagem, tal como no exemplo da Tabela 1 acima.
[0206] As unidades de decodificação podem incluir sub-imagens de uma imagem comum, e decodificador de vídeo 30 pode decodificar e obter os momentos de remoção de buffer para cada uma das sub-imagens da imagem comum nas mensagens SEI para as unidades de acesso. As diferentes sub-imagens podem ser codificadas com quantidades diferentes de dados, com algumas sub-imagens sendo codificadas em números diferentes de bits ou blocos, e o decodificador de vídeo 30 pode decodificar e obter um tempo de remoção de buffer respectivo correspondente para cada uma das sub-imagens de uma imagem comum. O decodificador de vídeo 30 também pode decodificar e obter algumas imagens com sub-imagens do mesmo tamanho de dados.
[0207] Portanto, o decodificador de vídeo 30 pode decodificar e obter sub-imagens que podem incluir um número de blocos de codificação de uma imagem codificada contínua na ordem de decodificação, e de modo que um bloco de codificação possa ser idêntico a um bloco de árvore ou um subconjunto de um bloco de árvore. O decodificador de vídeo 30 pode, em alguns exemplos, decodificar e obter momentos de remoção CPB para cada sub-imagem na sequência de bits, ao invés de derivar os momentos de remoção CPB de acordo com os momentos de remoção CPB de nível de imagem sinalizados. O decodificador de vídeo 30 também pode decodificar e obter mais de uma sub-imagem em uma fatia, e pode receber a informação de desvio de byte indicativa dos pontos iniciais para cada unidade de decodificação, para determinar onde cada unidade de decodificação começa, e decodifica e obtém a informação sobre o sinal de não dados adicional ou sinal de enchimento que fornece o alinhamento de byte no final de cada sub-imagem. O decodificador de vídeo 30 pode obter também o ponto de entrada de cada sub- imagem com um valor que indica o alinhamento de byte de pelo menos uma das sub-imagens dentro de um conjunto maior de dados de vídeo, tal como uma fatia, um tile, ou um quadro, por exemplo. O decodificador de vídeo 30 pode aplicar qualquer uma ou mais dessas características em exemplos diferentes de acordo com essa descrição.
[0208] As localizações ilustradas para a memória de imagem de referência 82, o buffer 96, e o buffer de imagem codificada 94 na figura 3 servem finalidades ilustrativas. A memória de imagem de referência 82, o buffer 96, e o buffer de imagem codificada 94 podem ser localizados em um único dispositivo de armazenamento ou qualquer número de dispositivos de armazenamento distintos. Os dispositivos de armazenamento podem incluir qualquer combinação de meio legível por computador volátil e/ou não volátil.
[0209] Dessa forma, o decodificador de vídeo 30 representa um exemplo de um codificador de vídeo configurado para armazenar uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem, obter um tempo de remoção de armazenamento respectivo para 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 os dados de vídeo correspondentes às unidades de decodificação removidas.
[0210] A figura 4 é um diagrama de blocos ilustrando um dispositivo de destino ilustrativo 100 que pode implementar toda ou qualquer uma das técnicas dessa descrição. Nesse exemplo, o dispositivo de destino 100 inclui a interface de entrada 102, o programador de sequencia 104, o buffer de imagem codificada 106, o decodificador de vídeo 108, o buffer de imagem decodificada 110, a unidade de criação 112, e a interface de saída 114. O dispositivo de destino 100 pode corresponder substancialmente ao dispositivo de destino 14 (figura 1). A interface de entrada 102 pode compreender qualquer interface de entrada capaz de receber uma sequência de bits codificada de dados de vídeo. Por exemplo, a interface de entrada 102 pode compreender um receptor 26 e/ou um modem 28 como na figura 1, uma interface de rede, tal como uma interface com ou sem fio, uma memória ou interface de memória, um acionador para leitura de dados a partir de um disco, tal como uma interface de acionamento ótico ou interface de mídia magnética ou outro componente de interface.
[0211] A interface de entrada 102 pode receber uma sequência de bits codificada incluindo dados de vídeo e fornecer a sequência de bits para o programador de sequência 104. De acordo com as técnicas dessa descrição, o programador de sequência 104 extrai unidades de dados de vídeo, tal como unidades de acesso e/ou unidades de decodificação, a partir da sequência de bits e armazena as unidades extraídas no buffer de imagem codificada 106. Dessa forma, o programador de sequência 104 representa uma implementação ilustrativa de um HSS como discutido nos exemplos acima. O buffer de imagem codificada 106 pode se conformar substancialmente ao buffer de imagem codificada 94 (figura 3), exceto que como ilustrado na figura 4, o buffer de imagem codificada 106 é separado do decodificador de vídeo 108. O buffer de imagem codificada 106 pode ser separado de ou integrado como parte do decodificador de vídeo 108 em exemplos diferentes.
[0212] O decodificador de vídeo 108 inclui o buffer de imagem decodificada 110. O decodificador de vídeo 108 pode se conformar substancialmente ao decodificador de vídeo 30 das figuras 1 e 2. O buffer de imagem decodificada 110 pode se conformar substancialmente ao buffer 96. Dessa forma, o decodificador de vídeo 108 pode decodificar as unidades de decodificação do buffer de imagem codificada 106 de acordo com as técnicas dessa descrição.
[0213] Ademais, o decodificador de vídeo 108 pode enviar as imagens decodificadas a partir do buffer de imagem decodificada 110 de acordo com as técnicas dessa descrição, como discutido acima. O decodificador de vídeo 108 pode passar as imagens enviadas para a unidade de criação 112. A unidade de criação 112 pode trabalhar as imagens como discutido acima de acordo com as técnicas dessa descrição, então passar as imagens trabalhadas para a interface de envio 114. A interface de envio 114, por sua vez, pode fornecer as imagens trabalhadas para um dispositivo de exibição, que pode se conformar substancialmente ao dispositivo de exibição 32. O dispositivo de exibição pode formar parte do dispositivo de destino 100, ou pode ser acoplado de forma comunicativa ao dispositivo de destino 100. Por exemplo, o dispositivo de exibição pode compreender uma tela, uma tela de toque, um projetor, ou outra unidade de exibição integrada ao dispositivo de destino 100, ou pode compreender um monitor separado tal como uma televisão, monitor, projetor, tela de toque, ou outro dispositivo que é acoplado de forma comunicativa ao dispositivo de destino 100. O acoplamento comunicativo pode compreender um acoplamento com ou sem fio, tal como por um cabo coaxial, um cabo de vídeo composto, o cabo de vídeo de componente, um cabo de Interface de Multimídia de Alta Definição (HDMI), uma difusão de frequência de rádio, ou outro acoplamento com ou sem fio.
[0214] A figura 5 é um fluxograma que ilustra um método ilustrativo que inclui a remoção de unidades de decodificação de dados de vídeo a partir de um buffer de imagem de acordo com um tempo de remoção de buffer obtido, por exemplo, pelo decodificador de vídeo 30 das figuras 1 ou 3 ou o decodificador de vídeo 108 da figura 4 (coletivamente "decodificador de vídeo 30/108"), de acordo com técnicas dessa descrição. O método ilustrativo da figura 5 pode ser descrito como sendo realizado pelo decodificador de vídeo 30/108 como um exemplo, com a compreensão de que qualquer um ou mais aspectos do método da figura 5 também podem ser realizados por ou implementados com outros dispositivos ou componentes. No exemplo da figura 5, o decodificador de vídeo 30/108 pode armazenar uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem (202). O decodificador de vídeo 30/108 pode obter um tempo de remoção de armazenamento respectivo para uma ou mais unidades de decodificação, onde a obtenção do tempo de remoção de armazenamento respectivo compreende o recebimento de um valor sinalizado respectivo indicativo do tempo de remoção de armazenamento respectivo para pelo menos uma das unidades de decodificação (204). O decodificador de vídeo 30/108 pode remover as unidades de decodificação do buffer de imagem de acordo com o tempo de remoção de armazenamento obtido para cada uma das unidades de decodificação (206).O decodificador de vídeo 30/108 também pode codificar dados de vídeo correspondentes às unidades de decodificação removidas, onde a codificação de dados de vídeo compreende a decodificação de pelo menos uma das unidades de decodificação (208). O decodificador de vídeo 30/108 e/ou outros dispositivos ou elementos também podem realizar funções diferentes ou adicionais em outros exemplos.
[0215] A figura 6 é um fluxograma que ilustra outro método ilustrativo, similar em alguns aspectos ao método da figura 5, que inclui a remoção de unidades de decodificação de dados de vídeo a partir de um buffer de imagem de acordo com um tempo de remoção de armazenamento obtido, por exemplo, pelo decodificador de vídeo 30 das figuras 1 ou 3 ou decodificador de vídeo 108 da figura 4 (coletivamente "decodificador de vídeo 30/108"), de acordo com as técnicas dessa descrição. O método ilustrativo da figura 6 também pode ser descrito como sendo realizado pelo decodificador de vídeo 30/108 como um exemplo, com a compreensão de que qualquer um ou mais aspectos do método da figura 6 também podem ser realizados por ou implementados com outros dispositivos ou componentes. No exemplo da figura 6, o decodificador de vídeo 30/108 pode armazenar uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem codificada (CPB) (402), obter um tempo de remoção de buffer respectivo para uma ou mais unidades de decodificação (404), remover as unidades de decodificação do CPB de acordo com o tempo de remoção de buffer obtido para cada uma das unidades de decodificação (406), determinando se o CPB opera no nível de unidade de acesso ou nível de sub-imagem (408), e codificar os dados de vídeo correspondentes às unidades de decodificação removidas (410). Se o CPB operar no nível de unidade de acesso, a codificação de dados de vídeo inclui a codificação de unidades de acesso constituídas nas unidades de decodificação (412). Se o CPB operar no nível de sub- imagem, a codificação de dados de vídeo inclui a codificação de subconjuntos de unidades de acesso constituídas nas unidades de decodificação (414).
[0216] Por exemplo, se o decodificador de vídeo 30/108 determinar que o CPB opera no nível de unidade de acesso, o decodificador de vídeo 30/108 pode codificar as unidades de acesso de dados de vídeo correspondendo às unidades de decodificação removidas (412). Se o decodificador de vídeo 30/108 determinar que o CPB opera no nível de sub-imagem, o decodificador de vídeo 30/108 pode codificar os subconjuntos de unidades de acesso dos dados de vídeo correspondendo às unidades de decodificação removidas (414). Por exemplo, o decodificador de vídeo 30/108 pode determinar que uma ou mais unidades de decodificação compreendem as unidades de acesso pela determinação de que um indicador preferido de buffer de imagem codificada de sub-imagem (por exemplo, SubPicCpbPreferredFlag) é negativo ou possui um valor igual a zero, ou que um indicador de presença de parâmetros de armazenamento de imagem codificada de sub-imagem (por exemplo, sub_pic_cpb_params_present_flag) é negativo ou possui um valor igual a zero. O decodificador de vídeo 30/108 pode determinar que uma ou mais unidades de decodificação compreendem subconjuntos de unidades de acesso pela determinação de que ambos um indicador preferido de armazenamento de imagem codificada de sub- imagem (por exemplo, SubPicCpbPreferredFlag) é positivo ou possui um valor igual a um, e que um indicador de presença de parâmetros de buffer de imagem codificada de sub-imagem (por exemplo, um sub_pic_cpb_params_present_flag) é positivo ou possui um valor igual a um. O decodificador de vídeo 30/108 também pode utilizar um único indicador de buffer de imagem codificada de sub-imagem, SubPicCpbFlag, que pode ser configurado para SubPicCpbPreferredFlag && sub_pic_cpb_params_present_flag, para determinar se ambos os indicadores subjacentes são positivos e que o decodificador de vídeo 30/108 pode codificar os subconjuntos das unidades de acesso.
[0217] A figura 7 é um fluxograma que ilustra outro método ilustrativo de processamento de dados de vídeo que inclui o envio de uma imagem trabalhada em um processo de bumping, por exemplo, pelo decodificador de vídeo 30 das figuras 1 ou 3 ou decodificador de vídeo 108 da figura 4 (coletivamente "decodificador de vídeo 30/108"), de acordo com técnicas dessa descrição. No exemplo da figura 7, o decodificador de vídeo 30/108 pode realizar um processo de bumping se qualquer uma dentre determinadas condições forem correspondidas, como descrito acima com referência aos exemplos de processo de bumping. Em particular, o decodificador de vídeo 30/108 pode realizar um processo de bumping se uma imagem atual for uma imagem de atualização de decodificação instantânea (IDR) (302) e nenhum envio do indicador de imagens anteriores tiver um valor que não seja igual a um (304), o que pode incluir se nenhum envio de indicador de imagens anteriores possuir um valor que não é inferido como sendo igual a 1 ou configurado para ser igual a 1, por exemplo, pelo HRD. O decodificador de vídeo 30/108 também pode realizar um processo de bumping se um número de imagens em um buffer de imagens decodificadas (DPB) que são marcadas como necessárias para o envio for maior do que um número de imagens reordenadas em uma camada temporal atual (306). O decodificador de vídeo 30/108 também pode realizar um processo de bumping se um número de imagens no DPB com valores de identificador de camada temporal inferior a ou igual ao valor de identificador de camada temporal de uma imagem atual for igual a um valor de armazenamento de imagem máximo da camada temporal atual mais um (308).
[0218] Se qualquer uma das condições especificadas (302 e 304, ou 306 ou 308) for correspondida, o decodificador de vídeo 30/108 pode realizar um processo de bumping como segue. O decodificador de vídeo 30/108 pode selecionar uma imagem possuindo um valor de contagem de ordem de imagem menor (POC) de imagens no DPB e que é marcado como necessário para o envio como uma imagem selecionada (312). O decodificador de vídeo 30/108 pode trabalhar a imagem selecionada como especificado em um conjunto de parâmetros de sequência ativa para a imagem selecionada, gerando, assim, uma imagem trabalhada com base na imagem selecionada (314). O decodificador de vídeo 30/108 pode enviar a imagem trabalhada (316). O decodificador de vídeo 30/108 pode marcar a imagem selecionada como não necessária para envio (318).
[0219] 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 em ou transmitidas como uma ou mais instruções ou código em um meio legível por computador e executadas por uma unidade de processamento com base em hardware. O meio legível por computador pode incluir meio de armazenamento legível por computador, que corresponde a um meio tangível tal como o meio de armazenamento de dados, ou meio de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outro, por exemplo, de acordo com um protocolo de comunicação. Dessa forma, o meio legível por computador geralmente pode corresponder a (1) meio de armazenamento legível por computador tangível que é não transitório ou (2) um meio de comunicação tal como um sinal ou onda portadora. O meio de armazenamento de dados pode ser qualquer meio disponível que possa ser acessado por um ou mais computadores ou um ou mais processadores para recuperar as instruções, código e/ou estruturas de dados para implementação das técnicas descritas nessa descrição. Um produto de programa de computador pode incluir um meio legível por computador.
[0220] Por meio de exemplo, e não de limitação, tal meio de armazenamento legível por computador pode compreender, RAM, ROM, EEPROM, CD-ROM, ou outro armazenamento em disco ótico, armazenamento em disco magnético, ou outros dispositivos de armazenamento magnético, memória flash, ou qualquer outro meio que possa ser utilizado para armazenar código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Além disso, qualquer conexão é adequadamente chamada de meio legível por computador. Por exemplo, se instruções forem transmitidas a partir de um sítio da rede, servidor, ou outra fonte remota utilizando um cabo coaxial, um cabo de fibra ótica, um par torcido, linha de assinante digital (DSL), ou tecnologias sem fio tal como infravermelho, rádio e micro-ondas, então o cabo coaxial, o cabo de fibra ótica, o par torcido, DSL, ou tecnologias sem fio tal como infravermelho, rádio e microondas são incluídos na definição de meio. Deve-se compreender, no entanto, que meio de armazenamento legível por computador e meio de armazenamento de dados não incluem conexões, ondas portadoras, sinais ou outro meio transitório, mas, ao invés disso, são direcionados a meio de armazenamento tangível não transitório. Disquete e disco, como utilizados aqui, incluem disco compacto (CD), disco a laser, disco ótico, disco versátil digital (DVD), disquete e disco Blu-ray onde disquetes normalmente reproduzem os dados magneticamente, enquanto discos reproduzem os dados oticamente com lasers. As combinações do acima exposto também devem ser incluídas no escopo de meio legível por computador.
[0221] Instruções podem ser executadas por um ou mais processadores, tal como um ou mais processadores de sinal digital (DSPs), microprocessadores de finalidade geral, circuitos integrados específicos de aplicativo (ASICs), conjuntos lógicos programáveis em campo (FPGAs), ou outros conjuntos de circuitos lógicos integrados ou discretos equivalentes. De acordo, o termo "processador", como utilizado aqui pode se referir a qualquer estrutura acima ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui. Adicionalmente, em alguns aspectos, a funcionalidade descrita aqui pode ser fornecida dentro de hardware dedicado e/ou módulos de software configurados para codificar e decodificar, ou incorporados em um codec combinado. Além disso, as técnicas podem ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0222] As técnicas dessa descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um conjunto de chip). Vários componentes, módulos, ou unidades são descritos nessa descrição para enfatizar os aspectos funcionais dos dispositivos configurados para realizar as técnicas descritas, mas não exigem necessariamente a realização por unidades de hardware diferentes. Ao invés disso, como descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por uma coleção de unidades de hardware interoperacionais, incluindo um ou descrito acima, em conjunto com adequado.
[0223] Vários exemplos foram descritos. Esses e outros exemplos estado dentro do escopo das reivindicações a seguir.

Claims (15)

1. Método para codificação de dados de vídeo, o método caracterizado pelo fato de que compreende: armazenar uma ou mais unidades de decodificação de dados de vídeo em um buffer de imagem codificado (CPB); obter um tempo de remoção de buffer respectivo para a uma ou mais unidades de decodificação; remover as unidades de decodificação do CPB de acordo com os tempos de remoção de buffer obtidos para cada uma das unidades de decodificação; determinar se o CPB opera no nível de unidade de acesso ou no nível de sub-imagem; e codificar dados de vídeo correspondendo às unidades de decodificação removidas, em que, se o CPB opera no nível de unidade de acesso, codificar os dados de vídeo compreende a codificação das unidades de acesso compreendidas nas unidades de decodificação; e em que, se o CPB opera em nível de sub-imagem, codificar os dados de vídeo compreende codificar subconjuntos de unidade de acesso compreendidas nas unidades de decodificação.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que determinar se o CPB opera no nível de unidade de acesso ou no nível de sub-imagem compreende: determinar que o CPB opera no nível de unidade de acesso se um sinalizador preferido de buffer de imagem codificado de sub-imagem tiver um valor zero ou se um sinalizador presente de parâmetros de buffer de imagem codificado de sub-imagem tiver um valor zero; e determinar que o CPB opera a nível de sub-imagem se o sinalizador preferido de buffer de imagem codificado de sub-imagem tiver um valor de um e o sinalizador presente de parâmetros de buffer de imagem codificado de sub-imagem tiver um valor de um.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que compreende ainda receber o valor para o sinalizador preferido de buffer de imagem codificado de sub-imagem.
4. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que compreende ainda definir um valor de zero para o sinalizador preferido de buffer de imagem codificado de sub-imagem se um valor para o sinalizador preferido de buffer de imagem codificado de sub-imagem não for recebido.
5. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que compreende ainda receber o valor para o sinalizador presente de parâmetros de buffer de imagem codificado de sub-imagem.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda: receber a uma ou mais unidades de decodificação de dados de vídeo em uma ordem de decodificação contínua; em que o armazenamento da uma ou mais unidades de decodificação de dados de vídeo no CPB compreende o armazenamento da uma ou mais unidades de decodificação de dados de vídeo na ordem de decodificação contínua no CPB.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que obter o tempo de remoção de buffer respectivo para a uma ou mais unidades de decodificação compreende receber um valor sinalizado indicativo respectivo do tempo de remoção de buffer respectivo para pelo menos uma das unidades de decodificação.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que o valor sinalizado indicativo do tempo de remoção de buffer para a pelo menos uma das unidades de decodificação compreende um valor sinalizado indicativo de uma série de unidades de camada de abstração de rede (NAL) compreendidas pela pelo menos uma das unidades de decodificação.
9. Dispositivo para codificação de dados de vídeo, o dispositivo caracterizado pelo fato de que compreende: meios para armazenar uma ou mais de unidades de decodificação de dados de vídeo em um buffer de imagem codificado (CPB); meios para obter um tempo de remoção de buffer respectivo para a uma ou mais unidades de decodificação; meios remover as unidades de decodificação do CPB de acordo com o tempo de remoção de buffer obtido para cada uma das unidades de decodificação; meios para determinar se o CPB opera no nível de unidade de acesso ou no nível de sub-imagem; e meios para codificar dados de vídeo correspondendo às unidades de decodificação removidas, em que, se o CPB opera no nível de unidade de acesso, os meios para codificar os dados de vídeo compreendem meios para codificar unidades de acesso compreendidas nas unidades de decodificação; e em que, se o CPB opera no nível de sub-imagem, os meios para codificar os dados de vídeo compreendem meios para codificar subconjuntos de unidade de acesso compreendidas nas unidades de decodificação.
10. Dispositivo, de acordo com a reivindicação 9, caracterizado pelo fato de que os meios para determinar se o CPB opera no nível de unidade de acesso ou no nível de sub-imagem compreendem: meios para determinar que o CPB opera no nível de unidade de acesso se um sinalizador preferido de um buffer de imagem codificado de sub-imagem tiver um valor zero ou se um sinalizador presente de parâmetros de buffer de imagem codificado de sub-imagem tiver um valor zero; e meios para determinar que o CPB opera no nível de sub-imagem se o sinalizador preferido de buffer de imagem codificado de sub-imagem tiver um valor de um e o sinalizador presente de parâmetros de buffer de imagem codificado de sub-imagem tiver um valor de um.
11. Dispositivo, de acordo com a reivindicação 10, caracterizado pelo fato de que compreende ainda: meios para receber o valor para o sinalizador preferido de buffer de imagem codificado de sub-imagem; meios para definir um valor de zero para o sinalizador preferido de buffer de imagem codificado de sub-imagem se um valor para o sinalizador preferido de buffer de imagem codificado de sub-imagem não for recebido; ou meios para receber o valor para o sinalizador presente de parâmetros de buffer de imagem codificado de sub-imagem.
12. Dispositivo, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende ainda: meios para receber a uma ou mais unidades de decodificação de dados de vídeo em uma ordem de decodificação contínua; em que os meios para armazenar a uma ou mais unidades de decodificação de dados de vídeo no CPB compreendem meios para armazenar a uma ou mais unidades de decodificação de dados de vídeo na ordem de decodificação contínua no CPB.
13. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que os meios para obter o tempo de remoção de buffer respectivo para a uma ou mais unidades de decodificação compreendem meios para receber um valor sinalizado indicativo respectivo do tempo de remoção de buffer respectivo para pelo menos uma das unidades de decodificação.
14. Aparelho, de acordo com a reivindicação 13, caracterizado pelo fato de que o valor sinalizado indicativo respectivo do tempo de remoção de buffer para a pelo menos uma das unidades de decodificação compreende um valor sinalizado indicativo de uma série de unidades de camada de abstração de rede (NAL) compreendidas pela pelo menos uma das unidades de decodificação.
15. Memória caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executadas por um computador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 8.
BR112014024850-8A 2012-04-04 2013-02-26 Armazenamento em buffer de vídeo de baixo retardo em codificação de vídeo BR112014024850B1 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261620266P 2012-04-04 2012-04-04
US61/620,266 2012-04-04
US201261641063P 2012-05-01 2012-05-01
US61/641,063 2012-05-01
US13/776,063 US9578326B2 (en) 2012-04-04 2013-02-25 Low-delay video buffering in video coding
US13/776,063 2013-02-25
PCT/US2013/027808 WO2013151634A1 (en) 2012-04-04 2013-02-26 Low-delay video buffering in video coding

Publications (3)

Publication Number Publication Date
BR112014024850A2 BR112014024850A2 (pt) 2017-06-20
BR112014024850A8 BR112014024850A8 (pt) 2021-06-22
BR112014024850B1 true BR112014024850B1 (pt) 2023-02-14

Family

ID=49292282

Family Applications (2)

Application Number Title Priority Date Filing Date
BR112014024849-4A BR112014024849B1 (pt) 2012-04-04 2013-02-26 Armazenamento em buffer de vídeo de baixo retardo em codificação de vídeo
BR112014024850-8A BR112014024850B1 (pt) 2012-04-04 2013-02-26 Armazenamento em buffer de vídeo de baixo retardo em codificação de vídeo

Family Applications Before (1)

Application Number Title Priority Date Filing Date
BR112014024849-4A BR112014024849B1 (pt) 2012-04-04 2013-02-26 Armazenamento em buffer de vídeo de baixo retardo em codificação de vídeo

Country Status (23)

Country Link
US (2) US9578326B2 (pt)
EP (2) EP2834975B1 (pt)
JP (3) JP6529904B2 (pt)
KR (2) KR101739633B1 (pt)
CN (2) CN104205849B (pt)
AU (3) AU2013244011B2 (pt)
BR (2) BR112014024849B1 (pt)
CA (2) CA2866665C (pt)
DK (1) DK2834975T3 (pt)
ES (2) ES2592182T3 (pt)
HK (2) HK1201112A1 (pt)
HU (2) HUE060226T2 (pt)
IL (2) IL234520A (pt)
MY (2) MY168712A (pt)
PH (2) PH12014502034B1 (pt)
PL (2) PL2834975T3 (pt)
PT (1) PT2834975T (pt)
RU (2) RU2633165C2 (pt)
SG (3) SG11201405544YA (pt)
SI (1) SI2834975T1 (pt)
TW (2) TWI549481B (pt)
WO (2) WO2013151634A1 (pt)
ZA (1) ZA201408023B (pt)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9578326B2 (en) 2012-04-04 2017-02-21 Qualcomm Incorporated Low-delay video buffering in video coding
CN104620584B (zh) 2012-04-13 2019-10-18 Ge视频压缩有限责任公司 可缩放数据流及网络实体
CA2870989C (en) * 2012-04-23 2018-11-20 Panasonic Intellectual Property Corporation Of America Encoding method, decoding method, encoding apparatus, decoding apparatus, and encoding and decoding apparatus
CN108769692B (zh) 2012-06-26 2022-05-24 Lg 电子株式会社 视频编码方法、视频解码方法和使用其的装置
SG11201408612TA (en) 2012-06-29 2015-01-29 Fraunhofer Ges Forschung Video data stream concept
US10110890B2 (en) * 2012-07-02 2018-10-23 Sony Corporation Video coding system with low delay and method of operation thereof
US9912941B2 (en) * 2012-07-02 2018-03-06 Sony Corporation Video coding system with temporal layers and method of operation thereof
US8989508B2 (en) * 2012-09-28 2015-03-24 Sharp Kabushiki Kaisha Electronic device for signaling a sub-picture buffer parameter
US9374585B2 (en) * 2012-12-19 2016-06-21 Qualcomm Incorporated Low-delay buffering model in video coding
CN109379603A (zh) 2013-04-07 2019-02-22 杜比国际公司 用信号通知输出层集的改变
US9591321B2 (en) * 2013-04-07 2017-03-07 Dolby International Ab Signaling change in output layer sets
WO2015008340A1 (ja) * 2013-07-16 2015-01-22 富士通株式会社 動画像符号化装置、動画像符号化方法、及び動画像復号装置ならびに動画像復号方法
EP3058747B1 (en) * 2013-10-15 2019-11-20 Nokia Technologies Oy Scalable video encoding and decoding using syntax element
US9794558B2 (en) 2014-01-08 2017-10-17 Qualcomm Incorporated Support of non-HEVC base layer in HEVC multi-layer extensions
CN105163120B (zh) * 2014-06-09 2018-09-25 浙江大学 一种假设解码器中输入码流缓冲区的输入和输出/从缓冲区获取数据的方法及装置、传输视频码流的方法
US10623755B2 (en) * 2016-05-23 2020-04-14 Qualcomm Incorporated End of sequence and end of bitstream NAL units in separate file tracks
CN115474043A (zh) * 2017-07-31 2022-12-13 韩国电子通信研究院 对图像编码和解码的方法及存储比特流的计算机可读介质
US10798402B2 (en) * 2017-10-24 2020-10-06 Google Llc Same frame motion estimation and compensation
CN111903134B (zh) * 2019-01-02 2023-09-12 Lg电子株式会社 通过使用帧间预测来处理视频信号的方法和装置
KR102648032B1 (ko) * 2019-01-09 2024-03-14 후아웨이 테크놀러지 컴퍼니 리미티드 비디오 코딩의 서브 픽처 레벨 지표 시그널링
CN111479111B (zh) * 2019-01-23 2024-04-09 华为技术有限公司 图像显示顺序的确定方法、装置和视频编解码设备
BR112021014857A2 (pt) * 2019-02-01 2021-10-05 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Decodificador e codificador de vídeo e seus métodos, aparelho de composição de vídeo, composição de vídeo e fluxo de dados
WO2020178126A1 (en) * 2019-03-01 2020-09-10 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Hypothetical reference decoder
CN110062130B (zh) * 2019-03-14 2021-06-08 叠境数字科技(上海)有限公司 基于预处理文件结构的千兆级像素视频渲染方法及装置
CN113994704B (zh) * 2019-06-18 2024-05-17 松下电器(美国)知识产权公司 编码装置、解码装置、编码方法和解码方法
WO2020256048A1 (ja) * 2019-06-18 2020-12-24 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
CN114845112B (zh) * 2019-09-24 2023-04-04 华为技术有限公司 后缀sei消息的可伸缩嵌套的方法、设备、介质、解码器和编码器
CN117676135A (zh) 2019-10-18 2024-03-08 北京字节跳动网络技术有限公司 子图片与环路滤波之间的相互影响
US20230049909A1 (en) * 2019-12-31 2023-02-16 Koninklijke Kpn N.V. Partial output of a decoded picture buffer in video coding
US20210306650A1 (en) * 2020-03-31 2021-09-30 Tencent America LLC Method for signaling subpicture partitioning in coded video stream
CR20230152A (es) 2020-05-22 2023-05-15 Ge Video Compression Llc Codificador de video, decodificador de video, métodos para codificar y decodificar y flujo de datos de video para realizar conceptos avanzados de codificación de video (divisional exp. n°2022-0589)
WO2021252525A1 (en) * 2020-06-08 2021-12-16 Bytedance Inc. Constraints of slice count in a coded video picture
US20220086457A1 (en) 2020-09-17 2022-03-17 Lemon Inc. Subpicture track referencing and processing
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 (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7532670B2 (en) 2002-07-02 2009-05-12 Conexant Systems, Inc. Hypothetical reference decoder with low start-up delays for compressed image and video
EP1518403A4 (en) 2002-07-02 2009-03-18 Conexant Systems Inc HYPOTHETIC REFERENCE DECODER FOR COMPRESSED PICTURES AND VIDEO
TWI249356B (en) * 2002-11-06 2006-02-11 Nokia Corp Picture buffering for prediction references and display
KR100855466B1 (ko) * 2004-01-27 2008-09-01 삼성전자주식회사 비디오 코딩 및 디코딩 방법, 및 이를 위한 장치
US20060002479A1 (en) * 2004-06-22 2006-01-05 Fernandes Felix C A Decoder for H.264/AVC video
JP4902358B2 (ja) 2004-12-02 2012-03-21 ソニー株式会社 符号化装置および方法、並びにプログラム
US8615038B2 (en) * 2004-12-06 2013-12-24 Nokia Corporation Video coding, decoding and hypothetical reference decoder
MX2007012564A (es) * 2005-04-13 2007-11-15 Nokia Corp Codificacion, almacenamiento y senalizacion de informacion de escalabilidad.
US7974341B2 (en) * 2005-05-03 2011-07-05 Qualcomm, Incorporated Rate control for multi-layer video design
CN101502096B (zh) 2006-08-10 2013-06-26 佳能株式会社 图像解码设备
TR201905670T4 (tr) * 2007-01-04 2019-05-21 Interdigital Madison Patent Holdings Yüksek düzey sözdiziminde iletilen çoklu görüntülü bilgi için yöntemler ve aparat.
US20100074340A1 (en) 2007-01-08 2010-03-25 Thomson Licensing Methods and apparatus for video stream splicing
GB0700381D0 (en) 2007-01-09 2007-02-14 Mitsubishi Electric Inf Tech Generalised Hypothetical Reference Decoder for Scalable Video Coding with Bitstream Rewriting
JP4823090B2 (ja) 2007-02-01 2011-11-24 パナソニック株式会社 画像符号化装置
US8254455B2 (en) 2007-06-30 2012-08-28 Microsoft Corporation Computing collocated macroblock information for direct mode macroblocks
KR101147943B1 (ko) * 2007-10-15 2012-05-23 퀄컴 인코포레이티드 스케일러블 비디오 코딩을 위한 개선된 향상 계층 코딩
JP4577357B2 (ja) * 2007-12-27 2010-11-10 ソニー株式会社 符号化装置及び方法、並びにプログラム
EP2314072B1 (en) * 2008-07-16 2014-08-27 SISVEL International S.A. Track and track-subset grouping for multi view video decoding.
WO2010021665A1 (en) 2008-08-20 2010-02-25 Thomson Licensing Hypothetical reference decoder
US20100128779A1 (en) 2008-11-14 2010-05-27 Chanchal Chatterjee Method and apparatus for splicing in a compressed video bitstream
JP5072893B2 (ja) * 2009-03-25 2012-11-14 株式会社東芝 画像符号化方法および画像復号化方法
US8724710B2 (en) * 2010-02-24 2014-05-13 Thomson Licensing Method and apparatus for video encoding with hypothetical reference decoder compliant bit allocation
CN102907096A (zh) 2010-05-10 2013-01-30 三星电子株式会社 用于发送和接收分层编码视频的方法和设备
JPWO2012017643A1 (ja) * 2010-08-06 2013-10-03 パナソニック株式会社 符号化方法、表示装置、及び復号方法
US20120075436A1 (en) * 2010-09-24 2012-03-29 Qualcomm Incorporated Coding stereo video data
US9578326B2 (en) 2012-04-04 2017-02-21 Qualcomm Incorporated Low-delay video buffering in video coding

Also Published As

Publication number Publication date
IL234569A (en) 2017-09-28
BR112014024849A8 (pt) 2021-06-22
HUE029350T2 (en) 2017-02-28
KR101739633B1 (ko) 2017-05-24
HK1203009A1 (en) 2015-10-09
RU2633165C2 (ru) 2017-10-11
TW201347553A (zh) 2013-11-16
CA2867024A1 (en) 2013-10-10
BR112014024850A2 (pt) 2017-06-20
CN104221387B (zh) 2018-06-26
US9565431B2 (en) 2017-02-07
US20130266076A1 (en) 2013-10-10
TWI543621B (zh) 2016-07-21
CN104205849B (zh) 2019-01-04
JP6377603B2 (ja) 2018-08-22
BR112014024850A8 (pt) 2021-06-22
SI2834975T1 (sl) 2016-10-28
CN104221387A (zh) 2014-12-17
CA2866665C (en) 2018-09-18
AU2017202638A1 (en) 2017-05-11
BR112014024849B1 (pt) 2023-02-14
JP2015515823A (ja) 2015-05-28
KR20150003236A (ko) 2015-01-08
PH12014502225A1 (en) 2015-01-12
RU2014143786A (ru) 2016-05-27
TWI549481B (zh) 2016-09-11
AU2013244011B2 (en) 2017-05-18
MY169717A (en) 2019-05-13
HK1201112A1 (en) 2015-08-21
WO2013151634A1 (en) 2013-10-10
SG11201405547TA (en) 2014-11-27
ZA201408023B (en) 2017-08-30
KR101794398B1 (ko) 2017-11-06
JP6529904B2 (ja) 2019-06-12
RU2014144282A (ru) 2016-05-27
PH12014502034A1 (en) 2014-11-24
MY168712A (en) 2018-11-29
SG11201405544YA (en) 2014-10-30
HUE060226T2 (hu) 2023-02-28
AU2013244011A1 (en) 2014-10-02
CA2867024C (en) 2018-08-14
JP2018093514A (ja) 2018-06-14
KR20150003235A (ko) 2015-01-08
EP2834975A1 (en) 2015-02-11
WO2013151635A1 (en) 2013-10-10
BR112014024849A2 (pt) 2017-06-20
SG10201608270VA (en) 2016-11-29
EP2834975B1 (en) 2016-06-15
PH12014502034B1 (en) 2014-11-24
EP2834974A1 (en) 2015-02-11
PT2834975T (pt) 2016-09-23
IL234520A (en) 2017-07-31
PL2834974T3 (pl) 2022-12-05
AU2017202638B2 (en) 2019-02-07
EP2834974B1 (en) 2022-09-21
US9578326B2 (en) 2017-02-21
TW201349872A (zh) 2013-12-01
AU2013244010A1 (en) 2014-10-02
CN104205849A (zh) 2014-12-10
ES2592182T3 (es) 2016-11-28
JP2015515822A (ja) 2015-05-28
ES2928690T3 (es) 2022-11-22
CA2866665A1 (en) 2013-10-10
DK2834975T3 (en) 2016-08-22
RU2630176C2 (ru) 2017-09-05
PH12014502225B1 (en) 2015-01-12
PL2834975T3 (pl) 2017-03-31
US20130266075A1 (en) 2013-10-10

Similar Documents

Publication Publication Date Title
AU2017202638B2 (en) Low-delay video buffering in video coding
BR112015006480B1 (pt) Método e dispositivo para determinar conformidade de fluxo de bits e memória legível por computador
BR112015006440B1 (pt) Indicação e ativação de conjuntos de parâmetros para codificação de vídeo
BR112015016361B1 (pt) Operações de armazenamento temporário de vídeo para acesso aleatório em codificação de vídeo
BR112014026745B1 (pt) Métodos para decodificar e codificar dados de vídeo, dispositivo de decodificação de vídeo para decodificar dados de vídeo e memória legível por computador
BR112015006059B1 (pt) Codificação de vídeo codm comportamentos [de imagem [de ponto [de acesso aleatório melhorados
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

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/44 (2014.01), H04N 19/46 (2014.01), H04N 1

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 26/02/2013, OBSERVADAS AS CONDICOES LEGAIS