BR122021021291B1 - Método para decodificar uma pluralidade de figuras, método para codificar uma pluralidade de figuras e fluxo de bits de dados de vídeo compactados - Google Patents

Método para decodificar uma pluralidade de figuras, método para codificar uma pluralidade de figuras e fluxo de bits de dados de vídeo compactados Download PDF

Info

Publication number
BR122021021291B1
BR122021021291B1 BR122021021291-0A BR122021021291A BR122021021291B1 BR 122021021291 B1 BR122021021291 B1 BR 122021021291B1 BR 122021021291 A BR122021021291 A BR 122021021291A BR 122021021291 B1 BR122021021291 B1 BR 122021021291B1
Authority
BR
Brazil
Prior art keywords
extension
pps
flag
xbits
figures
Prior art date
Application number
BR122021021291-0A
Other languages
English (en)
Other versions
BR122021021291A8 (pt
BR122021021291A2 (pt
Inventor
Yue Yu
Limin Wang
Original Assignee
Arris International Ip Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Arris International Ip Ltd filed Critical Arris International Ip Ltd
Priority claimed from US14/585,485 external-priority patent/US10341685B2/en
Publication of BR122021021291A2 publication Critical patent/BR122021021291A2/pt
Publication of BR122021021291A8 publication Critical patent/BR122021021291A8/pt
Publication of BR122021021291B1 publication Critical patent/BR122021021291B1/pt

Links

Abstract

Trata-se de um sistema para sinalizar as funções de extensão usadas na decodificação de uma sequência, que inclui uma pluralidade de figuras, em que cada figura é processada pelo menos em parte de acordo com um conjunto de parâmetros de figura. Um indicador de sinalização de presença de extensão é lido e usado para determinar se os indicadores que sinalizam o desempenho das funções de extensão devem ser lidos. Os indicadores são lidos apenas caso indicado pelo indicador de sinalização de presença de extensão.

Description

(Dividido do BR 112016015643-9, depositado em 30/12/2014) REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[001] Este pedido reivindica o benefício do seguinte Pedido de Patente Provisório dos Estados Unidos, o qual é incorporado no presente documento a título de referência: Pedido No de Série 61/923.334, intitulado “CONDITIONALLY PARSING EXTENSION SYNTAX OF PICTURE PARAMETER SET (PPS) FOR HEVC RANGE EXTENSION AND MV-HEVC”, por Yue Yu e Limin Wang, depositado em 3 de janeiro de 2014.
ANTECEDENTES 1. Campo da Invenção
[002] A presente invenção se refere a sistemas e a métodos para codificar e decodificar dados e, em particular, a um sistema e a um método para gerar e para processar cabeçalhos de slice com dados codificados de vídeo de alta eficiência.
2. Descrição da Técnica Relacionada
[003] Existe um rápido crescimento nas tecnologias associadas à geração, à transmissão e à reprodução de programas de mídia. Essas tecnologias incluem esquemas de codificação que permitem que versões digitais dos programas de mídia sejam criptografadas para compactar as mesmas para um muito tamanho menor e facilitar sua transmissão, armazenamento, recepção e reprodução. Essas tecnologias têm aplicação em gravadores de vídeo pessoais (PVRs), vídeo por demanda (VOD), ofertas de programa de mídia de canal múltiplo, interatividade, telefonia móvel e transmissão de programa de mídia.
[004] Sem compactação, os programas de mídia digital são, tipicamente, grandes demais para transmitir e/ou armazenar por um custo comercialmente aceitável. Entretanto, a compactação de tais programas tornou a transmissão e o armazenamento de tais programas de mídia digital, não apenas comercialmente exequível, porém, comum.
[005] Inicialmente, a transmissão de programas de mídia envolvia imagens de baixa a média resolução transmitidas sobre mídia de transmissão de largura de banda elevada, tais como televisão a cabo e satélite. Entretanto, tal transmissão se desenvolveu para incluir mídias de transmissão de largura de banda baixa tais como transmissão de Internet a dispositivos móveis e fixos através de redes de computador, WiFi, TV Móvel e redes de terceira e de quarta geração (3G e 4G). Adicionalmente, tais transmissões têm também se desenvolvido para incluir programas de mídia de alta definição, tal como a Televisão De Alta Definição (HDTV), que têm requisitos de armazenamento e de largura de banda de transmissão significativos.
[006] O padrão de codificação da codificação de vídeo de alta eficiência (HEVC) (ou H.265) é o padrão de codificação mais recente promulgado pelas organizações de padronização ISO/IEC MPEG. O padrão de codificação que precede o HEVC incluía o H.262/MPEG-2 e o subsequente padrão de codificação de vídeo avançada (AVC) H.264/MPEG-4. H.264/MPEG-4 tem substituído substancialmente H.262/MPEG-2 em muitas aplicações, incluindo na televisão de alta definição (HD). HEVC suporta resoluções maiores que a HD, mesmo em modalidades estéreo ou multivista, e é mais adequado para dispositivos móveis, tais como computadores pessoais do tipo tablet. Informações adicionais referentes a HEVC podem ser encontradas na publicação “Overview of the High Efficiency Video Coding (HEVC) Standard”, por Gary J. Sullivan, Jens- Rainer Ohm, Woo-Jin Han e Thomas Wiegand, IEEE Transactions on Circuits and Systems for Video Technology, dezembro de 2012, o qual é incorporado no presente documento a título de referência.
[007] Conforme em outros padrões de codificação, a estrutura e a sintaxe de fluxo de bits de dados compatíveis de HEVC são padronizadas, de modo que cada decodificador em conformidade com o padrão produzirá a mesma saída quando dotado da mesma entrada. Alguns dos recursos incorporados no padrão HEVC incluem a definição e o processamento de um slice, um ou mais dos quais pode compreender juntamente uma das figuras em uma sequência de vídeo. Uma sequência de vídeo compreende uma pluralidade de figuras, e cada figura pode compreender um ou mais slices. Os slices incluem slices não dependentes e slices dependentes. Um slice não dependente (doravante simplesmente referido como um slice) é uma estrutura de dados que pode ser decodificada independentemente dos outros slices da mesma figura em termos de criptografia de entropia, predição de sinal e construção de sinal residual. Essa estrutura de dados permite uma ressincronização de eventos no caso de perdas de dados. Um “slice dependente” é uma estrutura que permite informações sobre o slice (tais como aquelas relacionadas aos ladrilhos dentro do slice ou às entradas de frente de onda) serem carregadas para a camada de rede o que torna, portanto, esses dados disponíveis para um sistema para processar mais rapidamente os slices fragmentados. Os slices dependentes são, em grande parte, úteis para uma criptografia de baixo atraso.
[008] Os padrões de codificação herdados e HEVC definem uma estrutura de conjunto de parâmetros que oferece flexibilidade aprimorada para a operação sobre uma ampla variedade de aplicações e ambientes de rede, e robusteza aprimorada às perdas de dados. Os conjuntos de parâmetros contêm informações que podem ser compartilhadas para decodificação de diferentes porções do vídeo criptografado. A estrutura de conjunto de parâmetros fornece um mecanismo seguro para conduzir os dados que é essencial para o processo de decodificação. H.264 definiu tanto os conjuntos de parâmetros de sequência (SPS) que descrevem os parâmetros para decodificar uma sequência de figuras quanto um conjunto de parâmetros de figura (PPS) que descreve os parâmetros para decodificar uma figura da sequência de figuras. O HEVC introduz um novo conjunto de parâmetros, o conjunto de parâmetros de vídeo (VPS).
[009] A criptografia e a decodificação de slices são executadas de acordo com as informações incluídas em um cabeçalho de slice. O cabeçalho de slice inclui uma sintaxe e uma lógica para ler os indicadores e os dados que são usados na decodificação do slice.
[010] Como seus predecessores, o HEVC suporta tanto a criptografia temporal quanto espacial dos slices de figura. O HEVC define os slices para incluírem os slices-I, que são espacialmente, porém, não temporariamente, criptografados em relação a outro slice. Os slices-I são alternativamente descritos como slice “intra” criptografado. O HEVC também define slices para incluírem os slices P (preditivo), que são espacialmente criptografados e temporariamente criptografados em relação a outro slice. Os slices-P são alternativamente descritos como slice “inter” criptografado. O HEVC também descreve slices para incluírem os slices bipreditivos (B). Os slices B são espacialmente criptografados e temporariamente criptografados em relação a dois ou mais outros slices. Adicionalmente, o HEVC consolida a noção de slices P e B em slices B gerais que podem ser usados como um slice de referência.
[011] Atualmente, a sintaxe HEVC inclui a provisão de extensões para expandir as funcionalidades ou as capacidades do HEVC além da linha de base. Tais extensões incluem extensões de faixa (RExt, extensões de escalabilidade (SHVC) e extensões multivista (MV-HEVC). As extensões podem ser sinalizadas no VPS, SPS, PPS ou uma combinação dos mesmos.
[012] Relatório descritivo do texto das Extensões De Faixa De Codificação De Vídeo De Alta Eficiência (HEVC): Rascunho 4, publicado pelo Joint Collaborative Team em Codificação De Vídeo (JCT-VC) de ITU-T SG 16 WP 3 e ISO/IEC JTC 1/SC 29/WG 11, 13a Reunião: Incheon, R, 18 a 26 de abril de 2013, por David Flynn et al, (incorporado aqui no presente documento a título de referência) define uma sintaxe PPS que controlava a execução de múltiplas funções de extensão através do uso de indicadores de função de extensão única unicamente associados a cada função de extensão. Entretanto, tais indicadores não foram lidos independentemente. Por exemplo, um primeiro indicador que sinaliza a execução de uma função de extensão na sintaxe PPS pode ser lido dentro da sintaxe que é apenas analisada e executada se outro (segundo) indicador para uma função de extensão previamente executada tiver um estado ou um valor particular (por exemplo, um indicador pode não ser lido a menos que o indicador previamente lido teste “verdadeiro”). Isso não é problemático quando a execução de uma função de extensão não é desejada a menos que a sintaxe de função de extensão prévia tenha sido executada. Porém, o mesmo é problemático em casos em que é desejável para controlar a análise ou a execução das funções de extensão independentemente. O que é necessário é um sistema e um método aprimorados para analisar a sintaxe que permite a análise das funções de extensão a serem independentemente controladas. A presente revelação descreve tal sistema e tal método.
SUMÁRIO
[013] Para abordar os requisitos descritos acima, esse documento revela um dispositivo e um método para sinalizar as funções de extensão usadas na decodificação de uma sequência que compreende uma pluralidade de figuras, em que cada figura é processada pelo menos em parte de acordo com um conjunto de parâmetros de figura. Em uma modalidade, o método compreende ler um indicador de sinalização de presença de extensão, determinar se o indicador de sinalização de presença de extensão lido indica que a figura deve ser processada pelo menos em parte de acordo com pelo menos uma função de extensão, e ler um primeiro indicador de sinalização de função de extensão que sinaliza uma primeira função de extensão e ler um segundo indicador de sinalização de função de extensão que sinaliza uma segunda extensão independentemente de um valor do primeiro indicador de sinalização de função de extensão lido apenas se o indicador de sinalização de presença de extensão lido indicar que a figura deve ser processada pelo menos em parte de acordo com a pelo menos uma função de extensão. Esse método pode ser executado com indicadores de sinalização de função de extensão adicionais conforme necessário. Outra modalidade é revelada em que um aparelho é evidenciado por um processador que tem uma memória acoplada comunicativamente que armazena as instruções para executar as operações supracitadas.
BREVE DESCRIÇÃO DOS DESENHOS
[014] Com referência agora aos desenhos em que números de referência similares representam as partes correspondentes ao longo dos mesmos: a figura 1 é um diagrama que representa uma modalidade exemplificativa de um sistema de codificação e decodificação de vídeo que pode ser usado para a transmissão e/ou o armazenamento e recuperação das informações de áudio e/ou de vídeo; a figura 2A é um diagrama de uma modalidade de um sistema de codec em que as informações codificadas AV são transmitidas para e recebidas em outra localização; a figura 2B é um diagrama que representa uma modalidade exemplificativa de sistema de codec em que as informações codificadas são armazenadas e, posteriormente, recuperadas para a apresentação, doravante referido como um sistema de armazenamento de codec; a figura 3 é um diagrama de blocos que ilustra uma modalidade do codificador de fonte; a figura 4 é um diagrama que representa uma figura das informações AV, tal como uma das figuras na sequência de figuras; a figura 5 é um diagrama que mostra uma partição exemplificativa de um bloco de árvore de codificação em unidades de codificação; a figura 6 é um diagrama que ilustra uma representação de uma árvore quaternária (quad tree) representativa e os parâmetros de dados para a partição do bloco de árvore de código mostrado na figura 5. a figura 7 é um diagrama que ilustra a partição de uma unidade de codificação em uma ou mais unidades de predição; a figura 8 é um diagrama que mostra uma unidade de codificação particionada em quatro unidades de predição e um conjunto associado de unidades de transformação; a figura 9 é um diagrama que mostra árvore de código RQT para as unidades de transformação associadas à unidade de codificação no exemplo da figura 8; a figura 10 é um diagrama que ilustra a predição espacial das unidades de predição; a figura 11 é um diagrama que ilustra a predição temporal; a figura 12 é um diagrama que ilustra o uso de preditores de vetor de moção (MVPS); a figura 13 ilustra um exemplo do uso das listas de figura de referência; a figura 14 é um diagrama que ilustra os processos executados pelo codificador de acordo com o padrão supracitado; a figura 15 representa o uso do collocated_from_10_flag pelo decodificador na decodificação de acordo com o padrão HEVC emergente; as figuras 16A e 16B são diagramas que apresentam uma sintaxe de linha de base PPS; as figuras 16C e 16D são diagramas que apresentam uma sintaxe PPS aprimorada; as figuras 17A a 17D ilustram uma sintaxe e fluxos de processamento aprimorados exemplificativos para processamento de extensão; a figura 18 é um diagrama que apresenta uma sintaxe PPS exemplificativa para uma extensão de faixa HEVC; as figuras 19A a 19C mostram modalidades alternativas adicionais da sintaxe de sinalização de extensão; e a figura 20 ilustra um sistema de processamento exemplificativo que poderia ser usado para implantar as modalidades reveladas.
DESCRIÇÃO DETALHADA
[015] Na descrição a seguir faz-se referência aos desenhos anexos que fazem parte deste documento, e nos quais são mostradas, a título de ilustração, diversas modalidades da presente invenção. Deve-se compreender que outras modalidades podem ser usadas e que alterações estruturais podem ser feitas sem se afastar do escopo da presente invenção.
Transcepção e armazenamento de informações audiovisuais
[016] A Figura 1 é um diagrama que representa uma modalidade exemplificativa de um sistema de codificação e decodificação de vídeo (codec) 100 que pode ser usado para a transmissão e/ou o armazenamento e a recuperação das informações de áudio e/ou de vídeo. O sistema de codec 100 compreende um sistema de criptografia 104, que aceita as informações audiovisuais (AV) 102 e que processa as informações AV 102 para gerar as informações criptografadas (compactadas) AV 106, e um sistema de decodificação 112, que processa as informações criptografadas AV 106 para produzir as informações recuperadas AV 114. Visto que os processos de codificação e de decodificação não são sem perdas, as informações recuperadas AV 114 não são idênticas às informações iniciais AV 102, porém, com uma seleção criteriosa dos processos e dos parâmetros de criptografia, em que as diferenças entre as informações recuperadas AV 114 e as informações não processadas AV 102 são aceitáveis à percepção humana.
[017] As informações criptografadas AV 106 são, tipicamente, transmitidas ou armazenadas e recuperadas antes da decodificação e apresentação, conforme executado pelo sistema de transcepção (transmissão e recepção) ou de armazenamento/recuperação 108. As perdas de transcepção podem ser significativas, porém, as perdas de armazenamento/recuperação são, tipicamente, mínimas ou não existentes, logo, as informações transceptadas AV 110 fornecidas ao sistema de decodificação 112 são, tipicamente, as mesmas que ou, substancialmente as mesmas que, as informações criptografadas AV 106.
[018] A Figura 2A é um diagrama de uma modalidade de um sistema de codec 200A em que as informações criptografadas AV 106 são transmitidas para e recebidas em outra localização. Um segmento de transmissão 230 converte informações de entrada AV 102 em um sinal apropriado para a transmissão e transmite o sinal convertido sobre o canal de transmissão 212 para o segmento de recepção 232. O segmento de recepção 232 recebe o sinal transmitido, e converte o sinal recebido nas informações recuperadas AV 114 para a apresentação. Conforme descrito acima, devido às perdas e erros de codificação e de transmissão, as informações recuperadas AV 114 podem ser de qualidade inferior às informações AV 102 que foram fornecidas ao segmento de transmissão 230. Entretanto, sistemas de correção de erro podem ser incluídos para reduzir ou para eliminar tais erros. Por exemplo, as informações criptografadas AV 106 podem ser, adiante, criptografadas de correção de erro (FEC) adicionando-se informações redundantes, e tais informações redundantes podem ser usadas para identificar e para eliminar os erros no segmento de recepção 230.
[019] O segmento de transmissão 102 compreende um ou mais criptografadores de fonte 202 para codificar fontes múltiplas de informações AV 102. O criptografador de fonte 202 criptografa as informações AV 102, principalmente para propósitos de compactação para produzir as informações criptografadas AV 106, e pode incluir, por exemplo, um processador e instruções de armazenamento de memória relacionadas que implantam um codec, tais como MPEG-1, MPEG- 2, MPEG-4 AVC/H.264, HEVC ou um codec similar, conforme descrito adicionalmente abaixo.
[020] O sistema de codec 200A pode também incluir elementos opcionais indicados pelas linhas tracejadas na Figura 2A. Esses elementos opcionais incluem um criptografador multiplex de vídeo 204, um controlador de criptografia 208 e um decodificador demultiplexador de vídeo 218. O criptografador de multiplex de vídeo opcional 204 multiplexa as informações criptografadas AV 106 a partir de uma pluralidade associada de criptografador(es) de fonte 202 de acordo com um ou mais parâmetros abastecidos pelo controlador de criptografia opcional 208. Tal multiplexação é efetuada, tipicamente, no domínio do tempo e é à base de pacote de dados.
[021] Em uma modalidade, o criptografador multiplex de vídeo 204 compreende um multiplexador estatístico, que combina as informações criptografadas AV 106 a partir de uma pluralidade de criptografadores de fonte 202 de modo a minimizar a largura de banda exigida para a transmissão. Isso é possível, visto que a taxa de bits instantâneos das informações codificadas AV 106 a partir de cada criptografador de fonte 202 pode variar grandemente com o tempo de acordo com o conteúdo das informações AV 102. Por exemplo, as cenas que têm uma grande quantidade de detalhes e de moção (por exemplo, eventos de esporte) são tipicamente criptografadas em taxas de bits mais elevadas que as cenas com pouca moção ou detalhe (por exemplo, diálogo de retrato). Visto que cada criptografador de fonte 202 pode produzir as informações com uma taxa de bit instantânea elevada enquanto outro criptografador de fonte 202 produz as informações com uma taxa de bit instantânea baixa e, visto que o controlador de criptografia 208 pode comandar os criptografadores de fonte 202 para criptografar as informações AV 106 de acordo com determinados parâmetros de desempenho que afetam a taxa de bits instantânea, os sinais a partir de cada um dos criptografadores de fonte 106 (em que cada um tem uma taxa de bit instantânea que varia temporariamente) podem ser combinados juntos de uma maneira ideal para minimizar a taxa de bits instantânea do fluxo multiplexado 205.
[022] Conforme descrito acima, o criptografador de fonte 202 e o criptografador multiplex de vídeo 204 podem ser controlados opcionalmente por um controlador de codificação 208 para minimizar a taxa de bits instantânea do sinal de vídeo combinado. Em uma modalidade, isso pode ser efetuado com o uso de informações a partir de um armazenamento temporário de transmissão 206 que armazena temporariamente o sinal de vídeo codificado e pode indicar a plenitude do armazenamento temporário 206. Isso permite que a codificação executada no criptografador de fonte 202 ou codificador multiplex de vídeo 204 seja uma função do armazenamento que permanece no armazenamento temporário de transmissão 206.
[023] O segmento de transmissão 230 pode também compreender um codificador de transmissão 210, que codifica adicionalmente o sinal de vídeo para a transmissão para o segmento de recepção 232. A criptografia de transmissão pode incluir, por exemplo, a codificação FEC supracitada e/ou a codificação em um esquema de multiplexação para o meio de transmissão de sua escolha. Por exemplo, se a transmissão for por transmissores terrestres ou por satélite, o criptografador de transmissão 114 pode criptografar o sinal em uma constelação de sinal antes da transmissão através da modulação de amplitude de quadratura (QAM) ou técnica de modulação similar. Também, se o sinal de vídeo criptografado deve ser transmitido continuamente através de um dispositivo de protocolo de Internet e da Internet, a transmissão criptografa o sinal de acordo com o protocolo apropriado. Adicionalmente, se o sinal criptografado deve ser transmitido através de telefonia móvel, o protocolo de codificação apropriado é usado, conforme descrito adicionalmente abaixo.
[024] O segmento de recepção 232 compreende um decodificador de transmissão 214 para receber o sinal que foi codificado pelo codificador de transmissão 210 com o uso de um esquema de decodificação complementar ao esquema de codificação usado no criptografador de transmissão 214. O sinal recebido decodificado pode ser temporariamente armazenado pelo armazenamento temporário de recepção opcional 216 e, se o sinal recebido compreender múltiplos sinais de vídeo, o sinal recebido é decodificado multiplex pelo decodificador multiplex de vídeo 218 para extrair o sinal de vídeo de interesse a partir dos sinais de vídeo multiplexados pelo codificador multiplex de vídeo 204. Finalmente, o sinal de vídeo de interesse é decodificado pelo decodificador de fonte 220 com o uso de um esquema ou de um codec de decodificação complementar ao codec usado pelo criptografador de fonte 202 para criptografar as informações AV 102.
[025] Em uma modalidade, os dados transmitidos compreendem uma transmissão contínua de vídeo empacotada transmitida a partir de um servidor (que representa o segmento de transmissão 230) para um cliente (que representa o segmento de recepção 232). Nesse caso, o codificador de transmissão 210 pode empacotar os dados e inserir unidades de camada abstrata de rede (NAL) nos pacotes de rede. As unidades de NAL definem um contêiner de dados que tem um cabeçalho e elementos codificados, e pode corresponder a um quadro de vídeo ou outro slice de dados de vídeo.
[026] Os dados compactados a serem transmitidos podem ser empacotados e transmitidos através do canal de transmissão 212, que pode incluir uma Rede de Área Ampla (WAN) ou uma Rede de Área Local (LAN). Tal rede pode compreender, por exemplo, uma rede sem fio, tal como WiFi, uma rede Ethernet, uma rede Internet ou uma rede misturada composta de diversas redes diferentes. Tal comunicação pode ser afetada através de um protocolo comunicação, por exemplo, Protocolo de Transporte (RTP), Protocolo de Datagrama de Usuario (UDP) ou qualquer outro tipo de protocolo de comunicação. Diferentes métodos de empacotamento podem ser usados para cada unidade de camada abstrata de rede (NAL) do fluxo de bits. Em um caso, um tamanho de unidade de NAL é menor que o tamanho de unidade de transporte máxima (MTU) que corresponde ao maior tamanho de pacote que pode ser transmitido sobre a rede sem que seja fragmentado. Nesse caso, a unidade de NAL é inserida em um único pacote de rede. Em outro caso, múltiplas unidades de NAL inteiras são incluídas em um único pacote de rede. Em um terceiro caso, uma unidade de NAL pode ser demasiadamente grande para ser transmitida em um único pacote de rede e é, portanto, dividida em diversas unidades de NAL fragmentadas, em que cada unidade de NAL fragmentada é transmitida em um pacote de rede individual. As unidades de NAL fragmentadas são enviadas, tipicamente, consecutivamente para propósitos de decodificação.
[027] O segmento de recepção 232 recebe os dados empacotados e reconstitui as unidades de NAL a partir do pacote de rede. Para as unidades de NAL fragmentadas, o cliente concatena os dados a partir das unidades de NAL fragmentadas a fim de reconstruir a unidade de NAL original. O cliente 232 decodifica a transmissão contínua de dados recebida e reconstruída e reproduz as imagens de vídeo em um dispositivo de exibição e os dados de áudio por um alto falante.
[028] A Figura 2B é um diagrama que representa uma modalidade exemplificativa de sistema de codec em que as informações criptografadas são armazenadas e, posteriormente, recuperadas para a apresentação, doravante referido como um sistema de armazenamento de codec 200B. Essa modalidade pode ser usada, por exemplo, para armazenar localmente as informações em um gravador de vídeo digital (DVR), uma unidade flash, um disco rígido, ou um dispositivo similar. Nessa modalidade, as informações AV 102 são criptografadas em fonte pelo criptografador de fonte 202, opcionalmente, armazenadas temporariamente pelo armazenamento temporário de armazenamento 234 antes do armazenamento em um dispositivo de armazenamento 236. O dispositivo de armazenamento 236 pode armazenar o sinal de vídeo temporariamente ou por um período estendido de tempo, e pode compreender um disco rígido, uma unidade flash, RAM ou ROM. As informações AV armazenadas são, então, recuperadas, opcionalmente, armazenadas temporariamente pelo armazenamento temporário de recuperação 238 e decodificadas pelo decodificador de fonte 220.
[029] A Figura 2C é outro diagrama que representa um sistema de distribuição de conteúdo exemplificativo 200C que compreende um sistema de codificação ou criptografador 202 e um sistema de decodificação ou decodificador 220 que pode ser usado para transmitir e para receber os dados HEVC. Em algumas modalidades, o sistema de codificação 202 pode compreender uma interface de entrada 256, um controlador 241, um contador 242, uma memória de quadro 243, uma unidade de criptografia 244, um armazenamento temporário transmissor 267 e uma interface de saída 257. O sistema de decodificação 220 pode compreender um armazenamento temporário receptor 259, uma unidade de decodificação 260, uma memória de quadro 261 e um controlador 267. O sistema de codificação 202 e o sistema de decodificação 220 podem ser acoplados um ao outro através de uma trajetória de transmissão que pode carregar um fluxo de bits compactado. O controlador 241 do sistema de codificação 202 pode controlar a quantidade de dados a serem transmitidos com base na capacidade do armazenamento temporário transmissor 267 ou do armazenamento temporário receptor 259 e pode incluir outros parâmetros tal como a quantidade de dados por uma unidade de tempo. O controlador 241 pode controlar a unidade de criptografia 244 para impedir a ocorrência de uma falha de uma operação de decodificação de sinal recebido do sistema de decodificação 220. O controlador 241 pode ser um processador ou incluir, a título de exemplo não limitante, um microcomputador que tem um processador, uma memória de acesso aleatória e uma memória apenas de leitura.
[030] Como representado pela Figura 2C, um fluxo de bits 267 está representado entre a interface 257 e a interface 266.
[031] As figuras de fonte 246 abastecidas a partir de, a título de exemplo não limitante, um fornecedor de conteúdo, podem incluir uma sequência de vídeo de quadros que inclui figuras de fonte em uma sequência de vídeo. As figuras de fonte 246 podem ser não compactadas ou compactadas. Se as figuras de fonte 246 forem não compactadas, o sistema de codificação 202 pode ter uma função de criptografia. Se as figuras de fonte 246 forem compactadas, o sistema de codificação 202 pode ter uma função de transcodificação. As unidades de codificação podem ser derivadas a partir das figuras de fonte que usam o controlador 241. A memória de quadro 243 pode ter uma primeira área que pode ser usada para armazenar os quadros recebidos a partir das figuras de fonte 246 e uma segunda área que pode ser usada para ler os quadros e emitir os mesmos para a unidade de criptografia 244. O controlador 241 pode emitir um sinal de controle de comutação de área 249 para a memória de quadro 243. O sinal de controle de comutação de área 249 pode indicar se a primeira área ou a segunda área devem ser usadas.
[032] O controlador 241 pode emitir um sinal de controle de criptografia 250 para a unidade de criptografia 244. O sinal de controle de criptografia 250 pode fazer a unidade de criptografia 202 iniciar uma operação de criptografia, tal como preparar as unidades de codificação com base em uma figura de fonte. Em resposta ao sinal de controle de criptografia 250 a partir do controlador 241, a unidade de criptografia 244 pode começar a ler as Unidades De Codificação preparadas para um processo de criptografia de eficiência elevada, tais como um processo de codificação de predição ou um processo de codificação de transformação que processa as Unidades de Codificação preparadas que geram dados de compactação de vídeo com base nas figuras de fonte associadas às Unidades de Codificação.
[033] A unidade de criptografia 244 pode empacotar os dados de compactação de vídeo gerados em uma transmissão contínua elementar empacotada (PES) que inclui pacotes de vídeo. A unidade de criptografia 244 pode mapear os pacotes de vídeo em um sinal de vídeo criptografado 248 com o uso das informações de controle e de um carimbo de tempo de programa (PTS) e o sinal de vídeo criptografado 248 pode ser transmitido para o armazenamento temporário transmissor 267.
[034] O sinal de vídeo criptografado 248, que inclui os dados de compactação de vídeo gerados, pode ser armazenado no armazenamento temporário transmissor 267. O contador de quantidade de informações 242 pode ser incrementado para indicar a quantidade total de dados no armazenamento temporário transmissor 267. Conforme os dados são recuperados e removidos a partir do armazenamento temporário, o contador 242 pode ser decrescido para refletir a quantidade de dados no armazenamento temporário transmissor 267. O sinal de informações de área ocupada 253 pode ser transmitido para o contador 242 para indicar se dados a partir da unidade de criptografia 244 foram adicionados ou removidos a partir do armazenamento temporário transmissor 267 de modo que o contador 242 possa ser incrementado ou decrescido. O controlador 241 pode controlar a produção dos pacotes de vídeo produzidos pela unidade de criptografia 244 com base nas informações de área ocupada 253 que podem ser comunicadas a fim de antecipar, evitar, detectar e/ou impedir que um estouro ou um estouro negativo aconteça no armazenamento temporário transmissor 267.
[035] O contador de quantidade de informações 242 pode ser reinicializado em resposta a um sinal predefinido 254 gerado e emitido pelo controlador 241. Após o contador de quantidade de informações 242 ser reinicializado, o mesmo pode contar a emissão de dados pela unidade de criptografia 244 e obter a quantidade de dados de compactação de vídeo e/ou de pacotes de vídeo que foi gerada. O contador de quantidade de informações 242 pode abastecer o controlador 241 com um sinal de quantidade de informações 255 representativo da quantidade de informações obtidas. O controlador 241 pode controlar a unidade de criptografia 244 de modo que não haja estouro no armazenamento temporário transmissor 267.
[036] Em algumas modalidades, o sistema de decodificação 220 pode compreender uma interface de entrada 266, um armazenamento temporário receptor 259, um controlador 267, uma memória de quadro 261, uma unidade de decodificação 260 e uma interface de saída 267. O armazenamento temporário receptor 259 do sistema de decodificação 220 pode armazenar temporariamente o fluxo de bits compactado, que inclui os dados de compactação de vídeo e pacotes de vídeo recebidos com base nas figuras de fonte a partir das figuras de fonte 246. O sistema de decodificação 220 pode ler as informações de controle e informações de carimbo de tempo de apresentação associadas aos pacotes de vídeo nos dados recebidos e emitir um sinal de número de quadro 263 que pode ser aplicado ao controlador 220. O controlador 267 pode supervisionar o número de quadros contados em um intervalo predeterminado. A título de exemplo não limitante, o controlador 267 pode supervisionar o número de quadros contados cada vez que a unidade de decodificação 260 completa uma operação de decodificação.
[037] Em algumas modalidades, quando o sinal de número de quadro 263 indica que o armazenamento temporário receptor 259 está em uma capacidade predeterminada, o controlador 267 pode emitir um sinal de início de decodificação 264 para a unidade de decodificação 260. Quando o sinal de número de quadro 263 indica que o armazenamento temporário receptor 259 está em menos que uma capacidade predeterminada, o controlador 267 pode aguardar por uma ocorrência de uma situação em que o número de quadros contados se torna igual à quantidade predeterminada. O controlador 267 pode emitir o sinal de início de decodificação 263 quando a situação ocorre. A título de exemplo não limitante, o controlador 267 pode emitir o sinal de início de decodificação 264 quando o sinal de número de quadro 263 indica que o armazenamento temporário receptor 259 está na capacidade predeterminada. Os pacotes de vídeo criptografados e os dados de compactação de vídeo podem ser decodificados em uma ordem monotônica (isto é, que aumentam ou que diminuem) com base nos carimbos de tempo de apresentação associados aos pacotes de vídeo criptografados.
[038] Em resposta ao sinal de início de decodificação 264, a unidade de decodificação 260 pode decodificar os dados que equivalem a uma figura associada a um quadro e os dados de vídeo compactados associados à figura associada aos pacotes de vídeo a partir do armazenamento temporário receptor 259. A unidade de decodificação 260 pode gravar um sinal de vídeo decodificado 269 na memória de quadro 261. A memória de quadro 261 pode ter uma primeira área na qual o sinal de vídeo decodificado é gravado, e uma segunda área usada para ler as figuras decodificadas 262 para a interface de saída 267.
[039] Em diversas modalidades, o sistema de codificação 202 pode ser incorporado ou, de outro modo, associado a um transcodificador ou a um aparelho de criptografia em uma central de recepção e o sistema de decodificação 220 pode ser incorporado ou, de outro modo, associado a um dispositivo à jusante, tal como um dispositivo móvel, um decodificador de sinais ou um transcodificador.
CRIPTOGRAFIA/DECODIFICAÇÃO DE FONTE
[040] Conforme descrito acima, os criptografadores 202 empregam algoritmos de compactação para gerar fluxos de bit e/ou arquivos de menor tamanho que as sequências de vídeo originais nas informações AV 102. Tal compactação é viabilizada reduzindo-se as redundâncias espaciais e temporais nas sequências originais.
[041] Os criptadores 202 da técnica anterior incluem aqueles em conformidade com o padrão de compactação de vídeo H.264/MPEG-4 AVC (“codificação de vídeo avançada”) desenvolvido pelo “Video Coding Expert Group” (VCEG) do ITU e o “Moving Picture Experts Group” (MPEG) do ISO, em particular, na forma da publicação “Advanced Video Coding for Generic Audiovisual Services” (março de 2005), que é incorporado aqui no presente documento a título de referência.
[042] A “Codificação De Vídeo De Alta Eficiência” HEVC (algumas vezes conhecida como H.265) visa substituir o H.264/MPEG-4 AVC. O HEVC introduz novas ferramentas e entidades de codificação que são generalizações das entidades de codificação definidas em H.264/AVC, conforme descrito adicionalmente abaixo.
[043] A Figura 3 é um diagrama de blocos que ilustra uma modalidade do criptografador de fonte 202. O criptografador de fonte 202 aceita as informações AV 102 e usa o amostrador 302 para amostrar as informações AV 102 para produzir uma sequência 303 de imagens digitais sucessivas ou figuras, em que cada uma tem uma pluralidade de pixels. Uma figura pode compreender um quadro ou um campo, em que um quadro é uma imagem completa capturada durante um intervalo de tempo conhecido, e um campo é o conjunto de linhas de varredura numeradas de modo ímpar ou numeradas de modo par que compõem uma imagem parcial.
[044] O amostrador 302 produz uma sequência de figuras não compactadas 303. Cada figura digital pode ser representada por uma ou mais matrizes que têm uma pluralidade de coeficientes que representam as informações sobre os pixels que juntos constituem a figura. O valor de um pixel pode corresponder à luminância ou a outras informações. No caso em que diversos componentes são associados a cada pixel (por exemplo, componentes vermelho-verde-azul ou componentes de luminância e crominância), em que cada um desses componentes pode ser processado separadamente.
[045] As imagens podem ser segmentadas em “slices”, que podem compreender uma porção da figura ou podem compreender a figura inteira. No padrão H.264, esses slices são divididos em entidades de codificação chamadas macroblocos (de modo geral, blocos de 16 pixels x 16 pixels de tamanho) e cada macrobloco pode, por sua vez, ser dividido em diferentes tamanhos de blocos de dados 102, por exemplo, 4x4, 4x8, 8x4, 8x8, 8x 16, 16x8. O HEVC se expande e generaliza a noção da entidade de codificação além daquela do macrobloco.
ENTIDADES DE CODIFICAÇÃO DE HEVC: CTU, CU, PU E TU
[046] Assim como outros padrões de codificação de vídeo, o HEVC é um esquema de codificação preditiva temporal e espacial híbrido a base de bloco. Entretanto, o HEVC introduz novas entidades de codificação que não estão incluídas no padrão H.264/AVC. Essas entidades de codificação incluem (1) o bloco de árvore de codificação (CTUs), as unidades de codificação (CUs), as unidades preditivas (PUs) e as unidades de transformação (TUs) e são adicionalmente descritas abaixo.
[047] A Figura 4 é um diagrama que representa uma figura 400 das informações AV 102, tal como uma das figuras na sequência de figuras 303. A figura 400 é dividida espacialmente em blocos quadrados não sobrepostos conhecidos como unidade(s) de árvore de codificação, ou CTUs 402. Ao contrário de H.264 e padrões de codificação de vídeo anteriores em que a unidade de codificação básica é um macrobloco de 16x16 pixels, a CTU 402 é a unidade de codificação básica de HEVC, e pode ser tão grande quanto 128x128 pixels. Conforme mostrado na Figura 4, as CTUs 402 são tipicamente referidas dentro da figura 400 em uma ordem análoga a uma varredura progressiva.
[048] Cada CTU 402 pode, por sua vez, ser dividida iterativamente em unidades de codificação de tamanho menor variável descritas por uma decomposição de “árvore quaternária” adicionalmente descrita abaixo. As unidades de codificação são regiões formadas na imagem às quais parâmetros de criptografia similares são aplicados e transmitidos no fluxo de bits 314.
[049] A Figura 5 é um diagrama que mostra uma partição exemplificativa de uma CTU 402 em unidades de codificação (CUs) tais como as unidades de codificação 502A e 502B (doravante, referidas alternativamente como unidade(s) de codificação 502). Uma única CTU 402 pode ser dividida em quatro CUs 502, tal como a CU 502A, cada uma, um quarto do tamanho da CTU 402. Cada CU 502A assim dividida pode ser adicionalmente dividida em quatro CUs menores 502B de um quarto do tamanho da CU inicial 502A.
[050] A divisão das CTUs 402 nas CUs 502A e nas CUs menores 502B é descrita pelos parâmetros de dados de “árvore quaternária” (por exemplo, indicadores ou bits) que são criptografados na saída fluxo de bits 314 juntamente com os dados criptografados, conforme acima conhecidos como sintaxe.
[051] A Figura 6 é um diagrama que ilustra uma representação de uma árvore quaternária representativa 600 e dos parâmetros de dados para a CTU 402 que particiona conforme mostrado na Figura 5. A árvore quaternária 600 compreende uma pluralidade de nós que inclui um primeiro nó 602A em um nível hierárquico e um segundo nó 602B em um nível hierárquico inferior (doravante, nós de árvore quaternária podem ser alternativamente referidos como “nós” 602). Em cada nó 602 de uma árvore quaternária, em “indicador dividido” ou bit “1” é atribuído se o nó 602 for adicionalmente dividido em subnós, de outro modo, um bit “0” é atribuído.
[052] Por exemplo, a partição de CTU 402 ilustrada na Figura 5 pode ser representada pela árvore quaternária 600 apresentada na Figura 6, que inclui um indicador dividido de “1” associado ao nó 602A no nível da CU de topo 502 (que indica que existem 4 nós adicionais em um nível hierárquico inferior). A árvore quaternária ilustrada 600 também inclui um indicador dividido de “1” associado ao nó 602B no nível médio da CU 502 para indicar que essa CU é também particionada em quatro CUs 502 adicionais no próximo nível da CU (fundo). O criptografador de fonte 202 pode restringir os tamanhos mínimo e máximo da CU 502, o que altera, portanto, a profundidade máxima possível da CU 502 que se divide.
[053] O criptografador 202 gera as informações criptografadas AV 106 na forma de um fluxo de bits 314 que inclui uma primeira porção que tem dados criptografados para as CUs 502 e uma segunda porção que inclui acima conhecida como elementos de sintaxe. Os dados criptografados incluem os dados que correspondem às CUs 502 criptografadas (isto é, os residuais criptografados juntamente com seus associados vetores de moção, preditores, ou residuais relacionados conforme descrito adicionalmente abaixo). A segunda porção inclui os elementos de sintaxe que podem representar os parâmetros de criptografia que não correspondem diretamente aos dados criptografados dos blocos. Por exemplo, os elementos de sintaxe podem compreender um endereço e uma identificação da CU 502 na imagem, um parâmetro de quantização, uma indicação do modo de Inter/Intra codificação elegido, a árvore quaternária 600 ou outras informações.
[054] As CUs 502 correspondem aos elementos de codificação elementares e incluem duas subunidades relacionadas: as unidades de predição (PUs) e as unidades de transformação (TUs), ambas as quais têm um tamanho máximo igual ao tamanho da CU 502 correspondente.
[055] A Figura 7 é um diagrama que ilustra a partição de uma CU 502 em uma ou mais PUs 702. Uma PU 702 corresponde à CU 502 particionada e é usada predizer os valores de pixels para tipos de intrafigura ou de interfigura. As PUs 702 são uma extensão da partição do H.264/ AVC para a estimativa de moção, e são definidas para cada CU 502 que não é adicionalmente subdividida em outras CUs (“indicador dividido”=0). Em cada folha 604 da árvore quaternária 600, uma CU 502 final (nível de fundo) do 2Nx2N pode possuir um dos quatro padrões possíveis das PUs: 2Nx2N (702A), 2NxN (702B), Nx2N (702C) e NxN (702D)), conforme mostrado na Figura 7.
[056] Uma CU 502 pode ser codificada de modo preditivo tanto espacialmente quanto temporariamente. Se uma CU 502 é codificada em modo “intra”, cada PU 702 da CU 502 pode ter sua própria direção de predição espacial e informações de imagem conforme descrito adicionalmente abaixo. Também, no modo “intra”, a PU 702 da CU 502 pode depender de outra CU 502 devido ao fato de que a mesma pode usar um vizinho espacial, que está em outra CU. Se uma CU 502 é codificada em modo “inter”, cada PU 702 da CU 502 pode ter seu(s) próprio(s) vetor(es) de moção e figura(ões) de referência associada(s) conforme descrito adicionalmente abaixo.
[057] A Figura 8 é um diagrama que mostra uma CU 502 particionada em quatro PUs 702 e um conjunto associado das unidades de transformação (TUs) 802. As TUs 802 são usadas para representar as unidades elementares que são espacialmente transformadas por um DCT (Transformação de Cosseno Discreto). O tamanho e a localização de cada transformação de bloco TU 802 dentro de uma CU 502 são descritos por uma árvore quaternária (RQT) “residual”, adicionalmente ilustrada abaixo.
[058] A Figura 9 é um diagrama que mostra a RQT 900 para as TUs 802 e para a CU 502 no exemplo da Figura 8. Note que o “1” no primeiro nó 902A do RQT 900 indica que existem quatro ramificações e que o “1” no segundo nó 902B no nível inferior adjacente hierárquico indica que o nó indicado adicionalmente tem quatro ramificações. Os dados que descrevem o RQT 900 são também codificados e transmitidos como uma sobrecarga no fluxo de bits 314.
[059] Os parâmetros de codificação de uma sequência de vídeo podem ser armazenados em unidades de NAL dedicadas chamadas de conjuntos de parâmetros. Dois tipos de unidades de NAL de conjuntos de parâmetros podem ser empregadas. O primeiro tipo de conjunto de parâmetros é conhecido como um conjunto de parâmetros de sequência (SPS), e compreende uma unidade de NAL que inclui parâmetros que não são alterados durante toda a sequência de vídeo. Tipicamente, um SPS administra um perfil de codificação, o tamanho dos quadros de vídeo e outros parâmetros. O segundo tipo de conjunto de parâmetros é conhecido como um Conjunto De Parâmetros De Figura (PPS), e codifica os diferentes valores que podem mudar de uma imagem para a outra.
PREDIÇÃO TEMPORAL E ESPACIAL
[060] Uma das técnicas usadas para compactar um fluxo de bits 314 é antecipar o armazenamento dos próprios valores de pixel e, em vez disso, prever os valores de pixel com o uso de um processo que pode ser repetido no decodificador 220 e armazenar ou transmitir a diferença entre os valores de pixel previstos e os valores de pixel atuais (conhecidos como o residual). Contanto que o decodificador 220 possa computar os mesmos valores de pixel previstos a partir das informações fornecidas, os valores de figura reais podem ser recuperados adicionando-se os residuais aos valores previstos. A mesma técnica pode ser usada da mesma forma para compactar outros dados.
[061] Novamente em referência à Figura 3, cada PU 702 da CU 502 que é processada é fornecida a um módulo de preditor 307. O módulo de preditor 307 prediz os valores das PUs 702 com base nas informações nas PUs 702 próximas no mesmo quadro (predição intraquadro, que é executada pelo preditor espacial 324) e nas informações das PUs 702 em quadros temporariamente próximos (predição de interquadro, que é executada pelo preditor temporal 330). A predição temporal, entretanto, pode não ser sempre com base em uma PU colocada, visto que PUs colocadas são definidas para serem situadas em um quadro de referência/ não referência que tem as mesmas coordenadas x e y conforme a PU atual 702. Essas técnicas usufruem de dependências espaciais e temporais entre as PUs 702.
[062] As unidades criptografadas podem, portanto, serem categorizadas para incluírem dois tipos: (1) unidades preditas não temporariamente e (2) unidades preditas temporariamente. As unidades preditas não temporariamente são preditas com o uso do quadro atual, que inclui as PUs 702 adjacentes ou próximas dentro do quadro (por exemplo, predição intraquadro), e são geradas pelo preditor espacial 324. As unidades preditas temporariamente são preditas a partir de uma figura temporal (por exemplo, quadros P) ou preditas a partir de pelo menos duas figuras de referência temporariamente adiante e/ou atrás (isto é, quadros B).
PREDIÇÃO ESPACIAL
[063] A Figura 10 é um diagrama que ilustra uma predição espacial das PUs 702. Uma figura pode compreender uma PU 702 e outras PUs 1-4 espacialmente próximas, que incluem a PU 702N próxima. O preditor espacial 324 prediz o bloco atual (por exemplo, o bloco C da Figura 10) por meio de uma predição “intraquadro” que usa as PUs 702 de outros blocos de pixels previamente criptografados da imagem atual.
[064] O preditor espacial 324 localiza uma PU próxima (por exemplo, PU 1, 2, 3 ou 4 da Figura 10) que é apropriada para a codificação espacial e determina uma direção de predição angular para aquela PU próxima. No HEVC, 35 direções podem ser consideradas, de modo que cada PU possa ter uma das 35 direções associada consigo, que incluem horizontal, vertical, diagonal de 45 graus, diagonal de 135 graus, DC, etc. A direção de predição espacial da PU é indicada na sintaxe.
[065] Referindo-se novamente ao preditor espacial 324 da Figura 3, essa PU situada próxima é usada para computar uma PU residual 704 (e) conforme a diferença entre os pixels da PU próxima 702N e da PU atual 702, com o uso do elemento 305. O resultado é um elemento de PU intrapredito 1006 que compreende uma direção de predição 1002 e a PU residual intrapredita 1004. A direção de predição 1002 pode ser codificada inferindo-se a direção a partir das PUs espacialmente próximas, e as dependências espaciais da figura, o que permite que a taxa de codificação do modo de direção de intra predição seja reduzida.
PREDIÇÃO TEMPORAL
[066] A Figura 11 é um diagrama que ilustra a predição temporal. A predição temporal considera as informações a partir de figuras ou de quadros temporariamente vizinhos,tal como a figura anterior, a figura i-1.
[067] De modo geral, a predição temporal inclui a predição única (tipo P), que prediz a PU 702 referindo-se a uma área de referência a partir de apenas uma figura de referência, e a predição múltipla (tipo B), que prediz a PU referindo-se a duas áreas de referência a partir de uma ou duas figuras de referência. As imagens de referência são imagens na sequência de vídeo que foram previamente codificadas e, então, reconstruídas (mediante decodificação).
[068] O preditor temporal 330 identifica, em uma ou diversas dessas áreas de referência (uma para o tipo P ou diversas para o tipo B), áreas de pixels em um quadro temporariamente próximo de modo que as mesmas possam ser usadas como preditores dessa PU atual 702. No caso em que diversos preditores de áreas são usados (tipo B), os mesmos podem ser mesclados para gerar uma única predição. A área de referência 1102 é identificada no quadro de referência por um vetor de moção (MV) 1104 que define o deslocamento entre a PU atual 702 no quadro atual (figura i) e a área de referência 1102 (refldx) no quadro de referência (figura i- 1). Uma PU na figura B pode ter até dois MVs. Ambos o MV e as informações reflexas são incluídas na sintaxe do fluxo de bits do HEVC.
[069] Novamente com referência à Figura 3, uma diferença entre os valores de pixel entre a área de referência 1102 e a PU atual 702 pode ser computada pelo elemento 305 conforme selecionado pelo comutador 306. Essa diferença é referida como o residual da PU interpredita 1106. Ao final do processo de predição temporal ou de interquadro, a PU atual 1006 é composta de um vetor de moção MV 1104 e um residual 1106.
[070] Entretanto, conforme descrito acima, uma técnica para compactar dados é gerar valores previstos para os dados com o uso de meios repetíveis pelo decodificador 220, que computa a diferença entre os valores reais e preditos dos dados (o residual) e que transmite o residual para decodificação. Contanto que o decodificador 220 possa reproduzir os valores previstos, os valores residuais podem ser usados para determinar os valores reais.
[071] Essa técnica pode ser aplicada aos MVs 1104 usados na predição temporal gerando-se uma predição do MV 1104, que computa uma diferença entre o MV real 1104 e o MV predito 1104 (um residual) e que transmite o residual de MV no fluxo de bits 314. Contanto que o decodificador 220 possa reproduzir o MV predito 1104, o MV real 1104 pode ser computado a partir do residual. O HEVC computa um MV predito para cada PU 702 com o uso da correlação espacial do movimento entre as PUs 702 próximas.
[072] A Figura 12 é um diagrama que ilustra o uso de preditores de vetor de moção (MVPs) no HEVC. Os preditores de vetor de moção V1, V2 e V3 são tomados a partir dos MVs 1104 de uma pluralidade de blocos 1, 2 e 3 situados próximos ou adjacentes ao bloco para codificar (C). Visto que esses vetores se referem aos vetores de moção de blocos espacialmente vizinhos dentro do mesmo quadro temporal e podem ser usados para predizer o vetor de moção do bloco para criptografar, esses vetores são conhecidos como preditores de moção espacial.
[073] A Figura 12 também ilustra um preditor de vetor de moção temporal VT que é o vetor de moção do bloco cossituado C em uma figura previamente decodificada (na ordem de decodificação) da sequência (por exemplo, o bloco da figura i-1 situada na mesma posição espacial conforme o bloco que é codificado (bloco C da imagem i).
[074] Os componentes dos preditores de vetor de moção espacial V1, V2 e V3 e o preditor de vetor de moção temporal VT podem ser usados para gerar um preditor de vetor de moção mediano VM. No HEVC, os três preditores de vetor de moção espacial podem ser tomados conforme mostrado na Figura 12, ou seja, a partir do bloco situado à esquerda do bloco para criptografar (V1), do bloco situado acima (V3) e a partir de um dos blocos situados nas respectivas arestas do bloco para codificar (V2), de acordo com uma regra predeterminada de disponibilidade. Essa técnica de seleção de preditor MV é conhecida como predição de vetor de moção avançada (AMVP).
[075] Uma pluralidade de (tipicamente, cinco) candidatos de preditor MV (MVP) que têm preditores espaciais (por exemplo, V1, V2 e V3) e preditor(es) temporal(is) VT é, portanto, obtido. A fim de reduzir a sobrecarga do preditor de vetor de moção que sinaliza no fluxo de bits, o conjunto de preditores de vetor de moção pode ser reduzido eliminando- se os dados para vetores de moção duplicados (por exemplo, MVs que têm o mesmo valor conforme outros MVs podem ser eliminados a partir dos candidatos).
[076] O criptografador 202 pode selecionar um preditor de vetor de moção “melhor” dentre os candidatos, e computar um residual de preditor de vetor de moção como uma diferença entre o preditor de vetor de moção selecionado e o vetor de moção real, e transmitir o preditor de vetor de moção residual no fluxo de bits 314. Para executar essa operação, o vetor de moção real deve ser armazenado para uso posterior pelo decodificador 220 (apesar de o mesmo não ser transmitido no fluxo de bits 314). Os bits que sinalizam ou os indicadores são incluídos no fluxo de bits 314 para especificar que o residual de MV foi computado a partir do preditor de vetor de moção normalizado, e são posteriormente usados pelo decodificador para recuperar o vetor de moção. Esses bits ou indicadores são adicionalmente descritos abaixo.
[077] Novamente em referência à Figura 3, os residuais intrapreditos 1004 e os residuais interpreditos 1106 obtidos a partir do processo de predição espacial (intra) ou temporal (inter) são, então, transformados pelo módulo de transformação 308 nas unidades de transformação (TUs) 802 descritas acima. Uma TU 802 pode ser adicionalmente dividida em TUs menores com o uso da decomposição RQT descrita acima em relação à Figura 9. No HEVC, de modo geral 2 ou 3 níveis de decomposições são usadas e tamanhos de transformação autorizados são a partir de 32x32, 16x16, 8x8 e 4x4. Conforme descrito acima, a transformação é derivada de acordo com uma transformação de cosseno discreta (DCT) ou transformação de seno discreta (DST).
[078] Os coeficientes transformados residuais são, então, quantizados pelo quantizador 310. A quantização exerce um papel bastante importante na compactação de dados. No HEVC, a quantização converte os coeficientes de transformação de alta precisão em um número finito de valores possíveis. Apesar de a quantização permitir uma grande quantidade de compactação, a quantização é uma operação com perdas, e a perda por quantização não pode ser recuperada.
[079] Os coeficientes do residual transformado quantizado são, então, codificados por meio de um codificador de entropia 312 e, então, inseridos no fluxo de bits compactado 310 como uma parte dos dados úteis que codificam as imagens das informações AV. Os elementos de codificação de sintaxe podem, também, serem codificados com o uso de dependências espaciais entre elementos de sintaxe para aumentar a eficiência de codificação. O HEVC oferece codificação aritmética binária adaptável ao contexto (CABAC). Outras formas ou entropia ou codificação aritmética podem também ser usadas.
[080] A fim de calcular os preditores usados acima, o criptografador 202 decodifica PUs previamente criptografadas 702 com o uso de do ciclo de “decodificação” 315, que inclui os elementos 316, 318, 320, 322 e 328. Esse ciclo de decodificação 315 reconstrói as PUs e as imagens a partir dos residuais transformados quantizados.
[081] Os coeficientes residuais de transformação quantizados E são fornecidos ao desquantizador 316, que aplica a operação inversa àquela do quantizador 310 para produzir coeficientes de transformação desquantizados da PU residual (E) 708. Os dados desquantizados 708 são, então, fornecidos ao transformador inverso 318 que aplica o inverso da transformação aplicada pelo módulo de transformação 308 para gerar os coeficientes de residual da PU reconstruídos (e) 710.
[082] Os coeficientes reconstruídos da PU residual 710 são, então, adicionados aos coeficientes correspondentes da PU predita correspondente (x) 702' selecionados a partir da PU intrapredita 1004 e da PU interpredita 1106 pelo seletor 306. Por exemplo, se o residual reconstruído vem do processo de codificação “intra” do preditor espacial 324, o preditor “intra” (x’) é adicionado a esse residual a fim de recuperar uma PU reconstruída (x”) 712 que corresponde à PU original 702 modificada pelas perdas que resultam de uma transformação, por exemplo, nesse caso, as operações de quantização. Se o residual 710 vem de um processo de codificação “inter” do preditor temporal 330, as áreas apontadas pelos vetores de moção atuais (essas áreas pertencem às imagens de referência armazenadas no armazenamento temporário de referência 328 referido pelos índices de imagem atuais) são mescladas e, então, adicionadas a esse residual decodificado. Desse modo, a PU original 702 é modificada pelas perdas que resultam das operações de quantização.
[083] Até o ponto em que o criptografador 202 usa as técnicas de predição de vetor de moção análogas às técnicas de predição de imagem descritas acima, em que o vetor de moção pode ser armazenado com o uso do armazenamento temporário de vetor de moção 329 para o uso em quadros temporariamente subsequentes. Conforme descrito adicionalmente abaixo, um indicador pode ser ajustado e transferido na sintaxe para indicar que o vetor de moção para o quadro decodificado atualmente deve ser usado para pelo menos o quadro codificado subsequentemente em vez de substituir os conteúdos do armazenamento temporário MV 329 com o MV para o quadro atual.
[084] Um filtro de ciclo 322 é aplicado ao sinal reconstruído (x”) 712 a fim de reduzir os efeitos criados pela quantização pesada dos residuais obtidos, e para aprimorar a qualidade do sinal. O filtro de ciclo 322 pode compreender, por exemplo, um filtro desbloqueador para alisamento das bordas entre as PUs para atenuar visualmente as frequências elevadas criadas por um processo de codificação e um filtro linear que é aplicado após todas as PUs para uma imagem terem sido decodificadas para minimizar a soma da diferença quadrada (SSD) com a imagem original. O processo de filtragem linear é executado em um quadro por uma base de quadro e usa diversos pixels ao redor do pixel a ser filtrado, e também usa dependências espaciais entre os pixels do quadro. Os coeficientes de filtro linear podem ser codificados e transmitidos em um cabeçalho do fluxo de bits, tipicamente, uma figura ou um cabeçalho de slice.
[085] As imagens filtradas, também conhecidas como imagens reconstruídas, são então armazenadas como imagens de referência a partir do armazenamento temporário de figura de referência 328 a fim de permitir que as predições “Inter” subsequentes ocorram durante a compactação das imagens subsequentes da sequência de vídeo atual.
SINTAXE DE IMAGEM DE REFERÊNCIA
[086] Conforme descrito acima, para reduzir os erros e aprimorar a compactação, o HEVC permite o uso de diversas imagens de referência para a estimativa e a compensação de moção da imagem atual. Dada uma PU atual 702 em uma figura atual, a PU 1102 colocada para um slice particular reside em uma figura de referência/não referência próxima associada. Por exemplo, na Figura 12, a PU 1102 colocada para a PU atual 702 na figura (i) reside na figura de referência próxima associada (i-1). Os melhores preditores “inter”, ou temporais, da PU atual 702 são selecionados em algumas das múltiplas figuras de referência/não referência, que podem ser com base em figuras temporariamente anteriores a ou após a figura atual na ordem de exibição (predição para frente e de trás para frente, respectivamente).
[087] Para o HEVC, o índice para as figuras de referência é definido pelas listas de figura referência, que são descritas na sintaxe de slice. A predição para frente é definida pela list_0 (RefPicList0), e a predição invertida é definida pela list_1 (RefPicList1), e tanto lista 0 quanto a lista 1 podem conter múltiplas figuras de referência anteriores a ou/e posteriores à figura atual na ordem de exibição.
[088] A Figura 13 ilustra um exemplo do uso das listas de figura de referência. Considere as figuras 0, 2, 4, 5, 6, 8 e 10 conforme mostradas na Figura 13, em que os números de cada figura denotam a ordem de exibição e a figura atual é a figura 5. Nesse caso, as figuras de referência list_0 com os índices de figura de referência ascendentes e que iniciam com um índice igual a zero são 4, 2, 0, 6, 8 e 10, e as figuras de referência de lista 1 com os índices de figura de referência ascendentes e que iniciam com um índice igual a zero são 6, 8, 10, 4, 2 e 0. Um slice cuja predição compensada de moção é restrita à predição de list_0 é chamado um slice P ou preditivo. As figuras colocadas são indicadas usando- se de o índice collocated_ref_idx no HEVC. Um slice para o qual a predição compensada de moção inclui mais de uma figura de referência é um slice B ou bipreditivo. Para os slices B, a predição compensada de moção pode incluir figuras de referência a partir da predição de lista 1 assim como da list0.
[089] Logo, uma PU colocada 1102 é disposta em uma figura de referência especificada tanto na list_0 quanto na list_1. Um indicador (collocated_from_10_flag) é usado para especificar se a partição colocada deve ser derivada a partir da list_0 ou da list_1 para um tipo particular de slice. Cada uma das figuras de referência é também associada a um vetor de moção.
[090] O armazenamento e a recuperação das figuras de referência e vetores de moção relacionados para o padrão HEVC emergente são expressos no parágrafo 8.4.1.2.9 de Benjamin Bross, Woo-Jin Han, Jens-Rainer Ohm, Gary J. Sullivan, Thomas Wiegand, “WD4: Working Draft 4 de Codificação De Vídeo De Eficiência Elevada, “Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 e ISO/IECJTC1/SC29/WG11, JCTVC-F803_d5, 6th Meeting: Torino, IT, 14-22 de julho de 2011 (incorporado aqui no presente documento a título de referência).
[091] De acordo com o padrão, se o slice_type for igual a B e o collocated_from_10_flag é 0, o collocated_ref_idx variável especifica a figura de referência como a figura que contém a partição colocalizada conforme especificado por RefPicList1. De outro modo (slice_type é igual a B e collocated_from_10_flag é igual a 1 ou slice_type é igual a P), o collocated_ref_idx variável especifica a figura de referência como a figura que contém a partição colocada conforme especificado por RefPicList0.
[092] A Figura 14 é um diagrama que ilustra os processos executados pelo criptografador 202 de acordo com o padrão supracitado. O bloco 1402 determina se a figura atual é uma figura de referência para outra figura. Se não, não há necessidade de armazenar a figura de referência ou as informações de vetor de moção. Se a figura atual for uma figura de referência para outra figura, o bloco 1504 determina se a “outra” figura é uma figura do tipo P ou de um tipo B. Se a figura é uma figura do tipo P, o processamento é passado aos blocos 1410, que ajustam o colloc_from_10_flag para um e armazenam a figura de referência e o vetor de moção na lista 0. Se a “outra figura” for uma figura do tipo B, o bloco 1406, contudo, direciona o processamento aos blocos 1408 e 1410 se a figura de referência desejada for para ser armazenada na lista 0, e aos blocos 1412 e 1414 se a figura de referência desejada e vetor de moção forem para ser armazenados na lista 1. Essa decisão pode ser com base em se é desejável selecionar as figuras de referência a partir de uma figura que sucede ou que precede temporariamente. Qual das múltiplas figuras de referência possíveis é selecionada é determinada de acordo com o índice collocated_ref_idx.
[093] A Figura 15 representa o uso de um collocated_from_10_flag pelo decodificador 220 na decodificação de acordo com o padrão HEVC anterior. O bloco 1502 determina se o tipo de slice atual que é computado é de um tipo I ou intra. Tais slices não usam os slices temporariamente próximos no processo de criptografia/decodificação e, logo, não há necessidade de encontrar uma figura de referência temporariamente próxima. Se o tipo de slice não é do tipo I, o bloco 1504 determina se o slice é um slice B. Se o slice não é do tipo B, o mesmo é um slice do tipo P, e a figura de referência que contém a partição colocada é encontrada na lista 0, de acordo com o valor de collocated_ref_idx. Se o slice é do tipo B, o collocated_from_10_flag determina se a figura de referência é encontrada na lista 0 ou na lista 1. Conforme o índice indica, a figura é colocada é, portanto, definida como a figura de referência que tem o collocated_ref_idx indicado tanto na lista 0 quanto na lista 1, dependendo do tipo de slice (tipo B ou tipo P) e do valor do collocated_from_10_flag. Em uma modalidade de HEVC, a primeira figura de referência (a figura de referência que tem o índice [0] conforme mostrado na Figura 13 é selecionada como a figura colocada).
SINTAXE CONJUNTO DE PARÂMETROS DE FIGURA DE LINHA DE BASE
[094] As Figuras 16A e 16B são diagramas que apresentam a sintaxe de Carga De Sequência de Bytes Brutos (RBSP) de linha de base PPS. A sintaxe para lidar com as extensões na PPS é mostrada na Figura 16B. A lógica 1602 determina se a mídia deve ser codificada/decodificada, incluindo uma primeira extensão, e lê os dados e as sinalizações apropriadas. A lógica 1602 compreende as declarações 16061616. A declaração 1606 lê um pps_extensiona1_flag, que indica se a primeira extensão foi selecionada para um processo de codificação/decodificação. Em uma modalidade, um valor lógico de “1” indica que a mídia deve ser processada com o uso da primeira extensão, e um valor lógico de “0” indica que a mídia não deve ser processada com o uso da primeira extensão. A declaração 1608 é uma declaração condicional que direciona a execução das declarações 16121614 dependendo do valor de um (previamente lido) transform_skip_enabled_flag. Em particular, a lógica ilustrada executa as operações mostradas nas declarações 1612-1614 se o transform_skip_enabled_flag é um “1” lógico ou verdadeiro. O transform_skip_enabled_flag 1601 da sintaxe PPS é conforme mostrado na Figura 16A.
[095] Ignorar a transformação é uma extensão que permite que a transformação DCT de uma TU a ser ignorada sob determinadas circunstâncias. Essencialmente, a transformação DCT tem a propriedade de que, para uma mídia com sinais elevadamente correlacionados, a mesma resulta em uma excelente compactação de energia. Entretanto, para uma mídia com sinais elevadamente não correlacionados (por exemplo, uma mídia que tem uma grande quantidade de detalhes), o desempenho de compactação é muito menor. Para algumas mídias, o processo de transformação DCT tem tão pouco desempenho de compactação, que é melhor que o processo seja ignorado para melhor desempenho de processamento. O transform_skip_enabled_flag indica quando ignorar a transformação DCT de uma TU é permitida. Isso é descrito, por exemplo, em “Early Termination of Transform Skip Mode for High Efficiency Video Coding”, por Do Kyung Lee, Miso Park, Hyung-Do Kim e Je-Chang Jeong no Proceedings of the 2014 International Conference on Communications, Signal Processing and Computers, que é incorporado no presente documento a título de referência. Se o transform_skip_enabled_flag é um 1 lógico (verdadeiro), o processamento é encaminhado para a declaração 1612 e 1614. De outro modo, o processamento é encaminhado para a declaração 1618. A declaração 1612 executa a operação de leitura de um valor log2_transform_skip_max_size_minus2, que indica o tamanho de TU máximo que pode ser ignorado (se o transform_skip_enabled_flag indicar que executar a transformação DCT da TU é permitido). A declaração 1614 executa a operação de leitura de um indicador pps_extension2_flag que indica se uma extensão adicional (extension2) é implantada.
[096] Depois, a lógica 1604 é executada. A lógica 1604 AS inclui declarações 1618-1622. A declaração 1618 é uma declaração condicional que encaminha o processamento para a lógica das declarações 1620 e 1622 se o pps_extension2_flag for um 1 lógico. As declarações 1620 e 1622 leem os pps_extension_data_flags adicionais enquanto existem os dados RBSP.
[097] No projeto PPS supracitado de extensão de faixa HEVC, o pps_extension2_flag conta como dados de extensão ainda não identificados. De acordo com a lógica descrita acima, se o pps_extension1_flag for verdadeiro, o pps_extension2_flag está presente. Se o pps_extension1_flag não é verdadeiro, o pps_extension2_flag não está presente. Se o pps_extension2_flag não está presente, o pps_extension2_flag é inferido para ser igual a 0. Se o pps_extension2_flag é 0, não existem dados de extensão adicionais.
[098] Essa formulação lógica sempre verifica o valor de pps_extension2_flag para uma possível sintaxe de extensão adicional independentemente do status do pps_extension1_flag. Entretanto, se o pps_extension1_flag é 0, não há necessidade de verificar o pps_extension2_flag, devido ao fato de que, se o pps_extension1_flag é 0, o pps_extension2_flag não estará presente e, se o pps_extension2_flag não está presente, o mesmo será inferido para ser igual a 0, o que indica que não existem dados de extensão adicionais.
[099] O Pedido De Patente Relacionado U.S. No De Série 14/533.386, intitulado “MODIFICATION OF PICTURE PARAMETER SET (PPS) FOR HEVC EXTENSIONS”, descreve a modificação da sintaxe supracitada em que a lógica 1604 (declarações 16161620) da Figura 16B é incorporado dentro da declaração condicional 1608, e é executado apenas se o pps_extension1_flag testa para um 1 lógico. Isso permite que a lógica das declarações 1610-1620 seja ignorada se o pps_extension1_flag testa para um lógico 0, poupando-se, portanto, tempo de execução.
[100] Esse projeto funciona quando existe apenas uma extensão PPS (por exemplo, a extensão que ignora transformação) para ser habilitada e, talvez, uma segunda extensão PPS para ler os dados adicionais (por exemplo, sinalizados pelo pps_extension2_flag) que deve ser executada apenas se a primeira extensão PPS for também executada. Entretanto, se existirem extensões PPS adicionais, esse projeto pode não ser eficaz devido ao fato de que, a sintaxe demanda que as extensões posteriores devem analisar toda a sintaxe de extensão anterior, mesmo que a extensão e/ou sintaxe previamente executada possa ser independente de ou não relacionada à(s) extensão(ões) e/ou à sintaxe posteriormente executada(s).
SINTAXE DE CONJUNTO DE PARÂMETROS DE FIGURA APRIMORADA
[101] As Figuras 17A a 17D são diagramas que apresentam uma sintaxe de Carga De Sequência De Bytes Brutos (RBSP) modificada PPS. Em resumo, a sintaxe RBSP modificada define um indicador de sinalização de presença de extensão (pps_extension_present_flag) que sinaliza se a figura na sequência deve ser processada pelo menos em parte de acordo com pelo menos uma função de extensão. Se o pps_extension_present_flag testar falso, é conhecido que não existem extensões PPS a seguir, e a necessidade de uma lógica de sintaxe que define e que administra tais extensões não é mais exigida e o processamento associado à execução de tal lógica de sintaxe não é mais executada, poupando-se, portanto, recursos de processamento, recursos de memória e tempo de processamento. A sintaxe RBSP de PPS modificada também inclui um ou mais indicadores que sinalizam extensão, em que cada um sinaliza a presença de uma função de extensão PPS associada. Isso aumenta a eficiência na análise e na execução da sintaxe PPS, devido ao fato de que, o um ou mais indicadores que sinalizam extensão, os dados associados e as instruções lógicas não precisam ser armazenados na sintaxe, lidos ou executados pelo processador.
[102] Em uma modalidade, a sintaxe RBSP de PPS é modificada adicionalmente de modo que os indicadores que sinalizam extensão são indexados e lidos iterativamente. Por exemplo, n indicadores que sinalizam extensão PPS podem ser denotados como pps_extension_flag[i] em que ns é um índice que tem um valor a partir de 0 a n-1 n-1. Em uma modalidade, sete indicadores que sinalizam uma extensão PPS são definidos (n = 7) e podem ser usados. Cada tal indicador de extensão PPS individual pode controlar a sintaxe de função de extensão específica que analisa. Por exemplo, um primeiro indicador de extensão PPS pode controlar a análise de uma sintaxe relacionada de extensão de faixa HEVC e um segundo indicador de extensão PPS pode controlar a análise de uma sintaxe relacionada MV-HEVC.
[103] Em outra modalidade, os supracitados podem ser estendidos para acomodar extensões maiores que n (n>=8) usando-se uma sintaxe pps_extension_7bits adicional. Essa sintaxe adicional permite a sinalização de extensões adicionais que podem ser projetadas no futuro, acima sete indicadores PPS são insuficientes para a tarefa. Em uma modalidade preferencial, o número de bits de extensão (assim como o valor máximo do índice descrito acima) é ajustado para múltiplos de 8 bits (0-7), de modo que a análise byte- por-byte pode ser facilmente concluída.
[104] A Figura 17A é um fluxograma que ilustra operações exemplificativas que podem ser empregadas para codificar/criptografar uma sequência de uma pluralidade de figuras com o uso de uma ou mais funções de extensão. No bloco 1700, um indicador de sinalização de presença de extensão é lido. O indicador de sinalização de presença de extensão indica se a figura referida pela sintaxe PPS deve ser processada pelo menos em parte de acordo com pelo menos uma função de extensão. No bloco 1702, uma determinação é feita em relação a se o indicador de sinalização de presença de extensão lido indica que a figura associada à sintaxe PPS deve ser processada pelo menos em parte com pelo menos uma função de extensão. Em uma modalidade, isso é concluído determinando-se se o indicador que sinaliza a presença de função de extensão tem um primeiro valor. O “valor” pode ser um valor lógico (por exemplo, verdadeiro ou falso) ou pode ser um valor numérico ou alfanumérico (por exemplo, 1 ou 0) que indica um valor lógico. Se o indicador de sinalização de presença de extensão não tiver um primeiro valor, que indica que a figura associada à sintaxe PPS deve ser processada sem quaisquer funções de extensão, as operações mostradas nos blocos 1704-1708 são desviadas. Se o indicador de sinalização de presença de extensão é determinado para indicar que a figura deve ser decodificada pelo menos em parte de acordo com pelo menos uma função de extensão, o primeiro indicador de sinalização de função de extensão é lido conforme mostrado no bloco 1704 e, independentemente do valor do primeiro indicador de sinalização de função de extensão, uma segunda função que sinaliza função de extensão é lida, conforme mostrado no bloco 1706. Logo, devido ao fato de que o segundo indicador de sinalização de função de extensão é lido independentemente do valor ou status do primeiro indicador de sinalização de função de extensão previamente lido, a leitura do segundo indicador de sinalização de função de extensão é independente do valor do primeiro indicador de sinalização de função de extensão lido. Isso está em contraste com a sintaxe mostrada na Figura 16B, em que o pps_extension2_flag é lido apenas pela lógica 1614 se o pps_extension1_flag testa verdadeiro na lógica 1608. Finalmente, conforme retratado no bloco 1708, a(s) função(ões) de extensão sinalizada(s) pelos indicadores lidos nos blocos 1704-1706 é(são) executada(s).
[105] A Figura 17B é um diagrama que apresenta uma sintaxe PPS exemplificativa que pode ser usada para executar as operações mostradas na Figura 17A para decodificar uma sequência de uma pluralidade de figuras com o uso de uma ou mais funções de extensão. Na modalidade ilustrada, a(s) função(ões) de extensão inclui(em) a funcionalidade de extensão ignorar a transformação DCT da TU descrita acima.
[106] Como representado na Figura 17B, um conjunto de parâmetros de figura 1711 pode incluir parâmetros como, pps_loop_filter_across_slices_enabled_flag 1741, deblocking_filter_control_present_flag 1743, pps_scaling_list_data_present_flag 1745, e slice_segment_header_extension_present_flag 1747.
[107] A lógica 1712 lê o indicador de sinalização de presença de extensão. Na modalidade ilustrada, o indicador de sinalização de presença de extensão compreende um pps_extension_present_flag. A lógica 1714 testa para determinar se o pps_extension_present_flag é logicamente verdadeiro e, apenas se o for, executa a lógica 1716-1740. Se é determinado que o pps_extension_present_flag é logicamente falso, processamento é encaminhado para a lógica 1740. Consideravelmente, isso significa que não serão lidos indicadores de extensão e que nenhum processamento de função de extensão será executado.
[108] A lógica 1716-1720 na Figura 17B executa as operações descritas nos blocos 1704 e 1706 da Figura 17A e, logo, lê o(s) indicador(es) que sinaliza(m) função de extensão (aqui, o pps_extension_flag[i] e/ou o pps_extension_7bits_flag). Em particular, a lógica 1716 e 1718 lê o pps_extension_flag[i] para i=0 a n-1 (na modalidade exemplificativa n=1, portanto, apenas um indicador é lido, nomeadamente o pps_extension_flag[0]). A lógica 1720 lê um valor pps_extension_7bits, que é usado para sinalizar uma funcionalidade de extensão adicional, além de até 7 funções de extensão referidas pelos pps_extension_flag[0] a pps_extension_flag[6].
[109] A lógica 1722 e 1728 testa para determinar se o read pps_extension_flag[0] tinha um valor lógico que indica que a função de extensão relacionada (ignorar a DCT da TU) é desejada. Se o pps_extension_flag[0] tiver tal valor (por exemplo, testa logicamente verdadeiro), a lógica 1724-1730 é executada.
[110] A lógica 1724 testa para determinar se ignorar a transformação é habilitada testando-se o transform_skip_enabled_flag. Se habilitada (por exemplo, o transform_skip_enabled_flag testa verdadeiro), a lógica 1726-1728 da sintaxe PPS é executada. A lógica 1726-1728 lê o valor representado por log2_max_transform_skip_block_size_minus2, que especifica o tamanho de bloco máximo de unidade de transformação (TU) para o qual a transformação DCT pode ser ignorada.
[111] A lógica 1732 testa para determinar se o valor de pps_extension_7bits que foi lido pela lógica 1760 testa verdadeiro. Caso sim, a lógica 1734-1738 lê tais bits de sinalização adicionais.
[112] A Figura 17C é um fluxograma que ilustra adicionalmente a sintaxe PPS exemplificativa apresentada na Figura 17B, a qual, conforme descrito acima, lê todos os indicadores de sinalização de função de extensão (por exemplo, pps_extension_flag[i] - pps_extension_flag[n-1]) primeiro e, então, executa cada função de extensão, uma após a outra.
[113] Com referência à Figura 17C, o bloco 1750 lê o indicador de sinalização de presença de extensão. O bloco 1752 determina se o indicador de sinalização de presença de extensão tem um valor que indica que pelo menos uma função de extensão deve ser executada. Se o indicador de sinalização de presença de extensão indica que nenhuma função de extensão deve ser executada, o processamento é encaminhado para o bloco 1758. Se o indicador de sinalização de presença de extensão indica que uma ou mais funções de extensão devem ser executadas, o processamento é encaminhado para o bloco 1753, que lê todos os indicadores de sinalização de função de extensão (por exemplo, o pps_extension_flag[i] ao pps_extension_flag[n-1]). O processamento é, então, passado ao bloco 1754, que testa para determinar se o primeiro indicador de sinalização de função de extensão tem um valor que sinaliza que a primeira função de extensão deve ser executada. A Figura 17B ilustra uma sintaxe exemplificativa para executar esse teste na lógica 1722.
[114] Se o indicador de sinalização de função de extensão indica que a função de extensão não deve ser executada, o processamento é ao redor do blocos 1756 e 1758. A sintaxe para executar essas operações é exemplificada pela lógica 1722 à lógica 1730 da Figura 17B. Se o indicador de sinalização de função de extensão indica que a função de extensão deve ser executada, o processamento é encaminhado para o bloco 1756 e, pelo menos uma porção do processamento de função de extensão é executada. A sintaxe para executar essas operações é ilustrada na Figura 17B pela lógica 1724-1728, que lê o tamanho de bloco máximo de unidade de transformação para o qual a transformação DCT pode ser ignorada caso indicado pelo transform_skip_enabled_flag 1601.
[115] O bloco 1758 testa para determinar se todas as funções de extensão foram consideradas. Se todas as funções de extensão foram consideradas, o processamento conclui (análogo à lógica 1740 na sintaxe ilustrada na Figura 17B). Se todas as funções de extensão não foram consideradas, o processamento é encaminhado para o bloco 1760, que traz o próximo indicador que sinaliza função para consideração pelo bloco 1754.
[116] O supracitado ilustra a lógica de processamento em que todos os indicadores de sinalização de função de extensão são lidos, e cada função de extensão é, então, executada, uma de cada vez. Essa modalidade é especialmente útil nas modalidades em que o indicador de sinalização de função de extensão é lido com um índice incrementado conforme mostrado na lógica 1716 e 1718, visto que o mesmo desacopla a leitura do indicador (que é indexado) a partir da execução da própria função de extensão (que pode ser ou não indexada). Por exemplo, o ciclo de processamento representado pelos blocos 1754 a 1760 pode ser executada incluindo-se simplesmente uma sintaxe para executar cada função de extensão, uma após a outra (por exemplo, executar a lógica 1754-1756 e, então, executar adicionalmente a lógica para executar a próxima função de extensão, com declarações lógicas interpostas entre a lógica 1756 e 1758). Ou, os mesmos podem ser executados com o uso de um índice incrementado, que pode ser o mesmo índice usado para ler os indicadores de sinalização de função de extensão, ou um índice diferente.
[117] A Figura 17D é um diagrama de um fluxograma que ilustra uma modalidade alternativa em que, em vez de ler todos os indicadores de sinalização de função de extensão antes de iniciar a execução das próprias funções de extensão, cada indicador de sinalização de função de extensão é lido e a função de extensão é executada antes de ler o próximo indicador de sinalização de função de extensão. O bloco 1760 lê um primeiro indicador de sinalização de função de extensão (que pode ser indexado), e o bloco 1762 testa se o primeiro indicador de sinalização de função de extensão lido indica que a primeira função de extensão deve ser executada. Se a função não deve ser executada, o processamento é encaminhado para o bloco 1768, e a função de extensão não é executada. Entretanto, se o primeiro indicador de sinalização de função de extensão indicar que a função de extensão deve ser executada, o processamento é encaminhado para o bloco 1764, em que tal processamento é executado antes de encaminhar o processamento para o bloco 1768. Mediante a conclusão desse processamento, o bloco 1768 determina se todos os indicadores de sinalização de função de extensão foram lidos. Caso sim, o processamento sai, porém, caso não, o próximo indicador de sinalização de função de extensão é considerado, conforme ilustrado pelo bloco 1770. Um segundo indicador de sinalização de função de extensão é lido, e as operações dos blocos 1760-1768 é repetida para aquele segundo indicador de sinalização de função de extensão e sua segunda função de extensão associada. Isso pode também ser concluído através do uso de um ou mais índices incrementados, e um índice diferente seria usado para ler os indicadores de sinalização de função de extensão e executar as próprias funções de extensão.
[118] A Figura 18 é um diagrama que apresenta uma modalidade da sintaxe PPS para a extensão de faixa HEVC. Como antes, o pps_extension_present_flag lido na declaração de lógica 1712 especifica que pelo menos um pps_extension_flag[i] está presente na sintaxe PPS. Esse pps_extension_present_flag é usado na declaração de lógica 1714 para indicar que as declarações de lógica 1716 e 1718 devem ser executadas, e essas declarações lógicas leem o pps_extension_flag[i] para i=0 a n. Um valor de pps_extension_flag[i] de 1 especifica que a estrutura de sintaxe para a pps_extension associada está presente, enquanto um valor de pps_extension_flag[i] de 0 especifica que a estrutura de sintaxe para a pps_extension associada ao indicador não está presente.
[119] Na sintaxe exemplificativa mostrada na Figura 18, um valor de pps_extension_flag[0] de 1 especifica que os seguintes elementos extensão relacionados de faixa HEVC estão presentes na estrutura de sintaxe RBSP de PPS, conforme mostrado nas declarações de lógica 1724, 1726 e 1804-1820: • log2_max_transform_skip_block_size_minus2; • luma_chroma_prediction_enabled_flag; • chroma_qp_ad)ustment_enabled_flag; • diff_cu_chroma_qp_ad)ustment_depth; • chroma_qp_ad)ustment_table_size_minusl ; • cb_qp_ad)ustment; • cr_qp_ad)ustment.
[120] Contrariamente, um pps_extension_flag[0] igual a 0 especifica que esses elementos de sintaxe não estão presentes.
[121] Adicionalmente, um valor de pps_extension_7bits de 0 especifica que elementos de sintaxe pps_extension_data_flag não estão mais presentes na estrutura de sintaxe RBSP de PPS, e a declaração de lógica 1822 ignora as declarações de lógica 1824 e 1828. A pps_extension_7bits deve ter um valor de 0 nos fluxos de bit em conformidade com versões de relatório descritivo de legado, visto que valores de pps_extension_7bits não iguais a 0 são reservados para uso futuro pelo ITU-T/ ISO/IEC. Os decodificadores HEVC devem permitir que o valor de pps_extension_7bits seja não igual a 0 e devem ignorar todos os elementos de sintaxe pps_extension_data_flag em uma unidade de NAL de PPS.
[122] As Figuras 19A-19C mostram modalidades alternativas adicionais de sintaxe de sinalização de extensão. A Figura 19A ilustra uma sintaxe generalizada em que o indicador de sinalização de presença de extensão (pps_extension_present_flag) é usado para sinalizar se uma sintaxe de função de extensão adicional está presente na PPS. Como antes, as declarações de lógica 1712 leem o pps_extension_present_flag. A declaração de lógica 1714 comanda a execução das declarações de lógica 1716-1742 apenas se o pps_extesion_present_flag indica que uma sintaxe para uma ou mais funções de extensão está presente na PPS. A declaração de lógica 1716 lê um pps_extension_flag[i] para todos os valores de i, e a declaração de lógica 1720 lê a pps_extension_7bits. As declarações de lógica 1732-1740 leem um pps_extension_data_flag e os dados associados.
[123] A Figura 19B ilustra uma sintaxe PPS em que os indicadores de sinalização de função de extensão são lidos em declarações separadas, ao invés de através de um índice incrementado dentro de um ciclo de processamento. Especificamente, as declarações de lógica 1902-1906 leem um primeiro indicador (pps_range_extension_flag) que indica que o processamento de extensão de faixa deve ser executado, um segundo indicador (pps_multilayer_extension_flag), que indica que o processamento de extensão multicamada ou multivista (MV-HEVC) deve ser executado, e um terceiro indicador (pps_extension_bits6) para ler os dados de extensão adicionais. As declarações de lógica 1910-1912 executam o processamento pps_range_extension() (que pode ser disposto em uma sintaxe de extensão de faixa PPS separada referida pela declaração lógica pps_range_extension()) conforme indicado pelo pps_range_extension_flag lido pela declaração de lógica 1902. As declarações de lógica 19141916 executam a pps_multilayer_extension() (também possivelmente especificada na sintaxe PPS distinta referida pela declaração lógica pps_multilayer_extension()) conforme indicado pelo pps_multilayer_extension_flag. As declarações de lógica 1918-1926 leem um pps_extension_data_flag e os dados associados.
[124] A Figura 19C ilustra uma sintaxe PPS em que os indicadores de sinalização de função de extensão são lidos com o uso de um índice incrementado, porém, testados e usados para executar o processamento de extensão em declarações separadas e não indexadas. Especificamente, as declarações de lógica 1930-1932 leem dois pps_extension_flags, nomeadamente o pps_extension_flag[0] e o pps_extension_flag[1] com o uso de um índice i tomando o valor de 0 e 1. A declaração de lógica 1934 lê o valor de pps_extension_6bits, e as declarações de lógica 1938-1952 operam de modo análogo às declarações de lógica 1910-1926, exceto o pps_extension_flag que é referido e diferenciado por um índice de [0] ou [1], ao invés disso, um nome diferente.
[125] Outras modalidades da sintaxe supracitada são também idealizadas. Por exemplo, é possível agrupar os indicadores que sinalizam presença de extensão (por exemplo, o pps_extension_flag) por tipo ou por categoria. Isso permite as extensões que têm requisitos de dados similares sejam sinalizadas e processadas juntamente, poupando-se assim as declarações de sintaxe e o processamento do decodificador.
[126] Conforme descrito acima, as funções de extensão sinalizadas podem ser independentes ou podem ser funcionalmente relacionadas. Por exemplo, uma segunda função de extensão pode exigir o uso de um resultado de uma primeira (previamente processada ou executada) função de extensão, antes de a segunda função de extensão poder ser completada. Ou, a segunda função de extensão pode ser mutualmente exclusiva da primeira função de extensão (por exemplo, tanto a primeira função de extensão quanto a segunda função de extensão devem ser executadas, porém não ambas). Ou, a segunda função de extensão pode ser uma função que não seria executada a menos que a primeira função de extensão fosse também executada, logo a segunda função de extensão é apenas implicada ou executada na sequência de processamento se a primeira função de extensão for também executada. Por exemplo, uma computação pode exigir uma saída ou um resultado a partir tanto da primeira função de extensão quanto da segunda função de extensão e, logo, a existência da primeira função de extensão necessariamente implica na segunda função de extensão e vice-versa.
[127] As operações supracitadas são descritas em relação a um processo de decodificação, que pode ocorrer tanto em um decodificador de fonte 220 quanto em um criptografador 202, como uma parte do processo de criptografia. O processo de criptografia pode também ser expresso como compreendendo determinar se um slice dos um ou mais slices é um slice interpredito de acordo com os dados de tipo de slice, e se o slice é um slice interpredito, que configura um primeiro parâmetro no cabeçalho de slice associado ao slice para um valor que sinaliza a habilitação de um estado de predição ponderada dos dados de imagem associados ao slice.
AMBIENTE DE HARDWARE
[128] A Figura 20 ilustra um sistema de processamento exemplificativo 2000 que poderia ser usado para implantar as modalidades da invenção. O computador 2002 compreende um processador 2004 e uma memória, tal como uma memória de acesso aleatório (RAM) 2006. O computador 2002 é operativamente acoplado a um visor 2022, que apresenta imagens tais como janelas ao usuário em uma interface de usuário gráfica 2018B. O computador 2002 pode ser acoplado a outros dispositivos, tais como um teclado 2014, a mouse dispositivo 2016, uma impressora, etc. Certamente, aqueles versados na técnica reconhecerão que qualquer combinação dos componentes acima, ou qualquer número de diferentes componentes, periféricos e outros dispositivos, pode ser usado com o computador 2002.
[129] De modo geral, o computador 2002 opera sob o controle de um sistema operacional 2008 armazenado na memória 2006, e realiza interface com o usuário para aceitar entradas e comandos e para apresentar resultados através de um módulo de interface de usuário gráfica (GUI) 2018A. Apesar do módulo de GUI 2018A ser retratado como um módulo separado, as instruções que executam as funções da GUI podem ser residentes ou distribuídas no sistema operacional 2008, no programa de computador 2010, ou implantadas com memória e processadores de propósito especial. O computador 2002 também implanta um compilador 2012 que permite um programa de aplicativo 2010 gravado em uma linguagem de programação tal como COBOL, C++, FORTRAN, ou outra linguagem seja transladado no código legível do processador 2004. Após a conclusão, o aplicativo 2010 acessa e manipula os dados armazenados na memória 2006 do computador 2002 com o uso das relações e da lógica que foram geradas com o uso do compilador 2012. O computador 2002 também compreende opcionalmente um dispositivo de comunicação externo tal como um modem, um enlace de satélite, um cartão de Ethernet, ou outro dispositivo para se comunicar com outros computadores.
[130] Em uma modalidade, as instruções que implantam o sistema operacional 2008, o programa de computador 2010, e o compilador 2012 são tangivelmente incorporadas em um meio legível por computador, por exemplo, o dispositivo de armazenamento de dados 2020, que pode incluir um ou mais dispositivos de armazenamento de dados fixados ou removíveis, tais como uma unidade zip, a unidade de disquete 2024, um disco rígido, uma unidade de CD-ROM, unidade de fita, etc. Adicionalmente, o sistema operacional 2008 e o programa de computador 2010 são constituídos de instruções que, quando lidas e executadas pelo computador 2002, fazem o computador 2002 executar as etapas necessárias para implantar e/ou usar a invenção. O programa de computador 2010 e/ou instruções de operação podem também ser tangivelmente incorporadas na memória 2006 e/ou os dispositivos de comunicações de dados 2030, fabricando-se assim um produto de programa de computador ou um artigo de manufatura. Como tal, os termos “artigo de manufatura,” “dispositivo de armazenamento de programa” e “produto de programa de computador” conforme usado no presente documento são destinados a abranger um programa de computador acessível a partir de qualquer dispositivo ou mídia legível por computador.
[131] O sistema de processamento 2000 pode também ser incorporado em um desktop, um laptop, um tablet, um computador notebook, um assistente de dados pessoais (PDA), um telefone celular, um smartphone, ou qualquer dispositivo com uma funcionalidade de memória e de processamento adequada. Adicionalmente, o sistema de processamento 2000 pode utilizar um hardware de propósito especial para executar parte ou a totalidade da funcionalidade supracitada. Por exemplo, os processos de codificação e de decodificação descritos acima podem ser executados por um processador de propósito especial e uma memória associada.
[132] Aqueles versados na técnica reconhecerão que muitas modificações podem ser feitas nessa configuração sem se afastar do escopo da presente revelação. Por exemplo, aqueles versados na técnica reconhecerão que qualquer combinação dos componentes acima, ou qualquer número de diferentes componentes, periféricos, e outros dispositivos, pode ser usado. Por exemplo, as funções particulares descritas no presente documento podem ser executadas por módulos de hardware, ou por um processador que executa as instruções armazenadas na forma de software ou de firmware. Adicionalmente, a funcionalidade descrita no presente documento poder ser combinada em módulos únicos, ou expandida para ser executada em módulos múltiplos.
CONCLUSÃO
[133] A descrição anteriormente mencionada de modalidades preferenciais foi apresentada para propósitos de ilustração e de descrição. As mesmas não têm a intenção de serem exaustivas ou de limitar a revelação a uma forma precisa revelada. Muitas modificações e variações são possíveis à luz da instrução acima. Pretende-se que o escopo de direitos não seja limitado por esta descrição detalhada, mas sim pelas reivindicações anexadas a este.

