BR112016015568B1 - Método e aparelho para codificar ou decodificar dados de vídeo e memória legível por computador - Google Patents

Método e aparelho para codificar ou decodificar dados de vídeo e memória legível por computador Download PDF

Info

Publication number
BR112016015568B1
BR112016015568B1 BR112016015568-8A BR112016015568A BR112016015568B1 BR 112016015568 B1 BR112016015568 B1 BR 112016015568B1 BR 112016015568 A BR112016015568 A BR 112016015568A BR 112016015568 B1 BR112016015568 B1 BR 112016015568B1
Authority
BR
Brazil
Prior art keywords
image
video
recovery point
sei message
associating
Prior art date
Application number
BR112016015568-8A
Other languages
English (en)
Other versions
BR112016015568A2 (pt
Inventor
Fun Hendry
Ye-Kui Wang
Adarsh Krishnan Ramasubramonian
Original Assignee
Qualcomm Incorporated
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/584,993 external-priority patent/US10560710B2/en
Application filed by Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112016015568A2 publication Critical patent/BR112016015568A2/pt
Publication of BR112016015568B1 publication Critical patent/BR112016015568B1/pt

Links

Abstract

MÉTODO PARA CODIFICAR MENSAGENS DE INFORMAÇÕES DE INTENSIFICAÇÃO COMPLEMENTAR DE PONTO DE RECUPERAÇÃO (SEI) E MENSAGENS DE SEI DE INFORMAÇÕES DE ATUALIZAÇÃO DE REGIÃO NA CODIFICAÇÃO MULTICAMADAS. Trata-se de métodos para codificar mensagens de informações de intensificação complementar de ponto de recuperação (SEI) e mensagens de SEI de atualização e região na codificação multicamadas. Em um aspecto, o método pode incluir determinar pelo menos uma imagem dentre uma pluralidade de imagens incluídas em uma unidade de acesso com a qual se associa pelo menos uma mensagem de SEI de ponto de recuperação, sendo que a unidade de acesso está incluída no fluxo de bits de multicamadas. O método pode incluir adicionalmente a associação a pelo menos uma mensagem de SEI de ponto de recuperação a pelo menos uma imagem determinada. O método também pode incluir codificar as informações de vídeo com base, pelo menos em par te, na associação da pelo menos uma mensagem de SEI de ponto de recuperação com a pelo menos uma imagem determinada.

Description

CAMPO DA TÉCNICA
[001] Esta revelação refere-se ao campo de codificação e compactação de vídeo, e particularmente à codificação de vídeo escalonável, codificação de vídeo multivistas, e/ou codificação de vídeo tridimensional (3D).
ANTECEDENTES DESCRIÇÃO DA TÉCNICA RELACIONADA
[002] As capacidades do vídeo digital podem ser incorporadas em uma ampla faixa de dispositivos, que incluem televisões digitais, sistemas de difusão direta digital, sistemas de difusão sem fio, assistentes pessoais digitais (PDAs), computadores do tipo laptop ou desktop, câmeras digitais, dispositivos de gravação digital, reprodutores de mídia digital, dispositivos de jogos de vídeo, consoles de videogame, telefones celulares ou de rádio via satélite, dispositivos de teleconferência por vídeo, e semelhantes. Os dispositivos de vídeo digital implantam técnicas de compactação de vídeo, como aquelas descritas nos padrões definidos por Grupo Especialista em Imagem em Movimento 2 (MPEG-2), MPEG-4, União de Telégrafo Internacional-Setor de Padronização de Telecomunicação (ITU- T) H.263, ITU-T H.264/MPEG-4, Parte 10, Codificação de Vídeo Avançada (AVC), o padrão de Codificação de Vídeo de Alta Eficiência (HEVC), e extensões de tais padrões. Os dispositivos de vídeo podem transmitir, receber, codificar, decodificar e/ou armazenar informações de vídeo digital de modo mais eficiente ao implantar tais técnicas de codificação de vídeo.
[003] Uma sequência de vídeo codificada pode incluir uma mensagem de informações de intensificação complementar (SEI) opcional. As mensagens de SEI podem fornecer informações que não são necessárias para a decodificação da sequência de vídeo, mas, não obstante, pode ajudar na decodificação da sequência de vídeo. Uma tal mensagem SEI é uma mensagem SEI de ponto de recuperação que indica um ponto de recuperação no qual a sequência de vídeo decodificada será corrigida ou aproximadamente corrigida no conteúdo mediante o acesso aleatório ao fluxo de bits entre imagens ponto de acesso intra-aleatório (IRAP). Uma mensagem SEI de informações de atualização de região, que é associada a uma mensagem SEI de ponto de recuperação, indica se as regiões (por exemplo, segmentos de fatia) de uma imagem atual, às quais a mensagem SEI de informações de atualização de região atual se aplica/corresponde, pertencem a uma região atualizada da imagem atual.
SUMÁRIO
[004] Os sistemas, métodos e dispositivos desta revelação têm, cada um, diversos aspectos inovadores, nenhum dos quais é responsável apenas pelos atributos desejáveis revelados no presente documento.
[005] Em um aspecto, um método para codificar informações de vídeo compreende determinar pelo menos uma imagem dentre uma pluralidade de imagens incluídas em uma unidade de acesso com a qual se associa pelo menos uma mensagem de informações de intensificação suplementar de ponto de recuperação (SEI), sendo que a unidade de acesso está incluída no fluxo de bits de multicamada, associar a pelo menos uma mensagem SEI de ponto de recuperação à pelo menos uma imagem determinada, e codificar as informações de vídeo com base, pelo menos em parte, na associação da pelo menos uma mensagem SEI de ponto de recuperação com a pelo menos uma imagem determinada.
[006] Em um outro aspecto, um dispositivo para codificar informações de vídeo compreende uma memória configurada para armazenar as informações de vídeo e um processador em comunicação com a memória. O processador configurado para determinar pelo menos uma imagem dentre uma pluralidade de imagens incluídas em uma unidade de acesso com a qual se associa pelo menos uma mensagem SEI de ponto de recuperação, sendo que a unidade de acesso está incluída no fluxo de bits de multicamada, associar a pelo menos uma mensagem SEI de ponto de recuperação à pelo menos uma imagem determinada, e codificar as informações de vídeo com base, pelo menos em parte, na mensagem SEI de ponto de recuperação com a pelo menos uma imagem determinada.
[007] Em um outro aspecto, um aparelho compreende meios para determinar pelo menos uma imagem dentre uma pluralidade de imagens incluídas em uma unidade de acesso com a qual se associa pelo menos uma mensagem SEI de ponto de recuperação, sendo que a unidade de acesso está incluída em um fluxo de bits de multicamada, meios para associar a pelo menos uma mensagem SEI de ponto de recuperação à pelo menos uma imagem determinada, e meios para codificar as informações de vídeo com base, pelo menos em parte, na mensagem SEI de ponto de recuperação com a pelo menos uma imagem determinada.
[008] Em ainda um outro aspecto, um meio de armazenamento legível por computador não transitório tem armazenado nele instruções que, quando executadas, fazem com que um processador de um dispositivo determine pelo menos uma imagem dentre uma pluralidade de imagens incluídas em uma unidade de acesso com a qual se associa pelo menos uma mensagem SEI de ponto de recuperação, sendo que a unidade de acesso está incluída em um fluxo de bits de multicamada, associe a pelo menos uma mensagem SEI de ponto de recuperação à pelo menos uma imagem determinada, e codifique as informações de vídeo com base, pelo menos em parte, na mensagem SEI de ponto de recuperação com a pelo menos uma imagem determinada.
BREVE DESCRIÇÃO DOS DESENHOS
[009] A Figura 1A é um diagrama de blocos que ilustra um sistema de codificação e decodificação de vídeo exemplificativo que pode utilizar técnicas de acordo com os aspectos descritos nesta revelação.
[010] A Figura 1B é um diagrama de blocos que ilustra um outro sistema de codificação e decodificação de vídeo exemplificativo que pode realizar técnicas de acordo com os aspectos descritos nesta revelação.
[011] A Figura 2A é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implantar técnicas de acordo com os aspectos descritos nesta revelação.
[012] A Figura 2B é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo que pode implantar técnicas de acordo com os aspectos descritos nesta revelação.
[013] A Figura 3A é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implantar técnicas de acordo com os aspectos descritos nesta revelação.
[014] A Figura 3B é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo que pode implantar técnicas de acordo com os aspectos descritos nesta revelação.
[015] A Figura 4 é um diagrama de blocos que ilustra a associação entre mensagens de SEI de ponto de recuperação e imagens de um fluxo de bits de multicamada de acordo com os aspectos descritos nesta revelação.
[016] A Figura 5 é um diagrama de blocos que ilustra a associação entre uma mensagem SEI de ponto de recuperação e uma pluralidade de imagens de acordo com os aspectos descritos nesta revelação.
[017] A Figura 6 é um diagrama de blocos que ilustra a associação entre uma mensagem SEI de ponto de recuperação e uma imagem de uma camada dependente de acordo com os aspectos descritos nesta revelação.
[018] A Figura 7 é um diagrama de blocos que ilustra a associação entre uma mensagem SEI de informações de atualização de região e as imagens de um fluxo de bits de multicamada de acordo com os aspectos descritos nesta revelação.
[019] A Figura 8 é um fluxograma que ilustra um método 800 para codificar informações de vídeo de acordo com os aspectos descritos nesta revelação.
DESCRIÇÃO DETALHADA
[020] Em geral, esta revelação se refere a mensagens de informações de intensificação suplementar de ponto de recuperação (SEI) e mensagens de SEI de informações de atualização para codificação de vídeo multicamada no contexto de codecs de vídeo avançados, como Codificação de Vídeo de Alta Eficiência (HEVC). Mais especificamente, a presente revelação se refere a sistemas e métodos para a clareza aumentada de mensagens de SEI de ponto de recuperação e mensagens de SEI de informações de atualização nas extensões multivistas e escalonáveis de HEVC, ou seja, MV- HEVC e SHVC.
[021] Na descrição abaixo, as técnicas de H.264/Codificação de Vídeo Avançada (AVC) relacionadas a determinadas modalidades são descritas; o padrão HEVC e as técnicas relacionadas também são discutidas. Em particular, alguns esquemas de codificação de vídeo incluem uma mensagem SEI de ponto de recuperação que pode auxiliar um decodificador na determinação de quando o processo de decodificação irá produzir imagens aceitáveis para exibição. Nos esquemas de codificação de única camada convencionais (por exemplo, HEVC Versão 1), cada unidade de acesso contém unicamente uma única imagem. Dessa maneira, a semântica desses esquemas convencionais tratou uma unidade de acesso e uma imagem como intercambiáveis. Conforme discutido em mais detalhes abaixo, a unidade de acesso de um fluxo de bits de multicamada pode incluir uma pluralidade de imagens. Assim, os esquemas de codificação de única camada convencionais não têm a semântica necessária para definir como deve-se lidar com as mensagens de SEI de ponto de recuperação para o comportamento preciso e consistente de codificadores/decodificadores de vídeo que estão de acordo com os esquemas de codificação multicamada.
[022] Esta revelação se refere a semântica para esquemas de codificação multicamada que resolve a ambiguidade para as mensagens de SEI de ponto de recuperação. Em algumas implantações, uma mensagem SEI de ponto de recuperação é associada de modo não ambíguo às imagens específicas de uma unidade de acesso em um fluxo de bits de multicamada. Uma vez que essa semântica possibilita que a codificação de um fluxo de bits de multicamada associe de modo não ambíguo uma mensagem SEI de ponto de recuperação a uma ou mais imagens específicas, a operação de codificadores de vídeo/decodificadores de vídeo que estão de acordo (isto é, operam de acordo com ou são configurados de acordo com) esta revelação aprimoraram a consistência operacional sobre os esquemas de codificação convencionais.
[023] Embora determinadas modalidades sejam descritas no presente documento no contexto dos padrões HEVC e/ou H.264, uma pessoa de habilidade comum na técnica pode observar que os sistemas e métodos revelados no presente documento podem ser aplicáveis a qualquer padrão de codificação de vídeo adequada. Por exemplo, as modalidades reveladas no presente documento podem ser aplicáveis a um ou mais dos padrões a seguir: Setor de Padronização de Telecomunicação (ITU-T) da União de Telecomunicação Internacional (ITU) H.261, Organização Internacional para Padronização/Comissão Eletrotécnica Internacional (ISO/IEC) MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também conhecido como ISO/IEC MPEG-4 AVC), que inclui as extensões escalonáveis e multivistas.
[024] A HEVC segue, em geral, a estrutura de padrões de codificação de vídeo anteriores em muitos sentidos. A unidade de predição em HEVC é diferente das unidades de predição (por exemplo, macroblocos) em determinados padrões de codificação de vídeo anteriores. De fato, o conceito de um macrobloco não existe em HEVC conforme compreendido em determinados padrões de codificação de vídeo anteriores. Um macrobloco é substituído por uma estrutura hierárquica com base em um esquema de quadtree, que pode fornecer alta flexibilidade, dentre outros benefícios possíveis. Por exemplo, no esquema de HEVC, três tipos de blocos, Unidade de Codificação (CU), Unidade de Predição (PU) e Unidade de Transformada (TU), são definidas. A CU pode se referir à unidade básica de divisão de região. A CU pode ser considerada análoga ao conceito de macrobloco, mas a HEVC não se restringe ao tamanho máximo de CUs e pode permitir a divisão recursiva em Cus de quatro tamanhos iguais para aprimorar a adaptividade de conteúdo. A PU pode ser considerada a unidade básica de inter/intrapredição, e uma única PU pode conter múltiplas partições de formato arbitrário para codificar efetivamente os padrões de imagem irregulares. A TU pode ser considerada a unidade básica de transformada. A TU pode ser definida independentemente da PU; no entanto, o tamanho de uma TU pode ser limitado ao tamanho da CU à qual a TU pertence. Essa separação da estrutura de bloco em três conceitos diferentes pode permitir que cada unidade seja otimizada de acordo com o respectivo papel da unidade, que pode resultar na eficiência de codificação aprimorada.
[025] Para fins de ilustração apenas, as determinadas modalidades reveladas no presente documento são descritas com exemplos que incluem apenas duas camadas (por exemplo, uma camada inferior como a camada-base, e uma camada superior como a camada de intensificação) dos dados de vídeo. Uma “camada” de dados de vídeo pode se referir, em geral, a uma sequência de imagens que tem pelo menos uma característica comum, como uma vista, uma taxa de quadro, uma resolução ou semelhantes. Por exemplo, uma camada pode incluir dados de vídeo associados a uma vista específica (por exemplo, em perspectiva) de dados de vídeo multivistas. Como um outro exemplo, uma camada pode incluir dados de vídeo associados a uma camada específica de dados de vídeo escalonáveis. Assim, esta revelação pode se referir, de modo intercambiável, a uma camada e uma vista de dados de vídeo. Ou seja, uma vista de dados de vídeo pode ser referida como uma camada de dados de vídeo, e uma camada de dados de vídeo pode ser referida como uma vista de dados de vídeo. Além disso, um codec de multicamada (também referido como um codificador de vídeo multicamada ou codificador- decodificador multicamada) pode se referir, em conjunto, a um codec multivistas ou um codec escalonável (por exemplo, um codec configurado para codificar e/ou decodificar dados de vídeo com o uso de MV-HEVC, 3D-HEVC, SHV ou uma outra técnica de codificação multicamada). A codificação de vídeo e a decodificação de vídeo podem, ambas, ser referidas como criptação de vídeo. Deve-se compreender que tais exemplos podem ser aplicáveis às configurações que incluem múltiplas camadas-base e/ou camadas de intensificação. Além disso, para facilitar a explicação, a revelação a seguir inclui os termos “quadros” ou “blocos” com referência a determinadas modalidades. No entanto, esses termos não significam que sejam limitantes. Por exemplo, as técnicas descritas abaixo podem ser usadas com quaisquer unidades de vídeo adequadas, como blocos (por exemplo, CU, PU, TU, macroblocos, etc.), fatias, quadros, etc.
PADRÕES DE CODIFICAÇÃO DE VÍDEO
[026] Uma imagem digital, como uma imagem de vídeo, uma imagem de TV, uma imagem estática ou uma imagem gerada por um registrador de vídeo ou um computador, pode consistir em pixels ou amostras dispostas em linhas horizontais e verticais. O número de pixels em uma única imagem é tipicamente de dezenas de milhares. Cada pixel contém tipicamente informações de luminância e crominância. Sem compactação, a grande quantidade de informações a serem transportadas de um codificador de imagem para um decodificador de imagem tornaria transmissão de imagem em tempo real impossível. Para reduzir a quantidade de informações a serem transmitidas, diversos métodos de compactação diferentes, como JPEG, MPEG e padrões H.263, foram desenvolvidos.
[027] Os padrões de codificação de vídeo incluem ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 ou ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (também referido como ISO/IEC MPEG-4 AVC), incluindo as extensões escalonáveis e multivistas.
[028] Além disso, um padrão de codificação de vídeo, a saber HEVC, foi desenvolvido pelo Joint Collaboration Team on Video Coding (JCT-VC) de ITU-T Video Coding Experts Group (VCEG) e ISO/IEC MPEG. A citação completa para o HEVC Draft 10 está no documento JCTVC-L1003, Bross et al, “High Efficiency Video Coding (HEVC) Text Specification Draft 10”, Joint Collaborative Team on Video Coding (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 12° Encontro: Geneva, Suíça, 14 de janeiro de 2013 a 23 de janeiro de 2013. A extensão de multivistas para HEVC, a saber MV-HEVC, e a extensão escalonável para HEVC, nomeada SHVC, também estão sendo desenvolvidas junto ao JCT-3V (ITU- T/ISO/IEC Joint Collaborative Team on 3D Video Coding Extension Development) e JCT-VC, respectivamente. SISTEMA DE CODIFICAÇÃO DE VÍDEO
[029] Vários aspectos dos sistemas, aparelhos e métodos inovadores são descritos mais completamente mais adiante no presente documento com referência aos desenhos anexos. Esta revelação pode, no entanto, ser incorporada de muitas formas diferentes e não deve ser interpretada como limitada a qualquer estrutura ou função específica apresentada ao longo desta revelação. Ao invés disso, esses aspectos são fornecidos de modo que essa revelação seja meticulosa e completa, e irá conduzir totalmente o escopo da revelação àqueles versados na técnica. Com base nos ensinamentos no presente documento, um versado na técnica deve observar que o escopo da revelação é destinado a cobrir quaisquer aspectos dos sistemas, aparelhos e métodos inovadores revelados no presente documento, independente de estarem implantados independentemente ou combinados com qualquer outro aspecto da revelação. Por exemplo, um aparelho pode ser implantado ou um método pode ser praticado com o uso de qualquer número dos aspectos estabelecidos no presente documento. Além disso, o escopo da presente revelação é destinado a cobrir tal aparelho ou método que é praticado com o uso de outra estrutura, funcionalidade ou estrutura e funcionalidade adicionalmente ou além dos vários aspectos da presente revelação estabelecidos no presente documento. Deve-se compreender que qualquer aspecto revelado no presente documento pode ser incorporado por um ou mais elementos de uma reivindicação.
[030] Embora os aspectos específicos sejam descritos no presente documento, muitas variações e permutações desses aspectos estão dentro do escopo da revelação. Embora alguns benefícios e algumas vantagens dos aspectos preferenciais sejam mencionados, o escopo da revelação não se destina a ser limitado aos benefícios, usos ou objetivos específicos. Ao invés disso, os aspectos da revelação são destinados a serem amplamente aplicáveis às diferentes tecnologias sem fio, configurações de sistema, redes e protocolos de transmissão, alguns dos quais são ilustrados por meio de exemplo nas Figuras e na descrição a seguir dos aspectos preferenciais. A descrição detalhada e os desenhos são meramente ilustrativos da revelação em vez de limitantes, sendo que o escopo da revelação é definido pelas reivindicações anexas e os equivalentes das mesmas.
[031] Os desenhos anexos ilustram exemplos. Os elementos indicados por números de referência nos desenhos anexos correspondem aos elementos indicados por números de referência semelhantes na descrição a seguir. Nessa revelação, elementos que têm nomes que começam com palavras ordinais (por exemplo, “primeiro”, “segundo”, “terceiro” e assim por diante) não necessariamente implicam no fato de que os elementos têm uma ordem particular. Em vez disso, tais palavras ordinais são meramente usadas para se referir a elementos diferentes de um mesmo tipo ou semelhantes.
[032] A Figura 1A é um diagrama de blocos que ilustra um sistema de codificação de vídeo exemplificativo 10 que pode utilizar técnicas de acordo com os aspectos descritos nessa revelação. Conforme usado e descrito no presente documento, o termo “codificador de vídeo” se refere, genericamente, tanto aos codificadores de vídeo quanto aos decodificadores de vídeo. Nessa revelação, os termos “criptação de vídeo” ou “codificação” podem se referir, genericamente, à codificação de vídeo e decodificação de vídeo. Além disso, para codificadores de vídeo e decodificadores de vídeo, os aspectos descritos no presente pedido podem ser estendidos para outros dispositivos relacionados, como transcodificadores (por exemplo, dispositivos que podem decodificar um fluxo de bits e codificar novamente outro fluxo de bits) e caixas intermediárias (por exemplo, dispositivos que podem modificar, transformar e/ou manipular de outro modo um fluxo de bits).
[033] Conforme mostrado na Figura 1A, sistema de codificação de vídeo 10 inclui um dispositivo de fonte 12 que gera dados de vídeo codificados para serem decodificados em um momento posterior por um dispositivo de destino 14. No exemplo da Figura 1A, o dispositivo de fonte 12 e o dispositivo de destino 14 constituem dispositivos separados. No entanto, é verificado que o dispositivo de fonte 12 e o dispositivo de destino 14 podem estar em ou ser parte do mesmo dispositivo, conforme mostrado no exemplo da Figura IB.
[034] Novamente em referência à Figura 1A, o dispositivo de fonte 12 e o dispositivo de destino 14 podem compreender respectivamente qualquer um dentre uma ampla faixa de dispositivos, incluindo computadores do tipo desktop, computadores do tipo notebook (por exemplo, computadores do tipo laptop), computadores do tipo tablet, decodificadores de sinal, aparelhos telefônicos como os chamados telefones “inteligentes”, os chamados computadores do tipo pad “inteligentes”, televisões, câmeras, dispositivos de exibição, reprodutores de mídia digital, consoles de vídeo game, dispositivo de transmissão de vídeo ou semelhantes. Em várias modalidades, o dispositivo de fonte 12 e o dispositivo de destino 14 podem ser equipados para comunicação sem fio.
[035] O dispositivo de destino 14 pode receber, por meio de enlace 16, os dados de vídeo codificados a serem decodificados. O enlace 16 pode compreender qualquer tipo de meio ou dispositivo com capacidade de mover os dados de vídeo codificados do dispositivo de fonte 12 para o dispositivo de destino 14. No exemplo da Figura 1A, o enlace 16 pode compreender um meio de comunicação para possibilitar que o dispositivo de fonte 12 transmita dados de vídeo codificados para o dispositivo de destino 14 em tempo real. Os dados de vídeo codificados podem ser modulados de acordo com um padrão de comunicação, como um protocolo de comunicação sem fio e transmitidos para o dispositivo de destino 14. O meio de comunicação pode compreender qualquer meio de comunicação com fio ou sem fio, como um espectro de radiofrequência (RF) ou uma ou mais linhas de transmissão físicas. O meio de comunicação pode formar parte de uma rede baseada em pacote, como uma rede de área local, uma rede de área ampla ou uma rede global, como a Internet. O meio de comunicação pode incluir roteadores, comutadores, estações- base ou qualquer outro equipamento que pode ser útil para facilitar a comunicação do dispositivo de fonte 12 com o dispositivo de destino 14.
[036] Alternativamente, os dados codificados podem ser emitidos de uma interface de saída 22 para um dispositivo de armazenamento 31 (opcionalmente presente). De modo semelhante, os dados codificados podem ser acessados do dispositivo de armazenamento 31 por uma interface de entrada 28, por exemplo, do dispositivo de destino 14. O dispositivo de armazenamento 31 pode incluir qualquer um dentre uma variedade de meio de armazenamento de dados acessados de modo local ou distribuídos como um disco rígido, memória flash, memória volátil ou não volátil ou qualquer outro meio de armazenamento digital adequado para armazenar dados de vídeo codificados. Em um exemplo adicional, o dispositivo de armazenamento 31 pode corresponder a um servidor de arquivo ou outro dispositivo de armazenamento intermediário que pode colocar em espera o vídeo codificado gerado pelo dispositivo de fonte 12. O dispositivo de destino 14 pode acessar dados de vídeo armazenados do dispositivo de armazenamento 31 por meio transmissão contínua ou transferência por download. O servidor de arquivo pode ser qualquer tipo de servidor com capacidade de armazenar dados de vídeo codificados e transmitir aqueles dados de vídeo codificados para o dispositivo de destino 14. Os servidores de arquivo exemplificativos incluem um servidor da web (por exemplo, para um site da web), um servidor de Protocolo de Transferência de Arquivo (FTP), dispositivos de armazenamento conectados à rede (NAS) ou uma unidade de disco local. O dispositivo de destino 14 pode acessar os dados de vídeo codificados através de qualquer conexão de dados padrão, incluindo uma conexão de Internet. Isso pode incluir um canal sem fio (por exemplo, uma conexão de rede de área local sem fio (WLAN)), uma conexão com fio (por exemplo, uma linha de assinatura digital (DSL), um modem de cabo, etc.), ou uma combinação de ambas que é adequada para acessar dados de vídeo codificados armazenados em um servidor de arquivo. A transmissão de dados de vídeo codificados do dispositivo de armazenamento 31 pode ser uma transmissão contínua, uma transmissão por transferência de download ou uma combinação de ambas.
[037] As técnicas desta revelação não são limitadas às aplicações ou configurações sem fio. As técnicas podem ser aplicadas à codificação de vídeo em suporte de qualquer uma dentre uma variedade de aplicativos de multimeios, como difusões de televisão aéreas, transmissões de televisão a cabo, transmissões de televisão por satélite, transmissões de vídeo por transmissão contínua, por exemplo, por meio da Internet (por exemplo, transmissão contínua adaptativa dinâmica sobre Protocolo de Transferência de Hipertexto (HTTP), etc.), codificação de vídeo digital para armazenamento em um meio de armazenamento de dados, decodificação de vídeo digital armazenado em um meio de armazenamento de dados ou outras aplicações. Em alguns exemplos, o sistema de codificação de vídeo 10 pode ser configurado para suportar transmissão de vídeo unidirecional ou bidirecional para suportar aplicações como transmissão contínua de vídeo, reprodução de vídeo, difusão de vídeo e/ou telefonia de vídeo.
[038] No exemplo da Figura 1A, o dispositivo de fonte 12 inclui uma fonte de vídeo 18, codificador de vídeo 20 e a interface de saída 22. Em alguns casos, a interface de saída 22 pode incluir um modulador/demodulador (modem) e/ou um transmissor. No dispositivo de fonte 12, a fonte de vídeo 18 pode incluir uma fonte, como um dispositivo de captura de vídeo, por exemplo, uma câmera de vídeo, um arquivo de vídeo que contém vídeo anteriormente capturado, uma interface de alimentação de vídeo para receber vídeo de um provedor de conteúdo de vídeo e/ou um sistema de gráficos de computador para gerar dados gráficos de computador como o vídeo de fonte ou uma combinação de tais fontes. Como um exemplo, se a fonte de vídeo 18 for uma câmera de vídeo, o dispositivo de fonte 12 e o dispositivo de destino 14 podem formar os chamados “telefones com câmera” ou “telefones com vídeo”, conforme ilustrado no exemplo da Figura IB. No entanto, as técnicas descritas desta revelação podem ser aplicáveis à codificação de vídeo em geral e podem ser aplicadas aos aplicativos sem fio e/ou com fio.
[039] O vídeo capturado, pré-capturado ou gerado por computador pode ser codificado pelo codificador de vídeo 20. Os dados de vídeo codificados podem ser transmitidos para o dispositivo de destino 14 por meio da interface de saída 22 do dispositivo de fonte 12. Os dados de vídeo codificados também podem ser (ou alternativamente) armazenados no dispositivo de armazenamento 31 para acesso posterior pelo dispositivo de destino 14 ou outros dispositivos, para decodificação e/ou reprodução. O codificador de vídeo 20 ilustrado na Figura 1A e IB pode compreender o codificador de vídeo 20 ilustrado na Figura 2A, o codificador de vídeo 23 ilustrado na Figura 2B ou qualquer outro codificador de vídeo descrito no presente documento.
[040] No exemplo da Figura 1A, o dispositivo de destino 14 inclui a interface de entrada 28, um decodificador de vídeo 30 e um dispositivo de exibição 32. Em alguns casos, a interface de entrada 28 pode incluir um receptor e/ou um modem. A interface de entrada 28 do dispositivo de destino 14 pode receber os dados de vídeo codificados através do enlace 16 e/ou do dispositivo de armazenamento 31. Os dados de vídeo codificados comunicados através do enlace 16 ou fornecidos no dispositivo de armazenamento 31 podem incluir uma variedade de elementos de sintaxe gerados pelo codificador de vídeo 20 para uso por um decodificador de vídeo, como o decodificador de vídeo 30, ao decodificar os dados de vídeo. Tais elementos de sintaxe podem ser incluídos com os dados de vídeo codificados transmitidos em um meio de comunicação, armazenados em um meio de armazenamento ou armazenados em um servidor de arquivo. O decodificador de vídeo 30 ilustrado na Figura 1A e IB pode compreender o decodificador de vídeo 30 ilustrado na Figura 3A, o decodificador de vídeo 33 ilustrado na Figura 3B ou qualquer outro decodificador de vídeo descrito no presente documento.
[041] O dispositivo de exibição 32 pode ser integrado a, ou externo a, o dispositivo de destino 14. Em alguns exemplos, o dispositivo de destino 14 pode incluir um dispositivo de exibição integrado e também ser configurado para fazer interface com um dispositivo de exibição externo. Em outros exemplos, o dispositivo de destino 14 pode ser um dispositivo de exibição. Em geral, o dispositivo de exibição 32 exibe os dados de vídeo decodificados para um usuário e pode compreender qualquer um dentre uma variedade de dispositivos de exibição como um visor de cristal líquido (LCD), um visor de plasma, um visor de diodo emissor de luz orgânico (OLED) ou outro tipo de dispositivo de exibição.
[042] Em aspectos relacionados, a Figura IB mostra um sistema de codificação de vídeo exemplificativo 10’ em que o dispositivo de fonte 12 e o dispositivo de destino 14 estão em ou são parte de um dispositivo 11. O dispositivo 11 pode ser um monofone de telefone, como um telefone “inteligente” ou semelhantes. O dispositivo 11 pode incluir um dispositivo de controlador/processador 13 (opcionalmente presente) em comunicação operativa com o dispositivo de fonte 12 e o dispositivo de destino 14. O sistema de codificação de vídeo 10’ da Figura IB pode incluir adicionalmente uma unidade de processamento de vídeo 21 entre o codificador de vídeo 20 e a interface de saída 22. Em algumas implantações, a unidade de processamento de vídeo 21 é uma unidade separada, conforme ilustrado na Figura IB; no entanto, em outras implantações, a unidade de processamento de vídeo 21 pode ser implantada como uma porção do codificador de vídeo 20 e/ou do dispositivo de processador/controlador 13. O sistema de codificação de vídeo 10’ também pode incluir um rastreador 29 (opcionalmente presente), que pode rastrear um objeto de interesse em uma sequência de vídeo. O objeto ou interesse a ser rastreado pode ser segmentado por uma técnica descrita em conexão com um ou mais aspectos da presente revelação. Em aspectos relacionados, o rastreamento pode ser realizado pelo dispositivo de exibição 32, sozinho ou em conjunto com o rastreador 29. O sistema de codificação de vídeo 10’ da Figura IB e componentes dos mesmos, de outro modo, semelhantes ao sistema de codificação de vídeo 10 da Figura 1A e componentes do mesmo.
[043] O codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com um padrão de compactação de vídeo, como HEVC e podem se conformar para um Modelo de Teste de HEVC (HM). Alternativamente, o codificador de vídeo 20 e o decodificador de vídeo 30 podem operar de acordo com outros padrões de proprietário e da indústria, como o padrão ITU-T H.264, alternativamente referido como MPEG-4, Parte 10, AVC ou extensões de tais padrões. As técnicas dessa revelação, no entanto, não são limitadas a qualquer padrão de codificação particular. Outros exemplos de padrões de compactação de vídeo incluem MPEG-2 e ITU-T H.263.
[044] Embora não mostrados nos exemplos das Figuras 1A e IB, o codificador de vídeo 20 e o decodificador de vídeo 30 podem, cada um, ser integrados a um codificador e decodificador de áudio e podem incluir unidades de MUX- DEMUX apropriadas ou outro hardware e software, para lidar com codificação tanto de áudio quanto de vídeo em um fluxo de dados comum ou fluxos de dados separados. Se aplicável, em alguns exemplos, unidades de MUX-DEMUX podem se conformar ao protocolo de multiplexador ITU H.223 ou outros protocolos, como o protocolo de datagrama de usuário (UDP).
[045] O codificador de vídeo 20 e o decodificador de vídeo 30, cada um, podem ser implantados como qualquer um dentre uma variedade de conjunto de circuitos de codificador adequados, como um ou mais microprocessadores, processadores de sinal digital (DSPs), circuitos integrados específicos de aplicação (ASICs), arranjos de portas programáveis em campo (FPGAs), lógica discreta, software, hardware, firmware ou quaisquer combinações dos mesmos. Quando as técnicas são implantadas parcialmente em software, um dispositivo pode armazenar instruções para o software em um meio legível por computador não transitório, adequado e executar as instruções em hardware com o uso de um ou mais processadores para realizar as técnicas dessa revelação. Cada um dentre o codificador de vídeo 20 e o decodificador de vídeo 30 pode ser incluído em um ou mais codificadores ou decodificadores, em que cada um dos quais pode ser integrado como parte de um codificador/decodificador combinado em um respectivo dispositivo.
PROCESSO DE CODIFICAÇÃO DE VÍDEO
[046] Conforme mencionado brevemente acima, o codificador de vídeo 20 codifica dados de vídeo. Os dados de vídeo podem compreender uma ou mais imagens. Cada uma das imagens é uma imagem estática que forma parte de um vídeo. Em alguns exemplos, uma imagem pode ser referida como um “quadro” de vídeo. Quando o codificador de vídeo 20 codifica os dados de vídeo, o codificador de vídeo 20 pode gerar um fluxo de bits. O fluxo de bits pode incluir uma sequência de bits que formam uma representação codificada dos dados de vídeo. O fluxo de bits pode incluir imagens codificadas e dados associados. Uma imagem codificada é uma representação codificada de uma imagem.
[047] Para gerar o fluxo de bits, o codificador de vídeo 20 pode realizar operações de codificação em cada imagem nos dados de vídeo. Quando o codificador de vídeo 20 realiza operações de codificação nas imagens, o codificador de vídeo 20 pode gerar uma série de imagens codificadas e dados associados. Os dados associados podem incluir conjuntos de parâmetros de vídeo (VPS), conjuntos de parâmetros de sequência (SPSs), conjuntos de parâmetros de imagem (PPSs), conjuntos de parâmetros de adaptação (APSs) e outras estruturas de sintaxe. Um SPS pode conter parâmetros aplicáveis a zero ou mais sequências de imagens. Um PPS pode conter parâmetros aplicáveis a zero ou mais imagens. Um APS pode conter parâmetros aplicáveis a zero ou mais imagens. Os parâmetros em um APS podem ser parâmetros que são mais passíveis de alteração que os parâmetros em um PPS.
[048] Para gerar uma imagem codificada, o codificador de vídeo 20 pode particionar uma imagem em blocos de vídeo dimensionados de modo equivalente. Um bloco de vídeo pode ser um arranjo bidimensional de amostras. Cada um dos blocos de vídeo é associado a um treeblock. Em alguns exemplos, um treeblock pode ser referido como uma unidade de codificação maior (LCU). Os treeblocks de HEVC podem ser amplamente análogos aos macroblocos de padrões anteriores, como H.264/AVC. No entanto, um treeblock não é necessariamente limitado a um tamanho particular e pode incluir uma ou mais unidades de codificação (CUs). O codificador de vídeo 20 pode usar particionamento de quadtree para particionar os blocos de vídeo treeblocks em blocos de associados às Cus, por isso o nome “treeblocks”.
[049] Em alguns exemplos, o codificador de vídeo 20 pode particionar uma imagem em uma pluralidade de fatias. Cada uma das fatias pode incluir um número inteiro de CUs. Em alguns exemplos, uma fatia compreende um número inteiro de treeblocks. Em outros exemplos, um limite de uma fatia pode estar dentro de um treeblock.
[050] Como parte de realizar uma operação de codificação em uma imagem, o codificador de vídeo 20 pode realizar operações de codificação em cada fatia da imagem. Quando o codificador de vídeo 20 realiza uma operação de codificação em uma fatia, o codificador de vídeo 20 pode gerar dados codificados associados à fatia. Os dados codificados associados à fatia podem ser chamados de uma “fatia codificada”.
[051] Para gerar uma fatia codificada, o codificador de vídeo 20 pode realizar operações de codificação em cada treeblock em uma fatia. Quando o codificador de vídeo 20 realiza uma operação de codificação em um treeblock, o codificador de vídeo 20 pode gerar um treeblock codificado. O treeblock codificado pode compreender dados que representam uma versão codificada do treeblock.
[052] Quando o codificador de vídeo 20 gera uma fatia codificada, o codificador de vídeo 20 pode realizar operações de codificação nos (por exemplo, codificar) treeblocks na fatia de acordo com uma ordem de varredura de rastreio. Por exemplo, o codificador de vídeo 20 pode codificar os treeblocks da fatia em uma ordem que prossegue da esquerda para a direita através de uma fileira mais no topo de treeblocks na fatia, então, da esquerda para a direita através de uma fileira inferior próxima de treeblocks e assim por diante até que o codificador de vídeo 20 tenha codificado cada um dos treeblocks na fatia.
[053] Com resultado da codificação dos treeblocks de acordo com a ordem de varredura de rastreio, os treeblocks acima e à esquerda de um certo treeblock podem ter sido codificados, mas treeblocks abaixo e à direita do certo treeblock ainda não foram codificados. Consequentemente, o codificador de vídeo 20 pode ter capacidade de acessar informações geradas por treeblocks de codificação acima e à esquerda do certo treeblock quando codifica o certo treeblock. No entanto, o codificador de vídeo 20 pode não ter capacidade de acessar informações geradas por treeblocks de codificação abaixo e à direita do certo treeblock quando codifica o certo treeblock.
[054] Para gerar um treeblock codificado, o codificador de vídeo 20 pode realizar de modo recursivo particionamento de quadtree no bloco de vídeo do treeblock para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, o codificador de vídeo 20 pode particionar o bloco de vídeo de um treeblock em quatro sub-blocos igualmente dimensionados, particionar um ou mais dos sub-blocos em quatro sub-sub- blocos igualmente dimensionados e assim por diante. Uma CU particionada pode ser uma CU cujo bloco de vídeo é particionado em blocos de vídeo associados a outras CUs. Uma CU não particionada pode ser uma CU cujo bloco de vídeo não é particionado em blocos de vídeo associados a outras CUs.
[055] Um ou mais elementos de sintaxe no fluxo de bits podem indicar um número máximo de vezes que o codificador de vídeo 20 pode particionar o bloco de vídeo de um treeblock. Um bloco de vídeo de uma CU pode ser quadrado em formato. O tamanho do bloco de vídeo de uma CU (por exemplo, o tamanho da CU) pode estar na faixa de pixels 8x8 até o tamanho de um bloco de vídeo de um treeblock (por exemplo, o tamanho do treeblock) com um máximo de pixels 64x64 ou mais.
[056] O codificador de vídeo 20 pode realizar operações de codificação em (por exemplo, codificar) cada CU de um treeblock de acordo com uma ordem de varredura z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU de topo esquerda, uma CU de topo direita, uma CU de fundo esquerda e, então, uma CU de fundo direita, nessa ordem. Quando o codificador de vídeo 20 realiza uma operação de codificação em uma CU particionada, o codificador de vídeo 20 pode codificar CUs associadas a sub-blocos do bloco de vídeo da CU particionada de acordo com a ordem de varredura z. Em outras palavras, o codificador de vídeo 20 pode codificar uma CU associada a um sub-bloco de topo esquerdo, uma CU associada a um sub-bloco de topo direito, uma CU associada a um sub-bloco de fundo esquerdo e, então, uma CU associada a um sub-bloco de fundo direito, nessa ordem.
[057] Como resultado da codificação das CUs de um treeblock de acordo com uma ordem de varredura z, as CUs acima, acima e à esquerda, acima e à direita, esquerda e abaixo e à esquerda de uma certa CU podem ter sido codificadas. As CUs abaixo e à direita da certa CU ainda não foram codificadas. Consequentemente, o codificador de vídeo 20 pode ter capacidade de acessar as informações geradas pela codificação de algumas CUs que são próximas à certa CU quando codifica a certa CU. No entanto, o codificador de vídeo 20 pode não ter capacidade de acessar as informações geradas pode codificação de outras CUs que são próximas à certa CU quando codifica a certa CU.
[058] Quando o codificador de vídeo 20 codifica uma CU não particionada, o codificador de vídeo 20 pode gerar uma ou mais unidades de predição (PUs) para a CU. Cada uma das PUs da CU pode ser associada a um bloco de vídeo diferente dentro do bloco de vídeo da CU. O codificador de vídeo 20 pode gerar um bloco de vídeo previsto para cada PU da CU. O bloco de vídeo previsto de uma PU pode ser um bloco de amostras. O codificador de vídeo 20 pode usar intrapredição ou interpredição para gerar o bloco de vídeo previsto para uma PU.
[059] Quando o codificador de vídeo 20 usa intrapredição para gerar o bloco de vídeo previsto de uma PU, o codificador de vídeo 20 pode gerar o bloco de vídeo previsto da PU com base em amostras decodificadas da imagem associada à PU. Se o codificador de vídeo 20 usar intrapredição para gerar blocos de vídeo previstos das PUs de uma CU, a CU é uma CU intraprevista. Quando o codificador de vídeo 20 usa interpredição para gerar o bloco de vídeo previsto da PU, o codificador de vídeo 20 pode gerar o bloco de vídeo previsto da PU com base em amostras decodificadas de um ou mais imagens além da imagem associada à PU. Se o codificador de vídeo 20 usar interpredição para gerar blocos de vídeo previstos das PUs de uma CU, a CU é uma CU interprevista.
[060] Além disso, quando o codificador de vídeo 20 usa interpredição para gerar um bloco de vídeo previsto para uma PU, o codificador de vídeo 20 pode gerar informações de movimento para a PU. As informações de movimento para uma PU podem indicar um ou mais blocos de referência da PU. Cada bloco de referência da PU pode ser um bloco de vídeo dentro de uma imagem de referência. A imagem de referência pode ser uma imagem além da imagem associada à PU. Em alguns exemplos, um bloco de referência de uma PU também pode ser referido como a “amostra de referência” da PU. O codificador de vídeo 20 pode gerar o bloco de vídeo previsto para a PU com base nos blocos de referência da PU.
[061] Após o codificador de vídeo 20 gerar blocos de vídeo previstos para uma ou mais PUs de uma CU, o codificador de vídeo 20 pode gerar dados residuais para a CU com base nos blocos de vídeo previstos para as PUs da CU. Os dados residuais para a CU podem indicar diferenças entre as amostras nos blocos de vídeo previstos para as PUs da CU e o bloco de vídeo original da CU.
[062] Além disso, como parte da realização de uma operação de codificação em uma CU não particionada, o codificador de vídeo 20 pode realizar particionamento de quadtree recursivo nos dados residuais da CU para particionar os dados residuais da CU em um ou mais blocos de dados residuais (por exemplo, blocos de vídeo residuais) associados às unidades de transformada (TUs) da CU. Cada TU de uma CU pode ser associada a um bloco de vídeo residual diferente.
[063] O codificador de vídeo 20 pode aplicar uma ou mais transformadas aos blocos de vídeo residuais associados às TUs para gerar blocos de coeficiente de transformada (por exemplo, blocos de coeficientes de transformada) associados às TUs. Conceitualmente, um bloco de coeficiente de transformada pode ser uma matriz bidimensional (2D) de coeficientes de transformada.
[064] Após gerar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode realizar um processo de quantização no bloco de coeficiente de transformada. A quantização, em geral, se refere a um processo no qual os coeficientes de transformada são quantizados para possivelmente reduzir a quantidade de dados usados para representar os coeficientes de transformada, fornecendo compactação adicional. O processo de quantização pode reduzir a profundidade de bit associada a alguns ou todos os coeficientes de transformada. Por exemplo, um coeficiente de transformada de n-bit pode ser arredondado para baixo para um coeficiente de transformada de m-bit durante a quantização, em que n é maior que m.
[065] O codificador de vídeo 20 pode associar cada CU a um valor de parâmetro de quantização (QP). O valor de QP associado a uma CU pode determinar quanto o codificador de vídeo 20 quantiza os blocos de coeficiente de transformada associados à CU. O codificador de vídeo 20 pode ajustar o grau de quantização aplicado aos blocos de coeficiente de transformada associados a uma CU mediante o ajuste do valor de QP associado à CU.
[066] Após o codificador de vídeo 20 quantizar um bloco de coeficiente de transformada, o codificador de vídeo 20 pode gerar conjuntos de elementos de sintaxe que representam os coeficientes de transformada no bloco de coeficiente de transformada quantizado. O codificador de vídeo 20 pode aplicar operações de codificação de entropia, como operações de Codificação Aritmética Binária Adaptativa de Contexto (CABAC), a alguns dos elementos de sintaxe. Outras técnicas de codificação de entropia, como codificação de comprimento variável adaptativa de contexto (CAVLC), codificação de entropia de particionamento de intervalo de probabilidade (PIPE) ou outra codificação aritmética binária também poderia ser usada.
[067] O fluxo de bits gerado pelo codificador de vídeo 20 pode incluir uma série de unidades de Camada de Abstração de Redw (NAL). Cada uma das unidades de NAL pode ser uma estrutura de sintaxe que contém uma indicação de um tipo de dados na unidade de NAL e bytes que contêm os dados. Por exemplo, uma unidade de NAL pode conter dados que representam um conjunto de parâmetros de vídeo, um conjunto de parâmetros de sequência, um conjunto de parâmetros de imagem, uma fatia codificada, SEI, um delimitador de unidade de acesso, dados de preenchimento ou outro tipo de dados. Os dados em uma unidade de NAL podem incluir várias estruturas de sintaxe.
[068] O decodificador de vídeo 30 pode receber o fluxo de bits gerado pelo codificador de vídeo 20. O fluxo de bits pode incluir uma representação codificada dos dados de vídeo codificados pelo codificador de vídeo 20. Quando o decodificador de vídeo 30 recebe o fluxo de bits, o decodificador de vídeo 30 pode realizar uma operação de análise no fluxo de bits. Quando o decodificador de vídeo 30 realiza a operação de análise, o decodificador de vídeo 30 pode extrair elementos de sintaxe do fluxo de bits. O decodificador de vídeo 30 pode reconstruir as imagens dos dados de vídeo com base nos elementos de sintaxe extraídos do fluxo de bits. O processo para reconstruir os dados de vídeo com base nos elementos de sintaxe pode ser, em geral, recíproco ao processo realizado pelo codificador de vídeo 20 para gerar os elementos de sintaxe.
[069] Após o decodificador de vídeo 30 extrair os elementos de sintaxe associados a uma CU, o decodificador de vídeo 30 pode gerar blocos de vídeo previstos para as PUs da CU com base nos elementos de sintaxe. Além disso, o decodificador de vídeo 30 pode quantizar de modo inverso blocos de coeficiente de transformada associados a TUs da CU. O decodificador de vídeo 30 pode realizar transformadas inversas nos blocos de coeficiente de transformada para reconstruir blocos de vídeo residuais associados à TUs da CU. Após gerar os blocos de vídeo previstos e reconstruir os blocos de vídeo residuais, o decodificador de vídeo 30 pode reconstruir o bloco de vídeo da CU com base nos blocos de vídeo previstos e nos blocos de vídeo residuais. Dessa maneira, o decodificador de vídeo 30 pode reconstruir os blocos de vídeo de CUs com base nos elementos de sintaxe no fluxo de bits.
CODIFICADOR DE VÍDEO
[070] A Figura 2A é um diagrama de blocos que ilustra um exemplo do codificador de vídeo 20 que pode implantar técnicas de acordo com os aspectos descritos nesta revelação. O codificador de vídeo 20 pode ser configurado para processar uma única camada de um quadro de vídeo, como para HEVC. Adicionalmente, o codificador de vídeo 20 pode ser configurado para realizar qualquer uma ou todas as técnicas desta revelação. Em alguns exemplos, as técnicas descritas nesta revelação podem ser compartilhadas dentre os diversos componentes do codificador de vídeo 20. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar qualquer uma ou todas as técnicas descritas nesta revelação.
[071] Para propósitos de explicação, esta revelação descreve o codificador de vídeo 20 no contexto de codificação de HEVC. No entanto, as técnicas desta revelação podem ser aplicáveis a outros padrões ou métodos de codificação. O exemplo representado na Figura 2A é para um codec de camada única. No entanto, conforme será descrito adicionalmente em relação à Figura 2B, alguns ou todos os codificadores de vídeo 20 podem ser duplicados para processamento de um codec de multicamada.
[072] O codificador de vídeo 20 pode realizar intra e intercodificação de blocos de vídeo dentro de fatias de vídeo. A intracodificação depende da predição espacial para reduzir ou remover redundância espacial em vídeo dentro de um certo quadro de vídeo ou imagem. Inter codificação depende da predição temporal para reduzir ou remover redundância temporal em vídeo dentro de quadros ou imagens adjacentes de uma sequência de vídeo. Intra modo (modo I) pode se referir a qualquer um dentre vários modos de codificação baseados em espaço. Inter modos, como predição unidirecional (modo P) ou predição bidirecional (modo B), pode se referir a qualquer um dentre vários modos de codificação baseados em tempo.
[073] No exemplo da Figura 2A, o codificador de vídeo 20 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do codificador de vídeo 20 incluem uma unidade de processamento de predição 100, uma unidade de geração de residual 102, uma unidade de processamento de transformada 104, a unidade de quantização 106, uma unidade de quantização inversa 108, uma unidade de transformada inversa 110, uma unidade de reconstrução 112, uma unidade de filtro 113, um armazenamento temporário de imagem decodificada 114 e uma unidade de codificação de entropia 116. A unidade de processamento de predição 100 inclui uma unidade de interpredição 121, uma unidade de estimativa de movimento 122, uma unidade de compensação de movimento 124, uma unidade de intrapredição 126 e uma unidade de predição de intercamada 128. Em outros exemplos, o codificador de vídeo 20 pode incluir mais, poucos ou componentes funcionais diferentes. Além disso, a unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem ser altamente integradas, mas são representadas no exemplo da Figura 2A separadamente para propósitos de explicação.
[074] O codificador de vídeo 20 pode receber dados de vídeo. O codificador de vídeo 20 pode receber os dados de vídeo de várias fontes. Por exemplo, o codificador de vídeo 20 pode receber os dados de vídeo de fonte de vídeo 18 (por exemplo, mostrados na Figura 1A ou IB) ou outra fonte. Os dados de vídeo podem representar uma série de imagens. Para codificar os dados de vídeo, o codificador de vídeo 20 pode realizar uma operação de codificação em cada uma das imagens. Como parte de realização da operação de codificação em uma imagem, o codificador de vídeo 20 pode realizar operações de codificação em cada fatia da imagem. Como parte de realização de uma operação de codificação em uma fatia, o codificador de vídeo 20 pode realizar operações de codificação em treeblocks na fatia.
[075] Como parte de realização de uma operação de codificação em um treeblock, a unidade de processamento de predição 100 pode realizar particionamento de quadtree no bloco de vídeo do treeblock para dividir o bloco de vídeo em blocos de vídeo progressivamente menores. Cada um dos blocos de vídeo menores pode ser associado a uma CU diferente. Por exemplo, a unidade de processamento de predição 100 pode particionar um bloco de vídeo de um treeblock em quatro sub- blocos igualmente dimensionados, particionar um ou mais dos sub-blocos em quatro sub-sub-blocos igualmente dimensionados e assim por diante.
[076] Os tamanhos dos blocos de vídeo associados a CUs podem estar na faixa de amostras 8x8 até o tamanho do treeblock como um máximo de amostras 64x64 ou maior. Nesta revelação, “NxN” e “N por N” podem ser usados de modo intercambiável para se referir às dimensões de amostra de um bloco de vídeo em termos de dimensões vertical e horizontal, por exemplo, amostras 16x16 ou amostras 16 por 16. Em geral, um bloco de vídeo 16x16 tem dezesseis amostras em uma direção vertical (y = 16) e dezesseis amostras em uma direção horizontal (x = 16). Do mesmo modo, um bloco NxN, em geral, tem N amostras em uma direção vertical e N amostras em uma direção horizontal, em que N representa um valor de número inteiro não negativo.
[077] Além disso, como parte de realização da operação de codificação em um treeblock, a unidade de processamento de predição 100 pode gerar uma estrutura de dados quadtree hierárquica para o treeblock. Por exemplo, um treeblock pode corresponder a um nó raiz da estrutura de dados de quadtree. Se a unidade de processamento de predição 100 particionar o bloco de vídeo do treeblock em quatro sub- blocos, o nó raiz tem quatro nós filhos na estrutura de dados de quadtree. Cada um dos nós filhos corresponde a uma CU associada a um dos sub-blocos. Se a unidade de processamento de predição 100 particionar um dos sub-blocos em quatro sub- sub-blocos, o nó que corresponde à CU associada ao sub-bloco pode ter quatro nós filhos, em que cada dos quais corresponde a uma CU associada a um dos sub-sub-blocos.
[078] Cada nó da estrutura de dados de quadtree pode conter dados de sintaxe (por exemplo, elementos de sintaxe) para o treeblock ou CU correspondente. Por exemplo, um nó no quadtree pode incluir um sinalizador de divisão que indica se o bloco de vídeo da CU corresponde ao nó é particionado (por exemplo, dividido) em quatro sub-blocos. Os elementos de sintaxe para uma CU podem ser definidos de modo recursivo e podem depender de se o bloco de vídeo da CU é dividido em sub-blocos. Uma CU cujo bloco de vídeo não é particionado pode corresponder a um nó folha na estrutura de dados de quadtree. Um treeblock codificado pode incluir dados com base na estrutura de dados de quadtree para um treeblock correspondente.
[079] O codificador de vídeo 20 pode realizar operações de codificação em cada CU não particionada de um treeblock. Quando o codificador de vídeo 20 realiza uma operação de codificação em uma CU não particionada, o codificador de vídeo 20 gera dados que representam uma representação codificada da CU não particionada.
[080] Como parte de realização de uma operação de codificação em uma CU, a unidade de processamento de predição 100 pode particionar o bloco de vídeo da CU dentre uma ou mais PUs da CU. O codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar vários tamanhos de PU. Ao assumir que o tamanho de uma CU particular é 2Nx2N, o codificador de vídeo 20 e o decodificador de vídeo 30 podem suportar tamanhos de PU de 2Nx2N ou NxN, e interpredição em tamanhos simétricos de PU de 2Nx2N, 2NxN, Nx2N, NxN, 2NxnU, nLx2N, nRx2N ou semelhantes. O codificador de vídeo 20 e o decodificador de vídeo 30 também podem suportar particionamento assimétrico para tamanhos de PU de 2NxnU, 2NxnD, nLx2N e nRx2N. Em alguns exemplos, a unidade de processamento de predição 100 pode realizar particionamento geométrico para particionar o bloco de vídeo de uma CU dentre PUs da CU ao longo de um limite que não alcança os lados do bloco de vídeo da CU em ângulos direitos.
[081] A unidade de interpredição 121 pode realizar interpredição em cada PU da CU. A interpredição pode fornecer compactação temporal. Para realizar interpredição em uma PU, a unidade de estimativa de movimento 122 pode gerar informações de movimento para a PU. A unidade de compensação de movimento 124 pode gerar um bloco de vídeo previsto para a PU com base nas informações de movimento e amostras decodificadas de imagens além da imagem associada à CU (por exemplo, imagens de referência). Nesta revelação, um bloco de vídeo previsto gerado por unidade de compensação de movimento 124 pode ser referido como um bloco de vídeo interprevisto.
[082] As fatias podem ser fatias I, fatias P ou fatias B. A unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem realizar operações diferentes para uma PU de uma CU dependendo de se a PU está em uma fatia I, uma fatia P ou uma fatia B. Em uma fatia I, todas as PUs são intra previstas. Consequentemente, se a PU estiver em uma fatia I, a unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 não realizam interpredição na PU.
[083] Se a PU estiver em uma fatia P, a imagem que contém a PU é associada a uma lista de imagens de referência referida como “lista 0”. Cada uma das imagens de referência na lista 0 contém amostras que podem ser usadas para interpredição de outras imagens. Quando a unidade de estimativa de movimento 122 realiza a operação de estimativa de movimento em relação a uma PU em uma fatia P, a unidade de estimativa de movimento 122 pode procurar por imagens de referência na lista 0 para um bloco de referência para a PU. O bloco de referência da PU pode ser um conjunto de amostras, por exemplo, um bloco de amostras, que corresponde de modo mais próximo às amostras no bloco de vídeo da PU. A unidade de estimativa de movimento 122 pode usar uma variedade de métricas para determinar quão proximamente um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU. Por exemplo, a unidade de estimativa de movimento 122 pode determinar quão proximamente um conjunto de amostras em uma imagem de referência corresponde às amostras no bloco de vídeo de uma PU pela soma de diferença absoluta (SAD), soma de diferença quadrada (SSD) ou outras métricas de diferença.
[084] Após identificar um bloco de referência de uma PU em uma fatia P, a unidade de estimativa de movimento 122 pode gerar um índice de referência que indica a imagem de referência na lista 0 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. Em vários exemplos, a unidade de estimativa de movimento 122 pode gerar vetores de movimento para variar graus de precisão. Por exemplo, a unidade de estimativa de movimento 122 pode gerar vetores de movimento em precisão de amostra de um quarto, precisão de amostra de um oitavo ou outra precisão de amostra fracional. No caso de precisão de amostra fracional, os valores de bloco de referência podem ser interpolados de valores de amostra de posição de número inteiro na imagem de referência. A unidade de estimativa de movimento 122 pode emitir o índice de referência e o vetor de movimento como as informações de movimento da PU. A unidade de compensação de movimento 124 pode gerar um bloco de vídeo previsto da PU com base no bloco de referência identificado pelas informações de movimento da PU.
[085] Se a PU estiver em uma fatia B, a imagem que contém a PU pode ser associada a duas listas de imagens de referência, chamadas de “lista 0” e “lista 1”. Em alguns exemplos, uma imagem que contém uma fatia B pode ser associada a uma combinação de lista que é uma combinação de lista 0 e lista 1.
[086] Além disso, se a PU estiver em uma fatia B, a unidade de estimativa de movimento 122 pode realizar predição unidirecional ou predição bidirecional para a PU. Quando unidade de estimativa de movimento 122 realiza predição unidirecional para a PU, a unidade de estimativa de movimento 122 pode procurar as imagens de referência de lista 0 ou lista 1 para um bloco de referência para a PU. A unidade de estimativa de movimento 122 pode, então, gerar um índice de referência que indica a imagem de referência na lista 0 ou lista 1 que contém o bloco de referência e um vetor de movimento que indica um deslocamento espacial entre a PU e o bloco de referência. A unidade de estimativa de movimento 122 pode emitir o índice de referência, um indicador de direção de predição e o vetor de movimento como as informações de movimento da PU. O indicador de direção de predição pode indicar se o índice de referência indica uma imagem de referência na lista 0 ou lista 1. A unidade de compensação de movimento 124 pode gerar o bloco de vídeo previsto da PU com base no bloco de referência indicado pelas informações de movimento da PU.
[087] Quando a unidade de estimativa de movimento 122 realiza predição bidirecional para uma PU, a unidade de estimativa de movimento 122 pode procurar as imagens de referência na lista 0 para um bloco de referência para a PU e também pode procurar as imagens de referência na lista 1 para outro bloco de referência para a PU. A unidade de estimativa de movimento 122 pode, então, gerar índices de referência que indicam as imagens de referência na lista 0 e lista 1 que contêm os blocos de referência e vetores de movimento que indicam deslocamentos espaciais entre os blocos de referência e a PU. A unidade de estimativa de movimento 122 pode emitir os índices de referência e os vetores de movimento da PU como as informações de movimento da PU. A unidade de compensação de movimento 124 pode gerar o bloco de vídeo previsto da PU com base nos blocos de referência indicados pelas informações de movimento da PU.
[088] Em alguns exemplos, a unidade de estimativa de movimento 122 não emite um conjunto completo de informações de movimento para uma PU para a unidade de codificação de entropia 116. Em vez disso, a unidade de estimativa de movimento 122 pode sinalizar as informações de movimento de uma PU com referência às informações de movimento de outra PU. Por exemplo, a unidade de estimativa de movimento 122 pode determinar que as informações de movimento da PU são semelhantes o suficiente às informações de movimento de uma PU próxima. Nesse exemplo, a unidade de estimativa de movimento 122 pode indicar, em uma estrutura de sintaxe associada à PU, um valor que indica para o decodificador de vídeo 30 que a PU tem as mesmas informações de movimento que a PU próxima. Em outro exemplo, a unidade de estimativa de movimento 122 pode identificar, em uma estrutura de sintaxe associada à PU, uma PU próxima e uma diferença de vetor de movimento (MVD). A diferença de vetor de movimento indica uma diferença entre o vetor de movimento da PU e o vetor de movimento da PU próxima indicada. O decodificador de vídeo 30 pode usar o vetor de movimento da PU próxima indicada e a diferença de vetor de movimento para determinar o vetor de movimento da PU. Em referência às informações de movimento de uma primeira PU quando sinaliza as informações de movimento de uma segunda PU, o codificador de vídeo 20 pode ter capacidade de sinalizar as informações de movimento da segunda PU com o uso de poucos bits.
[089] Como parte de realização de uma operação de codificação em uma CU, a unidade de intrapredição 126 pode realizar intrapredição em PUs da CU. A intrapredição pode fornecer compactação espacial. Quando a unidade de intrapredição 126 realiza intrapredição em uma PU, a unidade de intrapredição 126 pode gerar dados de predição para a PU com base em amostras decodificadas de outras PUs na mesma imagem. Os dados de predição para a PU podem incluir um bloco de vídeo previsto e vários elementos de sintaxe. A unidade de intrapredição 126 pode realizar intrapredição em PUs em fatias I, fatias P e fatias B.
[090] Para realizar intrapredição em uma PU, a unidade de intrapredição 126 pode usar múltiplos modos de intrapredição para gerar múltiplos conjuntos de dados de predição para a PU. Quando a unidade de intrapredição 126 usa um modo de intrapredição para gerar um conjunto de dados de predição para a PU, a unidade de intrapredição 126 pode estender amostras de blocos de vídeo de PUs próximas através do bloco de vídeo da PU em uma direção e/ou gradiente associados ao modo de intrapredição. As PUs próximas podem estar acima, acima e à direita, acima e à esquerda, ou à esquerda da PU, assumindo uma ordem de codificação da esquerda para a direita, do topo para o fundo para PUs, CUs e treeblocks. A unidade de intrapredição 126 pode usar diversos modos de intrapredição, por exemplo, 33 modos de intrapredição direcionais, dependendo do tamanho da PU.
[091] A unidade de processamento de predição 100 pode selecionar os dados de predição para uma PU dentre os dados de predição gerados pela unidade de compensação de movimento 124 para a PU ou os dados de predição gerados pela unidade de intrapredição 126 para a PU. Em alguns exemplos, a unidade de processamento de predição 100 seleciona os dados de predição para a PU com base em métricas de taxa/distorção dos conjuntos de dados de predição.
[092] Se a unidade de processamento de predição 100 selecionar dados de predição gerados pela unidade de intrapredição 126, a unidade de processamento de predição 100 pode sinalizar o modo de intrapredição que foi usado para gerar os dados de predição para as PUs, por exemplo, o modo de intrapredição selecionado. A unidade de processamento de predição 100 pode sinalizar o modo de intrapredição selecionado de várias maneiras. Por exemplo, pode ser provável que o modo de intrapredição selecionado seja o mesmo que o modo de intrapredição de uma PU próxima. Em outras palavras, o modo de intrapredição da PU próxima pode ser o modo mais provável para a PU atual. Assim, a unidade de processamento de predição 100 pode gerar um elemento de sintaxe para indicar que o modo de intrapredição selecionado é o mesmo que o modo de intrapredição da PU próxima.
[093] Conforme discutido acima, o codificador de vídeo 20 pode incluir a unidade de predição de intercamada 128. A unidade de predição de intercamada 128 é configurada para prever um bloco atual (por exemplo, um bloco atual no EL) com o uso de um ou mais camadas diferentes que estão disponíveis em SHVC (por exemplo, uma camada de base ou de referência). Tal predição pode ser referida como predição de intercamada. A unidade de predição de intercamada 128 utiliza métodos de predição para reduzir redundância de intercamada aperfeiçoando, desse modo, eficácia de codificação e reduzindo exigências de recurso computacional. Alguns exemplos de predição de intercamada incluem intrapredição de intercamada, predição de movimento de intercamada e predição residual de intercamada. A intrapredição de intercamada usa a reconstrução de blocos colocalizados na camada-base para prever o bloco atual na camada de intensificação. A predição de movimento de intercamada usas informações de movimento da camada-base para prever movimento na camada de intensificação. A predição residual de intercamada usa o resíduo da camada-base para prever o resíduo da camada de intensificação.
[094] Após a unidade de processamento de predição 100 selecionar os dados de predição para PUs de uma CU, a unidade de geração de residual 102 pode gerar dados residuais para a CU mediante a subtração dos (por exemplo, indicada pelo sinal de menos) blocos de vídeo previstos das PUs da CU do bloco de vídeo da CU. Os dados residuais de uma CU podem incluir blocos de vídeo residuais em 2D que correspondem a componentes de amostra diferentes das amostras no bloco de vídeo da CU. Por exemplo, os dados residuais podem incluir um bloco de vídeo residual que corresponde a diferenças entre componentes de luminância de amostras nos blocos de vídeo previstos das PUs da CU e componentes de luminância de amostras no bloco de vídeo original da CU. Além disso, os dados residuais da CU podem incluir blocos de vídeo residuais que correspondem às diferenças entre componentes de crominância de amostras nos blocos de vídeo previstos das PUs da CU e os componentes de crominância das amostras no bloco de vídeo original da CU.
[095] A unidade de processamento de predição 100 pode realizar particionamento de quadtree para particionar os blocos de vídeo residuais de uma CU em sub- blocos. Cada bloco de vídeo residual não dividido pode ser associado a uma TU diferente da CU. Os tamanhos e posições dos blocos de vídeo residuais associados a TUs de uma CU podem ter ou não como base os tamanhos e as posições de blocos de vídeo associados às PUs da CU. Uma estrutura de quadtree conhecida como um “quadtree residual” (QT) pode incluir nós associados a cada um dos blocos de vídeo residuais. As TUs de uma CU podem corresponder a nós folha da RQT.
[096] A unidade de processamento de transformada 104 pode gerar um ou mais blocos de coeficiente de transformada para cada TU de uma CU mediante a aplicação de uma ou mais transformadas a um bloco de vídeo residual associado à TU. Cada um dos blocos de coeficiente de transformada pode ser uma matriz em 2D de coeficientes de transformada. A unidade de processamento de transformada 104 pode aplicar várias transformadas ao bloco de vídeo residual associado a uma TU. Por exemplo, a unidade de processamento de transformada 104 pode aplicar uma transformada de cosseno discreta (DCT), uma transformada direcional ou uma transformada conceitualmente semelhante ao bloco de vídeo residual associado a uma TU.
[097] Após a unidade de processamento de transformada 104 gerar um bloco de coeficiente de transformada associado a uma TU, a unidade de quantização 106 pode quantizar os coeficientes de transformada no bloco de coeficiente de transformada. A unidade de quantização 106 pode quantizar um bloco de coeficiente de transformada associado a uma TU de uma CU com base em um valor de QP associado à CU.
[098] O codificador de vídeo 20 pode associar um valor de QP a uma CU de várias maneiras. Por exemplo, o codificador de vídeo 20 pode realizar uma análise de distorção de taxa em um treeblock associado à CU. Na análise de distorção de taxa, o codificador de vídeo 20 pode gerar múltiplas representações codificadas do treeblock mediante a realização de uma operação de codificação múltiplas vezes no treeblock. O codificador de vídeo 20 pode associar valores de QP diferentes à CU quando o codificador de vídeo 20 gera representações codificadas diferentes do treeblock. O codificador de vídeo 20 pode sinalizar que um certo valor de QP é associado à CU quando o certo valor de QP é associado à CU em uma representação codificada do treeblock que tem uma taxa de bits inferior e métrica de distorção.
[099] A unidade de quantização inversa 108 e unidade de transformada inversa 110 pode aplicar quantização inversa e transformadas inversas ao bloco de coeficiente de transformada, respectivamente, para reconstruir um bloco de vídeo residual do bloco de coeficiente de transformada. A unidade de reconstrução 112 pode adicionar o bloco de vídeo residual reconstruído às amostras correspondentes de um ou mais blocos de vídeo previstos gerados pela unidade de processamento de predição 100 para produzir um bloco de vídeo reconstruído associado a uma TU. Ao reconstruir os blocos de vídeo para cada TU de uma CU dessa maneira, o codificador de vídeo 20 pode reconstruir o bloco de vídeo da CU.
[100] Após a unidade de reconstrução 112 reconstruir o bloco de vídeo de uma CU, a unidade de filtro 113 pode realizar uma operação de desbloqueio para reduzir artefatos de desbloqueio no bloco de vídeo associado à CU. Após realizar as uma ou mais operações de desbloqueio, a unidade de filtro 113 pode armazenar o bloco de vídeo reconstruído da CU em armazenamento temporário de imagem decodificada 114. A unidade de estimativa de movimento 122 e a unidade de compensação de movimento 124 podem usar uma imagem de referência que contenha o bloco de vídeo reconstruído para realizar interpredição em PUs de imagens subsequentes. Além disso, a unidade de intrapredição 126 pode usar blocos de vídeo reconstruídos em armazenamento temporário de imagem decodificada 114 para realizar intrapredição em outras PUs na mesma imagem que a CU.
[101] A unidade de codificação de entropia 116 pode receber dados de outros componentes funcionais do codificador de vídeo 20. Por exemplo, a unidade de codificação de entropia 116 pode receber blocos de coeficiente de transformada da unidade de quantização 106 e pode receber elementos de sintaxe da unidade de processamento de predição 100. Quando a unidade de codificação de entropia 116 recebe os dados, a unidade de codificação de entropia 116 pode realizar uma ou mais operações de codificação de entropia para gerar dados codificados de entropia. Por exemplo, o codificador de vídeo 20 pode realizar uma operação de CAVLC, uma operação de CABAC, uma operação de codificação de comprimento variável para variável (V2V), uma operação de codificação aritmética binária adaptativa de contexto baseada em sintaxe (SBAC), uma operação de codificação de Entropia de Particionamento de Intervalo de Probabilidade (PIPE) ou outro tipo de operação de codificação de dados nos dados. A unidade de codificação de entropia 116 pode emitir um fluxo de bits que inclui os dados codificados de entropia.
[102] Como parte de realização de uma operação de codificação de dados em dados, a unidade de codificação de entropia 116 pode selecionar um modelo de contexto. Se a unidade de codificação de entropia 116 estiver realizando uma operação de CABAC, o modelo de contexto pode indicar estimativas de probabilidades de binários particulares que têm valores particulares. No contexto de CABAC, o termo “binário” é usado para se referir a um bit de uma versão de binarização de um elemento de sintaxe.
CODIFICADOR DE VÍDEO DE MULTICAMADA
[103] A Figura 2B é um diagrama de blocos que ilustra um exemplo de um codificador de vídeo de multicamada 23 (também simplesmente referido como codificador de vídeo 23) que pode implantar técnicas de acordo com os aspectos descritos nesta revelação. O codificador de vídeo 23 pode ser configurado para processar quadros de vídeo de multicamada, como para SHVC e MV-HEVC. Adicionalmente, o codificador de vídeo 23 pode ser configurado para realizar qualquer uma ou todas as técnicas desta revelação.
[104] O codificador de vídeo 23 inclui um codificador de vídeo 20A e um codificador de vídeo 20B, em que cada um dos quais pode ser configurado com o codificador de vídeo 20 e pode realizar as funções descritas acima em relação ao codificador de vídeo 20. Adicionalmente, conforme indicado pela reutilização de números de referência, os codificadores de vídeo 20A e 20B podem incluir pelo menos alguns dos sistemas e subsistemas, como o codificador de vídeo 20. Embora o codificador de vídeo 23 seja ilustrado como incluindo dois codificadores de vídeo 20A e 20B, o codificador de vídeo 23 não é limitado como tal e pode incluir várias camadas de codificador de vídeo 20. Em algumas modalidades, o codificador de vídeo 23 pode incluir um codificador de vídeo 20 para cada imagem ou quadro em uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco imagens pode ser processada ou codificada por um codificador de vídeo que inclui cinco camadas de codificador. Em algumas modalidades, o codificador de vídeo 23 pode incluir mais camadas de codificador que quadros em uma unidade de acesso. Em alguns casos, algumas das camadas de codificador de vídeo podem estar inativas quando processa algumas unidades de acesso.
[105] Além dos codificadores de vídeo 20A e 20B, o codificador de vídeo 23 pode incluir uma unidade de reamostragem 90. A unidade de reamostragem 90 pode, em alguns casos, aumentar a resolução de uma camada-base de um quadro de vídeo recebido para, por exemplo, criar uma camada de intensificação. A unidade de reamostragem 90 pode aumentar a resolução de informações particulares associadas à camada- base recebida de um quadro, mas não outras informações. Por exemplo, a unidade de reamostragem 90 pode aumentar a resolução do tamanho espacial ou número de pixels da camada- base, mas o número de fatias ou a contagem de ordem de imagem podem permanecer constantes. Em alguns casos, a unidade de reamostragem 90 pode não processar o vídeo recebido e/ou pode ser opcional. Por exemplo, em alguns casos, a unidade de processamento de predição 100 pode realizar aumento de resolução de amostragem. Em algumas modalidades, a unidade de reamostragem 90 é configurada para aumentar a resolução de uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para se submeter a um conjunto de regras de limite de fatia e/ou regras de varredura de rastreio. Embora primeiramente descrita como aumento de resolução de uma camada-base, ou uma camada inferior em uma unidade de acesso, em alguns casos, a unidade de reamostragem 90 pode diminuir a resolução de uma camada. Por exemplo, se durante a transmissão contínua de um vídeo a largura de banda for reduzida, um quadro pode ter resolução reduzida em vez de resolução aumentada.
[106] A unidade de reamostragem 90 pode ser configurada para receber uma imagem ou quadro (ou informações de imagem associadas à imagem) do armazenamento temporário de imagem decodificada 114 do codificador de camada inferior (por exemplo, o codificador de vídeo 20A) e para aumentar a resolução da imagem (ou as informações de imagem recebidas). Essa imagem com resolução aumentada pode, então, ser fornecida para a unidade de processamento de predição 100 de um codificador de camada superior (por exemplo, o codificador de vídeo 20B) configurado para codificar uma imagem na mesma unidade de acesso que o codificador de camada inferior. Em alguns casos, o codificador de camada superior é uma camada removida do codificador de camada inferior. Em outros casos, podem haver um ou mais codificadores de camada superior entre o codificador de vídeo de camada 0 e o codificador de camada 1 da Figura 2B.
[107] Em alguns casos, a unidade de reamostragem 90 pode ser omitida ou contornada. Em tais casos, a imagem do armazenamento temporário de imagem decodificada 114 do codificador de vídeo 20A pode ser fornecida diretamente, ou pelo menos sem ser fornecida para a unidade de reamostragem 90, para a unidade de processamento de predição 100 do codificador de vídeo 20B. Por exemplo, se os dados de vídeo fornecidos para o codificador de vídeo 20B e a imagem de referência do armazenamento temporário de imagem decodificada 114 do codificador de vídeo 20A forem do mesmo tamanho ou resolução, a imagem de referência pode ser fornecida para o codificador de vídeo 20B sem qualquer reamostragem.
[108] Em algumas modalidades, o codificador de vídeo 23 reduz a resolução de dados de vídeo a serem fornecidos para o codificador de camada inferior com o uso da unidade de redução de resolução 94 que antes fornecia os dados de vídeo para o codificador de vídeo 20A. Alternativamente, a unidade de redução de resolução 94 pode ser uma unidade de reamostragem 90 com capacidade de aumentar a resolução ou reduzir a resolução dos dados de vídeo. Em ainda outras modalidades, a unidade de redução de resolução 94 pode ser omitida.
[109] Conforme ilustrado na Figura 2B, o codificador de vídeo 23 pode incluir adicionalmente um multiplexador (ou mux) 98. O mux 98 pode emitir um fluxo de bits combinado do codificador de vídeo 23. O fluxo de bits combinado pode ser criado ao tomar um fluxo de bits de cada um dos codificadores de vídeo 20A e 20B e alterar qual fluxo de bits é emitido em um determinado momento. Enquanto em alguns casos os bits dos dois (ou mais no caso de mais de duas camadas de codificador de vídeo) fluxos de bits podem ser alternados em um bit de cada vez, em muitos casos, os fluxos de bits são combinados de modo diferente. Por exemplo, o fluxo de bits de emissão pode ser criado mediante a alternância do fluxo de bits selecionado em um bloco em um momento. Em outro exemplo, o fluxo de bits de emissão pode ser criado mediante a emissão de uma razão de blocos não 1: 1 de cada um dos codificadores de vídeo 20A e 20B. Por exemplo, dois blocos podem ser emitidos do codificador de vídeo 20B para cada bloco emitido do codificador de vídeo 20A. Em algumas modalidades, o fluxo de emissão do mux 98 pode ser programado. Em outras modalidades, o mux 98 pode combinar os fluxos de bits dos codificadores de vídeo 20A, 20B com base em um sinal de controle recebido de um sistema externo ao codificador de vídeo 23, como de um processador em um dispositivo de fonte, incluindo o dispositivo de fonte 12. O sinal de controle pode ser gerado com base na resolução ou taxa de bits de um vídeo da fonte de vídeo 18, com base em uma largura de banda do enlace 16, com base em uma assinatura associada a um usuário (por exemplo, uma assinatura paga versus uma assinatura grátis), ou com base em qualquer outro fator para determinar uma emissão de resolução desejada do codificador de vídeo 23.
DECODIFICADOR DE VÍDEO
[110] A Figura 3A é um diagrama de blocos que ilustra um exemplo do decodificador de vídeo 30 que pode implantar técnicas de acordo com os aspectos descritos nesta revelação. O decodificador de vídeo 30 pode ser configurado para processar uma única camada de um quadro de vídeo, como para HEVC. Adicionalmente, o decodificador de vídeo 30 pode ser configurado para realizar qualquer uma ou todas as técnicas desta revelação. Em alguns exemplos, as técnicas descritas nesta revelação podem ser compartilhadas dentre os vários componentes do decodificador de vídeo 30. Em alguns exemplos, adicional ou alternativamente, um processador (não mostrado) pode ser configurado para realizar qualquer uma ou todas as técnicas descritas nesta revelação.
[111] Para propósitos de explicação, esta revelação descreve o decodificador de vídeo 30 no contexto de codificação de HEVC. No entanto, as técnicas desta revelação podem ser aplicáveis a outros padrões ou métodos de codificação. O exemplo representado na Figura 3A é para um codec de camada única. No entanto, conforme será descrito adicionalmente em relação à Figura 3B, alguns ou todos os decodificadores de vídeo 30 podem ser duplicados para processamento de um codec de multicamada.
[112] No exemplo da Figura 3A, o decodificador de vídeo 30 inclui uma pluralidade de componentes funcionais. Os componentes funcionais do decodificador de vídeo 30 incluem uma unidade de decodificação de entropia 150, uma unidade de processamento de predição 152, uma unidade de quantização inversa 154, uma unidade de transformada inversa 156, uma unidade de reconstrução 158, uma unidade de filtro 159 e um armazenamento temporário de imagem decodificada 160. A unidade de processamento de predição 152 inclui uma unidade de compensação de movimento 162, uma unidade de intrapredição 164 e uma unidade de predição de intercamada 166. Em alguns exemplos, o decodificador de vídeo 30 pode realizar um passo de decodificação, em geral, recíproco ao passo de codificação descrito em relação ao codificador de vídeo 20 da Figura 2A. Em outros exemplos, o decodificador de vídeo 30 pode incluir muitos, poucos ou componentes funcionais diferentes.
[113] O decodificador de vídeo 30 pode receber um fluxo de bits que compreende dados de vídeo codificados. O fluxo de bits pode incluir uma pluralidade de elementos de sintaxe. Quando o decodificador de vídeo 30 recebe o fluxo de bits, a unidade de decodificação de entropia 150 pode realizar uma operação de análise no fluxo de bits. Como resultado de realizar a operação de análise no fluxo de bits, a unidade de decodificação de entropia 150 pode extrair elementos de sintaxe do fluxo de bits. Como parte de realização da operação de análise, a unidade de decodificação de entropia 150 pode decodificar por entropia elementos de sintaxe codificados por entropia no fluxo de bits. A unidade de processamento de predição 152, a unidade de quantização inversa 154, a unidade de transformada inversa 156, a unidade de reconstrução 158 e a unidade de filtro 159 podem realizar uma operação de reconstrução que gera dados de vídeo decodificados com base nos elementos de sintaxe extraídos do fluxo de bits.
[114] Conforme discutido acima, o fluxo de bits pode compreender uma série de unidades de NAL. As unidades de NAL do fluxo de bits podem incluir unidades de NAL de conjunto de parâmetros de vídeo, unidades de NAL de conjunto de parâmetros de sequência, unidades de NAL de conjunto de parâmetros de imagem, unidades de NAL de SEI e assim por diante. Como parte de realização da operação de análise no fluxo de bits, a unidade de decodificação de entropia 150 pode realizar operações de análise que extraem e decodificam por entropia conjuntos de parâmetros de sequência de unidades de NAL de conjunto de parâmetros de sequência, conjuntos de parâmetros de imagem de unidades de NAL de conjunto de parâmetros de imagem, dados de SEI de unidades de NAL de SEI e assim por diante.
[115] Além disso, as unidades de NAL do fluxo de bits podem incluir unidades de NAL de fatia codificada. Como parte de realização da operação de análise no fluxo de bits, a unidade de decodificação de entropia 150 pode realizar operações de análise que extraem e decodificam por entropia fatias codificadas das unidades de NAL de fatia codificada. Cada uma das fatias codificadas pode incluir um cabeçalho de fatia e dados de fatia. O cabeçalho de fatia pode conter elementos de sintaxe relativos a uma fatia. Os elementos de sintaxe no cabeçalho de fatia podem incluir um elemento de sintaxe que identifica um conjunto de parâmetros de imagem associado a uma imagem que contém a fatia. A unidade de decodificação de entropia 150 pode realizar operações de decodificação de entropia, como operações de decodificação de CAB AC, em elementos de sintaxe no cabeçalho de fatia codificada para recuperar o cabeçalho de fatia.
[116] Como parte de extração dos dados de fatia de unidades de NAL de fatia codificada, a unidade de decodificação de entropia 150 pode realizar operações de análise que extraem elementos de sintaxe de CUs codificadas nos dados de fatia. Os elementos de sintaxe extraídos podem incluir elementos de sintaxe associados aos blocos de coeficiente de transformada. A unidade de decodificação de entropia 150 pode, então, realizar operações de decodificação de CABAC em alguns dos elementos de sintaxe.
[117] Após a unidade de decodificação de entropia 150 realizar uma operação de análise em uma CU não particionada, o decodificador de vídeo 30 pode realizar uma operação de reconstrução na CU não particionada. Para realizar a operação de reconstrução em uma CU não particionada, o decodificador de vídeo 30 pode realizar uma operação de reconstrução em cada TU da CU. Ao realizar a operação de reconstrução para cada TU da CU, o decodificador de vídeo 30 pode reconstruir um bloco de vídeo residual associado à CU.
[118] Como parte de realização de uma operação de reconstrução em uma TU, a unidade de quantização inversa 154 pode quantizar de modo inverso, por exemplo, desquantizar, um bloco de coeficiente de transformada associado à TU. A unidade de quantização inversa 154 pode quantizar de modo inverso o bloco de coeficiente de transformada de uma maneira semelhantes aos processos de quantização inversa propostos para HEVC ou definidos pelo padrão de decodificação H.264. A unidade de quantização inversa 154 pode usar um parâmetro de quantização QP calculado pelo codificador de vídeo 20 para uma CU do bloco de coeficiente de transformada para determinar um grau de quantização e, do mesmo modo, um grau de quantização inversa para a unidade de quantização inversa 154 aplicar.
[119] Após a unidade de quantização inversa 154 quantizar de modo inverso um bloco de coeficiente de transformada, a unidade de transformada inversa 156 pode gerar um bloco de vídeo residual para a TU associado ao bloco de coeficiente de transformada. A unidade de transformada inversa 156 pode aplicar uma transformada inversa ao bloco de coeficiente de transformada a fim de gerar o bloco de vídeo residual para a TU. Por exemplo, a unidade de transformada inversa 156 pode aplicar uma DCT inversa, uma transformada de número inteiro inversa, uma transformada de Karhunen-Loeve inversa (KLT), uma transformada rotacional inversa, uma transformada direcional inversa ou outra transformada inversa para o bloco de coeficiente de transformada. Em alguns exemplos, a unidade de transformada inversa 156 pode determinar uma transformada inversa para aplicar ao bloco de coeficiente de transformada com base na sinalização do codificador de vídeo 20. Em tais exemplos, a unidade de transformada inversa 156 pode determinar a transformada inversa com base em uma transformada sinalizada no nó raiz de um quadtree para um treeblock associado ao bloco de coeficiente de transformada. Em outros exemplos, a unidade de transformada inversa 156 pode inferir na transformada inversa de uma ou mais características de codificação, como tamanho de bloco, tamanho de codificação ou semelhantes. Em alguns exemplos, a unidade de transformada inversa 156 pode aplicar uma transformada inversa em cascata.
[120] Em alguns exemplos, a unidade de compensação de movimento 162 pode refinar o bloco de vídeo previsto de uma PU mediante a realização de interpolação com base em filtros de interpolação. Os identificadores para filtros de interpolação a serem usados para compensação de movimento com precisão de subamostra podem ser incluídos nos elementos de sintaxe. A unidade de compensação de movimento 162 pode usar os mesmos filtros de interpolação usados pelo codificador de vídeo 20 durante a geração do bloco de vídeo previsto da PU para calcular valores interpolados para amostras de subnúmeros inteiros de um bloco de referência. A unidade de compensação de movimento 162 pode determinar os filtros de interpolação usados pelo codificador de vídeo 20 de acordo com as informações de sintaxe recebidas e usar os filtros de interpolação para produzir o bloco de vídeo previsto.
[121] Se uma PU for codificada com o uso de intrapredição, a unidade de intrapredição 164 pode realizar intrapredição para gerar um bloco de vídeo previsto para a PU. Por exemplo, a unidade de intrapredição 164 pode determinar um modo de intrapredição para a PU com base em elementos de sintaxe no fluxo de bits. O fluxo de bits pode incluir elementos de sintaxe que a unidade de intrapredição 164 pode usar para determinar o modo de intrapredição da PU.
[122] Em alguns exemplos, os elementos de sintaxe podem indicar que a unidade de intrapredição 164 é para usar o modo de intrapredição de outra PU para determinar o modo de intrapredição da PU atual. Por exemplo, pode ser provável que o modo de intrapredição da PU atual seja o mesmo que o modo de intrapredição de uma PU próxima. Em outras palavras, o modo de intrapredição da PU próxima pode ser o modo mais provável para a PU atual. Consequentemente, nesse exemplo, o fluxo de bits pode incluir um elemento de sintaxe pequeno que indica que o modo de intrapredição da PU é o mesmo que o modo de intrapredição da PU próxima. A unidade de intrapredição 164 pode, então, usar o modo de intrapredição para gerar dados de predição (por exemplo, amostras previstas) para a PU com base nos blocos de vídeo de Pus espacialmente próximos.
[123] Conforme discutido acima, o decodificador de vídeo 30 também pode incluir unidade de predição de intercamada 166. A unidade de predição de intercamada 166 é configurada para prever um bloco atual (por exemplo, um bloco atual na camada de intensificação) com o uso de uma ou mais camadas diferentes que estão disponíveis em SHVC (por exemplo, uma camada de base ou de referência). Tal predição pode ser referida como predição de intercamada. A unidade de predição de intercamada 166 utiliza métodos de predição para reduzir redundância de intercamada aperfeiçoando, desse modo, eficácia de codificação e reduzindo exigências de recurso computacional. Alguns exemplos de predição de intercamada incluem intrapredição de intercamada, predição de movimento de intercamada e predição residual de intercamada. A intrapredição de intercamada usa a reconstrução de blocos colocalizados na camada-base para prever o bloco atual na camada de intensificação. A predição de movimento de intercamada usas informações de movimento da camada-base para prever movimento na camada de intensificação. A predição residual de intercamada usa o resíduo da camada-base para prever o resíduo da camada de intensificação. Cada um dos esquemas de predição de intercamada é discutido abaixo em maiores detalhes.
[124] A unidade de reconstrução 158 pode usar os blocos de vídeo residuais associados a TUs de uma CU e os blocos de vídeo previstos das PUs da CU, por exemplo, ou dados de intrapredição ou dados de interpredição, conforme aplicável, para reconstruir o bloco de vídeo da CU. Assim, o decodificador de vídeo 30 pode gerar um bloco de vídeo previsto e um bloco de vídeo residual com base em elementos de sintaxe no fluxo de bits e pode gerar um bloco de vídeo com base no bloco de vídeo previsto e no bloco de vídeo residual.
[125] Após a unidade de reconstrução 158 reconstruir o bloco de vídeo da CU, a unidade de filtro 159 pode realizar uma operação de desbloqueio para reduzir artefatos de desbloqueio associados à CU. Após a unidade de filtro 159 realizar uma operação de desbloqueio para reduzir artefatos de desbloqueio associados à CU, o decodificador de vídeo 30 pode armazenar o bloco de vídeo da CU em armazenamento temporário de imagem decodificada 160. O armazenamento temporário de imagem decodificada 160 pode fornecer imagens de referência para compensação de movimento subsequente, intrapredição e apresentação em um dispositivo de exibição, como o dispositivo de exibição 32 da Figura 1A ou IB. Por exemplo, o decodificador de vídeo 30 pode realizar, com base nos blocos de vídeo em armazenamento temporário de imagem decodificada 160, operações de intrapredição ou interpredição em PUs de outras CUs.
DECODIFICADOR DE MULTICAMADA
[126] A Figura 3B é um diagrama de blocos que ilustra um exemplo de um decodificador de vídeo de multicamada 33 (também simplesmente referido como decodificador de vídeo 33) que pode implantar técnicas de acordo com os aspectos descritos nesta revelação. O decodificador de vídeo 33 pode ser configurado para processar quadros de vídeo de multicamada, como para SHVC e codificação de multivistas. Adicionalmente, o decodificador de vídeo 33 pode ser configurado para realizar qualquer uma ou todas as técnicas desta revelação.
[127] O decodificador de vídeo 33 inclui um decodificador de vídeo 30A e um decodificador de vídeo 30B, em que cada um dos quais pode ser configurado como o decodificador de vídeo 30 e pode realizar as funções descritas acima em relação ao decodificador de vídeo 30. Adicionalmente, conforme indicado pelo reuso de números de referência, os decodificadores de vídeo 3 OA e 30B podem incluir pelo menos alguns dos sistemas e subsistemas como o decodificador de vídeo 30. Embora o decodificador de vídeo 33 seja ilustrado como incluindo dois decodificadores de vídeo 30A e 30B, o decodificador de vídeo 33 não é limitado como tal e pode incluir qualquer número de camadas de decodificador de vídeo 30. Em algumas modalidades, o decodificador de vídeo 33 pode incluir um decodificador de vídeo 30 para cada imagem ou quadro em uma unidade de acesso. Por exemplo, uma unidade de acesso que inclui cinco imagens pode ser processada ou decodificada por um decodificador de vídeo que inclui cinco camadas de decodificador. Em algumas modalidades, o decodificador de vídeo 33 pode incluir mais camadas de decodificador que quadros em uma unidade de acesso. Em alguns casos, algumas das camadas de decodificador de vídeo podem estar inativas quando processam algumas unidades de acesso.
[128] Além dos decodificadores de vídeo 30A e 30B, o decodificador de vídeo 33 pode incluir uma unidade de aumento de resolução 92. Em algumas modalidades, a unidade de aumento de resolução 92 pode aumentar a resolução de uma camada-base de um quadro de vídeo recebido para criar uma camada intensificada para ser adicionada à lista de imagem de referência para o quadro ou unidade de acesso. Essa camada intensificada pode ser armazenada no armazenamento temporário de imagem decodificada 160. Em algumas modalidades, a unidade de aumento de resolução 92 pode incluir algumas ou todas as modalidades descritas em relação à unidade de reamostragem 90 da Figura 2A. Em algumas modalidades, a unidade de aumento de resolução 92 é configurada para aumentar a resolução de uma camada e reorganizar, redefinir, modificar ou ajustar uma ou mais fatias para se adequar a um conjunto de regras de limite de fatia e/ou regras de varredura de rastreio. Em alguns casos, a unidade de aumento de resolução 92 pode ser uma unidade de reamostragem configurada para aumentar a resolução e/ou diminuir a resolução de uma camada de um quadro de vídeo recebido.
[129] A unidade de aumento de resolução 92 pode ser configurada para receber uma imagem ou quadro (ou informações de imagem associadas à imagem) do armazenamento temporário de imagem decodificada 160 do decodificador de camada inferior (por exemplo, o decodificador de vídeo 30A) e para aumentar a resolução da imagem (ou as informações de imagem recebidas). Essa imagem com resolução aumentada pode, então, ser fornecida para a unidade de processamento de predição 152 de um decodificador de camada superior (por exemplo, o decodificador de vídeo 30B) configurado para decodificar uma imagem na mesma unidade de acesso que o decodificador de camada inferior. Em alguns casos, o decodificador de camada superior é uma camada removida do decodificador de camada inferior. Em outros casos, pode haver um ou mais decodificadores de camada superior entre o decodificador de camada 0 e o decodificador de camada 1 da Figura 3B.
[130] Em alguns casos, a unidade de aumento de resolução 92 pode ser omitida ou contornada. Em tais casos, a imagem do armazenamento temporário de imagem decodificada 160 do decodificador de vídeo 30A pode ser fornecida diretamente, ou pelo menos sem ser fornecida para a unidade de aumento de resolução 92, para a unidade de processamento de predição 152 do decodificador de vídeo 30B. Por exemplo, se os dados de vídeo fornecidos para o decodificador de vídeo 30B e a imagem de referência do armazenamento temporário de imagem decodificada 160 do decodificador de vídeo 30A forem do mesmo tamanho ou resolução, a imagem de referência pode ser fornecida para o decodificador de vídeo 30B sem aumento de resolução. Adicionalmente, em algumas modalidades, a unidade de aumento de resolução 92 pode ser uma unidade de reamostragem 90 configurada para aumentar a resolução ou diminuir a resolução de uma imagem de referência recebida do armazenamento temporário de imagem decodificada 160 do decodificador de vídeo 30A.
[131] Conforme ilustrado na Figura 3B, o decodificador de vídeo 33 pode incluir adicionalmente um demultiplexador (ou demux) 99. O demux 99 pode dividir um fluxo de bits de vídeo codificado em múltiplos fluxos de bits em que cada emissão de fluxo de bits pelo demux 99 é fornecida para um decodificador de vídeo diferente 30A e 30B. Os múltiplos fluxos de bits podem ser criados mediante o recebimento de um fluxo de bits e cada um dos decodificadores de vídeo 30A e 30B recebe uma porção do fluxo de bits em um determinado momento. Embora em alguns casos os bits do fluxo de bits recebido no demux 99 possam ser alternados um bit de cada vez entre cada um dos decodificadores de vídeo (por exemplo, decodificadores de vídeo 30A e 30B no exemplo da Figura 3B), em muitos casos, o fluxo de bits é dividido de modo diferente. Por exemplo, o fluxo de bits pode ser dividido ao alterar qual decodificador de vídeo recebe o fluxo de bits um bloco de cada vez. Em outro exemplo, o fluxo de bits pode ser dividido por uma razão de blocos não-1:1 para cada um dos decodificadores de vídeo 3OA e 30B. Por exemplo, dois blocos podem ser fornecidos para o decodificador de vídeo 30B para cada bloco fornecido para o decodificador de vídeo 30A. Em algumas modalidades, a divisão do fluxo de bits pelo demux 99 pode ser pré-programada. Em outras modalidades, o demux 99 pode dividir o fluxo de bits com base em um sinal de controle recebido de um sistema externo ao decodificador de vídeo 33, como de um processador em um dispositivo de destino, incluindo o dispositivo de destino 14. O sinal de controle pode ser gerado com base na resolução ou taxa de bits de um vídeo da interface de entrada 28, com base em uma largura de banda do enlace 16, com base em uma assinatura associada a um usuário (por exemplo, uma assinatura paga versus uma assinatura grátis), ou com base em qualquer outro fator para determinar uma resolução obtenível pelo decodificador de vídeo 33.
IMAGENS DE PONTO DE ACESSO INTRA-ALEATÓRIO (IRAP)
[132] Alguns esquemas de codificação de vídeo podem fornecer vários pontos de acesso aleatório durante todo o fluxo de bits de modo que o fluxo de bits possa ser decodificado começando de qualquer um desses pontos de acesso aleatório sem precisar decodificar quaisquer imagens que precede esses pontos de acesso aleatório no fluxo de bits. Em tais esquemas de codificação de vídeo, todas as imagens após um ponto de acesso aleatório em ordem de decodificação, exceto imagens principais omitidas de acesso aleatório (RASL), podem ser decodificados corretamente sem usar quaisquer imagens que precedem o ponto de acesso aleatório. Por exemplo, mesmo se uma porção do fluxo de bits for perdida durante a transmissão ou durante a decodificação, um decodificador pode resumir a decodificação do fluxo de bits começando a partir do próximo ponto de acesso aleatório. O suporte para acesso aleatório pode facilitar, por exemplo, serviços de transmissão contínua dinâmicos, operações de busca, comutação de canal, etc.
[133] Em alguns esquemas de codificação, tais pontos de acesso aleatório podem ser fornecidos por imagens que são referidas como imagens de ponto de acesso intra- aleatório (IRAP). Por exemplo, um ponto de acesso aleatório associado a uma imagem de IRAP de camada de intensificação em uma camada de intensificação (“layerA”) que está contida em uma unidade de acesso (“auA”) pode fornecer acesso aleatório específico de camada de modo que para cada camada de referência (“layerB”) de layerA (por exemplo, em que uma camada de referência é uma camada que é usada para prever layerA) que tem um ponto de acesso aleatório associado a uma imagem contida em uma unidade de acesso (“auB”) que está na layerB e precede auA em ordem de decodificação (ou um ponto de acesso aleatório contido em auA), as imagens na layerA após auA em ordem de decodificação (incluindo aquelas imagens localizadas em auA), são corretamente decodificáveis sem precisar decodificar quaisquer imagens na layerA que precede auA.
[134] As imagens de IRAP podem ser codificadas com o uso de intrapredição (por exemplo, codificadas sem referência a outras imagens) e/ou predição de intercamada, e podem incluir, por exemplo, imagens de atualização de decodificar instantâneas (IDR), imagens de acesso aleatório claras (CRA) e imagens de acesso de enlace desfeito (BLA). Quando há uma imagem de IDR no fluxo de bits, todas as imagens que precedem a imagem de IDR em ordem de decodificação não são usadas para predição por imagens que seguem a imagem de IDR. Quando há uma imagem de CRA no fluxo de bits, as imagens que seguem a imagem de CRA podem usar ou não imagens que precedem a imagem de CRA em ordem de decodificação para predição. Essas imagens que seguem a imagem de CRA em ordem de decodificação, mas usam imagens que precedem a imagem de CRA em ordem de decodificação podem ser referidas como imagens de RASL. Outro tipo de imagem que pode seguir uma imagem de IRAP em ordem de decodificação e precede a imagem de IRAP em ordem de emissão é uma imagem principal decodificável de acesso aleatório (RDAL), que pode não conter referências a quaisquer imagens que precedem a imagem de IRAP em ordem de decodificação. As imagens de RASL podem ser descartadas pelo decodificador se as imagens que precedem a imagem de CRA não estiverem disponíveis. Uma imagem de BLA indica para o decodificador que as imagens que precedem a imagem de BLA podem não estar disponíveis para o decodificador (por exemplo, devido ao fato de que dois fluxos de bits são unidos e a imagem de BLA é a primeira imagem do segundo fluxo de bits em ordem de decodificação). Uma unidade de acesso (por exemplo, um grupo de imagens que consiste em todas as imagens codificadas associada ao mesmo tempo de emissão através de múltiplas camadas) que contém uma imagem de camada-base (por exemplo, que tem um valor de ID de camada de 0) que é uma imagem de IRAP pode ser referida como uma unidade de acesso de IRAP.
MENSAGENS DE SEI DE PONTO DE RECUPERAÇÃO
[135] Em alguns esquemas de codificação de vídeo, pode ser possível iniciar a decodificação do fluxo de bits entre as imagens de IRAP. Isso pode possibilitar um retorno rápido para o fluxo de vídeo decodificado quando, por exemplo, uma porção do fluxo de bits é perdida durante a transmissão ou durante a decodificação, ou para inicialização mais rápida da decodificação de um vídeo de transmissão contínua ao vivo. No entanto, quando inicializa a decodificação de um fluxo de vídeo em um ponto de acesso aleatório entre as imagens de IRAP, o fluxo de vídeo decodificado pode não ter uma qualidade aceitável para exibição devido à confiabilidade do processo de decodificação em imagens que precedem o ponto de acesso aleatório em ordem de decodificação.
[136] Conforme anteriormente mencionado, alguns esquemas de codificação de vídeo incluem uma mensagem SEI de ponto de recuperação que pode auxiliar um decodificador na determinação de quando o processo de decodificação irá produzir imagens aceitáveis para exibição. Quando o decodificador inicia um acesso aleatório ou reinicia a decodificação após um enlace desfeito, o decodificador pode ter capacidade de determinar quando as imagens decodificadas são aceitáveis para exibição com base em uma mensagem SEI de ponto de recuperação incluída no fluxo de bits. A mensagem SEI de ponto de recuperação especifica um ponto de recuperação na ordem de emissão de imagem decodificada que indica que, quando os processos de decodificação são iniciados a partir da unidade de acesso que contém a mensagem SEI de ponto de recuperação, todas as imagens decodificadas decodificadas em ou subsequentes ao ponto de recuperação em ordem de emissão estão corretas ou aproximadamente corretas em conteúdo. Tais mensagens de SEI de ponto de recuperação não exigem que as imagens decodificadas produzidas com base na decodificação do fluxo de bits após um acesso aleatório e/ou antes da imagem associada ao ponto de recuperação estarem corretor na ordem para as imagens decodificadas após o ponto de recuperação para ter conteúdo decodificado correto ou aproximadamente correto. Adicionalmente, as mensagens de SEI de ponto de recuperação não exigem que as imagens que são referenciadas pela decodificação do fluxo de bits após um acesso aleatório e/ou antes da imagem associada ao ponto de recuperação estarem disponíveis.
[137] Nos esquemas de codificação de única camada convencionais (por exemplo, HEVC Versão 1), cada unidade de acesso contém unicamente uma única imagem. Visto que cada unidade de acesso contém uma única imagem, os termos “unidade de acesso” e “imagem” puderam ser usados de modo intercambiável no contexto de esquemas de codificação de única camada, por exemplo, em relação à utilização de mensagens de SEI de ponto de recuperação. No entanto, as unidades de acesso de esquemas de codificação multicamada podem incluir uma imagem separada para cada camada do fluxo de bits. Em outras palavras, em um fluxo de bits de multicamada, uma única unidade de acesso pode conter (isto é, inclui ou compreender) uma pluralidade de imagens. Visto que em mensagens de SEI de ponto de recuperação de esquemas de codificação de camada única são associadas a uma unidade de acesso, esses esquemas de codificação de única camada não têm a semântica exigida para definir como uma mensagem SEI de ponto de recuperação se refere de modo preciso a uma ou mais imagens dentre uma pluralidade de imagens possíveis dentro de uma unidade de acesso de um esquema de codificação de multicamada. Essa ambiguidade relacionada às mensagens de SEI de ponto de recuperação em esquemas convencionais permite que as implantações de codificadores ou decodificadores de vídeo associem as mensagens de SEI de ponto de recuperação às imagens dentre a pluralidade de imagens possível dentro de uma unidade de acesso de um esquema de multicamada de codificação sem restrição. Dessa maneira, o comportamento desses codificadores e decodificadores de vídeo em relação a mensagens de SEI de ponto de recuperação não é previsível e pode variar entre implantações diferentes de modo que essas implantações diferentes possam não codificar/decodificar uma sequência de vídeo de modo consistente. Como tal, um objetivo da presente revelação é esclarecer a semântica de mensagens de SEI de ponto de recuperação de modo que uma mensagem SEI de ponto de recuperação possa ser associada de modo não ambíguo a uma ou mais imagens de uma unidade de acesso dentro de um esquema de codificação de multicamada.
[138] De acordo com a presente revelação, uma mensagem SEI de ponto de recuperação pode ser associada a e/ou se aplicar a uma ou mais imagens de uma unidade de acesso. Essa técnica esclarece/modifica a semântica de mensagens de SEI de ponto de recuperação de modo que as mensagens de SEI de ponto de recuperação possam ser associadas de modo não ambíguo a uma(s) imagem(ns) específica(s) de uma unidade de acesso dentro de um esquema de multicamada de codificação. Ao esclarecer a semântica de acordo com a presente revelação, o comportamento de codificadores/decodificadores de vídeo é mais previsível e, desse modo, o tratamento de mensagens de SEI de ponto de recuperação entre implantações diferentes desses codificadores/decodificadores de vídeo é mais consistente que nos esquemas de codificação convencionais. As técnicas/os esquemas da presente revelação são compatíveis "com versões anteriores" ou compatíveis "de modo descendente" de modo que as técnicas/os esquemas da presente revelação possam ser empregados por dispositivos de legado que empregam esquemas de codificação de vídeo de camada única. Adicionalmente, as técnicas/os esquemas da presente revelação podem ser utilizados com outros tipos de mensagens de SEI que podem ser aplicadas às imagens de mais de uma camada dentro de um fluxo de bits de multicamada. Várias associações entre as mensagens de SEI de ponto de recuperação e as imagens de um fluxo de bits de multicamada serão descritas em maiores detalhes em referências às Figuras 4 a 6.
[139] A Figura 4 é um diagrama de blocos que ilustra a associação entre as mensagens de SEI de ponto de recuperação e as imagens de um fluxo de bits de multicamada de acordo com uma modalidade da presente revelação. A Figura 4 inclui um fluxo de bits codificado de vídeo escalonável 400 (também referido simplesmente como fluxo de bits 400) que tem uma camada-base (BL) 410B e uma camada de intensificação (EL) 410A. Embora o fluxo de bits 400 da Figura 4 seja ilustrado como contendo camada-base 410B e camada de intensificação 410A, o fluxo de bits 400 pode incluir adicionalmente uma ou mais camadas de intensificação adicionais ou, quando o fluxo de bits é fluxo de bits codificado de vídeo de multivistas, cada uma das camadas pode constituir uma vista diferente. Um exemplo de um fluxo de bits de multivistas é um fluxo de bits de vídeo tridimensional (3D), incluindo uma camada de vista de olho esquerdo e uma camada de vista de olho direito.
[140] Novamente em referência à Figura 4, o fluxo de bits 400 inclui uma pluralidade de unidades de acesso (AUs) 430 a 470. Cada unidade de acesso inclui uma imagem da camada-base 410B e uma imagem da camada de intensificação 410A. Por exemplo, AU 430 inclui imagem de BL 412B e imagem de EL 412A, respectivamente incluídas na camada-base 410B e na camada de intensificação 410A. Na modalidade da Figura 4, AU 430 e AU 440, cada um, incluem uma mensagem SEI de ponto de recuperação. Em AU 430, a mensagem SEI de ponto de recuperação é associada à imagem de BL 412B e a mensagem SEI de ponto de recuperação de AU 440 é associada à imagem de EL 414A. A “associação” das mensagens de SEI de ponto de recuperação é ilustrada com o uso de marcações hachuradas diagonais na Figura 4.
[141] As mensagens de SEI de ponto de recuperação ilustradas na Figura 4 indicam os pontos de recuperação para suas respectivas camadas. Um ponto de recuperação, em geral, se refere a uma indicação da imagem no fluxo de bits no qual a decodificação do fluxo de bits estará correta ou aproximadamente correta em conteúdo após iniciar a decodificação em um ponto de acesso aleatório antes de ou na imagem associada à mensagem SEI de ponto de recuperação. Nas Figuras 4 a 6, os pontos de recuperação são indicados por hachuras pontilhadas e as mensagens de SEI de ponto de recuperação são indicadas por linhas perpendiculares. Por exemplo, a mensagem SEI de ponto de recuperação associada à imagem de BL 412B indica um ponto de recuperação na imagem de BL 420B, isto é, se a decodificação começar em um ponto de acesso aleatório dentro da camada- base 410B antes ou na imagem de BL 412B, a decodificação da camada-base 410B estará correta ou aproximadamente correta em conteúdo após a imagem de BL 420B ser decodificada. Similarmente, a imagem de EL 418A é o ponto de recuperação indicado pela mensagem SEI de ponto de recuperação associada à imagem de EL 414A. Em outras palavras, se a decodificação começar em um ponto de acesso aleatório dentro da camada de intensificação 410A antes de ou na imagem de EL 414A, a decodificação da camada de intensificação 410A estará correta ou aproximadamente correta em conteúdo após a imagem de EL 418A ser decodificada.
[142] Conforme descrito em conexão com a modalidade da Figura 4, de acordo com a presente revelação, uma mensagem SEI de ponto de recuperação para um fluxo de bits de multicamada pode ser associada de modo individual a uma única imagem em qualquer camada do fluxo de bits de multicamada. Adicionalmente, uma pluralidade de mensagens de SEI de ponto de recuperação podem ser respectivamente associadas a cada ou a um subconjunto de uma pluralidade de imagens da mesma unidade de acesso. Por exemplo, embora não ilustrado na Figura 4, cada uma dentre a imagem de BL 416B e a imagem de EL 416A associadas a AU 450 podem ser associadas a mensagens de SEI de ponto de recuperação separadas.
[143] A Figura 5 é um diagrama de blocos que ilustra a associação entre uma mensagem SEI de ponto de recuperação e uma pluralidade de imagens de acordo com uma modalidade da presente revelação. O fluxo de bits de multicamada 500 (também referido simplesmente como fluxo de bits 500) da Figura 5 é semelhante àquele da Figura 4, exceto pela inclusão de uma camada de intensificação 4 IOC adicional. Dessa maneira, cada AU 430 a 470 inclui uma imagem de cada camada. Por exemplo, AU 460 inclui imagem de BL 418B, imagem de EL 418A e imagem de EL 418C.
[144] Na modalidade ilustrada na Figura 5, AU 430 inclui uma única mensagem SEI de ponto de recuperação que é associada tanto à imagem de EL 412A quanto à imagem de EL 412C. Quando uma mensagem SEI de ponto de recuperação é associada a mais de uma imagem conforme representado na Figura 5, a mensagem SEI de ponto de recuperação pode ser implantada como uma mensagem SEI de aninhamento escalonável. A mensagem SEI de aninhamento escalonável de ponto de recuperação é ilustrada na Figura 5 pela área hachura dentro de AU 430.
[145] A mensagem SEI de aninhamento escalonável de ponto de recuperação associada à imagem de EL 412A e à imagem de EL 412C indica um ponto de recuperação em imagem de EL 418A e imagem de EL 418C. Nessa modalidade, a mensagem SEI de aninhamento escalonável de ponto de recuperação indica exclusivamente um único ponto de recuperação para a imagem de EL 412A e a imagem de EL 412C associadas à mensagem SEI. O ponto de recuperação indicado por uma mensagem SEI de aninhamento escalonável de ponto de recuperação é o ponto no qual todas as imagens incluídas nas camadas das imagens associadas à mensagem SEI de ponto de recuperação estarão corretas ou aproximadamente corretas no conteúdo decodificado. Dessa maneira, uma ou mais das imagens decodificadas podem estar corretas ou aproximadamente corretas no conteúdo antes do ponto de recuperação da mensagem SEI de aninhamento escalonável de ponto de recuperação.
[146] A Figura 6 é um diagrama de blocos que ilustra a associação entre a mensagem SEI de ponto de recuperação e uma imagem de uma camada dependente (isto é, uma camada de acordo com uma modalidade da presente revelação). O fluxo de bits de multicamada 600 (também referido simplesmente como fluxo de bits 600) ilustrado na Figura 6 é semelhante àquele ilustrado na Figura 4. No entanto, nessa modalidade, a camada de intensificação 410A do fluxo de bits 600 é dependente da camada-base 410B. Uma vez que a camada de intensificação 410A é dependente da camada-base 410B, a camada de intensificação 410A não é independentemente decodificável e exige pelo menos uma porção da camada-base 410B a fim de ser corretamente decodificada.
[147] Em determinadas modalidades, um decodificador de vídeo (por exemplo, o decodificador de vídeo 30 ou 33) pode não receber (ou pode não ter a capacidade de processar precisamente) a camada de intensificação 410A e, então, apenas decodifica a camada-base recebida 410B. Isso pode ocorrer, por exemplo, quando a largura de banda entre um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o codificador de vídeo 23) e um decodificador de vídeo (por exemplo, o decodificador de vídeo 30 ou o decodificador de vídeo 33) é limitado, a camada de intensificação 410A, por exemplo, pode ser deixada pelo fluxo de bits 600 a fim de conservar a largura de banda. Depois disso, quando a largura de banda disponível aumentar, a camada de intensificação 410A pode ser recebida (ou precisamente processada) pelo decodificador de vídeo. O decodificador de vídeo pode, então, tentar iniciar a decodificação da camada de intensificação 410A em um ponto de acesso aleatório entre imagens que indica o possível início da recuperação. Na Figura 6 isso é ilustrado pela inclusão da imagem EL 414A que tem uma mensagem SEI de ponto de recuperação associada.
[148] Conforme descrito acima, em algumas modalidades, a camada de intensificação 410A é dependente da camada-base 41 OB. Nessas modalidades, a fim de que o ponto de recuperação (mostrado na imagem EL 418A) indicado pela mensagem SEI de ponto de recuperação de imagem EL 414A seja preciso, a camada-base 410B deve ser corretamente ou de modo aproximadamente correto decodificada pela imagem BL 414B. Assim, a camada independente deve ser corretamente ou de modo aproximadamente correto decodificada antes ou na mesma imagem incluída na mesma unidade de acesso que a imagem da camada dependente a ser associada à mensagem SEI de ponto de recuperação antes de associar a imagem da camada dependente à mensagem SEI de ponto de recuperação. Em algumas implantações, a determinação da possibilidade da imagem de camada independente ser corretamente ou de modo aproximadamente correto decodificada inclui determinar se a imagem de camada independente é conhecida por estar em uma faixa definida para a decodificação correta da imagem de camada independente.
[149] Em algumas modalidades da presente revelação, a mensagem SEI de ponto de recuperação pode conter um marcador que indica se o conteúdo da imagem decodificada do ponto de recuperação tem uma compatibilidade exata com o conteúdo de uma imagem corretamente decodificada. Esse marcador de compatibilidade exata indica ao decodificador se a imagem no ponto de recuperação estará correta ou aproximadamente correta no conteúdo. O conteúdo de uma imagem decodificada está correta no conteúdo quando a imagem decodificada for decodificada após uma imagem de IRAP na ordem de decodificação e não houver erros de decodificação ou perda de informações entre os mesmos. O conteúdo de uma imagem decodificada pode ser determinado para estar aproximadamente correto quando o conteúdo da imagem decodificada estiver dentro de uma faixa definida do conteúdo da imagem corretamente decodificada, isto é, a imagem que seria decodificada começando a partir de uma imagem de IRAP antes da unidade de acesso que contém a mensagem SEI de ponto de recuperação.
MENSAGENS DE SEI DE INFORMAÇÕES DE ATUALIZAÇÃO DE REGIÃO
[150] Alguns esquemas de codificação de vídeo incluem adicionalmente mensagens de SEI de informações de atualização de região (também referidas como mensagens de SEI de atualização de região). Uma mensagem SEI de atualização de região, que é associada a uma mensagem SEI de ponto de recuperação, indica se as regiões (por exemplo, segmentos de fatia) de uma imagem atual, às quais a mensagem SEI de atualização de região atual se aplica/corresponde, pertencem a uma região atualizada (ou uma região não atualizada) da imagem atual. Em outras palavras, uma SEI de atualização de região inclui informações que indicam se as fatias individuais de uma imagem correspondente estão corretas ou aproximadamente corretas no conteúdo após a decodificação.
[151] Conforme descrito acima, em esquemas de codificação de vídeo convencionais, uma unidade de acesso é unicamente associada a uma imagem. Desse modo, nesses esquemas convencionais, as mensagens de SEI de informações de atualização de região estão associadas a uma unidade de acesso, e então, unicamente associadas a uma imagem. No entanto, em esquemas de codificação multicamada uma unidade de acesso pode conter mais de uma imagem. Desse modo, a semântica de esquemas de codificação de vídeo convencionais não permite necessariamente uma associação entre uma mensagem SEI de informações de atualização de região e uma imagem dentre uma pluralidade de imagens incluídas em uma unidade de acesso. Dessa maneira, um outro objetivo da presente revelação é clarificar a semântica de mensagens de SEI de informações de atualização de região de modo que uma mensagem SEI de informações de atualização de região seja unicamente associada a uma imagem.
[152] A Figura 7 é um diagrama de blocos que ilustra a associação entre uma ou mais mensagens de SEI de atualização de região e uma ou mais imagens de um fluxo de bits de multicamada de acordo com uma modalidade da presente revelação. A Figura 7 inclui um fluxo de bits de multicamada 700 (também referido simplesmente como fluxo de bits 700) que é semelhante ao fluxo de bits 400 descrito em conjunto com a Figura 4. No presente documento, uma mensagem SEI de ponto de recuperação é associada à imagem BL 412B e ao ponto de recuperação correspondente é associada à imagem BL 420B. Na Figura 7, a hachura transversal indica que a imagem correspondente (isto é, imagem BL 412B) é associada a uma mensagem SEI de ponto de recuperação e uma ou mais mensagens de SEI de atualização de região. Uma pluralidade de imagens a seguir e em uma mesma camada que uma imagem associada a uma mensagem SEI de ponto de recuperação pode ser referida em geral como imagens de atualização de decodificação gradual (GDR). Uma imagem de GDR pode ser associada a um conjunto de imagem de GDR que inclui imagens que começam a partir da imagem associada à mensagem SEI de ponto de recuperação até a última imagem no conjunto de imagem de GDR na ordem de produção. O conjunto de imagem de GDR é associado a uma mensagem SEI de ponto de recuperação correspondente. Adicionalmente, uma mensagem SEI de atualização de região pode ser associada a uma imagem de GDR. Na Figura 7, cada uma das imagens BL 412B a 420B na camada-base 410B é ilustrada como incluindo três fatias de conteúdo separadas, no entanto, o número de fatias incluído em cada imagem do fluxo de bits 700 pode ser variado de acordo com diferentes aspectos da modalidade específica. Em algumas implantações da presente revelação, uma mensagem SEI de atualização de região só é associada a uma imagem quando a imagem estiver incluída em um conjunto de imagem de GDR. As fatias das imagens BL 412B a 420B na camada-base 410B serão referidas como fatias de topo, intermediárias e de fundo no presente documento para se referir às fatias correspondentes com base em sua orientação na Figura.
[153] A mensagem SEI de atualização de região da imagem BL 414B da Figura 7 indica que a fatia intermediária da imagem BL 414B estará correta ou aproximadamente correta no conteúdo decodificado pela imagem BL 414B conforme ilustrado pela hachura pontilhada. Semelhantemente, a mensagem SEI de atualização de região da imagem BL 418B indica que a fatia de fundo correspondente (isto é, a fatia de fundo da imagem BL 418B) estará correta ou aproximadamente correta no conteúdo pela imagem BL 418B. Semelhantemente, a mensagem SEI de atualização de região da imagem BL 420B indica que a fatia de topo da imagem BL 420B estará correta ou aproximadamente correta no conteúdo pela imagem BL 420B. Desse modo, as mensagens de SEI de informações de atualização de região incluem informações definir adicionalmente quando cada uma das fatias na imagem associada estará correta ou aproximadamente correta no conteúdo decodificado quando o acesso aleatório começar em uma imagem ou antes de uma imagem associada à mensagem SEI de ponto de recuperação correspondente (por exemplo, a imagem associada à mensagem SEI de ponto de recuperação que é associada ao conjunto de imagem de GDR).
[154] Conforme descrito acima e ilustrado na Figura 7, uma mensagem SEI de informações de atualização de região inclui informações relacionadas às fatias individuais de uma imagem. A fim de associar de modo não ambíguo a mensagem SEI de informações de atualização de região a uma imagem em um esquema de codificação multicamada, a mensagem SEI de informações de atualização de região é associada a uma única imagem. Dessa maneira, nos fluxos de bits de multicamada como fluxo de bits 700, uma mensagem SEI de informações de atualização de região é unicamente associada a uma imagem do fluxo de bits em contrapartida aos esquemas de codificação convencionais em que uma mensagem SEI de informações de atualização de região foi associada a uma unidade de acesso.
FLUXOGRAMA EXEMPLIFICATIVO PARA ASSOCIAR UMA MENSAGEM SEI DE PONTO DE RECUPERAÇÃO A UMA OU MAIS IMAGENS DE UMA UNIDADE DE ACESSO
[155] Com referência à Figura 8, será descrito um procedimento exemplificativo para associar uma mensagem SEI de ponto de recuperação a uma ou mais imagens de uma unidade de acesso. A Figura 8 é um fluxograma que ilustra um método 800 para codificar informações de vídeo, de acordo com uma modalidade da presente revelação. As etapas ilustradas na Figura 8 podem ser realizadas por um codificador de vídeo (por exemplo, o codificador de vídeo 20 ou o codificador de vídeo 23), um decodificador de vídeo (por exemplo, o decodificador de vídeo 30 ou o decodificador de vídeo 33), ou qualquer outro componente. Por questão de conveniência, o método 800 é descrito conforme realizado por um codificador de vídeo (também simplesmente referido como codificador), que pode ser o codificador de vídeo 20 ou 23, o decodificador de vídeo 30 ou 33, ou um outro componente.
[156] O método 800 começa no bloco 801. No bloco 805, o codificador determina pelo menos uma imagem dentre uma pluralidade de imagens incluídas em uma unidade de acesso com a qual se associa pelo menos uma mensagem de informações de intensificação suplementar de ponto de recuperação (SEI), sendo que a unidade de acesso está incluída em um fluxo de bits de multicamada. Cada uma dentre a pluralidade de imagens pode ser codificada em uma camada separada. Por exemplo, as camadas podem incluir uma camada- base e uma ou mais camadas de intensificação ou cada camada pode corresponder a uma vista separada.
[157] No bloco 810, o codificador se associa a pelo menos uma mensagem SEI de ponto de recuperação a pelo menos uma imagem determinada. A associação da pelo menos uma mensagem SEI de ponto de recuperação à pelo menos uma imagem determinada pode ser realizada em resposta à determinação de associar a pelo menos uma mensagem SEI de ponto de recuperação a qualquer uma dentre uma pluralidade de imagens incluídas na unidade de acesso. No bloco 815, o codificador codifica as informações de vídeo com base, pelo menos em parte, na associação da pelo menos uma mensagem SEI de ponto de recuperação com a pelo menos uma imagem determinada. O método acaba em 820.
[158] No método 800, um ou mais dos blocos mostrados na Figura 8 podem ser removidos (por exemplo, não realizados) e/ou a ordem na qual o método é realizado pode ser trocada. Em algumas modalidades, os blocos adicionais podem ser adicionais ao método 800. As modalidades da presente revelação não se limitam ao exemplo ou pelo exemplo mostrado na Figura 8, e outras variações podem ser implantadas sem se afastar do espírito desta revelação.
IMPLANTAÇÃO(ÕES) EXEMPLIFICATIVA(S)
[159] Algumas modalidades da presente revelação são resumidas e descritas abaixo. Quando determinadas porções da especificação HEVC forem reproduzidas para ilustrar as adições e exclusões que podem ser incorporadas para implantar um ou mais dos métodos descritos no presente documento, tais modificações são mostradas em itálico e tachado, respectivamente.
MENSAGENS DE SEI DE PONTO DE RECUPERAÇÃO
[160] Em algumas implantações da presente revelação, as mensagens de SEI de ponto de recuperação são modificadas conforme descrito abaixo. TABELA 1 - MODIFICAÇÕES DE SEMÂNTICA DE MENSAGEM SEI DE PONTO DE RECUPERAÇÃO MENSAGENS DE SEI DE INFORMAÇÕES DE ATUALIZAÇÃO DE REGIÃO
[161] Em algumas implantações da presente revelação, as mensagens de SEI de informações de atualização de região são modificadas conforme descrito abaixo. TABELA 2 - MODIFICAÇÕES DE SEMÂNTICA DE MENSAGEM SEI DE INFORMAÇÕES DE ATUALIZAÇÃO DE REGIÃO
OUTRAS CONSIDERAÇÕES
[162] As informações e os sinais revelados no presente documento podem ser representados com o uso de qualquer uma dentre uma variedade de tecnologias e técnicas diferentes. Por exemplo, os dados, as instruções, os comandos, as informações, os sinais, os bits, os símbolos e os chips que podem ser referenciados ao longo da descrição acima podem ser representados por tensões, correntes, ondas eletromagnéticas, por campos magnéticos ou por partículas, campos ópticos ou partículas, ou qualquer combinação dos mesmos.
[163] Os vários blocos lógicos ilustrativos e etapas de algoritmo descritos em conjunto com as modalidades reveladas no presente documento podem ser implantados como hardware eletrônico, software de computador ou combinações de ambos. Para ilustrar claramente essa intercambialidade de hardware e software, vários componentes, blocos e etapas ilustrativos foram descritos acima em termos gerais de sua funcionalidade. Se tal funcionalidade for implantada como hardware ou software, depende das restrições de projeto e pedido particular impostas no sistema geral. Os versados na técnica podem implantar a funcionalidade descrita de vários modos para cada aplicação específica, mas tais decisões de implantação não devem ser interpretadas como ocasionando um afastamento do escopo da presente revelação.
[164] As técnicas descritas no presente documento podem ser implantadas em hardware, software, firmware ou em qualquer combinação dos mesmos. Tais técnicas podem ser implantadas em qualquer um dentre uma variedade de dispositivos como computadores para fins gerais, dispositivo de comunicação sem fio fones, ou dispositivos de circuito integrado que tem múltiplos usos incluindo a aplicação em fones de dispositivo de comunicação sem e outros dispositivos. Quaisquer recursos descritos como dispositivos ou componentes podem ser implantados em um dispositivo lógico integrado ou separadamente como dispositivos lógicos discretos, mas interoperáveis. Se implantadas em software, as técnicas podem ser realizadas, pelo menos em parte, por um meio de armazenamento de dados legível por computador que compreende código de programa que inclui instruções que, quando executadas, realiza um ou mais dos métodos descritos acima. O meio de armazenamento de dados legível por computador pode formar parte de um produto de programa de computador, que pode incluir materiais de embalagem. O meio legível por computador pode compreender memória ou mídia de armazenamento de dados, como memória de acesso aleatório (RAM) como memória de acesso aleatório dinâmica síncrona (SDRAM), memória apenas de leitura (ROM), memória de acesso aleatório não volátil (NVRAM), memória apenas de leitura eletricamente programável e apagável (EEPROM), memória FLASH, mídia de armazenamento de dados magnética ou óptica, e semelhantes. As técnicas podem, adicional ou alternativamente, ser realizadas, pelo menos em parte, por um meio de comunicação legível por computador que transporta ou comunica código de programa na forma de instruções ou estruturas de dados e que pode ser acessado, lido e/ou executado por um computador, como sinais ou ondas propagados.
[165] O código de programa pode ser executado por um processador, que pode incluir um ou mais processadores, como um ou mais processadores de sinal digital (DSPs), microprocessadores para fins gerais, circuitos integrados específicos de aplicação (ASICs), matrizes lógicas programáveis em campo (FPGAs) ou outro conjunto de circuitos lógicos discretos ou integrados equivalente. Tal processador pode ser configurado para realizar qualquer uma dentre as técnicas descritas nesta revelação. Um processador para fins gerais pode ser um microprocessador, mas alternativamente, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado convencional. Um processador também pode ser implantado como uma combinação de dispositivos de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em conjunto com um núcleo de DSP, ou qualquer outra tal configuração. Dessa maneira, o termo “processador”, conforme usado no presente documento pode se referir a qualquer uma dentre a estrutura anterior, qualquer combinação da estrutura anterior, ou qualquer outra estrutura ou aparelho adequado para a implantação das técnicas descritas no presente documento. Além disso, em alguns aspectos, a funcionalidade descrita no presente documento pode ser fornecida no software ou hardware dedicado configurado para codificar e decodificar, ou incorporado em um codificador-decodificador de vídeo combinado (CODEC). Também, as técnicas poderiam ser totalmente implantadas em um ou mais circuitos ou elementos lógicos.
[166] As técnicas desta revelação podem ser implantadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um fone sem fio, um circuito integrado (IC) ou um conjunto de ICs (por exemplo, um chipset). Vários componentes ou unidades são descritos nesta revelação para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas reveladas, mas não exigem necessariamente a realização através de diferentes unidades de hardware. Em vez disso, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware de codec ou fornecidas por um conjunto de unidades de hardware interoperativas, que incluem um ou mais processadores conforme descrito acima, em conjunto com o software e/ou o firmware adequado.
[167] Embora o supracitado tenha sido descrito em conjunto com várias modalidades diferentes, os recursos ou elementos de uma modalidade podem ser combinados com outras modalidades sem se afastar dos ensinamentos desta revelação. Por exemplo, uma mensagem SEI de aninhamento escalonável de ponto de recuperação pode ser associada a uma pluralidade de imagens em uma unidade de acesso e uma única mensagem SEI de ponto de recuperação pode ser adicionalmente associada a uma das imagens da mesma unidade de acesso. A única mensagem SEI de ponto de recuperação pode ser associada a uma dentre as mesmas imagens que são associadas à mensagem SEI de aninhamento escalonável de ponto de recuperação ou uma imagem não associada diferente. As combinações de recursos semelhantes também são contempladas incluindo a adição de uma mensagem SEI de informações de atualização de região com uma imagem associada a uma mensagem SEI de ponto de recuperação; no entanto, as combinações de recursos entre as respectivas modalidades não são necessariamente limitadas a isso.
[168] Várias modalidades da revelação foram descritas. Essas e outras modalidades estão dentro do escopo das reivindicações a seguir.

