BR122022001553B1 - Dispositivo de memória ou armazenamento legível por computador e método em um sistema de computador - Google Patents
Dispositivo de memória ou armazenamento legível por computador e método em um sistema de computador Download PDFInfo
- Publication number
- BR122022001553B1 BR122022001553B1 BR122022001553-0A BR122022001553A BR122022001553B1 BR 122022001553 B1 BR122022001553 B1 BR 122022001553B1 BR 122022001553 A BR122022001553 A BR 122022001553A BR 122022001553 B1 BR122022001553 B1 BR 122022001553B1
- Authority
- BR
- Brazil
- Prior art keywords
- value
- cpbrd
- picture
- image
- sei message
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 82
- 239000000872 buffer Substances 0.000 claims abstract description 40
- 230000003139 buffering effect Effects 0.000 claims abstract description 12
- 230000002123 temporal effect Effects 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 17
- 238000013138 pruning Methods 0.000 claims description 6
- 230000011664 signaling Effects 0.000 claims description 4
- 238000013459 approach Methods 0.000 abstract description 55
- 230000033001 locomotion Effects 0.000 description 38
- 230000006854 communication Effects 0.000 description 24
- 238000004891 communication Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 24
- 238000001914 filtration Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 11
- 238000013139 quantization Methods 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 241000023320 Luma <angiosperm> Species 0.000 description 5
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 238000003708 edge detection Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000000750 progressive effect Effects 0.000 description 3
- 230000000153 supplemental effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000003638 chemical reducing agent Substances 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 241001502919 Gambusia luma Species 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001373 regressive effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/23424—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44016—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for substituting a video clip
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/573—Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/58—Motion compensation with long-term prediction, i.e. the reference frame for a current frame not being the temporally closest one
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/14—Systems for two-way working
- H04N7/141—Systems for two-way working between two video terminals, e.g. videophone
- H04N7/147—Communication arrangements, e.g. identifying the communication as a video-communication, intermediate storage of the signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/14—Systems for two-way working
- H04N7/15—Conference systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/18—Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Marketing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- User Interface Of Digital Computer (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
A presente invenção refere-se a inovações em sintaxe e semântica de valores de atraso de remoção de armazenamento temporário de imagem codificada ("CPBRD") que potencialmente simplificam operações de união. Por exemplo, um codificador de vídeo define um valor de CPBRD para uma imagem atual que indica um valor de incremento relativo a um tempo nominal de remoção de armazenamento temporário de imagem codificada de uma imagem precedente em ordem de decodificação, independentemente de a imagem precedente ter uma mensagem de SEI de período de armazenamento temporário. O codificador pode sinalizar o valor de CPBRD de acordo com uma abordagem de valor único na qual um sinalizador indica como interpretar o valor de CPBRD, de acordo com uma abordagem de dois valores na qual outro valor de CPBRD (que tem uma interpretação diferente) também é sinalizado, ou de acordo com uma abordagem de dois valores que usa um sinalizador e um valor de delta. Um decodificador de vídeo correspondente recebe e analisa o valor de CPBRD para a imagem atual. Uma ferramenta de união pode realizar operações de concatenação simples para unir fluxos de bits com o uso do valor de CPBRD para a imagem atual.
Description
[001] Engenheiros usam compressão (também chamada cifragem de fonte ou codificação de fonte) para reduzir a taxa de bits de vídeo digital. A compressão reduz o custo de armazenamento e transmissão de informações de vídeo convertendo-se as informações em uma forma de taxa de bits mais baixa. A descompressão (também chamada de de- codificação) reconstrói uma versão das informações originais da forma comprimida. Um "codec" é um sistema codificador/ decodificador.
[002] Ao longo das duas últimas décadas, vários padrões de codec de vídeo têm sido adotados, incluindo os padrões ITU-T H.261, H.262 (MPEG-2 ou ISO/IEC 13818-2), H.263 e H.264 (MPEG-4 AVC ou ISO/IEC 14496-10) e os padrões MPEG-1 (ISO/IEC 11172-2), MPEG-4 Visual (ISO/IEC 14496-2) e SMPTE 421M (VC-1). Mais recentemente, o padrão HEVC (ITU-T H.265 ou ISO/IEC 23008-2) tem sido desenvolvido. Um padrão de codec de vídeo tipicamente define opções para a sintaxe de um fluxo de bits de vídeo codificado que detalham parâmetros no fluxo de bits quando recursos particulares são usados em codificação e decodificação. Em muitos casos, um padrão de codec de vídeo também fornece detalhes sobre as operações de decodificação que um decodificador deve realizar para alcançar resultados conformes em de- codificação. Além de padrões de codec, vários formatos proprietários de codec definem outras opções para a sintaxe de um fluxo de bits de vídeo codificado e operações de decodificação correspondentes.
[003] Um tipo de parâmetro em um fluxo de bits de vídeo codifi cado é atraso de remoção de armazenamento temporário de imagem codificada ("CPBRD"). Em geral, um valor de CPBRD para uma dada imagem especifica o tempo nominal no qual os dados codificados associados à imagem devem ser removidos de um armazenamento temporário no decodificador. Quando dados codificados para imagens são removidos nos tempos corretos, de acordo com modos normais de operação, o armazenamento temporário de decodificador não estoura (o que provocaria a perda de dados codificados) ou estoura negativamente (o que resultaria em "falhas" ou outra interrupção de reprodução contínua). Em modo de baixo atraso, estouro negativo é tolerado em algumas circunstâncias, mas sob o modo de não baixo atraso (tal como é tipicamente usado para difusão), estouro negativo de armazenamento temporário não é permitido. Um modelo de armazenamento temporário, convencionalmente chamado um decodificador de referência hipotética ("HRD") ou verificador de armazenamento temporário de vídeo ("VBV"), usa valores de CPBRD e outros parâmetros tais como valores de taxa, valores de tamanho de armazenamento temporário e valores de pleni-tude de armazenamento temporário ou valores de atraso de armazenamento temporário inicial (antes de a reprodução começar) para verificar que fluxos de bits podem ser decodificados dentro dos recursos de armazenamento temporário de um sistema de decodificação, e para ajudar um decodificador a determinar o sincronismo e etapas para operação de seu processo de decodificação.
[004] Em muitos contextos, fluxos de bits para sequências de ví deo diferentes são unidos. Por exemplo, essa união pode ser usada para inserir um comercial ou série de comerciais em um programa de televisão, ou para comutar entre programas de televisão diferentes. As abordagens existentes para sinalizar valores de CPBRD podem resultar em operações pesadas e potencialmente difíceis durante a união a fim de ajustar valores de CPBRD para levar em conta a união. Outro problema é que, embora dois fluxos fonte possam ser independentemente compatíveis com HRD, após a união, não é garantido que o fluxo unido resultante seja compatível com HRD.
[005] Em suma, a descrição detalhada apresenta inovações em sintaxe e/ou semântica de valores de atraso de remoção de armazenamento temporário de imagem codificada ("CPBRD") que simplificam operações de união. Em particular, as inovações suportam operações de união através de novas formas de sinalização de valores de CPBRD para certas imagens, em que esses valores de CPBRD podem simplesmente ser reutilizados quando um fluxo de bits ou parte de um fluxo de bits para uma sequência de vídeo é concatenado a outro fluxo de bits ou parte de outro fluxo de bits para outra sequência de vídeo.
[006] De acordo com um aspecto das inovações descritas no pre sente documento, um codificador de vídeo ou outra ferramenta define um valor de CPBRD para uma dada imagem de uma sequência de vídeo. O valor de CPBRD para a dada imagem indica um valor de incremento relativo a um tempo nominal de remoção de armazenamento temporário de imagem codificada ("CPB") de uma imagem precedente em ordem de decodificação, independentemente de a imagem precedente ter uma mensagem de SEI de período de armazenamento temporário ("BP SEI"). O codificador ou outra ferramenta então sinaliza o valor de CPBRD para a dada imagem. O valor de CPBRD pode ser sinalizado de acordo com uma abordagem de valor único na qual um sinalizador indica como interpretar o valor de CPBRD, de acordo com uma abordagem de dois valores na qual outro valor de CPBRD (que tem uma interpretação diferente) também é sinalizado, de acordo com uma abordagem de dois valores que usa um sinalizador e um valor de delta, ou de acordo com outra abordagem.
[007] De acordo com outro aspecto das inovações descritas no presente documento, um decodificador de vídeo ou outra ferramenta recebe um valor de CPBRD para uma dada imagem de uma sequência de vídeo. O valor de CPBRD para a dada imagem indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação, independentemente de a imagem precedente ter uma mensagem de SEI de BP. O decodifi- cador de vídeo ou outra ferramenta então analisa o valor de CPBRD para a dada imagem. O valor de CPBRD pode ser sinalizado de acordo com uma abordagem de valor único na qual um sinalizador indica como interpretar o valor de CPBRD, de acordo com uma abordagem de dois valores na qual outro valor de CPBRD (que tem uma interpretação diferente) também é sinalizado, de acordo com uma abordagem de dois valores que usa um sinalizador e um valor de delta, ou de acordo com outra abordagem.
[008] De acordo com outro aspecto das inovações descritas no presente documento, uma ferramenta de união recebe pelo menos parte de um primeiro fluxo de bits para uma primeira sequência de vídeo e também recebe pelo menos parte de um segundo fluxo de bits para uma segunda sequência de vídeo. Um valor de CPBRD para uma dada imagem da segunda sequência de vídeo indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação, independentemente de a imagem precedente ter uma mensagem de SEI de BP. A ferramenta de união une pelo menos parte da segunda sequência de vídeo a pelo menos parte da primeira sequência de vídeo. Como parte da união, a ferramenta de união concatena toda ou parte da segunda sequência de vídeo, que inicia na dada imagem, a pelo menos parte da primeira se-quência de vídeo. O valor de CPBRD pode ser sinalizado de acordo com uma abordagem de valor único na qual um sinalizador indica como interpretar o valor de CPBRD, de acordo com uma abordagem de dois valores na qual outro valor de CPBRD (que tem uma interpretação diferente) também é sinalizado, de acordo com uma abordagem de dois valores que usa um sinalizador e um valor de delta, ou de acordo com outra abordagem.
[009] A codificação, decodificação ou união podem ser implanta das como parte de um método, como parte de um dispositivo de computação adaptado para realizar o método ou como parte de uma mídia legível por computador tangível que armazena instruções executáveis por computador para fazer com que um dispositivo de computação realize o método.
[0010] O supra referenciado e outros objetivos, recursos, e vanta gens da invenção ficarão mais evidentes a partir da descrição detalhada a seguir, que prossegue com referência às figuras anexas.
[0011] A Figura 1 é um diagrama de um sistema de computação exemplificativo no qual algumas modalidades descritas podem ser im-plantadas.
[0012] As Figuras 2a e 2b são diagramas de ambientes de rede exemplificativos nos quais algumas modalidades descritas podem ser implantadas.
[0013] A Figura 3 é um diagrama de um sistema codificador exem- plificativo em combinação com o qual algumas modalidades descritas podem ser implantadas.
[0014] A Figura 4 é um diagrama de um sistema decodificador exemplificativo em combinação com o qual algumas modalidades descritas podem ser implantadas.
[0015] A Figura 5 é um diagrama que ilustra um codificador de vídeo exemplificativo em combinação com o qual algumas modalidades descritas podem ser implantadas.
[0016] A Figura 6 é um diagrama que ilustra um exemplo decodifi- cador de vídeo em combinação com o qual algumas modalidades descritas podem ser implantadas.
[0017] A Figura 7 é um diagrama que ilustra operações de união de acordo com abordagens anteriores para ajustar valores de CPBRD.
[0018] As Figuras 8 e 9 são tabelas que ilustram sintaxe para uma abordagem de valor único para sinalizar valores de CPBRD.
[0019] A Figura 10 é um gráfico que ilustra plenitude de armazena mento temporário quando dois fluxos de bits são unidos.
[0020] A Figura 11 é uma tabela que ilustra sintaxe para uma abor dagem de dois valores para sinalizar valores de CPBRD, com o uso de um sinalizador e um valor de delta.
[0021] A Figura 12 é um fluxograma que ilustra uma técnica gene ralizada para definir valores de CPBRD durante codificação para simplificar a união de vídeo.
[0022] A Figura 13 é um fluxograma que ilustra uma técnica exem- plificativa para definir valores de CPBRD durante codificação para simplificar a união de vídeo de acordo com uma abordagem de valor único.
[0023] A Figura 14 é um fluxograma que ilustra uma técnica gene ralizada para processar valores de CPBRD durante a decodificação.
[0024] A Figura 15 é um fluxograma que ilustra uma técnica exem- plificativa para determinar valores de CPBRD durante a decodificação de acordo com uma abordagem de valor único.
[0025] A Figura 16 é um fluxograma que ilustra uma técnica gene ralizada para unir fluxos de bits.
[0026] A Figura 17 é um fluxograma que ilustra uma técnica exem- plificativa para definir valores de CPBRD durante a codificação para simplificar a união de vídeo de acordo com uma abordagem de dois valores com sinalizador e valor de delta.
[0027] A Figura 18 é um fluxograma que ilustra uma técnica exem- plificativa para determinar valores de CPBRD durante a decodificação de acordo com uma abordagem de dois valores com sinalizador e valor de delta.
[0028] A descrição detalhada apresenta várias abordagens para aprimorar suporte a operações de união ajustando-se a sintaxe e/ou semântica de valores de atraso de remoção de armazenamento temporário de imagem codificada ("CPBRD"). Em muitos casos, essas abordagens aliviam as deficiências das abordagens anteriores. Em particular, a descrição detalhada apresenta inovações para sintaxe e semântica de valores de CPBRD sinalizados em tipos de mensagens de informações de aprimoramento suplementares ("SEI") no padrão HEVC ou no padrão H.264/AVC. Em vários exemplos, sintaxe e/ou semântica de mensagens de SEI de período de armazenamento temporário ("BP SEI") e/ou mensagens de SEI de sincronismo de imagem ("PT SEI") é ajustado para facilitar operações de união.
[0029] Embora as operações descritas no presente documento se jam descritas em alguns locais como sendo realizadas por um codificador (por exemplo, codificador de vídeo), decodificador (por exemplo, de- codificador de vídeo) ou ferramenta de união (por exemplo, ferramenta de união de vídeo), em muitos casos as operações podem ser realizadas alternativamente por outro tipo de ferramenta de processamento de mídia.
[0030] Algumas das inovações descritas no presente documento são ilustradas com referência a elementos de sintaxe e operações específicas para o padrão HEVC. Por exemplo, é feita referência à versão preliminar JCTVC-K1003 do padrão HEVC- "High Efficiency Video Coding (HEVC) text specification draft 9", JCTVC-K1003_d13, 11a conferência, Xangai, 10 a 19 de outubro de 2012. As inovações descritas no presente documento também podem ser implantadas para outros padrões ou formatos, por exemplo, o padrão H.264/AVC.
[0031] De maneira mais geral, várias alternativas aos exemplos descritos no presente documento são possíveis. Por exemplo, alguns dos métodos descritos no presente documento podem ser alterados mudando-se a ordenação das ações do método descrito, dividindo-se, repetindo-se, ou omitindo-se certas ações do método, etc. Os vários aspectos da tecnologia descrita podem ser usados em combinação ou separadamente. Diferentes modalidades usam uma ou mais das inovações descritas. Algumas das inovações descritas no presente docu-mento endereçam um ou mais dos problemas observados nos antecedentes. Tipicamente, uma dada técnica/ferramenta não soluciona todos esses problemas.
[0032] A Figura 1 ilustra um exemplo generalizado de um sistema de computação adequado 100 no qual diversas das inovações descritas podem ser implantadas. O sistema de computação 100 não é destinado a sugerir qualquer limitação como ao escopo de uso ou funcionalidade, uma vez que as inovações podem ser implantadas em diversos sistemas de computação de propósito geral ou de propósito especial.
[0033] Com referência à Figura 1, o sistema de computação 100 inclui uma ou mais unidades de processamento 110, 115 e de memória 120, 125. As unidades de processamento 110, 115 executam instruções executáveis por computador. Uma unidade de processamento pode ser uma unidade de processamento central de propósito geral ("CPU"), processador em um circuito integrado específico à aplicação ("ASIC") ou qualquer outro tipo de processador. Em um sistema de multiprocessamento, múltiplas unidades de processamento executam instruções executáveis por computador para aumentar a potência de processamento. Por exemplo, a Figura 1 mostra uma unidade de processamento central (110) bem como uma unidade de processamento gráfico ou unidade de coprocessamento (115). A memória tangível 120, 125 pode ser memória volátil (por exemplo, registradores, cache, RAM), memória não volátil (por exemplo, ROM, EEPROM, memória flash, etc.), ou alguma combinação das duas, acessíveis pela(s) unidade(s) de processamento. A memória 120, 125 armazena software (180) que implantara uma ou mais inovações para codificação, decodificação e/ou união de vídeo com sintaxe e semântica para valores de CPBRD que simplificam a união de vídeo, na forma de instruções executáveis por computador adequadas para execução pela(s) unidade(s) de processamento.
[0034] Um sistema de computação pode ter recursos adicionais. Por exemplo, o sistema de computação 100 inclui armazenamento 140, um ou mais dispositivos de entrada 150, um ou mais dispositivos de saída 160, e uma ou mais conexões de comunicação 170. Um mecanismo de interconexão (não mostrado) tal como um barramento, controlador, ou rede interconecta os componentes do sistema de computação 100. Tipicamente, o software de sistema operacional (não mostrado) fornece um ambiente operacional para outro software executar no sistema de computação (100), e coordena as atividades dos componentes do sistema de computação 100.
[0035] O armazenamento tangível 140 pode ser removível ou não removível, e inclui discos magnéticos, fitas ou cassetes magnéticos, CD- ROMs, DVDs, ou qualquer outro meio que possa ser usado para armazenar informações e que possa ser acessado dentro do sistema de computação 100. O armazenamento 140 armazena instruções para o software (180) implantar uma ou mais inovações para codificação, decodi- ficação e/ou união de vídeo com sintaxe e semântica para valores de CPBRD que simplificam a união de vídeo.
[0036] O(s) dispositivo(s) de entrada 150 pode(m) ser um disposi tivo de entrada de toque tal como um teclado, mouse, caneta, ou trackball, um dispositivo de entrada de voz, um dispositivo de digitalização, ou outro dispositivo que forneça entrada para o sistema de computação 100. Para codificação de vídeo, o(s) dispositivo(s) de entrada 150 pode(m) ser uma câmera, placa de vídeo, placa de sintonizador de TV, ou dispositivo similar que aceite entrada de vídeo em forma analógica ou digital, ou um CD-ROM ou CD-RW que lê entrada de vídeo no sistema de computação 100. O(s) dispositivo(s) de saída 160 pode(m) ser um visor, impressora, alto-falante, gravador de CD, ou outro dispositivo que forneça saída do sistema de computação 100.
[0037] A(s) conexão(ões) de comunicação 170 permite(m) comuni cação sobre um meio de comunicação para outra entidade de computação. O meio de comunicação transporta informações tais como instruções executáveis por computador, entrada ou saída de áudio ou vídeo, ou outros dados em um sinal de dados modulado. Um sinal de dados modulado é um sinal que tem uma ou mais de suas características definidas ou mudadas de tal maneira a codificar informações no sinal. A título de exemplo, porém sem limitações, a mídia de comunicação pode usar uma portadora elétrica, óptica, RF ou outra.
[0038] As inovações podem ser descritas no contexto geral de mídia legível por computador. Mídia legível por computador é qualquer mídia tangível disponível que possa ser acessada dentro de um ambiente de computação. A título de exemplo, porém sem limitações, ao sistema de computação 100, a mídia legível por computador inclui memória 120, 125, armazenamento 140, e combinações de quaisquer dos acima.
[0039] As inovações podem ser descritas no contexto geral de ins truções executáveis por computador, tais como aquelas incluídas em módulos de programa, que são executados em um sistema de computação em um processador alvo real ou virtual. Em geral, os módulos de programa incluem rotinas, programas, bibliotecas, objetos, classes, componentes, estruturas de dados, etc. que realizam tarefas particulares ou implantam tipos de dados abstratos particulares. A funcionalidade dos módulos de programa pode ser combinada ou dividida entre módulos de programa como desejado em várias modalidades. Instruções executáveis por computador para módulos de programa podem ser executadas dentro de um sistema de computação local ou distri-buídas.
[0040] Os termos "sistema" e "dispositivo" são usados intercalada mente no presente documento. A menos que o contexto indique claramente em contrário, nenhum termo implica em qualquer limitação a um tipo de sistema de computação ou dispositivo de computação. Em geral, um sistema de computação ou dispositivo de computação pode ser local ou distribuído, e pode incluir qualquer combinação de hardware de propósito especial e/ou hardware de propósito geral com software que implanta a funcionalidade descrita no presente documento.
[0041] Os métodos descritos também podem ser implantados com o uso de hardware de computação especializado configurado para realizar qualquer dos métodos descritos. Por exemplo, os métodos descritos podem ser implantados por um circuito integrado (por exemplo, um circuito integrado específico à aplicação ("ASIC") tal como um processador de sinal digital ("DSP") ASIC, uma unidade de processamento gráfico ("GPU") ou um dispositivo lógico programável ("PLD") tal como um conjunto de portas programável no campo ("FPGA")) projetado ou configurado especialmente para implantar qualquer dos métodos descritos.
[0042] Para efeito de apresentação, a descrição detalhada usa ter mos como "determinar" e "usar" para descrever operações de computador em um sistema de computação. Esses termos são abstrações de alto nível para operações realizadas por um computador, e não devem ser confundidos com ações realizadas por um ser humano. As operações reais de computador correspondentes a esses termos variam dependendo da implantação.
[0043] As Figuras 2a e 2b mostram ambientes de rede exemplifica- tivos 201, 202 que incluem codificadores de vídeo 220 e decodificadores de vídeo 270. Os codificadores 220 e decodificadores 270 são conectados por uma rede (250) com o uso de um protocolo de comunicação apropriado. A rede (250) pode incluir a Internet ou outra rede de computador.
[0044] No ambiente de rede 201 mostrado na Figura 2a, cada ferra menta de comunicação em tempo real ("RTC") 210 inclui tanto um codificador 220 como um decodificador 270 para comunicação bidirecional. Um dado codificador 220 pode produzir saída compatível com o padrão SMPTE 421M, padrão ISO/IEC 14496-10 (também conhecido como H.264 ou AVC), padrão HEVC (também conhecido como H.265), outro padrão, ou um formato proprietário, com um decodificador correspondente 270 que aceita dados codificados do codificador 220. A comunicação bidirecional pode ser parte de uma videoconferência, chamada de telefone com vídeo, ou outro cenário de comunicação bicomparti- lhado ou multicompartilhado. Embora o ambiente de rede 201 na Figura 2a inclua duas ferramentas de comunicação em tempo real 210, o ambiente de rede 201 pode em vez disso incluir três ou mais ferramentas de comunicação em tempo real 210 que participam em comunicação multicompartilhada.
[0045] Uma ferramenta de comunicação em tempo real 210 geren cia codificação por um codificador 220. A Figura 3 mostra um sistema codificador exemplificativo (300) que pode ser incluído na ferramenta de comunicação em tempo real 210. Alternativamente, a ferramenta de co-municação em tempo real 210 usa outro sistema codificador. Uma ferramenta de comunicação em tempo real 210 também gerencia a deco- dificação por um decodificador 270. A Figura 4 mostra um sistema de- codificador exemplificativo 400, que pode ser incluído na ferramenta de comunicação em tempo real 210. Alternativamente, a ferramenta de comunicação em tempo real 210 usa outro sistema decodificador.
[0046] No ambiente de rede 202 mostrado na Figura 2b, uma ferra menta de codificação 212 inclui um codificador 220 que codifica vídeo para entrega para múltiplas ferramentas de reprodução 214, que incluem decodificadores 270. A comunicação unidirecional pode ser fornecida para um sistema de vídeo de vigilância, sistema de monitoramento por câmera de web, apresentação de conferência em computador de mesa remoto ou outro cenário no qual o vídeo seja codificado e enviado de uma localização para uma ou mais outras localizações. Em-bora o ambiente de rede 202 na Figura 2b inclua duas ferramentas de reprodução 214, o ambiente de rede 202 pode incluir mais ou menos ferramentas de reprodução 214. Em geral, uma ferramenta de reprodução 214 se comunica com a ferramenta de codificação 212 para determinar um fluxo de vídeo para a ferramenta de reprodução 214 receber. A ferramenta de reprodução 214 recebe o fluxo, armazena temporaria-mente os dados recebidos codificados por um período apropriado, e começa a decodificação e reprodução.
[0047] A Figura 3 mostra um sistema codificador exemplificativo 300 que pode ser incluído na ferramenta de codificação 212. Alternativamente, a ferramenta de codificação 212 usa outro sistema codificador. A ferramenta de codificação 212 também pode incluir lógica de controlador do lado do servidor para gerenciar conexões com um ou mais ferramentas de reprodução 214. A Figura 4 mostra um sistema decodifica- dor exemplificativo 400, que pode ser incluído na ferramenta de reprodução 214. Alternativamente, a ferramenta de reprodução 214 usa outro sistema decodificador. Uma ferramenta de reprodução 214 também pode incluir lógica de controlador do lado cliente para gerenciar conexões com a ferramenta de codificação 212.
[0048] O ambiente de rede 201 mostrado na Figura 2a pode incluir múltiplas ferramentas de RTC com múltiplos codificadores. O ambiente de rede 202 mostrado na Figura 2b pode incluir múltiplas ferramentas de codificação com múltiplos codificadores. Esses codificadores podem produzir múltiplos fluxos de bits de saída que são unidos por uma ferramenta de união em um único fluxo de bits. Ou um único codificador pode produzir múltiplos fluxos de bits que são unidos por uma ferramenta de união em um único fluxo de bits.
[0049] A Figura 3 é um diagrama de blocos de um sistema codifica dor exemplificativo 300 em combinação com o qual algumas modalidades descritas podem ser implantadas. O sistema codificador 300 pode ser uma ferramenta de codificação de propósito geral capaz de operar em qualquer um de múltiplos modos de codificação tal como um modo de codificação de baixa latência para comunicação em tempo real, um modo de transcodificação, e um modo de codificação de latência mais alta para produzir mídia para reprodução a partir de um arquivo ou fluxo, ou a mesma pode ser uma ferramenta de codificação de propósito especial adaptada para tal modo de codificação. O sistema codificador 300 pode ser implantado como um módulo de sistema operacional, como parte de uma biblioteca de aplicações ou como uma aplicação autônoma. No geral, o sistema codificador 300 recebe uma sequência de quadros de vídeo fonte 311 a partir de uma fonte de vídeo 310 e produz dados codificados como saída para um canal 390. A saída de dados codificados para o canal pode incluir elementos de sintaxe que indicam valores de CPBRD para imagens bem como elementos de sintaxe que indicam como os valores de CPBRD devem ser interpretados.
[0050] A fonte de vídeo 310 pode ser uma câmera, placa de sinto nizador, mídia de armazenamento, ou outra fonte de vídeo digital. A fonte de vídeo 310 produz uma sequência de quadros de vídeo em uma taxa de quadros de, por exemplo, 30 quadros por segundo. Como usado no presente documento, o termo "quadro" em geral se refere a dados de imagem de fonte codificados ou reconstruídos. Para vídeo de varredura progressiva, um quadro é um quadro de vídeo de varredura progressiva. Para vídeo entrelaçado, em modalidades exemplificativas, um quadro de vídeo entrelaçado é desentrelaçado antes da codificação. Al-ternativamente, dois campos de vídeo entrelaçado complementares são codificados juntos como um único quadro de vídeo ou codificado como dois campos codificados separadamente. Além de indicar um de quadro de vídeo de varredura progressiva ou quadro de vídeo de varredura entrelaçada, o termo "quadro" ou "imagem" pode indicar um único campo de vídeo não pareado, um par de campos de vídeo complementares, um plano de objeto de vídeo que representa um objeto de vídeo em um dado tempo, ou uma região de interesse em uma imagem maior. O plano ou região de objeto de vídeo pode ser parte de uma imagem maior que inclui múltiplos objetos ou regiões de um cenário.
[0051] Um quadro fonte que chega 311 é armazenado em uma área de armazenamento de memória temporária de quadro fonte 320 que inclui múltiplas área de armazenamento temporário de quadro 321, 322, ... , 32n. Um armazenamento temporário de quadro 321,322, etc. mantém um quadro fonte na área de armazenamento de quadro fonte 320. Após um ou mais dos quadros fonte 311 terem sido armazenados em armazenamentos temporários de quadro 321, 322, etc., um seletor de quadro 330 seleciona um quadro fonte individual da área de armazenamento de quadro fonte 320. A ordem na qual quadros são selecionados pelo seletor de quadro 330 para entrada para o codificador 340 pode diferir da ordem na qual os quadros são produzidos pela fonte de vídeo 310, por exemplo, a codificação de alguns quadros pode ser atrasada em ordem, para permitir que alguns quadros posteriores sejam codificados primeiro e para desse modo facilitar predição regressiva temporal-mente. Antes do codificador 340, o sistema codificador 300 pode incluir um pré-processador (não mostrado) que realiza pré-processamento (por exemplo, filtragem) do quadro selecionado 331 antes da codificação. O pré-processamento também pode incluir conversão de espaço de cor em componentes primário (por exemplo, luma) e secundário (por exemplo, diferenças chroma para vermelho e para azul) e processamento de reamostragem (por exemplo, para reduzir a resolução espacial de componentes chroma) para codificação.
[0052] O codificador 340 codifica o quadro selecionado 331 para produzir um quadro codificado 341 e também produz sinais de operação de controle de gerenciamento de memória ("MMCO") 342 ou informações de conjunto de imagens de referência ("RPS"). Se o quadro atual não for o primeiro quadro que tiver sido codificado, quando realizando seu processo de codificação, o codificador 340 pode usar um ou mais quadros codificados/decodificados previamente 369 que tenham sido armazenados em uma área de armazenamento de memória temporária de quadro decodificado 360. Tais quadros decodificados armazenados 369 são usados como quadros de referência para predição interquadros do conteúdo do quadro fonte atual 331. As informações de MMCO/RPS 342 indicam para um decodificador que quadros reconstruídos podem ser usados como quadros de referência, e consequentemente devem ser armazenados em uma área de armazenamento de quadro.
[0053] Em geral, o codificador 340 inclui múltiplos módulos de codi ficação que realizam tarefas de codificação tais como estimativa e com-pensação de movimento, transformações de frequência, quantização e codificação entrópica. As operações exatas realizadas pelo codificador 340 podem variar dependendo de formato de compressão. O formato dos dados codificados de saída pode ser um formato de Vídeo de Windows Mídia, formato VC-1, formato MPEG-x (por exemplo, MPEG-1, MPEG-2, ou MPEG-4), formato H.26x (por exemplo, H.261, H.262, H.263, H.264), formato HEVC (H.265) ou outro formato.
[0054] Por exemplo, dentro do codificador 340, um quadro predito codificado interquadro é representado em termos de predição a partir de quadros de referência. Um estimador de movimento estima o movimento de conjuntos de amostras de um quadro fonte 331 com respeito a um ou mais quadros de referência 369. Um conjunto de amostras pode ser um macrobloco, submacrobloco ou partição de submacrobloco (como no padrão H.264), ou o mesmo pode ser uma unidade de árvore de codificação ou unidade de predição (como no padrão HEVC). Em geral, como usado no presente documento, o termo "bloco" indica um conjunto de amostras, que pode ser uma única matriz bidimensional ("2D") ou múltiplas matrizes 2D (por exemplo, uma matriz para um componente luma e duas matrizes para componentes chroma). Quando múltiplos quadros de referência são usados, os múltiplos quadros de referência podem ser de direções temporais diferentes ou da mesma direção temporal. O estimador de movimento emite informações de movimento tais como informações de vetor de movimento, que são codificadas por entropia. Um compensador de movimento aplica vetores de movimento a quadros de referência para determinar valores de predição com movimento compensado para predição interquadros. O codificador determina as diferenças (se houver) entre valores de predição com movimento compensado de um bloco e valores originais correspondentes. Esses valores residuais de predição são codificados adicionalmente com o uso de uma transformação de frequência, quantização e codificação entrópica. Por exemplo, o codificador 340 define valores para parâmetro de quantização de luma ("QP") e QP de chroma para uma imagem, fatia e/ou outra porção de vídeo, e quantiza coeficientes de transformação em conformidade. De maneira similar, para predição intraqua- dro, o codificador 340 pode determinar valores de predição intra para um bloco, determinar valores residuais de predição, e codificar os valores residuais de predição (com uma transformação de frequência, quan- tização e codificação entrópica). Em particular, o codificador de entropia do codificador 340 compreende valores de coeficiente de transformação quantizada bem como certas informações secundárias (por exemplo, informações de vetor de movimento, valores de QP, decisões de modo, escolhas de parâmetro). Técnicas de codificação entrópica típicas incluem codificação de Golomb Exponencial, codificação de Golomb- Rice, codificação aritmética, codificação diferencial, codificação de Huffman, codificação run length, codificação de tamanho variável para tamanho variável ("V2V"), codificação de tamanho variável para tamanho fixo ("V2F"), codificação de Lempel-Ziv ("LZ"), codificação de dicionário, codificação entrópica de particionamento de intervalo de probabilidade ("PIPE"), e combinações destes. O codificador de entropia pode usar técnicas de codificação diferentes para tipos de informações diferentes, pode aplicar múltiplas técnicas em combinação (por exemplo, aplicando-se codificação de Golomb-Rice seguida por codificação aritmética), e pode escolher dentre múltiplas tabelas de código dentro de uma técnica de codificação particular.
[0055] Os quadros codificados 341 e informações de MMCO/RPS 342 (ou informações equivalentes às informações de MMCO/RPS 342, uma vez que as dependências e estruturas de ordenação para quadros já são conhecidas no codificador 340) são processadas por um emulador de processo de decodificação 350. O emulador de processo de de- codificação 350 implanta parte da funcionalidade de um decodificador, por exemplo, tarefas de decodificação para reconstruir quadros de referência que são usados pelo codificador 340 em estimativa e compensação de movimento. De uma maneira consistente com as informações de MMCO/RPS 342, o emulador de processo de decodificação 350 determina se um dado quadro codificado 341 precisa ser reconstruído e armazenado para usar como um quadro de referência em predição inter- quadros de quadros subsequentes a serem codificados. Se um quadro codificado 341 precisa ser armazenado, o emulador de processo de de- codificação 350 modela o processo de decodificação que deve ser conduzido por um decodificador que recebe o quadro codificado 341 e produz um quadro decodificado correspondente 351. Dessa forma, quando o codificador 340 tiver usado quadro(s) decodificado(s) 369 que tiverem sido armazenados na área de armazenamento de quadro decodificado 360, o emulador de processo de decodificação 350 também usa o(s) quadro(s) decodificado(s) 369 da área de armazenamento 360 como parte do processo de decodificação.
[0056] A área de armazenamento de memória temporária de quadro decodificado 360 inclui múltiplas áreas de armazenamento temporário de quadro 361,362, ..., 36n. De uma maneira consistente com as informações de MMCO/RPS 342, o emulador de processo de decodificação 350 gerencia os conteúdos da área de armazenamento 360 a fim de identificar quaisquer armazenamentos temporários de quadro 361, 362, etc. com quadros que não são mais necessários para serem usados como quadros de referência pelo codificador 340. Após modelar o processo de decodificação, o emulador de processo de decodificação 350 armazena um quadro recém-decodificado 351 em um armazenamento temporário de quadro 361, 362, etc. que tiver sido identificado dessa maneira.
[0057] O codificador 340 define valores de CPBRD para imagens que são codificadas de acordo com uma especificação de um modelo de fluxo de armazenamento temporário (por exemplo, decodificador de referência hipotética ("HRD") ou verificador de armazenamento temporário de vídeo ("VBV")). Dessa forma, o codificador 340 aplica restrições sobre flutuações na taxa de bits para o fluxo de bits, de modo a ajudar a assegurar que o fluxo de bits possa ser decodificado dentro dos recursos de armazenamento temporário de um sistema de decodificação. O codificador 340 também define os valores de CPBRD para ajudar um decodificador a determinar o sincronismo e etapas para a operação de seu processo de decodificação.
[0058] Os quadros codificados 341 e informações de MMCO/RPS 342 (ou informações equivalentes às informações de MMCO/RPS) também são armazenados temporariamente em uma área de dados codificados temporários 370. Os dados codificados que são agregados na área de dados codificados 370 contêm, como parte da sintaxe de um fluxo de bits de vídeo codificado elementar, dados codificados para uma ou mais imagens. Os dados codificados que são agregados na área de dados codificados 370 também podem incluir metadados de mídia que se referem aos dados de vídeo codificados (por exemplo, como um ou mais parâmetros em uma ou mais mensagens informações de aprimoramento suplementares ("SEI") ou mensagens de informações de usa- bilidade de vídeo ("VUI")). Esses metadados de mídia podem incluir elementos de sintaxe que indicam valores de CPBRD para imagens bem como elementos de sintaxe que indicam como os valores de CPBRD devem ser interpretados (por exemplo, como parte de mensagens de SEI de PT e mensagens de SEI de BP).
[0059] Os dados agregados 371 a partir da área de dados codifica dos temporários 370 são processados por um codificador de canal 380. O codificador de canal 380 pode empacotar e/ou multiplexar os dados agregados para transmissão ou armazenamento como um fluxo de mídia (por exemplo, de acordo com um formato de fluxo de programa de mídia ou de fluxo de transporte tal como ITU-T H.222.0 | ISO/IEC 138181 ou um formato de protocolo de transporte de Internet em tempo real tal como IETF RFC 3550), em cujo caso o codificador de canal 380 pode adicionar elementos de sintaxe como parte da sintaxe do fluxo de transmissão de mídia. Essa sintaxe pode incluir elementos de sintaxe que indicam valores de CPBRD para imagens bem como elementos de sintaxe que indicam como os valores de CPBRD devem ser interpretados. Ou, o codificador de canal 380 pode organizar os dados agregados para armazenamento como um arquivo (por exemplo, de acordo com um formato de contentor de mídia tal como ISO/IEC 14496-12), em cujo caso o codificador de canal 380 pode adicionar elementos de sintaxe como parte da sintaxe do arquivo de armazenamento de mídia. Essa sintaxe pode incluir elementos de sintaxe que indicam valores de CPBRD para imagens bem como elementos de sintaxe que indicam como os valores de CPBRD devem ser interpretados. Ou, de forma mais geral, o codificador de canal 380 pode implantar um ou mais protocolos de multiple- xação de sistema de mídia ou protocolo de transportes, em cujo caso o codificador de canal 380 pode adicionar elementos de sintaxe como parte da sintaxe de o(s) protocolo(s). Novamente, essa sintaxe pode incluir elementos de sintaxe que indicam valores de CPBRD para imagens bem como elementos de sintaxe que indicam como os valores de CPBRD devem ser interpretados. O codificador de canal 380 fornece saída para um canal 390, que representa armazenamento, uma conexão de comunicações, ou outro canal para a saída. O codificador de canal 380 ou canal 390 também pode incluir outros elementos (não mostrados), tais como codificação de correção de erro de encaminhamento ("FEC") e modulação de sinal analógico.
[0060] A Figura 4 é um diagrama de blocos de um sistema decodi- ficador exemplificativo 400 em combinação com o qual algumas modalidades descritas podem ser implantadas. O sistema decodificador 400 pode ser uma ferramenta de decodificação de propósito geral capaz de operar em qualquer de múltiplos modos de decodificação tais como um de modo de decodificação de latência baixa para comunicação em tempo real e um modo de decodificação de latência mais alta para reprodução de mídia a partir de um arquivo ou fluxo, ou o mesmo pode ser uma ferramenta de decodificação de propósito especial adaptada para tal modo de decodificação. O sistema decodificador 400 pode ser implantado como um módulo de sistema operacional, como parte de uma biblioteca de aplicações ou como uma aplicação autônoma. No geral, o sistema decodificador 400 recebe dados codificados de um canal 410 e produz quadros reconstruídos como saída para um destino de saída 490. Os dados codificados podem incluir elementos de sintaxe que indicam valores de CPBRD para imagens bem como elementos de sintaxe que indicam como os valores de CPBRD devem ser interpretados.
[0061] O sistema decodificador 400 inclui um canal 410, que pode representar armazenamento, uma conexão de comunicações, ou outro canal para dados codificados como entrada. O canal 410 produz dados codificados que tiverem sido codificados no canal. Um decodificador de canal 420 pode processar os dados codificados. Por exemplo, o deco- dificador de canal 420 desempacota e/ou demultiplexa dados que tiverem sido agregados para transmissão ou armazenamento como um fluxo de mídia (por exemplo, de acordo com um formato de fluxo de programa de mídia ou de fluxo de transporte tal como ITU-T H.222.0 | ISO/IEC 13818-1 ou um formato de protocolo de transporte de internet em tempo real tal como IETF RFC 3550), em cujo caso o decodificador de canal 420 pode analisar elementos de sintaxe adicionados como parte da sintaxe do fluxo de transmissão de mídia. Essa sintaxe pode incluir elementos de sintaxe que indicam valores de CPBRD para imagens bem como elementos de sintaxe que indicam como os valores de CPBRD devem ser interpretados. Ou, o decodificador de canal 420 separa dados de vídeo codificados que tiverem sido agregados para armazenamento como um arquivo (por exemplo, de acordo com um formato de contentor de mídia tal como ISO/IEC 14496-12), em cujo caso o decodificador de canal 420 pode analisar elementos de sintaxe adicionados como parte da sintaxe do arquivo de armazenamento de mídia. Essa sintaxe pode incluir elementos de sintaxe que indicam valores de CPBRD para imagens bem como elementos de sintaxe que indicam como os valores de CPBRD devem ser interpretados. Ou, de forma mais geral, o decodificador de canal 420 pode implantar um ou mais protocolos de demultiplexação de sistema de mídia ou protocolos de transporte, em cujo caso o decodificador de canal 420 pode analisar elementos de sintaxe adicionados como parte da sintaxe de o(s) proto- colo(s). Novamente, essa sintaxe pode incluir elementos de sintaxe que indicam valores de CPBRD para imagens bem como elementos de sintaxe que indicam como os valores de CPBRD devem ser interpretados. O canal 410 ou decodificador de canal 420 também pode incluir outros elementos (não mostrados), tais como decodificação de FEC e demo- dulação sinal analógico.
[0062] Os dados codificados 421 que são emitidos a partir do deco- dificador de canal 420 são armazenados em uma área de dados codificados temporários 430 até que uma quantidade suficiente desses dados tenha sido recebida. Os dados codificados 421 incluem quadros codificados 431 e informações de MMCO/RPS (432). Os dados codificados 421 na área de dados codificados 430 contêm, como parte da sintaxe de um fluxo de bits de vídeo codificado elementar, dados codificados para uma ou mais imagens. Os dados codificados 421 na área de dados codificados 430 também podem incluir metadados de mídia que se referem aos dados de vídeo codificados (por exemplo, como um ou mais parâmetros em uma ou mais mensagens de SEI ou mensagens de VUI). Esses metadados de mídia podem incluir elementos de sintaxe que indicam valores de CPBRD para imagens bem como elementos de sintaxe que indicam como os valores de CPBRD devem ser interpretados (por exemplo, como parte de mensagens de SEI de PT e mensagens de SEI de BP).
[0063] O decodificador 450 usa os valores de CPBRD para deter mine o sincronismo e etapas para operação de seu processo de deco- dificação global. Em geral, a área de dados codificados 430 armazena dados codificados temporariamente 421 até que esses dados codificados 421 sejam usados pelo decodificador 450, como indicado por um valor de CPBRD. Nesse ponto, os dados codificados para um quadro codificado 431 e informações de MMCO/RPS (432) são transferidos da área de dados codificados 430 para o decodificador 450. Quando a de- codificação continua, novos dados codificados são adicionados à área de dados codificados 430 e os dados codificados mais velhos que permanecem na área de dados codificados 430 são transferidos para o de- codificador 450.
[0064] O decodificador 450 decodifica um quadro codificado 431 para produzir um quadro decodificado correspondente 451. Quando apropriado, durante a realização de seu processo de decodificação, o decodificador 450 pode usar um ou mais quadros decodificados previamente (469) como quadros de referência para predição interquadros. O decodificador 450 lê esses quadros decodificados previamente (469) de uma área de armazenamento de memória temporária de quadro decodificado (460). Em geral, o decodificador 450 inclui múltiplos módulos de decodificação que realizam tarefas de decodificação tais como deco- dificação entrópica, predição intraquadro, predição interquadros com movimento compensado, quantização inversa, e transformações de frequência inversas. As operações exatas realizadas pelo decodificador 450 podem variar dependendo do formato de compressão.
[0065] Por exemplo, o decodificador 450 recebe dados codificados para um quadro ou sequência de quadros comprimidos e produz saída que inclui quadro decodificado 451. No decodificador 450, um armazenamento temporário recebe dados codificados para um quadro comprimido e, em um tempo apropriado como indicado nominalmente por um valor de CPBRD, torna os dados codificados recebidos disponíveis para um decodificador de entropia. O decodificador de decodifica por entropia por entropia dados quantizados codificados por entropia bem como informações secundárias codificadas por entropia, tipicamente com a aplicação do inverso de codificação entrópica realizada no codificador. Um compensador de movimento aplica informações de movimento a um ou mais quadros de referência para formar predições de blocos com movimento compensado (por exemplo, macroblocos, submacroblocos, partição de submacroblocos, unidades de árvore de codificação, unidades de predição, ou partes dos mesmos, tal como blocos de árvore de codificação, blocos de predição ou outros blocos) do quadro que está sendo reconstruído. Um módulo de predição intraquadro pode predizer espacialmente valores de amostra de um bloco atual a partir de valores de amostras vizinhas reconstruídas previamente. O decodificador 450 também reconstrói valores residuais de predição. Um quantizador inverso quantiza inversamente dados decodificados por entropia. Por exemplo, o decodificador 450 define valores para QP de luma e QP de chroma para uma imagem, fatia e/ou outra porção de vídeo baseado em elementos de sintaxe no fluxo de bits, e quantiza inversamente coefici-entes de transformação em conformidade. Um transformador de frequência inversa converte os dados de domínio de frequência quantiza- dos em informações de domínio espacial. Para um quadro predito inter- quadros, o decodificador 450 combina valores residuais de predição reconstruídos com predições com movimento compensado para formar um quadro reconstruído. O decodificador 450 pode de maneira similar combinar valores residuais de predição com predições espaciais de predição intraquadro. Um filtro redutor de efeito de bloco adaptativo é incluído dentro do ciclo de compensação de movimento no decodificador de vídeo 450 para suavizar descontinuidades através das linhas e/ou colunas limites do bloco no quadro decodificado 451. Outra filtragem (tal como filtragem de detecção de bordas, filtragem adaptativa de laço ("ALF"), ou filtragem de deslocamento adaptativo de amostra ("SAO"); não mostrada) pode alternativa ou adicionalmente ser aplicada como operações de filtragem in-loop.
[0066] A área de armazenamento de memória temporária de quadro decodificado 460 inclui múltiplas áreas de armazenamento temporário de quadro 461,462, ..., 46n. A área de armazenamento de quadro decodificado 460 é um exemplo de um DPB. O decodificador 450 usa as informações de MMCO/RPS 432 para identificar um armazenamento temporário de quadro 461, 462, etc. no qual o mesmo possa armazenar um quadro decodificado 451. O decodificador 450 armazena o quadro decodificado 451 naquele armazenamento temporário de quadro.
[0067] Um sequenciador de saída 480 identifica (por exemplo, com o uso de informações no BP e mensagens de SEI de PT) quando o próximo quadro a ser produzido em ordem de saída está disponível na área de armazenamento de quadro decodificado 460. Quando o próximo quadro 481 a ser produzido em ordem de saída está disponível na área de armazenamento de quadro decodificado 460, o mesmo é lido pelo sequenciador de saída 480 e sai para o destino de saída 490 (por exemplo, visor). Em geral, a ordem na qual os quadros são emitidos da área de armazenamento de quadro decodificado 460 pelo sequenciador de saída 480 pode diferir da ordem na qual os quadros são decodificados pelo decodificador 450.
[0068] A Figura 5 é um diagrama de blocos de um codificador de vídeo generalizado 500 em combinação com o qual algumas modalidades descritas podem ser implantadas. O codificador 500 recebe uma sequência de quadros de vídeo que inclui um quadro atual 505 e produz dados codificados 595 como saída.
[0069] O codificador 500 é baseado em bloco e usa um formato de bloco que depende da implantação. Os blocos podem ser subdivididos adicionalmente em estágios diferentes, por exemplo, nos estágios de transformação de frequência e codificação entrópica. Por exemplo, um quadro pode ser dividido em blocos 64x64, blocos 32x32 ou blo- cos16x16, os quais podem por sua vez ser divididos em blocos menores de valores de amostra para codificação e decodificação.
[0070] O sistema codificador 500 compreende quadros preditos in- terquadros e quadros codificados intraquadro. Por uma questão de apresentação, a Figura 5 mostra um "percurso intra" através do codificador 500 para codificação intraquadro e um "percurso inter" para codificação interquadros. Muitos dos componentes do codificador 500 são usados tanto para codificação intraquadro como codificação interqua- dros. As operações exatas realizadas por aqueles componentes podem variar dependendo do tipo de informações que são comprimidas.
[0071] Se o quadro atual 505 for um quadro predito interquadros, um estimador de movimento 510 estima o movimento de blocos (por exemplo, macroblocos, submacroblocos, partição de submacroblocos, unidades de árvore de codificação, unidades de predição, ou partes dos mesmos, tal como blocos de árvore de codificação, blocos de predição ou outros blocos) do quadro atual 505 com respeito a um ou mais quadros de referência. O armazenamento de quadro 520 armazena temporariamente um ou mais quadros prévios reconstruídos 525 para usar como quadros de referência. Quando múltiplos quadros de referência são usados, os múltiplos quadros de referência podem ser de direções temporais diferentes ou da mesma direção temporal. O estimador de movimento 510 emite, como informações secundárias, informações de movimento 515 tais como informações de vetor de movimento diferenciais.
[0072] O compensador de movimento 530 aplica vetores de movi mento reconstruídos ao(s) quadro(s) de referência reconstruído(s) 525 durante a formação de um quadro atual com movimento compensado 535. A diferença (se houver) entre um bloco do quadro atual com movimento compensado 535 e uma parte correspondente do quadro atual original 505 é a predição residual 545 para o bloco. Durante reconstrução posterior do quadro atual, os valores residuais de predição reconstruídos são adicionados ao quadro atual com movimento compensado 535 para obter um quadro reconstruído que seja próximo ao quadro atual original 505. Em compressão com perdas, entretanto, algumas informações ainda são perdidas do quadro atual original 505. O percurso intra pode incluir um módulo de predição intra (não mostrado) que prediz espacialmente valores de amostra de um bloco atual a partir de valores de amostra vizinhos reconstruídos previamente.
[0073] Um transformador de frequência 560 converte informações de domínio espacial de vídeo em dados de domínio de frequência (ou seja, transformação espectral). Para quadros de vídeo baseados em bloco, o transformador de frequência 560 aplica uma transformada discreta de cosseno, uma aproximação inteira da mesma, ou outro tipo de transformação de bloco de encaminhamento (por exemplo, uma transformada discreta de seno ou uma aproximação inteira da mesma) a blocos de dados de valor de amostra ou dados de residuais de predição, que produzem blocos de coeficientes de transformação de frequência. Um quantizador 570 então quantiza os coeficientes de transformação. Por exemplo, o quantizador 570 aplica quantização escalar com zona morta aos dados do domínio de frequência com um tamanho de etapa de quantização que varia em uma base quadro a quadro, base fatia a fatia, base bloco a bloco, base de frequência específica, ou outra base. Por exemplo, o codificador 500 define valores para QP de luma e QP de chroma para uma imagem, fatia e/ou outra porção de vídeo tal como uma unidade de codificação, e quantiza coeficientes de transformação em conformidade.
[0074] Quando uma versão reconstruída do quadro atual é neces sária para estimativa/compensação de movimento subsequente, um quantizador inverso 576 realiza quantização inversa nos dados de coeficiente de frequência quantizados. Um transformador de frequência inversa 566 realiza uma transformação de frequência inversa que produz blocos de valores residuais de predição reconstruídos ou valores de amostra. Para um quadro predito interquadros, o codificador 500 combina valores residuais de predição reconstruídos 545 com predições com movimento compensado 535 para formar o quadro reconstruído 505. (Embora não mostrado na Figura 5, no percurso intra, o codificador 500 pode combinar valores residuais de predição com predições espaciais de predição intra.) O armazenamento de quadro 520 armazena temporariamente o quadro reconstruído atual para usar em predição com movimento compensado subsequente.
[0075] Em A Figura 5, um ciclo de compensação de movimento no codificador 500 inclui um filtro redutor de efeito de bloco adaptativo 510 (tipicamente) antes do armazenamento de quadro 520. O decodificador 500 aplica filtragem in-loop a quadros reconstruídos para suavizar adap- tativamente descontinuidades através das fronteiras nos quadros. Outra filtragem (tal como filtragem de detecção de bordas, filtragem ALF, ou SAO; não mostrada) pode alternativa ou adicionalmente ser aplicada como operações de filtragem in-loop.
[0076] O codificador de entropia 580 compreende a saída do quan- tizador 570 bem como informações de movimento 515 e certas informações secundárias (por exemplo, valores de QP). O codificador de entropia 580 fornece dados codificados 595 para o armazenamento temporário 590, que multiplexa os dados codificados em um fluxo de bits de saída.
[0077] Um controlador (não mostrado) recebe entradas de vários módulos do codificador. O controlador avalia resultados intermediários durante a codificação, por exemplo, definir valores de QP e realizar de análise de distorção de taxa. O controlador trabalha com outros módulos para definir e mudar parâmetros de codificação durante a codificação. O controlador pode definir valores de CPBRD para imagens que são codificadas de acordo com um modelo de fluxo de armazenamento temporário. Dessa forma, o controlador pode aplicar restrições sobre flutuações na taxa de bits ao fluxo de bits, de modo a ajudar a assegurar que o fluxo de bits possa ser decodificado dentro dos recursos de armazenamento temporário de um sistema de decodificação. O controlador também define os valores de CPBRD para ajudar um decodificador a determinar o sincronismo e etapas para operação de seu processo de decodificação.
[0078] Dependendo da implantação e do tipo de compressão dese jados, módulos do codificador podem ser adicionados, omitidos, divididos em múltiplos módulos, combinados com outros módulos, e/ou substituídos com módulos semelhantes. Em modalidades alternativas, codificadores com módulos diferentes e/ou outras configurações de módulos realizam uma ou mais das técnicas descritas. Modalidades específicas de codificadores tipicamente usam uma variação ou versão complementada do codificador 500. Os relacionamentos mostrados entre módulos dentro do codificador 500 indicam fluxos gerais de informações no codificador; outros relacionamentos não são mostrados por uma questão de simplicidade.
[0079] A Figura 6 é um diagrama de blocos de um decodificador generalizado 600 em combinação com o qual diversas modalidades descritas podem ser implantadas. O decodificador 600 recebe dados codificados 695 para um quadro ou sequência de quadros comprimidos e produz saída que inclui um quadro reconstruído 605. Por uma questão de apresentação, a Figura 6 mostra um "percurso intra" através do de- codificador 600 para decodificação intraquadro e um "percurso inter" para decodificação interquadros. Muitos dos componentes do decodifi- cador 600 são usados tanto para decodificação intraquadro como para decodificação interquadros. As operações exatas realizadas por aqueles componentes podem variar dependendo do tipo de informações que estão sendo descomprimidas.
[0080] Um armazenamento temporário 690 recebe dados codifica dos 695 para um quadro comprimido e torna os dados codificados recebidos disponíveis para o analisador/decodificador de entropia 680, com sincronismo indicado pelo menos em parte por valores de CPBRD para os quadros respectivos. O analisador/decodificador de entropia 680 decodifica por entropia dados quantizados codificados por entropia bem como informações secundárias codificadas por entropia, tipicamente com a aplicação do inverso de codificação entrópica realizada no codificador.
[0081] Um compensador de movimento 630 aplica informações de movimento 615 a um ou mais quadros de referência 625 para formar predições com movimento compensado 635 de blocos (por exemplo, macroblocos, submacroblocos, partição de submacroblocos, unidades de árvore de codificação, unidades de predição, ou partes dos mesmos, tais como blocos de árvore de codificação, blocos de predição ou outros blocos) do quadro 605 que está sendo reconstruído. O armazenamento de quadro 620 armazena um ou mais quadros reconstruídos previamente para usar como quadros de referência.
[0082] O percurso intra pode incluir um módulo de predição intra (não mostrado) que prediz espacialmente valores de amostra de um bloco atual a partir de valores de amostra vizinhos reconstruídos previamente. No percurso inter, o decodificador 600 reconstrói valores residuais de predição. Um quantizador inverso 670 quantiza inversamente dados decodificados por entropia. Por exemplo, o decodificador 600 define valores para QP de luma e QP de chroma para uma imagem, fatia e/ou outra porção de vídeo tal como uma unidade de codificação, baseada em elementos de sintaxe no fluxo de bits, e o quantizador inverso 670 quantiza inversamente coeficientes de transformação em conformidade.
[0083] Um transformador de frequência inversa 660 converte os da dos reconstruídos do domínio de frequência em informações de domínio espacial. Por exemplo, o transformador de frequência inversa 660 aplica uma transformação de bloco inversa a coeficientes de transformação de frequência que produz dados de valor de amostra ou dados residuais de predição. A transformação de frequência inversa pode ser uma transformada discreta de cosseno inversa, uma aproximação inteira da mesma, ou outro tipo de transformação de frequência inversa (por exemplo, uma transformada discreta de seno inversa ou uma aproximação inteira da mesma).
[0084] Para um quadro predito interquadros, o decodificador 600 combina valores residuais de predição reconstruídos 645 com predições com movimento compensado 635 para formar o quadro reconstruído 605. (Embora não mostrado na Figura 6, no percurso intra, o decodifi- cador 600 pode combinar valores residuais de predição com predições espaciais de predição intraquadro). Um ciclo de compensação de movimento no decodificador 600 inclui um filtro redutor de efeito de bloco adaptativo 610 antes ou após o armazenamento de quadro 620. O de- codificador 600 aplica filtragem in-loop a quadros reconstruídos para suavizar adaptativamente descontinuidades através das fronteiras nos quadros. Outra filtragem (tal como filtragem de detecção de bordas, filtragem ALF, ou SAO; não mostrada) pode alternativa ou adicionalmente ser aplicada como operações de filtragem in-loop.
[0085] Na Figura 6, o decodificador 600 também inclui um filtro pós- processamento 608. O filtro pós-processamento 608 pode incluir filtragem de detecção de bordas, filtragem Wiener adaptativa, filtragem de reprodução de granulação de filme, filtragem SAO ou outro tipo de filtragem.
[0086] Dependendo da implantação e do tipo de descompressão desejada, módulos do decodificador podem ser adicionados, omitidos, divididos em múltiplos módulos, combinados com outros módulos, e/ou substituídos por módulos semelhantes. Em modalidades alternativas, decodificadores com módulos diferentes e/ou outras configurações de módulos realizam uma ou mais das técnicas descritas. Modalidades específicas de decodificadores usam tipicamente uma variação ou versão complementada do decodificador 600. Os relacionamentos mostrados entre módulos dentro do decodificador 600 indicam fluxos de informações gerais no decodificador; outros relacionamentos não são mostrados por uma questão de simplicidade. SINTAXE E SEMÂNTICA PARA VALORES DE CPBRD PARA SIMPLIFICAR UNIÃO
[0087] Essa seção apresenta várias inovações para sintaxe e se mântica de valores de atraso de remoção de armazenamento temporário de imagem codificada ("CPBRD"). Em muitos casos, as inovações simplificam a união de sequências de vídeo. Vários exemplos são fornecidos para valores de CPBRD como sinalizado em mensagens de informações de aprimoramento suplementares ("SEI") de acordo com o padrão HEVC e o padrão H.264/AVC.
[0088] Em versões preliminares do padrão HEVC tais como JCTVC- K1003, e no padrão H.264/AVC, a sintaxe e semântica são especificadas para uma mensagem de SEI de sincronismo de imagem ("PT SEI"). Uma mensagem de SEI de PT inclui um elemento de sintaxe que indica atraso de remoção de armazenamento temporário de imagem codificada ("CPBRD"). Em JCTVC-K1003, o elemento de sintaxe é nomeado au_cpb_removal_delay_minus1, e o mesmo é interpretado adicionando-se 1 ao valor inteiro codificado que é sinalizado em uma mensagem de SEI de PT.
[0089] Em geral, junto com o atraso de armazenamento temporário inicial (ou, alternativamente, uma plenitude de armazenamento temporário inicial), o valor de CPBRD para uma dada imagem (tipicamente chamada a "imagem atual") especifica o tempo nominal no qual os dados codificados associados à imagem devem ser removidos do armazenamento temporário de imagem codificada ("CPB"). O CPB é um armazenamento temporário de decodificador hipotético, e o decodifica- dor pode usar o mesmo como referência para projetar o armazenamento temporário de decodificador. Também, um codificador pode gerar fluxos de bits compatíveis baseados no armazenamento temporário de deco- dificador hipotético. No contexto do padrão HEVC, o conjunto de dados associados à imagem atual é uma "unidade de acesso". O valor de CPBRD é entendido no contexto de um modelo de armazenamento temporário, que pode ser chamado um HRD ou VBV. A especificação de acordo com o modelo de armazenamento temporário ajuda a assegurar que fluxos de bits possam ser decodificados dentro dos recursos de armazenamento temporário de um sistema de decodificação, e ajuda o decodificador a determinar o sincronismo e etapas para operação de seu processo de decodificação global para imagens.
[0090] A referência de sincronismo para valores de CPBRD é rede finida para mensagens subsequentes quando uma mensagem de SEI de período de armazenamento temporário ("BP SEI") estiver presente nos dados de vídeo codificados. Em JCTVC-K1003, um valor de CPBRD sempre é codificado relativo ao tempo de remoção nominal da imagem precedente (se houver) em ordem de decodificação que continha uma mensagem de SEI de BP. Um codificador poderia enviar uma mensagem de SEI de BP juntamente com cada imagem de ponto de acesso randômico ("RAP") no fluxo de bits. Um codificador também pode enviar mensagens de SEI de BP com outras imagens que não são imagens RAP.
[0091] Uma ferramenta de união de vídeo comumente realiza ope rações de união nas localizações de imagens de RAP em fluxos de bits. Uma imagem de RAP pode ser uma imagem de atualização de decodi- ficador instantânea ("IDR"). A imagem de RAP tem uma mensagem de SEI de BP associada à mesma. Por exemplo, uma operação de união pode ser usada para inserir um comercial ou série de comerciais em um programa de televisão, ou para comutar entre diferentes programas de televisão.
[0092] O projeto para imagens de RAP de HEVC é destinado espe cificamente a permitir o uso de imagens de RAP como pontos de união para fluxos de bits. Em JCTVC-K1003, entretanto, o valor de CPBRD é sempre codificado relativo ao tempo de remoção nominal de CPB da imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP. Devido a esse ponto de referência, pode ser difícil para um sistema de união determinar o valor correto para o valor de CPBRD ao fazer a união entre fluxos de bits (ou concatenar suavemente fluxos de bits codificados separadamente para formar um fluxo de bits mais longo).
[0093] Assim, para abordagens para sintaxe e semântica de CPBRD como em JCTVC-K1003, a fim de realizar uma operação de união para comutar de envio de imagens de um fluxo de bits A para envio de imagens de um fluxo de bits B, uma ferramenta de união ajusta o valor de CPBRD da imagem em um ponto de união (ou seja, o valor de CPBRD em uma mensagem de SEI de PT associado à imagem no ponto de união). O ponto de união, em que a comutação acontece, é uma localização que corresponde a uma imagem de RAP no fluxo de bits B. (A imagem de RAP no fluxo de bits B no ponto de união também tem uma mensagem de SEI de BP com a mesma, e a mensagem de SEI de BP redefinirá o tempo de referência para valores de CPBRD das imagens subsequentes do fluxo de bits B em ordem de decodificação, assim o ajuste de valores de CPBRD para imagens subsequentes no fluxo de bits B é desnecessário). Para efetuar a operação de união, a ferramenta de união realiza tipicamente as seguintes etapas, embora não necessariamente nessa ordem, e, podem existir algumas variações alternativas.
[0094] A ferramenta de união encontra e lê o valor de CPBRD da imagem de RAP no fluxo de bits B, relativo ao tempo de remoção nominal da imagem com a mensagem de SEI de BP anterior no fluxo de bits B. O valor desse CPBRD é DRAPB. Se não houver nenhuma imagem precedente no fluxo de bits B, DRAPB pode ser definido para um valor baseado na taxa de quadros local (por exemplo, baseado em DeltaTo- Divisor, que pode ser especificado baseado no valor de _struct_pre- sent_flag, field_pic_flag, e pic_struct para a última imagem no fluxo de bits A ou primeira imagem no fluxo de bits B).
[0095] A ferramenta de união também encontra e lê o valor de CPBRD da imagem (do fluxo de bits B) que precedeu a imagem de RAP em ordem de decodificação no fluxo de bits B, que é um atraso relativo à imagem com a mensagem de SEI de BP anterior no fluxo de bits B. O valor desse CPBRD é DPREVB. Se não houver nenhuma imagem precedente no fluxo de bits B, DPREVB é definido para 0.
[0096] A ferramenta de união também encontra e lê o valor de CPBRD da última imagem (do fluxo de bits A) que precede o ponto de união em ordem de decodificação no fluxo de bits A, que é um atraso relativo à imagem com a mensagem de SEI de BP anterior no fluxo de bits A. O valor desse CPBRD é DPREVA. Se a última imagem (do fluxo de bits A) que precede o ponto de união em ordem de decodificação no fluxo de bits A for uma imagem com uma mensagem de SEI de BP, DPREVA é definido para 0.
[0097] A ferramenta de união então modifica o valor de CPBRD da imagem de RAP do fluxo de bits B no ponto de união que define que o valor de CPBRD é igual a DPREVA + (DRAPB - DPREVB), para que o valor de CPBRD da imagem de RAP do fluxo de bits B no ponto de união seja expresso relativo à imagem com a mensagem de SEI de BP anterior no fluxo de bits A. A ferramenta de união coloca essa imagem de RAP modificada e as imagens subsequentes do fluxo de bits B no fluxo de bits unido após as imagens que foram obtidas do fluxo de bits A.
[0098] Certos detalhes, associados a outras operações e complica ções potenciais foram omitidos dessa descrição. Por exemplo, a descrição não endereça casos em que o valor de verificação de sincronismo de referência é diferente entre os dois fluxos de bits ou quando as localizações de imagens de RAP e de mensagem de SEI de BP não coincidirem.
[0099] A ferramenta de união realiza as operações de descoberta e leitura descritas acima devido a, de acordo com abordagens anteriores para sintaxe e semântica de CPBRD, as informações de CPBRD serem referenciadas à imagem no fluxo de bits com a mensagem de SEI de BP anterior. A ferramenta de união ajusta as informações de CPBRD no fluxo de bits unido para que o valor de CPBRD no ponto de união seja expresso relativo a esse ponto de referência. As operações de descoberta e leitura de valores de CPBRD podem ser pesadas e difíceis para realizar, e podem requerer acesso a dados que não são facilmente acessíveis ao sistema de união (por exemplo, devido a restrições de criptografia ou capacidade de armazenamento temporário).
[00100] A Figura 7 ilustra o problema para uma situação simplificada que envolve a concatenação de dois fluxos de bits codificados separadamente A e B. A parte superior da Figura 7 mostra três unidades de acesso ("AUs") de um fluxo de bits A e duas AUs de um fluxo de bits B, antes da união. Para o fluxo de bits A, os valores de CPBRD são sinalizados para indicar atrasos de remoção para a 2a e 3a AUs (ou seja, AU 1 e AU 2) relativos ao atraso de remoção de CPB inicial para a 1a AU (ou seja, AU 0) do fluxo de bits A. Para o fluxo de bits B, um valor de CPBRD é sinalizado para indicar atraso de remoção para a 2a AU (ou seja, AU 1) relativo ao atraso de remoção de CPB inicial para a 1a AU (ou seja, AU 0) do fluxo de bits B. O valor au_cbp_removal_delay (k) se refere ao atraso de remoção de CPB da AU número k. Quando as AUs do fluxo de bits B são unidas após as AUs do fluxo de bits A, um CPBRD é determinado para a 1a AU (AU 0) do fluxo de bits B. A parte inferior da Figura 7 mostra as AUs dos fluxos de bits A e B após a união em um único fluxo de bits. Alguns dos valores de CPBRD das AUs estão inalterados no fluxo de bits unido (ou seja, os valores de CPBRD para a 2a e 3a AUs (AU 1 e AU 2) do fluxo de bits A relativo ao atraso de remoção de CPB inicial para a 1a AU (AU 0) do fluxo de bits A, e o valor de CPBRD para a 2a AU (AU 1) do fluxo de bits B relativo ao atraso de remoção de CPB para a 1a AU (AU 0) do fluxo de bits B). O valor de CPBRD para a 1a AU (AU 0 antes da união; numerada AU 3 após a união) do fluxo de bits B é ajustado, entretanto, para expressar um atraso de remoção relativo ao atraso de remoção de CPB inicial para a 1a AU (AU 0) do fluxo de bits A, para o fluxo de bits unido. Em exemplos mais complicados (por exemplo, quando os fluxos de bits incluem mais AUs e/ou quando algumas AUs não estão disponíveis), determinar o valor de CPBRD para a 1a AU da segunda sequência no fluxo de bits unido pode ser difícil.
[00101] Essa seção descreve várias modificações a abordagens anteriores para sintaxe e semântica de CPBRD. De acordo com as modificações, quando uma dada imagem (tipicamente chamada a "imagem atual") tem uma mensagem de SEI de BP associada à mesma, um codificador pode enviar elementos de sintaxe que indicam o seguinte:
[00102] um valor de CPBRD relativo ao tempo de remoção nominal de CPB da imagem que precede a imagem atual em ordem de decodi- ficação (também chamado ordem de fluxo de bits ou ordem decodificada) que tem uma mensagem de SEI de BP, como nas abordagens anteriores ("item a");
[00103] um valor de CPBRD relativo ao tempo de remoção nominal de CPB da última imagem que precede a imagem atual em ordem de decodificação, independentemente de aquela última imagem precedente ter uma mensagem de SEI de BP, ou não ("item b") (em algumas variações, a última imagem que precede a imagem atual na mesma sub- camada temporal ou inferior é considerada; por exemplo, se a imagem atual tiver TemporalId igual a 0, a imagem precedente também tem TemporalId igual a 0); e
[00104] indicações de (i) se o valor especificado no item a estiver presente (ou se sempre presente, se seu valor for válido), e (ii) se o valor especificado no item b estiver presente (ou se sempre presente, se seu valor for válido) ("item c").
[00105] As duas indicações para o item c podem ser combinadas em um único elemento de sintaxe que indica uma das três combinações permitidas (ou seja, item a válido / item b não válido, item a não válido / item b válido, ou itens a e b ambos válidos). (Alternativamente, em implantações nas quais o valor de 0 não pode ser um valor válido, para o item c, uma forma para indicar uma falta de validade poderia ser usar o valor de 0 para o valor de CPBRD. Indicando que nenhum dos valores de CPBRD ser válido deveria ser proibido).
[00106] Com o uso dessa sintaxe, uma ferramenta de união pode simplificar suas operações de união em muitos casos. Se o conteúdo do fluxo de bits B seguir a convenção no item b, a leitura de outros valores não é necessária - os dados dos dois fluxos de bits podem simplesmente ser concatenados juntos. Se o conteúdo do fluxo de bits B também contiver elementos de sintaxe que seguem a convenção no item a, os dados de CPBRD do item a devem ser removidos ou marcados como inválidos no fluxo de bits concatenado.
[00107] Quando a imagem atual não tem uma mensagem de SEI de BP, a sintaxe do padrão HEVC como em JCTVC-K1003, ou uma sintaxe equivalente (como no padrão H.264/AVC), pode ser usada sem alteração.
[00108] Como uma variação do item b, a sintaxe pode especificar um valor de incremento de CPBRD relativo ao tempo de remoção nominal de CPB da última imagem que precede a imagem atual em ordem de decodificação dentro da mesma subcamada temporal ou de uma sub- camada temporal inferior (em vez de em qualquer subcamada temporal, como implícito acima). Nesse caso, o valor de CPBRD é expresso relativo à imagem precedente na mesma subcamada temporal (ou inferior) em vez de apenas à imagem precedente de qualquer subcamada, o que torna o esquema robusto para a remoção de imagens de subcamadas temporais superiores, se houverem. Essa variação também pode ser aplicada à abordagem de valor único e abordagem de dois valores descritas nas seções C, D e E, respectivamente. Por exemplo, se a imagem atual tiver TemporalId igual a 0, o valor de CPBRD é expresso relativo à imagem precedente com TemporalId igual a 0. Essa poderia ser a situação quando valores de CPBRD que seguem a convenção do item B fossem sinalizados apenas para imagens que têm TemporalId igual a 0 (por exemplo, devido a uma condição em que mensagens de SEI com esses valores de CPBRD poderem ser usadas apenas para imagens que têm TemporalId igual a 0).
[00109] Em variações de valor único das modificações descritas acima, para algumas imagens, o codificador envia um dos dois valores de CPBRD para o item a e o item b, juntamente com uma indicação de se a correspondência do valor de CPBRD sinalizado à convenção do item a ou do item b.
[00110] As Figuras 8 e 9 ilustram uma implantação da abordagem de valor único na qual a sintaxe e semântica de mensagens de SEI de BP (como em JCTVC-K1003) são modificadas, e na qual a semântica de algumas mensagens de SEI de PT (como em JCTVC-K1003) são modificadas embora sua sintaxe fique inalterada. A sintaxe da mensagem de SEI de BP é modificada para incluir um sinalizador denominado con- catenation_flag, como mostrado na sintaxe exemplificativa (800) da Figura 8. Um concatenation_flag é um valor binário. Quando uma dada imagem (imagem atual) tem uma mensagem de SEI de BP, a semântica do valor de CPBRD na mensagem de SEI de PT para a imagem atual depende do valor do concatenation_flag na mensagem de SEI de BP para a imagem. A Figura 9 mostra a sintaxe (900) para uma mensagem de SEI de PT, que inclui um elemento de sintaxe au_cpb_removal_de- lay_minus1. Quando o valor do concatenation_flag é 0, o valor de CPBRD indicado pelo elemento de sintaxe au_cpb_removal_delay_mi- nus1 é interpretado de acordo com a convenção do item a. Por outro lado, quando o valor do concatenation_flag é 1, o valor de CPBRD indicado por au_cpb_removal_delay_minus1 é interpretado de acordo com a convenção do item b.
[00111] Outros elementos de sintaxe mostrados nas Figuras 8 e 9 têm significados especificados em JCTVC-K1003.
[00112] Para um fluxo de bits unido, quando o concatenation_flag é 1, o tempo de remoção nominal tr,n(n) para uma imagem n que tem uma mensagem de SEI de BP pode ser computado a partir do tempo de remoção nominal tr,n(n-1) da imagem precedente (unidade de acesso) n- 1, juntos com um atraso: tr,n(n) = tr,n(n-1) + tc* (Max(au_cpb_removal_delay(n),
[00113] Ceil((InitCpbRemovalDelay[SchedSelIdx] + 90000 + taf( n -1) - tr,n(n —1) ) * tc))).
[00114] Nessa fórmula, a restrição Ceil ((InitCpbRemovalDelay [SchedSelIdx] * 90000 + taf(n-1) - tr,n(n-1) * tc) assegura que o atraso é pelo menos tão longo quanto o mesmo deve ser se a decodificação tiver iniciado no ponto de união (imagem n) sem estouro negativo de arma-zenamento temporário. O atraso adicionado a tr,n(n-1) é definido dependendo do mais longo dentre o valor de CPBRD sinalizado para imagem n e o atraso de início indicado pela restrição.
[00115] A Figura 10 mostra porque a restrição Ceil ((InitCpbRemo- valDelay [SchedSelIdx] * 90000 + taf( n -1) - tr,n( n -1)) * tc) é considerada. Para cada unidade de acesso n, com n>0, associado a uma mensagem de SEI de período de armazenamento temporário, o valor Δtg,90 (n) é especificado por Δtg,90 (n) = 90000 * ( tr,n(n) - taf(n -1) ), em que* tr,n(n) é o tempo de remoção nominal de unidade de acesso n (na Figura 10, a primeira unidade de acesso do período de armazenamento temporário atual), e em que taf(n-1) é o tempo de chegada final de unidade de acesso n-1 (na Figura 10, a última unidade de acesso do período de armazenamento temporário precedente). Na Figura 10, quando o fluxo 1 e o fluxo 2 são concatenados juntos, estouro negativo poderia ocorrer se o valor de CPBRD for usado. Com a restrição, o estouro negativo é evitado devido ao status de armazenamento temporário de fluxo 2 após a concatenação permanecer o mesmo que o status de armazenamento temporário original.
[00116] Em algumas variações de dois valores das modificações descritas acima, para algumas imagens, o codificador poderia enviar um ou ambos os valores de CPBRD para o item a e o item b em mensagens de SEI para uma imagem de RAP.
[00117] A Figura 11 ilustra uma implantação da abordagem de dois valores na qual a sintaxe e semântica de mensagens de SEI de BP (como em JCTVC-K1003) são modificadas. A sintaxe de mensagens de SEI de PT (como em JCTVC-K1003) fica inalterada. Como mostrado na sintaxe exemplificativa (1100) da Figura 11, a sintaxe da mensagem de SEI de BP é modificada para incluir um concatenation_flag e um elemento de sintaxe denominado au_cpb_removal_delay_delta_minus1, que pode indicar um valor de "delta" de CPBRD (aqui, o valor de delta menos um).
[00118] O elemento de sintaxe concatenation_flag indica se uma restrição especificada se aplica ao relacionamento entre o valor de au_cpb_removal_delay_delta_minus1 e o valor de au_cpb_remo- val_delay_minus1 para a imagem precedente em ordem de decodifica- ção, se houver (ou, em algumas variações, a imagem precedente na mesma subcamada temporal ou inferior, se houver, por exemplo, verificando-se uma imagem precedente com TemporalId menor do que ou igual ao valor de TemporalId da imagem atual). Por exemplo, quando subestratificação temporal é considerada, se a imagem atual tiver Tem- poralId igual a 0, a verificação é para a imagem precedente com Tem- poralId igual a 0.
[00119] O elemento de sintaxe au_cpb_removal_delay_delta_mi- nus1, mais 1, especifica um valor de incremento de atraso de remoção de CPB relativo ao tempo de remoção nominal de CPB da última imagem que precede a imagem atual na ordem de fluxo de bits (ordem de decodificação), se houver (ou, em algumas variações, a última dessas imagens na mesma subcamada temporal ou inferior, se houver, por exemplo, verificando-se uma imagem precedente com TemporalId menor do que ou igual ao valor de TemporalId da imagem atual). Por exemplo, quando subestratificação temporal é considerada, se a imagem atual tiver TemporalId igual a 0, a verificação é para a imagem prece-dente com TemporalId igual a 0.
[00120] Quando concatenation_flag é igual a 0, o valor de CPBRD (como determinado pelo elemento de sintaxe au_cpb_removal_de- lay_minus1 da mensagem de SEI de PT para a imagem atual) é interpretado de acordo com o item a. Se a imagem precedente não tiver uma mensagem de SEI de BP, esse valor de CPBRD do item a é igual ao valor de CPBRD de acordo com o item b mais o valor de CPBRD do item a para a imagem que precede a imagem atual em ordem de deco- dificação (em algumas variações, a imagem precedente da subcamada temporal apropriada). O valor de CPBRD do item b é a diferença entre o valor de CPBRD do item a para a imagem atual e o valor de CPBRD do item a para a imagem precedente. Esse valor do item b é indicado pelo elemento de sintaxe au_cpb_removal_delay_delta_minus1, e seu valor pode ser verificado contra a diferença entre os dois valores de CPBRD de item a que são enviados nas mensagens de SEI de PT da imagem atual e precedente para verificar que os valores de CPBRD do item a e do item b são válidos. O valor de CPBRD do item a separado é sinalizado em uma mensagem de SEI de PT para a imagem atual. Em outras palavras, quando a imagem atual tem uma mensagem de SEI de BP e concatenation_flag é igual a 0, e a imagem atual não é a primeira imagem no fluxo de bits, é requerido o seguinte para a conformidade do fluxo de bits.
[00121] Se a imagem precedente (ou, em algumas variações, imagem precedente com TemporalId menor do que ou igual ao valor de TemporalId da imagem atual) não tiver uma mensagem de SEI de BP, o au_cpb_removal_delay_minus1 da imagem atual é igual ao au_cpb_removal_delay_minus1 da imagem precedente (em algumas variações, imagem precedente com TemporalId menor do que ou igual ao valor de TemporalId da imagem atual) mais au_cpb_removal_de- lay_delta_minus1 mais 1.
[00122] Caso contrário (a imagem precedente tem uma mensagem de SEI de BP), au_cpb_removal_delay_minus1 é igual a au_cpb_remo- val_delay_delta_minus1.
[00123] Essas exigências significam que quando concatenation_flag é igual a 0, a indicações para o item a e o item b são ambas válidas e presentes, assumindo que as condições precedentes sejam satisfeitas e a imagem precedente não tenha uma mensagem de SEI de BP. Nesse caso, uma mensagem de SEI de BP para a imagem atual inclui um valor do item b de CPBRD (representado pelo elemento de sintaxe au_cpb_removal_delay_delta_minus1), e uma mensagem de SEI de PT para a imagem atual inclui um valor de CPBRD do item a (representado por au_cpb_removal_delay_minus1). Por outro lado, quando a imagem precedente tiver uma mensagem de SEI de BP (e o sinalizador ainda for igual a 0), os elementos de sintaxe au_cpb_removal_delay_delta_mi- nus1 e au_cpb_removal_delay_minus1 indicam ambos um valor de CPBRD do item a.
[00124] Quando concatenation_flag é igual a 1, a exigência de conformidade de fluxo de bits descrita acima não precisa ser atendida para os elementos de sintaxe au_cpb_removal_delay_delta_minus1 e au_cpb_removal_delay_minus1. Quando o sinalizador é igual a 1, a computação de CPBRD é alterada para ser apropriada a união fluxos de bits, em vez de ser referenciada diretamente à imagem precedente que tinha uma mensagem de SEI de BP. Quando a imagem atual tem uma mensagem de SEI de BP e concatenation_flag é igual a 1, o elemento de sintaxe au_cpb_removal_delay_minus1 para a imagem atual (na mensagem de SEI de PT para a imagem atual) é ignorado. Assim, quando concatenation_flag é igual a 1, apenas a indicação para o item b é válida, como indicado pelo elemento de sintaxe au_cpb_remo- val_delay_delta_minus1 (na mensagem de SEI de BP para a imagem atual).
[00125] A interpretação especificada acima dos valores de CPBRD deve tornar possível unir os fluxos de bits (que usam estruturas de referência projetadas adequadamente) simplesmente mudando-se o valor de concatenation_flag de 0 para 1 na mensagem de SEI de BP para a imagem de RAP no ponto de união.
[00126] Nesse esquema, uma vez que a indicação para item b é sempre válida (embora em alguns casos seja requerido que a seja igual ao valor de CPBRD do item a da imagem atual, e em outros casos seja requerido que seja igual à diferença entre os valores de CPBRD do item a das imagens atual e precedente), a especificação das informações de sincronismo de HRD sempre podem ser baseadas no item b. Adicionalmente, quando concatenation_flag é igual a 0, o decodificador pode verificar se a condição de igualdade é atendida ou não. Se a mesma não for atendida, isso deve indicar que alguns problemas ocorreram (por exemplo, imagem precedente ter sido perdida, ou imagem precedente na mesma subcamada temporal ou inferior ter sido perdida). Em consequência da detecção de que essa imagem tenha sido perdida, o deco- dificador pode recuperar as informações de sincronismo de CPBRD corretas ao interpretar os dados de CPBRD do item a e descartar os dados do item b (uma vez que a computação do sincronismo de CPBRD apropriado daqueles dados requerer o uso dos dados da imagem perdida). O decodificador também pode invocar perda medidas de encobrimento se tal perda for detectada.
[00127] Nessa abordagem de dois valores com o uso de um sinalizador (por exemplo, concatenation_flag) e valor de delta, o tempo de remoção nominal para uma imagem n que tem uma mensagem de SEI de BP pode ser computado a partir do tempo de remoção nominal da imagem precedente (unidade de acesso) nb, juntamente com um atraso. Por exemplo, quando a unidade de acesso n é a primeira unidade de acesso de um período de armazenamento temporário que does não inicializa o HRD, o tempo de remoção nominal tr,n(n) da unidade de acesso n do CPB é especificado como segue.
[00128] Se a imagem atual for associada a uma mensagem de SEI de BP com concatenation_flag igual a 1, o tempo de remoção nominal tr,n(n) é especificado como: tr,n(n) = tr,n(nb) + tc*(Max((au_cpb_removal_delay_delta_minus1(n) +1),
[00129] Ceil((InitCpbRemovalDelay[SchedSelIdx] + 90000 + tfnb) - tr,n(nb) ) * tc))),
[00130] em que tr,n(nb) é o tempo de remoção nominal da imagem precedente (em algumas variações, a imagem precedente com Tempo- ralId menor do que ou igual ao valor de TemporalId da imagem atual) e au_cpb_removal_delay_delta_minus1(n) é o valor de au_cpb_remo- val_delay_delta_minus1 na mensagem de SEI de BP associado à unidade de acesso n. A restrição Ceil ((InitCpbRemovalDelay [SchedSe- lldx] * 90000 + taf( nb) - tr,n( nb)) * tc) assegura que atraso seja pelo menos tão longo quanto o mesmo deve ser se a decodificação tiver iniciado no ponto de união (imagem n) sem estouro negativo de armazenamento temporário. O atraso adicionado a tr,n(nb) é definido dependendo do mais longo dentre o valor de CPBRD sinalizado para a imagem n e o atraso de início indicado pela restrição.
[00131] Caso contrário (a imagem atual não é associada a uma mensagem de SEI de BP com concatenation_flag igual a 1), o tempo de remoção nominal é especificado como: tr,n(n) = tr,n(nb) + tc * (au_cpb_removal_delay_minus1(n)+1),
[00132] em que tr,n(nb) é o tempo de remoção nominal da primeira unidade de acesso do período de armazenamento temporário precedente, e au_cpb_removal_delay_minus1(n) é o valor de au_cpb_remo- val_delay_minus1 na mensagem de SEI de PT associado à unidade de acesso n.
[00133] Para a abordagem de dois valores com um sinalizador de concatenação e valor de delta, o impacto sobre a complexidade do de- codificador e a quantidade adicionada de dados de sintaxe é mínimo. Os elementos de sintaxe adicionados (au_cpb_removal_de- lay_delta_minus1 e concatenation_flag associado) são necessários apenas para imagens que têm mensagens de SEI de BP, que são rela-tivamente pouco frequentes. As operações de união potencialmente são muito simplificadas. Com essa abordagem, se torna possível a união entre fluxos de bits ou concatenar suavemente fluxos de bits codificados separadamente (que usam estruturas de referência projetadas adequadamente) simplesmente definindo-se o valor de concatenation_flag para 1 na mensagem de SEI de BP para a imagem de RAP no ponto de união. Ao mesmo tempo, quando concatenation_flag é igual a 0, a restrição especificada deve permitir que o decodificador verifique se a restrição é satisfeita como uma forma de detectar a perda da imagem precedente (ou imagem precedente na mesma subcamada temporal ou inferior).
[00134] Em algumas variações, o uso ou não uso de sintaxe e semântica de CPBRD alternativas é sinalizado no fluxo de bits. Assim, se a quantidade de dados adicionados for uma preocupação, a presença dos elementos de sintaxe adicionais poderia ser condicionada em um sinalizador em um nível de sintaxe superior, com a interpretação convencional (valores de CPBRD relativos à imagem precedente que tem uma mensagem de SEI de BP) aplicada quando os elementos de sintaxe adicionais não estão presentes.
[00135] Por exemplo, um codificador pode definir um valor li- gado/desligado em um conjunto de parâmetros de sequência ("SPS") ou em outro lugar no fluxo de bits para indicar se sintaxe e semântica de CPBRD são usadas com suporte para operações de união de vídeo simplificadas. Se o valor ligado/desligado que indica suporte à união de vídeo simplificada estiver desligado, o codificador usa sintaxe e semântica de CPBRD convencionais, como em uma abordagem anterior. Se o valor ligado/desligado que indica suporte a união de vídeo simplificada estiver ligado, o codificador usa sintaxe e semântica de CPBRD com suporte a operações de união de vídeo simplificadas (por exemplo, de acordo com uma das abordagens novas descritas no presente documento).
[00136] Um decodificador correspondente recebe e analisa os valores ligado/desligado no SPS ativo ou em outro local no fluxo de bits para indicar se sintaxe e semântica de CPBRD são usadas com suporte a operações de união de vídeo simplificadas. Se o valor ligado/desligado que indica suporte à união de vídeo simplificada estiver desligado, o de- codificador usa sintaxe e semântica de CPBRD convencionais, como em uma abordagem anterior. Se o valor ligado/desligado que indica suporte à união de vídeo simplificada estiver ligado, o codificador usa sintaxe e semântica de CPBRD com suporte a operações de união de vídeo simplificadas (por exemplo, de acordo com uma das abordagens novas descritas no presente documento).
[00137] Uma ferramenta de união de vídeo pode considerar o sinalizador ligado/desligado quando decide como realizar as operações de união. Se o valor ligado/desligado não estiver acionado (desligado), a ferramenta de união usa união convencional com o ajuste de valores de CPBRD, como em uma anterior abordagem. Se o valor ligado/desligado estiver acionado (ligado), a ferramenta de união usa operações de con- catenação simplificadas como descritas no presente documento.
[00138] Em muitos dos exemplos precedentes, os valores de CPBRD são definidos ou determinados para imagens. Essa imagem também pode ser denominada uma unidade de acesso que corresponde a uma imagem primária.
[00139] Alternativamente, os valores de CPBRD são definidos ou determinados para unidades de decodificação, em que uma unidade de decodificação é um subconjunto de uma unidade de acesso para uma imagem primária. Por exemplo, uma unidade de decodificação pode ser uma fatia de uma imagem. Um HRD pode operar em unidades de acesso ou em unidades de decodificação (por exemplo, para fatias ou outras partes de imagens). Em geral, para uma unidade de decodifica- ção, um valor de CPBRD é relativo à última unidade de decodificação da imagem precedente.
[00140] As técnicas e ferramentas descritas no presente documento podem ser aplicadas a unidades de acesso ou a unidades de decodifi- cação. O termo "unidade" pode significar uma unidade de acesso ou unidade de decodificação. O valor de CPBRD para uma unidade é expresso relativo a uma imagem precedente. Para uma unidade de acesso, a unidade de acesso precedente pode ser a última unidade de acesso, última unidade de acesso na mesma subcamada temporal ou em uma subcamada temporal inferior, ou última unidade de acesso com uma mensagem de SEI de BP, dependendo da interpretação. Para uma unidade de decodificação, a última unidade de decodificação dessa unidade de acesso precedente é considerada.
[00141] A Figura 12 mostra uma técnica generalizada 1200 para definir valores de CPBRD durante a codificação. Um codificador de vídeo tal como aquele descrito acima com referência à Figura 3 ou outro codificador de vídeo realiza a técnica 1200.
[00142] O codificador define 1210 um valor de CPBRD para uma dada unidade de uma sequência de vídeo. Por exemplo, a dada unidade é uma unidade de acesso para uma imagem que tem uma mensagem de SEI de BP e pode ser uma imagem de acesso randômico. Ou, a dada unidade é uma unidade de decodificação para parte dessa imagem. O valor de CPBRD para a dada unidade indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação independentemente de a imagem precedente ter uma mensagem de SEI de BP. Em algumas implantações, a imagem precedente precede imediatamente a dada unidade (ou imagem que inclui a dada unidade) em ordem de decodificação. Alternativamente, entre as imagens da sequência de vídeo na mesma subcamada temporal que a dada unidade ou em uma subcamada temporal inferior, a imagem precedente precede imediatamente a dada unidade (ou imagem que inclui a dada unidade) em ordem de decodifica- ção. Por exemplo, quando subestratificação temporal é considerada, se a imagem atual tiver TemporalId igual a 0, a imagem precedente é a imagem precedente com TemporalId igual a 0.
[00143] O codificador sinaliza 1220 o valor de CPBRD para a dada unidade. Por exemplo, o valor de CPBRD é escrito em uma mensagem de SEI de BP ou mensagem de SEI de PT associada a uma unidade de acesso para uma imagem codificada.
[00144] Em algumas variações (por exemplo, abordagem de dois valores), o codificador define potencialmente múltiplos valores de CPBRD para a dada unidade de acordo com diferentes convenções. Por exemplo, adicionalmente ao valor de CPBRD definido 1210 como um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação independentemente de a imagem precedente ter uma mensagem de SEI de BP, o codificador define outro valor de CPBRD para a dada unidade. O outro valor de CPBRD para a dada unidade indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP. O co-dificador então sinaliza o outro CPBRD para a dada unidade (por exemplo, em uma mensagem de SEI de PT para a dada unidade). O codificador também pode sinalizar (por exemplo, escrever em mensagem(ns) de SEI) uma ou mais indicações respectivamente presença ou ausência de um dos valores de CPBRD. Ou, o codificador pode sinalizar (por exemplo, escrever em mensagem(ns) de SEI) uma ou mais indicações respectivamente da validade ou não validade de cada um dos valores de CPBRD.
[00145] Em outras variações (por exemplo, abordagens de valor único), o codificador sinaliza (por exemplo, escreve em mensagem(ns) de SEI) uma indicação de tipo do valor de CPBRD para a dada unidade. Por exemplo, a indicação do tipo do valor de CPBRD é sinalizada em uma mensagem de SEI de BP da dada unidade ou imagem que inclui a dada unidade. A indicação de tipo do valor de CPBRD indica como interpretar o valor de CPBRD para a dada unidade, que pode ser sinalizado em uma mensagem de SEI de PT. Por exemplo, o codificador sinaliza uma indicação de tipo de valor de CPBRD para uma dada unidade de uma sequência de vídeo, então define o valor de CPBRD para a dada unidade. Para um primeiro tipo de valor de CPBRD, o valor de CPBRD para a dada unidade indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP. Para um segundo tipo de valor de CPBRD, o valor de CPBRD para a dada unidade indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodifica- ção independentemente de a imagem precedente ter uma mensagem de SEI de BP. O codificador então sinaliza o valor de CPBRD para a dada unidade.
[00146] Em ainda outras variações (por exemplo, abordagem de dois valores com o uso de um sinalizador e valor de delta), o codificador sinaliza (por exemplo, escreve em mensagem(ns) de SEI) uma indicação de tipo do valor de CPBRD para a dada unidade e sinaliza um valor de CPBRD para a dada unidade para representar o valor de delta. Por exemplo, a indicação do tipo do valor de CPBRD e o valor de CPBRD (valor de delta) são sinalizados em uma mensagem de SEI de BP da dada unidade ou imagem que inclui a dada unidade. Dependendo do tipo do valor de CPBRD, o valor de CPBRD para a imagem atual pode ser sinalizado em uma mensagem de SEI de PT. Por exemplo, o codificador sinaliza uma indicação de tipo de valor de CPBRD para uma dada unidade de uma sequência de vídeo, e define um valor de delta como o valor de CPBRD para a dada unidade. O valor de delta para a dada unidade indica uma diferença entre o valor de CPBRD para a dada unidade e um valor de CPBRD de uma imagem precedente em ordem de decodificação. O codificador sinaliza o valor de delta como o valor de CPBRD para a dada unidade (por exemplo, em uma mensagem de SEI de BP). O codificador também define outro valor de CPBRD para a dada unidade. Para um primeiro tipo de valor de CPBRD, o outro valor de CPBRD indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodifica- ção que tem uma mensagem de SEI de BP. Para um segundo tipo de valor de CPBRD, o outro valor de CPBRD para a dada unidade não é válido. O codificador sinaliza o outro valor de CPBRD para a dada unidade (por exemplo, em uma mensagem de SEI de PT).
[00147] O codificador pode repetir a técnica 1200 em uma base unidade por unidade (por exemplo, base imagem por imagem). Por uma questão de simplicidade, a Figura 12 não mostra como a técnica 1200 opera em combinação com outros processos de codificação.
[00148] A Figura 13 mostra uma técnica exemplificativa 1300 para definir valores de CPBRD durante a codificação de acordo com uma abordagem de valor único, quando valores de CPBRD são definidos para as imagens. Um codificador de vídeo tal como aquele descrito acima com referência à Figura 3 ou outro codificador de vídeo realiza a técnica 1300.
[00149] Para iniciar, o codificador obtém 1310 a imagem atual em uma sequência de vídeo. O codificador verifica 1320 se a imagem atual tem uma mensagem de SEI de BP. Em caso negativo, o codificador define 1360 o CPBRD para a imagem atual em uma mensagem de SEI de PT como um valor de incremento relativo ao tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP.
[00150] Por outro lado, se a imagem atual tiver uma mensagem de SEI de BP, o codificador define 1330 um valor de sinalizador de conca- tenação em uma mensagem de SEI de BP para a imagem atual. Dependendo do valor do sinalizador 1340, o codificador pode definir o valor de CPBRD para a imagem atual de formas diferentes. Se o sinalizador for igual a 1, o codificador define 1350 o valor de CPBRD para a imagem atual em uma mensagem de SEI de PT como um valor de incremento relativo ao tempo de remoção nominal de CPB da imagem precedente em ordem de decodificação independentemente de a imagem precedente ter uma mensagem de SEI de BP. Caso contrário (o sinalizador é igual a 0), o codificador define 1360 o CPBRD para a imagem atual em uma mensagem de SEI de PT como um valor de incremento relativo ao tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP.
[00151] O codificador verifica 1370 se isso é feito e, em caso negativo, continua com a próxima imagem como a imagem atual. Por uma questão de simplicidade, a Figura 13 não mostra como a técnica 1300 opera em combinação com outros processos de codificação.
[00152] A Figura 14 mostra uma técnica generalizada 1400 para processar valores de CPBRD durante a decodificação. Um decodificador de vídeo tal como aquele descrito acima com referência à Figura 4 ou outro decodificador de vídeo realiza a técnica 1400.
[00153] O decodificador recebe 1410 um valor de CPBRD para uma dada unidade de uma sequência de vídeo. Por exemplo, a dada unidade é uma unidade de acesso para uma imagem que tem uma mensagem de SEI de BP e pode ser uma imagem de acesso randômico. Ou, a dada unidade é uma unidade de decodificação para parte dessa imagem. O valor de CPBRD para a dada unidade indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação independentemente de a imagem precedente ter uma mensagem de SEI de BP. Em algumas implantações, a imagem precedente precede imediatamente a dada unidade (ou imagem que inclui a dada unidade) em ordem de decodificação. Alternativamente, entre as imagens da sequência de vídeo na mesma sub- camada temporal que a dada unidade ou em uma subcamada temporal inferior, a imagem precedente precede imediatamente a dada unidade (ou imagem que inclui a dada unidade) em ordem de decodificação. Por exemplo, quando subestratificação temporal é considerada, se a imagem atual tiver TemporalId igual a 0, a imagem precedente é a imagem precedente com TemporalId igual a 0.
[00154] O decodificador analisa 1420 o valor de CPBRD para a dada unidade. Por exemplo, o valor de CPBRD é analisado a partir de uma mensagem de SEI de BP ou mensagem de SEI de PT associada a uma unidade de acesso para uma imagem codificada.
[00155] Em algumas variações (por exemplo, abordagem de dois valores), o decodificador potencialmente recebe e analisa múltiplos valores de CPBRD para a dada unidade, que devem ser interpretados de acordo com convenções diferentes. Por exemplo, adicionalmente ao valor de CPBRD definido como um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação independentemente de a imagem precedente ter uma mensagem de SEI de BP, o decodificador recebe e analisa outro valor de CPBRD para a dada unidade (por exemplo, a partir de uma mensagem de SEI de PT para a dada unidade). O outro valor de CPBRD para a dada unidade indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP. O decodificador também pode receber e analisar uma ou mais indicações respectivamente da presença ou ausência de cada um dos valores de CPBRD. Ou, o decodificador pode receber e analisar uma ou mais indicações respectivamente da validade ou não validade de cada um dos valores de CPBRD.
[00156] Em outras variações (por exemplo, abordagens de valor único), o decodificador recebe e analisa uma indicação de tipo do valor de CPBRD para a dada unidade. Por exemplo, a indicação do tipo do valor de CPBRD é analisado a partir de uma mensagem de SEI de BP da dada unidade ou imagem que inclui a dada unidade. A indicação de tipo do valor de CPBRD indica como interpretar o valor de CPBRD para a dada unidade, que pode ser analisado a partir de uma mensagem de SEI de PT. Por exemplo, o decodificador recebe e analisa uma indicação de tipo de valor de CPBRD para uma dada unidade de uma sequência de vídeo, então recebe e analisa o valor de CPBRD para a dada unidade. Para um primeiro tipo de valor de CPBRD, o valor de CPBRD para a dada unidade indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP. Para um segundo tipo de valor de CPBRD, o valor de CPBRD para a dada unidade indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação independentemente de a imagem precedente ter uma mensagem de SEI de BP.
[00157] Em ainda outras variações (por exemplo, abordagem de dois valores com o uso de um sinalizador e valor de delta), o decodificador recebe e analisa uma indicação de tipo do valor de CPBRD para a dada unidade, e recebe e analisa um valor de CPBRD para a dada unidade que representa o valor de delta. Por exemplo, a indicação do tipo do valor de CPBRD e o valor de CPBRD (valor de delta) são analisados a partir de uma mensagem de SEI de BP da dada unidade ou imagem que inclui a dada unidade. Dependendo do tipo do valor de CPBRD, o valor de CPBRD para a dada unidade pode ser analisado a partir de uma mensagem de SEI de PT. Por exemplo, o decodificador recebe e analisa uma indicação de tipo de valor de CPBRD para uma dada unidade de uma sequência de vídeo, e recebe e analisa um valor de delta como o valor de CPBRD para a dada unidade (por exemplo, a partir de uma mensagem de SEI de BP). O valor de delta para a dada unidade indica uma diferença entre o valor de CPBRD para a dada unidade e um valor de CPBRD de uma imagem precedente em ordem de decodificação. O decodificador também recebe e analisa outro valor de CPBRD para a dada unidade (por exemplo, a partir de uma mensagem de SEI de PT). Quando válido, o outro valor de CPBRD para a dada unidade indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP.
[00158] Após analisar o valor de CPBRD para a dada unidade, o de- codificador pode utilizar o valor de CPBRD. Por exemplo, baseado pelo menos em parte no valor de CPBRD para a dada unidade, o decodifica- dor pode computar um tempo de remoção nominal do CPB para a dada unidade.
[00159] O decodificador pode repetir a técnica 1400 em uma base unidade por unidade (por exemplo, base imagem por imagem). Por uma questão de simplicidade, a Figura 14 a não mostra como a técnica 1400 opera em combinação com outros processos de decodificação.
[00160] A Figura 15 mostra uma técnica exemplificativa 1500 para determinar valores de CPBRD durante a decodificação de acordo com uma abordagem de valor único, quando valores de CPBRD são definidos para imagens. Um decodificador de vídeo tal como aquele descrito acima com referência à Figura 4 ou outro decodificador de vídeo realiza a técnica 1500.
[00161] Para iniciar, o decodificador obtém 1510 a imagem atual em uma sequência de vídeo. O decodificador verifica 1520 se a imagem atual tiver uma mensagem de SEI de BP. Em caso negativo, o decodifi- cador interpreta 1560 o CPBRD para a imagem atual em uma mensagem de SEI de PT como um valor de incremento relativo ao tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP.
[00162] Por outro lado, se a imagem atual tiver uma mensagem de SEI de BP, o decodificador obtém 1530 um valor de sinalizador de con- catenação em uma mensagem de SEI de BP para a imagem atual. Dependendo do valor do sinalizador 1540, o decodificador pode interpretar o valor de CPBRD para a imagem atual de formas diferentes. Se o sinalizador for igual a 1, o decodificador interpreta 1550 o valor de CPBRD para a imagem atual em uma mensagem de SEI de PT como um valor de incremento relativo ao tempo de remoção nominal de CPB da imagem precedente em ordem de decodificação independentemente de a imagem precedente ter uma mensagem de SEI de BP. Caso contrário (o sinalizador é igual a 0), o decodificador interpreta 1560 o CPBRD para a imagem atual em uma mensagem de SEI de PT como um valor de incremento relativo ao tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP.
[00163] O decodificador verifica 1570 se isso é feito e, em caso negativo, continua com a próxima imagem como a imagem atual. Por uma questão de simplicidade, a Figura 15 não mostra como a técnica 1500 opera em combinação com outros processos de decodificação.
[00164] A Figura 16 mostra uma técnica generalizada 1600 para unir fluxos de bits. Uma ferramenta de união de vídeo realiza a técnica 1600.
[00165] A ferramenta de união recebe 1610 um primeiro fluxo de bits para uma primeira sequência de vídeo e também recebe 1620 um segundo fluxo de bits para uma segunda sequência de vídeo. Um valor de CPBRD para uma dada unidade da segunda sequência de vídeo indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação independentemente de a imagem precedente ter uma mensagem de SEI de BP.
[00166] A ferramenta de união une 1630 pelo menos parte da segunda sequência de vídeo à primeira sequência de vídeo. Como parte da união, a ferramenta de união concatena a segunda sequência de vídeo, que inicia na dada unidade ou imagem que inclui a dada unidade, à primeira sequência de vídeo. Por exemplo, a ferramenta de união concatena uma mensagem de SEI de BP da dada unidade ou imagem que inclui a dada unidade (em que a mensagem de SEI de BP inclui uma indicação de tipo do valor de CPBRD para a dada unidade e, em algumas variações, um primeiro valor de CPBRD para a dada unidade) e uma mensagem de SEI de PT (em que a mensagem de SEI de PT inclui o valor de CPBRD para a dada unidade ou, em algumas variações, um segundo valor de CPBRD para a dada unidade).
[00167] Em algumas implantações, o segundo valor de CPBRD (por exemplo, em uma mensagem de SEI de PT) para a dada unidade indica um valor de incremento relativo a um tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP. Nesse caso, como parte da união, a ferramenta de união pode descartar o outro, segundo CPBRD para a dada unidade ou marcar o outro, segundo CPBRD para a dada unidade como não válido.
[00168] A Figura 17 mostra uma técnica exemplificativa 1700 para definir valores de CPBRD durante codificação de acordo com uma abordagem de dois valores com o uso de um sinalizador e valor de delta, quando valores de CPBRD são definidos para imagens. Um codificador de vídeo tal como aquele descrito acima com referência à Figura 3 ou outro codificador de vídeo realiza a técnica 1700.
[00169] Para iniciar, o codificador obtém 1710 a imagem atual em uma sequência de vídeo. O codificador verifica 1720 se a imagem atual tem uma mensagem de SEI de BP. Em caso negativo, o codificador define 1760 o valor de CPBRD para a imagem atual em uma mensagem de SEI de PT como um valor de incremento relativo ao tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodi- ficação que tem uma mensagem de SEI de BP.
[00170] Por outro lado, se a imagem atual tiver uma mensagem de SEI de BP, o codificador define 1730 um valor de sinalizador de conca- tenação em uma mensagem de SEI de BP para a imagem atual. Dependendo do valor do sinalizador 1740, o codificador pode definir o valor de CPBRD para a imagem atual de formas diferentes.
[00171] Se o sinalizador for igual a 1, o codificador define 1750 o valor de CPBRD para a imagem atual em uma mensagem de SEI de PT para ter qualquer valor, uma vez que o valor de CPBRD para a imagem atual na mensagem de SEI de PT será ignorado. Um valor de CPBRD (valor de delta) na mensagem de SEI de BP para a imagem atual será interpretado como um valor de incremento relativo ao tempo de remoção nominal de CPB da imagem precedente em ordem de decodificação.
[00172] Caso contrário (o sinalizador é igual a 0), o codificador verifica 1742 se a imagem precedente em ordem de decodificação tem uma mensagem de SEI de BP. Em caso afirmativo, o codificador define 1744 o valor de CPBRD na mensagem de SEI de BP da imagem atual de modo que o valor de CPBRD da imagem atual em sua mensagem de SEI de PT seja igual ao valor de CPBRD na mensagem de SEI de BP da imagem atual mais 1. Em caso negativo (imagem precedente não tem uma mensagem de SEI de BP), o codificador define 1746 o valor de CPBRD na mensagem de SEI de BP da imagem atual de modo que o valor de CPBRD da imagem atual em sua mensagem de SEI de PT seja igual ao valor de CPBRD da imagem precedente em sua mensagem de SEI de PT mais o valor de CPBRD (valor de delta) na mensagem de SEI de BP da imagem atual mais 1. O codificador também define 1760 o valor de CPBRD para a imagem atual em uma mensagem de SEI de PT como um valor de incremento relativo ao tempo de remoção nominal de CPB da imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP.
[00173] O codificador verifica 1770 se isso é feito e, em caso negativo, continua com a próxima imagem como a imagem atual. Por uma questão de simplicidade, a Figura 17 não mostra como a técnica 1700 opera em combinação com outros processos de codificação.
[00174] A Figura 18 mostra uma técnica exemplificativa 1800 para determinar valores de CPBRD durante a decodificação de acordo com uma abordagem de dois valores com o uso de um sinalizador e valor de delta, quando valores de CPBRD são definidos para imagens. Um de- codificador de vídeo tal como aquele descrito acima com referência à Figura 4 ou outro decodificador de vídeo realiza a técnica 1800.
[00175] Para iniciar, o decodificador obtém 1810 a imagem atual em uma sequência de vídeo. O decodificador verifica 1820 se a imagem atual tem uma mensagem de SEI de BP. Em caso negativo, o decodifi- cador interpreta 1860 o valor de CPBRD para a imagem atual em uma mensagem de SEI de PT como um valor de incremento relativo ao tempo de remoção nominal de CPB de uma imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP.
[00176] Por outro lado, se a imagem atual tiver uma mensagem de SEI de BP, o decodificador obtém 1830 um valor de sinalizador de con- catenação em uma mensagem de SEI de BP para a imagem atual. Dependendo do valor do sinalizador 1840, o decodificador pode interpretar o valor de CPBRD para a imagem atual de formas diferentes, ou mesmo ignorar o valor de CPBRD para a imagem atual.
[00177] Se o sinalizador for igual a 1, o decodificador ignora (1850) o valor de CPBRD para a imagem atual em uma mensagem de SEI de PT. Um valor de CPBRD (valor de delta) na mensagem de SEI de BP para a imagem atual é interpretado como um valor de incremento relativo ao tempo de remoção nominal de CPB da imagem precedente em ordem de decodificação.
[00178] Caso contrário (o sinalizador é igual a 0), o decodificador verifica 1842 se a imagem precedente tem uma mensagem de SEI de BP. Em caso afirmativo, o decodificador pode verificar 1844 que o valor de CPBRD da imagem atual em sua mensagem de SEI de PT é igual ao valor de CPBRD na mensagem de SEI de BP da imagem atual mais 1. Em caso negativo (imagem precedente não tem uma mensagem de SEI de BP), o decodificador pode verificar 1846 que o valor de CPBRD da imagem atual em sua mensagem de SEI de PT é igual ao valor de CPBRD da imagem precedente em sua mensagem de SEI de PT mais o valor de CPBRD (valor de delta) na mensagem de SEI de BP da imagem atual mais 1. O decodificador também interpreta 1860 o valor de CPBRD para a imagem atual em uma mensagem de SEI de PT como um valor de incremento relativo ao tempo de remoção nominal de CPB da imagem precedente em ordem de decodificação que tem uma mensagem de SEI de BP.
[00179] O decodificador verifica 1870 se isso é feito e, em caso negativo, continua com a próxima imagem como a imagem atual. Por uma questão de simplicidade, a Figura 18 não mostra como a técnica 1800 opera em combinação com outros processos de decodificação.
[00180] A descrição detalhada inclui muitos exemplos de sintaxe e semântica para mensagens de SEI. Em alguns casos, esses exemplos, em geral, seguem a forma de mensagens de SEI usadas no padrão H.264/AVC e/ou no padrão HEVC. Mais geralmente, o termo "mensagem de SEI" ou "mensagem de VUI" indica qualquer conjunto de elementos de sintaxe associados aos dados de vídeo codificados que transportam pelo menos algumas informações equivalentes às informações transportadas em a(s) estrutura(s) de sintaxe de uma mensagem de SEI ou de VUI exemplificativa descrita no presente documento, independentemente desses elementos de sintaxe serem sinalizados com o uso da sintaxe de SEI ou de VUI especificada no padrão H.264/AVC ou padrão HEVC referenciado, serem sinalizados em outra sintaxe dentro do fluxo de bits de vídeo codificado, ou serem sinalizados por algum outro meio.
[00181] Em vista das muitas modalidades possíveis às quais os princípios da invenção descrita podem ser aplicados, deve ser reconhecido que as modalidades ilustradas são apenas exemplos da invenção e não devem ser tomados como limitantes do escopo da invenção. De preferência, o escopo da invenção é definido pelas reivindicações a seguir. Portanto, reivindica-se como a invenção tudo que for abrangido pelo escopo e espírito dessas reivindicações.
Claims (20)
1. Dispositivo de memória ou armazenamento legível por computador, caracterizado pelo fato de que tem armazenado nele um vídeo codificado em um fluxo de bits para pelo menos parte de uma sequência de vídeo, o vídeo codificado tendo sido produzido por operações compreendendo: definir um valor delta de atraso de remoção de armazenamento temporário de imagem codificada ("CPBRD") para uma determinada unidade de acesso para uma imagem atual da sequência de vídeo, a imagem atual tendo uma mensagem de SEI de período de armazenamento temporário associada à imagem atual; definir um valor de um sinalizador para a determinada unidade de acesso, em que: se o valor do sinalizador for um primeiro valor, um valor de CPBRD em uma mensagem de SEI de temporização de imagem para a determinada unidade de acesso indica um valor de incremento especificando um tempo de remoção de armazenamento temporário de imagem codificada ("CPB") da imagem atual em relação a um valor nominal tempo de remoção de CPB de uma primeira imagem anterior em ordem de decodificação, a primeira imagem anterior tendo uma mensagem de SEI de período de armazenamento temporário associada à primeira imagem anterior; e se o valor do sinalizador for um segundo valor, o tempo nominal de remoção de CPB da imagem atual é indicado, pelo valor delta de CPBRD, como um valor de incremento relativo a um tempo de remoção nominal de CPB de uma segunda imagem anterior em ordem de decodificação; e sinalizar, como parte do fluxo de bits, o valor delta do CPBRD e o valor do sinalizador para a determinada unidade de acesso no período de armazenamento temporário da mensagem de SEI associada à imagem atual.
2. Dispositivo de memória ou armazenamento legível por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o valor delta de CPBRD é sinalizado na mensagem de SEI de período de armazenamento temporário associada à imagem atual como um elemento de sintaxe que representa o valor delta de CPBRD menos 1.
3. Dispositivo de memória ou armazenamento legível por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a segunda imagem anterior precede imediatamente a imagem atual em ordem de decodificação.
4. Dispositivo de memória ou armazenamento legível por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que as operações compreendem ainda: definir o valor de CPBRD para a determinada unidade de acesso; e sinalizar, como parte do fluxo de bits, o valor de CPBRD para a determinada unidade de acesso na mensagem de SEI de temporização de imagem como um elemento de sintaxe que representa o valor de CPBRD menos 1.
5. Dispositivo de memória ou armazenamento legível por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que, se o valor do sinalizador for o primeiro valor: se a segunda imagem anterior for isenta de uma mensagem de SEI de período de armazenamento temporário associada à segunda imagem anterior, o valor delta de CPBRD indica uma diferença entre o valor de CPBRD para a determinada unidade de acesso e um valor de CPBRD para a segunda imagem anterior; e se a segunda imagem anterior tiver uma mensagem de SEI de período de armazenamento temporário associada à segunda ima- gem anterior, o valor delta de CPBRD é igual ao valor de CPBRD para a determinada unidade de acesso
6. Dispositivo de memória ou armazenamento legível por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que: a segunda imagem anterior é isenta de uma mensagem de SEI de período de armazenamento temporário associada à segunda imagem anterior, e a primeira imagem anterior e a segunda imagem anterior são imagens diferentes; ou a segunda imagem anterior tem uma mensagem de SEI de período de armazenamento temporário associada à segunda imagem anterior e a primeira imagem anterior é a segunda imagem anterior.
7. Dispositivo de memória ou armazenamento legível por computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a imagem atual é uma imagem de acesso aleatório, e em que: a imagem atual faz parte de uma camada temporal, e a segunda imagem precedente imediatamente precede a imagem atual em ordem de decodificação na camada temporal da imagem atual ou em uma camada temporal inferior; ou a segunda imagem anterior, entre as imagens tendo um identificador temporal de zero, precede imediatamente a imagem atual na ordem de decodificação.
8. Método em um sistema de computador, caracterizado pelo fato de que compreende as etapas: receber pelo menos parte de um primeiro fluxo de bits para uma primeira sequência de vídeo; receber pelo menos parte de um segundo fluxo de bits para uma segunda sequência de vídeo que inclui uma imagem atual, a imagem atual tendo uma mensagem de SEI de período de armazenamen- to temporário associada a ela que inclui: um valor delta de atraso de remoção de armazenamento temporário de imagem codificada ("CPBRD") para uma determinada unidade de acesso para a imagem atual; e um valor de um sinalizador para a determinada unidade de acesso, em que: se o valor do sinalizador for um primeiro valor, um valor de CPBRD em uma mensagem de SEI de temporização de imagem para a determinada unidade de acesso indica um valor de incremento especificando um tempo de remoção nominal de armazenamento temporário de imagem codificada ("CPB") da imagem atual em relação a um valor nominal tempo de remoção de CPB de uma primeira imagem anterior em ordem de decodificação, a primeira imagem anterior tendo uma mensagem de SEI de período de armazenamento temporário associada à primeira imagem anterior; e se o valor do sinalizador for um segundo valor, o tempo nominal de remoção de CPB da imagem atual é indicado, pelo valor delta de CPBRD, como um valor de incremento relativo a um tempo nominal de remoção de CPB de uma segunda imagem anterior em ordem de decodificação; e emendar pelo menos parte da segunda sequência de vídeo a pelo menos parte da primeira sequência de vídeo, em que a emenda inclui concatenar a pelo menos parte da segunda sequência de vídeo, começando na unidade de acesso dada, a pelo menos parte do primeiro vídeo sequência.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que compreende ainda: como parte da emenda, definir o valor do sinalizador para o segundo valor, marcando assim o valor de CPBRD na mensagem de SEI de temporização de imagem para a determinada unidade de aces- so como não válido.
10. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que a concatenação de pelo menos parte da segunda sequência de vídeo inclui: concatenar a mensagem de SEI do período de armazenamento temporário associada à imagem atual; e concatenar a mensagem de SEI de temporização de imagem.
11. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o valor delta de CPBRD é sinalizado na mensagem de SEI de período de armazenamento temporário associada à imagem atual como um elemento de sintaxe que representa o valor delta de CPBRD menos 1.
12. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que compreende ainda: receber, como parte do segundo fluxo de bits, o valor de CPBRD para a determinada unidade de acesso na mensagem de SEI de temporização de imagem como um elemento de sintaxe que representa o valor de CPBRD menos 1.
13. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que: a segunda imagem anterior é isenta de uma mensagem de SEI de período de armazenamento temporário associada à segunda imagem anterior, e a primeira imagem anterior e a segunda imagem anterior são imagens diferentes; ou a segunda imagem anterior tem uma mensagem de SEI de período de armazenamento temporário associada à segunda imagem anterior, e a primeira imagem anterior é a segunda imagem anterior.
14. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que a imagem atual é uma imagem de acesso aleató- rio.
15. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que, para o fluxo de bits emendado, o tempo de remoção de CPB nominal da imagem atual pode ser calculado usando o tempo de remoção de CPB nominal da segunda imagem anterior e o valor delta de CPBRD para a determinada unidade de acesso.
16. Dispositivo de memória ou armazenamento legível por computador, caracterizado pelo fato de que possui nele instruções executáveis por computador armazenadas para fazer com que uma unidade de processamento, quando programada assim, execute operações compreendendo: receber um valor delta de atraso de remoção de armazenamento temporário de imagem codificada ("CPBRD") para uma determinada unidade de acesso para uma imagem atual de uma sequência de vídeo, a imagem atual tendo uma mensagem de SEI de período de armazenamento temporário associada à imagem atual; e receber um valor de um sinalizador para a determinada unidade de acesso, em que: se o valor do sinalizador for um primeiro valor, um valor de CPBRD em uma mensagem de SEI de temporização de imagem para a determinada unidade de acesso indica um valor de incremento especificando um tempo de remoção nominal de armazenamento temporário de imagem codificada ("CPB") da imagem atual em relação a um tempo de remoção nominal de CPB de uma primeira imagem anterior em ordem de decodificação, a primeira imagem anterior tendo uma mensagem de SEI de período de armazenamento temporário associada à primeira imagem anterior; e se o valor do sinalizador for um segundo valor, o tempo nominal de remoção de CPB da imagem atual é indicado, pelo valor delta de CPBRD, como um valor de incremento relativo a um tempo nominal de remoção de CPB de uma segunda imagem anterior em ordem de decodificação; receber o valor de CPBRD para a determinada unidade de acesso, sinalizado na mensagem de SEI de temporização de imagem para a determinada unidade de acesso; e detectar perda de dados comparando o valor de CPBRD para a determinada unidade de acesso com uma soma baseada em um valor de CPBRD para a segunda imagem anterior e o valor delta de CPBRD para a determinada unidade de acesso.
17. Dispositivo de memória ou armazenamento legível por computador, de acordo com a reivindicação 16, caracterizado pelo fato de que o valor delta de CPBRD é sinalizado na mensagem de SEI de período de armazenamento temporário associada à imagem atual como um elemento de sintaxe representando o valor delta de CPBRD menos 1, e em que o valor de CPBRD para a determinada unidade de acesso é sinalizado na mensagem de SEI de temporização de imagem como um elemento de sintaxe que representa o valor de CPBRD menos 1.
18. Dispositivo de memória ou armazenamento legível por computador, de acordo com a reivindicação 16, caracterizado pelo fato de que, se o valor do sinalizador for o primeiro valor: se a segunda imagem anterior for isenta de uma mensagem de SEI de período de armazenamento temporário associada à segunda imagem anterior, o valor delta de CPBRD indica uma diferença entre o valor de CPBRD para a determinada unidade de acesso e um valor de CPBRD para a segunda imagem anterior; e se a segunda imagem anterior tiver uma mensagem de SEI de período de armazenamento temporário associada à segunda imagem anterior, o valor delta de CPBRD é igual ao valor de CPBRD para a determinada unidade de acesso.
19. Dispositivo de memória ou armazenamento legível por computador, de acordo com a reivindicação 16, caracterizado pelo fato de que: a segunda imagem anterior é isenta de uma mensagem de SEI de período de armazenamento temporário associada à segunda imagem anterior, e a primeira imagem anterior e a segunda imagem anterior são imagens diferentes; ou a segunda imagem anterior tem uma mensagem de SEI de período de armazenamento temporário associada à segunda imagem anterior, e a primeira imagem anterior é a segunda imagem anterior.
20. Dispositivo de memória ou armazenamento legível por computador, de acordo com a reivindicação 16, caracterizado pelo fato de que a imagem atual é uma imagem de acesso aleatório.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361749909P | 2013-01-07 | 2013-01-07 | |
US61/749,909 | 2013-01-07 | ||
US14/109,670 | 2013-12-17 | ||
US14/109,670 US9661341B2 (en) | 2013-01-07 | 2013-12-17 | Syntax and semantics for buffering information to simplify video splicing |
PCT/US2014/010393 WO2014107691A1 (en) | 2013-01-07 | 2014-01-07 | Syntax and semantics for buffering information to simplify video splicing |
Publications (1)
Publication Number | Publication Date |
---|---|
BR122022001553B1 true BR122022001553B1 (pt) | 2023-02-23 |
Family
ID=51060939
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR122022001553-0A BR122022001553B1 (pt) | 2013-01-07 | 2014-01-07 | Dispositivo de memória ou armazenamento legível por computador e método em um sistema de computador |
Country Status (13)
Country | Link |
---|---|
US (11) | US9661341B2 (pt) |
EP (1) | EP2941880B1 (pt) |
JP (1) | JP6312704B2 (pt) |
KR (1) | KR102179360B1 (pt) |
CN (1) | CN105027570B (pt) |
AR (1) | AR094382A1 (pt) |
AU (1) | AU2014203924B2 (pt) |
BR (1) | BR122022001553B1 (pt) |
CA (1) | CA2897039C (pt) |
MX (1) | MX356482B (pt) |
RU (1) | RU2659748C2 (pt) |
TW (1) | TW201436526A (pt) |
WO (1) | WO2014107691A1 (pt) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6019824B2 (ja) * | 2012-07-02 | 2016-11-02 | 富士通株式会社 | 動画像符号化装置及び動画像符号化方法ならびに動画像符号化用コンピュータプログラム |
US9351005B2 (en) | 2012-09-24 | 2016-05-24 | Qualcomm Incorporated | Bitstream conformance test in video coding |
US9661341B2 (en) | 2013-01-07 | 2017-05-23 | Microsoft Technology Licensing, Llc | Syntax and semantics for buffering information to simplify video splicing |
US9418469B1 (en) * | 2013-07-19 | 2016-08-16 | Outward, Inc. | Generating video content |
EP3116230B1 (en) * | 2014-03-07 | 2019-05-08 | Sony Corporation | Method and apparatus for splicing in a compressed video bitstream |
AU2014202682A1 (en) * | 2014-05-16 | 2015-12-03 | Canon Kabushiki Kaisha | Method, apparatus and system for copying a block of video samples |
US9955159B2 (en) * | 2014-10-31 | 2018-04-24 | Google Llc | Multi-video decoding with input switching |
US10116576B2 (en) * | 2015-10-19 | 2018-10-30 | Samsung Electronics Co., Ltd. | Methods and apparatus for random access of HEVC bitstream for MMT |
US10575007B2 (en) | 2016-04-12 | 2020-02-25 | Microsoft Technology Licensing, Llc | Efficient decoding and rendering of blocks in a graphics pipeline |
US10390071B2 (en) * | 2016-04-16 | 2019-08-20 | Ittiam Systems (P) Ltd. | Content delivery edge storage optimized media delivery to adaptive bitrate (ABR) streaming clients |
US10157480B2 (en) | 2016-06-24 | 2018-12-18 | Microsoft Technology Licensing, Llc | Efficient decoding and rendering of inter-coded blocks in a graphics pipeline |
CN107770565A (zh) * | 2016-08-15 | 2018-03-06 | 联发科技股份有限公司 | 低延迟视频编码的装置与方法 |
US11197010B2 (en) | 2016-10-07 | 2021-12-07 | Microsoft Technology Licensing, Llc | Browser-based video decoder using multiple CPU threads |
US10326815B2 (en) * | 2016-12-20 | 2019-06-18 | LogMeln, Inc. | Techniques for scalably sharing video through a streaming server |
US11665220B2 (en) * | 2018-10-12 | 2023-05-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Monitoring and surveillance system arranged for processing video data associated with a vehicle, as well as corresponding devices and method |
CN109547708A (zh) * | 2018-12-04 | 2019-03-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种合成视景图像处理系统 |
CN118450147A (zh) * | 2019-06-18 | 2024-08-06 | 松下电器(美国)知识产权公司 | 编码装置、解码装置、编码方法和解码方法 |
US12022122B2 (en) * | 2019-06-19 | 2024-06-25 | Sharp Kabushiki Kaisha | Systems and methods for signaling decoded picture buffer information in video coding |
JP7403245B2 (ja) * | 2019-06-21 | 2023-12-22 | キヤノン株式会社 | 画像復号装置、画像復号方法 |
JP7323099B2 (ja) * | 2019-09-24 | 2023-08-08 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | マルチレイヤビデオビットストリームのためのdpbパラメータのシグナリング |
CN110996063A (zh) * | 2019-12-16 | 2020-04-10 | 武汉武钢绿色城市技术发展有限公司 | 一种监控画面上电视墙的装置及系统 |
EP4144093A4 (en) | 2020-05-22 | 2023-08-23 | ByteDance Inc. | SIGNALING OF IMAGE INFORMATION IN ACCESS UNITS |
KR20220144241A (ko) * | 2021-04-19 | 2022-10-26 | 삼성전자주식회사 | 서버 및 그 제어 방법 |
US12101528B2 (en) * | 2022-12-08 | 2024-09-24 | Synamedia Limited | Client device switching to low latency content |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5982436A (en) | 1997-03-28 | 1999-11-09 | Philips Electronics North America Corp. | Method for seamless splicing in a video encoder |
US7532670B2 (en) * | 2002-07-02 | 2009-05-12 | Conexant Systems, Inc. | Hypothetical reference decoder with low start-up delays for compressed image and video |
WO2004006446A2 (en) | 2002-07-02 | 2004-01-15 | Conexant Systems, Inc. | Hypothetical reference decoder for compressed image and video |
US20050201471A1 (en) | 2004-02-13 | 2005-09-15 | Nokia Corporation | Picture decoding method |
US20060002479A1 (en) | 2004-06-22 | 2006-01-05 | Fernandes Felix C A | Decoder for H.264/AVC video |
JP2008536420A (ja) * | 2005-04-13 | 2008-09-04 | ノキア コーポレイション | スケーラビリティ情報の符号化、格納およびシグナリング |
JP4311570B2 (ja) * | 2005-07-01 | 2009-08-12 | 株式会社ソニー・コンピュータエンタテインメント | 再生装置、ビデオ復号装置および同期再生方法 |
KR101455161B1 (ko) * | 2007-01-08 | 2014-10-28 | 톰슨 라이센싱 | 비디오 스트림 스플라이싱을 위한 방법 및 장치 |
CN101064515B (zh) * | 2007-04-18 | 2011-05-11 | 威盛电子股份有限公司 | 可增进译码效能的方法 |
US8335266B2 (en) | 2007-06-29 | 2012-12-18 | Cisco Technology, Inc. | Expedited splicing of video streams |
JP4577357B2 (ja) * | 2007-12-27 | 2010-11-10 | ソニー株式会社 | 符号化装置及び方法、並びにプログラム |
WO2009152450A1 (en) * | 2008-06-12 | 2009-12-17 | Cisco Technology, Inc. | Picture interdependencies signals in context of mmco to assist stream manipulation |
US20100167689A1 (en) * | 2008-07-07 | 2010-07-01 | Hossein Alexander Sepehri-Nik | Method and apparatus for determining whether a cellular phone chip is dormant |
US20100130136A1 (en) * | 2008-08-22 | 2010-05-27 | Hossein Alexander Sepehri-Nik | System and Method for Interpreting and Classifying Signals in Communications Systems |
US9083976B2 (en) * | 2008-09-05 | 2015-07-14 | Freescale Semiconductor, Inc. | Processing a video stream in real time based on binary information of the video stream |
JP5131101B2 (ja) * | 2008-09-09 | 2013-01-30 | 富士通株式会社 | 動画像編集装置および動画像編集プログラム |
EP2356812B1 (en) * | 2008-11-12 | 2015-06-10 | Cisco Technology, Inc. | Processing of a video program having plural processed representations of a single video signal for reconstruction and output |
US8743906B2 (en) | 2009-01-23 | 2014-06-03 | Akamai Technologies, Inc. | Scalable seamless digital video stream splicing |
JP5332773B2 (ja) * | 2009-03-18 | 2013-11-06 | ソニー株式会社 | 画像処理装置および方法 |
US9532055B2 (en) * | 2012-04-16 | 2016-12-27 | Microsoft Technology Licensing, Llc | Constraints and unit types to simplify video random access |
US9661341B2 (en) | 2013-01-07 | 2017-05-23 | Microsoft Technology Licensing, Llc | Syntax and semantics for buffering information to simplify video splicing |
US11899560B2 (en) * | 2022-04-27 | 2024-02-13 | Microsoft Technology Licensing, Llc | Automatic correctness validation of database management systems |
-
2013
- 2013-12-17 US US14/109,670 patent/US9661341B2/en active Active
- 2013-12-30 TW TW102149090A patent/TW201436526A/zh unknown
-
2014
- 2014-01-07 CN CN201480012657.8A patent/CN105027570B/zh active Active
- 2014-01-07 KR KR1020157021477A patent/KR102179360B1/ko active IP Right Grant
- 2014-01-07 BR BR122022001553-0A patent/BR122022001553B1/pt active IP Right Grant
- 2014-01-07 EP EP14704408.5A patent/EP2941880B1/en active Active
- 2014-01-07 RU RU2015127083A patent/RU2659748C2/ru active
- 2014-01-07 WO PCT/US2014/010393 patent/WO2014107691A1/en active Application Filing
- 2014-01-07 JP JP2015551816A patent/JP6312704B2/ja active Active
- 2014-01-07 AU AU2014203924A patent/AU2014203924B2/en active Active
- 2014-01-07 CA CA2897039A patent/CA2897039C/en active Active
- 2014-01-07 MX MX2015008797A patent/MX356482B/es active IP Right Grant
- 2014-01-07 AR ARP140100055A patent/AR094382A1/es active IP Right Grant
-
2017
- 2017-05-22 US US15/601,615 patent/US10313698B2/en active Active
-
2019
- 2019-06-03 US US16/430,087 patent/US11070832B2/en active Active
-
2021
- 2021-06-17 US US17/350,510 patent/US11451813B2/en active Active
-
2022
- 2022-08-18 US US17/890,425 patent/US11665361B2/en active Active
- 2022-09-16 US US17/946,149 patent/US11665362B2/en active Active
-
2023
- 2023-04-18 US US18/135,835 patent/US11943463B2/en active Active
- 2023-04-18 US US18/135,853 patent/US11943464B2/en active Active
-
2024
- 2024-02-15 US US18/442,948 patent/US20240276001A1/en active Pending
- 2024-04-26 US US18/647,524 patent/US20240283962A1/en active Pending
- 2024-04-26 US US18/647,431 patent/US20240283961A1/en active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11943464B2 (en) | Syntax and semantics for buffering information to simplify video splicing | |
US10701401B2 (en) | Syntax structures indicating completion of coded regions | |
KR102245704B1 (ko) | 파면 병렬 프로세싱이 인에이블되는 경우의 인트라 픽쳐 예측 모드에 대한 규칙 | |
TWI603609B (zh) | 簡化視訊隨機存取之限制及單元類型 | |
BR112015025393B1 (pt) | Sistema, método e meio legível por computador | |
BR112015016254B1 (pt) | Método realizado por um dispositivo de computação, mídia legível por computador e dispositivo de computação | |
BR112017004041B1 (pt) | Método implementado por computador, mídia legível por computador e sistema de computação | |
BR122022001703B1 (pt) | Método, sistema de computador, mídia legível por computador |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 07/01/2014, OBSERVADAS AS CONDICOES LEGAIS |