Claims (3)

1. Método para decodificar (258) uma pluralidade de figuras, cada figura processada pelo menos em parte de acordo com um conjunto de parâmetros de figura (1711), o método caracterizado pelo fato de que compreende: receber um fluxo de bits (267) compreendendo a pluralidade de figuras e um conjunto de parâmetros de figura (1711); analisar o conjunto de parâmetros de figura (1711) para determinar se um deblocking_filter_control_present_flag é 0 ou 1 (1743), analisar o conjunto de parâmetros de figura (1711) para determinar para uma figura na pluralidade de figuras, se um indicador de sinalização pps_extension_present_flag (1712, 1714) especifica presença de estrutura de sintaxe pps_extension_Xbits (1720) em um nível de figura para a figura, em que os indicadores de sinalização pps_extension_present_flag (1712, 1714) e pps_extension_Xbits (1720), quando presentes, são adaptáveis por figura na pluralidade de figuras, e em que o indicador de sinalização pps_extension_Xbits (1720) é representado no conjunto de parâmetros de figura (1711) por bits múltiplos (1751), onde X = o número dos referidos bits; analisar a estrutura de sintaxe pps_extension_Xbits (1720) para determinar se quaisquer estruturas de sintaxe pps_extension_data_flag (1738) estão presentes no conjunto de parâmetros de figura (1711); em que pps_extension_Xbits (1720) deve ser igual a 0 para fluxos de bits em conformidade com perfis de codificação de vídeo de alta eficiência (HEVC), e em que pps_extension_Xbits (1720) diferentes de 0 fazem com que as estruturas de sintaxe pps_extension_data_flag (1738) em uma unidade NAL de conjunto de parâmetros de figura sejam ignoradas durante a decodificação.
2. Método para codificar (240) uma pluralidade de figuras, cada figura codificada utilizando um conjunto de parâmetros de figura (1711), o método caracterizado pelo fato de que compreende: prover um fluxo de bits (246) compreendendo a pluralidade de figuras e um conjunto de parâmetros de figura (1711); incluir no conjunto de parâmetros de imagem (1711) um deblocking_filter_control_present_flag que é 0 ou 1 (1743); codificar (240) uma figura na pluralidade de figuras utilizando o referido conjunto de parâmetros de figura (1711), em que o referido conjunto de parâmetros de figura (1711) sinaliza se um indicador de sinalização pps_extension_present_flag (1712, 1714) especifica a presença de estrutura de sintaxe pps_extension_Xbits (1720) em um nível de figura para a figura, em que os indicadores de sinalização pps_extension_present_flag (1712, 1714) e pps_extension_Xbits (1720), quando presentes, são adaptáveis por figura na pluralidade de figuras, e em que o indicador de sinalização pps_extension_Xbits (1720) é representado no conjunto de parâmetros de figura (1711) por bits múltiplos (1751), onde X = o número dos referidos bits; em que a estrutura de sintaxe pps_extension_Xbits (1720) indica se alguma estrutura de sintaxe pps_extension_data_flag (1738) está presente no conjunto de parâmetros de figura (1711); em que pps_extension_Xbits (1720) deve ser igual a 0 para fluxos de bits em conformidade com perfis de codificação de vídeo de alta eficiência (HEVC), e em que pps_extension_Xbits (1720) diferentes de 0 faz com que as estruturas de sintaxe pps_extension_data_flag (1738) em uma unidade NAL de conjunto de parâmetros de figura sejam ignoradas durante a decodificação.
3. Fluxo de bits de dados de vídeo compactados (108), incluindo um meio de armazenamento legível por computador (236) que armazena os dados de vídeo compactados (108), incluindo uma pluralidade de figuras, cada figura codificada utilizando um conjunto de parâmetros de figura (1711), o fluxo de bits caracterizado por compreender: o referido fluxo de bits (108) incluindo no conjunto de parâmetros de imagem (1711) um deblocking_filter_control_present_flag que é 0 ou 1 (1743); o referido fluxo de bits (108) compreendendo a pluralidade de figuras e um conjunto de parâmetros de figura(1711); o referido conjunto de parâmetros (1711) de figura incluindo um indicador de sinalização pps_extension_present_flag (1712, 1714) indicando a presença de estrutura de sintaxe pps_extension_Xbits (1720) em um nível de figura, em que os indicadores de sinalização pps_extension_present_flag (1712, 1714) e pps_extension_Xbits (1720), quando presentes, são adaptáveis por figura na pluralidade de figuras, e em que o indicador de sinalização pps_extension_Xbits (1720) é representado no conjunto de parâmetros de figura (1711) por bits múltiplos (1751), onde X = o número dos referidos bits; em que a estrutura de sintaxe pps_extension_Xbits (1720) indica se alguma estrutura de sintaxe pps_extension_data_flag (1738) está presente no conjunto de parâmetros de figura (1711); em que pps_extension_Xbits (1720) deve ser igual a 0 para fluxos de bits em conformidade com perfis de codificação de vídeo de alta eficiência (HEVC), e em que pps_extension_Xbits (1720) diferentes de 0 faz com que as estruturas de sintaxe pps_extension_data_flag (1738) em uma unidade NAL de conjunto de parâmetros de figura sejam ignoradas durante a decodificação.
BR122021021291-0A 2014-01-03 2014-12-30 Método para decodificar uma pluralidade de figuras, método para codificar uma pluralidade de figuras e fluxo de bits de dados de vídeo compactados BR122021021291B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461923334P 2014-01-03 2014-01-03
US61/923,334 2014-01-03
US14/585,485 2014-12-30
US14/585,485 US10341685B2 (en) 2014-01-03 2014-12-30 Conditionally parsed extension syntax for HEVC extension processing
PCT/US2014/072695 WO2015103221A1 (en) 2014-01-03 2014-12-30 Conditionally parsed extension syntax for hevc extension processing