Claims (13)

1. Método para codificar ou decodificar dados de vídeo de um fluxo de bits de multicamada, caracterizado pelo fato de que compreende: codificar pelo menos uma imagem dentre uma pluralidade de imagens incluídas em uma unidade de acesso com a qual se associa pelo menos uma mensagem de informações de intensificação suplementar de ponto de recuperação (SEI) de aninhamento escalonável, sendo que a unidade de acesso está incluída no fluxo de bits de multicamada; associar a pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável com a pelo menos uma imagem; e codificar os dados de vídeo com base, pelo menos em parte, na associação da pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável com a pelo menos uma imagem determinada; em que a associação da pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável com a pelo menos uma imagem determinada compreende associar a pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável a mais de uma imagem incluída na unidade de acesso, e em que as camadas às quais a pelo menos uma mensagem SEI de ponto de recuperação se aplica são especificadas pela mensagem SEI de aninhamento escalonável que contém a pelo menos uma mensagem SEI de ponto de recuperação, e o ponto de recuperação indicado pela pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável é o ponto no qual todas as imagens incluídas nas camadas associadas à pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável serão decodificáveis sem exigir que as imagens que são referenciadas pela decodificação do fluxo de bits após um acesso aleatório e/ou antes da imagem associada ao ponto de recuperação estejam disponíveis.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a associação da pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável com a pelo menos uma imagem determinada compreende: associar uma primeira mensagem SEI de ponto de recuperação a uma primeira imagem da unidade de acesso; e associar uma segunda mensagem SEI de ponto de recuperação a uma segunda imagem da unidade de acesso.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a unidade de acesso compreende uma primeira imagem em uma primeira camada e uma segunda imagem em uma segunda camada, sendo que a segunda camada é uma camada dependente da primeira camada, em que a associação compreende: determinar se a primeira imagem é conhecida por estar em uma faixa definida para corrigir a decodificação da primeira imagem; e associar a pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável à segunda imagem em resposta à determinação de que a primeira imagem é conhecida por estar na faixa definida.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: associar um subconjunto da pluralidade de imagens incluídas na unidade de acesso à pelo menos uma mensagem SEI de ponto de recuperação; e associar uma primeira mensagem SEI de atualização de região a pelo menos uma imagem do subconjunto da pluralidade de imagens associada à pelo menos uma mensagem SEI de ponto de recuperação.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que compreende adicionalmente associar uma segunda mensagem SEI de atualização de região a uma outra imagem do subconjunto da pluralidade de imagens associada à pelo menos uma mensagem SEI de ponto de recuperação.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável compreende uma indicação de uma imagem de ponto de recuperação e um marcador de compatibilidade exata, o método compreendendo adicionalmente: determinar se a decodificação das informações de vídeo que começa na unidade de acesso resultaria na mesma imagem de ponto de recuperação que a decodificação das informações de vídeo que começa em uma imagem de ponto de acesso intra-aleatório (IRAP); e definir o marcador de compatibilidade exata para indicar que a decodificação das informações de vídeo resultaria na mesma imagem de ponto de recuperação em resposta à determinação de que a decodificação das informações de vídeo resultaria na mesma imagem de ponto de recuperação.
7. Aparelho para codificar ou decodificar dados de vídeo, caracterizado pelo fato de que compreende: meios para codificar pelo menos uma imagem dentre uma pluralidade de imagens incluídas em uma unidade de acesso com a qual se associa pelo menos uma mensagem de informações de intensificação suplementar de ponto de recuperação (SEI) de aninhamento escalonável, a unidade de acesso estando incluída em um fluxo de bits de multicamada; meios para associar a pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável com a pelo menos uma imagem; e meios para codificar ou decodificar os dados de vídeo com base, pelo menos em parte, na associação da pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável com a pelo menos uma imagem determinada, em que a associação da pelo menos uma mensagem SEI de ponto de recuperação de aninhaento escalonável com a pelo menos uma imagem determinada compreende associar a pelo menos uma mensagem SEI de ponto de recuperação a mais de uma imagem incluída na unidade de acesso, e em que as camadas às quais a pelo menos uma mensagem SEI de ponto de recuperação se aplica são especificadas pela mensagem SEI de aninhamento escalonável que contém a pelo menos uma mensagem SEI de ponto de recuperação, e o ponto de recuperação indicado pela pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável é o ponto no qual todas as imagens incluídas nas camadas associadas à pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável serão decodificáveis sem exigir que as imagens que são referenciadas pela decodificação do fluxo de bits de multicamada após um acesso aleatório e/ou antes da imagem associada ao ponto de recuperação estejam disponíveis.
8. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que os meios para associar compreendem: meios para associar uma primeira mensagem SEI de ponto de recuperação a uma primeira imagem da unidade de acesso; e meios para associar uma segunda mensagem SEI de ponto de recuperação a uma segunda imagem da unidade de acesso.
9. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que a unidade de acesso compreende uma primeira imagem em uma primeira camada e uma segunda imagem em uma segunda camada, a segunda camada sendo uma camada dependente da primeira camada, em que os meios para associar compreendem: meios para determinar se a primeira imagem é conhecida por estar em uma faixa definida para corrigir a decodificação da primeira imagem; e meios para associar a pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável à segunda imagem em resposta à determinação de que a primeira imagem é conhecida por estar na faixa definida.
10. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que compreende adicionalmente: meios para associar um subconjunto da pluralidade de imagens incluídas na unidade de acesso à pelo menos uma mensagem SEI de ponto de recuperação; e meios para associar uma primeira mensagem SEI de atualização de região a pelo menos uma imagem do subconjunto da pluralidade de imagens associada à pelo menos uma mensagem SEI de ponto de recuperação.
11. Aparelho, de acordo com a reivindicação 10, caracterizado pelo fato de que compreende adicionalmente meios para associar uma segunda mensagem SEI de atualização de região a uma outra imagem do subconjunto da pluralidade de imagens associada a pelo menos uma mensagem SEI de ponto de recuperação.
12. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que a pelo menos uma mensagem SEI de ponto de recuperação de aninhamento escalonável compreende uma indicação de uma imagem de ponto de recuperação e um marcador de compatibilidade exata, o dispositivo compreendendo adicionalmente: meios para determinar se a decodificação das informações de vídeo que começa na unidade de acesso resultaria na mesma imagem de ponto de recuperação que a decodificação das informações de vídeo que começa em uma imagem de ponto de acesso intra-aleatório (IRAP); e meios para definir o marcador de compatibilidade exata para indicar que a decodificação das informações de vídeo resultaria na mesma imagem de ponto de recuperação em resposta à determinação de que a decodificação das informações de vídeo resultaria na mesma imagem de ponto de recuperação.
13. Memória legível por computador, caracterizada pelo fato de que contem gravado na mesma o método conforme definido em qualquer uma das reivindicações 1 a 6.
BR112016015568-8A 2014-01-03 2014-12-30 Método e aparelho para codificar ou decodificar dados de vídeo e memória legível por computador BR112016015568B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461923601P 2014-01-03 2014-01-03
US61/923,601 2014-01-03
US14/584,993 2014-12-29
US14/584,993 US10560710B2 (en) 2014-01-03 2014-12-29 Method for coding recovery point supplemental enhancement information (SEI) messages and region refresh information SEI messages in multi-layer coding
PCT/US2014/072715 WO2015103240A1 (en) 2014-01-03 2014-12-30 Method for coding recovery point supplemental enhancement information (sei) messages and region refresh information sei messages in multi-layer coding