Publications (3)

Publication Number Publication Date
BR122021021291A2 BR122021021291A2 (pt) 2018-05-22
BR122021021291A8 BR122021021291A8 (pt) 2022-11-08
BR122021021291B1 true BR122021021291B1 (pt) 2023-08-15

Family

ID=

Similar Documents

Publication Publication Date Title
ES2750176T3 (es) Método y aparato para el tratamiento eficaz de cabeceras de fragmentos
CA2977526C (en) Modification of unification of intra block copy and inter signaling related syntax and semantics
US9185408B2 (en) Efficient storage of motion information for high efficiency video coding
US10291934B2 (en) Modified HEVC transform tree syntax
US11317105B2 (en) Modification of picture parameter set (PPS) for HEVC extensions
TW202042552A (zh) 用於照明補償之區塊大小限制
US11343540B2 (en) Conditionally parsed extension syntax for HEVC extension processing
CN106256128B (zh) 一种解码多个图片的方法
BR122021021291B1 (pt) Método para decodificar uma pluralidade de figuras, método para codificar uma pluralidade de figuras e fluxo de bits de dados de vídeo compactados
BR122021021290B1 (pt) Método para decodificar uma pluralidade de figuras, método para codificar uma pluralidade de figuras, e, fluxo de bits de dados de vídeo compactados
BR122021021251B1 (pt) Método para decodificar uma pluralidade de figuras, método para codificar uma pluralidade de figuras e fluxo de bits de dados de vídeo compactados
BR112016015643B1 (pt) Método para decodificar uma pluralidade de figuras, método para codificar uma pluralidade de imagens, e fluxo de bits de dados de vídeo compactados
EP3266216A1 (en) Modification of unification of intra block copy and inter signaling related syntax and semantics
EP2781093A1 (en) Efficient storage of motion information for high efficiency video coding