Publications (2)

Publication Number Publication Date
BR112016015568A2 BR112016015568A2 (pt) 2017-08-08
BR112016015568B1 true BR112016015568B1 (pt) 2023-08-01

Family

ID=

Similar Documents

Publication Publication Date Title
ES2879635T3 (es) Vaciado de imágenes e inferencia de parámetros de búfer de imágenes decodificadas para flujos de bits multicapa
ES2854274T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
ES2744201T3 (es) Dispositivo y procedimiento para la codificación escalable de información de vídeo
ES2778463T3 (es) Inferencia mejorada de indicador de no emisión de imagen previa en codificación de video
BR112016024233B1 (pt) Método e aparelho para codificar uma imagem de camada de aperfeiçoamento em um fluxo de bits de múltiplas camadas
ES2874848T3 (es) Restricción de unidades de predicción en segmentos b a interpredicción unidireccional
BR112016029751B1 (pt) Método e dispositivo para codificar um fluxo de bits de acordo com hevc escalonável, uma extensão 3d de hevc ou uma extensão de múltiplas vistas de hevc, e método e dispositivo para decodificar dados de vídeo de acordo com hevc escalonável, uma extensão 3d de hevc ou uma extensão de múltiplas vistas de hevc
BR112016030377B1 (pt) Método e aparelho para converter informações de vídeo em código em um fluxo de bits, assim como memória legível por computador
JP6513684B2 (ja) マルチレイヤビデオコーディングにおける異なるコーデックのベースレイヤのサポート
BR112016001223B1 (pt) Aparelho e método para codificar ou decodificar informações de vídeo e memória legível por computador
BR112016008337B1 (pt) Aparelho configurado para codificar informações de vídeo, método para codificar informações de vídeo e memória legível por computador
BR112016021473B1 (pt) Método e aparelho para codificar informação de vídeo usando extensão escalável para codificação de vídeo de alta eficiência, shvc, ou codificação de vídeo de alta eficiência de múltiplas vistas, mv-hevc, assim como memória legível por computador
BR112016015893B1 (pt) Método de decodificação de informações de vídeo, aparelho configurado para decodificar informações de vídeo e memória legível por computador
ES2877048T3 (es) Diseño de valor de Poc para codificación de vídeo multicapa
BR112016029611B1 (pt) Aparelho e método para codificar informações de vídeo em codificação de vídeo de alta eficiência, e, memória legível por computador
BR112014010360B1 (pt) Método e dispositivo para codificar dados de vídeo, método e dispositivo para decodificar dados de vídeo e memória legível por computador
BR112015007763B1 (pt) Método de decodificação e codificação de dados de vídeo, dispositivo de decodificação e codificação de vídeo e memória legível por computador
JP2017507539A (ja) マルチレイヤコーディングにおいて回復点補足エンハンスメント情報(sei)メッセージと領域リフレッシュ情報seiメッセージとをコーディングするための方法
BR112016030530B1 (pt) Método e aparelho para decodificação de dados de vídeo e método e aparelho para codificação de dados de vídeo em um fluxo de bits
BR112015023800B1 (pt) Dispositivo e método para codificação escalonável de informações de vídeo
BR112021012632A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes
BR112016015552B1 (pt) Métodos para codificação de um conjunto de imagens de referência (rps) entre camadas e codificação de unidades da camada de acesso à rede (nal) do fim do fluxo de bits
BR112016021475B1 (pt) Dispositivo e método para codificação escalável de informação de vídeo
BR112016000865B1 (pt) Aparelho e método para codificar informações de vídeo multicamadas, aparelho e método para decodificar informações de vídeo multicamadas, e memória legível por computador
BR112016030436B1 (pt) Mensagem de sei de ponto de recuperação em codecs de vídeo de múltiplas camadas